{"version":3,"file":"application.js","mappings":"mFAEA,sBAA6B,KAC3BA,UACEC,KAAKC,MAAQC,SAASC,iBAAiB,kBACzC,CAEAC,OAAOC,GACL,MAAMC,EAAiBD,EAAME,cAAcC,QAAQ,mBAC7CC,EAAoBH,EAAeI,cAAc,sBACjDC,EAAwBL,EAAeI,cAAc,oBAE1DD,EAAkBG,MAAMC,YAAYJ,EAAkBG,MAAMC,UAAY,OAChC,OAArCJ,EAAkBG,MAAMC,UAC1BJ,EAAkBG,MAAMC,UAAY,MAEpCJ,EAAkBG,MAAMC,UAAY,QAEtCF,EAAsBG,UAAUV,OAAO,SACzC,E,8DCjBF,MAAMW,E,OAAc,WAGpBA,EAAYC,OAAQ,EACpBC,OAAOC,SAAaH,C,iFCHpB,sBAA6B,KAC3BI,eAAiB,CACf,eACA,cACA,iBACA,aACA,QACA,yBACA,mBACA,yBACA,6BACA,wBACA,yBACA,wBAGFpB,UACEC,KAAKoB,KAAO,EACZpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKuB,WAAa,CAChBC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAEtX,CAEAC,IAAIC,GACFA,EAAEC,iBACF3D,SAAS4D,KAAKhD,UAAUiD,IAAI,mBAC5B/D,KAAKgE,mBAAmBlD,UAAUmD,OAAO,SAC3C,CAEAC,mBAAmBN,GACjBA,EAAEC,iBACF3D,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAKgE,mBAAmBlD,UAAUiD,IAAI,SACxC,CAEAI,UAAUP,GACRA,EAAEC,iBACqC,MAApC7D,KAAKuB,WAAW,IAAIvB,KAAKoB,SAI5BpB,KAAKoE,YAAYtD,UAAUiD,IAAI,UAC/B/D,KAAKoB,MAAQ,EACbpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,KAXA/D,KAAKoE,YAAYtD,UAAUmD,OAAO,SAatC,CAEAQ,cAAcb,GACZA,EAAEC,iBACF7D,KAAKoB,MAAQ,EACbpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAW,cAAcrE,GACZ,MAAMsE,EAAQC,SAASvE,EAAMwE,OAAOF,OACpC3E,KAAKuB,WAAWlB,EAAMwE,OAAOC,MAAQH,EACrC3E,KAAKoE,YAAYtD,UAAUiD,IAAI,SACjC,CAEAgB,OAAOnB,GACLA,EAAEC,iBACFmB,QAAQC,IAAIjF,KAAKuB,YACjB,SAAW,eAAgB,CACzBA,WAAYvB,KAAKuB,aAChB2D,MAAKC,IACHA,EAASC,KAAKC,SACfpE,OAAOqE,SAASC,QAClB,GAEJ,CAEAC,gBAAgB5B,GACdA,EAAEC,iBACF3D,SAAS4D,KAAKhD,UAAUiD,IAAI,mBAC5BiB,QAAQC,IAAIrB,EAAEiB,OAAOL,QAAQiB,MACD,eAAzB7B,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK0F,6BAA6B5E,UAAUmD,OAAO,UAEzB,SAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK2F,uBAAuB7E,UAAUmD,OAAO,UAEnB,gBAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK4F,6BAA6B9E,UAAUmD,OAAO,UAEzB,mBAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK6F,iCAAiC/E,UAAUmD,OAAO,UAE7B,cAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK8F,4BAA4BhF,UAAUmD,OAAO,UAExB,eAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAK+F,6BAA6BjF,UAAUmD,OAAO,UAEzB,aAAzBL,EAAEiB,OAAOL,QAAQiB,MAClBzF,KAAKgG,2BAA2BlF,UAAUmD,OAAO,SACrD,CAEAgC,iBAAiBrC,GACfA,EAAEC,iBACF3D,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAKkG,iBAAiBpF,UAAUiD,IAAI,SACtC,CAEAoC,+BACEjG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK0F,6BAA6B5E,UAAUiD,IAAI,SAClD,CACAqC,yBACElG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK2F,uBAAuB7E,UAAUiD,IAAI,SAC5C,CAEAsC,+BACEnG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK4F,6BAA6B9E,UAAUiD,IAAI,SAClD,CAEAuC,mCACEpG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK6F,iCAAiC/E,UAAUiD,IAAI,SACtD,CAEAwC,8BACErG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK8F,4BAA4BhF,UAAUiD,IAAI,SACjD,CAEAyC,+BACEtG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAK+F,6BAA6BjF,UAAUiD,IAAI,SAClD,CAEA0C,6BACEvG,SAAS4D,KAAKhD,UAAUmD,OAAO,mBAC/BjE,KAAKgG,2BAA2BlF,UAAUiD,IAAI,SAChD,E,wECtJF,sBAA6B,KAC3BhE,UACEC,KAAK0G,QAAQC,YAAc,cAC7B,E,yDCEF,EAAA5F,YAAA,SAAqB,QAAS,U,iFCJ9B,sBAA6B,KAC3BI,eAAiB,CACf,eACA,cACA,iBACA,cACA,oBACA,yBACA,cACA,WACA,cACA,aACA,uBACA,cACA,gBACA,wBAGFpB,UACA,CAEA6G,aACE5G,KAAK6G,kBAAkB/F,UAAUmD,OAAO,SAC1C,CAEA6C,cACE9G,KAAK6G,kBAAkB/F,UAAUiD,IAAI,UACrC/D,KAAK+G,iBAAiBjG,UAAUmD,OAAO,UACvCjE,KAAKgH,2BAA2BlG,UAAUiD,IAAI,UAC9C/D,KAAKiH,kBAAkB3F,UAAY,YACnCtB,KAAKkH,2BAA2BpG,UAAUmD,OAAO,SACnD,CAEAkD,yBACEnH,KAAKoH,wBAAwBtG,UAAUmD,OAAO,SAChD,CAEAoD,0BACErH,KAAKoH,wBAAwBtG,UAAUiD,IAAI,SAC7C,CAEAuD,MAAM1D,GACJA,EAAEC,iBACF7D,KAAKuH,kBAAkBzG,UAAUiD,IAAI,UACrC,SAAW,eAAgB,CACzByD,KAAM,CACJC,MAAOzH,KAAK0H,kBAAkB/C,MAC9BgD,SAAU3H,KAAK4H,qBAAqBjD,SAErCO,MAAKC,IACHA,EAASC,KAAKC,QACfpE,OAAOqE,SAASuC,QAAQ1C,EAASC,KAAK0C,cAEtC9H,KAAKuH,kBAAkBzG,UAAUmD,OAAO,SAC1C,GAEJ,CAEA8D,YAAYnE,GACVA,EAAEC,iBAEF,SAAW,aAAc,CACvB2D,KAAM,CACJC,MAAOzH,KAAKgI,6BAA6BrD,SAE1CO,MAAKC,IACNH,QAAQC,IAAIE,EAASC,MAClBD,EAASC,KAAKC,QACfrF,KAAKiI,wBAELjI,KAAKkI,qBACP,GAEJ,CAEAA,sBACElI,KAAKmI,eAAerH,UAAUiD,IAAI,UAClC/D,KAAKoI,kBAAkBtH,UAAUmD,OAAO,SAC1C,CAEAgE,wBACEjI,KAAKmI,eAAerH,UAAUmD,OAAO,UACrCjE,KAAKoI,kBAAkBtH,UAAUiD,IAAI,SACvC,CAEAsE,gBAAgBzE,GACd5D,KAAK+G,iBAAiBjG,UAAUiD,IAAI,UACpC/D,KAAKgH,2BAA2BlG,UAAUmD,OAAO,UACjDjE,KAAKiH,kBAAkB3F,UAAY,sBACnCsC,EAAEiB,OAAO/D,UAAUiD,IAAI,SACzB,CAEAuE,iCAAiC1E,GAC/BA,EAAEC,iBACF7D,KAAKuI,oBAAoBzH,UAAUmD,OAAO,SAC5C,E,wEChGF,sBAA6B,KAC3B9C,eAAiB,CACf,cACA,eACA,QAGFpB,UACA,CAEAyI,aAAanI,GACXL,KAAKyI,kBAAkB3H,UAAUV,OAAO,UACxCJ,KAAK0I,mBAAmB5H,UAAUV,OAAO,UACzCJ,KAAK2I,WAAW7H,UAAUV,OAAO,SACnC,E,iFCZF,sBAA6B,KAC3Be,eAAiB,CACf,YACA,mBACA,kBACA,cACA,kBACA,kBACA,sBACA,UACA,OACA,QAGFpB,UAEEC,KAAK4I,OAASC,OAAO7I,KAAK8I,sBAAsBnE,OAChDK,QAAQC,IAAIjF,KAAK8I,sBAAsBnE,OACvC,MAAMoE,EAAW/I,KAAK4I,OAAOG,SAAS,CACpCC,MAAO,CAAC,CACNC,OAAQ,6EAINC,EAAiB,CACrBC,KAAM,CACJC,SAAU,OACVC,WAAY,MACZC,cAAe,cACfC,MAAO,UACP,gBAAiB,CACfA,MAAO,YAGXC,QAAS,CACPD,MAAO,UACPE,UAAW,YAKfzJ,KAAK0J,WAAaX,EAASY,OAAO,aAAc,CAC9C/I,MAAOsI,IAETlJ,KAAK0J,WAAWE,MAAM,gBAEtB5J,KAAK6J,WAAad,EAASY,OAAO,aAAc,CAC9C/I,MAAOsI,IAETlJ,KAAK6J,WAAWD,MAAM,gBAEtB5J,KAAK8J,UAAYf,EAASY,OAAO,UAAW,CAC1C/I,MAAOsI,IAETlJ,KAAK8J,UAAUF,MAAM,aAGrB5J,KAAK0J,WAAWK,iBAAiB,UAAU,EACzCC,YAEGA,GAASA,EAAMC,QAChBjK,KAAKkK,aAAaF,EAAMC,SAI1BjK,KAAKkK,cAAa,IAEpBlK,KAAK6J,WAAWE,iBAAiB,UAAU,EACzCC,YAEGA,GAASA,EAAMC,QAChBjK,KAAKkK,aAAaF,EAAMC,SAI1BjK,KAAKkK,cAAa,IAEpBlK,KAAK8J,UAAUC,iBAAiB,UAAU,EACxCC,YAEGA,GAASA,EAAMC,QAChBjK,KAAKkK,aAAaF,EAAMC,SAI1BjK,KAAKkK,cAAa,GAEtB,CAEAA,aAAaF,GACX,MAAMG,EAAiBjK,SAASkK,eAAe,SAC3CJ,GACFG,EAAerJ,UAAUmD,OAAO,UAChCkG,EAAe7I,UAAY0I,IAE3BG,EAAerJ,UAAUiD,IAAI,UAC7BoG,EAAe7I,UAAY,GAE/B,CAEA+I,WAAWhK,GACTA,EAAMwD,iBACN7D,KAAKsK,uBAAuBxJ,UAAUmD,OAAO,UAC7C/D,SAAS4D,KAAKhD,UAAUiD,IAAI,mBAC5B/D,KAAKyH,MAAQzH,KAAK0H,kBAAkB/C,MACnB,IAAd3E,KAAKyH,QACNzH,KAAKyH,MAAQzH,KAAKuK,mBAAmB,GAAG5F,OAE1C3E,KAAK0H,kBAAkB/C,MAAQ,GAC/BK,QAAQC,IAAIjF,KAAKyH,OACjBzH,KAAKwK,sBAAsBC,UAAYzK,KAAKyH,MAC5CzH,KAAK0K,0BAA0B/F,MAAQ3E,KAAKyH,KAC9C,CAEAX,cACE9B,QAAQC,IAAI,eACZjF,KAAKsK,uBAAuBxJ,UAAUiD,IAAI,UAC1C7D,SAAS4D,KAAKhD,UAAUmD,OAAO,kBACjC,CACA0G,gBACE3K,KAAK4K,WAAW9J,UAAUiD,IAAI,UAC9B/D,KAAK6K,cAAc/J,UAAUmD,OAAO,SACtC,CAEA6G,mBACE9K,KAAK4K,WAAW9J,UAAUmD,OAAO,UACjCjE,KAAK6K,cAAc/J,UAAUiD,IAAI,SACnC,CAEAgH,IAAI1K,GACFL,KAAK2K,gBAGL,MAAMK,EAAY9K,SAASQ,cAAc,yBAAyBuK,QAIlE,OAHA,4CAAgDD,EAChD3K,EAAMwD,iBAEF7D,KAAKkL,WAAWvG,MAKhB3E,KAAK0K,0BAA0B/F,WAQnC3E,KAAK4I,OAAOuC,oBAAoB,CAC9B1F,KAAM,OACN2F,KAAMpL,KAAK0J,WAEX2B,gBAAiB,CACfvG,KAAM9E,KAAKkL,WAAWvG,MACtB8C,MAAOzH,KAAK0K,0BAA0B/F,SAEvCO,MAAMoG,IAEHA,EAAOtB,OACThK,KAAKkK,aAAaoB,EAAOtB,OACzBhK,KAAK8K,mBACL9F,QAAQgF,MAAM,yCAA0CsB,EAAOtB,QAQ/DhK,KAAKuL,2BAA2BD,EAAOE,cACzC,KA7BAxL,KAAKkK,aAAa,gCAClBlK,KAAK8K,qBANL9K,KAAKkK,aAAa,oCAClBlK,KAAK8K,mBAmCT,CAEAS,2BAA2BC,GACzB,SAAW,OAAQ,CACjBhE,KAAM,CACJC,MAAOzH,KAAK0K,0BAA0B/F,MACtCG,KAAM9E,KAAKkL,WAAWvG,OAExB8G,YAAa,CACXC,kBAAmBF,EAAcG,MAElCzG,MAAKC,IACFA,EAASC,KAAK4E,OAChBhK,KAAKkK,aAAa/E,EAASC,KAAK4E,OAChChK,KAAK8K,mBACL,SAAW,0BAA2B,CACpCtD,KAAM,CACJC,MAAOzH,KAAKyH,WAIhBzH,KAAK4L,WAAazG,EAASC,KAAKyG,YAChC7L,KAAK4I,OAAOkD,mBAAmB3G,EAASC,KAAK2G,OAAOC,cAAe,CACjEC,eAAgB,CACdb,KAAMpL,KAAK0J,WACX2B,gBAAiB,CACfvG,KAAM9E,KAAKkL,WAAWvG,MACtB8C,MAAOzH,KAAK0K,0BAA0B/F,UAGzCO,MAAMoG,IACHA,EAAOtB,OACThK,KAAKkK,aAAaoB,EAAOtB,MAAMC,SAC/BjF,QAAQkH,KAAKZ,EAAOtB,OACpBhK,KAAK8K,mBACL,SAAW,0BAA2B,CACpCtD,KAAM,CACJC,MAAOzH,KAAK0K,0BAA0B/F,UAI1C,SAAW,6BAA6B3E,KAAK4L,aAAc,CACzDO,MAAO,CACLC,QAASpM,KAAKoM,WAEflH,MAAKC,IACNlE,OAAOqE,SAASuC,QAAQ1C,EAASC,KAAK0C,aAAY,GAEtD,IAEJ,GAEJ,E,iFCnOF,sBAA6B,KAC3B3G,eAAiB,CACf,iBACA,eACA,QACA,oBACA,UACA,gBACA,YACA,aACA,QAGFpB,UACEC,KAAKoB,KAAO,CACd,CAEAuC,MACEzD,SAAS4D,KAAKhD,UAAUiD,IAAI,qBAC5B/D,KAAKqM,wBAAwBvL,UAAUmD,OAAO,SAChD,CAEAE,UAAUP,GACRoB,QAAQC,IAAI,aACZrB,EAAEC,iBACF7D,KAAKoE,YAAYtD,UAAUiD,IAAI,UAC/B/D,KAAKoB,MAAQ,EACbpB,KAAKsM,mBAAmBhL,UAAYtB,KAAKoB,KACzCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAU,cAAcb,GACZA,EAAEC,iBACF7D,KAAKoB,MAAQ,EACbpB,KAAKsM,mBAAmBhL,UAAYtB,KAAKoB,KACzCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAgB,OAAOnB,GACLA,EAAEC,iBACF,SAAW,YAAa,CACtB0I,QAAS,CACPC,QAASxM,KAAKyM,cAAc9H,MAC5B+H,cAAe1M,KAAK2M,oBAAoBhI,MACxCiI,UAAW5M,KAAK6M,gBAAgBlI,MAChCmI,WAAY9M,KAAK+M,iBAAiBpI,MAClCqI,KAAMhN,KAAKiN,WAAWtI,SAEvBO,MAAKC,IACHA,EAASC,KAAKC,SACfpE,OAAOqE,SAASC,QAClB,GAEJ,CAEAuB,cACE5G,SAAS4D,KAAKhD,UAAUmD,OAAO,qBAC/BjE,KAAKqM,wBAAwBvL,UAAUiD,IAAI,SAC7C,E,iFCtEF,sBAA6B,KAC3B5C,eAAiB,CACf,iBACA,eACA,QACA,oBACA,aACA,SACA,cAGFpB,UACEC,KAAKoB,KAAO,CACd,CAEAuC,MACEzD,SAAS4D,KAAKhD,UAAUiD,IAAI,qBAC5B/D,KAAKqM,wBAAwBvL,UAAUmD,OAAO,SAChD,CAEAE,UAAUP,GACRoB,QAAQC,IAAI,aACZrB,EAAEC,iBACF7D,KAAKoE,YAAYtD,UAAUiD,IAAI,UAC/B/D,KAAKoB,MAAQ,EACbpB,KAAKsM,mBAAmBhL,UAAYtB,KAAKoB,KACzCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAU,cAAcb,GACZA,EAAEC,iBACF7D,KAAKoB,MAAQ,EACbpB,KAAKsM,mBAAmBhL,UAAYtB,KAAKoB,KACzCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAgB,OAAOnB,GACLA,EAAEC,iBACF,SAAW,aAAa7D,KAAKqM,wBAAwB7H,QAAQ0I,6BAA8B,CACzFC,gBAAiB,CACfL,WAAY9M,KAAK+M,iBAAiBpI,MAClC2G,OAAQtL,KAAKoN,aAAazI,SAE3BO,MAAKC,IACHA,EAASC,KAAKC,SACfpE,OAAOqE,SAASC,QAClB,GAEJ,CAEAuB,cACE5G,SAAS4D,KAAKhD,UAAUmD,OAAO,qBAC/BjE,KAAKqM,wBAAwBvL,UAAUiD,IAAI,SAC7C,E,iFCjEF,sBAA6B,KAC3B5C,eAAiB,CACf,eACA,cACA,QACA,kBAGFpB,UACEiF,QAAQC,IAAI,aACZjF,KAAKoB,KAAO,EACZpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKqN,aAAe,CAClB7L,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAEzH,CAEAgC,UAAUP,GACRA,EAAEC,iBACuC,MAAtC7D,KAAKqN,aAAa,IAAIrN,KAAKoB,SAI9BpB,KAAKoE,YAAYtD,UAAUiD,IAAI,UAC/B/D,KAAKoB,MAAQ,EACbpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,KAXA/D,KAAKoE,YAAYtD,UAAUmD,OAAO,SAatC,CAEAQ,cAAcb,GACZA,EAAEC,iBACF7D,KAAKoB,MAAQ,EACbpB,KAAKqB,kBAAkBC,UAAYtB,KAAKoB,KACxCpB,KAAKqE,sBAAsBC,SAASC,IAC/BA,EAAeC,QAAQpD,MAAQpB,KAAKoB,KACrCmD,EAAezD,UAAUmD,OAAO,UAEhCM,EAAezD,UAAUiD,IAAI,SAC/B,GAEJ,CAEAgB,OAAOnB,GACLoB,QAAQC,IAAIjF,KAAKqN,cACjBzJ,EAAEC,iBACF,SAAW,iBAAkB,CAC3BwJ,aAAcrN,KAAKqN,eAClBnI,MAAKC,IACHA,EAASC,KAAKC,SACfpE,OAAOqE,SAASC,QAClB,GAEJ,CAEAb,cAAcrE,GACZ,MAAMsE,EAAQC,SAASvE,EAAMwE,OAAOF,OACpC3E,KAAKqN,aAAahN,EAAMwE,OAAOC,MAAQH,EACvC3E,KAAKoE,YAAYtD,UAAUiD,IAAI,SACjC,CAEA6C,aACE5G,KAAKgE,mBAAmBlD,UAAUmD,OAAO,SAC3C,CAEA6C,cACE9G,KAAKgE,mBAAmBlD,UAAUiD,IAAI,SACxC,E,gBC3EF,IAAIuJ,EAAM,CACT,4BAA6B,IAC7B,mBAAoB,GACpB,sBAAuB,IACvB,wBAAyB,IACzB,aAAc,IACd,wBAAyB,IACzB,yBAA0B,IAC1B,0BAA2B,IAC3B,0BAA2B,IAC3B,iCAAkC,IAClC,wBAAyB,KAI1B,SAASC,EAAeC,GACvB,IAAI7B,EAAK8B,EAAsBD,GAC/B,OAAOE,EAAoB/B,EAC5B,CACA,SAAS8B,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEL,EAAKE,GAAM,CACpC,IAAI5J,EAAI,IAAIgK,MAAM,uBAAyBJ,EAAM,KAEjD,MADA5J,EAAEiK,KAAO,mBACHjK,CACP,CACA,OAAO0J,EAAIE,EACZ,CACAD,EAAeO,KAAO,WACrB,OAAOC,OAAOD,KAAKR,EACpB,EACAC,EAAeS,QAAUP,EACzBQ,EAAOC,QAAUX,EACjBA,EAAe5B,GAAK,G,wDC5BpB,MAAMwC,EACFC,YAAYC,EAAaC,EAAWC,GAChCvO,KAAKqO,YAAcA,EACnBrO,KAAKsO,UAAYA,EACjBtO,KAAKuO,aAAeA,EACpBvO,KAAKwO,kBAAoB,IAAIC,GACjC,CACA1O,UACIC,KAAKqO,YAAYtE,iBAAiB/J,KAAKsO,UAAWtO,KAAMA,KAAKuO,aACjE,CACAG,aACI1O,KAAKqO,YAAYM,oBAAoB3O,KAAKsO,UAAWtO,KAAMA,KAAKuO,aACpE,CACAK,iBAAiBC,GACb7O,KAAKwO,kBAAkBzK,IAAI8K,EAC/B,CACAC,oBAAoBD,GAChB7O,KAAKwO,kBAAkBO,OAAOF,EAClC,CACAG,YAAY3O,GACR,MAAM4O,EAoBd,SAAqB5O,GACjB,GAAI,gCAAiCA,EACjC,OAAOA,EAEN,CACD,MAAM,yBAAE6O,GAA6B7O,EACrC,OAAO0N,OAAOoB,OAAO9O,EAAO,CACxB+O,6BAA6B,EAC7BF,2BACIlP,KAAKoP,6BAA8B,EACnCF,EAAyBG,KAAKrP,KAClC,GAER,CACJ,CAlC8BsP,CAAYjP,GAClC,IAAK,MAAMwO,KAAW7O,KAAKuP,SAAU,CACjC,GAAIN,EAAcG,4BACd,MAGAP,EAAQG,YAAYC,EAE5B,CACJ,CACAO,cACI,OAAOxP,KAAKwO,kBAAkBiB,KAAO,CACzC,CACIF,eACA,OAAOG,MAAMC,KAAK3P,KAAKwO,mBAAmBoB,MAAK,CAACC,EAAMC,KAClD,MAAMC,EAAYF,EAAKG,MAAOC,EAAaH,EAAME,MACjD,OAAOD,EAAYE,GAAc,EAAIF,EAAYE,EAAa,EAAI,CAAC,GAE3E,EAkBJ,MAAMC,EACF9B,YAAYrN,GACRf,KAAKe,YAAcA,EACnBf,KAAKmQ,kBAAoB,IAAIC,IAC7BpQ,KAAKqQ,SAAU,CACnB,CACAC,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACfrQ,KAAKuQ,eAAejM,SAASkM,GAAkBA,EAAczQ,YAErE,CACA0Q,OACQzQ,KAAKqQ,UACLrQ,KAAKqQ,SAAU,EACfrQ,KAAKuQ,eAAejM,SAASkM,GAAkBA,EAAc9B,eAErE,CACI6B,qBACA,OAAOb,MAAMC,KAAK3P,KAAKmQ,kBAAkBO,UAAUC,QAAO,CAACC,EAAWtD,IAAQsD,EAAUC,OAAOnB,MAAMC,KAAKrC,EAAIoD,YAAY,GAC9H,CACA9B,iBAAiBC,GACb7O,KAAK8Q,6BAA6BjC,GAASD,iBAAiBC,EAChE,CACAC,oBAAoBD,EAASkC,GAAsB,GAC/C/Q,KAAK8Q,6BAA6BjC,GAASC,oBAAoBD,GAC3DkC,GACA/Q,KAAKgR,8BAA8BnC,EAC3C,CACAoC,YAAYjH,EAAOC,EAASiH,EAAS,CAAC,GAClClR,KAAKe,YAAYkQ,YAAYjH,EAAO,SAASC,IAAWiH,EAC5D,CACAF,8BAA8BnC,GAC1B,MAAM2B,EAAgBxQ,KAAK8Q,6BAA6BjC,GACnD2B,EAAchB,gBACfgB,EAAc9B,aACd1O,KAAKmR,6BAA6BtC,GAE1C,CACAsC,6BAA6BtC,GACzB,MAAM,YAAER,EAAW,UAAEC,EAAS,aAAEC,GAAiBM,EAC3CuC,EAAmBpR,KAAKqR,oCAAoChD,GAC5DiD,EAAWtR,KAAKsR,SAAShD,EAAWC,GAC1C6C,EAAiBrC,OAAOuC,GACK,GAAzBF,EAAiB3B,MACjBzP,KAAKmQ,kBAAkBpB,OAAOV,EACtC,CACAyC,6BAA6BjC,GACzB,MAAM,YAAER,EAAW,UAAEC,EAAS,aAAEC,GAAiBM,EACjD,OAAO7O,KAAKuR,mBAAmBlD,EAAaC,EAAWC,EAC3D,CACAgD,mBAAmBlD,EAAaC,EAAWC,GACvC,MAAM6C,EAAmBpR,KAAKqR,oCAAoChD,GAC5DiD,EAAWtR,KAAKsR,SAAShD,EAAWC,GAC1C,IAAIiC,EAAgBY,EAAiBI,IAAIF,GAKzC,OAJKd,IACDA,EAAgBxQ,KAAKyR,oBAAoBpD,EAAaC,EAAWC,GACjE6C,EAAiBM,IAAIJ,EAAUd,IAE5BA,CACX,CACAiB,oBAAoBpD,EAAaC,EAAWC,GACxC,MAAMiC,EAAgB,IAAIrC,EAAcE,EAAaC,EAAWC,GAIhE,OAHIvO,KAAKqQ,SACLG,EAAczQ,UAEXyQ,CACX,CACAa,oCAAoChD,GAChC,IAAI+C,EAAmBpR,KAAKmQ,kBAAkBqB,IAAInD,GAKlD,OAJK+C,IACDA,EAAmB,IAAIhB,IACvBpQ,KAAKmQ,kBAAkBuB,IAAIrD,EAAa+C,IAErCA,CACX,CACAE,SAAShD,EAAWC,GAChB,MAAMoD,EAAQ,CAACrD,GAMf,OALAP,OAAOD,KAAKS,GACPqB,OACAtL,SAASsN,IACVD,EAAME,KAAK,GAAGtD,EAAaqD,GAAO,GAAK,MAAMA,IAAM,IAEhDD,EAAMG,KAAK,IACtB,EAGJ,MAAMC,EAAiC,CACnCtB,KAAI,EAAC,MAAEpQ,EAAK,MAAEsE,MACNA,GACAtE,EAAM2R,mBACH,GAEXC,QAAO,EAAC,MAAE5R,EAAK,MAAEsE,MACTA,GACAtE,EAAMwD,kBACH,GAEXqO,KAAI,EAAC,MAAE7R,EAAK,MAAEsE,EAAK,QAAE+B,MACb/B,GACO+B,IAAYrG,EAAMwE,QAO/BsN,EAAoB,gFAyC1B,SAASC,EAASzN,GACd,OAAOA,EAAMkD,QAAQ,uBAAuB,CAACwK,EAAGC,IAASA,EAAKC,eAClE,CACA,SAASC,EAAkB7N,GACvB,OAAOyN,EAASzN,EAAMkD,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAC7D,CACA,SAAS4K,EAAW9N,GAChB,OAAOA,EAAM+N,OAAO,GAAGH,cAAgB5N,EAAMgO,MAAM,EACvD,CACA,SAASC,EAAUjO,GACf,OAAOA,EAAMkD,QAAQ,YAAY,CAACwK,EAAGC,IAAS,IAAIA,EAAKO,iBAC3D,CAKA,MAAMC,EACF1E,YAAY1H,EAASsJ,EAAO+C,EAAYC,GACpChT,KAAK0G,QAAUA,EACf1G,KAAKgQ,MAAQA,EACbhQ,KAAKqO,YAAc0E,EAAW1E,aAAe3H,EAC7C1G,KAAKsO,UAAYyE,EAAWzE,WA8DpC,SAAuC5H,GACnC,MAAMuM,EAAUvM,EAAQuM,QAAQJ,cAChC,GAAII,KAAWC,EACX,OAAOA,EAAkBD,GAASvM,EAE1C,CAnEiDyM,CAA8BzM,IAAYsD,EAAM,sBACzFhK,KAAKuO,aAAewE,EAAWxE,cAAgB,CAAC,EAChDvO,KAAKoT,WAAaL,EAAWK,YAAcpJ,EAAM,sBACjDhK,KAAKqT,WAAaN,EAAWM,YAAcrJ,EAAM,uBACjDhK,KAAKsT,UAAYP,EAAWO,WAAa,GACzCtT,KAAKgT,OAASA,CAClB,CACA7R,gBAAgBoS,EAAOP,GACnB,OAAO,IAAIhT,KAAKuT,EAAM7M,QAAS6M,EAAMvD,MArE7C,SAAqCwD,GACjC,MACMC,EADSD,EAAiBE,OACTC,MAAMxB,IAAsB,GACnD,IAAI7D,EAAYmF,EAAQ,GACpBH,EAAYG,EAAQ,GAKxB,OAJIH,IAAc,CAAC,UAAW,QAAS,YAAYM,SAAStF,KACxDA,GAAa,IAAIgF,IACjBA,EAAY,IAET,CACHjF,aAQkBwF,EARYJ,EAAQ,GASnB,UAAnBI,EACO5S,OAEiB,YAAnB4S,EACE3T,cADN,GAXDoO,YACAC,aAAckF,EAAQ,IAcHlF,EAd0BkF,EAAQ,GAelDlF,EACFuF,MAAM,KACNnD,QAAO,CAACoD,EAASR,IAAUxF,OAAOoB,OAAO4E,EAAS,CAAE,CAACR,EAAM1L,QAAQ,KAAM,MAAO,KAAKmM,KAAKT,MAAW,CAAC,IAjB5C,CAAC,EAC5DH,WAAYK,EAAQ,GACpBJ,WAAYI,EAAQ,GACpBH,aAGR,IAA0BO,EAQCtF,CAT3B,CAoDoD0F,CAA4BV,EAAMtI,SAAU+H,EAC5F,CACAkB,WACI,MAAMC,EAAcnU,KAAKsT,UAAY,IAAItT,KAAKsT,YAAc,GACtDjF,EAAcrO,KAAK6T,gBAAkB,IAAI7T,KAAK6T,kBAAoB,GACxE,MAAO,GAAG7T,KAAKsO,YAAY6F,IAAc9F,MAAgBrO,KAAKoT,cAAcpT,KAAKqT,YACrF,CACAe,eAAe/T,GACX,IAAKL,KAAKsT,UACN,OAAO,EAEX,MAAMe,EAAWrU,KAAKsT,UAAUQ,MAAM,KAChCQ,EAAY,CAAC,OAAQ,OAAQ,MAAO,UACnCC,EAAMC,EAAMC,EAAKC,GAASJ,EAAUhH,KAAKqH,GAAaN,EAAST,SAASe,KAC/E,GAAItU,EAAMuU,UAAYL,GAAQlU,EAAMwU,UAAYL,GAAQnU,EAAMyU,SAAWL,GAAOpU,EAAM0U,WAAaL,EAC/F,OAAO,EAEX,MAAMM,EAAiBX,EAASY,QAAQrD,IAAS0C,EAAUV,SAAShC,KAAM,GAC1E,QAAKoD,IAGAjH,OAAOmH,UAAUC,eAAe9F,KAAKrP,KAAKoV,YAAaJ,IACxDhL,EAAM,gCAAgChK,KAAKsT,aAExCtT,KAAKoV,YAAYJ,GAAgBnC,gBAAkBxS,EAAMuR,IAAIiB,cACxE,CACIwC,aACA,MAAMA,EAAS,CAAC,EACVC,EAAU,IAAIC,OAAO,SAASvV,KAAKoT,yBAA0B,KACnE,IAAK,MAAM,KAAEtO,EAAI,MAAEH,KAAW+K,MAAMC,KAAK3P,KAAK0G,QAAQ8O,YAAa,CAC/D,MAAM7B,EAAQ7O,EAAK6O,MAAM2B,GACnB1D,EAAM+B,GAASA,EAAM,GACvB/B,IACAyD,EAAOjD,EAASR,IAAQ6D,EAAS9Q,GAEzC,CACA,OAAO0Q,CACX,CACIxB,sBACA,OA7EsBxF,EA6EMrO,KAAKqO,cA5ElBpN,OACR,SAEFoN,GAAenO,SACb,gBADN,EAJT,IAA8BmO,CA8E1B,CACI+G,kBACA,OAAOpV,KAAKgT,OAAOoC,WACvB,EAEJ,MAAMlC,EAAoB,CACtBwC,EAAG,IAAM,QACTC,OAAQ,IAAM,QACdC,KAAM,IAAM,SACZC,QAAS,IAAM,SACfC,MAAQlS,GAAiC,UAA1BA,EAAEmS,aAAa,QAAsB,QAAU,QAC9DC,OAAQ,IAAM,SACdC,SAAU,IAAM,SAQpB,SAASjM,EAAMC,GACX,MAAM,IAAI2D,MAAM3D,EACpB,CACA,SAASwL,EAAS9Q,GACd,IACI,OAAOuR,KAAKC,MAAMxR,EACtB,CACA,MAAOyR,GACH,OAAOzR,CACX,CACJ,CAEA,MAAM0R,EACFjI,YAAYkI,EAASC,GACjBvW,KAAKsW,QAAUA,EACftW,KAAKuW,OAASA,CAClB,CACIvG,YACA,OAAOhQ,KAAKuW,OAAOvG,KACvB,CACI3B,kBACA,OAAOrO,KAAKuW,OAAOlI,WACvB,CACIE,mBACA,OAAOvO,KAAKuW,OAAOhI,YACvB,CACI6E,iBACA,OAAOpT,KAAKsW,QAAQlD,UACxB,CACApE,YAAY3O,GACJL,KAAKwW,qBAAqBnW,IAAUL,KAAKyW,oBAAoBpW,IAC7DL,KAAK0W,gBAAgBrW,EAE7B,CACIiO,gBACA,OAAOtO,KAAKuW,OAAOjI,SACvB,CACIqI,aACA,MAAMA,EAAS3W,KAAK4W,WAAW5W,KAAKqT,YACpC,GAAqB,mBAAVsD,EACP,OAAOA,EAEX,MAAM,IAAI/I,MAAM,WAAW5N,KAAKuW,wCAAwCvW,KAAKqT,cACjF,CACAoD,oBAAoBpW,GAChB,MAAM,QAAEqG,GAAY1G,KAAKuW,QACnB,wBAAEM,GAA4B7W,KAAKsW,QAAQvV,YACjD,IAAI+V,GAAS,EACb,IAAK,MAAOhS,EAAMH,KAAUoJ,OAAOgJ,QAAQ/W,KAAKuO,cAC5C,GAAIzJ,KAAQ+R,EAAyB,CACjC,MAAM5B,EAAS4B,EAAwB/R,GACvCgS,EAASA,GAAU7B,EAAO,CAAEnQ,OAAMH,QAAOtE,QAAOqG,WACpD,CAKJ,OAAOoQ,CACX,CACAJ,gBAAgBrW,GACZ,MAAM,OAAEwE,EAAM,cAAEtE,GAAkBF,EAClC,IACI,MAAM,OAAEgV,GAAWrV,KAAKuW,OAClBS,EAAcjJ,OAAOoB,OAAO9O,EAAO,CAAEgV,WAC3CrV,KAAK2W,OAAOtH,KAAKrP,KAAK4W,WAAYI,GAClChX,KAAKsW,QAAQW,iBAAiBjX,KAAKqT,WAAY,CAAEhT,QAAOwE,SAAQtE,gBAAegW,OAAQvW,KAAKqT,YAChG,CACA,MAAOrJ,GACH,MAAM,WAAEoJ,EAAU,WAAEwD,EAAU,QAAElQ,EAAO,MAAEsJ,GAAUhQ,KAC7CkR,EAAS,CAAEkC,aAAYwD,aAAYlQ,UAASsJ,QAAO3P,SACzDL,KAAKsW,QAAQrF,YAAYjH,EAAO,oBAAoBhK,KAAKuW,UAAWrF,EACxE,CACJ,CACAsF,qBAAqBnW,GACjB,MAAMgO,EAAchO,EAAMwE,OAC1B,QAAIxE,aAAiB6W,eAAiBlX,KAAKuW,OAAOnC,eAAe/T,MAG7DL,KAAK0G,UAAY2H,IAGZA,aAAuB8I,SAAWnX,KAAK0G,QAAQ0Q,SAAS/I,GACtDrO,KAAKqX,MAAMC,gBAAgBjJ,GAG3BrO,KAAKqX,MAAMC,gBAAgBtX,KAAKuW,OAAO7P,UAEtD,CACIkQ,iBACA,OAAO5W,KAAKsW,QAAQM,UACxB,CACIvD,iBACA,OAAOrT,KAAKuW,OAAOlD,UACvB,CACI3M,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACI2Q,YACA,OAAOrX,KAAKsW,QAAQe,KACxB,EAGJ,MAAME,EACFnJ,YAAY1H,EAAS8Q,GACjBxX,KAAKyX,qBAAuB,CAAEjC,YAAY,EAAMkC,WAAW,EAAMC,SAAS,GAC1E3X,KAAK0G,QAAUA,EACf1G,KAAKqQ,SAAU,EACfrQ,KAAKwX,SAAWA,EAChBxX,KAAK+I,SAAW,IAAI0F,IACpBzO,KAAK4X,iBAAmB,IAAIC,kBAAkBC,GAAc9X,KAAK+X,iBAAiBD,IACtF,CACAxH,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACfrQ,KAAK4X,iBAAiBI,QAAQhY,KAAK0G,QAAS1G,KAAKyX,sBACjDzX,KAAKiY,UAEb,CACAC,MAAMC,GACEnY,KAAKqQ,UACLrQ,KAAK4X,iBAAiBlJ,aACtB1O,KAAKqQ,SAAU,GAEnB8H,IACKnY,KAAKqQ,UACNrQ,KAAK4X,iBAAiBI,QAAQhY,KAAK0G,QAAS1G,KAAKyX,sBACjDzX,KAAKqQ,SAAU,EAEvB,CACAI,OACQzQ,KAAKqQ,UACLrQ,KAAK4X,iBAAiBQ,cACtBpY,KAAK4X,iBAAiBlJ,aACtB1O,KAAKqQ,SAAU,EAEvB,CACA4H,UACI,GAAIjY,KAAKqQ,QAAS,CACd,MAAMoD,EAAU,IAAIhF,IAAIzO,KAAKqY,uBAC7B,IAAK,MAAM3R,KAAWgJ,MAAMC,KAAK3P,KAAK+I,UAC7B0K,EAAQ6E,IAAI5R,IACb1G,KAAKuY,cAAc7R,GAG3B,IAAK,MAAMA,KAAWgJ,MAAMC,KAAK8D,GAC7BzT,KAAKwY,WAAW9R,EAExB,CACJ,CACAqR,iBAAiBD,GACb,GAAI9X,KAAKqQ,QACL,IAAK,MAAMoI,KAAYX,EACnB9X,KAAK0Y,gBAAgBD,EAGjC,CACAC,gBAAgBD,GACS,cAAjBA,EAAShT,KACTzF,KAAK2Y,uBAAuBF,EAAS5T,OAAQ4T,EAASG,eAEhC,aAAjBH,EAAShT,OACdzF,KAAK6Y,oBAAoBJ,EAASK,cAClC9Y,KAAK+Y,kBAAkBN,EAASO,YAExC,CACAL,uBAAuBM,EAAML,GACzB,MAAMlS,EAAUuS,EACZjZ,KAAK+I,SAASuP,IAAI5R,GACd1G,KAAKwX,SAAS0B,yBAA2BlZ,KAAKmZ,aAAazS,GAC3D1G,KAAKwX,SAAS0B,wBAAwBxS,EAASkS,GAG/C5Y,KAAKuY,cAAc7R,GAGlB1G,KAAKmZ,aAAazS,IACvB1G,KAAKwY,WAAW9R,EAExB,CACAmS,oBAAoBO,GAChB,IAAK,MAAMH,KAAQvJ,MAAMC,KAAKyJ,GAAQ,CAClC,MAAM1S,EAAU1G,KAAKqZ,gBAAgBJ,GACjCvS,GACA1G,KAAKsZ,YAAY5S,EAAS1G,KAAKuY,cAEvC,CACJ,CACAQ,kBAAkBK,GACd,IAAK,MAAMH,KAAQvJ,MAAMC,KAAKyJ,GAAQ,CAClC,MAAM1S,EAAU1G,KAAKqZ,gBAAgBJ,GACjCvS,GAAW1G,KAAKuZ,gBAAgB7S,IAChC1G,KAAKsZ,YAAY5S,EAAS1G,KAAKwY,WAEvC,CACJ,CACAW,aAAazS,GACT,OAAO1G,KAAKwX,SAAS2B,aAAazS,EACtC,CACA2R,oBAAoBmB,EAAOxZ,KAAK0G,SAC5B,OAAO1G,KAAKwX,SAASa,oBAAoBmB,EAC7C,CACAF,YAAYE,EAAMC,GACd,IAAK,MAAM/S,KAAW1G,KAAKqY,oBAAoBmB,GAC3CC,EAAUpK,KAAKrP,KAAM0G,EAE7B,CACA2S,gBAAgBJ,GACZ,GAAIA,EAAKS,UAAYC,KAAKC,aACtB,OAAOX,CAEf,CACAM,gBAAgB7S,GACZ,OAAIA,EAAQmT,aAAe7Z,KAAK0G,QAAQmT,aAI7B7Z,KAAK0G,QAAQ0Q,SAAS1Q,EAErC,CACA8R,WAAW9R,GACF1G,KAAK+I,SAASuP,IAAI5R,IACf1G,KAAKuZ,gBAAgB7S,KACrB1G,KAAK+I,SAAShF,IAAI2C,GACd1G,KAAKwX,SAASsC,gBACd9Z,KAAKwX,SAASsC,eAAepT,GAI7C,CACA6R,cAAc7R,GACN1G,KAAK+I,SAASuP,IAAI5R,KAClB1G,KAAK+I,SAASgG,OAAOrI,GACjB1G,KAAKwX,SAASuC,kBACd/Z,KAAKwX,SAASuC,iBAAiBrT,GAG3C,EAGJ,MAAMsT,EACF5L,YAAY1H,EAASkS,EAAepB,GAChCxX,KAAK4Y,cAAgBA,EACrB5Y,KAAKwX,SAAWA,EAChBxX,KAAKia,gBAAkB,IAAI1C,EAAgB7Q,EAAS1G,KACxD,CACI0G,cACA,OAAO1G,KAAKia,gBAAgBvT,OAChC,CACIwT,eACA,MAAO,IAAIla,KAAK4Y,gBACpB,CACAtI,QACItQ,KAAKia,gBAAgB3J,OACzB,CACA4H,MAAMC,GACFnY,KAAKia,gBAAgB/B,MAAMC,EAC/B,CACA1H,OACIzQ,KAAKia,gBAAgBxJ,MACzB,CACAwH,UACIjY,KAAKia,gBAAgBhC,SACzB,CACI5H,cACA,OAAOrQ,KAAKia,gBAAgB5J,OAChC,CACA8I,aAAazS,GACT,OAAOA,EAAQyT,aAAana,KAAK4Y,cACrC,CACAP,oBAAoBmB,GAChB,MAAM7F,EAAQ3T,KAAKmZ,aAAaK,GAAQ,CAACA,GAAQ,GAC3C/F,EAAU/D,MAAMC,KAAK6J,EAAKrZ,iBAAiBH,KAAKka,WACtD,OAAOvG,EAAM9C,OAAO4C,EACxB,CACAqG,eAAepT,GACP1G,KAAKwX,SAAS4C,yBACdpa,KAAKwX,SAAS4C,wBAAwB1T,EAAS1G,KAAK4Y,cAE5D,CACAmB,iBAAiBrT,GACT1G,KAAKwX,SAAS6C,2BACdra,KAAKwX,SAAS6C,0BAA0B3T,EAAS1G,KAAK4Y,cAE9D,CACAM,wBAAwBxS,EAASkS,GACzB5Y,KAAKwX,SAAS8C,8BAAgCta,KAAK4Y,eAAiBA,GACpE5Y,KAAKwX,SAAS8C,6BAA6B5T,EAASkS,EAE5D,EAUJ,SAAS2B,EAAMjN,EAAKsE,GAChB,IAAIlB,EAASpD,EAAIkE,IAAII,GAKrB,OAJKlB,IACDA,EAAS,IAAIjC,IACbnB,EAAIoE,IAAIE,EAAKlB,IAEVA,CACX,CAQA,MAAM8J,EACFpM,cACIpO,KAAKya,YAAc,IAAIrK,GAC3B,CACItC,WACA,OAAO4B,MAAMC,KAAK3P,KAAKya,YAAY3M,OACvC,CACI4C,aAEA,OADahB,MAAMC,KAAK3P,KAAKya,YAAY/J,UAC7BC,QAAO,CAACD,EAAQgB,IAAQhB,EAAOG,OAAOnB,MAAMC,KAAK+B,KAAO,GACxE,CACIjC,WAEA,OADaC,MAAMC,KAAK3P,KAAKya,YAAY/J,UAC7BC,QAAO,CAAClB,EAAMiC,IAAQjC,EAAOiC,EAAIjC,MAAM,EACvD,CACA1L,IAAI6N,EAAKjN,IArCb,SAAa2I,EAAKsE,EAAKjN,GACnB4V,EAAMjN,EAAKsE,GAAK7N,IAAIY,EACxB,CAoCQZ,CAAI/D,KAAKya,YAAa7I,EAAKjN,EAC/B,CACAoK,OAAO6C,EAAKjN,IArChB,SAAa2I,EAAKsE,EAAKjN,GACnB4V,EAAMjN,EAAKsE,GAAK7C,OAAOpK,GAW3B,SAAe2I,EAAKsE,GAChB,MAAMlB,EAASpD,EAAIkE,IAAII,GACT,MAAVlB,GAAiC,GAAfA,EAAOjB,MACzBnC,EAAIyB,OAAO6C,EAEnB,CAfI8I,CAAMpN,EAAKsE,EACf,CAmCQ+I,CAAI3a,KAAKya,YAAa7I,EAAKjN,EAC/B,CACA2T,IAAI1G,EAAKjN,GACL,MAAM+L,EAAS1Q,KAAKya,YAAYjJ,IAAII,GACpC,OAAiB,MAAVlB,GAAkBA,EAAO4H,IAAI3T,EACxC,CACAiW,OAAOhJ,GACH,OAAO5R,KAAKya,YAAYnC,IAAI1G,EAChC,CACAiJ,SAASlW,GAEL,OADa+K,MAAMC,KAAK3P,KAAKya,YAAY/J,UAC7BoK,MAAMpJ,GAAQA,EAAI4G,IAAI3T,IACtC,CACAoW,gBAAgBnJ,GACZ,MAAMlB,EAAS1Q,KAAKya,YAAYjJ,IAAII,GACpC,OAAOlB,EAAShB,MAAMC,KAAKe,GAAU,EACzC,CACAsK,gBAAgBrW,GACZ,OAAO+K,MAAMC,KAAK3P,KAAKya,aAClBxF,QAAO,EAAEgG,EAAMvK,KAAYA,EAAO4H,IAAI3T,KACtC2I,KAAI,EAAEsE,EAAKsJ,KAAatJ,GACjC,EA4BJ,MAAMuJ,EACF/M,YAAY1H,EAASwT,EAAU1C,EAAU3B,EAAU,CAAC,GAChD7V,KAAKka,SAAWA,EAChBla,KAAK6V,QAAUA,EACf7V,KAAKia,gBAAkB,IAAI1C,EAAgB7Q,EAAS1G,MACpDA,KAAKwX,SAAWA,EAChBxX,KAAKob,iBAAmB,IAAIZ,CAChC,CACInK,cACA,OAAOrQ,KAAKia,gBAAgB5J,OAChC,CACAC,QACItQ,KAAKia,gBAAgB3J,OACzB,CACA4H,MAAMC,GACFnY,KAAKia,gBAAgB/B,MAAMC,EAC/B,CACA1H,OACIzQ,KAAKia,gBAAgBxJ,MACzB,CACAwH,UACIjY,KAAKia,gBAAgBhC,SACzB,CACIvR,cACA,OAAO1G,KAAKia,gBAAgBvT,OAChC,CACAyS,aAAazS,GACT,MAAM+M,EAAU/M,EAAQ+M,QAAQzT,KAAKka,UACrC,OAAIla,KAAKwX,SAAS6D,qBACP5H,GAAWzT,KAAKwX,SAAS6D,qBAAqB3U,EAAS1G,KAAK6V,SAEhEpC,CACX,CACA4E,oBAAoBmB,GAChB,MAAM7F,EAAQ3T,KAAKmZ,aAAaK,GAAQ,CAACA,GAAQ,GAC3C/F,EAAU/D,MAAMC,KAAK6J,EAAKrZ,iBAAiBH,KAAKka,WAAWjF,QAAQtB,GAAU3T,KAAKmZ,aAAaxF,KACrG,OAAOA,EAAM9C,OAAO4C,EACxB,CACAqG,eAAepT,GACX1G,KAAKsb,gBAAgB5U,EACzB,CACAqT,iBAAiBrT,GACb1G,KAAKub,kBAAkB7U,EAC3B,CACAwS,wBAAwBxS,EAAS8U,GAC7B,MAAM/H,EAAUzT,KAAKmZ,aAAazS,GAC5B+U,EAAgBzb,KAAKob,iBAAiB9C,IAAItY,KAAKka,SAAUxT,IAC1D+M,GAAWgI,GACZzb,KAAKub,kBAAkB7U,EAE/B,CACA4U,gBAAgB5U,GACR1G,KAAKwX,SAAS8D,kBACdtb,KAAKwX,SAAS8D,gBAAgB5U,EAAS1G,KAAKka,SAAUla,KAAK6V,SAC3D7V,KAAKob,iBAAiBrX,IAAI/D,KAAKka,SAAUxT,GAEjD,CACA6U,kBAAkB7U,GACd1G,KAAKwX,SAAS+D,kBAAkB7U,EAAS1G,KAAKka,SAAUla,KAAK6V,SAC7D7V,KAAKob,iBAAiBrM,OAAO/O,KAAKka,SAAUxT,EAChD,EAGJ,MAAMgV,EACFtN,YAAY1H,EAAS8Q,GACjBxX,KAAK0G,QAAUA,EACf1G,KAAKwX,SAAWA,EAChBxX,KAAKqQ,SAAU,EACfrQ,KAAK2b,UAAY,IAAIvL,IACrBpQ,KAAK4X,iBAAmB,IAAIC,kBAAkBC,GAAc9X,KAAK+X,iBAAiBD,IACtF,CACAxH,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACfrQ,KAAK4X,iBAAiBI,QAAQhY,KAAK0G,QAAS,CAAE8O,YAAY,EAAMoG,mBAAmB,IACnF5b,KAAKiY,UAEb,CACAxH,OACQzQ,KAAKqQ,UACLrQ,KAAK4X,iBAAiBQ,cACtBpY,KAAK4X,iBAAiBlJ,aACtB1O,KAAKqQ,SAAU,EAEvB,CACA4H,UACI,GAAIjY,KAAKqQ,QACL,IAAK,MAAMuI,KAAiB5Y,KAAK6b,oBAC7B7b,KAAK8b,iBAAiBlD,EAAe,KAGjD,CACAb,iBAAiBD,GACb,GAAI9X,KAAKqQ,QACL,IAAK,MAAMoI,KAAYX,EACnB9X,KAAK0Y,gBAAgBD,EAGjC,CACAC,gBAAgBD,GACZ,MAAMG,EAAgBH,EAASG,cAC3BA,GACA5Y,KAAK8b,iBAAiBlD,EAAeH,EAASsD,SAEtD,CACAD,iBAAiBlD,EAAemD,GAC5B,MAAMnK,EAAM5R,KAAKwX,SAASwE,4BAA4BpD,GACtD,GAAW,MAAPhH,EAAa,CACR5R,KAAK2b,UAAUrD,IAAIM,IACpB5Y,KAAKic,kBAAkBrK,EAAKgH,GAEhC,MAAMjU,EAAQ3E,KAAK0G,QAAQqP,aAAa6C,GAIxC,GAHI5Y,KAAK2b,UAAUnK,IAAIoH,IAAkBjU,GACrC3E,KAAKkc,sBAAsBvX,EAAOiN,EAAKmK,GAE9B,MAATpX,EAAe,CACf,MAAMoX,EAAW/b,KAAK2b,UAAUnK,IAAIoH,GACpC5Y,KAAK2b,UAAU5M,OAAO6J,GAClBmD,GACA/b,KAAKmc,oBAAoBvK,EAAKgH,EAAemD,EACrD,MAEI/b,KAAK2b,UAAUjK,IAAIkH,EAAejU,EAE1C,CACJ,CACAsX,kBAAkBrK,EAAKgH,GACf5Y,KAAKwX,SAASyE,mBACdjc,KAAKwX,SAASyE,kBAAkBrK,EAAKgH,EAE7C,CACAsD,sBAAsBvX,EAAOiN,EAAKmK,GAC1B/b,KAAKwX,SAAS0E,uBACdlc,KAAKwX,SAAS0E,sBAAsBvX,EAAOiN,EAAKmK,EAExD,CACAI,oBAAoBvK,EAAKgH,EAAemD,GAChC/b,KAAKwX,SAAS2E,qBACdnc,KAAKwX,SAAS2E,oBAAoBvK,EAAKgH,EAAemD,EAE9D,CACIF,0BACA,OAAOnM,MAAMC,KAAK,IAAIlB,IAAIzO,KAAKoc,sBAAsBvL,OAAO7Q,KAAKqc,yBACrE,CACID,4BACA,OAAO1M,MAAMC,KAAK3P,KAAK0G,QAAQ8O,YAAYlI,KAAKgP,GAAcA,EAAUxX,MAC5E,CACIuX,6BACA,OAAO3M,MAAMC,KAAK3P,KAAK2b,UAAU7N,OACrC,EAGJ,MAAMyO,EACFnO,YAAY1H,EAASkS,EAAepB,GAChCxX,KAAKwc,kBAAoB,IAAIxC,EAAkBtT,EAASkS,EAAe5Y,MACvEA,KAAKwX,SAAWA,EAChBxX,KAAKyc,gBAAkB,IAAIjC,CAC/B,CACInK,cACA,OAAOrQ,KAAKwc,kBAAkBnM,OAClC,CACAC,QACItQ,KAAKwc,kBAAkBlM,OAC3B,CACA4H,MAAMC,GACFnY,KAAKwc,kBAAkBtE,MAAMC,EACjC,CACA1H,OACIzQ,KAAKwc,kBAAkB/L,MAC3B,CACAwH,UACIjY,KAAKwc,kBAAkBvE,SAC3B,CACIvR,cACA,OAAO1G,KAAKwc,kBAAkB9V,OAClC,CACIkS,oBACA,OAAO5Y,KAAKwc,kBAAkB5D,aAClC,CACAwB,wBAAwB1T,GACpB1G,KAAK0c,cAAc1c,KAAK2c,qBAAqBjW,GACjD,CACA4T,6BAA6B5T,GACzB,MAAOkW,EAAiBC,GAAiB7c,KAAK8c,wBAAwBpW,GACtE1G,KAAK+c,gBAAgBH,GACrB5c,KAAK0c,cAAcG,EACvB,CACAxC,0BAA0B3T,GACtB1G,KAAK+c,gBAAgB/c,KAAKyc,gBAAgB1B,gBAAgBrU,GAC9D,CACAgW,cAAcM,GACVA,EAAO1Y,SAASiP,GAAUvT,KAAKid,aAAa1J,IAChD,CACAwJ,gBAAgBC,GACZA,EAAO1Y,SAASiP,GAAUvT,KAAKkd,eAAe3J,IAClD,CACA0J,aAAa1J,GACTvT,KAAKwX,SAASyF,aAAa1J,GAC3BvT,KAAKyc,gBAAgB1Y,IAAIwP,EAAM7M,QAAS6M,EAC5C,CACA2J,eAAe3J,GACXvT,KAAKwX,SAAS0F,eAAe3J,GAC7BvT,KAAKyc,gBAAgB1N,OAAOwE,EAAM7M,QAAS6M,EAC/C,CACAuJ,wBAAwBpW,GACpB,MAAMyW,EAAiBnd,KAAKyc,gBAAgB1B,gBAAgBrU,GACtD0W,EAAgBpd,KAAK2c,qBAAqBjW,GAC1C2W,EAqBd,SAAaxN,EAAMC,GACf,MAAMwN,EAASC,KAAKC,IAAI3N,EAAKyN,OAAQxN,EAAMwN,QAC3C,OAAO5N,MAAMC,KAAK,CAAE2N,WAAU,CAACjL,EAAGrC,IAAU,CAACH,EAAKG,GAAQF,EAAME,KACpE,CAxBoCyN,CAAIN,EAAgBC,GAAeM,WAAU,EAAEC,EAAeC,MAAkB,OAyBtF9N,EAzBqH8N,KAyB3H/N,EAzB4G8N,IA0BjH7N,GAASD,EAAKG,OAASF,EAAME,OAASH,EAAK5E,SAAW6E,EAAM7E,SAD/E,IAAwB4E,EAAMC,CAzBkI,IACxJ,OAA4B,GAAxBuN,EACO,CAAC,GAAI,IAGL,CAACF,EAAexK,MAAM0K,GAAsBD,EAAczK,MAAM0K,GAE/E,CACAV,qBAAqBjW,GACjB,MAAMkS,EAAgB5Y,KAAK4Y,cAE3B,OAGR,SAA0BiF,EAAanX,EAASkS,GAC5C,OAAOiF,EACFnK,OACAI,MAAM,OACNmB,QAAQhK,GAAYA,EAAQqS,SAC5BhQ,KAAI,CAACrC,EAAS+E,KAAU,CAAGtJ,UAASkS,gBAAe3N,UAAS+E,WACrE,CATe8N,CADapX,EAAQqP,aAAa6C,IAAkB,GACtBlS,EAASkS,EAClD,EAiBJ,MAAMmF,EACF3P,YAAY1H,EAASkS,EAAepB,GAChCxX,KAAKge,kBAAoB,IAAIzB,EAAkB7V,EAASkS,EAAe5Y,MACvEA,KAAKwX,SAAWA,EAChBxX,KAAKie,oBAAsB,IAAIC,QAC/Ble,KAAKme,uBAAyB,IAAID,OACtC,CACI7N,cACA,OAAOrQ,KAAKge,kBAAkB3N,OAClC,CACAC,QACItQ,KAAKge,kBAAkB1N,OAC3B,CACAG,OACIzQ,KAAKge,kBAAkBvN,MAC3B,CACAwH,UACIjY,KAAKge,kBAAkB/F,SAC3B,CACIvR,cACA,OAAO1G,KAAKge,kBAAkBtX,OAClC,CACIkS,oBACA,OAAO5Y,KAAKge,kBAAkBpF,aAClC,CACAqE,aAAa1J,GACT,MAAM,QAAE7M,GAAY6M,GACd,MAAE5O,GAAU3E,KAAKoe,yBAAyB7K,GAC5C5O,IACA3E,KAAKqe,6BAA6B3X,GAASgL,IAAI6B,EAAO5O,GACtD3E,KAAKwX,SAAS8G,oBAAoB5X,EAAS/B,GAEnD,CACAuY,eAAe3J,GACX,MAAM,QAAE7M,GAAY6M,GACd,MAAE5O,GAAU3E,KAAKoe,yBAAyB7K,GAC5C5O,IACA3E,KAAKqe,6BAA6B3X,GAASqI,OAAOwE,GAClDvT,KAAKwX,SAAS+G,sBAAsB7X,EAAS/B,GAErD,CACAyZ,yBAAyB7K,GACrB,IAAIiL,EAAcxe,KAAKie,oBAAoBzM,IAAI+B,GAK/C,OAJKiL,IACDA,EAAcxe,KAAKye,WAAWlL,GAC9BvT,KAAKie,oBAAoBvM,IAAI6B,EAAOiL,IAEjCA,CACX,CACAH,6BAA6B3X,GACzB,IAAIgY,EAAgB1e,KAAKme,uBAAuB3M,IAAI9K,GAKpD,OAJKgY,IACDA,EAAgB,IAAItO,IACpBpQ,KAAKme,uBAAuBzM,IAAIhL,EAASgY,IAEtCA,CACX,CACAD,WAAWlL,GACP,IAEI,MAAO,CAAE5O,MADK3E,KAAKwX,SAASmH,mBAAmBpL,GAEnD,CACA,MAAOvJ,GACH,MAAO,CAAEA,QACb,CACJ,EAGJ,MAAM4U,EACFxQ,YAAYkI,EAASkB,GACjBxX,KAAKsW,QAAUA,EACftW,KAAKwX,SAAWA,EAChBxX,KAAK6e,iBAAmB,IAAIzO,GAChC,CACAE,QACStQ,KAAK8e,oBACN9e,KAAK8e,kBAAoB,IAAIf,EAAkB/d,KAAK0G,QAAS1G,KAAK+e,gBAAiB/e,MACnFA,KAAK8e,kBAAkBxO,QAE/B,CACAG,OACQzQ,KAAK8e,oBACL9e,KAAK8e,kBAAkBrO,cAChBzQ,KAAK8e,kBACZ9e,KAAKgf,uBAEb,CACItY,cACA,OAAO1G,KAAKsW,QAAQ5P,OACxB,CACI0M,iBACA,OAAOpT,KAAKsW,QAAQlD,UACxB,CACI2L,sBACA,OAAO/e,KAAKgT,OAAO+L,eACvB,CACI/L,aACA,OAAOhT,KAAKsW,QAAQtD,MACxB,CACIzD,eACA,OAAOG,MAAMC,KAAK3P,KAAK6e,iBAAiBnO,SAC5C,CACAuO,cAAc1I,GACV,MAAM1H,EAAU,IAAIwH,EAAQrW,KAAKsW,QAASC,GAC1CvW,KAAK6e,iBAAiBnN,IAAI6E,EAAQ1H,GAClC7O,KAAKwX,SAAS5I,iBAAiBC,EACnC,CACAqQ,iBAAiB3I,GACb,MAAM1H,EAAU7O,KAAK6e,iBAAiBrN,IAAI+E,GACtC1H,IACA7O,KAAK6e,iBAAiB9P,OAAOwH,GAC7BvW,KAAKwX,SAAS1I,oBAAoBD,GAE1C,CACAmQ,uBACIhf,KAAKuP,SAASjL,SAASuK,GAAY7O,KAAKwX,SAAS1I,oBAAoBD,GAAS,KAC9E7O,KAAK6e,iBAAiBM,OAC1B,CACAR,mBAAmBpL,GACf,MAAMgD,EAASzD,EAAOsM,SAAS7L,EAAOvT,KAAKgT,QAC3C,GAAIuD,EAAOnD,YAAcpT,KAAKoT,WAC1B,OAAOmD,CAEf,CACA+H,oBAAoB5X,EAAS6P,GACzBvW,KAAKif,cAAc1I,EACvB,CACAgI,sBAAsB7X,EAAS6P,GAC3BvW,KAAKkf,iBAAiB3I,EAC1B,EAGJ,MAAM8I,EACFjR,YAAYkI,EAASgJ,GACjBtf,KAAKsW,QAAUA,EACftW,KAAKsf,SAAWA,EAChBtf,KAAKuf,kBAAoB,IAAI7D,EAAkB1b,KAAK0G,QAAS1G,MAC7DA,KAAKwf,mBAAqBxf,KAAK4W,WAAW4I,kBAC9C,CACAlP,QACItQ,KAAKuf,kBAAkBjP,QACvBtQ,KAAKyf,wCACT,CACAhP,OACIzQ,KAAKuf,kBAAkB9O,MAC3B,CACI/J,cACA,OAAO1G,KAAKsW,QAAQ5P,OACxB,CACIkQ,iBACA,OAAO5W,KAAKsW,QAAQM,UACxB,CACAoF,4BAA4BpD,GACxB,GAAIA,KAAiB5Y,KAAKwf,mBACtB,OAAOxf,KAAKwf,mBAAmB5G,GAAe9T,IAEtD,CACAmX,kBAAkBrK,EAAKgH,GACnB,MAAM7F,EAAa/S,KAAKwf,mBAAmB5G,GACtC5Y,KAAK6a,SAASjJ,IACf5R,KAAK0f,sBAAsB9N,EAAKmB,EAAW4M,OAAO3f,KAAKsf,SAAS1N,IAAOmB,EAAW4M,OAAO5M,EAAW6M,cAE5G,CACA1D,sBAAsBvX,EAAOG,EAAMiX,GAC/B,MAAMhJ,EAAa/S,KAAK6f,uBAAuB/a,GACjC,OAAVH,IAEa,OAAboX,IACAA,EAAWhJ,EAAW4M,OAAO5M,EAAW6M,eAE5C5f,KAAK0f,sBAAsB5a,EAAMH,EAAOoX,GAC5C,CACAI,oBAAoBvK,EAAKgH,EAAemD,GACpC,MAAMhJ,EAAa/S,KAAK6f,uBAAuBjO,GAC3C5R,KAAK6a,SAASjJ,GACd5R,KAAK0f,sBAAsB9N,EAAKmB,EAAW4M,OAAO3f,KAAKsf,SAAS1N,IAAOmK,GAGvE/b,KAAK0f,sBAAsB9N,EAAKmB,EAAW4M,OAAO5M,EAAW6M,cAAe7D,EAEpF,CACA0D,yCACI,IAAK,MAAM,IAAE7N,EAAG,KAAE9M,EAAI,aAAE8a,EAAY,OAAED,KAAY3f,KAAK8f,iBAC/BC,MAAhBH,GAA8B5f,KAAK4W,WAAWxR,KAAKkT,IAAI1G,IACvD5R,KAAK0f,sBAAsB5a,EAAM6a,EAAOC,QAAeG,EAGnE,CACAL,sBAAsB5a,EAAMkb,EAAUC,GAClC,MAAMC,EAAoB,GAAGpb,WACvBqb,EAAgBngB,KAAKsf,SAASY,GACpC,GAA4B,mBAAjBC,EAA6B,CACpC,MAAMpN,EAAa/S,KAAK6f,uBAAuB/a,GAC/C,IACI,MAAMH,EAAQoO,EAAWqN,OAAOJ,GAChC,IAAIjE,EAAWkE,EACXA,IACAlE,EAAWhJ,EAAWqN,OAAOH,IAEjCE,EAAc9Q,KAAKrP,KAAKsf,SAAU3a,EAAOoX,EAC7C,CACA,MAAO/R,GAIH,MAHIA,aAAiBqW,YACjBrW,EAAMC,QAAU,mBAAmBjK,KAAKsW,QAAQlD,cAAcL,EAAWjO,WAAWkF,EAAMC,WAExFD,CACV,CACJ,CACJ,CACI8V,uBACA,MAAM,mBAAEN,GAAuBxf,KAC/B,OAAO+N,OAAOD,KAAK0R,GAAoBlS,KAAKsE,GAAQ4N,EAAmB5N,IAC3E,CACIiO,6BACA,MAAMS,EAAc,CAAC,EAKrB,OAJAvS,OAAOD,KAAK9N,KAAKwf,oBAAoBlb,SAASsN,IAC1C,MAAMmB,EAAa/S,KAAKwf,mBAAmB5N,GAC3C0O,EAAYvN,EAAWjO,MAAQiO,CAAU,IAEtCuN,CACX,CACAzF,SAASjC,GACL,MACM2H,EAAgB,MAAM9N,EADTzS,KAAK6f,uBAAuBjH,GACG9T,QAClD,OAAO9E,KAAKsf,SAASiB,EACzB,EAGJ,MAAMC,EACFpS,YAAYkI,EAASkB,GACjBxX,KAAKsW,QAAUA,EACftW,KAAKwX,SAAWA,EAChBxX,KAAKygB,cAAgB,IAAIjG,CAC7B,CACAlK,QACStQ,KAAKge,oBACNhe,KAAKge,kBAAoB,IAAIzB,EAAkBvc,KAAK0G,QAAS1G,KAAK4Y,cAAe5Y,MACjFA,KAAKge,kBAAkB1N,QAE/B,CACAG,OACQzQ,KAAKge,oBACLhe,KAAK0gB,uBACL1gB,KAAKge,kBAAkBvN,cAChBzQ,KAAKge,kBAEpB,CACAf,cAAa,QAAEvW,EAASuE,QAASnG,IACzB9E,KAAKqX,MAAMC,gBAAgB5Q,IAC3B1G,KAAK2gB,cAAcja,EAAS5B,EAEpC,CACAoY,gBAAe,QAAExW,EAASuE,QAASnG,IAC/B9E,KAAK4gB,iBAAiBla,EAAS5B,EACnC,CACA6b,cAAcja,EAAS5B,GACnB,IAAI+b,EACC7gB,KAAKygB,cAAcnI,IAAIxT,EAAM4B,KAC9B1G,KAAKygB,cAAc1c,IAAIe,EAAM4B,GACK,QAAjCma,EAAK7gB,KAAKge,yBAAsC,IAAP6C,GAAyBA,EAAG3I,OAAM,IAAMlY,KAAKwX,SAASsJ,gBAAgBpa,EAAS5B,KAEjI,CACA8b,iBAAiBla,EAAS5B,GACtB,IAAI+b,EACA7gB,KAAKygB,cAAcnI,IAAIxT,EAAM4B,KAC7B1G,KAAKygB,cAAc1R,OAAOjK,EAAM4B,GACE,QAAjCma,EAAK7gB,KAAKge,yBAAsC,IAAP6C,GAAyBA,EAAG3I,OAAM,IAAMlY,KAAKwX,SAASuJ,mBAAmBra,EAAS5B,KAEpI,CACA4b,uBACI,IAAK,MAAM5b,KAAQ9E,KAAKygB,cAAc3S,KAClC,IAAK,MAAMpH,KAAW1G,KAAKygB,cAAc1F,gBAAgBjW,GACrD9E,KAAK4gB,iBAAiBla,EAAS5B,EAG3C,CACI8T,oBACA,MAAO,QAAQ5Y,KAAKsW,QAAQlD,mBAChC,CACI1M,cACA,OAAO1G,KAAKsW,QAAQ5P,OACxB,CACI2Q,YACA,OAAOrX,KAAKsW,QAAQe,KACxB,EAGJ,SAAS2J,EAAiC5S,EAAa6S,GACnD,MAAMC,EAAYC,EAA2B/S,GAC7C,OAAOsB,MAAMC,KAAKuR,EAAUvQ,QAAO,CAACD,EAAQtC,KAoBhD,SAAiCA,EAAa6S,GAC1C,MAAMG,EAAahT,EAAY6S,GAC/B,OAAOvR,MAAM2R,QAAQD,GAAcA,EAAa,EACpD,CAtBQE,CAAwBlT,EAAa6S,GAAc3c,SAASQ,GAAS4L,EAAO3M,IAAIe,KACzE4L,IACR,IAAIjC,KACX,CAQA,SAAS0S,EAA2B/S,GAChC,MAAM8S,EAAY,GAClB,KAAO9S,GACH8S,EAAUrP,KAAKzD,GACfA,EAAcL,OAAOwT,eAAenT,GAExC,OAAO8S,EAAUM,SACrB,CAUA,MAAMC,EACFrT,YAAYkI,EAASkB,GACjBxX,KAAKsW,QAAUA,EACftW,KAAKwX,SAAWA,EAChBxX,KAAK0hB,cAAgB,IAAIlH,EACzBxa,KAAK2hB,qBAAuB,IAAInH,EAChCxa,KAAK4hB,oBAAsB,IAAIxR,GACnC,CACAE,QAC0C,IAAlCtQ,KAAK4hB,oBAAoBnS,OACzBzP,KAAK6hB,kBAAkBvd,SAASwd,IAC5B,MAAM5H,EAAWla,KAAKka,SAAS4H,GACzBjM,EAAU,CAAEiM,cACd5H,GACAla,KAAK4hB,oBAAoBlQ,IAAIoQ,EAAY,IAAI3G,EAAiBjb,SAAS4D,KAAMoW,EAAUla,KAAM6V,GACjG,IAEJ7V,KAAK4hB,oBAAoBtd,SAASyd,GAAaA,EAASzR,WAE5DtQ,KAAKgiB,kBAAkB1d,SAASgS,GAAYA,EAAQ2B,WACxD,CACAxH,OACQzQ,KAAK4hB,oBAAoBnS,KAAO,IAChCzP,KAAKiiB,uBACLjiB,KAAK4hB,oBAAoBtd,SAASyd,GAAaA,EAAStR,SACxDzQ,KAAK4hB,oBAAoBzC,QAEjC,CACAlH,UACIjY,KAAK4hB,oBAAoBtd,SAASyd,GAAaA,EAAS9J,WAC5D,CACAqD,gBAAgB5U,EAASwb,GAAW,WAAEJ,IAClC,MAAMK,EAASniB,KAAKoiB,UAAU1b,EAASob,GACnCK,GACAniB,KAAKqiB,cAAcF,EAAQzb,EAASob,EAE5C,CACAvG,kBAAkB7U,EAASwb,GAAW,WAAEJ,IACpC,MAAMK,EAASniB,KAAKsiB,iBAAiB5b,EAASob,GAC1CK,GACAniB,KAAKuiB,iBAAiBJ,EAAQzb,EAASob,EAE/C,CACAzG,qBAAqB3U,GAAS,WAAEob,IAC5B,OAAQ9hB,KAAKwiB,UAAU9b,EAASob,IAC5Bpb,EAAQ+M,QAAQ,IAAIzT,KAAKsW,QAAQvV,YAAYiS,OAAOyP,wBAAwBX,KACpF,CACAO,cAAcF,EAAQzb,EAASob,GAC3B,IAAIjB,EACC7gB,KAAK2hB,qBAAqBrJ,IAAIwJ,EAAYpb,KAC3C1G,KAAK0hB,cAAc3d,IAAI+d,EAAYK,GACnCniB,KAAK2hB,qBAAqB5d,IAAI+d,EAAYpb,GACU,QAAnDma,EAAK7gB,KAAK4hB,oBAAoBpQ,IAAIsQ,UAAgC,IAAPjB,GAAyBA,EAAG3I,OAAM,IAAMlY,KAAKwX,SAASkL,gBAAgBP,EAAQzb,EAASob,KAE3J,CACAS,iBAAiBJ,EAAQzb,EAASob,GAC9B,IAAIjB,EACA7gB,KAAK2hB,qBAAqBrJ,IAAIwJ,EAAYpb,KAC1C1G,KAAK0hB,cAAc3S,OAAO+S,EAAYK,GACtCniB,KAAK2hB,qBAAqB5S,OAAO+S,EAAYpb,GAEnB,QADzBma,EAAK7gB,KAAK4hB,oBACNpQ,IAAIsQ,UAAgC,IAAPjB,GAAyBA,EAAG3I,OAAM,IAAMlY,KAAKwX,SAASmL,mBAAmBR,EAAQzb,EAASob,KAEpI,CACAG,uBACI,IAAK,MAAMH,KAAc9hB,KAAK2hB,qBAAqB7T,KAC/C,IAAK,MAAMpH,KAAW1G,KAAK2hB,qBAAqB5G,gBAAgB+G,GAC5D,IAAK,MAAMK,KAAUniB,KAAK0hB,cAAc3G,gBAAgB+G,GACpD9hB,KAAKuiB,iBAAiBJ,EAAQzb,EAASob,EAIvD,CACA5H,SAAS4H,GACL,OAAO9hB,KAAKqX,MAAMuL,QAAQC,yBAAyBf,EACvD,CACIgB,yBACA,MAAMC,EAAe,IAAIvI,EAMzB,OALAxa,KAAKgjB,OAAOC,QAAQ3e,SAAS2J,IAET+S,EADI/S,EAAOmT,WAAW8B,sBACwB,WACtD5e,SAAS6d,GAAWY,EAAahf,IAAIoe,EAAQlU,EAAOmF,aAAY,IAErE2P,CACX,CACIlB,wBACA,OAAO7hB,KAAK8iB,mBAAmB9H,gBAAgBhb,KAAKoT,WACxD,CACI+P,qCACA,OAAOnjB,KAAK8iB,mBAAmB/H,gBAAgB/a,KAAKoT,WACxD,CACI4O,wBACA,MAAMoB,EAAcpjB,KAAKmjB,+BACzB,OAAOnjB,KAAKgjB,OAAOK,SAASpO,QAAQqB,GAAY8M,EAAYxP,SAAS0C,EAAQlD,aACjF,CACAoP,UAAU9b,EAASob,GACf,QAAS9hB,KAAKoiB,UAAU1b,EAASob,MAAiB9hB,KAAKsiB,iBAAiB5b,EAASob,EACrF,CACAM,UAAU1b,EAASob,GACf,OAAO9hB,KAAKe,YAAYuiB,qCAAqC5c,EAASob,EAC1E,CACAQ,iBAAiB5b,EAASob,GACtB,OAAO9hB,KAAK0hB,cAAc3G,gBAAgB+G,GAAYyB,MAAMpB,GAAWA,EAAOzb,UAAYA,GAC9F,CACI2Q,YACA,OAAOrX,KAAKsW,QAAQe,KACxB,CACIjE,iBACA,OAAOpT,KAAKsW,QAAQlD,UACxB,CACIrS,kBACA,OAAOf,KAAKsW,QAAQvV,WACxB,CACIiiB,aACA,OAAOhjB,KAAKe,YAAYiiB,MAC5B,EAGJ,MAAMQ,EACFpV,YAAYH,EAAQoJ,GAChBrX,KAAKiX,iBAAmB,CAACwM,EAAcvS,EAAS,CAAC,KAC7C,MAAM,WAAEkC,EAAU,WAAEwD,EAAU,QAAElQ,GAAY1G,KAC5CkR,EAASnD,OAAOoB,OAAO,CAAEiE,aAAYwD,aAAYlQ,WAAWwK,GAC5DlR,KAAKe,YAAYkW,iBAAiBjX,KAAKoT,WAAYqQ,EAAcvS,EAAO,EAE5ElR,KAAKiO,OAASA,EACdjO,KAAKqX,MAAQA,EACbrX,KAAK4W,WAAa,IAAI3I,EAAOiV,sBAAsBljB,MACnDA,KAAK0jB,gBAAkB,IAAI9E,EAAgB5e,KAAMA,KAAK2jB,YACtD3jB,KAAK4jB,cAAgB,IAAIvE,EAAcrf,KAAMA,KAAK4W,YAClD5W,KAAK6jB,eAAiB,IAAIrD,EAAexgB,KAAMA,MAC/CA,KAAK8jB,eAAiB,IAAIrC,EAAezhB,KAAMA,MAC/C,IACIA,KAAK4W,WAAWmN,aAChB/jB,KAAKiX,iBAAiB,aAC1B,CACA,MAAOjN,GACHhK,KAAKiR,YAAYjH,EAAO,0BAC5B,CACJ,CACAjK,UACIC,KAAK0jB,gBAAgBpT,QACrBtQ,KAAK4jB,cAActT,QACnBtQ,KAAK6jB,eAAevT,QACpBtQ,KAAK8jB,eAAexT,QACpB,IACItQ,KAAK4W,WAAW7W,UAChBC,KAAKiX,iBAAiB,UAC1B,CACA,MAAOjN,GACHhK,KAAKiR,YAAYjH,EAAO,wBAC5B,CACJ,CACAiO,UACIjY,KAAK8jB,eAAe7L,SACxB,CACAvJ,aACI,IACI1O,KAAK4W,WAAWlI,aAChB1O,KAAKiX,iBAAiB,aAC1B,CACA,MAAOjN,GACHhK,KAAKiR,YAAYjH,EAAO,2BAC5B,CACAhK,KAAK8jB,eAAerT,OACpBzQ,KAAK6jB,eAAepT,OACpBzQ,KAAK4jB,cAAcnT,OACnBzQ,KAAK0jB,gBAAgBjT,MACzB,CACI1P,kBACA,OAAOf,KAAKiO,OAAOlN,WACvB,CACIqS,iBACA,OAAOpT,KAAKiO,OAAOmF,UACvB,CACIJ,aACA,OAAOhT,KAAKe,YAAYiS,MAC5B,CACI2Q,iBACA,OAAO3jB,KAAKe,YAAY4iB,UAC5B,CACIjd,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACIsd,oBACA,OAAOhkB,KAAK0G,QAAQsd,aACxB,CACA/S,YAAYjH,EAAOC,EAASiH,EAAS,CAAC,GAClC,MAAM,WAAEkC,EAAU,WAAEwD,EAAU,QAAElQ,GAAY1G,KAC5CkR,EAASnD,OAAOoB,OAAO,CAAEiE,aAAYwD,aAAYlQ,WAAWwK,GAC5DlR,KAAKe,YAAYkQ,YAAYjH,EAAO,SAASC,IAAWiH,EAC5D,CACA4P,gBAAgBpa,EAAS5B,GACrB9E,KAAKikB,uBAAuB,GAAGnf,mBAAuB4B,EAC1D,CACAqa,mBAAmBra,EAAS5B,GACxB9E,KAAKikB,uBAAuB,GAAGnf,sBAA0B4B,EAC7D,CACAgc,gBAAgBP,EAAQzb,EAAS5B,GAC7B9E,KAAKikB,uBAAuB,GAAGzR,EAAkB1N,oBAAwBqd,EAAQzb,EACrF,CACAic,mBAAmBR,EAAQzb,EAAS5B,GAChC9E,KAAKikB,uBAAuB,GAAGzR,EAAkB1N,uBAA2Bqd,EAAQzb,EACxF,CACAud,uBAAuB5Q,KAAe6Q,GAClC,MAAMtN,EAAa5W,KAAK4W,WACa,mBAA1BA,EAAWvD,IAClBuD,EAAWvD,MAAe6Q,EAElC,EA4CJ,MAAMC,EACyC,mBAAhCpW,OAAOqW,sBACNC,GAAW,IAAItW,OAAOuW,oBAAoBD,MAAYtW,OAAOqW,sBAAsBC,IAGpFtW,OAAOuW,oBAGhBC,EAAS,MACX,SAASC,EAAkBpW,GACvB,SAASqW,IACL,OAAOC,QAAQC,UAAUvW,EAAawW,qBAC1C,CAKA,OAJAH,EAASvP,UAAYnH,OAAOpE,OAAOyE,EAAY8G,UAAW,CACtD9G,YAAa,CAAEzJ,MAAO8f,KAE1BC,QAAQG,eAAeJ,EAAUrW,GAC1BqW,CACX,CASA,IAEI,OAVJ,WACI,MAGMK,EAAIN,GAHA,WACNxkB,KAAK0V,EAAErG,KAAKrP,KAChB,IAEA8kB,EAAE5P,UAAUQ,EAAI,WAAc,EACvB,IAAIoP,CACf,CAEIC,GACOP,CACX,CACA,MAAOxa,GACH,OAAQoE,GAAgB,cAAuBA,GAEnD,CACH,EA3Bc,GAoCf,MAAM4W,EACF5W,YAAYrN,EAAaqgB,GACrBphB,KAAKe,YAAcA,EACnBf,KAAKohB,WAVb,SAAyBA,GACrB,MAAO,CACHhO,WAAYgO,EAAWhO,WACvB8P,uBAjFO9U,EAiFsBgT,EAAW8B,sBA9EhD,SAAgB9U,EAAa6W,GACzB,MAAMC,EAAoBX,EAAOnW,GAC3B+W,EAeV,SAA6BjQ,EAAW+P,GACpC,OAAOd,EAAWc,GAAYtU,QAAO,CAACwU,EAAkBvT,KACpD,MAAMmB,EAOd,SAA+BmC,EAAW+P,EAAYrT,GAClD,MAAMwT,EAAsBrX,OAAOsX,yBAAyBnQ,EAAWtD,GAEvE,IADwBwT,KAAuB,UAAWA,GACpC,CAClB,MAAMrS,EAAahF,OAAOsX,yBAAyBJ,EAAYrT,GAAKjN,MAKpE,OAJIygB,IACArS,EAAWvB,IAAM4T,EAAoB5T,KAAOuB,EAAWvB,IACvDuB,EAAWrB,IAAM0T,EAAoB1T,KAAOqB,EAAWrB,KAEpDqB,CACX,CACJ,CAlB2BuS,CAAsBpQ,EAAW+P,EAAYrT,GAIhE,OAHImB,GACAhF,OAAOoB,OAAOgW,EAAkB,CAAE,CAACvT,GAAMmB,IAEtCoS,CAAgB,GACxB,CAAC,EACR,CAvB6BI,CAAoBnX,EAAY8G,UAAW+P,GAEpE,OADAlX,OAAOyX,iBAAiBN,EAAkBhQ,UAAWiQ,GAC9CD,CACX,CAPWO,CAAOrX,EAQlB,SAA8BA,GAE1B,OADkB4S,EAAiC5S,EAAa,aAC/CuC,QAAO,CAAC+U,EAAmBC,KACxC,MAAMV,EAAaU,EAASvX,GAC5B,IAAK,MAAMwD,KAAOqT,EAAY,CAC1B,MAAMlS,EAAa2S,EAAkB9T,IAAQ,CAAC,EAC9C8T,EAAkB9T,GAAO7D,OAAOoB,OAAO4D,EAAYkS,EAAWrT,GAClE,CACA,OAAO8T,CAAiB,GACzB,CAAC,EACR,CAlB+BE,CAAqBxX,MADpD,IAAeA,CAmFf,CAK0ByX,CAAgBzE,GAClCphB,KAAK8lB,gBAAkB,IAAI5H,QAC3Ble,KAAK+lB,kBAAoB,IAAItX,GACjC,CACI2E,iBACA,OAAOpT,KAAKohB,WAAWhO,UAC3B,CACI8P,4BACA,OAAOljB,KAAKohB,WAAW8B,qBAC3B,CACIG,eACA,OAAO3T,MAAMC,KAAK3P,KAAK+lB,kBAC3B,CACAC,uBAAuB3O,GACnB,MAAMf,EAAUtW,KAAKimB,qBAAqB5O,GAC1CrX,KAAK+lB,kBAAkBhiB,IAAIuS,GAC3BA,EAAQvW,SACZ,CACAmmB,0BAA0B7O,GACtB,MAAMf,EAAUtW,KAAK8lB,gBAAgBtU,IAAI6F,GACrCf,IACAtW,KAAK+lB,kBAAkBhX,OAAOuH,GAC9BA,EAAQ5H,aAEhB,CACAuX,qBAAqB5O,GACjB,IAAIf,EAAUtW,KAAK8lB,gBAAgBtU,IAAI6F,GAKvC,OAJKf,IACDA,EAAU,IAAIkN,EAAQxjB,KAAMqX,GAC5BrX,KAAK8lB,gBAAgBpU,IAAI2F,EAAOf,IAE7BA,CACX,EAGJ,MAAM6P,EACF/X,YAAYiJ,GACRrX,KAAKqX,MAAQA,CACjB,CACAiB,IAAIxT,GACA,OAAO9E,KAAKoF,KAAKkT,IAAItY,KAAKomB,WAAWthB,GACzC,CACA0M,IAAI1M,GACA,OAAO9E,KAAKqmB,OAAOvhB,GAAM,EAC7B,CACAuhB,OAAOvhB,GAEH,OADoB9E,KAAKoF,KAAKoM,IAAIxR,KAAKomB,WAAWthB,KAAU,IA70CnD6O,MAAM,YAAc,EA+0CjC,CACA2S,iBAAiBxhB,GACb,OAAO9E,KAAKoF,KAAKmhB,uBAAuBvmB,KAAKomB,WAAWthB,GAC5D,CACAshB,WAAWthB,GACP,MAAO,GAAGA,SACd,CACIM,WACA,OAAOpF,KAAKqX,MAAMjS,IACtB,EAGJ,MAAMohB,EACFpY,YAAYiJ,GACRrX,KAAKqX,MAAQA,CACjB,CACI3Q,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACI0M,iBACA,OAAOpT,KAAKqX,MAAMjE,UACtB,CACA5B,IAAII,GACA,MAAM9M,EAAO9E,KAAKumB,uBAAuB3U,GACzC,OAAO5R,KAAK0G,QAAQqP,aAAajR,EACrC,CACA4M,IAAIE,EAAKjN,GACL,MAAMG,EAAO9E,KAAKumB,uBAAuB3U,GAEzC,OADA5R,KAAK0G,QAAQ+f,aAAa3hB,EAAMH,GACzB3E,KAAKwR,IAAII,EACpB,CACA0G,IAAI1G,GACA,MAAM9M,EAAO9E,KAAKumB,uBAAuB3U,GACzC,OAAO5R,KAAK0G,QAAQyT,aAAarV,EACrC,CACAiK,OAAO6C,GACH,GAAI5R,KAAKsY,IAAI1G,GAAM,CACf,MAAM9M,EAAO9E,KAAKumB,uBAAuB3U,GAEzC,OADA5R,KAAK0G,QAAQggB,gBAAgB5hB,IACtB,CACX,CAEI,OAAO,CAEf,CACAyhB,uBAAuB3U,GACnB,MAAO,QAAQ5R,KAAKoT,cAAcR,EAAUhB,IAChD,EAGJ,MAAM+U,EACFvY,YAAYwY,GACR5mB,KAAK6mB,mBAAqB,IAAI3I,QAC9Ble,KAAK4mB,OAASA,CAClB,CACA1a,KAAKmY,EAAQzS,EAAK3H,GACd,IAAI6c,EAAa9mB,KAAK6mB,mBAAmBrV,IAAI6S,GACxCyC,IACDA,EAAa,IAAIrY,IACjBzO,KAAK6mB,mBAAmBnV,IAAI2S,EAAQyC,IAEnCA,EAAWxO,IAAI1G,KAChBkV,EAAW/iB,IAAI6N,GACf5R,KAAK4mB,OAAO1a,KAAKjC,EAASoa,GAElC,EAGJ,SAAS0C,EAA4BnO,EAAerF,GAChD,MAAO,IAAIqF,OAAmBrF,KAClC,CAEA,MAAMyT,EACF5Y,YAAYiJ,GACRrX,KAAKqX,MAAQA,CACjB,CACI3Q,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACI0M,iBACA,OAAOpT,KAAKqX,MAAMjE,UACtB,CACIJ,aACA,OAAOhT,KAAKqX,MAAMrE,MACtB,CACAsF,IAAI2O,GACA,OAAgC,MAAzBjnB,KAAKujB,KAAK0D,EACrB,CACA1D,QAAQ2D,GACJ,OAAOA,EAAYvW,QAAO,CAAC9L,EAAQoiB,IAAepiB,GAAU7E,KAAKmnB,WAAWF,IAAejnB,KAAKonB,iBAAiBH,SAAalH,EAClI,CACAsH,WAAWH,GACP,OAAOA,EAAYvW,QAAO,CAAC2W,EAASL,IAAe,IAC5CK,KACAtnB,KAAKunB,eAAeN,MACpBjnB,KAAKwnB,qBAAqBP,KAC9B,GACP,CACAE,WAAWF,GACP,MAAM/M,EAAWla,KAAKynB,yBAAyBR,GAC/C,OAAOjnB,KAAKqX,MAAMqQ,YAAYxN,EAClC,CACAqN,eAAeN,GACX,MAAM/M,EAAWla,KAAKynB,yBAAyBR,GAC/C,OAAOjnB,KAAKqX,MAAMsQ,gBAAgBzN,EACtC,CACAuN,yBAAyBR,GAErB,OAAOF,EADe/mB,KAAKgT,OAAO4U,wBAAwB5nB,KAAKoT,YACb6T,EACtD,CACAG,iBAAiBH,GACb,MAAM/M,EAAWla,KAAK6nB,+BAA+BZ,GACrD,OAAOjnB,KAAK8nB,UAAU9nB,KAAKqX,MAAMqQ,YAAYxN,GAAW+M,EAC5D,CACAO,qBAAqBP,GACjB,MAAM/M,EAAWla,KAAK6nB,+BAA+BZ,GACrD,OAAOjnB,KAAKqX,MAAMsQ,gBAAgBzN,GAAU5M,KAAK5G,GAAY1G,KAAK8nB,UAAUphB,EAASugB,IACzF,CACAY,+BAA+BZ,GAC3B,MAAMc,EAAmB,GAAG/nB,KAAKoT,cAAc6T,IAC/C,OAAOF,EAA4B/mB,KAAKgT,OAAOgV,gBAAiBD,EACpE,CACAD,UAAUphB,EAASugB,GACf,GAAIvgB,EAAS,CACT,MAAM,WAAE0M,GAAepT,KACjB4Y,EAAgB5Y,KAAKgT,OAAOgV,gBAC5BC,EAAuBjoB,KAAKgT,OAAO4U,wBAAwBxU,GACjEpT,KAAKkoB,MAAMhc,KAAKxF,EAAS,UAAUugB,IAAc,kBAAkBrO,MAAkBxF,KAAc6T,WAAoBgB,MAAyBhB,WACrIrO,iFACf,CACA,OAAOlS,CACX,CACIwhB,YACA,OAAOloB,KAAKqX,MAAM6Q,KACtB,EAGJ,MAAMC,EACF/Z,YAAYiJ,EAAO+Q,GACfpoB,KAAKqX,MAAQA,EACbrX,KAAKooB,kBAAoBA,CAC7B,CACI1hB,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACI0M,iBACA,OAAOpT,KAAKqX,MAAMjE,UACtB,CACIJ,aACA,OAAOhT,KAAKqX,MAAMrE,MACtB,CACAsF,IAAIwJ,GACA,OAAgC,MAAzB9hB,KAAKujB,KAAKzB,EACrB,CACAyB,QAAQ8E,GACJ,OAAOA,EAAY1X,QAAO,CAACwR,EAAQL,IAAeK,GAAUniB,KAAKsoB,WAAWxG,SAAa/B,EAC7F,CACAsH,WAAWgB,GACP,OAAOA,EAAY1X,QAAO,CAACiS,EAASd,IAAe,IAAIc,KAAY5iB,KAAKuoB,eAAezG,KAAc,GACzG,CACAe,yBAAyBf,GACrB,MAAMlJ,EAAgB5Y,KAAKgT,OAAOwV,wBAAwBxoB,KAAKoT,WAAY0O,GAC3E,OAAO9hB,KAAKooB,kBAAkBrS,aAAa6C,EAC/C,CACA0P,WAAWxG,GACP,MAAM5H,EAAWla,KAAK6iB,yBAAyBf,GAC/C,GAAI5H,EACA,OAAOla,KAAK0nB,YAAYxN,EAAU4H,EAC1C,CACAyG,eAAezG,GACX,MAAM5H,EAAWla,KAAK6iB,yBAAyBf,GAC/C,OAAO5H,EAAWla,KAAK2nB,gBAAgBzN,EAAU4H,GAAc,EACnE,CACA4F,YAAYxN,EAAU4H,GAElB,OADiB9hB,KAAKqX,MAAMoR,cAAcvO,GAC1BjF,QAAQvO,GAAY1G,KAAK0oB,eAAehiB,EAASwT,EAAU4H,KAAa,EAC5F,CACA6F,gBAAgBzN,EAAU4H,GAEtB,OADiB9hB,KAAKqX,MAAMoR,cAAcvO,GAC1BjF,QAAQvO,GAAY1G,KAAK0oB,eAAehiB,EAASwT,EAAU4H,IAC/E,CACA4G,eAAehiB,EAASwT,EAAU4H,GAC9B,MAAMW,EAAsB/b,EAAQqP,aAAa/V,KAAKqX,MAAMrE,OAAOyP,sBAAwB,GAC3F,OAAO/b,EAAQ+M,QAAQyG,IAAauI,EAAoB3O,MAAM,KAAKF,SAASkO,EAChF,EAGJ,MAAM6G,EACFva,YAAY4E,EAAQtM,EAAS0M,EAAYwT,GACrC5mB,KAAKsnB,QAAU,IAAIN,EAAUhnB,MAC7BA,KAAK4oB,QAAU,IAAIzC,EAASnmB,MAC5BA,KAAKoF,KAAO,IAAIohB,EAAQxmB,MACxBA,KAAKsX,gBAAmB5Q,GACbA,EAAQlG,QAAQR,KAAK6oB,sBAAwB7oB,KAAK0G,QAE7D1G,KAAKgT,OAASA,EACdhT,KAAK0G,QAAUA,EACf1G,KAAKoT,WAAaA,EAClBpT,KAAKkoB,MAAQ,IAAIvB,EAAMC,GACvB5mB,KAAK4iB,QAAU,IAAIuF,EAAUnoB,KAAK8oB,cAAepiB,EACrD,CACAghB,YAAYxN,GACR,OAAOla,KAAK0G,QAAQ+M,QAAQyG,GAAYla,KAAK0G,QAAU1G,KAAKyoB,cAAcvO,GAAUqJ,KAAKvjB,KAAKsX,gBAClG,CACAqQ,gBAAgBzN,GACZ,MAAO,IACCla,KAAK0G,QAAQ+M,QAAQyG,GAAY,CAACla,KAAK0G,SAAW,MACnD1G,KAAKyoB,cAAcvO,GAAUjF,OAAOjV,KAAKsX,iBAEpD,CACAmR,cAAcvO,GACV,OAAOxK,MAAMC,KAAK3P,KAAK0G,QAAQvG,iBAAiB+Z,GACpD,CACI2O,yBACA,OAAO9B,EAA4B/mB,KAAKgT,OAAOyP,oBAAqBziB,KAAKoT,WAC7E,CACI2V,sBACA,OAAO/oB,KAAK0G,UAAYxG,SAAS8oB,eACrC,CACIF,oBACA,OAAO9oB,KAAK+oB,gBACN/oB,KACA,IAAI2oB,EAAM3oB,KAAKgT,OAAQ9S,SAAS8oB,gBAAiBhpB,KAAKoT,WAAYpT,KAAKkoB,MAAMtB,OACvF,EAGJ,MAAMqC,EACF7a,YAAY1H,EAASsM,EAAQwE,GACzBxX,KAAK0G,QAAUA,EACf1G,KAAKgT,OAASA,EACdhT,KAAKwX,SAAWA,EAChBxX,KAAK8e,kBAAoB,IAAIf,EAAkB/d,KAAK0G,QAAS1G,KAAKyiB,oBAAqBziB,MACvFA,KAAKkpB,4BAA8B,IAAIhL,QACvCle,KAAKmpB,qBAAuB,IAAIjL,OACpC,CACA5N,QACItQ,KAAK8e,kBAAkBxO,OAC3B,CACAG,OACIzQ,KAAK8e,kBAAkBrO,MAC3B,CACIgS,0BACA,OAAOziB,KAAKgT,OAAOyP,mBACvB,CACA9D,mBAAmBpL,GACf,MAAM,QAAE7M,EAASuE,QAASmI,GAAeG,EACnC6V,EAAqBppB,KAAKqpB,kCAAkC3iB,GAClE,IAAI2Q,EAAQ+R,EAAmB5X,IAAI4B,GAKnC,OAJKiE,IACDA,EAAQrX,KAAKwX,SAAS8R,mCAAmC5iB,EAAS0M,GAClEgW,EAAmB1X,IAAI0B,EAAYiE,IAEhCA,CACX,CACAiH,oBAAoB5X,EAAS/B,GACzB,MAAM4kB,GAAkBvpB,KAAKmpB,qBAAqB3X,IAAI7M,IAAU,GAAK,EACrE3E,KAAKmpB,qBAAqBzX,IAAI/M,EAAO4kB,GACf,GAAlBA,GACAvpB,KAAKwX,SAASgS,eAAe7kB,EAErC,CACA4Z,sBAAsB7X,EAAS/B,GAC3B,MAAM4kB,EAAiBvpB,KAAKmpB,qBAAqB3X,IAAI7M,GACjD4kB,IACAvpB,KAAKmpB,qBAAqBzX,IAAI/M,EAAO4kB,EAAiB,GAChC,GAAlBA,GACAvpB,KAAKwX,SAASiS,kBAAkB9kB,GAG5C,CACA0kB,kCAAkC3iB,GAC9B,IAAI0iB,EAAqBppB,KAAKkpB,4BAA4B1X,IAAI9K,GAK9D,OAJK0iB,IACDA,EAAqB,IAAIhZ,IACzBpQ,KAAKkpB,4BAA4BxX,IAAIhL,EAAS0iB,IAE3CA,CACX,EAGJ,MAAMM,EACFtb,YAAYrN,GACRf,KAAKe,YAAcA,EACnBf,KAAK2pB,cAAgB,IAAIV,EAAcjpB,KAAK0G,QAAS1G,KAAKgT,OAAQhT,MAClEA,KAAKopB,mBAAqB,IAAI5O,EAC9Bxa,KAAK4pB,oBAAsB,IAAIxZ,GACnC,CACI1J,cACA,OAAO1G,KAAKe,YAAY2F,OAC5B,CACIsM,aACA,OAAOhT,KAAKe,YAAYiS,MAC5B,CACI4T,aACA,OAAO5mB,KAAKe,YAAY6lB,MAC5B,CACInE,0BACA,OAAOziB,KAAKgT,OAAOyP,mBACvB,CACIQ,cACA,OAAOvT,MAAMC,KAAK3P,KAAK4pB,oBAAoBlZ,SAC/C,CACI2S,eACA,OAAOrjB,KAAKijB,QAAQtS,QAAO,CAAC0S,EAAUpV,IAAWoV,EAASxS,OAAO5C,EAAOoV,WAAW,GACvF,CACA/S,QACItQ,KAAK2pB,cAAcrZ,OACvB,CACAG,OACIzQ,KAAK2pB,cAAclZ,MACvB,CACAoZ,eAAezI,GACXphB,KAAK8pB,iBAAiB1I,EAAWhO,YACjC,MAAMnF,EAAS,IAAI+W,EAAOhlB,KAAKe,YAAaqgB,GAC5CphB,KAAK+pB,cAAc9b,GACnB,MAAM+b,EAAY5I,EAAW8B,sBAAsB8G,UAC/CA,GACAA,EAAU5I,EAAWhO,WAAYpT,KAAKe,YAE9C,CACA+oB,iBAAiB1W,GACb,MAAMnF,EAASjO,KAAK4pB,oBAAoBpY,IAAI4B,GACxCnF,GACAjO,KAAKiqB,iBAAiBhc,EAE9B,CACAic,kCAAkCxjB,EAAS0M,GACvC,MAAMnF,EAASjO,KAAK4pB,oBAAoBpY,IAAI4B,GAC5C,GAAInF,EACA,OAAOA,EAAOoV,SAASE,MAAMjN,GAAYA,EAAQ5P,SAAWA,GAEpE,CACAuK,YAAYjH,EAAOC,EAASiH,GACxBlR,KAAKe,YAAYkQ,YAAYjH,EAAOC,EAASiH,EACjD,CACAoY,mCAAmC5iB,EAAS0M,GACxC,OAAO,IAAIuV,EAAM3oB,KAAKgT,OAAQtM,EAAS0M,EAAYpT,KAAK4mB,OAC5D,CACA4C,eAAenS,GACXrX,KAAKopB,mBAAmBrlB,IAAIsT,EAAMjE,WAAYiE,GAC9C,MAAMpJ,EAASjO,KAAK4pB,oBAAoBpY,IAAI6F,EAAMjE,YAC9CnF,GACAA,EAAO+X,uBAAuB3O,EAEtC,CACAoS,kBAAkBpS,GACdrX,KAAKopB,mBAAmBra,OAAOsI,EAAMjE,WAAYiE,GACjD,MAAMpJ,EAASjO,KAAK4pB,oBAAoBpY,IAAI6F,EAAMjE,YAC9CnF,GACAA,EAAOiY,0BAA0B7O,EAEzC,CACA0S,cAAc9b,GACVjO,KAAK4pB,oBAAoBlY,IAAIzD,EAAOmF,WAAYnF,GACjCjO,KAAKopB,mBAAmBrO,gBAAgB9M,EAAOmF,YACvD9O,SAAS+S,GAAUpJ,EAAO+X,uBAAuB3O,IAC5D,CACA4S,iBAAiBhc,GACbjO,KAAK4pB,oBAAoB7a,OAAOd,EAAOmF,YACxBpT,KAAKopB,mBAAmBrO,gBAAgB9M,EAAOmF,YACvD9O,SAAS+S,GAAUpJ,EAAOiY,0BAA0B7O,IAC/D,EAGJ,MAAM8S,EAAgB,CAClB1H,oBAAqB,kBACrB1D,gBAAiB,cACjBiJ,gBAAiB,cACjBJ,wBAA0BxU,GAAe,QAAQA,WACjDoV,wBAAyB,CAACpV,EAAY+O,IAAW,QAAQ/O,KAAc+O,WACvE/M,YAAarH,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAEib,MAAO,QAASC,IAAK,MAAOC,IAAK,SAAUC,MAAO,IAAKC,GAAI,UAAWC,KAAM,YAAa5a,KAAM,YAAaC,MAAO,aAAc4a,KAAM,OAAQC,IAAK,OAASC,EAAkB,6BAA6B9W,MAAM,IAAIxG,KAAKud,GAAM,CAACA,EAAGA,OAAOD,EAAkB,aAAa9W,MAAM,IAAIxG,KAAKwd,GAAM,CAACA,EAAGA,QAEnV,SAASF,EAAkBG,GACvB,OAAOA,EAAMpa,QAAO,CAACqa,GAAOC,EAAGC,KAAQnd,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAC,EAAG6b,GAAO,CAAE,CAACC,GAAIC,KAAO,CAAC,EACjG,CAEA,MAAMC,EACF/c,YAAY1H,EAAUxG,SAAS8oB,gBAAiBhW,EAASmX,GACrDnqB,KAAK4mB,OAAS5hB,QACdhF,KAAKgB,OAAQ,EACbhB,KAAKiX,iBAAmB,CAAC7D,EAAYqQ,EAAcvS,EAAS,CAAC,KACrDlR,KAAKgB,OACLhB,KAAKorB,oBAAoBhY,EAAYqQ,EAAcvS,EACvD,EAEJlR,KAAK0G,QAAUA,EACf1G,KAAKgT,OAASA,EACdhT,KAAK2jB,WAAa,IAAIzT,EAAWlQ,MACjCA,KAAKgjB,OAAS,IAAI0G,EAAO1pB,MACzBA,KAAK6W,wBAA0B9I,OAAOoB,OAAO,CAAC,EAAG4C,EACrD,CACA5Q,aAAauF,EAASsM,GAClB,MAAMjS,EAAc,IAAIf,KAAK0G,EAASsM,GAEtC,OADAjS,EAAYuP,QACLvP,CACX,CACAsqB,oBAmDO,IAAIC,SAAStd,IACW,WAAvB9N,SAASqrB,WACTrrB,SAAS6J,iBAAiB,oBAAoB,IAAMiE,MAGpDA,GACJ,IAvDAhO,KAAKiX,iBAAiB,cAAe,YACrCjX,KAAK2jB,WAAWrT,QAChBtQ,KAAKgjB,OAAO1S,QACZtQ,KAAKiX,iBAAiB,cAAe,QACzC,CACAxG,OACIzQ,KAAKiX,iBAAiB,cAAe,YACrCjX,KAAK2jB,WAAWlT,OAChBzQ,KAAKgjB,OAAOvS,OACZzQ,KAAKiX,iBAAiB,cAAe,OACzC,CACAuU,SAASpY,EAAY8P,GACjBljB,KAAKyrB,KAAK,CAAErY,aAAY8P,yBAC5B,CACAwI,qBAAqB5mB,EAAMmQ,GACvBjV,KAAK6W,wBAAwB/R,GAAQmQ,CACzC,CACAwW,KAAKE,KAASC,IACUlc,MAAM2R,QAAQsK,GAAQA,EAAO,CAACA,KAASC,IAC/CtnB,SAAS8c,IACbA,EAAW8B,sBAAsB2I,YACjC7rB,KAAKgjB,OAAO6G,eAAezI,EAC/B,GAER,CACA0K,OAAOH,KAASC,IACQlc,MAAM2R,QAAQsK,GAAQA,EAAO,CAACA,KAASC,IAC/CtnB,SAAS8O,GAAepT,KAAKgjB,OAAO8G,iBAAiB1W,IACrE,CACI2Y,kBACA,OAAO/rB,KAAKgjB,OAAOK,SAAS/V,KAAKgJ,GAAYA,EAAQM,YACzD,CACA0M,qCAAqC5c,EAAS0M,GAC1C,MAAMkD,EAAUtW,KAAKgjB,OAAOkH,kCAAkCxjB,EAAS0M,GACvE,OAAOkD,EAAUA,EAAQM,WAAa,IAC1C,CACA3F,YAAYjH,EAAOC,EAASiH,GACxB,IAAI2P,EACJ7gB,KAAK4mB,OAAO5c,MAAM,iBAAkBC,EAASD,EAAOkH,GAC1B,QAAzB2P,EAAK5f,OAAO+qB,eAA4B,IAAPnL,GAAyBA,EAAGxR,KAAKpO,OAAQgJ,EAAS,GAAI,EAAG,EAAGD,EAClG,CACAohB,oBAAoBhY,EAAYqQ,EAAcvS,EAAS,CAAC,GACpDA,EAASnD,OAAOoB,OAAO,CAAEpO,YAAaf,MAAQkR,GAC9ClR,KAAK4mB,OAAOqF,eAAe,GAAG7Y,MAAeqQ,KAC7CzjB,KAAK4mB,OAAO3hB,IAAI,WAAY8I,OAAOoB,OAAO,CAAC,EAAG+B,IAC9ClR,KAAK4mB,OAAOsF,UAChB,EAgMJ,SAASC,GAA0B5Y,EAAO6Y,GAAiBxV,GACvD,OAoEJ,SAAkDyV,GAC9C,MAAMza,EAAM,GAAGgB,EAAUyZ,EAAQ9Y,eAC3B9N,EAzBV,SAAkC4mB,GAC9B,MAAMC,EAZV,SAA8BD,GAC1B,MAAMC,EAAiBC,EAAuBF,EAAQG,WAAW/mB,MACjE,IAAK6mB,EACD,OACJ,MAAMG,EAAmBC,EAAsBL,EAAQG,WAAWG,SAClE,GAAIL,IAAmBG,EAAkB,CAErC,MAAM,IAAI7e,MAAM,uDADKye,EAAQzV,WAAa,GAAGyV,EAAQzV,cAAcyV,EAAQ9Y,QAAU8Y,EAAQ9Y,uCACwB+Y,sCAAmDD,EAAQG,WAAWG,wBAAwBF,MACvN,CACA,OAAOH,CACX,CAE2BM,CAAqB,CACxChW,WAAYyV,EAAQzV,WACpBrD,MAAO8Y,EAAQ9Y,MACfiZ,WAAYH,EAAQD,iBAElBS,EAAuBH,EAAsBL,EAAQD,gBACrDU,EAAmBP,EAAuBF,EAAQD,gBAClD3mB,EAAO6mB,GAAkBO,GAAwBC,EACvD,GAAIrnB,EACA,OAAOA,EAEX,MAAM,IAAImI,MAAM,uBADKye,EAAQzV,WAAa,GAAGyV,EAAQzV,cAAcyV,EAAQD,iBAAmBC,EAAQ9Y,eACzC8Y,EAAQ9Y,eACzE,CAYiBwZ,CAAyBV,GACtC,MAAO,CACH5mB,OACAmM,MACA9M,KAAMsN,EAASR,GACXgO,mBACA,OAjBZ,SAAmCwM,GAC/B,MAAMY,EAAWT,EAAuBH,GACxC,GAAIY,EACA,OAAOC,EAAoBD,GAC/B,MAAMpN,EAAewM,EAAeO,QACpC,YAAqB5M,IAAjBH,EACOA,EACJwM,CACX,CASmBc,CAA0Bb,EAAQD,eAC7C,EACIe,4BACA,YAAyDpN,IAAlD2M,EAAsBL,EAAQD,eACzC,EACAhM,OAAQgN,EAAQ3nB,GAChBka,OAAQ0N,EAAQ5nB,IAAS4nB,EAAQV,QAEzC,CApFWW,CAAyC,CAC5C1W,aACArD,QACA6Y,kBAER,CACA,SAASG,EAAuBS,GAC5B,OAAQA,GACJ,KAAKtd,MACD,MAAO,QACX,KAAK6d,QACD,MAAO,UACX,KAAKC,OACD,MAAO,SACX,KAAKzf,OACD,MAAO,SACX,KAAK0f,OACD,MAAO,SAEnB,CACA,SAASf,EAAsB9M,GAC3B,cAAeA,GACX,IAAK,UACD,MAAO,UACX,IAAK,SACD,MAAO,SACX,IAAK,SACD,MAAO,SAEf,OAAIlQ,MAAM2R,QAAQzB,GACP,QAC0C,oBAAjD7R,OAAOmH,UAAUhB,SAAS7E,KAAKuQ,GACxB,cADX,CAEJ,CAoDA,MAAMqN,EAAsB,CACpBlC,YACA,MAAO,EACX,EACA2C,SAAS,EACTC,OAAQ,EACJtJ,aACA,MAAO,CAAC,CACZ,EACAuJ,OAAQ,IAENR,EAAU,CACZrC,MAAMpmB,GACF,MAAMomB,EAAQ7U,KAAKC,MAAMxR,GACzB,IAAK+K,MAAM2R,QAAQ0J,GACf,MAAM,IAAI1K,UAAU,yDAAyD1b,eAAmB+nB,EAAsB3B,OAE1H,OAAOA,CACX,EACA2C,QAAQ/oB,KACc,KAATA,GAA+C,SAA/B8oB,OAAO9oB,GAAOkO,eAE3C8a,OAAOhpB,GACI6oB,OAAO7oB,GAElB0f,OAAO1f,GACH,MAAM0f,EAASnO,KAAKC,MAAMxR,GAC1B,GAAe,OAAX0f,GAAoC,iBAAVA,GAAsB3U,MAAM2R,QAAQgD,GAC9D,MAAM,IAAIhE,UAAU,0DAA0D1b,eAAmB+nB,EAAsBrI,OAE3H,OAAOA,CACX,EACAuJ,OAAOjpB,GACIA,GAGT0oB,EAAU,CACZV,QAOJ,SAAqBhoB,GACjB,MAAO,GAAGA,GACd,EARIomB,MAAO8C,EACPxJ,OAAQwJ,GAEZ,SAASA,EAAUlpB,GACf,OAAOuR,KAAK4X,UAAUnpB,EAC1B,CAKA,MAAMopB,EACF3f,YAAYkI,GACRtW,KAAKsW,QAAUA,CACnB,CACWuV,wBACP,OAAO,CACX,CACA1qB,iBAAiB6sB,EAAaC,GAE9B,CACIltB,kBACA,OAAOf,KAAKsW,QAAQvV,WACxB,CACIsW,YACA,OAAOrX,KAAKsW,QAAQe,KACxB,CACI3Q,cACA,OAAO1G,KAAKqX,MAAM3Q,OACtB,CACI0M,iBACA,OAAOpT,KAAKqX,MAAMjE,UACtB,CACIkU,cACA,OAAOtnB,KAAKqX,MAAMiQ,OACtB,CACI1E,cACA,OAAO5iB,KAAKqX,MAAMuL,OACtB,CACIgG,cACA,OAAO5oB,KAAKqX,MAAMuR,OACtB,CACIxjB,WACA,OAAOpF,KAAKqX,MAAMjS,IACtB,CACA2e,aACA,CACAhkB,UACA,CACA2O,aACA,CACAwf,SAAS5f,GAAW,OAAEzJ,EAAS7E,KAAK0G,QAAO,OAAEwK,EAAS,CAAC,EAAC,OAAEid,EAASnuB,KAAKoT,WAAU,QAAEgb,GAAU,EAAI,WAAEC,GAAa,GAAS,CAAC,GACvH,MACMhuB,EAAQ,IAAIiuB,YADLH,EAAS,GAAGA,KAAU7f,IAAcA,EACb,CAAE4C,SAAQkd,UAASC,eAEvD,OADAxpB,EAAO0pB,cAAcluB,GACdA,CACX,EAEJ0tB,EAAWS,UAAY,CAxWvB,SAAiCpgB,GAE7B,OADgB4S,EAAiC5S,EAAa,WAC/CuC,QAAO,CAACsU,EAAYwJ,KAC/B,OAAO1gB,OAAOoB,OAAO8V,EAIlB,CACH,CAAC,GAF6BrT,EAHgC6c,UAK7C,CACbjd,MACI,MAAM,QAAEoX,GAAY5oB,KACpB,GAAI4oB,EAAQtQ,IAAI1G,GACZ,OAAOgX,EAAQpX,IAAII,GAElB,CACD,MAAM0K,EAAYsM,EAAQtC,iBAAiB1U,GAC3C,MAAM,IAAIhE,MAAM,sBAAsB0O,KAC1C,CACJ,GAEJ,CAAC,GAAG1K,YAAe,CACfJ,MACI,OAAOxR,KAAK4oB,QAAQvC,OAAOzU,EAC/B,GAEJ,CAAC,MAAMa,EAAWb,WAAc,CAC5BJ,MACI,OAAOxR,KAAK4oB,QAAQtQ,IAAI1G,EAC5B,KAtBZ,IAAsCA,CAHiD,GAChF,CAAC,EACR,EA+FA,SAAkCxD,GAE9B,OADgB4S,EAAiC5S,EAAa,WAC/CuC,QAAO,CAACsU,EAAYyJ,KAC/B,OAAO3gB,OAAOoB,OAAO8V,EAIlB,CACH,CAAC,GAF8BngB,EAHgC4pB,WAK5C,CACfld,MACI,MAAM3M,EAAS7E,KAAKsnB,QAAQ/D,KAAKze,GACjC,GAAID,EACA,OAAOA,EAGP,MAAM,IAAI+I,MAAM,2BAA2B9I,WAAc9E,KAAKoT,yBAEtE,GAEJ,CAAC,GAAGtO,YAAgB,CAChB0M,MACI,OAAOxR,KAAKsnB,QAAQD,QAAQviB,EAChC,GAEJ,CAAC,MAAM2N,EAAW3N,YAAgB,CAC9B0M,MACI,OAAOxR,KAAKsnB,QAAQhP,IAAIxT,EAC5B,KArBZ,IAAuCA,CAHkD,GAClF,CAAC,EACR,EA2BA,SAAiCsJ,GAC7B,MAAMugB,EAl8BV,SAA0CvgB,EAAa6S,GAEnD,OADkBE,EAA2B/S,GAC5BuC,QAAO,CAACie,EAAOxgB,KAC5BwgB,EAAM/c,QAgBd,SAAiCzD,EAAa6S,GAC1C,MAAMG,EAAahT,EAAY6S,GAC/B,OAAOG,EAAarT,OAAOD,KAAKsT,GAAY9T,KAAKsE,GAAQ,CAACA,EAAKwP,EAAWxP,MAAS,EACvF,CAnBsBid,CAAwBzgB,EAAa6S,IAC5C2N,IACR,GACP,CA47BiCE,CAAiC1gB,EAAa,UACrE2gB,EAAwB,CAC1BvP,mBAAoB,CAChBhO,MACI,OAAOmd,EAAqBhe,QAAO,CAACrF,EAAQ0jB,KACxC,MAAMC,EAAkB9C,EAAyB6C,EAAqBhvB,KAAKoT,YACrEwF,EAAgB5Y,KAAKoF,KAAKmhB,uBAAuB0I,EAAgBrd,KACvE,OAAO7D,OAAOoB,OAAO7D,EAAQ,CAAE,CAACsN,GAAgBqW,GAAkB,GACnE,CAAC,EACR,IAGR,OAAON,EAAqBhe,QAAO,CAACsU,EAAY+J,IACrCjhB,OAAOoB,OAAO8V,EAG7B,SAA0C+J,EAAqBpY,GAC3D,MAAMwK,EAAa+K,EAAyB6C,OAJPE,IAK/B,IAAEtd,EAAG,KAAE9M,EAAMsb,OAAQ+O,EAAMxP,OAAQyP,GAAUhO,EACnD,MAAO,CACH,CAACtc,GAAO,CACJ0M,MACI,MAAM7M,EAAQ3E,KAAKoF,KAAKoM,IAAII,GAC5B,OAAc,OAAVjN,EACOwqB,EAAKxqB,GAGLyc,EAAWxB,YAE1B,EACAlO,IAAI/M,QACcob,IAAVpb,EACA3E,KAAKoF,KAAK2J,OAAO6C,GAGjB5R,KAAKoF,KAAKsM,IAAIE,EAAKwd,EAAMzqB,GAEjC,GAEJ,CAAC,MAAM8N,EAAW3N,MAAU,CACxB0M,MACI,OAAOxR,KAAKoF,KAAKkT,IAAI1G,IAAQwP,EAAW+L,qBAC5C,GAGZ,CAhCyC+B,CAAiCF,KACnED,EACP,EAnHA,SAAkC3gB,GAE9B,OADgB4S,EAAiC5S,EAAa,WAC/CuC,QAAO,CAACsU,EAAYoK,IACxBthB,OAAOoB,OAAO8V,EAG7B,SAAuCngB,GACnC,MAAMwqB,EAAgB9c,EAAkB1N,GACxC,MAAO,CACH,CAAC,GAAGwqB,WAAwB,CACxB9d,MACI,MAAM2Q,EAASniB,KAAK4iB,QAAQW,KAAKze,GACjC,GAAIqd,EAAQ,CACR,MAAMoN,EAAmBvvB,KAAKe,YAAYuiB,qCAAqCnB,EAAQrd,GACvF,GAAIyqB,EACA,OAAOA,EAGP,MAAM,IAAI3hB,MAAM,4BAA4B9I,uCAA0C9E,KAAKoT,yBAEnG,CACA,MAAM,IAAIxF,MAAM,2BAA2B9I,WAAc9E,KAAKoT,yBAClE,GAEJ,CAAC,GAAGkc,YAAyB,CACzB9d,MACI,MAAMoR,EAAU5iB,KAAK4iB,QAAQyE,QAAQviB,GACrC,OAAI8d,EAAQtF,OAAS,EACVsF,EACFtV,KAAK6U,IACN,MAAMvL,EAAa5W,KAAKe,YAAYuiB,qCAAqCnB,EAAQrd,GACjF,GAAI8R,EACA,OAAOA,EAGP5R,QAAQkH,KAAK,iEAAiEpH,WAAc9E,KAAKoT,cAAe+O,EACpH,IAEClN,QAAQ2B,GAAeA,IAEzB,EACX,GAEJ,CAAC,GAAG0Y,kBAA+B,CAC/B9d,MACI,MAAM2Q,EAASniB,KAAK4iB,QAAQW,KAAKze,GACjC,GAAIqd,EACA,OAAOA,EAGP,MAAM,IAAIvU,MAAM,2BAA2B9I,WAAc9E,KAAKoT,yBAEtE,GAEJ,CAAC,GAAGkc,mBAAgC,CAChC9d,MACI,OAAOxR,KAAK4iB,QAAQyE,QAAQviB,EAChC,GAEJ,CAAC,MAAM2N,EAAW6c,YAAyB,CACvC9d,MACI,OAAOxR,KAAK4iB,QAAQtK,IAAIxT,EAC5B,GAGZ,CA9DyC0qB,CAA8BH,KAChE,CAAC,EACR,GAwUAtB,EAAWzG,QAAU,GACrByG,EAAWnL,QAAU,GACrBmL,EAAWrd,OAAS,CAAC,C,iRCr2ErB,SACEkW,OAAQ1U,KAAKlN,QACbyqB,UAAWvd,KAAKud,WCYlB,GACExqB,OAAOyqB,GACD1vB,KAAK2vB,UACPD,EAAS7d,KAAK+d,KAAKC,OACnBC,EAASlJ,OAAO3hB,IAAI,mBAAoByqB,GAE5C,GCfIG,EAAM,KAAM,IAAID,MAAOG,UAEvBC,EAAeC,IAASJ,IAAQI,GAAQ,IAE9C,MAAMC,EACJ9hB,YAAY+hB,GACVnwB,KAAKowB,oBAAsBpwB,KAAKowB,oBAAoBC,KAAKrwB,MACzDA,KAAKmwB,WAAaA,EAClBnwB,KAAKswB,kBAAoB,CAC3B,CAEAhgB,QACOtQ,KAAKuwB,cACRvwB,KAAKwwB,UAAYX,WACV7vB,KAAKywB,UACZzwB,KAAK0wB,eACL3mB,iBAAiB,mBAAoB/J,KAAKowB,qBAC1CxJ,EAAO3hB,IAAI,gDAAgDjF,KAAKoO,YAAYuiB,oBAEhF,CAEAlgB,OACMzQ,KAAKuwB,cACPvwB,KAAKywB,UAAYZ,IACjB7vB,KAAK4wB,cACLjiB,oBAAoB,mBAAoB3O,KAAKowB,qBAC7CxJ,EAAO3hB,IAAI,6BAEf,CAEAsrB,YACE,OAAOvwB,KAAKwwB,YAAcxwB,KAAKywB,SACjC,CAEAI,aACE7wB,KAAK8wB,SAAWjB,GAClB,CAEAkB,gBACE/wB,KAAKswB,kBAAoB,EACzBtwB,KAAK6wB,oBACE7wB,KAAKgxB,eACZpK,EAAO3hB,IAAI,qCACb,CAEAgsB,mBACEjxB,KAAKgxB,eAAiBnB,IACtBjJ,EAAO3hB,IAAI,wCACb,CAIAyrB,eACE1wB,KAAK4wB,cACL5wB,KAAKkxB,MACP,CAEAN,cACEO,aAAanxB,KAAKoxB,YACpB,CAEAF,OACElxB,KAAKoxB,YAAcC,YAAW,KAC5BrxB,KAAKsxB,mBACLtxB,KAAKkxB,MAAK,GAEVlxB,KAAKuxB,kBACT,CAEAA,kBACE,MAAM,eAAEZ,EAAc,wBAAEa,GAA4BxxB,KAAKoO,YAIzD,OAAwB,IAAjBuiB,EAHSpT,KAAKkU,IAAI,EAAID,EAAyBjU,KAAKmU,IAAI1xB,KAAKswB,kBAAmB,MAG7C,GAFG,IAA3BtwB,KAAKswB,kBAA0B,EAAMkB,GAC5BjU,KAAKoU,SAElC,CAEAL,mBACMtxB,KAAK4xB,sBACPhL,EAAO3hB,IAAI,oEAAoEjF,KAAKswB,mCAAmCN,EAAahwB,KAAK6xB,qCAAqC7xB,KAAKoO,YAAYuiB,oBAC/L3wB,KAAKswB,oBACDtwB,KAAK8xB,uBACPlL,EAAO3hB,IAAI,+EAA+E+qB,EAAahwB,KAAKgxB,sBAE5GpK,EAAO3hB,IAAI,+BACXjF,KAAKmwB,WAAW4B,UAGtB,CAEIF,kBACF,OAAO7xB,KAAK8wB,SAAW9wB,KAAK8wB,SAAW9wB,KAAKwwB,SAC9C,CAEAoB,oBACE,OAAO5B,EAAahwB,KAAK6xB,aAAe7xB,KAAKoO,YAAYuiB,cAC3D,CAEAmB,uBACE,OAAO9xB,KAAKgxB,gBAAmBhB,EAAahwB,KAAKgxB,gBAAkBhxB,KAAKoO,YAAYuiB,cACtF,CAEAP,sBACmC,YAA7BlwB,SAAS8xB,iBACXX,YAAW,MACLrxB,KAAK4xB,qBAAwB5xB,KAAKmwB,WAAW8B,WAC/CrL,EAAO3hB,IAAI,uFAAuF/E,SAAS8xB,mBAC3GhyB,KAAKmwB,WAAW4B,SAClB,GAEA,IAEN,EAIF7B,EAAkBS,eAAiB,EACnCT,EAAkBsB,wBAA0B,IAE5C,UC5HA,GACE,cAAiB,CACf,QAAW,UACX,WAAc,aACd,KAAQ,OACR,aAAgB,uBAChB,UAAa,uBAEf,mBAAsB,CACpB,aAAgB,eAChB,gBAAmB,kBACnB,eAAkB,kBAEpB,mBAAsB,SACtB,UAAa,CACX,sBACA,6BCTE,cAACU,EAAa,UAAEC,GAAa,EAC7BC,EAAqBD,EAAUxf,MAAM,EAAGwf,EAAU7U,OAAS,GAE3D+U,EAAU,GAAGA,QAEnB,MAAMC,EACJlkB,YAAYmkB,GACVvyB,KAAKwyB,KAAOxyB,KAAKwyB,KAAKnC,KAAKrwB,MAC3BA,KAAKuyB,SAAWA,EAChBvyB,KAAKyyB,cAAgBzyB,KAAKuyB,SAASE,cACnCzyB,KAAK0yB,QAAU,IAAI,EAAkB1yB,MACrCA,KAAK2yB,cAAe,CACtB,CAEAC,KAAKxtB,GACH,QAAIpF,KAAKiyB,WACPjyB,KAAK6yB,UAAUD,KAAK1c,KAAK4X,UAAU1oB,KAC5B,EAIX,CAEAotB,OACE,OAAIxyB,KAAK8yB,YACPlM,EAAO3hB,IAAI,uDAAuDjF,KAAK+yB,eAChE,IAEPnM,EAAO3hB,IAAI,uCAAuCjF,KAAK+yB,6BAA6BZ,KAChFnyB,KAAK6yB,WAAa7yB,KAAKgzB,yBAC3BhzB,KAAK6yB,UAAY,IAAI/C,EAASL,UAAUzvB,KAAKuyB,SAASU,IAAKd,GAC3DnyB,KAAKkzB,uBACLlzB,KAAK0yB,QAAQpiB,SACN,EAEX,CAEA6iB,OAAM,eAACC,GAAkB,CAACA,gBAAgB,IAGxC,GAFKA,GAAkBpzB,KAAK0yB,QAAQjiB,OAEhCzQ,KAAKiyB,SACP,OAAOjyB,KAAK6yB,UAAUM,OAE1B,CAEApB,SAEE,GADAnL,EAAO3hB,IAAI,yCAAyCjF,KAAK+yB,eACrD/yB,KAAK8yB,WAWP,OAAO9yB,KAAKwyB,OAVZ,IACE,OAAOxyB,KAAKmzB,OACd,CAAE,MAAOnpB,GACP4c,EAAO3hB,IAAI,6BAA8B+E,EAC3C,CACA,QACE4c,EAAO3hB,IAAI,0BAA0BjF,KAAKoO,YAAYilB,iBACtDhC,WAAWrxB,KAAKwyB,KAAMxyB,KAAKoO,YAAYilB,YACzC,CAIJ,CAEAC,cACE,GAAItzB,KAAK6yB,UACP,OAAO7yB,KAAK6yB,UAAUU,QAE1B,CAEAtB,SACE,OAAOjyB,KAAKwzB,QAAQ,OACtB,CAEAV,WACE,OAAO9yB,KAAKwzB,QAAQ,OAAQ,aAC9B,CAIAC,sBACE,OAAOpB,EAAQhjB,KAAK+iB,EAAoBpyB,KAAKszB,gBAAkB,CACjE,CAEAE,WAAWE,GACT,OAAOrB,EAAQhjB,KAAKqkB,EAAQ1zB,KAAK+yB,aAAe,CAClD,CAEAA,WACE,GAAI/yB,KAAK6yB,UACP,IAAK,IAAIc,KAAS7D,EAASL,UACzB,GAAIK,EAASL,UAAUkE,KAAW3zB,KAAK6yB,UAAUtH,WAC/C,OAAOoI,EAAM9gB,cAInB,OAAO,IACT,CAEAqgB,uBACE,IAAK,IAAI5kB,KAAatO,KAAK4zB,OAAQ,CACjC,MAAMC,EAAU7zB,KAAK4zB,OAAOtlB,GAAW+hB,KAAKrwB,MAC5CA,KAAK6yB,UAAU,KAAKvkB,KAAeulB,CACrC,CACF,CAEAb,yBACE,IAAK,IAAI1kB,KAAatO,KAAK4zB,OACzB5zB,KAAK6yB,UAAU,KAAKvkB,KAAe,WAAY,CAEnD,EAIFgkB,EAAWe,YAAc,IAEzBf,EAAWpd,UAAU0e,OAAS,CAC5B3pB,QAAQ5J,GACN,IAAKL,KAAKyzB,sBAAyB,OACnC,MAAM,WAACrgB,EAAU,QAAEnJ,EAAO,OAAE6pB,EAAM,UAAEC,EAAS,KAAEtuB,GAAQyQ,KAAKC,MAAM9V,EAAM+E,MACxE,OAAQK,GACN,KAAKysB,EAAc8B,QAEjB,OADAh0B,KAAK0yB,QAAQ3B,gBACN/wB,KAAKyyB,cAAcltB,SAC5B,KAAK2sB,EAAcxjB,WAEjB,OADAkY,EAAO3hB,IAAI,0BAA0B6uB,KAC9B9zB,KAAKmzB,MAAM,CAACC,eAAgBW,IACrC,KAAK7B,EAAc+B,KACjB,OAAOj0B,KAAK0yB,QAAQ7B,aACtB,KAAKqB,EAAcgC,aAEjB,OADAl0B,KAAKyyB,cAAc0B,oBAAoB/gB,GAChCpT,KAAKyyB,cAAc2B,OAAOhhB,EAAY,aAC/C,KAAK8e,EAAcmC,UACjB,OAAOr0B,KAAKyyB,cAAc6B,OAAOlhB,GACnC,QACE,OAAOpT,KAAKyyB,cAAc2B,OAAOhhB,EAAY,WAAYnJ,GAE/D,EAEAuoB,OAGE,GAFA5L,EAAO3hB,IAAI,kCAAkCjF,KAAKszB,8BAClDtzB,KAAK2yB,cAAe,GACf3yB,KAAKyzB,sBAER,OADA7M,EAAO3hB,IAAI,gEACJjF,KAAKmzB,MAAM,CAACC,gBAAgB,GAEvC,EAEAD,MAAM9yB,GAEJ,GADAumB,EAAO3hB,IAAI,4BACPjF,KAAK2yB,aAGT,OAFA3yB,KAAK2yB,cAAe,EACpB3yB,KAAK0yB,QAAQzB,mBACNjxB,KAAKyyB,cAAc8B,UAAU,eAAgB,CAACC,qBAAsBx0B,KAAK0yB,QAAQnC,aAC1F,EAEAvmB,QACE4c,EAAO3hB,IAAI,0BACb,GAGF,UClGe,MAAMwvB,EACnBrmB,YAAYmkB,EAAUld,EAAS,CAAC,EAAGqf,GACjC10B,KAAKuyB,SAAWA,EAChBvyB,KAAKoT,WAAa8C,KAAK4X,UAAUzY,GAbtB,SAASgP,EAAQY,GAC9B,GAAkB,MAAdA,EACF,IAAK,IAAIrT,KAAOqT,EAAY,CAC1B,MAAMtgB,EAAQsgB,EAAWrT,GACzByS,EAAOzS,GAAOjN,CAChB,CAGJ,CAMI4f,CAAOvkB,KAAM00B,EACf,CAGAC,QAAQpe,EAAQnR,EAAO,CAAC,GAEtB,OADAA,EAAKmR,OAASA,EACPvW,KAAK4yB,KAAKxtB,EACnB,CAEAwtB,KAAKxtB,GACH,OAAOpF,KAAKuyB,SAASK,KAAK,CAACgC,QAAS,UAAWxhB,WAAYpT,KAAKoT,WAAYhO,KAAM8Q,KAAK4X,UAAU1oB,IACnG,CAEA2C,cACE,OAAO/H,KAAKuyB,SAASE,cAAcxuB,OAAOjE,KAC5C,ECtCF,QA5CA,MACEoO,YAAYqkB,GACVzyB,KAAKyyB,cAAgBA,EACrBzyB,KAAK60B,qBAAuB,EAC9B,CAEAC,UAAUC,IAC+C,GAApD/0B,KAAK60B,qBAAqBxC,QAAQ0C,IACnCnO,EAAO3hB,IAAI,sCAAsC8vB,EAAa3hB,cAC9DpT,KAAK60B,qBAAqBhjB,KAAKkjB,IAG/BnO,EAAO3hB,IAAI,8CAA8C8vB,EAAa3hB,cAExEpT,KAAKg1B,mBACP,CAEAC,OAAOF,GACLnO,EAAO3hB,IAAI,oCAAoC8vB,EAAa3hB,cAC5DpT,KAAK60B,qBAAwB70B,KAAK60B,qBAAqB5f,QAAQigB,GAAMA,IAAMH,GAC7E,CAEAC,oBACEh1B,KAAKm1B,mBACLn1B,KAAKo1B,kBACP,CAEAD,mBACEhE,aAAanxB,KAAKq1B,aACpB,CAEAD,mBACEp1B,KAAKq1B,aAAehE,YAAW,KACzBrxB,KAAKyyB,eAA0D,mBAAlCzyB,KAAKyyB,cAAuB,WAC3DzyB,KAAK60B,qBAAqBvnB,KAAKynB,IAC7BnO,EAAO3hB,IAAI,uCAAuC8vB,EAAa3hB,cAC/DpT,KAAKyyB,cAAc6C,UAAUP,EAAY,GAE7C,GAEA,IACJ,GChCa,MAAMQ,EACnBnnB,YAAYmkB,GACVvyB,KAAKuyB,SAAWA,EAChBvyB,KAAKw1B,UAAY,IAAI,EAAsBx1B,MAC3CA,KAAKyyB,cAAgB,EACvB,CAEA9oB,OAAO8rB,EAAaf,GAClB,MACMrf,EAA4B,iBADlBogB,IACuC,CAACC,QADxCD,GAEVV,EAAe,IAAIN,EAAaz0B,KAAKuyB,SAAUld,EAAQqf,GAC7D,OAAO10B,KAAK+D,IAAIgxB,EAClB,CAIAhxB,IAAIgxB,GAKF,OAJA/0B,KAAKyyB,cAAc5gB,KAAKkjB,GACxB/0B,KAAKuyB,SAASoD,yBACd31B,KAAKo0B,OAAOW,EAAc,eAC1B/0B,KAAKs1B,UAAUP,GACRA,CACT,CAEA9wB,OAAO8wB,GAKL,OAJA/0B,KAAKi1B,OAAOF,GACP/0B,KAAKqnB,QAAQ0N,EAAa3hB,YAAYkK,QACzCtd,KAAK41B,YAAYb,EAAc,eAE1BA,CACT,CAEAT,OAAOlhB,GACL,OAAOpT,KAAKqnB,QAAQjU,GAAY9F,KAAKynB,IACnC/0B,KAAKi1B,OAAOF,GACZ/0B,KAAKo0B,OAAOW,EAAc,YACnBA,IAEX,CAEAE,OAAOF,GAGL,OAFA/0B,KAAKw1B,UAAUP,OAAOF,GACtB/0B,KAAKyyB,cAAiBzyB,KAAKyyB,cAAcxd,QAAQigB,GAAMA,IAAMH,IACtDA,CACT,CAEA1N,QAAQjU,GACN,OAAOpT,KAAKyyB,cAAcxd,QAAQigB,GAAMA,EAAE9hB,aAAeA,GAC3D,CAEA7N,SACE,OAAOvF,KAAKyyB,cAAcnlB,KAAKynB,GAC7B/0B,KAAKs1B,UAAUP,IACnB,CAEAR,UAAUsB,KAAiB3R,GACzB,OAAOlkB,KAAKyyB,cAAcnlB,KAAKynB,GAC7B/0B,KAAKo0B,OAAOW,EAAcc,KAAiB3R,IAC/C,CAEAkQ,OAAOW,EAAcc,KAAiB3R,GACpC,IAAIuO,EAOJ,OALEA,EAD0B,iBAAjBsC,EACO/0B,KAAKqnB,QAAQ0N,GAEb,CAACA,GAGZtC,EAAcnlB,KAAKynB,GACe,mBAA/BA,EAAac,GAA+Bd,EAAac,MAAiB3R,QAAQnE,GAC9F,CAEAuV,UAAUP,GACJ/0B,KAAK41B,YAAYb,EAAc,cACjC/0B,KAAKw1B,UAAUV,UAAUC,EAE7B,CAEAZ,oBAAoB/gB,GAClBwT,EAAO3hB,IAAI,0BAA0BmO,KACrCpT,KAAKqnB,QAAQjU,GAAY9F,KAAKynB,GAC5B/0B,KAAKw1B,UAAUP,OAAOF,IAC1B,CAEAa,YAAYb,EAAcH,GACxB,MAAM,WAACxhB,GAAc2hB,EACrB,OAAO/0B,KAAKuyB,SAASK,KAAK,CAACgC,UAASxhB,cACtC,ECxEa,MAAM0iB,EACnB1nB,YAAY6kB,GACVjzB,KAAK+1B,KAAO9C,EACZjzB,KAAKyyB,cAAgB,IAAI8C,EAAcv1B,MACvCA,KAAKmwB,WAAa,IAAI,EAAWnwB,KACnC,CAEIizB,UACF,OAAO+C,EAAmBh2B,KAAK+1B,KACjC,CAEAnD,KAAKxtB,GACH,OAAOpF,KAAKmwB,WAAWyC,KAAKxtB,EAC9B,CAEArF,UACE,OAAOC,KAAKmwB,WAAWqC,MACzB,CAEA9jB,aACE,OAAO1O,KAAKmwB,WAAWgD,MAAM,CAACC,gBAAgB,GAChD,CAEAuC,yBACE,IAAK31B,KAAKmwB,WAAW2C,WACnB,OAAO9yB,KAAKmwB,WAAWqC,MAE3B,EAGK,SAASwD,EAAmB/C,GAKjC,GAJmB,mBAARA,IACTA,EAAMA,KAGJA,IAAQ,UAAUjf,KAAKif,GAAM,CAC/B,MAAMvd,EAAIxV,SAAS+1B,cAAc,KAKjC,OAJAvgB,EAAEwgB,KAAOjD,EAETvd,EAAEwgB,KAAOxgB,EAAEwgB,KACXxgB,EAAE6d,SAAW7d,EAAE6d,SAAS1rB,QAAQ,OAAQ,MACjC6N,EAAEwgB,IACX,CACE,OAAOjD,CAEX,CCnDO,SAASkD,EAAelD,EAAMmD,EAAU,QAAU,sBACvD,OAAO,IAAIN,EAAS7C,EACtB,CAEO,SAASmD,EAAUtxB,GACxB,MAAM4B,EAAUxG,SAASyrB,KAAKjrB,cAAc,2BAA2BoE,OACvE,GAAI4B,EACF,OAAOA,EAAQqP,aAAa,UAEhC,C,6BC9Be,SAASsa,EAAKgG,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAAS1R,UAC3B,CACF,C,kBCAA,MAAO1Q,SAAQ,GAAInG,OAAOmH,WACpB,eAACqM,GAAkBxT,OAEnByoB,GAAUC,EAGb1oB,OAAOpE,OAAO,MAHQ+sB,IACrB,MAAMC,EAAM,EAAStnB,KAAKqnB,GAC1B,OAAOD,EAAME,KAASF,EAAME,GAAOA,EAAIhkB,MAAM,GAAI,GAAGE,cAAc,GAFvD,IAAC4jB,EAKhB,MAAMG,EAAcnxB,IAClBA,EAAOA,EAAKoN,cACJ6jB,GAAUF,EAAOE,KAAWjxB,GAGhCoxB,EAAapxB,GAAQixB,UAAgBA,IAAUjxB,GAS/C,QAAC4b,GAAW3R,MASZonB,EAAcD,EAAW,aAqBzBE,EAAgBH,EAAW,eA2B3BI,EAAWH,EAAW,UAQtBI,EAAaJ,EAAW,YASxBK,EAAWL,EAAW,UAStBM,EAAYT,GAAoB,OAAVA,GAAmC,iBAAVA,EAiB/CU,EAAiBC,IACrB,GAAoB,WAAhBb,EAAOa,GACT,OAAO,EAGT,MAAMniB,EAAYqM,EAAe8V,GACjC,QAAsB,OAAdniB,GAAsBA,IAAcnH,OAAOmH,WAAkD,OAArCnH,OAAOwT,eAAerM,IAA0BoiB,OAAOC,eAAeF,GAAUC,OAAOE,YAAYH,EAAI,EAUnKI,EAASb,EAAW,QASpBc,EAASd,EAAW,QASpBe,EAASf,EAAW,QASpBgB,EAAahB,EAAW,YAkCxBiB,EAAoBjB,EAAW,mBA2BrC,SAAStyB,EAAQwzB,EAAKzB,GAAI,WAAC0B,GAAa,GAAS,CAAC,GAEhD,GAAID,QACF,OAGF,IAAIE,EACAC,EAQJ,GALmB,iBAARH,IAETA,EAAM,CAACA,IAGLzW,EAAQyW,GAEV,IAAKE,EAAI,EAAGC,EAAIH,EAAIxa,OAAQ0a,EAAIC,EAAGD,IACjC3B,EAAGhnB,KAAK,KAAMyoB,EAAIE,GAAIA,EAAGF,OAEtB,CAEL,MAAMhqB,EAAOiqB,EAAahqB,OAAOuW,oBAAoBwT,GAAO/pB,OAAOD,KAAKgqB,GAClEI,EAAMpqB,EAAKwP,OACjB,IAAI1L,EAEJ,IAAKomB,EAAI,EAAGA,EAAIE,EAAKF,IACnBpmB,EAAM9D,EAAKkqB,GACX3B,EAAGhnB,KAAK,KAAMyoB,EAAIlmB,GAAMA,EAAKkmB,EAEjC,CACF,CAEA,SAASK,EAAQL,EAAKlmB,GACpBA,EAAMA,EAAIiB,cACV,MAAM/E,EAAOC,OAAOD,KAAKgqB,GACzB,IACI7c,EADA+c,EAAIlqB,EAAKwP,OAEb,KAAO0a,KAAM,GAEX,GADA/c,EAAOnN,EAAKkqB,GACRpmB,IAAQqJ,EAAKpI,cACf,OAAOoI,EAGX,OAAO,IACT,CAEA,MAAMmd,EAEsB,oBAAfC,WAAmCA,WACvB,oBAATnmB,KAAuBA,KAA0B,oBAAXjR,OAAyBA,OAASq3B,OAGlFC,EAAoBjiB,IAAawgB,EAAYxgB,IAAYA,IAAY8hB,EAkLrEI,GAAgBC,EAKG,oBAAfC,YAA8BnX,EAAemX,YAH9ChC,GACE+B,GAAc/B,aAAiB+B,GAHrB,IAACA,EAetB,MAiCME,EAAa/B,EAAW,mBAWxB,EAAiB,GAAGzhB,oBAAoB,CAAC2iB,EAAKc,IAASzjB,EAAe9F,KAAKyoB,EAAKc,GAA/D,CAAsE7qB,OAAOmH,WAS9F2jB,EAAWjC,EAAW,UAEtBkC,EAAoB,CAAChB,EAAKiB,KAC9B,MAAMzY,EAAcvS,OAAOirB,0BAA0BlB,GAC/CmB,EAAqB,CAAC,EAE5B30B,EAAQgc,GAAa,CAACvN,EAAYjO,MACO,IAAnCi0B,EAAQhmB,EAAYjO,EAAMgzB,KAC5BmB,EAAmBn0B,GAAQiO,EAC7B,IAGFhF,OAAOyX,iBAAiBsS,EAAKmB,EAAmB,EAuD5CC,EAAQ,6BAERC,EAAQ,aAERC,EAAW,CACfD,QACAD,QACAG,YAAaH,EAAQA,EAAM3mB,cAAgB4mB,GAuD7C,GACE9X,UACA0V,gBACAuC,SAzmBF,SAAkBjC,GAChB,OAAe,OAARA,IAAiBP,EAAYO,IAA4B,OAApBA,EAAIjpB,cAAyB0oB,EAAYO,EAAIjpB,cACpF6oB,EAAWI,EAAIjpB,YAAYkrB,WAAajC,EAAIjpB,YAAYkrB,SAASjC,EACxE,EAumBEkC,WA3dkB7C,IAClB,MAAMphB,EAAU,oBAChB,OAAOohB,IACgB,mBAAb8C,UAA2B9C,aAAiB8C,UACpD,EAASnqB,KAAKqnB,KAAWphB,GACxB2hB,EAAWP,EAAMxiB,WAAawiB,EAAMxiB,aAAeoB,EACrD,EAsdDmkB,kBArlBF,SAA2BpC,GACzB,IAAI/rB,EAMJ,OAJEA,EAD0B,oBAAhBouB,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOtC,GAEnB,GAAUA,EAAU,QAAMN,EAAcM,EAAIuC,QAEhDtuB,CACT,EA8kBE0rB,WACAE,WACA2C,UAriBgBnD,IAAmB,IAAVA,IAA4B,IAAVA,EAsiB3CS,WACAC,gBACAN,cACAW,SACAC,SACAC,SACAkB,WACA5B,aACA6C,SAjfgBzC,GAAQF,EAASE,IAAQJ,EAAWI,EAAI0C,MAkfxDlC,oBACAW,eACAZ,aACAtzB,UACA01B,MAzXF,SAASA,IACP,MAAM,SAACC,GAAY1B,EAAiBv4B,OAASA,MAAQ,CAAC,EAChDsL,EAAS,CAAC,EACV4uB,EAAc,CAAC7C,EAAKzlB,KACxB,MAAMuoB,EAAYF,GAAY9B,EAAQ7sB,EAAQsG,IAAQA,EAClDwlB,EAAc9rB,EAAO6uB,KAAe/C,EAAcC,GACpD/rB,EAAO6uB,GAAaH,EAAM1uB,EAAO6uB,GAAY9C,GACpCD,EAAcC,GACvB/rB,EAAO6uB,GAAaH,EAAM,CAAC,EAAG3C,GACrBhW,EAAQgW,GACjB/rB,EAAO6uB,GAAa9C,EAAI1kB,QAExBrH,EAAO6uB,GAAa9C,CACtB,EAGF,IAAK,IAAIW,EAAI,EAAGC,EAAIrT,UAAUtH,OAAQ0a,EAAIC,EAAGD,IAC3CpT,UAAUoT,IAAM1zB,EAAQsgB,UAAUoT,GAAIkC,GAExC,OAAO5uB,CACT,EAsWEiZ,OA1Va,CAAC7O,EAAGoP,EAAGwR,GAAUyB,cAAa,CAAC,KAC5CzzB,EAAQwgB,GAAG,CAACuS,EAAKzlB,KACX0kB,GAAWW,EAAWI,GACxB3hB,EAAE9D,GAAOye,EAAKgH,EAAKf,GAEnB5gB,EAAE9D,GAAOylB,CACX,GACC,CAACU,eACGriB,GAmVPhC,KAtdYijB,GAAQA,EAAIjjB,KACxBijB,EAAIjjB,OAASijB,EAAI9uB,QAAQ,qCAAsC,IAsd/DuyB,SA1UgBnvB,IACc,QAA1BA,EAAQovB,WAAW,KACrBpvB,EAAUA,EAAQ0H,MAAM,IAEnB1H,GAuUPqvB,SA3Te,CAAClsB,EAAamsB,EAAkBC,EAAOla,KACtDlS,EAAY8G,UAAYnH,OAAOpE,OAAO4wB,EAAiBrlB,UAAWoL,GAClElS,EAAY8G,UAAU9G,YAAcA,EACpCL,OAAO0sB,eAAersB,EAAa,QAAS,CAC1CzJ,MAAO41B,EAAiBrlB,YAE1BslB,GAASzsB,OAAOoB,OAAOf,EAAY8G,UAAWslB,EAAM,EAsTpDE,aA1SmB,CAACC,EAAWC,EAAS3lB,EAAQ4lB,KAChD,IAAIL,EACAxC,EACAY,EACJ,MAAMkC,EAAS,CAAC,EAIhB,GAFAF,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFAJ,EAAQzsB,OAAOuW,oBAAoBqW,GACnC3C,EAAIwC,EAAMld,OACH0a,KAAM,GACXY,EAAO4B,EAAMxC,GACP6C,IAAcA,EAAWjC,EAAM+B,EAAWC,IAAcE,EAAOlC,KACnEgC,EAAQhC,GAAQ+B,EAAU/B,GAC1BkC,EAAOlC,IAAQ,GAGnB+B,GAAuB,IAAX1lB,GAAoBsM,EAAeoZ,EACjD,OAASA,KAAe1lB,GAAUA,EAAO0lB,EAAWC,KAAaD,IAAc5sB,OAAOmH,WAEtF,OAAO0lB,CAAO,EAoRdpE,SACAI,aACAmE,SA1Qe,CAACpE,EAAKqE,EAAcC,KACnCtE,EAAMlJ,OAAOkJ,SACI5W,IAAbkb,GAA0BA,EAAWtE,EAAIrZ,UAC3C2d,EAAWtE,EAAIrZ,QAEjB2d,GAAYD,EAAa1d,OACzB,MAAM4d,EAAYvE,EAAItE,QAAQ2I,EAAcC,GAC5C,OAAsB,IAAfC,GAAoBA,IAAcD,CAAQ,EAoQjDE,QAzPezE,IACf,IAAKA,EAAO,OAAO,KACnB,GAAIrV,EAAQqV,GAAQ,OAAOA,EAC3B,IAAIsB,EAAItB,EAAMpZ,OACd,IAAK4Z,EAASc,GAAI,OAAO,KACzB,MAAMoD,EAAM,IAAI1rB,MAAMsoB,GACtB,KAAOA,KAAM,GACXoD,EAAIpD,GAAKtB,EAAMsB,GAEjB,OAAOoD,CAAG,EAiPVC,aAtNmB,CAACvD,EAAKzB,KACzB,MAEMmB,GAFYM,GAAOA,EAAIR,OAAOE,WAETnoB,KAAKyoB,GAEhC,IAAIxsB,EAEJ,MAAQA,EAASksB,EAAS8D,UAAYhwB,EAAOiwB,MAAM,CACjD,MAAMC,EAAOlwB,EAAO3G,MACpB0xB,EAAGhnB,KAAKyoB,EAAK0D,EAAK,GAAIA,EAAK,GAC7B,GA6MAC,SAlMe,CAACC,EAAQ/E,KACxB,IAAIljB,EACJ,MAAM2nB,EAAM,GAEZ,KAAwC,QAAhC3nB,EAAUioB,EAAOC,KAAKhF,KAC5ByE,EAAIvpB,KAAK4B,GAGX,OAAO2nB,CAAG,EA2LVzC,aACAxjB,eAAc,EACdymB,WAAY,EACZ9C,oBACA+C,cAnJqB/D,IACrBgB,EAAkBhB,GAAK,CAAC/kB,EAAYjO,KAElC,GAAImyB,EAAWa,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAUzF,QAAQvtB,GAC/D,OAAO,EAGT,MAAMH,EAAQmzB,EAAIhzB,GAEbmyB,EAAWtyB,KAEhBoO,EAAW+oB,YAAa,EAEpB,aAAc/oB,EAChBA,EAAWgpB,UAAW,EAInBhpB,EAAWrB,MACdqB,EAAWrB,IAAM,KACf,MAAM9D,MAAM,qCAAwC9I,EAAO,IAAK,GAEpE,GACA,EA6HFk3B,YA1HkB,CAACC,EAAeC,KAClC,MAAMpE,EAAM,CAAC,EAEPqE,EAAUf,IACdA,EAAI92B,SAAQK,IACVmzB,EAAInzB,IAAS,CAAI,GACjB,EAKJ,OAFA0c,EAAQ4a,GAAiBE,EAAOF,GAAiBE,EAAO1O,OAAOwO,GAAenoB,MAAMooB,IAE7EpE,CAAG,EAgHVsE,YA3LkBzF,GACXA,EAAI9jB,cAAchL,QAAQ,yBAC/B,SAAkBw0B,EAAGC,EAAIC,GACvB,OAAOD,EAAG/pB,cAAgBgqB,CAC5B,IAwLFC,KA9GW,OA+GXC,eA7GqB,CAAC93B,EAAOib,KAC7Bjb,GAASA,EACF6oB,OAAOkP,SAAS/3B,GAASA,EAAQib,GA4GxCuY,UACAG,OAAQF,EACRG,mBACAa,WACAuD,eAnGqB,CAACltB,EAAO,GAAImtB,EAAWxD,EAASC,eACrD,IAAI1C,EAAM,GACV,MAAM,OAACrZ,GAAUsf,EACjB,KAAOntB,KACLknB,GAAOiG,EAASrf,KAAKoU,SAAWrU,EAAO,GAGzC,OAAOqZ,CAAG,EA6FVkG,oBAnFF,SAA6BnG,GAC3B,SAAUA,GAASO,EAAWP,EAAMoG,SAAyC,aAA9BpG,EAAMY,OAAOC,cAA+Bb,EAAMY,OAAOE,UAC1G,EAkFEuF,aAhFoBjF,IACpB,MAAMkF,EAAQ,IAAIttB,MAAM,IAElButB,EAAQ,CAACC,EAAQlF,KAErB,GAAIb,EAAS+F,GAAS,CACpB,GAAIF,EAAM3K,QAAQ6K,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxBF,EAAMhF,GAAKkF,EACX,MAAMr4B,EAASwc,EAAQ6b,GAAU,GAAK,CAAC,EASvC,OAPA54B,EAAQ44B,GAAQ,CAACv4B,EAAOiN,KACtB,MAAMurB,EAAeF,EAAMt4B,EAAOqzB,EAAI,IACrClB,EAAYqG,KAAkBt4B,EAAO+M,GAAOurB,EAAa,IAG5DH,EAAMhF,QAAKjY,EAEJlb,CACT,CACF,CAEA,OAAOq4B,CAAM,EAGf,OAAOD,EAAMnF,EAAK,EAAE,GCloBtB,SAASsF,EAAWnzB,EAAS4D,EAAMwvB,EAAQC,EAASn4B,GAClDyI,MAAMyB,KAAKrP,MAEP4N,MAAM2vB,kBACR3vB,MAAM2vB,kBAAkBv9B,KAAMA,KAAKoO,aAEnCpO,KAAKg9B,OAAQ,IAAKpvB,OAASovB,MAG7Bh9B,KAAKiK,QAAUA,EACfjK,KAAK8E,KAAO,aACZ+I,IAAS7N,KAAK6N,KAAOA,GACrBwvB,IAAWr9B,KAAKq9B,OAASA,GACzBC,IAAYt9B,KAAKs9B,QAAUA,GAC3Bn4B,IAAanF,KAAKmF,SAAWA,EAC/B,CAEAq4B,EAAMlD,SAAS8C,EAAYxvB,MAAO,CAChC6vB,OAAQ,WACN,MAAO,CAELxzB,QAASjK,KAAKiK,QACdnF,KAAM9E,KAAK8E,KAEX44B,YAAa19B,KAAK09B,YAClB/P,OAAQ3tB,KAAK2tB,OAEbgQ,SAAU39B,KAAK29B,SACfC,WAAY59B,KAAK49B,WACjBC,aAAc79B,KAAK69B,aACnBb,MAAOh9B,KAAKg9B,MAEZK,OAAQG,EAAMT,aAAa/8B,KAAKq9B,QAChCxvB,KAAM7N,KAAK6N,KACXiwB,OAAQ99B,KAAKmF,UAAYnF,KAAKmF,SAAS24B,OAAS99B,KAAKmF,SAAS24B,OAAS,KAE3E,IAGF,MAAM,EAAYV,EAAWloB,UACvBoL,EAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEAhc,SAAQuJ,IACRyS,EAAYzS,GAAQ,CAAClJ,MAAOkJ,EAAK,IAGnCE,OAAOyX,iBAAiB4X,EAAY9c,GACpCvS,OAAO0sB,eAAe,EAAW,eAAgB,CAAC91B,OAAO,IAGzDy4B,EAAWztB,KAAO,CAAC3F,EAAO6D,EAAMwvB,EAAQC,EAASn4B,EAAU44B,KACzD,MAAMC,EAAajwB,OAAOpE,OAAO,GAgBjC,OAdA6zB,EAAM9C,aAAa1wB,EAAOg0B,GAAY,SAAgBlG,GACpD,OAAOA,IAAQlqB,MAAMsH,SACvB,IAAG0jB,GACe,iBAATA,IAGTwE,EAAW/tB,KAAK2uB,EAAYh0B,EAAMC,QAAS4D,EAAMwvB,EAAQC,EAASn4B,GAElE64B,EAAWC,MAAQj0B,EAEnBg0B,EAAWl5B,KAAOkF,EAAMlF,KAExBi5B,GAAehwB,OAAOoB,OAAO6uB,EAAYD,GAElCC,CAAU,EAGnB,UCrFA,SAASE,EAAYxH,GACnB,OAAO8G,EAAMpG,cAAcV,IAAU8G,EAAMnc,QAAQqV,EACrD,CASA,SAASyH,EAAevsB,GACtB,OAAO4rB,EAAMzC,SAASnpB,EAAK,MAAQA,EAAIe,MAAM,GAAI,GAAKf,CACxD,CAWA,SAASwsB,EAAUC,EAAMzsB,EAAK0sB,GAC5B,OAAKD,EACEA,EAAKxtB,OAAOe,GAAKtE,KAAI,SAAciG,EAAOykB,GAG/C,OADAzkB,EAAQ4qB,EAAe5qB,IACf+qB,GAAQtG,EAAI,IAAMzkB,EAAQ,IAAMA,CAC1C,IAAGzB,KAAKwsB,EAAO,IAAM,IALH1sB,CAMpB,CAaA,MAAM2sB,EAAaf,EAAM9C,aAAa8C,EAAO,CAAC,EAAG,MAAM,SAAgB5E,GACrE,MAAO,WAAW5kB,KAAK4kB,EACzB,IA8JA,EArIA,SAAoBd,EAAK0G,EAAUzqB,GACjC,IAAKypB,EAAMrG,SAASW,GAClB,MAAM,IAAIzX,UAAU,4BAItBme,EAAWA,GAAY,IAAyBhF,SAYhD,MAAMiF,GATN1qB,EAAUypB,EAAM9C,aAAa3mB,EAAS,CACpC0qB,YAAY,EACZH,MAAM,EACNI,SAAS,IACR,GAAO,SAAiBC,EAAQzB,GAEjC,OAAQM,EAAM1G,YAAYoG,EAAOyB,GACnC,KAE2BF,WAErBG,EAAU7qB,EAAQ6qB,SAAWC,EAC7BP,EAAOvqB,EAAQuqB,KACfI,EAAU3qB,EAAQ2qB,QAElBI,GADQ/qB,EAAQgrB,MAAwB,oBAATA,MAAwBA,OACpCvB,EAAMX,oBAAoB2B,GAEnD,IAAKhB,EAAMvG,WAAW2H,GACpB,MAAM,IAAIve,UAAU,8BAGtB,SAAS2e,EAAar6B,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAI64B,EAAM/F,OAAO9yB,GACf,OAAOA,EAAMs6B,cAGf,IAAKH,GAAWtB,EAAM7F,OAAOhzB,GAC3B,MAAM,IAAI,EAAW,gDAGvB,OAAI64B,EAAMzG,cAAcpyB,IAAU64B,EAAMhF,aAAa7zB,GAC5Cm6B,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACp6B,IAAUu6B,OAAOvvB,KAAKhL,GAG1EA,CACT,CAYA,SAASk6B,EAAel6B,EAAOiN,EAAKysB,GAClC,IAAIjD,EAAMz2B,EAEV,GAAIA,IAAU05B,GAAyB,iBAAV15B,EAC3B,GAAI64B,EAAMzC,SAASnpB,EAAK,MAEtBA,EAAM6sB,EAAa7sB,EAAMA,EAAIe,MAAM,GAAI,GAEvChO,EAAQuR,KAAK4X,UAAUnpB,QAClB,GACJ64B,EAAMnc,QAAQ1c,IAnGvB,SAAqBy2B,GACnB,OAAOoC,EAAMnc,QAAQ+Z,KAASA,EAAItgB,KAAKojB,EACzC,CAiGiCiB,CAAYx6B,KACnC64B,EAAM5F,WAAWjzB,IAAU64B,EAAMzC,SAASnpB,EAAK,SAAWwpB,EAAMoC,EAAMrC,QAAQx2B,IAYhF,OATAiN,EAAMusB,EAAevsB,GAErBwpB,EAAI92B,SAAQ,SAAc86B,EAAIpvB,IAC1BwtB,EAAM1G,YAAYsI,IAAc,OAAPA,GAAgBZ,EAAS1B,QAEtC,IAAZ4B,EAAmBN,EAAU,CAACxsB,GAAM5B,EAAOsuB,GAAqB,OAAZI,EAAmB9sB,EAAMA,EAAM,KACnFotB,EAAaI,GAEjB,KACO,EAIX,QAAIlB,EAAYv5B,KAIhB65B,EAAS1B,OAAOsB,EAAUC,EAAMzsB,EAAK0sB,GAAOU,EAAar6B,KAElD,EACT,CAEA,MAAMq4B,EAAQ,GAERqC,EAAiBtxB,OAAOoB,OAAOovB,EAAY,CAC/CM,iBACAG,eACAd,gBAyBF,IAAKV,EAAMrG,SAASW,GAClB,MAAM,IAAIzX,UAAU,0BAKtB,OA5BA,SAASif,EAAM36B,EAAO05B,GACpB,IAAIb,EAAM1G,YAAYnyB,GAAtB,CAEA,IAA8B,IAA1Bq4B,EAAM3K,QAAQ1tB,GAChB,MAAMiJ,MAAM,kCAAoCywB,EAAKvsB,KAAK,MAG5DkrB,EAAMnrB,KAAKlN,GAEX64B,EAAMl5B,QAAQK,GAAO,SAAcy6B,EAAIxtB,IAKtB,OAJE4rB,EAAM1G,YAAYsI,IAAc,OAAPA,IAAgBR,EAAQvvB,KAChEmvB,EAAUY,EAAI5B,EAAMxG,SAASplB,GAAOA,EAAI8B,OAAS9B,EAAKysB,EAAMgB,KAI5DC,EAAMF,EAAIf,EAAOA,EAAKxtB,OAAOe,GAAO,CAACA,GAEzC,IAEAorB,EAAMuC,KAlB8B,CAmBtC,CAMAD,CAAMxH,GAEC0G,CACT,EC5MA,SAASgB,EAAO7I,GACd,MAAM8I,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOC,mBAAmB/I,GAAK9uB,QAAQ,oBAAoB,SAAkB8L,GAC3E,OAAO8rB,EAAQ9rB,EACjB,GACF,CAUA,SAASgsB,EAAqBtqB,EAAQtB,GACpC/T,KAAK4/B,OAAS,GAEdvqB,GAAU,EAAWA,EAAQrV,KAAM+T,EACrC,CAEA,MAAM,EAAY4rB,EAAqBzqB,UAEvC,EAAU4nB,OAAS,SAAgBh4B,EAAMH,GACvC3E,KAAK4/B,OAAO/tB,KAAK,CAAC/M,EAAMH,GAC1B,EAEA,EAAUuP,SAAW,SAAkB2rB,GACrC,MAAMC,EAAUD,EAAU,SAASl7B,GACjC,OAAOk7B,EAAQxwB,KAAKrP,KAAM2E,EAAO66B,EACnC,EAAIA,EAEJ,OAAOx/B,KAAK4/B,OAAOtyB,KAAI,SAAckuB,GACnC,OAAOsE,EAAQtE,EAAK,IAAM,IAAMsE,EAAQtE,EAAK,GAC/C,GAAG,IAAI1pB,KAAK,IACd,EAEA,UC5CA,SAAS,EAAOulB,GACd,OAAOqI,mBAAmBrI,GACxBxvB,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASk4B,EAAS9M,EAAK5d,EAAQtB,GAE5C,IAAKsB,EACH,OAAO4d,EAGT,MAAM6M,EAAU/rB,GAAWA,EAAQyrB,QAAU,EAEvCQ,EAAcjsB,GAAWA,EAAQksB,UAEvC,IAAIC,EAUJ,GAPEA,EADEF,EACiBA,EAAY3qB,EAAQtB,GAEpBypB,EAAM3F,kBAAkBxiB,GACzCA,EAAOnB,WACP,IAAI,EAAqBmB,EAAQtB,GAASG,SAAS4rB,GAGnDI,EAAkB,CACpB,MAAMC,EAAgBlN,EAAIZ,QAAQ,MAEX,IAAnB8N,IACFlN,EAAMA,EAAItgB,MAAM,EAAGwtB,IAErBlN,KAA8B,IAAtBA,EAAIZ,QAAQ,KAAc,IAAM,KAAO6N,CACjD,CAEA,OAAOjN,CACT,CCQA,QAlEA,MACE7kB,cACEpO,KAAKogC,SAAW,EAClB,CAUAC,IAAIC,EAAWC,EAAUxsB,GAOvB,OANA/T,KAAKogC,SAASvuB,KAAK,CACjByuB,YACAC,WACAC,cAAazsB,GAAUA,EAAQysB,YAC/BC,QAAS1sB,EAAUA,EAAQ0sB,QAAU,OAEhCzgC,KAAKogC,SAAS9iB,OAAS,CAChC,CASAojB,MAAM/0B,GACA3L,KAAKogC,SAASz0B,KAChB3L,KAAKogC,SAASz0B,GAAM,KAExB,CAOAwT,QACMnf,KAAKogC,WACPpgC,KAAKogC,SAAW,GAEpB,CAYA97B,QAAQ+xB,GACNmH,EAAMl5B,QAAQtE,KAAKogC,UAAU,SAAwBO,GACzC,OAANA,GACFtK,EAAGsK,EAEP,GACF,GCjEF,GACEC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCgDvB,IACEC,WAAW,EACXnY,QAAS,CACPoY,gBCrDsC,oBAApBA,gBAAkCA,gBAAkB,EDsDtExH,SEvD+B,oBAAbA,SAA2BA,SAAW,KFwDxDuF,KGxD2B,oBAATA,KAAuBA,KAAO,MH0DlDkC,qBAvC2B,MAC3B,IAAIC,EACJ,OAAyB,oBAAdC,WACyB,iBAAjCD,EAAUC,UAAUD,UACT,iBAAZA,GACY,OAAZA,IAKuB,oBAAXjgC,QAA8C,oBAAbf,QAChD,EAX4B,GAwC3BkhC,8BAhB+B,oBAAtBC,mBAEPnvB,gBAAgBmvB,mBACc,mBAAvBnvB,KAAKovB,cAcdnP,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SI6BtD,GA3CA,SAAwBqM,GACtB,SAAS+C,EAAUlD,EAAM15B,EAAOE,EAAQmL,GACtC,IAAIlL,EAAOu5B,EAAKruB,KAChB,MAAMwxB,EAAehU,OAAOkP,UAAU53B,GAChC28B,EAASzxB,GAASquB,EAAK/gB,OAG7B,OAFAxY,GAAQA,GAAQ04B,EAAMnc,QAAQxc,GAAUA,EAAOyY,OAASxY,EAEpD28B,GACEjE,EAAM5B,WAAW/2B,EAAQC,GAC3BD,EAAOC,GAAQ,CAACD,EAAOC,GAAOH,GAE9BE,EAAOC,GAAQH,GAGT68B,IAGL38B,EAAOC,IAAU04B,EAAMrG,SAAStyB,EAAOC,MAC1CD,EAAOC,GAAQ,IAGFy8B,EAAUlD,EAAM15B,EAAOE,EAAOC,GAAOkL,IAEtCwtB,EAAMnc,QAAQxc,EAAOC,MACjCD,EAAOC,GA5Cb,SAAuBs2B,GACrB,MAAMtD,EAAM,CAAC,EACPhqB,EAAOC,OAAOD,KAAKstB,GACzB,IAAIpD,EACJ,MAAME,EAAMpqB,EAAKwP,OACjB,IAAI1L,EACJ,IAAKomB,EAAI,EAAGA,EAAIE,EAAKF,IACnBpmB,EAAM9D,EAAKkqB,GACXF,EAAIlmB,GAAOwpB,EAAIxpB,GAEjB,OAAOkmB,CACT,CAiCqB4J,CAAc78B,EAAOC,MAG9B08B,EACV,CAEA,GAAIhE,EAAMjE,WAAWiF,IAAahB,EAAMvG,WAAWuH,EAASznB,SAAU,CACpE,MAAM+gB,EAAM,CAAC,EAMb,OAJA0F,EAAMnC,aAAamD,GAAU,CAAC15B,EAAMH,KAClC48B,EAvEN,SAAuBz8B,GAKrB,OAAO04B,EAAM/B,SAAS,gBAAiB32B,GAAMwI,KAAIqG,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CA+DgBguB,CAAc78B,GAAOH,EAAOmzB,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,EC/EM8J,GAAuB,CAC3B,oBAAgB7hB,GA4BZ8hB,GAAW,CAEfC,aAAc,EAEdC,QAAS,CAAC,MAAO,QAEjBC,iBAAkB,CAAC,SAA0B58B,EAAM68B,GACjD,MAAMC,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY7P,QAAQ,qBAAuB,EAChEgQ,EAAkB7E,EAAMrG,SAAS/xB,GAQvC,GANIi9B,GAAmB7E,EAAM7E,WAAWvzB,KACtCA,EAAO,IAAIo0B,SAASp0B,IAGHo4B,EAAMjE,WAAWn0B,GAGlC,OAAKg9B,GAGEA,EAAqBlsB,KAAK4X,UAAU,GAAe1oB,IAFjDA,EAKX,GAAIo4B,EAAMzG,cAAc3xB,IACtBo4B,EAAMlE,SAASl0B,IACfo4B,EAAM1D,SAAS10B,IACfo4B,EAAM9F,OAAOtyB,IACbo4B,EAAM7F,OAAOvyB,GAEb,OAAOA,EAET,GAAIo4B,EAAM/D,kBAAkBr0B,GAC1B,OAAOA,EAAKw0B,OAEd,GAAI4D,EAAM3F,kBAAkBzyB,GAE1B,OADA68B,EAAQK,eAAe,mDAAmD,GACnEl9B,EAAK8O,WAGd,IAAI0jB,EAEJ,GAAIyK,EAAiB,CACnB,GAAIH,EAAY7P,QAAQ,sCAAwC,EAC9D,OC7EO,SAA0BjtB,EAAM2O,GAC7C,OAAO,EAAW3O,EAAM,IAAI,2BAAoC2I,OAAOoB,OAAO,CAC5EyvB,QAAS,SAASj6B,EAAOiN,EAAKysB,EAAMkE,GAClC,OAAI,WAAmB/E,EAAMlE,SAAS30B,IACpC3E,KAAK88B,OAAOlrB,EAAKjN,EAAMuP,SAAS,YACzB,GAGFquB,EAAQ1D,eAAetI,MAAMv2B,KAAM4kB,UAC5C,GACC7Q,GACL,CDkEeyuB,CAAiBp9B,EAAMpF,KAAKyiC,gBAAgBvuB,WAGrD,IAAK0jB,EAAa4F,EAAM5F,WAAWxyB,KAAU88B,EAAY7P,QAAQ,wBAA0B,EAAG,CAC5F,MAAMqQ,EAAY1iC,KAAK2iC,KAAO3iC,KAAK2iC,IAAInJ,SAEvC,OAAO,EACL5B,EAAa,CAAC,UAAWxyB,GAAQA,EACjCs9B,GAAa,IAAIA,EACjB1iC,KAAKyiC,eAET,CACF,CAEA,OAAIJ,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GA1EjD,SAAyBtiB,EAAU4iB,EAAQ/C,GACzC,GAAIrC,EAAMxG,SAAShX,GACjB,IAEE,OADA,EAAW9J,KAAKC,OAAO6J,GAChBwd,EAAM9pB,KAAKsM,EACpB,CAAE,MAAOpc,GACP,GAAe,gBAAXA,EAAEkB,KACJ,MAAMlB,CAEV,CAGF,OAAO,EAAYsS,KAAK4X,WAAW9N,EACrC,CA8Da6iB,CAAgBz9B,IAGlBA,CACT,GAEA09B,kBAAmB,CAAC,SAA2B19B,GAC7C,MAAM08B,EAAe9hC,KAAK8hC,cAAgBD,GAASC,aAC7CjB,EAAoBiB,GAAgBA,EAAajB,kBACjDkC,EAAsC,SAAtB/iC,KAAKgjC,aAE3B,GAAI59B,GAAQo4B,EAAMxG,SAAS5xB,KAAWy7B,IAAsB7gC,KAAKgjC,cAAiBD,GAAgB,CAChG,MACME,IADoBnB,GAAgBA,EAAalB,oBACPmC,EAEhD,IACE,OAAO7sB,KAAKC,MAAM/Q,EACpB,CAAE,MAAOxB,GACP,GAAIq/B,EAAmB,CACrB,GAAe,gBAAXr/B,EAAEkB,KACJ,MAAM,OAAgBlB,EAAG,mBAA6B5D,KAAM,KAAMA,KAAKmF,UAEzE,MAAMvB,CACR,CACF,CACF,CAEA,OAAOwB,CACT,GAMA89B,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBX,IAAK,CACHnJ,SAAU,oBACVuF,KAAM,iBAGRwE,eAAgB,SAAwBzF,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEAmE,QAAS,CACPuB,OAAQ,CACN,OAAU,uCAKhBhG,EAAMl5B,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BqS,GACpEkrB,GAASI,QAAQtrB,GAAU,CAAC,CAC9B,IAEA6mB,EAAMl5B,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BqS,GACrEkrB,GAASI,QAAQtrB,GAAU6mB,EAAMxD,MAAM4H,GACzC,IAEA,YE/JM6B,GAAoBjG,EAAMxB,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtB0H,GAAapM,OAAO,aAE1B,SAASqM,GAAgBC,GACvB,OAAOA,GAAUnW,OAAOmW,GAAQlwB,OAAOb,aACzC,CAEA,SAASgxB,GAAel/B,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGF64B,EAAMnc,QAAQ1c,GAASA,EAAM2I,IAAIu2B,IAAkBpW,OAAO9oB,EACnE,CAkBA,SAASm/B,GAAiBxtB,EAAS3R,EAAOi/B,EAAQ3uB,EAAQ8uB,GACxD,OAAIvG,EAAMvG,WAAWhiB,GACZA,EAAO5F,KAAKrP,KAAM2E,EAAOi/B,IAG9BG,IACFp/B,EAAQi/B,GAGLpG,EAAMxG,SAASryB,GAEhB64B,EAAMxG,SAAS/hB,IACiB,IAA3BtQ,EAAM0tB,QAAQpd,GAGnBuoB,EAAM3E,SAAS5jB,GACVA,EAAOjB,KAAKrP,QADrB,OANA,EASF,CAsBA,MAAMq/B,GACJ51B,YAAY6zB,GACVA,GAAWjiC,KAAK0R,IAAIuwB,EACtB,CAEAvwB,IAAIkyB,EAAQK,EAAgBC,GAC1B,MAAMhyB,EAAOlS,KAEb,SAASmkC,EAAUC,EAAQC,EAASC,GAClC,MAAMC,EAAUZ,GAAgBU,GAEhC,IAAKE,EACH,MAAM,IAAI32B,MAAM,0CAGlB,MAAMgE,EAAM4rB,EAAMrF,QAAQjmB,EAAMqyB,KAE5B3yB,QAAqBmO,IAAd7N,EAAKN,KAAmC,IAAb0yB,QAAmCvkB,IAAbukB,IAAwC,IAAdpyB,EAAKN,MACzFM,EAAKN,GAAOyyB,GAAWR,GAAeO,GAE1C,CAEA,MAAMI,EAAa,CAACvC,EAASqC,IAC3B9G,EAAMl5B,QAAQ29B,GAAS,CAACmC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,KAUzE,OARI9G,EAAMpG,cAAcwM,IAAWA,aAAkB5jC,KAAKoO,YACxDo2B,EAAWZ,EAAQK,GACXzG,EAAMxG,SAAS4M,KAAYA,EAASA,EAAOlwB,UAtEhD,gBAAgBM,KAsE8D4vB,EAtErDlwB,QAuE5B8wB,ED5EN,CAAeC,IACb,MAAMC,EAAS,CAAC,EAChB,IAAI9yB,EACAylB,EACAW,EAsBJ,OApBAyM,GAAcA,EAAW3wB,MAAM,MAAMxP,SAAQ,SAAgBqgC,GAC3D3M,EAAI2M,EAAKtS,QAAQ,KACjBzgB,EAAM+yB,EAAKC,UAAU,EAAG5M,GAAGtkB,OAAOb,cAClCwkB,EAAMsN,EAAKC,UAAU5M,EAAI,GAAGtkB,QAEvB9B,GAAQ8yB,EAAO9yB,IAAQ6xB,GAAkB7xB,KAIlC,eAARA,EACE8yB,EAAO9yB,GACT8yB,EAAO9yB,GAAKC,KAAKwlB,GAEjBqN,EAAO9yB,GAAO,CAACylB,GAGjBqN,EAAO9yB,GAAO8yB,EAAO9yB,GAAO8yB,EAAO9yB,GAAO,KAAOylB,EAAMA,EAE3D,IAEOqN,CACR,ECiDgBG,CAAajB,GAASK,GAEvB,MAAVL,GAAkBO,EAAUF,EAAgBL,EAAQM,GAG/ClkC,IACT,CAEAwR,IAAIoyB,EAAQhB,GAGV,GAFAgB,EAASD,GAAgBC,GAEb,CACV,MAAMhyB,EAAM4rB,EAAMrF,QAAQn4B,KAAM4jC,GAEhC,GAAIhyB,EAAK,CACP,MAAMjN,EAAQ3E,KAAK4R,GAEnB,IAAKgxB,EACH,OAAOj+B,EAGT,IAAe,IAAXi+B,EACF,OA1GV,SAAqBjM,GACnB,MAAM3Z,EAASjP,OAAOpE,OAAO,MACvBm7B,EAAW,mCACjB,IAAInxB,EAEJ,KAAQA,EAAQmxB,EAASnJ,KAAKhF,IAC5B3Z,EAAOrJ,EAAM,IAAMA,EAAM,GAG3B,OAAOqJ,CACT,CAgGiB+nB,CAAYpgC,GAGrB,GAAI64B,EAAMvG,WAAW2L,GACnB,OAAOA,EAAOvzB,KAAKrP,KAAM2E,EAAOiN,GAGlC,GAAI4rB,EAAM3E,SAAS+J,GACjB,OAAOA,EAAOjH,KAAKh3B,GAGrB,MAAM,IAAI0b,UAAU,yCACtB,CACF,CACF,CAEA/H,IAAIsrB,EAAQoB,GAGV,GAFApB,EAASD,GAAgBC,GAEb,CACV,MAAMhyB,EAAM4rB,EAAMrF,QAAQn4B,KAAM4jC,GAEhC,SAAUhyB,QAAqBmO,IAAd/f,KAAK4R,IAAwBozB,IAAWlB,GAAiB9jC,EAAMA,KAAK4R,GAAMA,EAAKozB,GAClG,CAEA,OAAO,CACT,CAEAj2B,OAAO60B,EAAQoB,GACb,MAAM9yB,EAAOlS,KACb,IAAIilC,GAAU,EAEd,SAASC,EAAab,GAGpB,GAFAA,EAAUV,GAAgBU,GAEb,CACX,MAAMzyB,EAAM4rB,EAAMrF,QAAQjmB,EAAMmyB,IAE5BzyB,GAASozB,IAAWlB,GAAiB5xB,EAAMA,EAAKN,GAAMA,EAAKozB,YACtD9yB,EAAKN,GAEZqzB,GAAU,EAEd,CACF,CAQA,OANIzH,EAAMnc,QAAQuiB,GAChBA,EAAOt/B,QAAQ4gC,GAEfA,EAAatB,GAGRqB,CACT,CAEA9lB,MAAM6lB,GACJ,MAAMl3B,EAAOC,OAAOD,KAAK9N,MACzB,IAAIg4B,EAAIlqB,EAAKwP,OACT2nB,GAAU,EAEd,KAAOjN,KAAK,CACV,MAAMpmB,EAAM9D,EAAKkqB,GACbgN,IAAWlB,GAAiB9jC,EAAMA,KAAK4R,GAAMA,EAAKozB,GAAS,YACtDhlC,KAAK4R,GACZqzB,GAAU,EAEd,CAEA,OAAOA,CACT,CAEAE,UAAUC,GACR,MAAMlzB,EAAOlS,KACPiiC,EAAU,CAAC,EAsBjB,OApBAzE,EAAMl5B,QAAQtE,MAAM,CAAC2E,EAAOi/B,KAC1B,MAAMhyB,EAAM4rB,EAAMrF,QAAQ8J,EAAS2B,GAEnC,GAAIhyB,EAGF,OAFAM,EAAKN,GAAOiyB,GAAel/B,eACpBuN,EAAK0xB,GAId,MAAMyB,EAAaD,EA1JzB,SAAsBxB,GACpB,OAAOA,EAAOlwB,OACXb,cAAchL,QAAQ,mBAAmB,CAACy9B,EAAGhzB,EAAMqkB,IAC3CrkB,EAAKC,cAAgBokB,GAElC,CAqJkC4O,CAAa3B,GAAUnW,OAAOmW,GAAQlwB,OAE9D2xB,IAAezB,UACV1xB,EAAK0xB,GAGd1xB,EAAKmzB,GAAcxB,GAAel/B,GAElCs9B,EAAQoD,IAAc,CAAI,IAGrBrlC,IACT,CAEA6Q,UAAUyW,GACR,OAAOtnB,KAAKoO,YAAYyC,OAAO7Q,QAASsnB,EAC1C,CAEAmW,OAAO+H,GACL,MAAM1N,EAAM/pB,OAAOpE,OAAO,MAM1B,OAJA6zB,EAAMl5B,QAAQtE,MAAM,CAAC2E,EAAOi/B,KACjB,MAATj/B,IAA2B,IAAVA,IAAoBmzB,EAAI8L,GAAU4B,GAAahI,EAAMnc,QAAQ1c,GAASA,EAAMmN,KAAK,MAAQnN,EAAM,IAG3GmzB,CACT,CAEA,CAACR,OAAOE,YACN,OAAOzpB,OAAOgJ,QAAQ/W,KAAKy9B,UAAUnG,OAAOE,WAC9C,CAEAtjB,WACE,OAAOnG,OAAOgJ,QAAQ/W,KAAKy9B,UAAUnwB,KAAI,EAAEs2B,EAAQj/B,KAAWi/B,EAAS,KAAOj/B,IAAOmN,KAAK,KAC5F,CAEYylB,IAAPD,OAAOC,eACV,MAAO,cACT,CAEAp2B,YAAYu1B,GACV,OAAOA,aAAiB12B,KAAO02B,EAAQ,IAAI12B,KAAK02B,EAClD,CAEAv1B,cAAcskC,KAAUne,GACtB,MAAMoe,EAAW,IAAI1lC,KAAKylC,GAI1B,OAFAne,EAAQhjB,SAASO,GAAW6gC,EAASh0B,IAAI7M,KAElC6gC,CACT,CAEAvkC,gBAAgByiC,GACd,MAIM+B,GAJY3lC,KAAK0jC,IAAe1jC,KAAK0jC,IAAc,CACvDiC,UAAW,CAAC,IAGcA,UACtBzwB,EAAYlV,KAAKkV,UAEvB,SAAS0wB,EAAevB,GACtB,MAAME,EAAUZ,GAAgBU,GAE3BsB,EAAUpB,KAlNrB,SAAwBzM,EAAK8L,GAC3B,MAAMiC,EAAerI,EAAMpB,YAAY,IAAMwH,GAE7C,CAAC,MAAO,MAAO,OAAOt/B,SAAQ+O,IAC5BtF,OAAO0sB,eAAe3C,EAAKzkB,EAAawyB,EAAc,CACpDlhC,MAAO,SAASmhC,EAAMC,EAAMC,GAC1B,OAAOhmC,KAAKqT,GAAYhE,KAAKrP,KAAM4jC,EAAQkC,EAAMC,EAAMC,EACzD,EACAC,cAAc,GACd,GAEN,CAwMQC,CAAehxB,EAAWmvB,GAC1BsB,EAAUpB,IAAW,EAEzB,CAIA,OAFA/G,EAAMnc,QAAQuiB,GAAUA,EAAOt/B,QAAQshC,GAAkBA,EAAehC,GAEjE5jC,IACT,EAGFgkC,GAAamC,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAEpG3I,EAAM3B,cAAcmI,GAAa9uB,WACjCsoB,EAAM3B,cAAcmI,IAEpB,YCnRe,SAASoC,GAAcC,EAAKlhC,GACzC,MAAMk4B,EAASr9B,MAAQ,GACjBsW,EAAUnR,GAAYk4B,EACtB4E,EAAU,QAAkB3rB,EAAQ2rB,SAC1C,IAAI78B,EAAOkR,EAAQlR,KAQnB,OANAo4B,EAAMl5B,QAAQ+hC,GAAK,SAAmBhQ,GACpCjxB,EAAOixB,EAAGhnB,KAAKguB,EAAQj4B,EAAM68B,EAAQkD,YAAahgC,EAAWA,EAAS24B,YAAS/d,EACjF,IAEAkiB,EAAQkD,YAED//B,CACT,CCzBe,SAASkhC,GAAS3hC,GAC/B,SAAUA,IAASA,EAAM4hC,WAC3B,CCUA,SAASC,GAAcv8B,EAASozB,EAAQC,GAEtC,OAAgBt9B,KAAiB,MAAXiK,EAAkB,WAAaA,EAAS,eAAyBozB,EAAQC,GAC/Ft9B,KAAK8E,KAAO,eACd,CAEA04B,EAAMlD,SAASkM,GAAe,EAAY,CACxCD,YAAY,IAGd,YCnBA,GAAe,wBAIJ,CACLnX,MAAO,SAAetqB,EAAMH,EAAO8hC,EAASpI,EAAMqI,EAAQC,GACxD,MAAMC,EAAS,GACfA,EAAO/0B,KAAK/M,EAAO,IAAM46B,mBAAmB/6B,IAExC64B,EAAMtG,SAASuP,IACjBG,EAAO/0B,KAAK,WAAa,IAAI+d,KAAK6W,GAASI,eAGzCrJ,EAAMxG,SAASqH,IACjBuI,EAAO/0B,KAAK,QAAUwsB,GAGpBb,EAAMxG,SAAS0P,IACjBE,EAAO/0B,KAAK,UAAY60B,IAGX,IAAXC,GACFC,EAAO/0B,KAAK,UAGd3R,SAAS0mC,OAASA,EAAO90B,KAAK,KAChC,EAEAqd,KAAM,SAAcrqB,GAClB,MAAM6O,EAAQzT,SAAS0mC,OAAOjzB,MAAM,IAAI4B,OAAO,aAAezQ,EAAO,cACrE,OAAQ6O,EAAQmzB,mBAAmBnzB,EAAM,IAAM,IACjD,EAEA1P,OAAQ,SAAgBa,GACtB9E,KAAKovB,MAAMtqB,EAAM,GAAI8qB,KAAKC,MAAQ,MACpC,GAMK,CACLT,MAAO,WAAkB,EACzBD,KAAM,WAAkB,OAAO,IAAM,EACrClrB,OAAQ,WAAmB,GClClB,SAAS8iC,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8BhzB,KDGPizB,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQn/B,QAAQ,OAAQ,IAAM,IAAMq/B,EAAYr/B,QAAQ,OAAQ,IAChEm/B,CACN,CFGWG,CAAYH,EAASC,GAEvBA,CACT,CGfA,SAAe,wBAIb,WACE,MAAMG,EAAO,kBAAkBpzB,KAAKmtB,UAAUkG,WACxCC,EAAiBpnC,SAAS+1B,cAAc,KAC9C,IAAIsR,EAQJ,SAASC,EAAWvU,GAClB,IAAIiD,EAAOjD,EAWX,OATImU,IAEFE,EAAe7gB,aAAa,OAAQyP,GACpCA,EAAOoR,EAAepR,MAGxBoR,EAAe7gB,aAAa,OAAQyP,GAG7B,CACLA,KAAMoR,EAAepR,KACrB3C,SAAU+T,EAAe/T,SAAW+T,EAAe/T,SAAS1rB,QAAQ,KAAM,IAAM,GAChF4/B,KAAMH,EAAeG,KACrBC,OAAQJ,EAAeI,OAASJ,EAAeI,OAAO7/B,QAAQ,MAAO,IAAM,GAC3E8/B,KAAML,EAAeK,KAAOL,EAAeK,KAAK9/B,QAAQ,KAAM,IAAM,GACpE+/B,SAAUN,EAAeM,SACzBC,KAAMP,EAAeO,KACrBC,SAAiD,MAAtCR,EAAeQ,SAASp1B,OAAO,GACxC40B,EAAeQ,SACf,IAAMR,EAAeQ,SAE3B,CAUA,OARAP,EAAYC,EAAWvmC,OAAOqE,SAAS4wB,MAQhC,SAAyB6R,GAC9B,MAAMrD,EAAUlH,EAAMxG,SAAS+Q,GAAeP,EAAWO,GAAcA,EACvE,OAAQrD,EAAOnR,WAAagU,EAAUhU,UAClCmR,EAAO+C,OAASF,EAAUE,IAChC,CACD,CAlDD,GAsDS,WACL,OAAO,CACT,ECXJ,GA9CA,SAAqBO,EAActW,GACjCsW,EAAeA,GAAgB,GAC/B,MAAMC,EAAQ,IAAIv4B,MAAMs4B,GAClBE,EAAa,IAAIx4B,MAAMs4B,GAC7B,IAEIG,EAFAxc,EAAO,EACPyc,EAAO,EAKX,OAFA1W,OAAc3R,IAAR2R,EAAoBA,EAAM,IAEzB,SAAc2W,GACnB,MAAMxY,EAAMD,KAAKC,MAEXW,EAAY0X,EAAWE,GAExBD,IACHA,EAAgBtY,GAGlBoY,EAAMtc,GAAQ0c,EACdH,EAAWvc,GAAQkE,EAEnB,IAAImI,EAAIoQ,EACJE,EAAa,EAEjB,KAAOtQ,IAAMrM,GACX2c,GAAcL,EAAMjQ,KACpBA,GAAQgQ,EASV,GANArc,GAAQA,EAAO,GAAKqc,EAEhBrc,IAASyc,IACXA,GAAQA,EAAO,GAAKJ,GAGlBnY,EAAMsY,EAAgBzW,EACxB,OAGF,MAAM6W,EAAS/X,GAAaX,EAAMW,EAElC,OAAO+X,EAAShrB,KAAKirB,MAAmB,IAAbF,EAAoBC,QAAUxoB,CAC3D,CACF,ECpCA,SAAS0oB,GAAqBC,EAAUC,GACtC,IAAIC,EAAgB,EACpB,MAAMC,EAAe,GAAY,GAAI,KAErC,OAAOjlC,IACL,MAAMklC,EAASllC,EAAEklC,OACXC,EAAQnlC,EAAEolC,iBAAmBplC,EAAEmlC,WAAQhpB,EACvCkpB,EAAgBH,EAASF,EACzBM,EAAOL,EAAaI,GAG1BL,EAAgBE,EAEhB,MAAM1jC,EAAO,CACX0jC,SACAC,QACAI,SAAUJ,EAASD,EAASC,OAAShpB,EACrCkoB,MAAOgB,EACPC,KAAMA,QAAcnpB,EACpBqpB,UAAWF,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAOnpB,EAChE1f,MAAOuD,GAGTwB,EAAKujC,EAAmB,WAAa,WAAY,EAEjDD,EAAStjC,EAAK,CAElB,CAEA,MCxCMikC,GAAgB,CACpBC,KCLF,KDMEC,IDsCsD,oBAAnBC,gBAEG,SAAUnM,GAChD,OAAO,IAAI/R,SAAQ,SAA4Btd,EAASsmB,GACtD,IAAImV,EAAcpM,EAAOj4B,KACzB,MAAMskC,EAAiB,QAAkBrM,EAAO4E,SAASkD,YACnDnC,EAAe3F,EAAO2F,aAC5B,IAAI2G,EACJ,SAASpO,IACH8B,EAAOuM,aACTvM,EAAOuM,YAAY7hC,YAAY4hC,GAG7BtM,EAAOwM,QACTxM,EAAOwM,OAAOl7B,oBAAoB,QAASg7B,EAE/C,CAEInM,EAAMjE,WAAWkQ,KAAiB,yBAAiC,mCACrEC,EAAepH,gBAAe,GAGhC,IAAIhF,EAAU,IAAIkM,eAGlB,GAAInM,EAAOyM,KAAM,CACf,MAAMC,EAAW1M,EAAOyM,KAAKC,UAAY,GACnCpiC,EAAW01B,EAAOyM,KAAKniC,SAAWqiC,SAAStK,mBAAmBrC,EAAOyM,KAAKniC,WAAa,GAC7F+hC,EAAeh4B,IAAI,gBAAiB,SAAWu4B,KAAKF,EAAW,IAAMpiC,GACvE,CAEA,MAAMuiC,EAAWnD,GAAc1J,EAAO2J,QAAS3J,EAAOpK,KAOtD,SAASkX,IACP,IAAK7M,EACH,OAGF,MAAM8M,EAAkB,QACtB,0BAA2B9M,GAAWA,EAAQ+M,0BG5EvC,SAAgBr8B,EAASsmB,EAAQnvB,GAC9C,MAAMo+B,EAAiBp+B,EAASk4B,OAAOkG,eAClCp+B,EAAS24B,QAAWyF,IAAkBA,EAAep+B,EAAS24B,QAGjExJ,EAAO,IAAI,EACT,mCAAqCnvB,EAAS24B,OAC9C,CAAC,kBAA4B,oBAA6BvgB,KAAK+sB,MAAMnlC,EAAS24B,OAAS,KAAO,GAC9F34B,EAASk4B,OACTl4B,EAASm4B,QACTn4B,IAPF6I,EAAQ7I,EAUZ,CH4EMolC,EAAO,SAAkB5lC,GACvBqJ,EAAQrJ,GACR42B,GACF,IAAG,SAAiBiP,GAClBlW,EAAOkW,GACPjP,GACF,GAfiB,CACfn2B,KAHoB49B,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxC1F,EAAQn4B,SAA/Bm4B,EAAQmN,aAGR3M,OAAQR,EAAQQ,OAChB4M,WAAYpN,EAAQoN,WACpBzI,QAASmI,EACT/M,SACAC,YAYFA,EAAU,IACZ,CAmEA,GArGAA,EAAQ9K,KAAK6K,EAAO1mB,OAAOpE,cAAewtB,EAASmK,EAAU7M,EAAOhoB,OAAQgoB,EAAOsN,mBAAmB,GAGtGrN,EAAQ4F,QAAU7F,EAAO6F,QAiCrB,cAAe5F,EAEjBA,EAAQ6M,UAAYA,EAGpB7M,EAAQsN,mBAAqB,WACtBtN,GAAkC,IAAvBA,EAAQ/R,aAQD,IAAnB+R,EAAQQ,QAAkBR,EAAQuN,aAAwD,IAAzCvN,EAAQuN,YAAYxY,QAAQ,WAKjFhB,WAAW8Y,EACb,EAIF7M,EAAQwN,QAAU,WACXxN,IAILhJ,EAAO,IAAI,EAAW,kBAAmB,eAAyB+I,EAAQC,IAG1EA,EAAU,KACZ,EAGAA,EAAQtR,QAAU,WAGhBsI,EAAO,IAAI,EAAW,gBAAiB,cAAwB+I,EAAQC,IAGvEA,EAAU,IACZ,EAGAA,EAAQyN,UAAY,WAClB,IAAIC,EAAsB3N,EAAO6F,QAAU,cAAgB7F,EAAO6F,QAAU,cAAgB,mBAC5F,MAAMpB,EAAezE,EAAOyE,cAAgB,EACxCzE,EAAO2N,sBACTA,EAAsB3N,EAAO2N,qBAE/B1W,EAAO,IAAI,EACT0W,EACAlJ,EAAahB,oBAAsB,YAAuB,eAC1DzD,EACAC,IAGFA,EAAU,IACZ,EAKI,wBAA+B,CAEjC,MAAM2N,GAAa5N,EAAO6N,iBAAmBC,GAAgBjB,KACxD7M,EAAO8F,gBAAkBiI,GAAQjc,KAAKkO,EAAO8F,gBAE9C8H,GACFvB,EAAeh4B,IAAI2rB,EAAO+F,eAAgB6H,EAE9C,MAGgBlrB,IAAhB0pB,GAA6BC,EAAepH,eAAe,MAGvD,qBAAsBhF,GACxBE,EAAMl5B,QAAQolC,EAAejM,UAAU,SAA0BpG,EAAKzlB,GACpE0rB,EAAQ+N,iBAAiBz5B,EAAKylB,EAChC,IAIGmG,EAAM1G,YAAYuG,EAAO6N,mBAC5B5N,EAAQ4N,kBAAoB7N,EAAO6N,iBAIjClI,GAAiC,SAAjBA,IAClB1F,EAAQ0F,aAAe3F,EAAO2F,cAIS,mBAA9B3F,EAAOiO,oBAChBhO,EAAQvzB,iBAAiB,WAAY0+B,GAAqBpL,EAAOiO,oBAAoB,IAIhD,mBAA5BjO,EAAOkO,kBAAmCjO,EAAQkO,QAC3DlO,EAAQkO,OAAOzhC,iBAAiB,WAAY0+B,GAAqBpL,EAAOkO,oBAGtElO,EAAOuM,aAAevM,EAAOwM,UAG/BF,EAAa8B,IACNnO,IAGLhJ,GAAQmX,GAAUA,EAAOhmC,KAAO,IAAI,GAAc,KAAM43B,EAAQC,GAAWmO,GAC3EnO,EAAQoO,QACRpO,EAAU,KAAI,EAGhBD,EAAOuM,aAAevM,EAAOuM,YAAYtU,UAAUqU,GAC/CtM,EAAOwM,SACTxM,EAAOwM,OAAO8B,QAAUhC,IAAetM,EAAOwM,OAAO9/B,iBAAiB,QAAS4/B,KAInF,MAAMpW,EI3OK,SAAuBN,GACpC,MAAMtf,EAAQ,4BAA4BgoB,KAAK1I,GAC/C,OAAOtf,GAASA,EAAM,IAAM,EAC9B,CJwOqBi4B,CAAc1B,GAE3B3W,IAAsD,IAA1C,qBAA2BA,GACzCe,EAAO,IAAI,EAAW,wBAA0Bf,EAAW,IAAK,kBAA4B8J,IAM9FC,EAAQ1K,KAAK6W,GAAe,KAC9B,GACF,GC9OAjM,EAAMl5B,QAAQ+kC,IAAe,CAAChT,EAAI1xB,KAChC,GAAG0xB,EAAI,CACL,IACEtoB,OAAO0sB,eAAepE,EAAI,OAAQ,CAAC1xB,SACrC,CAAE,MAAOf,GAET,CACAmK,OAAO0sB,eAAepE,EAAI,cAAe,CAAC1xB,SAC5C,KAGF,UACEknC,WAAa/b,IACXA,EAAW0N,EAAMnc,QAAQyO,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAACxS,GAAUwS,EACjB,IAAIgc,EACA/J,EAEJ,IAAK,IAAI/J,EAAI,EAAGA,EAAI1a,IAClBwuB,EAAgBhc,EAASkI,KACrB+J,EAAUvE,EAAMxG,SAAS8U,GAAiBzC,GAAcyC,EAAcj5B,eAAiBi5B,IAFjE9T,KAO5B,IAAK+J,EAAS,CACZ,IAAgB,IAAZA,EACF,MAAM,IAAI,EACR,WAAW+J,wCACX,mBAIJ,MAAM,IAAIl+B,MACR4vB,EAAM5B,WAAWyN,GAAeyC,GAC9B,YAAYA,mCACZ,oBAAoBA,KAE1B,CAEA,IAAKtO,EAAMvG,WAAW8K,GACpB,MAAM,IAAI1hB,UAAU,6BAGtB,OAAO0hB,CAAO,EAEhBjS,SAAUuZ,IIzCZ,SAAS0C,GAA6B1O,GAKpC,GAJIA,EAAOuM,aACTvM,EAAOuM,YAAYoC,mBAGjB3O,EAAOwM,QAAUxM,EAAOwM,OAAO8B,QACjC,MAAM,IAAI,GAAc,KAAMtO,EAElC,CASe,SAAS4O,GAAgB5O,GAiBtC,OAhBA0O,GAA6B1O,GAE7BA,EAAO4E,QAAU,QAAkB5E,EAAO4E,SAG1C5E,EAAOj4B,KAAOghC,GAAc/2B,KAC1BguB,EACAA,EAAO2E,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAAS3P,QAAQgL,EAAO1mB,SAC1C0mB,EAAO4E,QAAQK,eAAe,qCAAqC,GAGrDxS,GAAS+b,WAAWxO,EAAO0E,SAAW,WAE/CA,CAAQ1E,GAAQn4B,MAAK,SAA6BC,GAYvD,OAXA4mC,GAA6B1O,GAG7Bl4B,EAASC,KAAOghC,GAAc/2B,KAC5BguB,EACAA,EAAOyF,kBACP39B,GAGFA,EAAS88B,QAAU,QAAkB98B,EAAS88B,SAEvC98B,CACT,IAAG,SAA4B2uB,GAe7B,OAdKwS,GAASxS,KACZiY,GAA6B1O,GAGzBvJ,GAAUA,EAAO3uB,WACnB2uB,EAAO3uB,SAASC,KAAOghC,GAAc/2B,KACnCguB,EACAA,EAAOyF,kBACPhP,EAAO3uB,UAET2uB,EAAO3uB,SAAS88B,QAAU,QAAkBnO,EAAO3uB,SAAS88B,WAIzD3W,QAAQgJ,OAAOR,EACxB,GACF,CC3EA,MAAMoY,GAAmBxV,GAAUA,aAAiB,GAAeA,EAAM+G,SAAW/G,EAWrE,SAASyV,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAMhP,EAAS,CAAC,EAEhB,SAASiP,EAAeznC,EAAQq4B,EAAQjD,GACtC,OAAIuD,EAAMpG,cAAcvyB,IAAW24B,EAAMpG,cAAc8F,GAC9CM,EAAMxD,MAAM3qB,KAAK,CAAC4qB,YAAWp1B,EAAQq4B,GACnCM,EAAMpG,cAAc8F,GACtBM,EAAMxD,MAAM,CAAC,EAAGkD,GACdM,EAAMnc,QAAQ6b,GAChBA,EAAOvqB,QAETuqB,CACT,CAGA,SAASqP,EAAoB72B,EAAGoP,EAAGmV,GACjC,OAAKuD,EAAM1G,YAAYhS,GAEX0Y,EAAM1G,YAAYphB,QAAvB,EACE42B,OAAevsB,EAAWrK,EAAGukB,GAF7BqS,EAAe52B,EAAGoP,EAAGmV,EAIhC,CAGA,SAASuS,EAAiB92B,EAAGoP,GAC3B,IAAK0Y,EAAM1G,YAAYhS,GACrB,OAAOwnB,OAAevsB,EAAW+E,EAErC,CAGA,SAAS2nB,EAAiB/2B,EAAGoP,GAC3B,OAAK0Y,EAAM1G,YAAYhS,GAEX0Y,EAAM1G,YAAYphB,QAAvB,EACE42B,OAAevsB,EAAWrK,GAF1B42B,OAAevsB,EAAW+E,EAIrC,CAGA,SAAS4nB,EAAgBh3B,EAAGoP,EAAG8T,GAC7B,OAAIA,KAAQyT,EACHC,EAAe52B,EAAGoP,GAChB8T,KAAQwT,EACVE,OAAevsB,EAAWrK,QAD5B,CAGT,CAEA,MAAMi3B,EAAW,CACf1Z,IAAKuZ,EACL71B,OAAQ61B,EACRpnC,KAAMonC,EACNxF,QAASyF,EACTzK,iBAAkByK,EAClB3J,kBAAmB2J,EACnB9B,iBAAkB8B,EAClBvJ,QAASuJ,EACTG,eAAgBH,EAChBvB,gBAAiBuB,EACjB1K,QAAS0K,EACTzJ,aAAcyJ,EACdtJ,eAAgBsJ,EAChBrJ,eAAgBqJ,EAChBlB,iBAAkBkB,EAClBnB,mBAAoBmB,EACpBI,WAAYJ,EACZpJ,iBAAkBoJ,EAClBnJ,cAAemJ,EACfK,eAAgBL,EAChBM,UAAWN,EACXO,UAAWP,EACXQ,WAAYR,EACZ7C,YAAa6C,EACbS,WAAYT,EACZU,iBAAkBV,EAClBlJ,eAAgBmJ,EAChBzK,QAAS,CAACvsB,EAAGoP,IAAMynB,EAAoBL,GAAgBx2B,GAAIw2B,GAAgBpnB,IAAI,IASjF,OANA0Y,EAAMl5B,QAAQyJ,OAAOD,KAAKs+B,GAASv7B,OAAO9C,OAAOD,KAAKu+B,KAAW,SAA4BzT,GAC3F,MAAMoB,EAAQ2S,EAAS/T,IAAS2T,EAC1Ba,EAAcpT,EAAMoS,EAAQxT,GAAOyT,EAAQzT,GAAOA,GACvD4E,EAAM1G,YAAYsW,IAAgBpT,IAAU0S,IAAqBrP,EAAOzE,GAAQwU,EACnF,IAEO/P,CACT,CCxGO,MAAMgQ,GAAU,QCKjBC,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUhpC,SAAQ,CAACmB,EAAMuyB,KAC7EsV,GAAW7nC,GAAQ,SAAmBixB,GACpC,cAAcA,IAAUjxB,GAAQ,KAAOuyB,EAAI,EAAI,KAAO,KAAOvyB,CAC/D,CAAC,IAGH,MAAM8nC,GAAqB,CAAC,EAW5BD,GAAWxL,aAAe,SAAsB0L,EAAWC,EAASxjC,GAClE,SAASyjC,EAAcC,EAAKC,GAC1B,MAAO,WAAaP,GAAU,0BAA6BM,EAAM,IAAOC,GAAQ3jC,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAACtF,EAAOgpC,EAAKE,KAClB,IAAkB,IAAdL,EACF,MAAM,IAAI,EACRE,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvE,kBAeJ,OAXIA,IAAYF,GAAmBI,KACjCJ,GAAmBI,IAAO,EAE1B3oC,QAAQkH,KACNwhC,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAU7oC,EAAOgpC,EAAKE,EAAY,CAEzD,EAmCA,UACEC,cAxBF,SAAuB/5B,EAASf,EAAQ+6B,GACtC,GAAuB,iBAAZh6B,EACT,MAAM,IAAI,EAAW,4BAA6B,wBAEpD,MAAMjG,EAAOC,OAAOD,KAAKiG,GACzB,IAAIikB,EAAIlqB,EAAKwP,OACb,KAAO0a,KAAM,GAAG,CACd,MAAM2V,EAAM7/B,EAAKkqB,GACXwV,EAAYx6B,EAAO26B,GACzB,GAAIH,EAAJ,CACE,MAAM7oC,EAAQoP,EAAQ45B,GAChBriC,OAAmByU,IAAVpb,GAAuB6oC,EAAU7oC,EAAOgpC,EAAK55B,GAC5D,IAAe,IAAXzI,EACF,MAAM,IAAI,EAAW,UAAYqiC,EAAM,YAAcriC,EAAQ,uBAGjE,MACA,IAAqB,IAAjByiC,EACF,MAAM,IAAI,EAAW,kBAAoBJ,EAAK,iBAElD,CACF,EAIEL,eC9EI,GAAaE,GAAUF,WAS7B,MAAMU,GACJ5/B,YAAY6/B,GACVjuC,KAAK6hC,SAAWoM,EAChBjuC,KAAKkuC,aAAe,CAClB5Q,QAAS,IAAI,EACbn4B,SAAU,IAAI,EAElB,CAUAm4B,QAAQ6Q,EAAa9Q,GAGQ,iBAAhB8Q,GACT9Q,EAASA,GAAU,CAAC,GACbpK,IAAMkb,EAEb9Q,EAAS8Q,GAAe,CAAC,EAG3B9Q,EAAS8O,GAAYnsC,KAAK6hC,SAAUxE,GAEpC,MAAM,aAACyE,EAAY,iBAAE6I,EAAgB,QAAE1I,GAAW5E,EAoBlD,IAAI+Q,OAlBiBruB,IAAjB+hB,GACF0L,GAAUM,cAAchM,EAAc,CACpClB,kBAAmB,GAAWkB,aAAa,GAAWpU,SACtDmT,kBAAmB,GAAWiB,aAAa,GAAWpU,SACtDoT,oBAAqB,GAAWgB,aAAa,GAAWpU,WACvD,QAGoB3N,IAArB4qB,GACF6C,GAAUM,cAAcnD,EAAkB,CACxCnL,OAAQ,GAAW6O,SACnBpO,UAAW,GAAWoO,WACrB,GAILhR,EAAO1mB,QAAU0mB,EAAO1mB,QAAU3W,KAAK6hC,SAASlrB,QAAU,OAAO9D,cAKjEu7B,EAAiBnM,GAAWzE,EAAMxD,MAChCiI,EAAQuB,OACRvB,EAAQ5E,EAAO1mB,SAGjBy3B,GAAkB5Q,EAAMl5B,QACtB,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjDqS,WACQsrB,EAAQtrB,EAAO,IAI1B0mB,EAAO4E,QAAU,UAAoBmM,EAAgBnM,GAGrD,MAAMqM,EAA0B,GAChC,IAAIC,GAAiC,EACrCvuC,KAAKkuC,aAAa5Q,QAAQh5B,SAAQ,SAAoCkqC,GACjC,mBAAxBA,EAAY/N,UAA0D,IAAhC+N,EAAY/N,QAAQpD,KAIrEkR,EAAiCA,GAAkCC,EAAYhO,YAE/E8N,EAAwBG,QAAQD,EAAYlO,UAAWkO,EAAYjO,UACrE,IAEA,MAAMmO,EAA2B,GAKjC,IAAIC,EAJJ3uC,KAAKkuC,aAAa/oC,SAASb,SAAQ,SAAkCkqC,GACnEE,EAAyB78B,KAAK28B,EAAYlO,UAAWkO,EAAYjO,SACnE,IAGA,IACIrI,EADAF,EAAI,EAGR,IAAKuW,EAAgC,CACnC,MAAMK,EAAQ,CAAC3C,GAAgB5b,KAAKrwB,WAAO+f,GAO3C,IANA6uB,EAAMH,QAAQlY,MAAMqY,EAAON,GAC3BM,EAAM/8B,KAAK0kB,MAAMqY,EAAOF,GACxBxW,EAAM0W,EAAMtxB,OAEZqxB,EAAUrjB,QAAQtd,QAAQqvB,GAEnBrF,EAAIE,GACTyW,EAAUA,EAAQzpC,KAAK0pC,EAAM5W,KAAM4W,EAAM5W,MAG3C,OAAO2W,CACT,CAEAzW,EAAMoW,EAAwBhxB,OAE9B,IAAIuxB,EAAYxR,EAIhB,IAFArF,EAAI,EAEGA,EAAIE,GAAK,CACd,MAAM4W,EAAcR,EAAwBtW,KACtC+W,EAAaT,EAAwBtW,KAC3C,IACE6W,EAAYC,EAAYD,EAC1B,CAAE,MAAO7kC,GACP+kC,EAAW1/B,KAAKrP,KAAMgK,GACtB,KACF,CACF,CAEA,IACE2kC,EAAU1C,GAAgB58B,KAAKrP,KAAM6uC,EACvC,CAAE,MAAO7kC,GACP,OAAOshB,QAAQgJ,OAAOtqB,EACxB,CAKA,IAHAguB,EAAI,EACJE,EAAMwW,EAAyBpxB,OAExB0a,EAAIE,GACTyW,EAAUA,EAAQzpC,KAAKwpC,EAAyB1W,KAAM0W,EAAyB1W,MAGjF,OAAO2W,CACT,CAEAK,OAAO3R,GAGL,OAAO0C,EADUgH,IADjB1J,EAAS8O,GAAYnsC,KAAK6hC,SAAUxE,IACE2J,QAAS3J,EAAOpK,KAC5BoK,EAAOhoB,OAAQgoB,EAAOsN,iBAClD,EAIFnN,EAAMl5B,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BqS,GAE/Eq3B,GAAM94B,UAAUyB,GAAU,SAASsc,EAAKoK,GACtC,OAAOr9B,KAAKs9B,QAAQ6O,GAAY9O,GAAU,CAAC,EAAG,CAC5C1mB,SACAsc,MACA7tB,MAAOi4B,GAAU,CAAC,GAAGj4B,OAEzB,CACF,IAEAo4B,EAAMl5B,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BqS,GAGrE,SAASs4B,EAAmBC,GAC1B,OAAO,SAAoBjc,EAAK7tB,EAAMi4B,GACpC,OAAOr9B,KAAKs9B,QAAQ6O,GAAY9O,GAAU,CAAC,EAAG,CAC5C1mB,SACAsrB,QAASiN,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLjc,MACA7tB,SAEJ,CACF,CAEA4oC,GAAM94B,UAAUyB,GAAUs4B,IAE1BjB,GAAM94B,UAAUyB,EAAS,QAAUs4B,GAAmB,EACxD,IAEA,YCzLA,MAAME,GACJ/gC,YAAYghC,GACV,GAAwB,mBAAbA,EACT,MAAM,IAAI/uB,UAAU,gCAGtB,IAAIgvB,EAEJrvC,KAAK2uC,QAAU,IAAIrjB,SAAQ,SAAyBtd,GAClDqhC,EAAiBrhC,CACnB,IAEA,MAAMuF,EAAQvT,KAGdA,KAAK2uC,QAAQzpC,MAAKumC,IAChB,IAAKl4B,EAAM+7B,WAAY,OAEvB,IAAItX,EAAIzkB,EAAM+7B,WAAWhyB,OAEzB,KAAO0a,KAAM,GACXzkB,EAAM+7B,WAAWtX,GAAGyT,GAEtBl4B,EAAM+7B,WAAa,IAAI,IAIzBtvC,KAAK2uC,QAAQzpC,KAAOqqC,IAClB,IAAIC,EAEJ,MAAMb,EAAU,IAAIrjB,SAAQtd,IAC1BuF,EAAM+hB,UAAUtnB,GAChBwhC,EAAWxhC,CAAO,IACjB9I,KAAKqqC,GAMR,OAJAZ,EAAQlD,OAAS,WACfl4B,EAAMxL,YAAYynC,EACpB,EAEOb,CAAO,EAGhBS,GAAS,SAAgBnlC,EAASozB,EAAQC,GACpC/pB,EAAMugB,SAKVvgB,EAAMugB,OAAS,IAAI,GAAc7pB,EAASozB,EAAQC,GAClD+R,EAAe97B,EAAMugB,QACvB,GACF,CAKAkY,mBACE,GAAIhsC,KAAK8zB,OACP,MAAM9zB,KAAK8zB,MAEf,CAMAwB,UAAUoT,GACJ1oC,KAAK8zB,OACP4U,EAAS1oC,KAAK8zB,QAIZ9zB,KAAKsvC,WACPtvC,KAAKsvC,WAAWz9B,KAAK62B,GAErB1oC,KAAKsvC,WAAa,CAAC5G,EAEvB,CAMA3gC,YAAY2gC,GACV,IAAK1oC,KAAKsvC,WACR,OAEF,MAAMt/B,EAAQhQ,KAAKsvC,WAAWjd,QAAQqW,IACvB,IAAX14B,GACFhQ,KAAKsvC,WAAWG,OAAOz/B,EAAO,EAElC,CAMA7O,gBACE,IAAIsqC,EAIJ,MAAO,CACLl4B,MAJY,IAAI47B,IAAY,SAAkBtkB,GAC9C4gB,EAAS5gB,CACX,IAGE4gB,SAEJ,EAGF,YCxHMiE,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjC1lC,OAAOgJ,QAAQ24B,IAAgBprC,SAAQ,EAAEsN,EAAKjN,MAC5C+qC,GAAe/qC,GAASiN,CAAG,IAG7B,YCzBM8hC,GAnBN,SAASC,EAAeC,GACtB,MAAMt9B,EAAU,IAAI,GAAMs9B,GACpBC,EAAWxjB,EAAK,qBAAyB/Z,GAa/C,OAVAknB,EAAMjZ,OAAOsvB,EAAU,aAAiBv9B,EAAS,CAACyhB,YAAY,IAG9DyF,EAAMjZ,OAAOsvB,EAAUv9B,EAAS,KAAM,CAACyhB,YAAY,IAGnD8b,EAASlqC,OAAS,SAAgBskC,GAChC,OAAO0F,EAAexH,GAAYyH,EAAe3F,GACnD,EAEO4F,CACT,CAGcF,CAAe,IAG7BD,GAAM1F,MAAQ,GAGd0F,GAAMlN,cAAgB,GACtBkN,GAAMvE,YAAc,GACpBuE,GAAMpN,SAAWA,GACjBoN,GAAMrG,QAAUA,GAChBqG,GAAMI,WAAa,EAGnBJ,GAAMtW,WAAa,EAGnBsW,GAAMK,OAASL,GAAMlN,cAGrBkN,GAAMM,IAAM,SAAaC,GACvB,OAAO3oB,QAAQ0oB,IAAIC,EACrB,EAEAP,GAAMQ,OC7CS,SAAgB/7B,GAC7B,OAAO,SAAcijB,GACnB,OAAOjjB,EAASoe,MAAM,KAAM6E,EAC9B,CACF,ED4CAsY,GAAMS,aE5DS,SAAsB9nB,GACnC,OAAOmR,EAAMrG,SAAS9K,KAAsC,IAAzBA,EAAQ8nB,YAC7C,EF6DAT,GAAMvH,YAAcA,GAEpBuH,GAAM1P,aAAe,GAErB0P,GAAMU,WAAa1d,GAAS,GAAe8G,EAAM7E,WAAWjC,GAAS,IAAI8C,SAAS9C,GAASA,GAE3Fgd,GAAMhE,eAAiB,GAEvBgE,GAAM/mB,QAAU+mB,GAGhB,W,GGpFIW,EAA2B,CAAC,EAGhC,SAAS3mC,EAAoB4mC,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBv0B,IAAjBw0B,EACH,OAAOA,EAAarmC,QAGrB,IAAID,EAASomC,EAAyBC,GAAY,CAGjDpmC,QAAS,CAAC,GAOX,OAHAsmC,EAAoBF,GAAUrmC,EAAQA,EAAOC,QAASR,GAG/CO,EAAOC,OACf,CCrBAR,EAAoB+mC,EAAI,CAACvmC,EAASkT,KACjC,IAAI,IAAIxP,KAAOwP,EACX1T,EAAoBC,EAAEyT,EAAYxP,KAASlE,EAAoBC,EAAEO,EAAS0D,IAC5E7D,OAAO0sB,eAAevsB,EAAS0D,EAAK,CAAEkqB,YAAY,EAAMtqB,IAAK4P,EAAWxP,IAE1E,ECNDlE,EAAoBC,EAAI,CAACmqB,EAAKc,IAAU7qB,OAAOmH,UAAUC,eAAe9F,KAAKyoB,EAAKc,GCClFlrB,EAAoBgnC,EAAKxmC,IACH,oBAAXopB,QAA0BA,OAAOC,aAC1CxpB,OAAO0sB,eAAevsB,EAASopB,OAAOC,YAAa,CAAE5yB,MAAO,WAE7DoJ,OAAO0sB,eAAevsB,EAAS,aAAc,CAAEvJ,OAAO,GAAO,E,oBCD9D,WACI,QAAuBob,IAAnB9e,OAAOyjB,cACmB3E,IAA1B9e,OAAO0zC,gBACP1zC,OAAO0zC,eAAeC,0BACtB,OAEJ,MAAMC,EAAqBC,YAM3B7zC,OAAO6zC,YAJU,WACT,OAAOpwB,QAAQC,UAAUkwB,EAAoB,GAAI70C,KAAKoO,YAC1D,EAGJ0mC,YAAY5/B,UAAY2/B,EAAmB3/B,UAC3C4/B,YAAY5/B,UAAU9G,YAAc0mC,YACpC/mC,OAAO8W,eAAeiwB,YAAaD,EACtC,CAhBD,GA0CA,SAAU3/B,GAuBR,SAAS6/B,EAAMC,EAAkB/qC,EAASnF,GACxC,MAAM,IAAIkwC,EAAiB,2DAA6D/qC,EAAU,IAAKnF,EACzG,CAxBsC,mBAA3BoQ,EAAU+/B,gBAErB//B,EAAU+/B,cAAgB,SAASC,GAC7BA,GAaN,SAA2BA,EAAWt/B,GACpCs/B,aAAqBJ,aAAeC,EAAM10B,UAAW,4CACnC,UAAlB60B,EAAUzvC,MAAoBsvC,EAAM10B,UAAW,gDAC/C60B,EAAUt/B,MAAQA,GAAQm/B,EAAMI,aAAc,0DAA2D,gBAC3G,CAhBIC,CAAkBF,EAAWl1C,MAC7Bk1C,EAAUG,WAEVH,EAAYh1C,SAAS+1B,cAAc,UACzBxwB,KAAO,SACjByvC,EAAUI,QAAS,EACnBt1C,KAAKu1C,YAAYL,GACjBA,EAAUG,QACVr1C,KAAKw1C,YAAYN,GAErB,EAWD,CA1BD,CA0BGO,gBAAgBvgC,WAEnB,MAAMwgC,EAAmB,IAAIx3B,QAM7B,SAASy3B,EAAct1C,GACnB,MAAM60C,EANV,SAAsCrwC,GAClC,MAAM6B,EAAU7B,aAAkBsS,QAAUtS,EAASA,aAAkB8U,KAAO9U,EAAOmf,cAAgB,KAC/F4xB,EAAYlvC,EAAUA,EAAQlG,QAAQ,iBAAmB,KAC/D,MAAiF,WAAzEo1C,aAA6C,EAASA,EAAUnwC,MAAoBmwC,EAAY,IAC5G,CAEsBC,CAA6Bx1C,EAAMwE,QACjDqwC,GAAaA,EAAUt/B,MACvB8/B,EAAiBhkC,IAAIwjC,EAAUt/B,KAAMs/B,EAE7C,CAwBA,IAAIY,EA0WAC,EA0LAC,EASAC,EAm+BAC,EAOAC,GA9iDJ,WACI,GAAI,cAAeC,MAAMlhC,UACrB,OACJ,IAAIA,EACJ,GAAI,gBAAiBjU,QAAU,iBAAiB+S,KAAKmtB,UAAUkV,QAC3DnhC,EAAYjU,OAAOq1C,YAAYphC,cAE9B,IAAI,gBAAiBjU,OACtB,OAGAiU,EAAYjU,OAAOm1C,MAAMlhC,SAC7B,CACAnL,iBAAiB,QAAS4rC,GAAe,GACzC5nC,OAAO0sB,eAAevlB,EAAW,YAAa,CAC1C1D,MACI,GAAiB,UAAbxR,KAAKyF,MAAoBzF,KAAK6E,kBAAkB4wC,gBAChD,OAAOC,EAAiBlkC,IAAIxR,KAAK6E,OAEzC,GAEP,CArBD,GAwBA,SAAWixC,GACPA,EAAyB,MAAI,QAC7BA,EAAwB,KAAI,MAC/B,CAHD,CAGGA,IAAsBA,EAAoB,CAAC,IAC9C,MAAMS,UAAqBzB,YACvB1mC,cACIooC,QACAx2C,KAAK8oC,OAASxd,QAAQtd,UACtBhO,KAAKwX,SAAW,IAAI++B,EAAaE,oBAAoBz2C,KACzD,CACW02C,gCACP,MAAO,CAAC,WAAY,WAAY,UAAW,MAC/C,CACAC,oBACI32C,KAAKwX,SAASzX,SAClB,CACA62C,uBACI52C,KAAKwX,SAAS9I,YAClB,CACAnJ,SACI,OAAOvF,KAAKwX,SAASq/B,mBACzB,CACAC,yBAAyBhyC,GACT,WAARA,EACA9E,KAAKwX,SAASu/B,sBAED,YAARjyC,EACL9E,KAAKwX,SAASw/B,kBAED,OAARlyC,EACL9E,KAAKwX,SAASy/B,mBAGdj3C,KAAKwX,SAAS0/B,iBAEtB,CACIC,UACA,OAAOn3C,KAAK+V,aAAa,MAC7B,CACIohC,QAAIxyC,GACAA,EACA3E,KAAKymB,aAAa,MAAO9hB,GAGzB3E,KAAK0mB,gBAAgB,MAE7B,CACI0wB,cACA,MA6CK,UA7C8Bp3C,KAAK+V,aAAa,YAAc,IA4CzDlD,cAECijC,EAAkBuB,KAElBvB,EAAkBwB,KA/CjC,CACIF,YAAQzyC,GACJA,EACA3E,KAAKymB,aAAa,UAAW9hB,GAG7B3E,KAAK0mB,gBAAgB,UAE7B,CACI6wB,eACA,OAAOv3C,KAAKma,aAAa,WAC7B,CACIo9B,aAAS5yC,GACLA,EACA3E,KAAKymB,aAAa,WAAY,IAG9BzmB,KAAK0mB,gBAAgB,WAE7B,CACI8wB,iBACA,OAAOx3C,KAAKma,aAAa,aAC7B,CACIq9B,eAAW7yC,GACPA,EACA3E,KAAKymB,aAAa,aAAc,IAGhCzmB,KAAK0mB,gBAAgB,aAE7B,CACI+wB,eACA,OAAQz3C,KAAKwX,SAASkgC,SAC1B,CACI5kB,eACA,OAAO9yB,KAAK23C,gBAAkBz3C,WAAaF,KAAK43C,SACpD,CACIA,gBACA,IAAI/2B,EAAIg3B,EACR,OAAoG,QAA5FA,EAAmC,QAA7Bh3B,EAAK7gB,KAAK23C,qBAAkC,IAAP92B,OAAgB,EAASA,EAAGmI,uBAAoC,IAAP6uB,OAAgB,EAASA,EAAG19B,aAAa,qBACzJ,EAWJ,SAAS29B,EAAUC,GACf,OAAO,IAAIC,IAAID,EAAU7jC,WAAYhU,SAAS+3C,QAClD,CACA,SAASC,EAAUjlB,GACf,IAAIklB,EACJ,OAAIllB,EAAI0U,KACG1U,EAAI0U,KAAKh1B,MAAM,IAEhBwlC,EAAcllB,EAAIiD,KAAKviB,MAAM,WAC5BwkC,EAAY,QADlB,CAGT,CACA,SAASC,EAAUxiC,EAAMs/B,GAErB,OAAO4C,GADS5C,aAA6C,EAASA,EAAUn/B,aAAa,gBAAkBH,EAAKG,aAAa,WAAaH,EAAKW,OAEvJ,CAWA,SAAS8hC,EAAoB/yC,EAAUgzC,GACnC,OALJ,SAAsBtR,EAAS/T,GAC3B,MAAM9E,EAsBV,SAAmB8E,GACf,OAEsBtuB,EAFEsuB,EAAIslB,OAAStlB,EAAI6U,UAG5B/M,SAAS,KAAOp2B,EAAQA,EAAQ,IADjD,IAA0BA,CAD1B,CAxBmB6zC,CAAUvlB,GACzB,OAAO+T,EAAQ9Q,OAAS4hB,EAAU3pB,GAAQ+H,MAAQ8Q,EAAQ9Q,KAAKuiB,WAAWtqB,EAC9E,CAEWuqB,CAAapzC,EAAUgzC,OAXZrlB,EAWoC3tB,GAe1D,SAA8B2tB,GAC1B,OAJJ,SAA2BA,GACvB,OAAOA,EAAI6U,SAASh0B,MAAM,KAAKnB,MAAM,EACzC,CAEWgmC,CAAkB1lB,GAAKtgB,OAAO,GAAG,EAC5C,CA3BYimC,CAAqB3lB,GAAKtf,MAAM,aAAe,IAAI,IAAM,IAGtCA,MAAM,mCAJrC,IAAsBsf,CAYtB,CACA,SAAS4lB,EAAc5lB,GACnB,MAAM6lB,EAASZ,EAAUjlB,GACzB,OAAiB,MAAV6lB,EAAiB7lB,EAAIiD,KAAKvjB,MAAM,IAAKmmC,EAAOx7B,OAAS,IAAM2V,EAAIiD,IAC1E,CACA,SAAS6iB,EAAW9lB,GAChB,OAAO4lB,EAAc5lB,EACzB,CAiBA,MAAM+lB,EACF5qC,YAAYjJ,GACRnF,KAAKmF,SAAWA,CACpB,CACI8zC,gBACA,OAAOj5C,KAAKmF,SAAS+zC,EACzB,CACIC,aACA,OAAQn5C,KAAKi5C,SACjB,CACIG,kBACA,OAAOp5C,KAAKq5C,YAAc,KAAOr5C,KAAKq5C,YAAc,GACxD,CACIC,kBACA,OAAOt5C,KAAKq5C,YAAc,KAAOr5C,KAAKq5C,YAAc,GACxD,CACIE,iBACA,OAAOv5C,KAAKmF,SAASo0C,UACzB,CACIj0C,eACA,OAAOwyC,EAAU93C,KAAKmF,SAAS8tB,IACnC,CACIumB,aACA,OAAOx5C,KAAKkiC,aAAeliC,KAAKkiC,YAAYvuB,MAAM,yDACtD,CACI0lC,iBACA,OAAOr5C,KAAKmF,SAAS24B,MACzB,CACIoE,kBACA,OAAOliC,KAAK4jC,OAAO,eACvB,CACI6G,mBACA,OAAOzqC,KAAKmF,SAASs0C,QAAQC,MACjC,CACIC,mBACA,OAAI35C,KAAKw5C,OACEx5C,KAAKmF,SAASs0C,QAAQC,OAGtBpuB,QAAQtd,aAAQ+R,EAE/B,CACA6jB,OAAO9+B,GACH,OAAO9E,KAAKmF,SAAS88B,QAAQzwB,IAAI1M,EACrC,EAGJ,SAAS80C,EAAsBlzC,GAC3B,GAA+C,SAA3CA,EAAQqP,aAAa,mBACrB,OAAOrP,EAEN,CACD,MAAMmzC,EAAuB35C,SAAS+1B,cAAc,UAC9C6jB,EAAWC,EAAe,aAOhC,OANID,IACAD,EAAqBG,MAAQF,GAEjCD,EAAqBlzC,YAAcD,EAAQC,YAC3CkzC,EAAqBxuB,OAAQ,EAKrC,SAA+B4uB,EAAoBC,GAC/C,IAAK,MAAM,KAAEp1C,EAAI,MAAEH,KAAWu1C,EAAc1kC,WACxCykC,EAAmBxzB,aAAa3hB,EAAMH,EAE9C,CARQw1C,CAAsBN,EAAsBnzC,GACrCmzC,CACX,CACJ,CAWA,SAAS3rB,EAAS5f,GAAW,OAAEzJ,EAAM,WAAEwpB,EAAU,OAAEnd,GAAW,CAAC,GAC3D,MAAM7Q,EAAQ,IAAIiuB,YAAYhgB,EAAW,CACrC+f,aACAD,SAAS,EACTgsB,UAAU,EACVlpC,WAQJ,OANIrM,GAAUA,EAAOgV,YACjBhV,EAAO0pB,cAAcluB,GAGrBH,SAAS8oB,gBAAgBuF,cAAcluB,GAEpCA,CACX,CACA,SAASg6C,IACL,OAAO,IAAI/uB,SAAStd,GAAYssC,uBAAsB,IAAMtsC,OAChE,CAOA,SAASusC,EAAkBC,EAAO,IAC9B,OAAO,IAAIC,WAAYC,gBAAgBF,EAAM,YACjD,CACA,SAASG,EAASC,KAAYlqC,GAC1B,MAAMmqC,EAKV,SAAqBD,EAASlqC,GAC1B,OAAOkqC,EAAQjqC,QAAO,CAACrF,EAAQsiB,EAAQoK,IAE5B1sB,EAASsiB,GADW7N,MAAbrP,EAAOsnB,GAAkB,GAAKtnB,EAAOsnB,KAEpD,GACP,CAVkB8iB,CAAYF,EAASlqC,GAAQ7I,QAAQ,MAAO,IAAIiM,MAAM,MAC9DH,EAAQknC,EAAM,GAAGlnC,MAAM,QACvBonC,EAASpnC,EAAQA,EAAM,GAAG2J,OAAS,EACzC,OAAOu9B,EAAMvtC,KAAKq3B,GAASA,EAAKhyB,MAAMooC,KAASjpC,KAAK,KACxD,CAOA,SAASkpC,IACL,OAAOtrC,MAAMC,KAAK,CAAE2N,OAAQ,KACvBhQ,KAAI,CAAC+E,EAAG2lB,IACA,GAALA,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,EACzB,IAEG,IAALA,EACE,IAEG,IAALA,GACGza,KAAK+sB,MAAsB,EAAhB/sB,KAAKoU,UAAgB,GAAGzd,SAAS,IAG7CqJ,KAAK+sB,MAAsB,GAAhB/sB,KAAKoU,UAAezd,SAAS,MAGlDpC,KAAK,GACd,CACA,SAASiE,EAAa6C,KAAkB7P,GACpC,IAAK,MAAMpE,KAASoE,EAASuE,KAAK5G,GAAYA,aAAyC,EAASA,EAAQqP,aAAa6C,KACjH,GAAoB,iBAATjU,EACP,OAAOA,EAEf,OAAO,IACX,CAIA,SAASs2C,KAAclyC,GACnB,IAAK,MAAMrC,KAAWqC,EACO,eAArBrC,EAAQw0C,WACRx0C,EAAQ+f,aAAa,OAAQ,IAEjC/f,EAAQ+f,aAAa,YAAa,OAE1C,CACA,SAAS00B,KAAkBpyC,GACvB,IAAK,MAAMrC,KAAWqC,EACO,eAArBrC,EAAQw0C,WACRx0C,EAAQggB,gBAAgB,QAE5BhgB,EAAQggB,gBAAgB,YAEhC,CACA,SAAS00B,EAAY10C,EAAS20C,EAAwB,KAClD,OAAO,IAAI/vB,SAAStd,IAChB,MAAMstC,EAAa,KACf50C,EAAQiI,oBAAoB,QAAS2sC,GACrC50C,EAAQiI,oBAAoB,OAAQ2sC,GACpCttC,GAAS,EAEbtH,EAAQqD,iBAAiB,OAAQuxC,EAAY,CAAEC,MAAM,IACrD70C,EAAQqD,iBAAiB,QAASuxC,EAAY,CAAEC,MAAM,IACtDlqB,WAAWrjB,EAASqtC,EAAsB,GAElD,CACA,SAASG,EAA0BjlC,GAC/B,OAAQA,GACJ,IAAK,UACD,OAAOklC,QAAQC,aACnB,IAAK,UACL,IAAK,UACD,OAAOD,QAAQE,UAE3B,CAIA,SAASC,KAAkB7yC,GACvB,MAAMwN,EAASR,EAAa,uBAAwBhN,GACpD,OALJ,SAAkBwN,GACd,MAAiB,WAAVA,GAAiC,WAAVA,GAAiC,WAAVA,CACzD,CAGWslC,CAAStlC,GAAUA,EAAS,IACvC,CACA,SAASulC,EAAeh3C,GACpB,OAAO5E,SAASQ,cAAc,cAAcoE,MAChD,CACA,SAASi1C,EAAej1C,GACpB,MAAM4B,EAAUo1C,EAAeh3C,GAC/B,OAAO4B,GAAWA,EAAQuE,OAC9B,CAWA,SAAS8wC,EAAuBr1C,EAASwT,GACrC,IAAI2G,EACJ,GAAIna,aAAmByQ,QACnB,OAAQzQ,EAAQlG,QAAQ0Z,IACpB6hC,EAAuBr1C,EAAQs1C,eAAkD,QAAhCn7B,EAAKna,EAAQu1C,qBAAkC,IAAPp7B,OAAgB,EAASA,EAAG4mB,MAAOvtB,EAExI,EAGA,SAAW67B,GACPA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAmB,MAAI,GAAK,QACxCA,EAAYA,EAAoB,OAAI,GAAK,QAC5C,CAND,CAMGA,IAAgBA,EAAc,CAAC,IAelC,MAAMmG,EACF9tC,YAAYoJ,EAAUb,EAAQrR,EAAUxB,EAAO,IAAIk9B,gBAAmBn8B,EAAS,MAC3E7E,KAAKm8C,gBAAkB,IAAIC,gBAC3Bp8C,KAAKq8C,sBAAyBjY,IAAD,EAC7BpkC,KAAKwX,SAAWA,EAChBxX,KAAK2W,OAASA,EACd3W,KAAKiiC,QAAUjiC,KAAKs8C,eACpBt8C,KAAK8D,KAAOA,EACZ9D,KAAKizB,IAAM3tB,EACXtF,KAAK6E,OAASA,CAClB,CACIS,eACA,OAAOtF,KAAKizB,GAChB,CACI5d,aACA,OAAOrV,KAAKizB,IAAIspB,YACpB,CACIxlC,cACA,OAAO/W,KAAK8D,KAAO4L,MAAMC,KAAK3P,KAAK8D,KAAKiT,WAAa,EACzD,CACA00B,SACIzrC,KAAKm8C,gBAAgBzQ,OACzB,CACArgB,gBACI,MAAM,aAAEmxB,GAAiBx8C,KACzBA,KAAKwX,SAASilC,eAAez8C,YACvBA,KAAK08C,4BAA4BF,GACvC,IACIx8C,KAAKwX,SAASmlC,eAAe38C,MAC7B,MAAMmF,QAAiBoV,MAAMva,KAAKizB,IAAIiD,KAAMsmB,GAC5C,aAAax8C,KAAK48C,QAAQz3C,EAC9B,CACA,MAAO6E,GACH,GAAmB,eAAfA,EAAMlF,KAIN,MAHI9E,KAAK68C,0BAA0B7yC,IAC/BhK,KAAKwX,SAASslC,eAAe98C,KAAMgK,GAEjCA,CAEd,CACA,QACIhK,KAAKwX,SAASulC,gBAAgB/8C,KAClC,CACJ,CACAqrB,cAAclmB,GACV,MAAM63C,EAAgB,IAAIhE,EAAc7zC,GAexC,OAdc+oB,EAAS,8BAA+B,CAClDG,YAAY,EACZnd,OAAQ,CAAE8rC,iBACVn4C,OAAQ7E,KAAK6E,SAEPo4C,iBACNj9C,KAAKwX,SAAS0lC,iCAAiCl9C,KAAMg9C,GAEhDA,EAAc/D,UACnBj5C,KAAKwX,SAAS2lC,6BAA6Bn9C,KAAMg9C,GAGjDh9C,KAAKwX,SAAS4lC,0BAA0Bp9C,KAAMg9C,GAE3CA,CACX,CACIR,mBACA,IAAI37B,EACJ,MAAO,CACHlK,OAAQo/B,EAAY/1C,KAAK2W,QAAQpE,cACjC8qC,YAAa,cACbpb,QAASjiC,KAAKiiC,QACdqb,SAAU,SACVx5C,KAAM9D,KAAKu9C,aAAe,KAAOv9C,KAAK8D,KACtC+lC,OAAQ7pC,KAAKw9C,YACbC,SAA4C,QAAjC58B,EAAK7gB,KAAKwX,SAASimC,gBAA6B,IAAP58B,OAAgB,EAASA,EAAGqV,KAExF,CACIomB,qBACA,MAAO,CACHoB,OAAQ,mCAEhB,CACIH,mBACA,OAAOv9C,KAAK2W,QAAUo/B,EAAYvkC,GACtC,CACIgsC,kBACA,OAAOx9C,KAAKm8C,gBAAgBtS,MAChC,CACA8T,mBAAmBC,GACf59C,KAAKiiC,QAAgB,OAAI,CAAC2b,EAAU59C,KAAKiiC,QAAgB,QAAGnwB,KAAK,KACrE,CACAuZ,kCAAkCmxB,GAC9B,MAAMqB,EAAsB,IAAIvyB,SAAStd,GAAahO,KAAKq8C,sBAAwBruC,IACrEkgB,EAAS,6BAA8B,CACjDG,YAAY,EACZnd,OAAQ,CACJsrC,eACAvpB,IAAKjzB,KAAKizB,IACV6qB,OAAQ99C,KAAKq8C,uBAEjBx3C,OAAQ7E,KAAK6E,SAEPo4C,wBACAY,CACd,CACAhB,0BAA0B7yC,GAMtB,OALckkB,EAAS,4BAA6B,CAChDrpB,OAAQ7E,KAAK6E,OACbwpB,YAAY,EACZnd,OAAQ,CAAEosB,QAASt9B,KAAMgK,MAAOA,KAEtBizC,gBAClB,EAGJ,MAAMc,EACF3vC,YAAYoJ,EAAU9Q,GAClB1G,KAAKqQ,SAAU,EACfrQ,KAAKg+C,UAAajnC,IACd,MAAMknC,EAAYlnC,EAAQpE,OAAO,GAAG,IAChCsrC,aAA6C,EAASA,EAAUC,iBAChEl+C,KAAKwX,SAAS2mC,0BAA0Bn+C,KAAK0G,QACjD,EAEJ1G,KAAKwX,SAAWA,EAChBxX,KAAK0G,QAAUA,EACf1G,KAAKo+C,qBAAuB,IAAIC,qBAAqBr+C,KAAKg+C,UAC9D,CACA1tC,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACfrQ,KAAKo+C,qBAAqBpmC,QAAQhY,KAAK0G,SAE/C,CACA+J,OACQzQ,KAAKqQ,UACLrQ,KAAKqQ,SAAU,EACfrQ,KAAKo+C,qBAAqBE,UAAUt+C,KAAK0G,SAEjD,EAGJ,MAAM63C,EACFnwC,YAAYowC,GACRx+C,KAAKw+C,SAYb,SAA8BA,GAC1B,IAAK,MAAM93C,KAAW83C,EAASr+C,iBAAiB,gBAAiB,CAC7D,MAAMs+C,EAAgBv+C,SAASw+C,WAAWh4C,GAAS,GACnD,IAAK,MAAMi4C,KAAsBF,EAAcG,gBAAgB3zC,QAAQ9K,iBAAiB,UACpFw+C,EAAmBE,YAAYjF,EAAsB+E,IAEzDj4C,EAAQm4C,YAAYJ,EACxB,CACA,OAAOD,CACX,CArBwBM,CAAqBN,EACzC,CACAr9C,YAAY8I,GACR,MAAsB,iBAAXA,EACA,IAAIjK,KApTvB,SAAgCw6C,GAC5B,MAAMuE,EAAW7+C,SAAS+1B,cAAc,YAExC,OADA8oB,EAASt0C,UAAY+vC,EACduE,EAAS9zC,OACpB,CAgT4B+zC,CAAuB/0C,IAGhCA,CAEf,EAEJs0C,EAAcrc,YAAc,6BAa5B,SAAW8T,GACPA,EAAoBA,EAAiC,YAAI,GAAK,cAC9DA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA+B,UAAI,GAAK,YAC5DA,EAAoBA,EAA8B,SAAI,GAAK,WAC3DA,EAAoBA,EAA6B,QAAI,GAAK,SAC7D,CAPD,CAOGA,IAAwBA,EAAsB,CAAC,IAElD,SAAWC,GACPA,EAAwB,WAAI,oCAC5BA,EAAuB,UAAI,sBAC3BA,EAAmB,MAAI,YAC1B,CAJD,CAIGA,IAAgBA,EAAc,CAAC,IAWlC,MAAMgJ,EACF7wC,YAAYoJ,EAAU0nC,EAAahK,EAAWiK,GAAe,GACzDn/C,KAAK2zB,MAAQqiB,EAAoBoJ,YACjCp/C,KAAKwX,SAAWA,EAChBxX,KAAKk/C,YAAcA,EACnBl/C,KAAKk1C,UAAYA,EACjBl1C,KAAKw+B,SAmIb,SAAuB0gB,EAAahK,GAChC,MAAM1W,EAAW,IAAIhF,SAAS0lB,GACxBp6C,EAAOowC,aAA6C,EAASA,EAAUn/B,aAAa,QACpFpR,EAAQuwC,aAA6C,EAASA,EAAUn/B,aAAa,SAI3F,OAHIjR,GACA05B,EAAS1B,OAAOh4B,EAAMH,GAAS,IAE5B65B,CACX,CA3IwB6gB,CAAcH,EAAahK,GAC3Cl1C,KAAKsF,SAAWwyC,EAAU93C,KAAKuW,QAC3BvW,KAAK2W,QAAUo/B,EAAYvkC,KAuJvC,SAA8ByhB,EAAKlc,GAC/B,MAAMwlC,EAAe,IAAIvb,gBACzB,IAAK,MAAOl8B,EAAMH,KAAUoS,EACpBpS,aAAiB26C,MAErB/C,EAAazf,OAAOh4B,EAAMH,GAE9BsuB,EAAIyU,OAAS6U,EAAaroC,UAE9B,CA/JYqrC,CAAqBv/C,KAAKsF,SAAU,IAAItF,KAAK8D,KAAKiT,YAEtD/W,KAAKw/C,aAAe,IAAItD,EAAal8C,KAAMA,KAAK2W,OAAQ3W,KAAKsF,SAAUtF,KAAK8D,KAAM9D,KAAKk/C,aACvFl/C,KAAKm/C,aAAeA,CACxB,CACAh+C,qBAAqB8I,EAASw1C,EAAUC,GACpC,OAAOp0B,QAAQtd,QAAQ2xC,QAAQ11C,GACnC,CACI0M,aACA,IAAIkK,EAEJ,OA/NR,SAA+BlK,GAC3B,OAAQA,EAAO9D,eACX,IAAK,MACD,OAAOkjC,EAAYvkC,IACvB,IAAK,OACD,OAAOukC,EAAY6J,KACvB,IAAK,MACD,OAAO7J,EAAY8J,IACvB,IAAK,QACD,OAAO9J,EAAY+J,MACvB,IAAK,SACD,OAAO/J,EAAYhnC,OAE/B,CAkNegxC,GADmC,QAAzBl/B,EAAK7gB,KAAKk1C,iBAA8B,IAAPr0B,OAAgB,EAASA,EAAG9K,aAAa,gBAAkB/V,KAAKk/C,YAAYnpC,aAAa,WAAa,IACpHlD,gBAAkBkjC,EAAYvkC,GACtE,CACI+E,aACA,IAAIsK,EACJ,MAAMm/B,EAAuD,iBAA5BhgD,KAAKk/C,YAAY3oC,OAAsBvW,KAAKk/C,YAAY3oC,OAAS,KAClG,OAA8B,QAAzBsK,EAAK7gB,KAAKk1C,iBAA8B,IAAPr0B,OAAgB,EAASA,EAAG1G,aAAa,eACpEna,KAAKk1C,UAAUn/B,aAAa,eAAiB,GAG7C/V,KAAKk/C,YAAYnpC,aAAa,WAAaiqC,GAAqB,EAE/E,CACIl8C,WACA,OAAI9D,KAAKigD,SAAWhK,EAAYiK,YAAclgD,KAAK2W,QAAUo/B,EAAYvkC,IAC9D,IAAIwvB,gBAAgBhhC,KAAKmgD,gBAGzBngD,KAAKw+B,QAEpB,CACIyhB,cACA,IAAIp/B,EACJ,OApDR,SAA+Bu/B,GAC3B,OAAQA,EAASvtC,eACb,KAAKojC,EAAYoK,UACb,OAAOpK,EAAYoK,UACvB,KAAKpK,EAAYqK,MACb,OAAOrK,EAAYqK,MACvB,QACI,OAAOrK,EAAYiK,WAE/B,CA2CeK,EAAiD,QAAzB1/B,EAAK7gB,KAAKk1C,iBAA8B,IAAPr0B,OAAgB,EAASA,EAAG9K,aAAa,iBAAmB/V,KAAKk/C,YAAYe,QACjJ,CACI1C,mBACA,OAAOv9C,KAAKw/C,aAAajC,YAC7B,CACI4C,qBACA,MAAO,IAAIngD,KAAKw+B,UAAU7tB,QAAO,CAACoG,GAAUjS,EAAMH,KACvCoS,EAAQlG,OAAuB,iBAATlM,EAAoB,CAAC,CAACG,EAAMH,IAAU,KACpE,GACP,CACA0mB,cACI,MAAM,YAAE+zB,EAAW,WAAEoB,GAAexK,EAC9ByK,EAAsB1qC,EAAa,qBAAsB/V,KAAKk1C,UAAWl1C,KAAKk/C,aACpF,GAAmC,iBAAxBuB,SACcxB,EAAeyB,cAAcD,EAAqBzgD,KAAKk/C,YAAal/C,KAAKk1C,WAKlG,OAAIl1C,KAAK2zB,OAASyrB,GACdp/C,KAAK2zB,MAAQ6sB,EACNxgD,KAAKw/C,aAAa7qB,gBAF7B,CAIJ,CACAlkB,OACI,MAAM,SAAEkwC,EAAQ,QAAEC,GAAY5K,EAC9B,GAAIh2C,KAAK2zB,OAASgtB,GAAY3gD,KAAK2zB,OAASitB,EAGxC,OAFA5gD,KAAK2zB,MAAQgtB,EACb3gD,KAAKw/C,aAAa/T,UACX,CAEf,CACAgR,eAAenf,GACX,IAAKA,EAAQigB,aAAc,CACvB,MAAMhqC,EAsElB,SAAwBstC,GACpB,GAAkB,MAAdA,EAAoB,CACpB,MACMja,GADU1mC,SAAS0mC,OAAS1mC,SAAS0mC,OAAO9yB,MAAM,MAAQ,IACzCyP,MAAMqjB,GAAWA,EAAO6R,WAAWoI,KAC1D,GAAIja,EAAQ,CACR,MAAMjiC,EAAQiiC,EAAO9yB,MAAM,KAAKnB,MAAM,GAAGb,KAAK,KAC9C,OAAOnN,EAAQmiC,mBAAmBniC,QAASob,CAC/C,CACJ,CACJ,CA/E0B+gC,CAAe/G,EAAe,gBAAkBA,EAAe,cACzExmC,IACA+pB,EAAQ2E,QAAQ,gBAAkB1uB,EAE1C,CACIvT,KAAK+gD,kCAAkCzjB,IACvCA,EAAQqgB,mBAAmBY,EAAcrc,YAEjD,CACAya,eAAeqE,GACX,IAAIngC,EACJ7gB,KAAK2zB,MAAQqiB,EAAoBiL,QACP,QAAzBpgC,EAAK7gB,KAAKk1C,iBAA8B,IAAPr0B,GAAyBA,EAAG4F,aAAa,WAAY,IACvFyH,EAAS,qBAAsB,CAC3BrpB,OAAQ7E,KAAKk/C,YACbhuC,OAAQ,CAAEgwC,eAAgBlhD,QAE9BA,KAAKwX,SAAS2pC,sBAAsBnhD,KACxC,CACAk9C,iCAAiC5f,EAASn4B,GACtCnF,KAAKsL,OAAS,CAAEjG,QAASF,EAAS8zC,UAAW+D,cAAe73C,EAChE,CACAg4C,6BAA6B7f,EAASn4B,GAClC,GAAIA,EAASi0C,aAAej0C,EAASm0C,YACjCt5C,KAAKwX,SAAS4pC,iCAAiCphD,KAAMmF,QAEpD,GAAInF,KAAKqhD,oBAAoB/jB,IAsD1C,SAA0Cn4B,GACtC,OAA8B,KAAvBA,EAASk0C,aAAsBl0C,EAASo0C,UACnD,CAxDsD+H,CAAiCn8C,GAAW,CACtF,MAAM6E,EAAQ,IAAI4D,MAAM,oDACxB5N,KAAKwX,SAAS+pC,sBAAsBvhD,KAAMgK,EAC9C,MAEIhK,KAAK2zB,MAAQqiB,EAAoBwL,UACjCxhD,KAAKsL,OAAS,CAAEjG,SAAS,EAAM23C,cAAe73C,GAC9CnF,KAAKwX,SAASiqC,oCAAoCzhD,KAAMmF,EAEhE,CACAi4C,0BAA0B9f,EAASn4B,GAC/BnF,KAAKsL,OAAS,CAAEjG,SAAS,EAAO23C,cAAe73C,GAC/CnF,KAAKwX,SAAS4pC,iCAAiCphD,KAAMmF,EACzD,CACA23C,eAAexf,EAAStzB,GACpBhK,KAAKsL,OAAS,CAAEjG,SAAS,EAAO2E,SAChChK,KAAKwX,SAAS+pC,sBAAsBvhD,KAAMgK,EAC9C,CACA+yC,gBAAgBiE,GACZ,IAAIngC,EACJ7gB,KAAK2zB,MAAQqiB,EAAoB4K,QACP,QAAzB//B,EAAK7gB,KAAKk1C,iBAA8B,IAAPr0B,GAAyBA,EAAG6F,gBAAgB,YAC9EwH,EAAS,mBAAoB,CACzBrpB,OAAQ7E,KAAKk/C,YACbhuC,OAAQnD,OAAOoB,OAAO,CAAE+xC,eAAgBlhD,MAAQA,KAAKsL,UAEzDtL,KAAKwX,SAASkqC,uBAAuB1hD,KACzC,CACAqhD,oBAAoB/jB,GAChB,OAAQA,EAAQigB,cAAgBv9C,KAAKm/C,YACzC,CACA4B,kCAAkCzjB,GAC9B,OAAQA,EAAQigB,cAjaxB,SAAsB3kC,KAAkB7P,GACpC,OAAOA,EAAS+R,MAAMpU,GAAYA,GAAWA,EAAQyT,aAAavB,IACtE,CA+ZwCuB,CAAa,oBAAqBna,KAAKk1C,UAAWl1C,KAAKk/C,YAC3F,EAmCJ,MAAMyC,EACFvzC,YAAY1H,GACR1G,KAAK0G,QAAUA,CACnB,CACIk7C,oBACA,OAAO5hD,KAAK0G,QAAQixC,cAAciK,aACtC,CACIC,eACA,MAAO,IAAI7hD,KAAK0G,QAAQm7C,SAC5B,CACAC,UAAUhJ,GACN,OAA2C,MAApC94C,KAAK+hD,oBAAoBjJ,EACpC,CACAiJ,oBAAoBjJ,GAChB,OAAOA,EAAS94C,KAAK0G,QAAQhG,cAAc,QAAQo4C,gBAAqBA,OAAc,IAC1F,CACIj/B,kBACA,OAAO7Z,KAAK0G,QAAQmT,WACxB,CACImoC,gCAEA,IAAK,MAAMt7C,KAAW1G,KAAK0G,QAAQvG,iBAAiB,eAChD,GAA8C,MAA1CuG,EAAQlG,QAFc,yEAGtB,OAAOkG,EAIf,OAAO,IACX,CACIu7C,wBACA,OAAOC,EAA0BliD,KAAK0G,QAC1C,CACAy7C,wBAAwBx2C,GACpB,OAAOw2C,EAAwBniD,KAAK0G,QAASiF,EACjD,CACAy2C,kCAAkCC,GAC9B,MAAMC,EAAsB,CAAC,EAC7B,IAAK,MAAMC,KAA2BviD,KAAKiiD,kBAAmB,CAC1D,MAAM,GAAEt2C,GAAO42C,EACTC,EAAsBH,EAASF,wBAAwBx2C,GACzD62C,IACAF,EAAoB32C,GAAM,CAAC42C,EAAyBC,GAE5D,CACA,OAAOF,CACX,EAEJ,SAASH,EAAwBlpC,EAAMtN,GACnC,OAAOsN,EAAKvY,cAAc,IAAIiL,0BAClC,CACA,SAASu2C,EAA0BjpC,GAC/B,OAAOA,EAAK9Y,iBAAiB,6BACjC,CAEA,MAAMsiD,EACFr0C,YAAYoJ,EAAUnJ,GAClBrO,KAAKqQ,SAAU,EACfrQ,KAAK0iD,eAAiB,KAClB1iD,KAAKqO,YAAYM,oBAAoB,SAAU3O,KAAK2iD,eAAe,GACnE3iD,KAAKqO,YAAYtE,iBAAiB,SAAU/J,KAAK2iD,eAAe,EAAM,EAE1E3iD,KAAK2iD,cAAkBtiD,IACnB,IAAKA,EAAM48C,iBAAkB,CACzB,MAAMrnC,EAAOvV,EAAMwE,kBAAkB4wC,gBAAkBp1C,EAAMwE,YAASkb,EAChEm1B,EAAY70C,EAAM60C,gBAAan1B,EACjCnK,GA0BpB,SAAwCA,EAAMs/B,GAE1C,MAAiB,YADDA,aAA6C,EAASA,EAAUn/B,aAAa,gBAAkBH,EAAKG,aAAa,UAErI,CA5BoB6sC,CAA+BhtC,EAAMs/B,IA6BzD,SAAuCt/B,EAAMs/B,GACzC,IAAKA,aAA6C,EAASA,EAAU/6B,aAAa,gBAAkBvE,EAAKuE,aAAa,UAAW,CAC7H,MAAMtV,GAAUqwC,aAA6C,EAASA,EAAUn/B,aAAa,gBAAkBH,EAAK/Q,OACpH,IAAK,MAAM6B,KAAWxG,SAAS2iD,kBAAkBh+C,GAC7C,GAAI6B,aAAmBo8C,kBACnB,OAAO,EAEf,OAAO,CACX,CAEI,OAAO,CAEf,CAxCoBC,CAA8BntC,EAAMs/B,IACpCl1C,KAAKwX,SAASwrC,eAAeptC,EAAMs/B,KACnC70C,EAAMwD,iBACNxD,EAAM6O,2BACNlP,KAAKwX,SAASyrC,cAAcrtC,EAAMs/B,GAE1C,CACH,EACDl1C,KAAKwX,SAAWA,EAChBxX,KAAKqO,YAAcA,CACvB,CACAiC,QACStQ,KAAKqQ,UACNrQ,KAAKqO,YAAYtE,iBAAiB,SAAU/J,KAAK0iD,gBAAgB,GACjE1iD,KAAKqQ,SAAU,EAEvB,CACAI,OACQzQ,KAAKqQ,UACLrQ,KAAKqO,YAAYM,oBAAoB,SAAU3O,KAAK0iD,gBAAgB,GACpE1iD,KAAKqQ,SAAU,EAEvB,EAoBJ,MAAM6yC,EACF90C,YAAYoJ,EAAU9Q,GAClB1G,KAAKmjD,qBAAwB/e,IAAD,EAC5BpkC,KAAKojD,2BAA8Bhf,IAAD,EAClCpkC,KAAKwX,SAAWA,EAChBxX,KAAK0G,QAAUA,CACnB,CACA28C,eAAevK,GACX,MAAMpyC,EAAU1G,KAAKqiD,SAASN,oBAAoBjJ,GAC9CpyC,GACA1G,KAAKsjD,gBAAgB58C,GACrB1G,KAAKujD,aAAa78C,IAGlB1G,KAAKwjD,iBAAiB,CAAEC,EAAG,EAAGC,EAAG,GAEzC,CACAC,2BAA2Br+C,GACvBtF,KAAKqjD,eAAenL,EAAU5yC,GAClC,CACAg+C,gBAAgB58C,GACZA,EAAQk9C,gBACZ,CACAL,aAAa78C,GACLA,aAAmBouC,cACfpuC,EAAQyT,aAAa,YACrBzT,EAAQm9C,SAGRn9C,EAAQ+f,aAAa,WAAY,MACjC/f,EAAQm9C,QACRn9C,EAAQggB,gBAAgB,aAGpC,CACA88B,kBAAiB,EAAEC,EAAC,EAAEC,IAClB1jD,KAAK8jD,WAAWC,SAASN,EAAGC,EAChC,CACAM,cACIhkD,KAAKwjD,iBAAiB,CAAEC,EAAG,EAAGC,EAAG,GACrC,CACII,iBACA,OAAO7iD,MACX,CACAoqB,aAAa44B,GACT,MAAM,UAAErM,EAAS,aAAEsM,EAAcC,YAAa9B,GAAa4B,EAC3D,GAAIC,EACA,IACIlkD,KAAKokD,cAAgB,IAAI94B,SAAStd,GAAahO,KAAKmjD,qBAAuBn1C,IAC3EhO,KAAKikD,SAAWA,QACVjkD,KAAKqkD,wBAAwBJ,GACnC,MAAMK,EAAqB,IAAIh5B,SAAStd,GAAahO,KAAKojD,2BAA6Bp1C,IACjF+F,EAAU,CAAE+pC,OAAQ99C,KAAKojD,2BAA4BmB,OAAQvkD,KAAKikD,SAASO,eACzDxkD,KAAKwX,SAASitC,sBAAsBpC,EAAUtuC,UAE5DuwC,QACJtkD,KAAK0kD,eAAeT,GAC1BjkD,KAAKwX,SAASmtC,qBAAqBtC,EAAUzK,GAC7C53C,KAAKwX,SAASotC,0BAA0B5kD,KAAK0G,SAC7C1G,KAAK6kD,wBAAwBZ,EACjC,CACA,eACWjkD,KAAKikD,SACZjkD,KAAKmjD,0BAAqBpjC,UACnB/f,KAAKokD,aAChB,MAGApkD,KAAK8kD,WAAWb,EAASc,aAEjC,CACAD,WAAWhxB,GACP9zB,KAAKwX,SAASwtC,gBAAgBlxB,EAClC,CACAzI,8BAA8B44B,GAC1BjkD,KAAKilD,cAAchB,EAASrM,iBACtBqM,EAASiB,iBACnB,CACAD,cAAcrN,GACNA,EACA53C,KAAK0G,QAAQ+f,aAAa,qBAAsB,IAGhDzmB,KAAK0G,QAAQggB,gBAAgB,qBAErC,CACA2E,qBAAqB44B,SACXA,EAASM,QACnB,CACAM,wBAAwBZ,GACpBA,EAASkB,iBACb,EAGJ,MAAMC,UAAkBlC,EACpB4B,aACI9kD,KAAK0G,QAAQ+D,UAAY,EAC7B,CACI43C,eACA,OAAO,IAAIV,EAAS3hD,KAAK0G,QAC7B,EAGJ,MAAM2+C,EACFj3C,YAAYoJ,EAAU9Q,GAClB1G,KAAKslD,aAAgBjlD,IACbL,KAAKulD,sBAAsBllD,EAAMwE,QACjC7E,KAAKwlD,WAAanlD,SAGXL,KAAKwlD,UAChB,EAEJxlD,KAAKylD,YAAgBplD,IACbL,KAAKwlD,YAAcxlD,KAAKulD,sBAAsBllD,EAAMwE,SAAWxE,EAAMwE,kBAAkBsS,SACnFnX,KAAKwX,SAASkuC,yBAAyBrlD,EAAMwE,OAAQxE,EAAM6Q,OAAO+hB,IAAK5yB,EAAM6Q,OAAOy0C,iBACpF3lD,KAAKwlD,WAAW3hD,iBAChBxD,EAAMwD,iBACN7D,KAAKwX,SAASouC,qBAAqBvlD,EAAMwE,OAAQxE,EAAM6Q,OAAO+hB,IAAK5yB,EAAM6Q,OAAOy0C,uBAGjF3lD,KAAKwlD,UACf,EACDxlD,KAAK6lD,UAAcC,WACR9lD,KAAKwlD,UACf,EACDxlD,KAAKwX,SAAWA,EAChBxX,KAAK0G,QAAUA,CACnB,CACA4J,QACItQ,KAAK0G,QAAQqD,iBAAiB,QAAS/J,KAAKslD,cAC5CplD,SAAS6J,iBAAiB,cAAe/J,KAAKylD,aAC9CvlD,SAAS6J,iBAAiB,qBAAsB/J,KAAK6lD,UACzD,CACAp1C,OACIzQ,KAAK0G,QAAQiI,oBAAoB,QAAS3O,KAAKslD,cAC/CplD,SAASyO,oBAAoB,cAAe3O,KAAKylD,aACjDvlD,SAASyO,oBAAoB,qBAAsB3O,KAAK6lD,UAC5D,CACAN,sBAAsB1gD,GAClB,MAAM6B,EAAU7B,aAAkBsS,QAAUtS,EAASA,aAAkB8U,KAAO9U,EAAOmf,cAAgB,KACrG,OAAOtd,GAAWA,EAAQlG,QAAQ,sBAAwBR,KAAK0G,OACnE,EAGJ,MAAMq/C,EACF33C,YAAYoJ,EAAUnJ,GAClBrO,KAAKqQ,SAAU,EACfrQ,KAAK21C,cAAgB,KACjB31C,KAAKqO,YAAYM,oBAAoB,QAAS3O,KAAKslD,cAAc,GACjEtlD,KAAKqO,YAAYtE,iBAAiB,QAAS/J,KAAKslD,cAAc,EAAM,EAExEtlD,KAAKslD,aAAgBjlD,IACjB,GAAIA,aAAiB2lD,YAAchmD,KAAKimD,wBAAwB5lD,GAAQ,CACpE,MAAMwE,EAAUxE,EAAM6lD,cAAgB7lD,EAAM6lD,eAAe,IAAO7lD,EAAMwE,OAClEshD,EAAOnmD,KAAKomD,wBAAwBvhD,GAC1C,GAAIshD,GAwCpB,SAA6BrN,GACzB,GAAIA,EAAO3+B,aAAa,UAAW,CAC/B,IAAK,MAAMzT,KAAWxG,SAAS2iD,kBAAkB/J,EAAOj0C,QACpD,GAAI6B,aAAmBo8C,kBACnB,OAAO,EAEf,OAAO,CACX,CAEI,OAAO,CAEf,CAnD4BuD,CAAoBF,GAAO,CACnC,MAAM7gD,EAAWtF,KAAKsmD,mBAAmBH,GACrCnmD,KAAKwX,SAAS+uC,yBAAyBJ,EAAM7gD,EAAUjF,KACvDA,EAAMwD,iBACN7D,KAAKwX,SAASgvC,uBAAuBL,EAAM7gD,GAEnD,CACJ,GAEJtF,KAAKwX,SAAWA,EAChBxX,KAAKqO,YAAcA,CACvB,CACAiC,QACStQ,KAAKqQ,UACNrQ,KAAKqO,YAAYtE,iBAAiB,QAAS/J,KAAK21C,eAAe,GAC/D31C,KAAKqQ,SAAU,EAEvB,CACAI,OACQzQ,KAAKqQ,UACLrQ,KAAKqO,YAAYM,oBAAoB,QAAS3O,KAAK21C,eAAe,GAClE31C,KAAKqQ,SAAU,EAEvB,CACA41C,wBAAwB5lD,GACpB,QAAUA,EAAMwE,QAAUxE,EAAMwE,OAAO4hD,mBACnCpmD,EAAM48C,kBACN58C,EAAMqmD,MAAQ,GACdrmD,EAAMyU,QACNzU,EAAMwU,SACNxU,EAAMuU,SACNvU,EAAM0U,SACd,CACAqxC,wBAAwBvhD,GACpB,OAAOk3C,EAAuBl3C,EAAQ,2CAC1C,CACAyhD,mBAAmBH,GACf,OAAOrO,EAAUqO,EAAKpwC,aAAa,SAAW,GAClD,EAeJ,MAAM4wC,EACFv4C,YAAYoJ,EAAU9Q,GAClB1G,KAAKwX,SAAWA,EAChBxX,KAAK4mD,gBAAkB,IAAIb,EAAkB/lD,KAAM0G,EACvD,CACA4J,QACItQ,KAAK4mD,gBAAgBt2C,OACzB,CACAG,OACIzQ,KAAK4mD,gBAAgBn2C,MACzB,CACA81C,yBAAyBJ,EAAM7gD,EAAUqgD,GACrC,OAAQ3lD,KAAKwX,SAASqvC,6BAA6BV,EAAM7gD,EAAUqgD,IAC/DQ,EAAKhsC,aAAa,oBAC1B,CACAqsC,uBAAuBL,EAAM7gD,GACzB,MAAMsQ,EAAO1V,SAAS+1B,cAAc,QAEpC,IAAK,MAAOnxB,EAAMH,KAAUW,EAASi3C,aACjC3mC,EAAKknB,OAAO/uB,OAAOoB,OAAOjP,SAAS+1B,cAAc,SAAU,CAAExwB,KAFpD,SAE0DX,OAAMH,WAE7E,MAAM4R,EAASxI,OAAOoB,OAAO7J,EAAU,CAAEoiC,OAAQ,KACjD9xB,EAAK6Q,aAAa,aAAc,QAChC7Q,EAAK6Q,aAAa,SAAUlQ,EAAO2f,MACnCtgB,EAAK6Q,aAAa,SAAU,IAC5B,MAAM9P,EAASwvC,EAAKpwC,aAAa,qBAC7BY,GACAf,EAAK6Q,aAAa,SAAU9P,GAChC,MAAMmwC,EAAaX,EAAKpwC,aAAa,oBACjC+wC,GACAlxC,EAAK6Q,aAAa,mBAAoBqgC,GAC1C,MAAMC,EAAcnL,EAAeuK,GAC/BY,GACAnxC,EAAK6Q,aAAa,oBAAqBsgC,GAC3C,MAAMC,EAAeb,EAAKpwC,aAAa,sBACnCixC,GACApxC,EAAK6Q,aAAa,qBAAsBugC,GACxBb,EAAKhsC,aAAa,sBAElCvE,EAAK6Q,aAAa,oBAAqB,IAC3CzmB,KAAKwX,SAASyvC,4BAA4Bd,EAAM7gD,EAAUsQ,GAC1D1V,SAAS4D,KAAKyxC,YAAY3/B,GAC1BA,EAAK7L,iBAAiB,oBAAoB,IAAM6L,EAAK3R,UAAU,CAAEs3C,MAAM,IACvEjB,uBAAsB,IAAM1kC,EAAKq/B,iBACrC,EAGJ,MAAMiS,EACF94C,YAAYoJ,EAAU8qC,GAClBtiD,KAAKwX,SAAWA,EAChBxX,KAAKsiD,oBAAsBA,CAC/B,CACAnhD,yCAAyCqW,EAAU8qC,EAAqBnqC,GACpE,MAAMgvC,EAAQ,IAAInnD,KAAKwX,EAAU8qC,GACjC6E,EAAM/8B,cACAjS,IACNgvC,EAAMC,OACV,CACAh9B,QACI,IAAK,MAAMze,KAAM3L,KAAKsiD,oBAAqB,CACvC,MAAOC,EAAyBC,GAAuBxiD,KAAKsiD,oBAAoB32C,GAChF3L,KAAKwX,SAAS6vC,cAAc9E,EAAyBC,GACrDxiD,KAAKsnD,0CAA0C9E,EACnD,CACJ,CACA4E,QACI,IAAK,MAAMz7C,KAAM3L,KAAKsiD,oBAAqB,CACvC,MAAOC,GAA2BviD,KAAKsiD,oBAAoB32C,GAC3D3L,KAAKunD,wCAAwChF,GAC7CviD,KAAKwnD,uCAAuCjF,GAC5CviD,KAAKwX,SAASiwC,aAAalF,EAC/B,CACJ,CACA+E,0CAA0CI,GACtC,MAAMC,EAkBd,SAA8CD,GAC1C,MAAMhhD,EAAUxG,SAAS+1B,cAAc,QAGvC,OAFAvvB,EAAQ+f,aAAa,OAAQ,+BAC7B/f,EAAQ+f,aAAa,UAAWihC,EAAiB/7C,IAC1CjF,CACX,CAvB4BkhD,CAAqCF,GACzDA,EAAiB7I,YAAY8I,EACjC,CACAJ,wCAAwCG,GACpC,MAAMjO,EAAQiO,EAAiBG,WAAU,GACzCH,EAAiB7I,YAAYpF,EACjC,CACA+N,uCAAuCE,GACnC,MAAMC,EAAc3nD,KAAK8nD,mBAAmBJ,EAAiB/7C,IAC7Dg8C,SAA0DA,EAAY9I,YAAY6I,EACtF,CACAI,mBAAmBn8C,GACf,OAAO3L,KAAK+nD,aAAaxkC,MAAM7c,GAAYA,EAAQuE,SAAWU,GAClE,CACIo8C,mBACA,MAAO,IAAI7nD,SAASC,iBAAiB,mDACzC,EASJ,MAAM6nD,EACF55C,YAAY65C,EAAiB9D,EAAaK,EAAe5M,EAAWsQ,GAAa,GAC7EloD,KAAK4hD,cAAgB,KACrB5hD,KAAKioD,gBAAkBA,EACvBjoD,KAAKmkD,YAAcA,EACnBnkD,KAAK43C,UAAYA,EACjB53C,KAAKkoD,WAAaA,EAClBloD,KAAKwkD,cAAgBA,EACrBxkD,KAAK2uC,QAAU,IAAIrjB,SAAQ,CAACtd,EAASsmB,IAAYt0B,KAAKmoD,mBAAqB,CAAEn6C,UAASsmB,WAC1F,CACI4vB,mBACA,OAAO,CACX,CACIa,mBAEJ,CACAG,kBAEA,CACAC,kBACQnlD,KAAKmoD,qBACLnoD,KAAKmoD,mBAAmBn6C,iBACjBhO,KAAKmoD,mBAEpB,CACA98B,kCAAkClT,SACxB+uC,EAAMkB,4BAA4BpoD,KAAMA,KAAKsiD,oBAAqBnqC,EAC5E,CACAkwC,iCACI,MAAM3hD,EAAU1G,KAAKsoD,kBAAkBtG,2BA+B/C,SAA4Bt7C,GACxB,OAAOA,GAAmC,mBAAjBA,EAAQm9C,KACrC,EAhCY0E,CAAmB7hD,IACnBA,EAAQm9C,OAEhB,CACAwD,cAAc9E,GACNviD,KAAK4hD,eAELW,EAAwBnrC,SAASpX,KAAKioD,gBAAgBrG,iBACtD5hD,KAAK4hD,cAAgB5hD,KAAKioD,gBAAgBrG,cAElD,CACA6F,aAAalF,GACLA,EAAwBnrC,SAASpX,KAAK4hD,gBAAkB5hD,KAAK4hD,yBAAyB9M,cACtF90C,KAAK4hD,cAAciC,QACnB7jD,KAAK4hD,cAAgB,KAE7B,CACI0G,wBACA,OAAOtoD,KAAKmkD,YAAYtqC,YAAc7Z,KAAKmkD,YAAcnkD,KAAKioD,eAClE,CACIO,qBACA,OAAOxoD,KAAKioD,gBAAgBvhD,OAChC,CACI+hD,iBACA,OAAOzoD,KAAKmkD,YAAYz9C,OAC5B,CACI47C,0BACA,OAAOtiD,KAAKioD,gBAAgB7F,kCAAkCpiD,KAAKmkD,YACvE,EAMJ,MAAMuE,UAAsBV,EACxB55C,YAAYoJ,EAAUywC,EAAiB9D,EAAaK,EAAe5M,EAAWsQ,GAAa,GACvF1R,MAAMyR,EAAiB9D,EAAaK,EAAe5M,EAAWsQ,GAC9DloD,KAAKwX,SAAWA,CACpB,CACArW,qBAAqBqnD,EAAgBC,GACjC,IAAI5nC,EACJ,MAAM8nC,EAAmBzoD,SAAS0oD,cAClCD,EAAiBE,mBAAmBL,GACpCG,EAAiBG,iBACjB,MAAMC,EAAeN,EACfO,EAAoD,QAArCnoC,EAAKkoC,EAAapR,qBAAkC,IAAP92B,OAAgB,EAASA,EAAG+nC,cAC1FI,IACAA,EAAYH,mBAAmBE,GAC/BP,EAAejT,YAAYyT,EAAYC,mBAE/C,CACI/E,mBACA,OAAO,CACX,CACA74B,qBACUgvB,IACNr6C,KAAKooD,6BAA4B,KAC7BpoD,KAAKkpD,kBAAkB,IAE3BlpD,KAAKmpD,4BACC9O,IACNr6C,KAAKqoD,uCACChO,IACNr6C,KAAKopD,wBACT,CACAF,mBACIlpD,KAAKwX,SAAS6xC,gBAAgBrpD,KAAKwoD,eAAgBxoD,KAAKyoD,YACxDzoD,KAAKwkD,cAAcxkD,KAAKwoD,eAAgBxoD,KAAKyoD,WACjD,CACAU,sBACI,GAAInpD,KAAKwoD,eAAehR,YAAcx3C,KAAKyoD,WAAWjR,WAAY,CAC9D,MAAM9wC,EAAU1G,KAAKwoD,eAAec,kBAC9BC,GAA6F,MAoB9F,QADkB5kD,EAnBiB3E,KAAKwoD,eAAezyC,aAAa,2BAoBlD,SAATpR,GAA6B,UAATA,GAA8B,WAATA,EACpDA,EArBgG,OAC7F6kD,EA0BlB,SAA4B7kD,EAAOib,GAC/B,MAAa,QAATjb,GAA4B,UAATA,EACZA,EA5B+F,MAiC9G,CAjC6B8kD,CAAmBzpD,KAAKwoD,eAAezyC,aAAa,6BACrE,GAAIrP,EAEA,OADAA,EAAQk9C,eAAe,CAAE2F,QAAOC,cACzB,CAEf,CAaR,IAAmC7kD,EAZ3B,OAAO,CACX,CACAykD,yBACI,IAAK,MAAMzK,KAAsB3+C,KAAK0pD,kBAAmB,CACrD,MAAMC,EAAyB/P,EAAsB+E,GACrDA,EAAmBE,YAAY8K,EACnC,CACJ,CACID,wBACA,OAAO1pD,KAAKwoD,eAAeroD,iBAAiB,SAChD,EAmBJ,MAAMypD,EACFx7C,cACIpO,KAAK6pD,QAAS,EACd7pD,KAAK2E,MAAQ,EACb3E,KAAK8pD,SAAU,EACf9pD,KAAK+pD,QAAU,KACX/pD,KAAKgqD,SAAShqD,KAAK2E,MAAQ4Y,KAAKoU,SAAW,IAAI,EAEnD3xB,KAAKiqD,kBAAoBjqD,KAAKkqD,0BAC9BlqD,KAAKmqD,gBAAkBnqD,KAAKoqD,wBAC5BpqD,KAAKqqD,2BACLrqD,KAAKgqD,SAAS,EAClB,CACWM,wBACP,OAAO3P,CAAS;;;;;;;;;;kBAUNiP,EAAYW;oBACVX,EAAYW,kBAAoB,OAAOX,EAAYW,kBAAoB;;;KAIvF,CACAC,OACSxqD,KAAK8pD,UACN9pD,KAAK8pD,SAAU,EACf9pD,KAAKyqD,yBACLzqD,KAAK0qD,iBAEb,CACAC,OACQ3qD,KAAK8pD,UAAY9pD,KAAK6pD,SACtB7pD,KAAK6pD,QAAS,EACd7pD,KAAK4qD,qBAAoB,KACrB5qD,KAAK6qD,2BACL7qD,KAAK8qD,gBACL9qD,KAAK8pD,SAAU,EACf9pD,KAAK6pD,QAAS,CAAK,IAG/B,CACAG,SAASrlD,GACL3E,KAAK2E,MAAQA,EACb3E,KAAKiY,SACT,CACAoyC,2BACInqD,SAASyrB,KAAKo/B,aAAa/qD,KAAKiqD,kBAAmB/pD,SAASyrB,KAAKq/B,WACrE,CACAP,yBACIzqD,KAAKmqD,gBAAgBvpD,MAAMqqD,MAAQ,IACnCjrD,KAAKmqD,gBAAgBvpD,MAAMsqD,QAAU,IACrChrD,SAAS8oB,gBAAgB+hC,aAAa/qD,KAAKmqD,gBAAiBjqD,SAAS4D,MACrE9D,KAAKiY,SACT,CACA2yC,oBAAoBzyC,GAChBnY,KAAKmqD,gBAAgBvpD,MAAMsqD,QAAU,IACrC75B,WAAWlZ,EAA0C,IAAhCyxC,EAAYW,kBACrC,CACAM,2BACQ7qD,KAAKmqD,gBAAgBgB,YACrBjrD,SAAS8oB,gBAAgBwsB,YAAYx1C,KAAKmqD,gBAElD,CACAO,iBACS1qD,KAAKorD,kBACNprD,KAAKorD,gBAAkBnqD,OAAOoqD,YAAYrrD,KAAK+pD,QAASH,EAAYW,mBAE5E,CACAO,gBACI7pD,OAAOqqD,cAActrD,KAAKorD,wBACnBprD,KAAKorD,eAChB,CACAnzC,UACIqiC,uBAAsB,KAClBt6C,KAAKmqD,gBAAgBvpD,MAAMqqD,MAAW,GAAkB,GAAbjrD,KAAK2E,MAAb,GAA0B,GAErE,CACAulD,0BACI,MAAMxjD,EAAUxG,SAAS+1B,cAAc,SAMvC,OALAvvB,EAAQjB,KAAO,WACfiB,EAAQC,YAAcijD,EAAYU,WAC9BtqD,KAAK85C,WACLpzC,EAAQszC,MAAQh6C,KAAK85C,UAElBpzC,CACX,CACA0jD,wBACI,MAAM1jD,EAAUxG,SAAS+1B,cAAc,OAEvC,OADAvvB,EAAQ6kD,UAAY,qBACb7kD,CACX,CACIozC,eACA,OAAOC,EAAe,YAC1B,EAEJ6P,EAAYW,kBAAoB,IAEhC,MAAMiB,UAAqB7J,EACvBvzC,cACIooC,SAAS5xB,WACT5kB,KAAKyrD,mBAAqBzrD,KAAK6hD,SAC1B5sC,QAAQvO,IAwErB,SAA2BA,GAEvB,MAAkB,YADFA,EAAQw0C,SAE5B,CA3EkCwQ,CAAkBhlD,KACvC4G,KAAK5G,GAmFlB,SAA6BA,GAIzB,OAHIA,EAAQyT,aAAa,UACrBzT,EAAQ+f,aAAa,QAAS,IAE3B/f,CACX,CAxF8BilD,CAAoBjlD,KACrCiK,QAAO,CAACrF,EAAQ5E,KACjB,MAAM,UAAEklD,GAAcllD,EAChBmP,EAAU+1C,KAAatgD,EACvBA,EAAOsgD,GACP,CACEnmD,KAAMomD,EAAYnlD,GAClBolD,QAASC,EAAiBrlD,GAC1BqC,SAAU,IAElB,OAAOgF,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAC,EAAG7D,GAAS,CAAE,CAACsgD,GAAY79C,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAC,EAAG0G,GAAU,CAAE9M,SAAU,IAAI8M,EAAQ9M,SAAUrC,MAAc,GAC1J,CAAC,EACR,CACIslD,8BACA,OAAOj+C,OAAOD,KAAK9N,KAAKyrD,oBACnBx2C,QAAQ22C,GAAc5rD,KAAKyrD,mBAAmBG,GAAWE,UACzDh6C,KAAK,GACd,CACAm6C,+BAA+B5J,GAC3B,OAAOriD,KAAKksD,qCAAqC,SAAU7J,EAC/D,CACA8J,mCAAmC9J,GAC/B,OAAOriD,KAAKksD,qCAAqC,aAAc7J,EACnE,CACA6J,qCAAqCE,EAAa/J,GAC9C,OAAOt0C,OAAOD,KAAK9N,KAAKyrD,oBACnBx2C,QAAQ22C,KAAgBA,KAAavJ,EAASoJ,sBAC9Cn+C,KAAKs+C,GAAc5rD,KAAKyrD,mBAAmBG,KAC3C32C,QAAO,EAAGxP,UAAWA,GAAQ2mD,IAC7B9+C,KAAI,EAAGvE,UAAWrC,MAAeA,GAC1C,CACI2lD,0BACA,OAAOt+C,OAAOD,KAAK9N,KAAKyrD,oBAAoB96C,QAAO,CAACrF,EAAQsgD,KACxD,MAAM,KAAEnmD,EAAI,QAAEqmD,EAAO,SAAE/iD,GAAa/I,KAAKyrD,mBAAmBG,GAC5D,OAAY,MAARnmD,GAAiBqmD,EAGZ/iD,EAASuU,OAAS,EAChB,IAAIhS,KAAWvC,EAAS4J,MAAM,IAG9BrH,EANA,IAAIA,KAAWvC,EAO1B,GACD,GACP,CACAujD,aAAaxnD,GACT,MAAM4B,EAAU1G,KAAKusD,sBAAsBznD,GAC3C,OAAO4B,EAAUA,EAAQqP,aAAa,WAAa,IACvD,CACAw2C,sBAAsBznD,GAClB,OAAOiJ,OAAOD,KAAK9N,KAAKyrD,oBAAoB96C,QAAO,CAACrF,EAAQsgD,KACxD,MAAQ7iD,UAAWrC,IAAc1G,KAAKyrD,mBAAmBG,GACzD,OA2BZ,SAAsCllD,EAAS5B,GAE3C,MAAkB,QADF4B,EAAQw0C,WACIx0C,EAAQqP,aAAa,SAAWjR,CAChE,CA9BmB0nD,CAA6B9lD,EAAS5B,GAAQ4B,EAAU4E,CAAM,QACtEyU,EACP,EAEJ,SAAS8rC,EAAYnlD,GACjB,OAUJ,SAAyBA,GAErB,MAAkB,UADFA,EAAQw0C,SAE5B,CAbQuR,CAAgB/lD,GACT,SAiBf,SAA6BA,GACzB,MAAMuM,EAAUvM,EAAQw0C,UACxB,MAAkB,SAAXjoC,GAAkC,QAAXA,GAAoD,cAA/BvM,EAAQqP,aAAa,MAC5E,CAlBa22C,CAAoBhmD,GAClB,kBADN,CAGT,CACA,SAASqlD,EAAiBrlD,GACtB,MAAmD,UAA5CA,EAAQqP,aAAa,mBAChC,CAwBA,MAAM42C,UAAqBhL,EACvBvzC,YAAY1H,EAASkmD,GACjBpW,MAAM9vC,GACN1G,KAAK4sD,aAAeA,CACxB,CACAzrD,sBAAsBq5C,EAAO,IACzB,OAAOx6C,KAAK6sD,aAAatS,EAAkBC,GAC/C,CACAr5C,mBAAmBuF,GACf,OAAO1G,KAAK6sD,aAAanmD,EAAQixC,cACrC,CACAx2C,qBAAoB,KAAEwqB,EAAI,KAAE7nB,IACxB,OAAO,IAAI9D,KAAK8D,EAAM,IAAI0nD,EAAa7/B,GAC3C,CACA8tB,QACI,MAAMqT,EAAgB9sD,KAAK0G,QAAQmhD,WAAU,GACvCkF,EAAiB/sD,KAAK0G,QAAQvG,iBAAiB,UAC/C6sD,EAAuBF,EAAc3sD,iBAAiB,UAC5D,IAAK,MAAO6P,EAAOktB,KAAW6vB,EAAeh2C,UAAW,CACpD,MAAM0iC,EAAQuT,EAAqBh9C,GACnC,IAAK,MAAM2uB,KAAU8a,EAAMwT,gBACvBtuB,EAAOuuB,UAAW,EACtB,IAAK,MAAMvuB,KAAUzB,EAAO+vB,gBACxBxT,EAAM1lC,QAAQ4qB,EAAO3uB,OAAOk9C,UAAW,CAC/C,CACA,IAAK,MAAMC,KAAuBL,EAAc3sD,iBAAiB,0BAC7DgtD,EAAoBxoD,MAAQ,GAEhC,OAAO,IAAIgoD,EAAaG,EAAe9sD,KAAK4sD,aAChD,CACIQ,kBACA,OAAOptD,KAAK4sD,aAAalmD,OAC7B,CACI4xC,mBACA,IAAIz3B,EAEJ,OAAOi3B,EADyC,QAAlCj3B,EAAK7gB,KAAKqtD,WAAW,eAA4B,IAAPxsC,EAAgBA,EAAK,IAEjF,CACIysC,wBACA,OAAOttD,KAAKqtD,WAAW,gBAC3B,CACIE,oBACA,MAAiC,cAA1BvtD,KAAKstD,iBAChB,CACIE,kBACA,MAAiC,YAA1BxtD,KAAKstD,iBAChB,CACIpvB,kBACA,MAA2C,UAApCl+B,KAAKqtD,WAAW,gBAC3B,CACAA,WAAWvoD,GACP,OAAO9E,KAAK4sD,aAAaN,aAAa,SAASxnD,IACnD,GAIJ,SAAWoxC,GACPA,EAAyB,WAAI,aAC7BA,EAA2B,aAAI,eAC/BA,EAAyB,WAAI,aAC7BA,EAAuB,SAAI,UAC9B,CALD,CAKGA,IAAiBA,EAAe,CAAC,IAEpC,SAAWC,GACPA,EAAwB,YAAI,cAC5BA,EAAoB,QAAI,UACxBA,EAAqB,SAAI,WACzBA,EAAmB,OAAI,SACvBA,EAAsB,UAAI,WAC7B,CAND,CAMGA,IAAeA,EAAa,CAAC,IAChC,MAAMsX,EAAiB,CACnBl3C,OAAQ,UACRm3C,gBAAgB,EAChBC,oBAAqB,OACrBzF,YAAY,EACZ0F,eAAe,EACfC,qBAAqB,EACrBC,uBAAuB,GAE3B,IAAIC,GA6sBAC,IA5sBJ,SAAWD,GACPA,EAAiBA,EAAiC,eAAI,GAAK,iBAC3DA,EAAiBA,EAAiC,gBAAK,GAAK,iBAC5DA,EAAiBA,EAAsC,qBAAK,GAAK,qBACpE,CAJD,CAIGA,KAAqBA,GAAmB,CAAC,IAC5C,MAAME,GACF7/C,YAAYoJ,EAAUlS,EAAU4oD,EAAuBn6C,EAAU,CAAC,GAC9D/T,KAAKoT,WAAa4nC,IAClBh7C,KAAKmuD,cAAgB,CAAC,EACtBnuD,KAAKouD,kBAAmB,EACxBpuD,KAAK0tD,gBAAiB,EACtB1tD,KAAKquD,UAAW,EAChBruD,KAAK6tD,qBAAsB,EAC3B7tD,KAAK8tD,uBAAwB,EAC7B9tD,KAAKsuD,gBAAiB,EACtBtuD,KAAK2zB,MAAQwiB,EAAWiJ,YACxBp/C,KAAKwX,SAAWA,EAChBxX,KAAKsF,SAAWA,EAChBtF,KAAKkuD,sBAAwBA,GAAyBlT,IACtD,MAAM,OAAEzkC,EAAM,eAAEm3C,EAAc,SAAEjQ,EAAQ,SAAE4E,EAAQ,aAAEkM,EAAY,SAAEppD,EAAQ,oBAAEwoD,EAAmB,WAAEzF,EAAU,cAAE0F,EAAa,oBAAEC,EAAmB,sBAAEC,GAA2B//C,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAC,EAAGs+C,GAAiB15C,GAC7N/T,KAAKuW,OAASA,EACdvW,KAAK0tD,eAAiBA,EACtB1tD,KAAKy9C,SAAWA,EAChBz9C,KAAKqiD,SAAWA,EAChBriD,KAAKuuD,aAAeA,EACpBvuD,KAAKmF,SAAWA,EAChBnF,KAAKwuD,WAAaxuD,KAAKwX,SAASi3C,6BAA6BzuD,KAAKsF,SAAUtF,KAAKuW,QACjFvW,KAAK2tD,oBAAsBA,EAC3B3tD,KAAKkoD,WAAaA,EAClBloD,KAAK4tD,cAAgBA,EACrB5tD,KAAKquD,UAAYnG,EACjBloD,KAAK6tD,oBAAsBA,EAC3B7tD,KAAK8tD,sBAAwBA,CACjC,CACI/rB,cACA,OAAO/hC,KAAKwX,SAASuqB,OACzB,CACI2sB,WACA,OAAO1uD,KAAKwX,SAASk3C,IACzB,CACIjT,cACA,OAAOz7C,KAAKwX,SAASikC,OACzB,CACIkT,sBACA,OAAO3uD,KAAKy7C,QAAQmT,gCAAgC5uD,KAAKkuD,sBAC7D,CACIW,aACA,OAAO7uD,KAAKwuD,UAChB,CACAl+C,QACQtQ,KAAK2zB,OAASwiB,EAAWiJ,cACzBp/C,KAAK8uD,mBAAmB5Y,EAAa6Y,YACrC/uD,KAAK2zB,MAAQwiB,EAAW9lC,QACxBrQ,KAAK+hC,QAAQitB,aAAahvD,MAC1BA,KAAKwX,SAASw3C,aAAahvD,MAEnC,CACAyrC,SACQzrC,KAAK2zB,OAASwiB,EAAW9lC,UACrBrQ,KAAKs9B,SACLt9B,KAAKs9B,QAAQmO,SAEjBzrC,KAAKivD,eACLjvD,KAAK2zB,MAAQwiB,EAAW+Y,SAEhC,CACAzX,WACQz3C,KAAK2zB,OAASwiB,EAAW9lC,UACzBrQ,KAAK8uD,mBAAmB5Y,EAAaiZ,UACrCnvD,KAAK2zB,MAAQwiB,EAAWiZ,UACxBpvD,KAAKqvD,iBACArvD,KAAKouD,mBACNpuD,KAAK+hC,QAAQutB,eAAetvD,MAC5BA,KAAKwX,SAAS83C,eAAetvD,OAGzC,CACAuvD,OACQvvD,KAAK2zB,OAASwiB,EAAW9lC,UACzBrQ,KAAK2zB,MAAQwiB,EAAWgD,OACxBn5C,KAAK+hC,QAAQytB,YAAYxvD,MAEjC,CACAyvD,gBACI,IAAI5uC,EACJ,IAAK7gB,KAAK0tD,gBAAkB1tD,KAAK4tD,cAAe,CAC5C,MACMj3C,EAAS6kC,EADUx7C,KAAKsF,SAAS4wB,QAAmC,QAAxBrV,EAAK7gB,KAAKy9C,gBAA6B,IAAP58B,OAAgB,EAASA,EAAGqV,MAAQ,UAAYl2B,KAAKuW,QAEvIvW,KAAKy7C,QAAQiU,OAAO/4C,EAAQ3W,KAAKsF,SAAUtF,KAAKkuD,uBAChDluD,KAAK0tD,gBAAiB,CAC1B,CACJ,CACAiC,eACQ3vD,KAAK4vD,uBACL5vD,KAAK6vD,kBAEA7vD,KAAK8vD,uBAAyB9vD,KAAKs9B,UACxCt9B,KAAKs9B,QAAU,IAAI4e,EAAal8C,KAAM+1C,EAAYvkC,IAAKxR,KAAKsF,UAC5DtF,KAAKs9B,QAAQ3I,UAErB,CACAk7B,kBACQ7vD,KAAKmF,WACLnF,KAAK+vD,eACL/vD,KAAKgwD,iBACLhwD,KAAKiwD,gBAEb,CACAF,eACI/vD,KAAK8uD,mBAAmB5Y,EAAaga,cACrClwD,KAAK+hC,QAAQouB,oBAAoBnwD,KACrC,CACAgwD,eAAe7qD,EAAWnF,KAAKmF,UAE3B,GADAnF,KAAKmF,SAAWA,EACZA,EAAU,CACV,MAAM,WAAEk0C,GAAel0C,EACnBirD,GAAa/W,GACbr5C,KAAK+hC,QAAQsuB,sBAAsBrwD,MAGnCA,KAAK+hC,QAAQuuB,iCAAiCtwD,KAAMq5C,EAE5D,CACJ,CACA4W,gBACIjwD,KAAK8uD,mBAAmB5Y,EAAaqa,YACrCvwD,KAAK+hC,QAAQyuB,qBAAqBxwD,KACtC,CACAywD,eACI,GAAIzwD,KAAKmF,SAAU,CACf,MAAM,WAAEk0C,EAAU,aAAEM,GAAiB35C,KAAKmF,SAC1CnF,KAAKukD,QAAOl5B,UACJrrB,KAAK6tD,qBACL7tD,KAAK0wD,gBACL1wD,KAAK0uD,KAAKtK,qBACJpkD,KAAK0uD,KAAKtK,cAChBgM,GAAa/W,IAA+B,MAAhBM,SACtB35C,KAAK0uD,KAAKiC,WAAWhE,EAAaiE,eAAejX,IAAe,EAAO35C,KAAKkoD,WAAYloD,MAC9FA,KAAK6wD,gBACL7wD,KAAK+hC,QAAQ+uB,cAAc9wD,MAC3BA,KAAKy3C,mBAGCz3C,KAAK0uD,KAAKqC,YAAYpE,EAAaiE,eAAejX,GAAe35C,MACvEA,KAAK+hC,QAAQ+uB,cAAc9wD,MAC3BA,KAAKuvD,OACT,GAER,CACJ,CACAyB,oBACI,MAAM3O,EAAWriD,KAAK0uD,KAAKuC,6BAA6BjxD,KAAKsF,WAAatF,KAAKkxD,uBAC/E,GAAI7O,KAAcnK,EAAUl4C,KAAKsF,WAAa+8C,EAASP,UAAU5J,EAAUl4C,KAAKsF,cACzD,WAAftF,KAAKuW,QAAuB8rC,EAASkL,eACrC,OAAOlL,CAGnB,CACA6O,uBACI,GAAIlxD,KAAKuuD,aACL,OAAO5B,EAAaiE,eAAe5wD,KAAKuuD,aAEhD,CACA4C,oBACI,OAAmC,MAA5BnxD,KAAKgxD,mBAChB,CACAI,qBACI,MAAM/O,EAAWriD,KAAKgxD,oBACtB,GAAI3O,EAAU,CACV,MAAMzK,EAAY53C,KAAK8vD,qBACvB9vD,KAAKukD,QAAOl5B,UACRrrB,KAAK0wD,gBACD1wD,KAAKwuD,WACLxuD,KAAK+hC,QAAQ+uB,cAAc9wD,OAGvBA,KAAK0uD,KAAKtK,qBACJpkD,KAAK0uD,KAAKtK,oBACdpkD,KAAK0uD,KAAKiC,WAAWtO,EAAUzK,EAAW53C,KAAKkoD,WAAYloD,MACjEA,KAAK6wD,gBACL7wD,KAAK+hC,QAAQ+uB,cAAc9wD,MACtB43C,GACD53C,KAAKy3C,WAEb,GAER,CACJ,CACA4X,iBACI,IAAIxuC,EACA7gB,KAAKqxD,uBAAyBrxD,KAAKouD,mBAA8C,QAAxBvtC,EAAK7gB,KAAKmF,gBAA6B,IAAP0b,OAAgB,EAASA,EAAG04B,cACrHv5C,KAAK+hC,QAAQuvB,wBAAwBtxD,KAAKqxD,qBAAsB,CAC5D96C,OAAQ,UACRpR,SAAUnF,KAAKmF,SACf0oD,qBAAqB,EACrB3F,YAAY,IAEhBloD,KAAKouD,kBAAmB,EAEhC,CACAmD,qBACQvxD,KAAKwuD,YACLxuD,KAAKukD,QAAOl5B,UACRrrB,KAAK0wD,gBACL1wD,KAAK6wD,gBACL7wD,KAAKyvD,gBACLzvD,KAAK+hC,QAAQ+uB,cAAc9wD,KAAK,GAG5C,CACAy8C,eAAenf,GACPt9B,KAAK8tD,uBACLxwB,EAAQqgB,mBAAmBY,EAAcrc,YAEjD,CACAya,iBACI38C,KAAK+vD,cACT,CACA7S,iCAAiC8D,EAAUwQ,GAAa,CACxDnmC,mCAAmCiS,EAASn4B,GACxC,MAAMw0C,QAAqBx0C,EAASw0C,cAC9B,WAAEJ,EAAU,WAAEF,GAAel0C,EACf4a,MAAhB45B,EACA35C,KAAKgwD,eAAe,CAChB3W,WAAY0U,GAAiB0D,oBAC7BlY,gBAIJv5C,KAAKqxD,qBAAuBlsD,EAASo0C,WAAap0C,EAASG,cAAWya,EACtE/f,KAAKgwD,eAAe,CAAE3W,WAAYA,EAAYM,eAAcJ,eAEpE,CACAluB,gCAAgCiS,EAASn4B,GACrC,MAAMw0C,QAAqBx0C,EAASw0C,cAC9B,WAAEJ,EAAU,WAAEF,GAAel0C,EACf4a,MAAhB45B,EACA35C,KAAKgwD,eAAe,CAChB3W,WAAY0U,GAAiB0D,oBAC7BlY,eAIJv5C,KAAKgwD,eAAe,CAAE3W,WAAYA,EAAYM,eAAcJ,cAEpE,CACAuD,eAAekE,EAAU0Q,GACrB1xD,KAAKgwD,eAAe,CAChB3W,WAAY0U,GAAiB4D,eAC7BpY,YAAY,GAEpB,CACAwD,kBACI/8C,KAAKiwD,eACT,CACAY,gBACS7wD,KAAKquD,UAAaruD,KAAK0uD,KAAKkD,gBACV,WAAf5xD,KAAKuW,OACLvW,KAAK6xD,4BAA8B7xD,KAAKqjD,kBAAoBrjD,KAAK0uD,KAAK1K,cAGtEhkD,KAAKqjD,kBAAoBrjD,KAAK0uD,KAAK1K,cAEnChkD,KAAKwuD,YACLxuD,KAAKwX,SAASs6C,gCAAgC9xD,KAAK0uD,KAAKqD,qBAAsB/xD,KAAKsF,UAEvFtF,KAAKquD,UAAW,EAExB,CACAwD,2BACI,MAAM,eAAEG,GAAmBhyD,KAAK2uD,gBAChC,GAAIqD,EAEA,OADAhyD,KAAK0uD,KAAKlL,iBAAiBwO,IACpB,CAEf,CACA3O,iBACI,MAAMvK,EAASZ,EAAUl4C,KAAKsF,UAC9B,GAAc,MAAVwzC,EAEA,OADA94C,KAAK0uD,KAAKrL,eAAevK,IAClB,CAEf,CACAgW,mBAAmBmD,GACfjyD,KAAKmuD,cAAc8D,IAAU,IAAIriC,MAAOG,SAC5C,CACAmiC,mBACI,OAAOnkD,OAAOoB,OAAO,CAAC,EAAGnP,KAAKmuD,cAClC,CACA3S,0BAA0BjlC,GACtB,OAAQA,GACJ,IAAK,UACD,OAAOklC,QAAQC,aACnB,IAAK,UACL,IAAK,UACD,OAAOD,QAAQE,UAE3B,CACAiU,uBACI,MAA+B,iBAAjB5vD,KAAKmF,QACvB,CACA2qD,qBACI,OAAI9vD,KAAKwuD,aAGe,WAAfxuD,KAAKuW,QACFvW,KAAKmxD,oBAGNnxD,KAAKkoD,WAEpB,CACAwI,gBACS1wD,KAAKsuD,iBACNtuD,KAAK0uD,KAAKgC,cAAc1wD,KAAKqiD,UAAUn9C,MAAMm9C,GAAaA,GAAYriD,KAAK2tD,oBAAoBtL,KAC/FriD,KAAKsuD,gBAAiB,EAE9B,CACAjjC,aAAalT,GACTnY,KAAKivD,qBACC,IAAI3jC,SAAStd,IACfhO,KAAKmyD,MAAQ7X,uBAAsB,IAAMtsC,KAAU,UAEjDmK,WACCnY,KAAKmyD,KAChB,CACAlD,eACQjvD,KAAKmyD,QACLC,qBAAqBpyD,KAAKmyD,cACnBnyD,KAAKmyD,MAEpB,EAEJ,SAAS/B,GAAa/W,GAClB,OAAOA,GAAc,KAAOA,EAAa,GAC7C,CAEA,MAAMgZ,GACFjkD,YAAYkkD,GACRtyD,KAAKuyD,YAAc,IAAI3I,EACvB5pD,KAAKwyD,gBAAkB,KACnBxyD,KAAKuyD,YAAY/H,MAAM,EAE3BxqD,KAAKsyD,QAAUA,CACnB,CACAhB,wBAAwBhsD,EAAUyO,GAC9B/T,KAAKmhC,UAAUsxB,WAAWntD,GAAWyO,aAAyC,EAASA,EAAQm6C,wBAA0BlT,IAAQjnC,EACrI,CACAi7C,aAAa/xB,GACTj9B,KAAKsF,SAAW23B,EAAM33B,SACtB23B,EAAMm0B,qBACNn0B,EAAM0yB,eACN1yB,EAAMs0B,oBACV,CACApB,oBAAoBlzB,GAChBj9B,KAAKuyD,YAAYvI,SAAS,GACtB/sB,EAAMk0B,qBAAuC,WAAhBl0B,EAAM1mB,OACnCvW,KAAK0yD,iCAGL1yD,KAAKwyD,iBAEb,CACAnC,sBAAsBpzB,GAClBA,EAAMwzB,cACV,CACAH,iCAAiCrzB,EAAOoc,GACpC,OAAQA,GACJ,KAAK0U,GAAiB4D,eACtB,KAAK5D,GAAiB4E,eACtB,KAAK5E,GAAiB0D,oBAClB,OAAOzxD,KAAKuF,OAAO,CACfuuB,OAAQ,iBACRxd,QAAS,CACL+iC,gBAGZ,QACI,OAAOpc,EAAMwzB,eAEzB,CACAD,qBAAqBoC,GACjB5yD,KAAKuyD,YAAYvI,SAAS,GAC1BhqD,KAAK6yD,sBACT,CACAvD,eAAesD,GAAU,CACzBE,gBAAgBh/B,GACZ9zB,KAAKuF,OAAOuuB,EAChB,CACA07B,YAAYoD,GAAU,CACtB9B,cAAc8B,GAAU,CACxBzR,sBAAsB4R,GAClB/yD,KAAKuyD,YAAYvI,SAAS,GAC1BhqD,KAAKgzD,+BACT,CACAtR,uBAAuBqR,GACnB/yD,KAAKuyD,YAAYvI,SAAS,GAC1BhqD,KAAKizD,qBACT,CACAP,iCACI1yD,KAAKkzD,wBAA0BjyD,OAAOowB,WAAWrxB,KAAKwyD,gBAAiBxyD,KAAKsyD,QAAQa,iBACxF,CACAN,uBACI7yD,KAAKuyD,YAAY5H,OACmB,MAAhC3qD,KAAKkzD,0BACLjyD,OAAOkwB,aAAanxB,KAAKkzD,gCAClBlzD,KAAKkzD,wBAEpB,CACAF,gCACuC,MAA/BhzD,KAAKozD,yBACLpzD,KAAKozD,uBAAyBnyD,OAAOowB,WAAWrxB,KAAKwyD,gBAAiBxyD,KAAKsyD,QAAQa,kBAE3F,CACAF,sBACIjzD,KAAKuyD,YAAY5H,OACkB,MAA/B3qD,KAAKozD,yBACLnyD,OAAOkwB,aAAanxB,KAAKozD,+BAClBpzD,KAAKozD,uBAEpB,CACA7tD,OAAOuuB,GACH,IAAIjT,EACJqN,EAAS,eAAgB,CAAEhd,OAAQ4iB,IACnC7yB,OAAOqE,SAAS4wB,MAAiC,QAAxBrV,EAAK7gB,KAAKsF,gBAA6B,IAAPub,OAAgB,EAASA,EAAG3M,aAAejT,OAAOqE,SAAS4wB,IACxH,CACIiL,gBACA,OAAOnhC,KAAKsyD,QAAQnxB,SACxB,EAGJ,MAAMkyB,GACFjlD,cACIpO,KAAKqQ,SAAU,EACfrQ,KAAKszD,oBAAwBxN,IACzB,MAAMyN,EAAgB,IAAIrzD,SAASC,iBAAiB,+BACpD,IAAK,MAAMuG,KAAW6sD,EAClB7sD,EAAQzC,QAEf,CACL,CACAqM,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACftG,iBAAiB,qBAAsB/J,KAAKszD,qBAAqB,GAEzE,CACA7iD,OACQzQ,KAAKqQ,UACLrQ,KAAKqQ,SAAU,EACf1B,oBAAoB,qBAAsB3O,KAAKszD,qBAAqB,GAE5E,EAGJ,MAAME,GACFplD,YAAYkkD,EAAS5rD,GACjB1G,KAAKsyD,QAAUA,EACftyD,KAAK0G,QAAUA,EACf1G,KAAK4mD,gBAAkB,IAAIvB,EAAgBrlD,KAAM0G,GACjD1G,KAAKyzD,mBAAqB,IAAIhR,EAAmBziD,KAAM0G,EAC3D,CACA4J,QACItQ,KAAK4mD,gBAAgBt2C,QACrBtQ,KAAKyzD,mBAAmBnjD,OAC5B,CACAG,OACIzQ,KAAK4mD,gBAAgBn2C,OACrBzQ,KAAKyzD,mBAAmBhjD,MAC5B,CACAi1C,yBAAyBh/C,EAASgtD,EAAW5N,GACzC,OAAO9lD,KAAK2zD,eAAejtD,EAC/B,CACAk/C,qBAAqBl/C,EAASusB,EAAK5yB,GAC/B,MAAM8xD,EAAQnyD,KAAK4zD,iBAAiBltD,GAChCyrD,GACAA,EAAM36C,SAASouC,qBAAqBl/C,EAASusB,EAAK5yB,EAE1D,CACA2iD,eAAet8C,EAASwuC,GACpB,OAA0C,MAAlCxuC,EAAQlG,QAAQ,gBACpBR,KAAK6zD,aAAantD,EAASwuC,IAC3Bl1C,KAAK2zD,eAAejtD,EAASwuC,EACrC,CACA+N,cAAcv8C,EAASwuC,GACnB,MAAMid,EAAQnyD,KAAK4zD,iBAAiBltD,EAASwuC,GACzCid,GACAA,EAAM36C,SAASyrC,cAAcv8C,EAASwuC,EAE9C,CACA2e,aAAaj+C,EAAMs/B,GACf,IAAIr0B,EACJ,MAAMtK,EAAS6hC,EAAUxiC,EAAMs/B,GACzB3gC,EAAOvU,KAAK0G,QAAQixC,cAAcj3C,cAAc,2BAChD43C,EAAeR,EAA8E,QAAnEj3B,EAAKtM,aAAmC,EAASA,EAAKtJ,eAA4B,IAAP4V,EAAgBA,EAAK,KAChI,OAAO7gB,KAAK2zD,eAAe/9C,EAAMs/B,IAAcmD,EAAoB9hC,EAAQ+hC,EAC/E,CACAqb,eAAejtD,EAASwuC,GAIpB,GAHsBxuC,aAAmB+uC,gBACnCz1C,KAAKsyD,QAAQwB,wBAAwBptD,EAASwuC,GAC9Cl1C,KAAKsyD,QAAQyB,qBAAqBrtD,GACrB,CACf,MAAMyrD,EAAQnyD,KAAK4zD,iBAAiBltD,EAASwuC,GAC7C,QAAOid,GAAQA,GAASzrD,EAAQlG,QAAQ,cAC5C,CAEI,OAAO,CAEf,CACAozD,iBAAiBltD,EAASwuC,GACtB,MAAMvpC,GAAMupC,aAA6C,EAASA,EAAUn/B,aAAa,sBAAwBrP,EAAQqP,aAAa,oBACtI,GAAIpK,GAAY,QAANA,EAAc,CACpB,MAAMwmD,EAAQnyD,KAAK0G,QAAQhG,cAAc,IAAIiL,qBAC7C,GAAIwmD,aAAiB5b,EACjB,OAAO4b,CAEf,CACJ,EAGJ,MAAM6B,GACF5lD,YAAYoJ,GACRxX,KAAKkuD,sBAAwBlT,IAC7Bh7C,KAAK2uD,gBAAkB,CAAC,EACxB3uD,KAAKqQ,SAAU,EACfrQ,KAAKi0D,YAAa,EAClBj0D,KAAKk0D,WAAc7zD,IACf,GAAIL,KAAKm0D,uBAAwB,CAC7B,MAAM,MAAEC,GAAU/zD,EAAMszB,OAAS,CAAC,EAClC,GAAIygC,EAAO,CACPp0D,KAAKsF,SAAW,IAAI0yC,IAAI/2C,OAAOqE,SAAS4wB,MACxC,MAAM,sBAAEg4B,GAA0BkG,EAClCp0D,KAAKkuD,sBAAwBA,EAC7BluD,KAAKwX,SAAS68C,iDAAiDr0D,KAAKsF,SAAU4oD,EAClF,CACJ,GAEJluD,KAAKs0D,WAAajpC,MAAOy6B,UA10DtBx6B,QAAQtd,UA40DPhO,KAAKi0D,YAAa,CAAI,EAE1Bj0D,KAAKwX,SAAWA,CACpB,CACAlH,QACStQ,KAAKqQ,UACNtG,iBAAiB,WAAY/J,KAAKk0D,YAAY,GAC9CnqD,iBAAiB,OAAQ/J,KAAKs0D,YAAY,GAC1Ct0D,KAAKqQ,SAAU,EACfrQ,KAAK6H,QAAQ,IAAImwC,IAAI/2C,OAAOqE,SAAS4wB,OAE7C,CACAzlB,OACQzQ,KAAKqQ,UACL1B,oBAAoB,WAAY3O,KAAKk0D,YAAY,GACjDvlD,oBAAoB,OAAQ3O,KAAKs0D,YAAY,GAC7Ct0D,KAAKqQ,SAAU,EAEvB,CACAwB,KAAKvM,EAAU4oD,GACXluD,KAAK0vD,OAAOjU,QAAQE,UAAWr2C,EAAU4oD,EAC7C,CACArmD,QAAQvC,EAAU4oD,GACdluD,KAAK0vD,OAAOjU,QAAQC,aAAcp2C,EAAU4oD,EAChD,CACAwB,OAAO/4C,EAAQrR,EAAU4oD,EAAwBlT,KAC7C,MAAMrnB,EAAQ,CAAEygC,MAAO,CAAElG,0BACzBv3C,EAAOtH,KAAKosC,QAAS9nB,EAAO,GAAIruB,EAAS4wB,MACzCl2B,KAAKsF,SAAWA,EAChBtF,KAAKkuD,sBAAwBA,CACjC,CACAU,gCAAgCV,GAC5B,OAAOluD,KAAK2uD,gBAAgBT,IAA0B,CAAC,CAC3D,CACAqG,sBAAsBC,GAClB,MAAM,sBAAEtG,GAA0BluD,KAC5B2uD,EAAkB3uD,KAAK2uD,gBAAgBT,GAC7CluD,KAAK2uD,gBAAgBT,GAAyBngD,OAAOoB,OAAOpB,OAAOoB,OAAO,CAAC,EAAGw/C,GAAkB6F,EACpG,CACAC,mCACI,IAAI5zC,EACC7gB,KAAK00D,4BACN10D,KAAK00D,0BAAiE,QAApC7zC,EAAK46B,QAAQkZ,yBAAsC,IAAP9zC,EAAgBA,EAAK,OACnG46B,QAAQkZ,kBAAoB,SAEpC,CACAC,uCACQ50D,KAAK00D,4BACLjZ,QAAQkZ,kBAAoB30D,KAAK00D,iCAC1B10D,KAAK00D,0BAEpB,CACAP,uBACI,OAAOn0D,KAAK60D,cAChB,CACAA,eACI,OAAO70D,KAAKi0D,YAAqC,YAAvB/zD,SAASqrB,UACvC,EAGJ,MAAMupC,GACF1mD,YAAYoJ,GACRxX,KAAKwX,SAAWA,CACpB,CACAu9C,aAAazvD,EAAUyO,EAAU,CAAC,GAC1B/T,KAAKwX,SAASw9C,iCAAiC1vD,EAAUyO,EAAQwC,UAC7D8hC,EAAoB/yC,EAAUtF,KAAK0uD,KAAKrM,SAAS/J,cACjDt4C,KAAKwX,SAAS85C,wBAAwBhsD,EAAUyO,GAGhD9S,OAAOqE,SAAS4wB,KAAO5wB,EAAS4O,WAG5C,CACAu+C,WAAW1a,EAAWmW,EAAuBn6C,EAAU,CAAC,GACpD/T,KAAKyQ,OACLzQ,KAAKi1D,aAAe,IAAIhH,GAAMjuD,KAAM83C,EAAUC,GAAYmW,EAAuBngD,OAAOoB,OAAO,CAAEsuC,SAAUz9C,KAAKsF,UAAYyO,IAC5H/T,KAAKi1D,aAAa3kD,OACtB,CACA4kD,WAAWt/C,EAAMs/B,GACbl1C,KAAKyQ,OACLzQ,KAAKkhD,eAAiB,IAAIjC,EAAej/C,KAAM4V,EAAMs/B,GAAW,GAChEl1C,KAAKkhD,eAAe5wC,OACxB,CACAG,OACQzQ,KAAKkhD,iBACLlhD,KAAKkhD,eAAezwC,cACbzQ,KAAKkhD,gBAEZlhD,KAAKi1D,eACLj1D,KAAKi1D,aAAaxpB,gBACXzrC,KAAKi1D,aAEpB,CACIlzB,cACA,OAAO/hC,KAAKwX,SAASuqB,OACzB,CACI2sB,WACA,OAAO1uD,KAAKwX,SAASk3C,IACzB,CACIjT,cACA,OAAOz7C,KAAKwX,SAASikC,OACzB,CACA0F,sBAAsBD,GACgC,mBAAvClhD,KAAK+hC,QAAQof,uBACpBnhD,KAAK+hC,QAAQof,sBAAsBD,EAE3C,CACA71B,0CAA0C61B,EAAgBlE,GACtD,GAAIkE,GAAkBlhD,KAAKkhD,eAAgB,CACvC,MAAMvH,QAAqBqD,EAAcrD,aACzC,GAAIA,EAAc,CACd,MAAMkU,EAAsB3M,EAAevqC,QAAUo/B,EAAYvkC,IAC5Dq8C,GACD7tD,KAAK0uD,KAAKyG,qBAEd,MAAM,WAAE9b,EAAU,WAAEE,GAAeyD,EAE7BoY,EAAe,CACjB7+C,OAFWvW,KAAKq1D,2BAA2BnU,GAG3C2M,sBACA1oD,SAAU,CAAEk0C,aAAYM,eAAcJ,eAE1Cv5C,KAAK+0D,aAAa/X,EAAc13C,SAAU8vD,EAC9C,CACJ,CACJ,CACA/pC,uCAAuC61B,EAAgBlE,GACnD,MAAMrD,QAAqBqD,EAAcrD,aACzC,GAAIA,EAAc,CACd,MAAM0I,EAAWsK,EAAaiE,eAAejX,GACzCqD,EAAc1D,kBACRt5C,KAAK0uD,KAAKqC,YAAY1O,EAAUriD,KAAKi1D,oBAGrCj1D,KAAK0uD,KAAKiC,WAAWtO,GAAU,GAAO,EAAMriD,KAAKi1D,cAE3Dj1D,KAAK0uD,KAAK1K,cACVhkD,KAAK0uD,KAAKyG,oBACd,CACJ,CACA5T,sBAAsBL,EAAgBl3C,GAClChF,QAAQgF,MAAMA,EAClB,CACA03C,uBAAuBR,GACgC,mBAAxClhD,KAAK+hC,QAAQ2f,wBACpB1hD,KAAK+hC,QAAQ2f,uBAAuBR,EAE5C,CACA8N,aAAa/xB,GACTj9B,KAAKwX,SAASw3C,aAAa/xB,EAC/B,CACAqyB,eAAeryB,GACXj9B,KAAKwX,SAAS83C,eAAeryB,EACjC,CACAwxB,6BAA6BnpD,EAAUiR,GACnC,MAAMuiC,EAASZ,EAAU5yC,GACnBgwD,EAAgBpd,EAAUl4C,KAAK0uD,KAAKqD,sBACpCwD,EAAgC,YAAXh/C,QAA0C,IAAXuiC,EAC1D,MAAmB,YAAXviC,GACJsiC,EAAcvzC,KAAcuzC,EAAc74C,KAAK0uD,KAAKqD,wBACnDwD,GAAiC,MAAVzc,GAAkBA,IAAWwc,EAC7D,CACAxD,gCAAgC0D,EAAQC,GACpCz1D,KAAKwX,SAASs6C,gCAAgC0D,EAAQC,EAC1D,CACInwD,eACA,OAAOtF,KAAKy7C,QAAQn2C,QACxB,CACI4oD,4BACA,OAAOluD,KAAKy7C,QAAQyS,qBACxB,CACAmH,4BAA2B,UAAEngB,EAAS,YAAEgK,IACpC,OAAOtD,EAAe1G,EAAWgK,IAAgB,SACrD,GAIJ,SAAW8O,GACPA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAuB,YAAI,GAAK,cAC1CA,EAAUA,EAAoB,SAAI,GAAK,UAC1C,CALD,CAKGA,KAAcA,GAAY,CAAC,IAC9B,MAAM0H,GACFtnD,YAAYoJ,GACRxX,KAAK21D,MAAQ3H,GAAU4H,QACvB51D,KAAKqQ,SAAU,EACfrQ,KAAK61D,oBAAsB,KACvB,MAAM,WAAEtqC,GAAevrB,KACL,eAAdurB,EACAvrB,KAAK81D,oBAEc,YAAdvqC,GACLvrB,KAAK+1D,gBACT,EAEJ/1D,KAAKg2D,eAAiB,KAClBh2D,KAAKwX,SAASw+C,gBAAgB,EAElCh2D,KAAKwX,SAAWA,CACpB,CACAlH,QACStQ,KAAKqQ,UACFrQ,KAAK21D,OAAS3H,GAAU4H,UACxB51D,KAAK21D,MAAQ3H,GAAU5W,SAE3Bl3C,SAAS6J,iBAAiB,mBAAoB/J,KAAK61D,qBAAqB,GACxE9rD,iBAAiB,WAAY/J,KAAKg2D,gBAAgB,GAClDh2D,KAAKqQ,SAAU,EAEvB,CACAI,OACQzQ,KAAKqQ,UACLnQ,SAASyO,oBAAoB,mBAAoB3O,KAAK61D,qBAAqB,GAC3ElnD,oBAAoB,WAAY3O,KAAKg2D,gBAAgB,GACrDh2D,KAAKqQ,SAAU,EAEvB,CACAylD,oBACQ91D,KAAK21D,OAAS3H,GAAU5W,UACxBp3C,KAAK21D,MAAQ3H,GAAUiI,YACvBj2D,KAAKwX,SAAS0+C,wBAEtB,CACAH,iBACI/1D,KAAK81D,oBACD91D,KAAK21D,OAAS3H,GAAUiI,cACxBj2D,KAAK21D,MAAQ3H,GAAUvW,SACvBz3C,KAAKwX,SAASy8C,aAEtB,CACI1oC,iBACA,OAAOrrB,SAASqrB,UACpB,EAGJ,MAAM4qC,GACF/nD,YAAYoJ,GACRxX,KAAKqQ,SAAU,EACfrQ,KAAKo2D,SAAW,KACZp2D,KAAKq2D,eAAe,CAAE5S,EAAGxiD,OAAOq1D,YAAa5S,EAAGziD,OAAOs1D,aAAc,EAEzEv2D,KAAKwX,SAAWA,CACpB,CACAlH,QACStQ,KAAKqQ,UACNtG,iBAAiB,SAAU/J,KAAKo2D,UAAU,GAC1Cp2D,KAAKo2D,WACLp2D,KAAKqQ,SAAU,EAEvB,CACAI,OACQzQ,KAAKqQ,UACL1B,oBAAoB,SAAU3O,KAAKo2D,UAAU,GAC7Cp2D,KAAKqQ,SAAU,EAEvB,CACAgmD,eAAep7B,GACXj7B,KAAKwX,SAASg/C,sBAAsBv7B,EACxC,EAGJ,MAAMw7B,GACFlS,QAAO,SAAE/F,IACL0I,EAAMkB,4BAA4BpoD,KAO1C,SAA2Cw+C,GACvC,MAAMkY,EAA8BxU,EAA0BhiD,SAAS8oB,iBACjEs5B,EAAsB,CAAC,EAC7B,IAAK,MAAMqU,KAA8BD,EAA6B,CAClE,MAAM,GAAE/qD,GAAOgrD,EACf,IAAK,MAAMlY,KAAiBD,EAASr+C,iBAAiB,gBAAiB,CACnE,MAAMy2D,EAAkBzU,EAAwB1D,EAAcG,gBAAgB3zC,QAASU,GACnFirD,IACAtU,EAAoB32C,GAAM,CAACgrD,EAA4BC,GAE/D,CACJ,CACA,OAAOtU,CACX,CApBgDuU,CAAkCrY,IAAW,IAAMt+C,SAAS8oB,gBAAgBusB,YAAYiJ,IACpI,CACA6I,cAAc9E,EAAyBC,GACnCA,EAAoB3D,YAAY0D,EAAwBsF,WAAU,GACtE,CACAJ,eAAiB,EAiBrB,MAAMqP,GACF1oD,YAAYoJ,GACRxX,KAAK+2D,QAAU,IAAItoD,IACnBzO,KAAKqQ,SAAU,EACfrQ,KAAKg3D,qBAAyB32D,IAC1B,MAAM8E,EAkDlB,SAAgC9E,GAC5B,IAAIwgB,EACJ,MAAMm8B,EAAwC,QAAvBn8B,EAAKxgB,EAAM6Q,cAA2B,IAAP2P,OAAgB,EAASA,EAAGm8B,cAClF,GAAIA,aAAyBhE,EACzB,OAAOgE,CAEf,CAxD6Bia,CAAuB52D,GACpC8E,GAwDhB,SAA+BA,GAC3B,IAAI0b,EAEJ,OADoD,QAA/BA,EAAK1b,EAAS+8B,mBAAgC,IAAPrhB,EAAgBA,EAAK,IAC9D43B,WAAW8F,EAAcrc,YAChD,CA5D4Bg1B,CAAsB/xD,KAClC9E,EAAMwD,iBACN7D,KAAKm3D,uBAAuBhyD,GAEnC,EACDnF,KAAKo3D,oBAAuB/2D,IACpBL,KAAKqQ,SAAgC,iBAAdhQ,EAAM+E,MAC7BpF,KAAKq3D,mBAAmBh3D,EAAM+E,KAClC,EAEJpF,KAAKwX,SAAWA,CACpB,CACAlH,QACStQ,KAAKqQ,UACNrQ,KAAKqQ,SAAU,EACftG,iBAAiB,8BAA+B/J,KAAKg3D,sBAAsB,GAEnF,CACAvmD,OACQzQ,KAAKqQ,UACLrQ,KAAKqQ,SAAU,EACf1B,oBAAoB,8BAA+B3O,KAAKg3D,sBAAsB,GAEtF,CACAM,oBAAoBp6B,GACXl9B,KAAKu3D,wBAAwBr6B,KAC9Bl9B,KAAK+2D,QAAQhzD,IAAIm5B,GACjBA,EAAOnzB,iBAAiB,UAAW/J,KAAKo3D,qBAAqB,GAErE,CACAI,uBAAuBt6B,GACfl9B,KAAKu3D,wBAAwBr6B,KAC7Bl9B,KAAK+2D,QAAQhoD,OAAOmuB,GACpBA,EAAOvuB,oBAAoB,UAAW3O,KAAKo3D,qBAAqB,GAExE,CACAG,wBAAwBr6B,GACpB,OAAOl9B,KAAK+2D,QAAQz+C,IAAI4kB,EAC5B,CACA7R,6BAA6BlmB,GACzB,MAAMq1C,QAAar1C,EAASw0C,aACxBa,GACAx6C,KAAKq3D,mBAAmB7c,EAEhC,CACA6c,mBAAmB7c,GACfx6C,KAAKwX,SAASigD,0BAA0BlZ,EAAcmZ,KAAKld,GAC/D,EAeJ,MAAMmd,WAAsB3P,EACxB7mD,qBAAqBqnD,EAAgBC,GACjC,MAAM,gBAAEz/B,EAAe,KAAEllB,GAAS5D,SAClC8oB,EAAgB4uC,aAAanP,EAAY3kD,EAC7C,CACAunB,eACIrrB,KAAK63D,qBACL73D,KAAKopD,wBACT,CACAyO,qBACI,MAAM,gBAAE7uC,EAAe,KAAE2C,GAASzrB,SAClC8oB,EAAgB4uC,aAAa53D,KAAK83D,QAASnsC,GAC3C3rB,KAAKwkD,cAAcxkD,KAAKwoD,eAAgBxoD,KAAKyoD,WACjD,CACAW,yBACI,IAAK,MAAM2O,KAAsB/3D,KAAKg4D,eAAgB,CAClD,MAAM7M,EAAa4M,EAAmB5M,WACtC,GAAIA,EAAY,CACZ,MAAMzkD,EAAUkzC,EAAsBme,GACtC5M,EAAWyM,aAAalxD,EAASqxD,EACrC,CACJ,CACJ,CACID,cACA,OAAO93D,KAAKmkD,YAAYyI,aAAalmD,OACzC,CACIsxD,qBACA,OAAO93D,SAAS8oB,gBAAgB7oB,iBAAiB,SACrD,EAGJ,MAAM83D,WAAqBjQ,EACvB7mD,qBAAqBqnD,EAAgBC,GAC7BvoD,SAAS4D,MAAQ2kD,aAAsByP,gBACvCh4D,SAAS4D,KAAK+6C,YAAY4J,GAG1BvoD,SAAS8oB,gBAAgBusB,YAAYkT,EAE7C,CACIvE,mBACA,OAAOlkD,KAAKmkD,YAAYjmB,aAAel+B,KAAKm4D,2BAChD,CACIpT,mBACA,OAAK/kD,KAAKmkD,YAAYjmB,YAKjBl+B,KAAKm4D,iCAAV,EACW,CACHrkC,OAAQ,4BANL,CACHA,OAAQ,gCAQpB,CACAzI,8BACUrrB,KAAKo4D,WACf,CACA/sC,eACQrrB,KAAKkoD,kBACCloD,KAAKq4D,aAEnB,CACAlT,kBACI3O,MAAM2O,kBACDnlD,KAAK43C,WACN53C,KAAKqoD,gCAEb,CACIiQ,0BACA,OAAOt4D,KAAKioD,gBAAgB2E,YAChC,CACI2L,sBACA,OAAOv4D,KAAKmkD,YAAYyI,YAC5B,CACInE,iBACA,OAAOzoD,KAAKmkD,YAAYz9C,OAC5B,CACA2kB,kBACI,MAAMmtC,EAAqBx4D,KAAKy4D,2BAC1BC,EAAwB14D,KAAK24D,gCACnC34D,KAAK44D,kCACCJ,QACAE,CACV,CACArtC,0BACUrrB,KAAKooD,6BAA4B/8B,UACnCrrB,KAAK64D,wBACC74D,KAAK84D,eAAe,GAElC,CACIX,kCACA,OAAOn4D,KAAKs4D,oBAAoBtM,yBAA2BhsD,KAAKu4D,gBAAgBvM,uBACpF,CACA3gC,sCACI,MAAM0tC,EAAkB,GACxB,IAAK,MAAMryD,KAAW1G,KAAKg5D,0BACvBD,EAAgBlnD,KAAKupC,EAAY10C,IACjCxG,SAASyrB,KAAK4pB,YAAY7uC,SAExB4kB,QAAQ0oB,IAAI+kB,EACtB,CACAH,4BACI,IAAK,MAAMlyD,KAAW1G,KAAKi5D,sBACvB/4D,SAASyrB,KAAK4pB,YAAYqE,EAAsBlzC,GAExD,CACA2kB,iCACI,MAAM6tC,EAAkB,IAAIl5D,KAAKm5D,4BACjC,IAAK,MAAMzyD,KAAW1G,KAAKo5D,+BAClBp5D,KAAKq5D,8BAA8B3yD,EAASwyD,IAC7Ch5D,SAASyrB,KAAK6pB,YAAY9uC,GAGlC,IAAK,MAAMA,KAAWwyD,EAClBh5D,SAASyrB,KAAK4pB,YAAY7uC,EAElC,CACA2yD,8BAA8B3yD,EAAS4yD,GACnC,IAAK,MAAOtpD,EAAOy4C,KAAe6Q,EAAYviD,UAAW,CACrD,GAAuB,SAAnBrQ,EAAQuM,QAAoB,CAC5B,GAA0B,SAAtBw1C,EAAWx1C,QACX,SAEJ,GAAIvM,EAAQ+D,WAAag+C,EAAWh+C,UAEhC,OADA6uD,EAAY7pB,OAAOz/B,EAAO,IACnB,CAEf,CACA,GAAIy4C,EAAW8Q,YAAY7yD,GAEvB,OADA4yD,EAAY7pB,OAAOz/B,EAAO,IACnB,CAEf,CACA,OAAO,CACX,CACAwpD,uCACI,IAAK,MAAM9yD,KAAW1G,KAAKo5D,+BACvBl5D,SAASyrB,KAAK6pB,YAAY9uC,EAElC,CACA+yD,iCACI,IAAK,MAAM/yD,KAAW1G,KAAKm5D,2BACvBj5D,SAASyrB,KAAK4pB,YAAY7uC,EAElC,CACAmyD,kBACI34D,SAASw5D,UAAU15D,KAAKyoD,YACxBzoD,KAAK25D,+BACT,CACAA,gCACI,IAAK,MAAMhb,KAAsB3+C,KAAK45D,sBAAuB,CACzD,MAAMjQ,EAAyB/P,EAAsB+E,GACrDA,EAAmBE,YAAY8K,EACnC,CACJ,CACAt+B,4BACUrrB,KAAKwkD,cAAcxkD,KAAKwoD,eAAgBxoD,KAAKyoD,WACvD,CACIuQ,gCACA,OAAOh5D,KAAKu4D,gBAAgBpM,mCAAmCnsD,KAAKs4D,oBACxE,CACIW,4BACA,OAAOj5D,KAAKu4D,gBAAgBtM,+BAA+BjsD,KAAKs4D,oBACpE,CACIc,qCACA,OAAOp5D,KAAKs4D,oBAAoBjM,mBACpC,CACI8M,iCACA,OAAOn5D,KAAKu4D,gBAAgBlM,mBAChC,CACIuN,4BACA,OAAO55D,KAAKyoD,WAAWtoD,iBAAiB,SAC5C,EAGJ,MAAM05D,GACFzrD,YAAYqB,GACRzP,KAAK8N,KAAO,GACZ9N,KAAK85D,UAAY,CAAC,EAClB95D,KAAKyP,KAAOA,CAChB,CACA6I,IAAIhT,GACA,OAAOyzC,EAAWzzC,KAAatF,KAAK85D,SACxC,CACAtoD,IAAIlM,GACA,GAAItF,KAAKsY,IAAIhT,GAAW,CACpB,MAAM+8C,EAAWriD,KAAKmvB,KAAK7pB,GAE3B,OADAtF,KAAK+5D,MAAMz0D,GACJ+8C,CACX,CACJ,CACAxC,IAAIv6C,EAAU+8C,GAGV,OAFAriD,KAAKovB,MAAM9pB,EAAU+8C,GACrBriD,KAAK+5D,MAAMz0D,GACJ+8C,CACX,CACAljC,QACInf,KAAK85D,UAAY,CAAC,CACtB,CACA3qC,KAAK7pB,GACD,OAAOtF,KAAK85D,UAAU/gB,EAAWzzC,GACrC,CACA8pB,MAAM9pB,EAAU+8C,GACZriD,KAAK85D,UAAU/gB,EAAWzzC,IAAa+8C,CAC3C,CACA0X,MAAMz0D,GACF,MAAMsM,EAAMmnC,EAAWzzC,GACjB0K,EAAQhQ,KAAK8N,KAAKukB,QAAQzgB,GAC5B5B,GAAS,GACThQ,KAAK8N,KAAK2hC,OAAOz/B,EAAO,GAC5BhQ,KAAK8N,KAAK2gC,QAAQ78B,GAClB5R,KAAK0T,MACT,CACAA,OACI,IAAK,MAAM9B,KAAO5R,KAAK8N,KAAK2hC,OAAOzvC,KAAKyP,aAC7BzP,KAAK85D,UAAUloD,EAE9B,EAGJ,MAAMooD,WAAiB9W,EACnB90C,cACIooC,SAAS5xB,WACT5kB,KAAKi6D,cAAgB,IAAIJ,GAAc,IACvC75D,KAAK+xD,qBAAuB,IAAI/Z,IAAI1yC,SAAS4wB,MAC7Cl2B,KAAK4xD,eAAgB,CACzB,CACAjB,WAAWtO,EAAUzK,GAAY,EAAOsQ,GAAa,EAAMjrB,GACvD,MAAMgnB,EAAW,IAAIgU,GAAaj4D,KAAKqiD,SAAUA,EAAU4V,GAAazT,cAAe5M,EAAWsQ,GAOlG,OANKjE,EAASC,aAIVjnB,SAA8CA,EAAMwyB,gBAHpDzvD,KAAK4xD,eAAgB,EAKlB5xD,KAAKukD,OAAON,EACvB,CACA8M,YAAY1O,EAAUplB,GAClBA,SAA8CA,EAAMwyB,gBACpD,MAAMxL,EAAW,IAAI0T,GAAc33D,KAAKqiD,SAAUA,EAAUsV,GAAcnT,eAAe,GACzF,OAAOxkD,KAAKukD,OAAON,EACvB,CACAkR,qBACIn1D,KAAKi6D,cAAc96C,OACvB,CACAkM,oBAAoBg3B,EAAWriD,KAAKqiD,UAChC,GAAIA,EAASmL,YAAa,CACtBxtD,KAAKwX,SAAS0iD,wBACd,MAAQnI,qBAAsBzsD,GAAatF,WA36E5C,IAAIsrB,SAAStd,GAAYqjB,YAAW,IAAMrjB,KAAW,KA66EpD,MAAMmsD,EAAiB9X,EAAS5I,QAEhC,OADAz5C,KAAKi6D,cAAcpa,IAAIv6C,EAAU60D,GAC1BA,CACX,CACJ,CACAlJ,6BAA6B3rD,GACzB,OAAOtF,KAAKi6D,cAAczoD,IAAIlM,EAClC,CACI+8C,eACA,OAAOsK,EAAayN,YAAYp6D,KAAK0G,QACzC,EAGJ,MAAM2zD,GACFjsD,YAAYoJ,GACRxX,KAAKka,SAAW,wBAChBla,KAAKwX,SAAWA,CACpB,CACIyiD,oBACA,OAAOj6D,KAAKwX,SAAS2pB,UAAUutB,KAAKuL,aACxC,CACA3pD,QACI,GAA4B,YAAxBpQ,SAASqrB,WACT,OAAOrrB,SAAS6J,iBAAiB,oBAAoB,KACjD/J,KAAK4kD,0BAA0B1kD,SAAS4D,KAAK,IAIjD9D,KAAK4kD,0BAA0B1kD,SAAS4D,KAEhD,CACA8gD,0BAA0Bl+C,GACtB,IAAK,MAAMy/C,KAAQz/C,EAAQvG,iBAAiBH,KAAKka,UAC7Cla,KAAKs6D,WAAWnU,EAExB,CACA96B,iBAAiB86B,GACb,MAAM7gD,EAAW,IAAI0yC,IAAImO,EAAKjwB,MAC9B,IAAIl2B,KAAKi6D,cAAc3hD,IAAIhT,GAG3B,IACI,MAAMH,QAAiBoV,MAAMjV,EAAS4O,WAAY,CAAE+tB,QAAS,CAAE,eAAgB,OAAQyb,OAAQ,eACzFjT,QAAqBtlC,EAASu0C,OAC9B2I,EAAWsK,EAAaiE,eAAenmB,GAC7CzqC,KAAKi6D,cAAcpa,IAAIv6C,EAAU+8C,EACrC,CACA,MAAOhwC,GACP,CACJ,EA4SJ,SAASkoD,GAAkCtnC,GACvCllB,OAAOyX,iBAAiByN,EAAKunC,GACjC,CACA,MAAMA,GAAwC,CAC1CC,YAAa,CACTjpD,MACI,OAAOxR,KAAKkU,UAChB,IAyBFwmD,GAAgB,CAClBC,QACI36D,KAAK46D,eAAet2D,SAASV,IAAQ,IAAIid,EAAI,OAAkC,QAA1BA,EAAKjd,EAAEogB,qBAAkC,IAAPnD,OAAgB,EAASA,EAAGkqC,aAAa/qD,KAAK66D,gBAAiBj3D,EAAEk3D,YAAY,GACxK,EACAh+B,SACI98B,KAAK+6D,gCACL/6D,KAAK46D,eAAet2D,SAASV,GAAMA,EAAEk5B,OAAO98B,KAAK66D,kBACrD,EACAG,SACIh7D,KAAK46D,eAAet2D,SAASV,IAAQ,IAAIid,EAAI,OAAkC,QAA1BA,EAAKjd,EAAEogB,qBAAkC,IAAPnD,OAAgB,EAASA,EAAGkqC,aAAa/qD,KAAK66D,gBAAiBj3D,EAAE,GAC5J,EACAq3D,UACIj7D,KAAK+6D,gCACL/6D,KAAK46D,eAAet2D,SAASV,GAAMA,EAAEq3D,QAAQj7D,KAAK66D,kBACtD,EACA52D,SACIjE,KAAK46D,eAAet2D,SAASV,GAAMA,EAAEK,UACzC,EACA4D,UACI7H,KAAK46D,eAAet2D,SAASV,GAAMA,EAAEi7C,YAAY7+C,KAAK66D,kBAC1D,EACAnL,SACI1vD,KAAK46D,eAAet2D,SAAS42D,IACzBA,EAAczwD,UAAY,GAC1BywD,EAAcp+B,OAAO98B,KAAK66D,gBAAgB,GAElD,GAGEvI,GAAU,IAtWhB,MACIlkD,cACIpO,KAAKmhC,UAAY,IAAI2zB,GAAU90D,MAC/BA,KAAKy7C,QAAU,IAAIuY,GAAQh0D,MAC3BA,KAAKm7D,UAAY,IAAId,GAAUr6D,MAC/BA,KAAK0uD,KAAO,IAAIsL,GAASh6D,KAAME,SAAS8oB,iBACxChpB,KAAK+hC,QAAU,IAAIswB,GAAeryD,MAClCA,KAAKo7D,aAAe,IAAI1F,GAAa11D,MACrCA,KAAKq7D,cAAgB,IAAIhI,GACzBrzD,KAAKs7D,kBAAoB,IAAIvV,EAAkB/lD,KAAMiB,QACrDjB,KAAKyzD,mBAAqB,IAAIhR,EAAmBziD,KAAME,UACvDF,KAAKu7D,eAAiB,IAAIpF,GAAen2D,MACzCA,KAAKw7D,eAAiB,IAAI1E,GAAe92D,MACzCA,KAAKy7D,sBAAwB,IAAI9U,EAAsB3mD,KAAME,SAAS8oB,iBACtEhpB,KAAK07D,gBAAkB,IAAIlI,GAAgBxzD,KAAME,SAAS8oB,iBAC1DhpB,KAAK27D,sBAAwB,IAAIlF,GACjCz2D,KAAK47D,OAAQ,EACb57D,KAAK2vB,SAAU,EACf3vB,KAAKmzD,iBAAmB,IACxBnzD,KAAKqQ,SAAU,EACfrQ,KAAK67D,SAAW,IACpB,CACAvrD,QACStQ,KAAKqQ,UACNrQ,KAAKo7D,aAAa9qD,QAClBtQ,KAAKq7D,cAAc/qD,QACnBtQ,KAAKy7D,sBAAsBnrD,QAC3BtQ,KAAKs7D,kBAAkBhrD,QACvBtQ,KAAKyzD,mBAAmBnjD,QACxBtQ,KAAKu7D,eAAejrD,QACpBtQ,KAAKw7D,eAAelrD,QACpBtQ,KAAK07D,gBAAgBprD,QACrBtQ,KAAKy7C,QAAQnrC,QACbtQ,KAAKm7D,UAAU7qD,QACftQ,KAAKqQ,SAAU,EACfrQ,KAAK2vB,SAAU,EAEvB,CACAmsC,UACI97D,KAAK2vB,SAAU,CACnB,CACAlf,OACQzQ,KAAKqQ,UACLrQ,KAAKo7D,aAAa3qD,OAClBzQ,KAAKq7D,cAAc5qD,OACnBzQ,KAAKy7D,sBAAsBhrD,OAC3BzQ,KAAKs7D,kBAAkB7qD,OACvBzQ,KAAKyzD,mBAAmBhjD,OACxBzQ,KAAKu7D,eAAe9qD,OACpBzQ,KAAKw7D,eAAe/qD,OACpBzQ,KAAK07D,gBAAgBjrD,OACrBzQ,KAAKy7C,QAAQhrC,OACbzQ,KAAKqQ,SAAU,EAEvB,CACA0rD,gBAAgBh6B,GACZ/hC,KAAK+hC,QAAUA,CACnB,CACA9E,MAAM33B,EAAUyO,EAAU,CAAC,GACvB,MAAMg1C,EAAeh1C,EAAQo+C,MAAQjyD,SAASkK,eAAe2J,EAAQo+C,OAAS,KAC1EpJ,aAAwBxS,GACxBwS,EAAa5R,IAAM7xC,EAAS4O,WAC5B60C,EAAajgB,QAGb9oC,KAAKmhC,UAAU4zB,aAAajd,EAAUxyC,GAAWyO,EAEzD,CACAujD,oBAAoBp6B,GAChBl9B,KAAKw7D,eAAelE,oBAAoBp6B,EAC5C,CACAs6B,uBAAuBt6B,GACnBl9B,KAAKw7D,eAAehE,uBAAuBt6B,EAC/C,CACA8+B,oBAAoB/xD,GAChBjK,KAAK27D,sBAAsBpX,OAAOhG,EAAcmZ,KAAKztD,GACzD,CACAgyD,aACIj8D,KAAK0uD,KAAKyG,oBACd,CACA+G,oBAAoBC,GAChBn8D,KAAKmzD,iBAAmBgJ,CAC5B,CACAC,YAAYC,GACRr8D,KAAK67D,SAAWQ,CACpB,CACI/2D,eACA,OAAOtF,KAAKy7C,QAAQn2C,QACxB,CACI4oD,4BACA,OAAOluD,KAAKy7C,QAAQyS,qBACxB,CACAmG,iDAAiD/uD,EAAU4oD,GACnDluD,KAAK2vB,QACL3vB,KAAKmhC,UAAUsxB,WAAWntD,EAAU4oD,EAAuB,CACvD33C,OAAQ,UACRm3C,gBAAgB,IAIpB1tD,KAAK+hC,QAAQ+wB,gBAAgB,CACzBh/B,OAAQ,kBAGpB,CACA0iC,sBAAsBv7B,GAClBj7B,KAAKy7C,QAAQ8Y,sBAAsB,CAAEvC,eAAgB/2B,GACzD,CACA4rB,6BAA6BV,EAAM7gD,GAC/B,OAAOtF,KAAK+zD,qBAAqB5N,IAAS9N,EAAoB/yC,EAAUtF,KAAKqiD,SAAS/J,aAC1F,CACA2O,8BAAgC,CAChCV,yBAAyBJ,EAAM7gD,EAAUjF,GACrC,OAAQL,KAAK+zD,qBAAqB5N,IAC9B9N,EAAoB/yC,EAAUtF,KAAKqiD,SAAS/J,eAC5Ct4C,KAAKs8D,yCAAyCnW,EAAM7gD,EAAUjF,EACtE,CACAmmD,uBAAuBL,EAAM7gD,GACzB,MAAMiR,EAASvW,KAAKu8D,iBAAiBpW,GAC/B2H,EAAwB3H,EAAKhsC,aAAa,qBAChDna,KAAKi9B,MAAM33B,EAAS4wB,KAAM,CAAE3f,SAAQu3C,yBACxC,CACAkH,iCAAiC1vD,EAAUiR,GACvC,OAAOvW,KAAKyuD,6BAA6BnpD,EAAUiR,IAAWvW,KAAKw8D,kCAAkCl3D,EACzG,CACAgsD,wBAAwBhsD,EAAUyO,GAC9BwmD,GAAkCj1D,GAClCtF,KAAK+hC,QAAQuvB,wBAAwBhsD,EAAUyO,EACnD,CACAi7C,aAAa/xB,GACJA,EAAM6wB,uBACP7S,EAAW/6C,SAAS8oB,iBAExBuxC,GAAkCt9B,EAAM33B,UACnC23B,EAAM4xB,QACP7uD,KAAKy8D,uCAAuCx/B,EAAM33B,SAAU23B,EAAM1mB,OAE1E,CACA+4C,eAAeryB,GACXke,EAAej7C,SAAS8oB,iBACxBhpB,KAAK08D,+BAA+Bz/B,EAAMi1B,mBAC9C,CACAzD,6BAA6BnpD,EAAUiR,GACnC,OAAOvW,KAAKmhC,UAAUstB,6BAA6BnpD,EAAUiR,EACjE,CACAu7C,gCAAgC0D,EAAQC,GACpCz1D,KAAK28D,+CAA+CnH,EAAQC,EAChE,CACAzS,eAAeptC,EAAMs/B,GACjB,MAAM3+B,EAAS6hC,EAAUxiC,EAAMs/B,GAC/B,OAAQl1C,KAAK8zD,wBAAwBl+C,EAAMs/B,IACvCmD,EAAoBP,EAAUvhC,GAASvW,KAAKqiD,SAAS/J,aAC7D,CACA2K,cAAcrtC,EAAMs/B,GAChBl1C,KAAKmhC,UAAU+zB,WAAWt/C,EAAMs/B,EACpC,CACAghB,wBACIl2D,KAAK0uD,KAAKqD,qBAAuB/xD,KAAKsF,SACtCtF,KAAK08D,gCACT,CACAzI,aACIj0D,KAAKy7C,QAAQgZ,kCACjB,CACAuB,iBACIh2D,KAAKy7C,QAAQmZ,sCACjB,CACA6C,0BAA0BxtD,GACtBjK,KAAKg8D,oBAAoB/xD,EAC7B,CACAiwD,wBACI,IAAIr5C,GACyC,QAAtCA,EAAK7gB,KAAKmhC,UAAU8zB,oBAAiC,IAAPp0C,OAAgB,EAASA,EAAGguC,SAC7E7uD,KAAK48D,wCAEb,CACAnY,uBAAsB,QAAE/9C,GAAWqN,GAC/B,MAAM1T,EAAQL,KAAK68D,8BAA8Bn2D,EAASqN,IACpD,iBAAEkpC,EAAkB/rC,QAAQ,OAAEqzC,IAAclkD,EAIlD,OAHIL,KAAK0uD,KAAKzK,UAAYM,IACtBvkD,KAAK0uD,KAAKzK,SAASO,cAAgBD,IAE/BtH,CACZ,CACA0H,qBAAqBmY,EAAWC,GAC5B/8D,KAAK0uD,KAAKqD,qBAAuB/xD,KAAKy7C,QAAQn2C,SAC9CtF,KAAKg9D,8BACT,CACApY,0BAA0Bl+C,GACtB1G,KAAKm7D,UAAUvW,0BAA0Bl+C,EAC7C,CACAs+C,gBAAgBlxB,GACZ9zB,KAAK+hC,QAAQ+wB,gBAAgBh/B,EACjC,CACAmpC,YAAY9K,GACRnyD,KAAKk9D,gCAAgC/K,EACzC,CACAgL,cAAcngB,EAAemV,GACzBnyD,KAAKo9D,kCAAkCpgB,EAAemV,EAC1D,CACAmK,yCAAyCnW,EAAM7gD,EAAU+3D,GAErD,OADcr9D,KAAKs9D,6CAA6CnX,EAAM7gD,EAAU+3D,GAClEpgB,gBAClB,CACAuf,kCAAkCl3D,GAE9B,OADctF,KAAKu9D,wCAAwCj4D,GAC7C23C,gBAClB,CACAqgB,6CAA6CnX,EAAM7gD,EAAUjF,GACzD,OAAO6tB,EAAS,cAAe,CAC3BrpB,OAAQshD,EACRj1C,OAAQ,CAAE+hB,IAAK3tB,EAAS4wB,KAAMyvB,cAAetlD,GAC7CguB,YAAY,GAEpB,CACAkvC,wCAAwCj4D,GACpC,OAAO4oB,EAAS,qBAAsB,CAClChd,OAAQ,CAAE+hB,IAAK3tB,EAAS4wB,MACxB7H,YAAY,GAEpB,CACAouC,uCAAuCn3D,EAAUiR,GAC7C,OAAO2X,EAAS,cAAe,CAAEhd,OAAQ,CAAE+hB,IAAK3tB,EAAS4wB,KAAM3f,WACnE,CACAqmD,yCACI,OAAO1uC,EAAS,qBACpB,CACA2uC,8BAA8BW,EAASzpD,GACnC,OAAOma,EAAS,sBAAuB,CACnChd,OAAQnD,OAAOoB,OAAO,CAAEquD,WAAWzpD,GACnCsa,YAAY,GAEpB,CACA2uC,+BACI,OAAO9uC,EAAS,eACpB,CACAwuC,+BAA+Be,EAAS,CAAC,GACrC,OAAOvvC,EAAS,aAAc,CAC1Bhd,OAAQ,CAAE+hB,IAAKjzB,KAAKsF,SAAS4wB,KAAMunC,WAE3C,CACAd,+CAA+CnH,EAAQC,GACnDlnC,cAAc,IAAImvC,gBAAgB,aAAc,CAC5ClI,OAAQA,EAAOthD,WACfuhD,OAAQA,EAAOvhD,aAEvB,CACAgpD,gCAAgC/K,GAC5B,OAAOjkC,EAAS,mBAAoB,CAAErpB,OAAQstD,GAClD,CACAiL,kCAAkCpgB,EAAemV,GAC7C,OAAOjkC,EAAS,qBAAsB,CAClChd,OAAQ,CAAE8rC,iBACVn4C,OAAQstD,EACR9jC,YAAY,GAEpB,CACAylC,wBAAwBl+C,EAAMs/B,GAC1B,GAAqB,OAAjBl1C,KAAK67D,SACL,OAAO,EAEN,CACD,MAAM8B,GAAyBzoB,GAAYl1C,KAAK+zD,qBAAqB7e,GACrE,MAAqB,SAAjBl1C,KAAK67D,SACE8B,GAAiE,MAAvC/nD,EAAKpV,QAAQ,uBAGvCm9D,GAA0B39D,KAAK+zD,qBAAqBn+C,EAEnE,CACJ,CACAm+C,qBAAqBrtD,GACjB,MAAMk3D,EAAY7hB,EAAuBr1C,EAAS,gBAC5Cm3D,EAAc9hB,EAAuBr1C,EAAS,eACpD,OAAI1G,KAAK47D,OAASiC,GACVD,GAC+C,SAAxCA,EAAU7nD,aAAa,gBAO9B6nD,GAC+C,QAAxCA,EAAU7nD,aAAa,aAM1C,CACAwmD,iBAAiBpW,GACb,OAAOvK,EAAeuK,IAAS,SACnC,CACI9D,eACA,OAAOriD,KAAK0uD,KAAKrM,QACrB,GAgEE5rB,GAAQ,IAnDd,MACIroB,YAAYkkD,GACRtyD,KAAKsyD,QAAUA,CACnB,CACAnzC,QACInf,KAAKsyD,QAAQ2J,YACjB,CACA6B,oBACI99D,KAAK+9D,gBAAgB,GACzB,CACAC,sBACIh+D,KAAK+9D,gBAAgB,WACzB,CACAE,wBACIj+D,KAAK+9D,gBAAgB,aACzB,CACAA,gBAAgBp5D,IAlsFpB,SAAwBG,EAAMmG,GAC1B,IAAIvE,EAAUo1C,EAAeh3C,GACxB4B,IACDA,EAAUxG,SAAS+1B,cAAc,QACjCvvB,EAAQ+f,aAAa,OAAQ3hB,GAC7B5E,SAASyrB,KAAK4pB,YAAY7uC,IAE9BA,EAAQ+f,aAAa,UAAWxb,EAEpC,CA0rFQizD,CAAe,sBAAuBv5D,EAC1C,GAiCoB2tD,KAChBnxB,UAAWg9B,IAAgB7L,GACnC,SAAShiD,KACLgiD,GAAQhiD,OACZ,CAOA,SAASgnD,GAAoBp6B,GACzBo1B,GAAQgF,oBAAoBp6B,EAChC,CACA,SAASs6B,GAAuBt6B,GAC5Bo1B,GAAQkF,uBAAuBt6B,EACnC,CAkBA,IAAIkhC,GAAqBrwD,OAAOswD,OAAO,CACnCC,UAAW,KACXn9B,UAAWg9B,GACX7L,QAASA,GACT77B,MAAOA,GACPwhC,aAAcA,GACdtL,aAAcA,EACdjE,cAAeA,EACfp4C,MAAOA,GACPyrD,gBAtCJ,SAAyBh6B,GACrBuwB,GAAQyJ,gBAAgBh6B,EAC5B,EAqCI9E,MApCJ,SAAe33B,EAAUyO,GACrBu+C,GAAQr1B,MAAM33B,EAAUyO,EAC5B,EAmCIujD,oBAAqBA,GACrBE,uBAAwBA,GACxBwE,oBA9BJ,SAA6B/xD,GACzBqoD,GAAQ0J,oBAAoB/xD,EAChC,EA6BIgyD,WA5BJ,WACIj3D,QAAQkH,KAAK,2JACbomD,GAAQ2J,YACZ,EA0BIC,oBAzBJ,SAA6BC,GACzB7J,GAAQ4J,oBAAoBC,EAChC,EAwBIoC,iBAvBJ,SAA0B7d,GACtBzB,EAAeyB,cAAgBA,CACnC,EAsBI0b,YArBJ,SAAqBC,GACjB/J,GAAQ8J,YAAYC,EACxB,EAoBI3B,cAAeA,KA4ZnB,SAAS8D,GAAoB7yD,GACzB,GAAU,MAANA,EAAY,CACZ,MAAMjF,EAAUxG,SAASkK,eAAeuB,GACxC,GAAIjF,aAAmB6vC,EACnB,OAAO7vC,CAEf,CACJ,CACA,SAAS+3D,GAAgB/3D,EAASg4D,GAC9B,GAAIh4D,EAAS,CACT,MAAMywC,EAAMzwC,EAAQqP,aAAa,OACjC,GAAW,MAAPohC,GAA6B,MAAdunB,IA/4GC5uD,EA+4GuC4uD,EA94GxD5mB,EA84GmDX,GA94GnCjhB,MAAQ4hB,EAAUhoC,GAAOomB,MA+4GxC,MAAM,IAAItoB,MAAM,6BAA6BlH,EAAQiF,yDAKzD,GAHIjF,EAAQixC,gBAAkBz3C,WAC1BwG,EAAUxG,SAASw+C,WAAWh4C,GAAS,IAEvCA,aAAmB6vC,EAGnB,OAFA7vC,EAAQiwC,oBACRjwC,EAAQkwC,uBACDlwC,CAEf,CA15GJ,IAA4BoJ,CA25G5B,CAEA,MAAM6uD,WAAsB7pB,YACxB3zC,2BAA2BsnD,SACjBA,EAAWmW,eACrB,CACAvzC,0BACI,UACUrrB,KAAKukD,QACf,CACA,MAAOv6C,GACHhF,QAAQgF,MAAMA,EAClB,CACA,QACIhK,KAAK0O,YACT,CACJ,CACA2c,eACI,IAAIxK,EACJ,OAAsC,QAA7BA,EAAK7gB,KAAKokD,qBAAkC,IAAPvjC,EAAgBA,EAAM7gB,KAAKokD,cAAgB,WACrF,MAAM/jD,EAAQL,KAAK6+D,kBACf7+D,KAAKuuB,cAAcluB,WACbg6C,UACAh6C,EAAM6Q,OAAOqzC,OAAOvkD,MAEjC,EANwF,EAO7F,CACA0O,aACI,IACI1O,KAAKiE,QACT,CACA,MAAO4c,GAAM,CACjB,CACAk6C,gCACI/6D,KAAK8+D,kBAAkBx6D,SAASumB,GAAMA,EAAE5mB,UAC5C,CACI66D,wBACA,IAAIj+C,EACJ,MAAMk+C,EAAmB/+D,KAAK46D,eAAeoE,SAASp7D,GAAM,IAAIA,EAAEi+C,YAAW5sC,QAAQ4V,KAAQA,EAAElf,KACzFszD,EAAiB,KAAsC,QAA/Bp+C,EAAK7gB,KAAK66D,uBAAoC,IAAPh6C,OAAgB,EAASA,EAAGghC,WAAa,IAAK5sC,QAAQ4V,KAAQA,EAAElf,KAAI2B,KAAKud,GAAMA,EAAElf,KACtJ,OAAOozD,EAAiB9pD,QAAQ4V,GAAMo0C,EAAerrD,SAASiX,EAAElf,KACpE,CACIizD,oBACA,GAAI5+D,KAAKuW,OAAQ,CACb,MAAM2oD,EAAiBxE,GAAc16D,KAAKuW,QAC1C,GAAI2oD,EACA,OAAOA,EAEXl/D,KAAK+0C,MAAM,iBACf,CACA/0C,KAAK+0C,MAAM,8BACf,CACI6lB,qBACA,OAAI56D,KAAK6E,OACE7E,KAAKm/D,mBAEPn/D,KAAKsnB,QACHtnB,KAAKo/D,2BAGZp/D,KAAK+0C,MAAM,yCAEnB,CACI8lB,sBACA,OAAO76D,KAAK4+C,gBAAgB3zC,QAAQ48C,WAAU,EAClD,CACIjJ,sBACA,GAA+B,OAA3B5+C,KAAKspD,kBAA4B,CACjC,MAAMvK,EAAW/+C,KAAK23C,cAAc1hB,cAAc,YAElD,OADAj2B,KAAKu1C,YAAYwJ,GACVA,CACX,CACK,GAAI/+C,KAAKspD,6BAA6B+V,oBACvC,OAAOr/D,KAAKspD,kBAEhBtpD,KAAK+0C,MAAM,mDACf,CACIx+B,aACA,OAAOvW,KAAK+V,aAAa,SAC7B,CACIlR,aACA,OAAO7E,KAAK+V,aAAa,SAC7B,CACIuR,cACA,OAAOtnB,KAAK+V,aAAa,UAC7B,CACAg/B,MAAM9qC,GACF,MAAM,IAAI2D,MAAM,GAAG5N,KAAK09B,gBAAgBzzB,IAC5C,CACIyzB,kBACA,IAAI7c,EAAIg3B,EACR,OAAkG,QAA1FA,GAAiD,QAA1Ch3B,EAAK7gB,KAAK4rD,UAAUj4C,MAAM,kBAA+B,IAAPkN,EAAgBA,EAAK,IAAI,UAAuB,IAAPg3B,EAAgBA,EAAK,gBACnI,CACIgnB,wBACA,OAAO,IAAIvwC,YAAY,6BAA8B,CACjDF,SAAS,EACTC,YAAY,EACZnd,OAAQ,CAAEouD,UAAWt/D,KAAMukD,OAAQoa,GAAcna,gBAEzD,CACI2a,yBACA,IAAIt+C,EACJ,MAAMna,EAAwC,QAA7Bma,EAAK7gB,KAAK23C,qBAAkC,IAAP92B,OAAgB,EAASA,EAAGzW,eAAepK,KAAK6E,QACtG,OAAgB,OAAZ6B,EACO,CAACA,GAGD,EAEf,CACI04D,4BACA,IAAIv+C,EACJ,MAAM9X,EAAyC,QAA7B8X,EAAK7gB,KAAK23C,qBAAkC,IAAP92B,OAAgB,EAASA,EAAG1gB,iBAAiBH,KAAKsnB,SACzG,OAAwB,IAApBve,EAASuU,OACF5N,MAAMwF,UAAUvC,MAAMtD,KAAKtG,GAG3B,EAEf,EAGJ,MAAMw2D,WAA4BzqB,YAC9B1mC,cACIooC,SAAS5xB,WACT5kB,KAAKw/D,aAAe,IACxB,CACA7oB,oBACI32C,KAAKw/D,aAAex/D,KAAKm3C,IAAIxjC,MAAM,aAAe,IAAI8b,UAAUzvB,KAAKm3C,KAAO,IAAIsoB,YAAYz/D,KAAKm3C,KACjGmgB,GAAoBt3D,KAAKw/D,aAC7B,CACA5oB,uBACQ52C,KAAKw/D,cACLhI,GAAuBx3D,KAAKw/D,aAEpC,CACIroB,UACA,OAAOn3C,KAAK+V,aAAa,QAAU,EACvC,EC3xHJ,IAAIwc,GAMG,SAASmtC,GAAYC,GAC1B,OAAOptC,GAAWotC,CACpB,CCWe,SAASC,GAAM9nC,GAC1B,OAAKA,GAAsB,iBAARA,EACfA,aAAelI,MAAQkI,aAAeviB,OAAeuiB,EACrDpoB,MAAM2R,QAAQyW,GAAaA,EAAIxqB,IAAIsyD,IAChC7xD,OAAOD,KAAKgqB,GAAKnnB,QAAO,SAAUkvD,EAAKjuD,GAK1C,OADAiuD,EAHYjuD,EAAI,GAAGiB,cAAgBjB,EAAIe,MAAM,GAAG9K,QAAQ,aAAa,SAAUw0B,EAAGonB,GAC9E,MAAO,IAAMA,EAAE5wC,aACnB,KACa+sD,GAAK9nC,EAAIlmB,IACfiuD,CACX,GAAG,CAAC,GATwC/nC,CAUhD,CFgwHAye,EAAaE,oBA7jBb,MACIroC,YAAY1H,GACR1G,KAAK8/D,oBAAuBC,IAAD,EAC3B//D,KAAKggE,oBAAsB,KAC3BhgE,KAAKigE,oBAAsB,OAC3BjgE,KAAKkgE,WAAY,EACjBlgE,KAAKmgE,eAAgB,EACrBngE,KAAKogE,kBAAoB,IAAI3xD,IAC7BzO,KAAKuW,OAAS,KACdvW,KAAK2tD,oBAAsB,EAAGjnD,cAC1B,MAAMyrD,EAAQzrD,EAAQhG,cAAc,IAAMV,KAAK0G,QAAQiF,IACnDwmD,GAASnyD,KAAKqgE,sBACdlO,EAAMmO,mBAAmBtgE,KAAKqgE,qBAAqBxe,iBAEhD7hD,KAAKqgE,oBAAoB,EAEpCrgE,KAAK0G,QAAUA,EACf1G,KAAK0uD,KAAO,IAAItJ,EAAUplD,KAAMA,KAAK0G,SACrC1G,KAAKugE,mBAAqB,IAAIxiB,EAAmB/9C,KAAMA,KAAK0G,SAC5D1G,KAAKy7D,sBAAwB,IAAI9U,EAAsB3mD,KAAMA,KAAK0G,SAClE1G,KAAK4mD,gBAAkB,IAAIvB,EAAgBrlD,KAAMA,KAAK0G,SACtD1G,KAAKkuD,sBAAwBlT,IAC7Bh7C,KAAKyzD,mBAAqB,IAAIhR,EAAmBziD,KAAMA,KAAK0G,QAChE,CACA3G,UACSC,KAAKkgE,YACNlgE,KAAKkgE,WAAY,EACblgE,KAAKwgE,cAAgB1qB,EAAkBuB,KACvCr3C,KAAKugE,mBAAmBjwD,QAGxBtQ,KAAKygE,gBAETzgE,KAAKy7D,sBAAsBnrD,QAC3BtQ,KAAK4mD,gBAAgBt2C,QACrBtQ,KAAKyzD,mBAAmBnjD,QAEhC,CACA5B,aACQ1O,KAAKkgE,YACLlgE,KAAKkgE,WAAY,EACjBlgE,KAAKugE,mBAAmB9vD,OACxBzQ,KAAKy7D,sBAAsBhrD,OAC3BzQ,KAAK4mD,gBAAgBn2C,OACrBzQ,KAAKyzD,mBAAmBhjD,OAEhC,CACAymC,kBACQl3C,KAAKwgE,cAAgB1qB,EAAkBwB,OACvCt3C,KAAKygE,eAEb,CACAxpB,mBACQj3C,KAAK0gE,oBAAoB,SAEzB1gE,KAAK0G,QAAQmT,cACb7Z,KAAKy3C,UAAW,IAEhBz3C,KAAKwgE,cAAgB1qB,EAAkBwB,OAASt3C,KAAKmgE,gBACrDngE,KAAKygE,gBAEb,CACA5pB,oBACI,MAAM,IAAEM,GAAQn3C,KAAK0G,QAMrB,OALA1G,KAAK2gE,2BAA2B,YAAY,KACxC3gE,KAAK0G,QAAQggB,gBAAgB,WAAW,IAE5C1mB,KAAK0G,QAAQywC,IAAM,KACnBn3C,KAAK0G,QAAQywC,IAAMA,EACZn3C,KAAK0G,QAAQoiC,MACxB,CACAkO,kBACQh3C,KAAK0gE,oBAAoB,aAE7B1gE,KAAKygE,eACT,CACA1pB,sBACQ/2C,KAAKwgE,cAAgB1qB,EAAkBuB,KACvCr3C,KAAKugE,mBAAmBjwD,SAGxBtQ,KAAKugE,mBAAmB9vD,OACxBzQ,KAAKygE,gBAEb,CACAp1C,sBACQrrB,KAAK2vB,SAAW3vB,KAAK8yB,WAAa9yB,KAAKy3C,UAAYz3C,KAAK4gE,YACxD5gE,KAAK0G,QAAQoiC,OAAS9oC,KAAKi9B,MAAM6a,EAAU93C,KAAK4gE,YAChD5gE,KAAKugE,mBAAmB9vD,aAClBzQ,KAAK0G,QAAQoiC,OACnB9oC,KAAKmgE,eAAgB,EAE7B,CACA90C,mBAAmB2xB,IACXA,EAAczD,YAAeyD,EAAc/D,WAAa+D,EAAcxD,UACtEx5C,KAAK4gE,UAAY5jB,EAAc73C,SAAS8tB,KAE5C,IACI,MAAMunB,QAAawC,EAAcrD,aACjC,GAAIa,EAAM,CACN,MAAM,KAAE12C,GAASy2C,EAAkBC,GAC7BqmB,QAAwB7gE,KAAK8gE,2BAA2Bh9D,GAC9D,GAAI+8D,EAAiB,CACjB,MAAMxe,EAAW,IAAIV,EAASkf,GACxB5c,EAAW,IAAIyE,EAAc1oD,KAAMA,KAAK0uD,KAAKrM,SAAUA,EAAUqG,EAAclE,eAAe,GAAO,GACvGxkD,KAAK0uD,KAAKtK,qBACJpkD,KAAK0uD,KAAKtK,cACpBpkD,KAAKyvD,sBACCzvD,KAAK0uD,KAAKnK,OAAON,GACvBjkD,KAAKy3C,UAAW,EAChB6a,GAAQ6K,cAAcngB,EAAeh9C,KAAK0G,SAC1C4rD,GAAQ2K,YAAYj9D,KAAK0G,SACzB1G,KAAK8/D,oBAAoB9iB,EAC7B,MACSh9C,KAAK+gE,mCAAmC/jB,KAC7Ch4C,QAAQkH,KAAK,yBAAyBlM,KAAK0G,QAAQiF,wEACnD3L,KAAKghE,cAAchkB,EAAc73C,UAEzC,CACJ,CACA,MAAO6E,GACHhF,QAAQgF,MAAMA,GACdhK,KAAK0uD,KAAK5J,YACd,CACA,QACI9kD,KAAK8/D,oBAAsB,MAC/B,CACJ,CACA3hB,0BAA0Bz3C,GACtB1G,KAAKihE,kCAAkCv6D,EAASA,GAChD1G,KAAKygE,eACT,CACA5Z,6BAA6BV,GACzB,OAAOnmD,KAAKkhE,0BAA0B/a,EAC1C,CACAc,4BAA4Bd,EAAMuN,EAAW99C,GACzC,MAAMu8C,EAAQnyD,KAAK4zD,iBAAiBzN,GAChCgM,GACAv8C,EAAK6Q,aAAa,mBAAoB0rC,EAAMxmD,GACpD,CACA+5C,yBAAyBh/C,EAASgtD,EAAW5N,GACzC,OAAO9lD,KAAKkhE,0BAA0Bx6D,EAC1C,CACAk/C,qBAAqBl/C,EAASpB,GAC1BtF,KAAKmhE,cAAcz6D,EAASpB,EAChC,CACA09C,eAAet8C,EAASwuC,GACpB,OAAOxuC,EAAQlG,QAAQ,gBAAkBR,KAAK0G,SAAW1G,KAAKkhE,0BAA0Bx6D,EAASwuC,EACrG,CACA+N,cAAcv8C,EAASwuC,GACfl1C,KAAKkhD,gBACLlhD,KAAKkhD,eAAezwC,OAExBzQ,KAAKkhD,eAAiB,IAAIjC,EAAej/C,KAAM0G,EAASwuC,GACxD,MAAM,aAAEsK,GAAiBx/C,KAAKkhD,eAC9BlhD,KAAKy8C,eAAe+C,GACpBx/C,KAAKkhD,eAAe5wC,OACxB,CACAmsC,eAAenf,GACX,IAAIzc,EACJyc,EAAQ2E,QAAQ,eAAiBjiC,KAAK2L,IACO,QAAxCkV,EAAK7gB,KAAKohE,gCAA6C,IAAPvgD,OAAgB,EAASA,EAAG1G,aAAa,uBAC1FmjB,EAAQqgB,mBAAmBY,EAAcrc,YAEjD,CACAya,eAAeqE,GACX/F,EAAWj7C,KAAK0G,QACpB,CACAw2C,iCAAiC8D,EAAUwQ,GACvCxxD,KAAKigE,qBACT,CACA50C,mCAAmCiS,EAASn4B,SAClCnF,KAAKywD,aAAatrD,GACxBnF,KAAKigE,qBACT,CACA50C,gCAAgCiS,EAASn4B,GACrCH,QAAQgF,MAAM7E,SACRnF,KAAKywD,aAAatrD,GACxBnF,KAAKigE,qBACT,CACAnjB,eAAexf,EAAStzB,GACpBhF,QAAQgF,MAAMA,GACdhK,KAAKigE,qBACT,CACAljB,gBAAgBiE,GACZ7F,EAAen7C,KAAK0G,QACxB,CACAy6C,uBAAsB,YAAEjC,IACpBjE,EAAWiE,EAAal/C,KAAK4zD,iBAAiB1U,GAClD,CACAuC,oCAAoCP,EAAgB/7C,GAChD,MAAMgtD,EAAQnyD,KAAK4zD,iBAAiB1S,EAAehC,YAAagC,EAAehM,WAC/Eid,EAAM36C,SAASypD,kCAAkC9O,EAAOjR,EAAehC,YAAagC,EAAehM,WACnGid,EAAM36C,SAASi5C,aAAatrD,EAChC,CACAi8C,iCAAiCF,EAAgBlE,GAC7Ch9C,KAAK0G,QAAQ8Q,SAASi5C,aAAazT,EACvC,CACAuE,sBAAsBL,EAAgBl3C,GAClChF,QAAQgF,MAAMA,EAClB,CACA03C,wBAAuB,YAAExC,IACrB/D,EAAe+D,EAAal/C,KAAK4zD,iBAAiB1U,GACtD,CACAuF,uBAAwB/9C,QAAS26D,GAAYttD,GACzC,MAAM1T,EAAQ6tB,EAAS,4BAA6B,CAChDrpB,OAAQ7E,KAAK0G,QACbwK,OAAQnD,OAAOoB,OAAO,CAAEkyD,YAAYttD,GACpCsa,YAAY,KAEV,iBAAE4uB,EAAkB/rC,QAAQ,OAAEqzC,IAAclkD,EAIlD,OAHIL,KAAK0uD,KAAKzK,UAAYM,IACtBvkD,KAAK0uD,KAAKzK,SAASO,cAAgBD,IAE/BtH,CACZ,CACA0H,qBAAqBmY,EAAWC,GAAc,CAC9CnY,0BAA0Bl+C,GACtB4rD,GAAQ1N,0BAA0Bl+C,EACtC,CACAs+C,kBAAoB,CACpBqE,gBAAgBb,EAAgB8Y,GAC5BthE,KAAKqgE,qBAAuB7X,EAAeX,WAAU,EACzD,CACAx8B,YAAY4H,GACR,IAAIpS,EACJ,MAAMyc,EAAU,IAAI4e,EAAal8C,KAAM+1C,EAAYvkC,IAAKyhB,EAAK,IAAI+N,gBAAmBhhC,KAAK0G,SAGzF,OAFoC,QAAnCma,EAAK7gB,KAAKggE,2BAAwC,IAAPn/C,GAAyBA,EAAG4qB,SACxEzrC,KAAKggE,oBAAsB1iC,EACpB,IAAIhS,SAAStd,IAChBhO,KAAKigE,oBAAsB,KACvBjgE,KAAKigE,oBAAsB,OAC3BjgE,KAAKggE,oBAAsB,KAC3BhyD,GAAS,EAEbsvB,EAAQ3I,SAAS,GAEzB,CACAwsC,cAAcz6D,EAASusB,EAAKiiB,GACxB,MAAMid,EAAQnyD,KAAK4zD,iBAAiBltD,EAASwuC,GAC7Cid,EAAM36C,SAASypD,kCAAkC9O,EAAOzrD,EAASwuC,GACjEl1C,KAAKuhE,6BAA6B76D,GAAS,KACvCyrD,EAAMhb,IAAMlkB,CAAG,GAEvB,CACAguC,kCAAkC9O,EAAOzrD,EAASwuC,GAE9C,GADAl1C,KAAKuW,OAASqlC,EAAe1G,EAAWxuC,EAASyrD,GAC7CnyD,KAAKuW,OAAQ,CACb,MAAMirD,EAAe7U,EAAayN,YAAYjI,GAAO1Y,SAC/C,oBAAEkU,GAAwBwE,EAAM36C,SACtC26C,EAAM36C,SAASsoD,oBAAuB9iB,IAClC,GAAImV,EAAMhb,IAAK,CACX,MAAM,WAAEkC,EAAU,WAAEE,GAAeyD,EAG7BjpC,EAAU,CACZ5O,SAFa,CAAEk0C,aAAYE,aAAYI,aADtBwY,EAAMxa,cAAc3uB,gBAAgB4iC,WAIrD+B,sBACAzF,YAAY,EACZ0F,eAAe,EACfM,sBAAuBluD,KAAKkuD,sBAC5B7L,SAAUmf,GAEVxhE,KAAKuW,SACLxC,EAAQwC,OAASvW,KAAKuW,QAC1B+7C,GAAQr1B,MAAMk1B,EAAMhb,IAAKpjC,EAC7B,EAER,CACJ,CACA07C,gBACI,GAAIzvD,KAAKuW,OAAQ,CACb,MAAMI,EAAS6kC,EAA0Bx7C,KAAKuW,QAC9C+7C,GAAQ7W,QAAQiU,OAAO/4C,EAAQmhC,EAAU93C,KAAK0G,QAAQywC,KAAO,IAAKn3C,KAAKkuD,sBAC3E,CACJ,CACA6S,mCAAmC/jB,GAC/Bh9C,KAAK0G,QAAQ+f,aAAa,WAAY,IACtC,MAAMthB,EAAW63C,EAAc73C,SAc/B,OALc+oB,EAAS,sBAAuB,CAC1CrpB,OAAQ7E,KAAK0G,QACbwK,OAAQ,CAAE/L,WAAU83B,MAVV5R,MAAO4H,EAAKlf,EAAU,CAAC,KAC7Bkf,aAAewuC,SACfzhE,KAAKghE,cAAc/tC,GAGnBq/B,GAAQr1B,MAAMhK,EAAKlf,EACvB,GAKAsa,YAAY,IAEF4uB,gBAClB,CACA5xB,oBAAoBlmB,GAChB,MAAMu8D,EAAU,IAAI1oB,EAAc7zC,GAC5Bw0C,QAAqB+nB,EAAQ/nB,cAC7B,SAAEr0C,EAAQ,WAAEi0C,EAAU,WAAEF,GAAeqoB,EAC7C,OAAOpP,GAAQr1B,MAAM33B,EAAU,CAAEH,SAAU,CAAEo0C,aAAYF,aAAYM,iBACzE,CACAia,iBAAiBltD,EAASwuC,GACtB,IAAIr0B,EAEJ,OAA0C,QAAlCA,EAAK29C,GADFzoD,EAAa,mBAAoBm/B,EAAWxuC,IAAY1G,KAAK0G,QAAQqP,aAAa,kBACpC,IAAP8K,EAAgBA,EAAK7gB,KAAK0G,OAChF,CACA2kB,iCAAiCuyC,GAC7B,IAAIl3D,EACJ,MAAMiF,EAAKg2D,IAAIC,OAAO5hE,KAAK2L,IAC3B,IAEI,GADAjF,EAAU+3D,GAAgBb,EAAUl9D,cAAc,eAAeiL,KAAO3L,KAAK4gE,WACzEl6D,EACA,OAAOA,EAGX,GADAA,EAAU+3D,GAAgBb,EAAUl9D,cAAc,6BAA6BiL,MAAQ3L,KAAK4gE,WACxFl6D,EAEA,aADMA,EAAQoiC,aACD9oC,KAAK8gE,2BAA2Bp6D,EAErD,CACA,MAAOsD,GAEH,OADAhF,QAAQgF,MAAMA,GACP,IAAIusC,CACf,CACA,OAAO,IACX,CACAsrB,sBAAsBjsD,EAAMs/B,GAExB,OAAOmD,EAAoBP,EADZM,EAAUxiC,EAAMs/B,IACel1C,KAAKs4C,aACvD,CACA4oB,0BAA0Bx6D,EAASwuC,GAC/B,MAAMvpC,EAAKoK,EAAa,mBAAoBm/B,EAAWxuC,IAAY1G,KAAK0G,QAAQqP,aAAa,UAC7F,GAAIrP,aAAmB+uC,kBAAoBz1C,KAAK6hE,sBAAsBn7D,EAASwuC,GAC3E,OAAO,EAEX,IAAKl1C,KAAK2vB,SAAiB,QAANhkB,EACjB,OAAO,EAEX,GAAIA,EAAI,CACJ,MAAMo9C,EAAeyV,GAAoB7yD,GACzC,GAAIo9C,EACA,OAAQA,EAAaxR,QAE7B,CACA,SAAK+a,GAAQyB,qBAAqBrtD,IAG9BwuC,IAAcod,GAAQyB,qBAAqB7e,GAInD,CACIvpC,SACA,OAAO3L,KAAK0G,QAAQiF,EACxB,CACIgkB,cACA,OAAQ3vB,KAAK0G,QAAQ6wC,QACzB,CACIqpB,gBACA,GAAI5gE,KAAK0G,QAAQywC,IACb,OAAOn3C,KAAK0G,QAAQywC,GAE5B,CACIypB,cAAUA,GACV5gE,KAAK2gE,2BAA2B,OAAO,KACnC3gE,KAAK0G,QAAQywC,IAAMypB,QAA6CA,EAAY,IAAI,GAExF,CACIJ,mBACA,OAAOxgE,KAAK0G,QAAQ0wC,OACxB,CACIM,gBACA,YAA+B33B,IAAxB/f,KAAKkhD,qBAA+DnhC,IAA/B/f,KAAKigE,qBACrD,CACIxoB,eACA,OAAOz3C,KAAK0G,QAAQyT,aAAa,WACrC,CACIs9B,aAAS9yC,GACT3E,KAAK2gE,2BAA2B,YAAY,KACpCh8D,EACA3E,KAAK0G,QAAQ+f,aAAa,WAAY,IAGtCzmB,KAAK0G,QAAQggB,gBAAgB,WACjC,GAER,CACIoM,eACA,OAAO9yB,KAAK0G,QAAQosB,UAAY9yB,KAAKkgE,SACzC,CACI5nB,mBACA,IAAIz3B,EACJ,MAAMtM,EAAOvU,KAAK0G,QAAQixC,cAAcj3C,cAAc,2BAEtD,OAAOo3C,EAD0E,QAAnEj3B,EAAKtM,aAAmC,EAASA,EAAKtJ,eAA4B,IAAP4V,EAAgBA,EAAK,IAElH,CACA6/C,oBAAoB9nD,GAChB,OAAO5Y,KAAKogE,kBAAkB9nD,IAAIM,EACtC,CACA+nD,2BAA2B/nD,EAAeT,GACtCnY,KAAKogE,kBAAkBr8D,IAAI6U,GAC3BT,IACAnY,KAAKogE,kBAAkBrxD,OAAO6J,EAClC,CACA2oD,6BAA6B76D,EAASyR,GAClCnY,KAAKohE,yBAA2B16D,EAChCyR,WACOnY,KAAKohE,wBAChB,QAuKsCrhD,IAAtC40B,eAAenjC,IAAI,gBACnBmjC,eAAexY,OAAO,cAAeoa,QAEEx2B,IAAvC40B,eAAenjC,IAAI,iBACnBmjC,eAAexY,OAAO,eAAgBwiC,SAEQ5+C,IAA9C40B,eAAenjC,IAAI,wBACnBmjC,eAAexY,OAAO,sBAAuBojC,IAGjD,MACI,IAAI74D,EAAUxG,SAAS4hE,cACvB,GAAKp7D,IAEDA,EAAQyT,aAAa,+BAGzB,IADAzT,EAAUA,EAAQsd,cACXtd,GAAS,CACZ,GAAIA,GAAWxG,SAAS4D,KACpB,OAAOkB,QAAQkH,KAAKyuC,CAAS;;;;;;;;;QAShCj0C,EAAQklD,WAETllD,EAAUA,EAAQsd,aACtB,CACH,EAtBD,GAwBA/iB,OAAOm9D,MAAQA,GACf9tD,KG9zHA,MAAMyxD,WAAsCjtB,YAC1CzpB,0BACEisC,GAAoBt3D,MACpBA,KAAK+0B,mBFQF1J,eAA2BqK,EAAShB,GACzC,MAAM,cAAEjC,SAdHpH,iBACL,OAAOkH,IAAYmtC,GAOdr0C,iBACL,MAAM,eAAE8K,SAAyB,sCACjC,OAAOA,GACT,CAViCA,GAAiBjxB,KAAKw6D,IACvD,CAYkCsC,GAChC,OAAOvvC,EAAc9oB,OAAO+rB,EAAShB,EACvC,CEX8ButC,CAAYjiE,KAAK01B,QAAS,CAAEwsC,SAAUliE,KAAKmiE,qBAAqB9xC,KAAKrwB,OACjG,CAEA42C,uBACE4gB,GAAuBx3D,MACnBA,KAAK+0B,cAAc/0B,KAAK+0B,aAAahtB,aAC3C,CAEAo6D,qBAAqB/8D,GACnB,MAAM/E,EAAQ,IAAI+hE,aAAa,UAAW,CAAEh9D,SAC5C,OAAOpF,KAAKuuB,cAAcluB,EAC5B,CAEIq1B,cAGF,MAAO,CAAEA,QAFO11B,KAAK+V,aAAa,WAEhBssD,mBADSriE,KAAK+V,aAAa,yBACJ,GAAS,IAAK/V,KAAKwE,UAC9D,OAIsDub,IAApD40B,eAAenjC,IAAI,8BACrBmjC,eAAexY,OAAO,4BAA6B4lC,ICnBrDh4D,iBAAiB,8BCVV,SAAqC1J,GAC1C,GAAIA,EAAMwE,kBAAkB4wC,gBAAiB,CAC3C,MAAQ5wC,OAAQ+Q,EAAM1E,QAAQ,aAAEsrC,IAAmBn8C,EAEnDuV,EAAK7L,iBAAiB,sBAAsB,EAAGmH,QAAUgwC,gBAAkBhM,kBACzE,MAAMpxC,EA0CZ,SAAoBA,GAClB,OAAOA,aAAgB01B,UAAY11B,aAAgBk9B,eACrD,CA5CmBshC,CAAW9lB,EAAa14C,MAAQ04C,EAAa14C,KAAO,IAAIk9B,gBAC/DrqB,EAeZ,SAA8Bu+B,EAAWpxC,EAAM8R,GAC7C,MAAM2sD,EAaR,SAA6BrtB,GAC3B,OAAIA,aAAqBstB,mBAAqBttB,aAAqButB,mBAC7DvtB,EAAU/6B,aAAa,cAClB+6B,EAAUqtB,WAKZ,IAEX,CAvBqBG,CAAoBxtB,GACjCytB,EAAiB7+D,EAAK0N,IAAI,WAC1BmF,EAASf,EAAKG,aAAa,WAAa,MAE9C,MAAyB,iBAAdwsD,EACFA,EAC2B,iBAAlBI,EACTA,EAEAhsD,CAEX,CA3BqBisD,CAAqB1tB,EAAWpxC,EAAM8R,GAEhD,OAAO5B,KAAK2C,KACX,QAAQ3C,KAAK2C,GACf7S,EAAKiL,OAAO,WAEZjL,EAAK4N,IAAI,UAAWiF,GAGtB6lC,EAAa7lC,OAAS,OACxB,GACC,CAAE4kC,MAAM,GACb,CACF,I,cCbAt6C,OAAOC,SAAW,cAClB,MAAMoV,GAAU,OAChBpV,SAASuqB,KCJT,SAAgCnV,GAC5B,OAAOA,EAAQxI,OACVR,KAAKsE,GAGd,SAA8C0E,EAAS1E,GACnD,MAAMwB,EAWV,SAAiCxB,GAC7B,MAAMixD,GAAejxD,EAAI+B,MAAM,2CAA6C,IAAI,GAChF,GAAIkvD,EACA,OAAOA,EAAYh7D,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAE7D,CAhBuBi7D,CAAwBlxD,GAC3C,GAAIwB,EACA,OAGR,SAA0CnF,EAAQmF,GAC9C,MAAM8P,EAAwBjV,EAAO0e,QACrC,GAAoC,mBAAzBzJ,EACP,MAAO,CAAE9P,aAAY8P,wBAE7B,CARe6/C,CAAiCzsD,EAAQ1E,GAAMwB,EAE9D,CARsB4vD,CAAqC1sD,EAAS1E,KAC3DqD,QAAQtQ,GAAUA,GAC3B,CDAcs+D,CAAuB3sD,KAGrCpW,SAAS6J,iBAAiB,cAAc,WACtC,MAAMm5D,EAAWhjE,SAASC,iBAAiB,gBACpB,IAApB+iE,EAAS5lD,QAGZ4lD,EAAS5+D,SAAS6+D,IAChBA,EAAQp5D,iBAAiB,SAAS,WAChC9I,OAAOmiE,aAAa5Y,OACpBvpD,OAAOmiE,aAAa5wC,MACtB,GAAC,GAEL,G","sources":["webpack://app/./app/javascript/controllers/accordion_controller.js","webpack://app/./app/javascript/controllers/application.js","webpack://app/./app/javascript/controllers/das_controller.js","webpack://app/./app/javascript/controllers/hello_controller.js","webpack://app/./app/javascript/controllers/index.js","webpack://app/./app/javascript/controllers/login_controller.js","webpack://app/./app/javascript/controllers/navbar_controller.js","webpack://app/./app/javascript/controllers/payment_controller.js","webpack://app/./app/javascript/controllers/program_controller.js","webpack://app/./app/javascript/controllers/programsession_controller.js","webpack://app/./app/javascript/controllers/swash_controller.js","webpack://app/./app/javascript/controllers/ sync \\.js$","webpack://app/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/./node_modules/@rails/actioncable/src/adapters.js","webpack://app/./node_modules/@rails/actioncable/src/logger.js","webpack://app/./node_modules/@rails/actioncable/src/connection_monitor.js","webpack://app/./node_modules/@rails/actioncable/src/internal.js","webpack://app/./node_modules/@rails/actioncable/src/connection.js","webpack://app/./node_modules/@rails/actioncable/src/subscription.js","webpack://app/./node_modules/@rails/actioncable/src/subscription_guarantor.js","webpack://app/./node_modules/@rails/actioncable/src/subscriptions.js","webpack://app/./node_modules/@rails/actioncable/src/consumer.js","webpack://app/./node_modules/@rails/actioncable/src/index.js","webpack://app/./node_modules/axios/lib/helpers/bind.js","webpack://app/./node_modules/axios/lib/utils.js","webpack://app/./node_modules/axios/lib/core/AxiosError.js","webpack://app/./node_modules/axios/lib/helpers/toFormData.js","webpack://app/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://app/./node_modules/axios/lib/helpers/buildURL.js","webpack://app/./node_modules/axios/lib/core/InterceptorManager.js","webpack://app/./node_modules/axios/lib/defaults/transitional.js","webpack://app/./node_modules/axios/lib/platform/browser/index.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://app/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://app/./node_modules/axios/lib/defaults/index.js","webpack://app/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://app/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://app/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://app/./node_modules/axios/lib/core/transformData.js","webpack://app/./node_modules/axios/lib/cancel/isCancel.js","webpack://app/./node_modules/axios/lib/cancel/CanceledError.js","webpack://app/./node_modules/axios/lib/helpers/cookies.js","webpack://app/./node_modules/axios/lib/core/buildFullPath.js","webpack://app/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://app/./node_modules/axios/lib/helpers/combineURLs.js","webpack://app/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://app/./node_modules/axios/lib/helpers/speedometer.js","webpack://app/./node_modules/axios/lib/adapters/xhr.js","webpack://app/./node_modules/axios/lib/adapters/adapters.js","webpack://app/./node_modules/axios/lib/helpers/null.js","webpack://app/./node_modules/axios/lib/core/settle.js","webpack://app/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://app/./node_modules/axios/lib/core/dispatchRequest.js","webpack://app/./node_modules/axios/lib/core/mergeConfig.js","webpack://app/./node_modules/axios/lib/env/data.js","webpack://app/./node_modules/axios/lib/helpers/validator.js","webpack://app/./node_modules/axios/lib/core/Axios.js","webpack://app/./node_modules/axios/lib/cancel/CancelToken.js","webpack://app/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://app/./node_modules/axios/lib/axios.js","webpack://app/./node_modules/axios/lib/helpers/spread.js","webpack://app/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/make namespace object","webpack://app/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack://app/./app/javascript/application.js","webpack://app/./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js"],"sourcesContent":["import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.items = document.querySelectorAll('.accordion-item')\n }\n\n toggle(event) {\n const accordion_item = event.currentTarget.closest('.accordion-item')\n const accordion_content = accordion_item.querySelector('.accordion-content')\n const accordion_closed_icon = accordion_item.querySelector('.accordion-icon')\n \n !accordion_content.style.maxHeight ? accordion_content.style.maxHeight = '0px' : null\n if (accordion_content.style.maxHeight != '0px') {\n accordion_content.style.maxHeight = '0px'\n } else {\n accordion_content.style.maxHeight = '800px'\n }\n accordion_closed_icon.classList.toggle('active')\n }\n}\n","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","import { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [\n 'survey_modal',\n 'survey_step',\n 'step_container',\n 'help_modal',\n 'error',\n 'help_approbation_modal',\n 'help_amour_modal',\n 'help_realisation_modal',\n 'help_perfectionnisme_modal',\n 'help_conscience_modal',\n 'help_omnipotence_modal',\n 'help_autonomie_modal',\n ]\n\n connect() {\n this.step = 1\n this.survey_stepTarget.innerText = this.step\n this.das_survey = {\n e1: null, e2: null, e3: null, e4: null, e5: null, e6: null, e7: null, e8: null, e9: null, e10: null, e11: null, e12: null, e13: null, e14: null, e15: null, e16: null, e17: null, e18: null, e19: null, e20: null, e21: null, e22: null, e23: null, e24: null, e25: null, e26: null, e27: null, e28: null, e29: null, e30: null, e31: null, e32: null, e33: null, e34: null, e35: null,\n }\n }\n\n new(e) {\n e.preventDefault()\n document.body.classList.add('overflow-hidden')\n this.survey_modalTarget.classList.remove('hidden')\n }\n\n close_survey_modal(e) {\n e.preventDefault()\n document.body.classList.remove('overflow-hidden')\n this.survey_modalTarget.classList.add('hidden')\n }\n\n next_step(e) {\n e.preventDefault()\n if(this.das_survey[`e${this.step}`] == null) {\n this.errorTarget.classList.remove('hidden')\n return\n }\n this.errorTarget.classList.add('hidden')\n this.step += 1\n this.survey_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n previous_step(e) {\n e.preventDefault()\n this.step -= 1\n this.survey_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n choose_answer(event) {\n const value = parseInt(event.target.value)\n this.das_survey[event.target.name] = value\n this.errorTarget.classList.add('hidden')\n }\n\n submit(e) {\n e.preventDefault()\n console.log(this.das_survey)\n axios.post('/das_surveys', {\n das_survey: this.das_survey\n }).then(response => {\n if(response.data.success) {\n window.location.reload()\n }\n })\n }\n\n open_help_modal(e) {\n e.preventDefault()\n document.body.classList.add('overflow-hidden')\n console.log(e.target.dataset.type)\n if(e.target.dataset.type == 'approbation')\n this.help_approbation_modalTarget.classList.remove('hidden')\n \n if(e.target.dataset.type == 'amour')\n this.help_amour_modalTarget.classList.remove('hidden')\n\n if(e.target.dataset.type == 'realisations')\n this.help_realisation_modalTarget.classList.remove('hidden')\n\n if(e.target.dataset.type == 'perfectionnisme')\n this.help_perfectionnisme_modalTarget.classList.remove('hidden')\n\n if(e.target.dataset.type == 'conscience')\n this.help_conscience_modalTarget.classList.remove('hidden')\n\n if(e.target.dataset.type == 'omnipotence')\n this.help_omnipotence_modalTarget.classList.remove('hidden')\n\n if(e.target.dataset.type == 'autonomie')\n this.help_autonomie_modalTarget.classList.remove('hidden')\n }\n\n close_help_modal(e) {\n e.preventDefault()\n document.body.classList.remove('overflow-hidden')\n this.help_modalTarget.classList.add('hidden')\n }\n\n close_help_approbation_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_approbation_modalTarget.classList.add('hidden')\n }\n close_help_amour_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_amour_modalTarget.classList.add('hidden')\n }\n \n close_help_realisation_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_realisation_modalTarget.classList.add('hidden')\n }\n\n close_help_perfectionnisme_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_perfectionnisme_modalTarget.classList.add('hidden')\n }\n\n close_help_conscience_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_conscience_modalTarget.classList.add('hidden')\n }\n\n close_help_omnipotence_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_omnipotence_modalTarget.classList.add('hidden')\n }\n\n close_help_autonomie_modal() {\n document.body.classList.remove('overflow-hidden')\n this.help_autonomie_modalTarget.classList.add('hidden')\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport HelloController from \"./hello_controller\"\napplication.register(\"hello\", HelloController)\n","import { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [\n 'login_button',\n 'email_input',\n 'password_input',\n 'login_error',\n 'unsubscribe_modal',\n 'email_input_unsubsribe',\n 'login_modal',\n 'unsub_ok',\n 'unsub_error',\n 'login_form',\n 'forgot_password_form',\n 'modal_title',\n 'reset_success',\n 'forgot_password_link'\n ]\n\n connect() {\n }\n\n open_modal() {\n this.login_modalTarget.classList.remove('hidden')\n }\n\n close_modal() {\n this.login_modalTarget.classList.add('hidden')\n this.login_formTarget.classList.remove('hidden')\n this.forgot_password_formTarget.classList.add('hidden')\n this.modal_titleTarget.innerText = 'Connexion'\n this.forgot_password_linkTarget.classList.remove('hidden')\n }\n\n open_unsubscribe_modal() {\n this.unsubscribe_modalTarget.classList.remove('hidden')\n }\n\n close_unsubscribe_modal() {\n this.unsubscribe_modalTarget.classList.add('hidden')\n }\n\n login(e) {\n e.preventDefault()\n this.login_errorTarget.classList.add('hidden')\n axios.post('/users/login', {\n user: {\n email: this.email_inputTarget.value,\n password: this.password_inputTarget.value\n }\n }).then(response => {\n if(response.data.success) {\n window.location.replace(response.data.redirect_url)\n } else {\n this.login_errorTarget.classList.remove('hidden')\n }\n })\n }\n\n unsubscribe(e) {\n e.preventDefault()\n\n axios.post('/stop-plan', {\n user: {\n email: this.email_input_unsubsribeTarget.value\n }\n }).then(response => {\n console.log(response.data)\n if(response.data.success) {\n this.display_unsub_success()\n } else {\n this.display_unsub_error()\n }\n })\n }\n\n display_unsub_error() { \n this.unsub_okTarget.classList.add('hidden')\n this.unsub_errorTarget.classList.remove('hidden')\n }\n\n display_unsub_success() {\n this.unsub_okTarget.classList.remove('hidden')\n this.unsub_errorTarget.classList.add('hidden')\n }\n\n forgot_password(e) {\n this.login_formTarget.classList.add('hidden')\n this.forgot_password_formTarget.classList.remove('hidden')\n this.modal_titleTarget.innerText = 'Mot de passe oublié'\n e.target.classList.add('hidden')\n }\n\n send_reset_password_instructions(e) {\n e.preventDefault()\n this.reset_successTarget.classList.remove('hidden')\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'burger_open',\n 'burger_close',\n 'menu'\n ]\n\n connect() {\n }\n\n toggleBurger(event) {\n this.burger_openTarget.classList.toggle('hidden')\n this.burger_closeTarget.classList.toggle('hidden')\n this.menuTarget.classList.toggle('hidden')\n }\n}\n","\nimport { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [ \n \"form_home\", \n 'modal_background', \n 'modal_container', \n 'email_input', \n 'email_container', \n 'stripePublicKey',\n 'email_input_payment',\n 'spinner',\n 'lock',\n 'name'\n ]\n\n connect() {\n\n this.stripe = Stripe(this.stripePublicKeyTarget.value)\n console.log(this.stripePublicKeyTarget.value)\n const elements = this.stripe.elements({\n fonts: [{\n cssSrc: 'https://fonts.googleapis.com/css?family=Mukta:400,600,700&display=swap',\n }],\n })\n\n const elementsStyles = {\n base: {\n fontSize: '16px',\n fontWeight: '600',\n fontSmoothing: 'antialiased',\n color: '#696871',\n '::placeholder': {\n color: '#9c9aaa'\n }\n },\n invalid: {\n color: \"#ff5252\",\n iconColor: \"#ff5252\",\n },\n }\n\n /* MORE STRIPE ELEMENTS ACTIONS */\n this.cardNumber = elements.create(\"cardNumber\", {\n style: elementsStyles\n })\n this.cardNumber.mount(\"#card-number\")\n\n this.expiration = elements.create(\"cardExpiry\", {\n style: elementsStyles\n })\n this.expiration.mount(\"#card-expiry\")\n\n this.cvcNumber = elements.create(\"cardCvc\", {\n style: elementsStyles\n })\n this.cvcNumber.mount(\"#card-cvc\")\n\n /* Set up event listeners on card */\n this.cardNumber.addEventListener('change', ({\n error\n }) => {\n if(error && error.message) {\n this.displayError(error.message)\n return\n }\n\n this.displayError()\n })\n this.expiration.addEventListener('change', ({\n error\n }) => {\n if(error && error.message) {\n this.displayError(error.message)\n return\n }\n\n this.displayError()\n })\n this.cvcNumber.addEventListener('change', ({\n error\n }) => {\n if(error && error.message) {\n this.displayError(error.message)\n return\n }\n\n this.displayError()\n })\n }\n\n displayError(error) {\n const errorContainer = document.getElementById('error')\n if (error) {\n errorContainer.classList.remove('hidden');\n errorContainer.innerText = error;\n } else {\n errorContainer.classList.add('hidden');\n errorContainer.innerText = '';\n }\n }\n\n first_step(event) {\n event.preventDefault()\n this.modal_backgroundTarget.classList.remove('hidden')\n document.body.classList.add('overflow-hidden')\n this.email = this.email_inputTarget.value\n if(this.email == '') {\n this.email = this.email_inputTargets[1].value\n }\n this.email_inputTarget.value = ''\n console.log(this.email)\n this.email_containerTarget.innerHTML = this.email\n this.email_input_paymentTarget.value = this.email\n }\n\n close_modal() {\n console.log('close modal')\n this.modal_backgroundTarget.classList.add('hidden')\n document.body.classList.remove('overflow-hidden')\n }\n loadingActive() {\n this.lockTarget.classList.add('hidden')\n this.spinnerTarget.classList.remove('hidden')\n }\n\n loadingDisactive() {\n this.lockTarget.classList.remove('hidden')\n this.spinnerTarget.classList.add('hidden')\n }\n\n pay(event) {\n this.loadingActive()\n \n // Setup authenticity token\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n axios.defaults.headers.common['X-CSRF-Token'] = csrfToken\n event.preventDefault()\n\n if(!this.nameTarget.value) {\n this.displayError('Please enter your full name')\n this.loadingDisactive()\n return\n }\n if(!this.email_input_paymentTarget.value) {\n this.displayError('Please enter your email')\n this.loadingDisactive()\n return\n }\n\n\n /* Create your 'card' payment method */\n this.stripe.createPaymentMethod({\n type: 'card',\n card: this.cardNumber,\n /* Reference: https://stripe.com/docs/api/payment_methods/create#create_payment_method-billing_details */\n billing_details: {\n name: this.nameTarget.value,\n email: this.email_input_paymentTarget.value\n },\n }).then((result) => {\n\n if (result.error) {\n this.displayError(result.error);\n this.loadingDisactive()\n console.error('Error creating Stripe Payment Method: ', result.error)\n } \n // else if (result.paymentMethod.card.funding === 'prepaid') {\n // console.log('prepaid')\n // this.displayError(\"Questo tipo di carta di pagamento non è accettato dai nostri servizi\");\n // }\n else {\n /* Proceed to next step of creating customer and subscription */\n this.stripePaymentMethodHandler(result.paymentMethod)\n }\n })\n }\n\n stripePaymentMethodHandler(paymentMethod) {\n axios.post('/pay', {\n user: {\n email: this.email_input_paymentTarget.value,\n name: this.nameTarget.value\n },\n stripe_plan: {\n payment_method_id: paymentMethod.id\n }\n }).then(response => {\n if (response.data.error) {\n this.displayError(response.data.error)\n this.loadingDisactive()\n axios.post('/stop-plan?destroy=true', {\n user: {\n email: this.email\n }\n })\n } else {\n this.customerId = response.data.customer_id\n this.stripe.confirmCardPayment(response.data.intent.client_secret, {\n payment_method: {\n card: this.cardNumber,\n billing_details: {\n name: this.nameTarget.value,\n email: this.email_input_paymentTarget.value\n },\n },\n }).then((result) => {\n if (result.error) {\n this.displayError(result.error.message)\n console.warn(result.error)\n this.loadingDisactive()\n axios.post('/stop-plan?destroy=true', {\n user: {\n email: this.email_input_paymentTarget.value\n }\n })\n } else {\n axios.post(`/sign-in-user?customer_id=${this.customerId}`, {\n order: {\n profile: this.profile,\n }\n }).then(response => {\n window.location.replace(response.data.redirect_url)\n })\n }\n })\n }\n })\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [\n 'step_container',\n 'program_step',\n 'error',\n 'new_program_modal',\n 'problem',\n 'desagentivity',\n 'induction',\n 'suggestion',\n 'exit',\n ]\n\n connect() {\n this.step = 1\n }\n\n new() {\n document.body.classList.add('overflow-y-hidden')\n this.new_program_modalTarget.classList.remove('hidden')\n }\n\n next_step(e) {\n console.log('next step')\n e.preventDefault()\n this.errorTarget.classList.add('hidden')\n this.step += 1\n this.program_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n previous_step(e) {\n e.preventDefault()\n this.step -= 1\n this.program_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n submit(e) {\n e.preventDefault()\n axios.post('/programs', {\n program: {\n problem: this.problemTarget.value,\n desagentivity: this.desagentivityTarget.value,\n induction: this.inductionTarget.value,\n suggestion: this.suggestionTarget.value,\n exit: this.exitTarget.value\n }\n }).then(response => {\n if(response.data.success) {\n window.location.reload()\n }\n })\n }\n\n close_modal() {\n document.body.classList.remove('overflow-y-hidden')\n this.new_program_modalTarget.classList.add('hidden')\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [\n 'step_container',\n 'program_step',\n 'error',\n 'new_program_modal',\n 'suggestion',\n 'result',\n 'program_id'\n ]\n\n connect() {\n this.step = 1\n }\n\n new() {\n document.body.classList.add('overflow-y-hidden')\n this.new_program_modalTarget.classList.remove('hidden')\n }\n\n next_step(e) {\n console.log('next step')\n e.preventDefault()\n this.errorTarget.classList.add('hidden')\n this.step += 1\n this.program_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n previous_step(e) {\n e.preventDefault()\n this.step -= 1\n this.program_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n submit(e) {\n e.preventDefault()\n axios.post(`/programs/${this.new_program_modalTarget.dataset.programId}/program_sessions`, {\n program_session: {\n suggestion: this.suggestionTarget.value,\n result: this.resultTarget.value\n }\n }).then(response => {\n if(response.data.success) {\n window.location.reload()\n }\n })\n }\n\n close_modal() {\n document.body.classList.remove('overflow-y-hidden')\n this.new_program_modalTarget.classList.add('hidden')\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport axios from 'axios'\n\nexport default class extends Controller {\n static targets = [\n 'survey_modal',\n 'survey_step',\n 'error',\n 'step_container'\n ]\n\n connect() {\n console.log('connected')\n this.step = 1\n this.survey_stepTarget.innerText = this.step\n this.swash_survey = {\n e1: null, e2: null, e3: null, e4: null, e5: null, e6: null, e7: null, e8: null, e9: null, e10: null, e11: null, e12: null\n }\n }\n\n next_step(e) {\n e.preventDefault()\n if(this.swash_survey[`e${this.step}`] == null) {\n this.errorTarget.classList.remove('hidden')\n return\n }\n this.errorTarget.classList.add('hidden')\n this.step += 1\n this.survey_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n previous_step(e) {\n e.preventDefault()\n this.step -= 1\n this.survey_stepTarget.innerText = this.step\n this.step_containerTargets.forEach((step_container) => {\n if(step_container.dataset.step == this.step) {\n step_container.classList.remove('hidden')\n } else {\n step_container.classList.add('hidden')\n }\n })\n }\n\n submit(e) {\n console.log(this.swash_survey)\n e.preventDefault()\n axios.post('/swash_surveys', {\n swash_survey: this.swash_survey\n }).then(response => {\n if(response.data.success) {\n window.location.reload()\n }\n })\n }\n\n choose_answer(event) {\n const value = parseInt(event.target.value)\n this.swash_survey[event.target.name] = value\n this.errorTarget.classList.add('hidden')\n }\n\n open_modal() {\n this.survey_modalTarget.classList.remove('hidden')\n }\n\n close_modal() {\n this.survey_modalTarget.classList.add('hidden')\n }\n}\n","var map = {\n\t\"./accordion_controller.js\": 603,\n\t\"./application.js\": 15,\n\t\"./das_controller.js\": 724,\n\t\"./hello_controller.js\": 577,\n\t\"./index.js\": 436,\n\t\"./login_controller.js\": 755,\n\t\"./navbar_controller.js\": 875,\n\t\"./payment_controller.js\": 424,\n\t\"./program_controller.js\": 251,\n\t\"./programsession_controller.js\": 567,\n\t\"./swash_controller.js\": 412\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 857;","/*\nStimulus 3.2.1\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details = {}) {\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach((outletName) => {\n const selector = this.selector(outletName);\n const details = { outletName };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach((observer) => observer.start());\n }\n this.dependentContexts.forEach((context) => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n return (this.hasOutlet(element, outletName) &&\n element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n }\n else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outlet) => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n }\n else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition,\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","export default {\n logger: self.console,\n WebSocket: self.WebSocket\n}\n","import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n","export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n","import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n","// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor","import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n","import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n","import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\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 const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\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\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 if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = 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 value = +value;\n return Number.isFinite(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\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\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};\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","'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","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\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 isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\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 */\n const isStandardBrowserWebWorkerEnv = (() => {\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\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\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","'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 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\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\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'],\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 if (!hasJSONContentType) {\n return data;\n }\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 ) {\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 (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 }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\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// 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\nfunction isValidHeaderName(str) {\n return /^[-_a-zA-Z]+$/.test(str.trim());\n}\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 {\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\nutils.freezeMethods(AxiosHeaders.prototype);\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 utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\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\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 utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\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 it's 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","'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\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.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 speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return 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 };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\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 if (utils.isFormData(requestData) && (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv)) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), 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 // 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 if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\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(fullPath);\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 utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\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\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 for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\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\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","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : 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 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(config1).concat(Object.keys(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","export const VERSION = \"1.3.4\";","'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 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 !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && 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","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 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.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\nTurbo 7.2.5\nCopyright © 2023 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined ||\n window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n },\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n }\n else if (\"SubmitEvent\" in window) {\n return;\n }\n else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n },\n });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"complete\") {\n this.delegate.completeChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail,\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n })\n .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nfunction findClosestRecursively(element, selector) {\n var _a;\n if (element instanceof Element) {\n return (element.closest(selector) ||\n findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n this.abortController = new AbortController();\n this.resolveRequestPromise = (_value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target,\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n };\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\",\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise,\n },\n target: this.target,\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error },\n });\n return !event.defaultPrevented;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n }\n else {\n return message;\n }\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n }\n else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareRequest(request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this },\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({ formSubmission: this }, this.result),\n });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null)\n return element;\n else\n continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (_value) => { };\n this.resolveInterceptionPromise = (_value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = ((_event) => {\n delete this.clickEvent;\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n link.hasAttribute(\"data-turbo-method\"));\n }\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method)\n form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame)\n form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = getVisitAction(link);\n if (turboAction)\n form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm)\n form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream)\n form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement)\n return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: [],\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument({ head, body }) {\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions)\n option.selected = false;\n for (const option of source.selectedOptions)\n clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot)\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false,\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) { }\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false,\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode,\n },\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) { }\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) { }\n visitRendered(_visit) { }\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", { detail: reason });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.started = false;\n this.removeStaleElements = ((_event) => {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n });\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return (element.closest(\"turbo-frame\") == null &&\n this.shouldSubmit(element, submitter) &&\n this.shouldRedirect(element, submitter));\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n else {\n return false;\n }\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected },\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n }\n else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return (action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission({ submitter, formElement }) {\n return getVisitAction(submitter, formElement) || \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n }\n else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\",\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\",\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n await mergedHeadElements;\n await newStylesheetElements;\n }\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n }\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n return false;\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n }\n else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\n\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n }\n else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n }\n catch (_) {\n }\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n }\n else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n });\n }\n else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\",\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() { }\n willFollowLinkToLocation(link, location, event) {\n return (this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event));\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return (this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true,\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true,\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({ newBody }, options),\n cancelable: true,\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing },\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString(),\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true,\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n }\n else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n }\n else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n },\n },\n};\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n replace() {\n this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach((targetElement) => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (_fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\"))\n return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const { src } = this.element;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\"))\n return;\n this.loadSourceURL();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const { body } = parseHTMLDocument(html);\n const newFrameElement = await this.extractForeignFrameElement(body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n this.visitResponse(fetchResponse.response);\n }\n }\n }\n catch (error) {\n console.error(error);\n this.view.invalidate();\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame)\n form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n prepareRequest(request) {\n var _a;\n request.headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n console.error(response);\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({ newFrame }, options),\n cancelable: true,\n });\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) { }\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() { }\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise((resolve) => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot,\n };\n if (this.action)\n options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async (url, options = {}) => {\n if (url instanceof Response) {\n this.visitResponse(url);\n }\n else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true,\n });\n return !event.defaultPrevented;\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n }\n catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n }\n else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })()));\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n }\n else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a