@ytsaurus/ui 1.12.2 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/build/cjs/@types/core.d.ts +38 -0
  2. package/build/cjs/server/components/layout-config.js +6 -1
  3. package/build/cjs/server/components/layout-config.js.map +1 -1
  4. package/build/cjs/server/components/oauth.d.ts +26 -0
  5. package/build/cjs/server/components/oauth.js +123 -0
  6. package/build/cjs/server/components/oauth.js.map +1 -0
  7. package/build/cjs/server/components/yt-auth.d.ts +6 -0
  8. package/build/cjs/server/components/yt-auth.js +23 -0
  9. package/build/cjs/server/components/yt-auth.js.map +1 -0
  10. package/build/cjs/server/controllers/login.d.ts +0 -1
  11. package/build/cjs/server/controllers/login.js +4 -26
  12. package/build/cjs/server/controllers/login.js.map +1 -1
  13. package/build/cjs/server/controllers/logout.d.ts +2 -0
  14. package/build/cjs/server/controllers/logout.js +15 -0
  15. package/build/cjs/server/controllers/logout.js.map +1 -0
  16. package/build/cjs/server/controllers/oauth-login.d.ts +4 -0
  17. package/build/cjs/server/controllers/oauth-login.js +30 -0
  18. package/build/cjs/server/controllers/oauth-login.js.map +1 -0
  19. package/build/cjs/server/index.js +9 -1
  20. package/build/cjs/server/index.js.map +1 -1
  21. package/build/cjs/server/middlewares/authorization.d.ts +2 -0
  22. package/build/cjs/server/middlewares/authorization.js +42 -0
  23. package/build/cjs/server/middlewares/authorization.js.map +1 -0
  24. package/build/cjs/server/middlewares/oauth.d.ts +2 -0
  25. package/build/cjs/server/middlewares/oauth.js +27 -0
  26. package/build/cjs/server/middlewares/oauth.js.map +1 -0
  27. package/build/cjs/server/middlewares/yt-auth.d.ts +1 -1
  28. package/build/cjs/server/middlewares/yt-auth.js +10 -42
  29. package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
  30. package/build/cjs/server/routes.js +6 -1
  31. package/build/cjs/server/routes.js.map +1 -1
  32. package/build/cjs/server/utils/authorization.d.ts +6 -0
  33. package/build/cjs/server/utils/authorization.js +33 -0
  34. package/build/cjs/server/utils/authorization.js.map +1 -0
  35. package/build/cjs/shared/constants/index.d.ts +3 -0
  36. package/build/cjs/shared/constants/index.js +3 -1
  37. package/build/cjs/shared/constants/index.js.map +1 -1
  38. package/build/cjs/shared/yt-types.d.ts +2 -0
  39. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js +23 -5
  40. package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  41. package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
  42. package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
  43. package/build/cjs/ui/components/NumberInput/NumberInput.d.ts +1 -1
  44. package/build/cjs/ui/containers/AppNavigation/AppNavigation.js +2 -0
  45. package/build/cjs/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
  46. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
  47. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
  48. package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  49. package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
  50. package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
  51. package/build/cjs/ui/store/reducers/global/index.d.ts +1 -0
  52. package/build/cjs/ui/store/reducers/global/index.js +1 -0
  53. package/build/cjs/ui/store/reducers/global/index.js.map +1 -1
  54. package/build/cjs/ui/store/selectors/global/index.d.ts +4 -0
  55. package/build/cjs/ui/store/selectors/global/index.js +14 -4
  56. package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
  57. package/build/esm/@types/core.d.ts +38 -0
  58. package/build/esm/server/components/layout-config.js +7 -2
  59. package/build/esm/server/components/layout-config.js.map +1 -1
  60. package/build/esm/server/components/oauth.d.ts +26 -0
  61. package/build/esm/server/components/oauth.js +169 -0
  62. package/build/esm/server/components/oauth.js.map +1 -0
  63. package/build/esm/server/components/yt-auth.d.ts +6 -0
  64. package/build/esm/server/components/yt-auth.js +17 -0
  65. package/build/esm/server/components/yt-auth.js.map +1 -0
  66. package/build/esm/server/controllers/login.d.ts +0 -1
  67. package/build/esm/server/controllers/login.js +41 -88
  68. package/build/esm/server/controllers/login.js.map +1 -1
  69. package/build/esm/server/controllers/logout.d.ts +2 -0
  70. package/build/esm/server/controllers/logout.js +11 -0
  71. package/build/esm/server/controllers/logout.js.map +1 -0
  72. package/build/esm/server/controllers/oauth-login.d.ts +4 -0
  73. package/build/esm/server/controllers/oauth-login.js +50 -0
  74. package/build/esm/server/controllers/oauth-login.js.map +1 -0
  75. package/build/esm/server/index.js +7 -2
  76. package/build/esm/server/index.js.map +1 -1
  77. package/build/esm/server/middlewares/authorization.d.ts +2 -0
  78. package/build/esm/server/middlewares/authorization.js +74 -0
  79. package/build/esm/server/middlewares/authorization.js.map +1 -0
  80. package/build/esm/server/middlewares/oauth.d.ts +2 -0
  81. package/build/esm/server/middlewares/oauth.js +50 -0
  82. package/build/esm/server/middlewares/oauth.js.map +1 -0
  83. package/build/esm/server/middlewares/yt-auth.d.ts +1 -1
  84. package/build/esm/server/middlewares/yt-auth.js +8 -58
  85. package/build/esm/server/middlewares/yt-auth.js.map +1 -1
  86. package/build/esm/server/routes.js +16 -2
  87. package/build/esm/server/routes.js.map +1 -1
  88. package/build/esm/server/utils/authorization.d.ts +6 -0
  89. package/build/esm/server/utils/authorization.js +28 -0
  90. package/build/esm/server/utils/authorization.js.map +1 -0
  91. package/build/esm/shared/constants/index.d.ts +3 -0
  92. package/build/esm/shared/constants/index.js +2 -1
  93. package/build/esm/shared/constants/index.js.map +1 -1
  94. package/build/esm/shared/yt-types.d.ts +2 -0
  95. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js +24 -6
  96. package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
  97. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
  98. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
  99. package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.scss +12 -0
  100. package/build/esm/ui/components/NumberInput/NumberInput.d.ts +1 -1
  101. package/build/esm/ui/containers/AppNavigation/AppNavigation.js +3 -1
  102. package/build/esm/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
  103. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
  104. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
  105. package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
  106. package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
  107. package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
  108. package/build/esm/ui/store/reducers/global/index.d.ts +1 -0
  109. package/build/esm/ui/store/reducers/global/index.js +1 -0
  110. package/build/esm/ui/store/reducers/global/index.js.map +1 -1
  111. package/build/esm/ui/store/selectors/global/index.d.ts +4 -0
  112. package/build/esm/ui/store/selectors/global/index.js +12 -2
  113. package/build/esm/ui/store/selectors/global/index.js.map +1 -1
  114. package/dist/public/build/assets-manifest.json +12 -12
  115. package/dist/public/build/css/{main.136a49c7.css → main.e919e247.css} +2 -2
  116. package/dist/public/build/css/main.e919e247.css.map +1 -0
  117. package/dist/public/build/js/89.07445d46.chunk.js +2 -0
  118. package/dist/public/build/js/89.07445d46.chunk.js.map +1 -0
  119. package/dist/public/build/js/main.9d592639.js +3 -0
  120. package/dist/public/build/js/{main.f91e3651.js.map → main.9d592639.js.map} +1 -1
  121. package/dist/public/build/js/{runtime.6c8d85d3.js → runtime.9491563b.js} +2 -2
  122. package/dist/public/build/js/{runtime.6c8d85d3.js.map → runtime.9491563b.js.map} +1 -1
  123. package/dist/public/build/manifest.json +8 -8
  124. package/dist/server/components/layout-config.js +6 -1
  125. package/dist/server/components/oauth.d.ts +26 -0
  126. package/dist/server/components/oauth.js +123 -0
  127. package/dist/server/components/yt-auth.d.ts +6 -0
  128. package/dist/server/components/yt-auth.js +23 -0
  129. package/dist/server/controllers/login.d.ts +0 -1
  130. package/dist/server/controllers/login.js +4 -26
  131. package/dist/server/controllers/logout.d.ts +2 -0
  132. package/dist/server/controllers/logout.js +15 -0
  133. package/dist/server/controllers/oauth-login.d.ts +4 -0
  134. package/dist/server/controllers/oauth-login.js +30 -0
  135. package/dist/server/index.js +9 -1
  136. package/dist/server/middlewares/authorization.d.ts +2 -0
  137. package/dist/server/middlewares/authorization.js +42 -0
  138. package/dist/server/middlewares/oauth.d.ts +2 -0
  139. package/dist/server/middlewares/oauth.js +27 -0
  140. package/dist/server/middlewares/yt-auth.d.ts +1 -1
  141. package/dist/server/middlewares/yt-auth.js +10 -42
  142. package/dist/server/routes.js +6 -1
  143. package/dist/server/utils/authorization.d.ts +6 -0
  144. package/dist/server/utils/authorization.js +33 -0
  145. package/dist/shared/constants/index.d.ts +3 -0
  146. package/dist/shared/constants/index.js +3 -1
  147. package/package.json +2 -2
  148. package/dist/public/build/css/main.136a49c7.css.map +0 -1
  149. package/dist/public/build/js/89.6ea87438.chunk.js +0 -2
  150. package/dist/public/build/js/89.6ea87438.chunk.js.map +0 -1
  151. package/dist/public/build/js/main.f91e3651.js +0 -3
  152. /package/dist/public/build/js/{main.f91e3651.js.LICENSE.txt → main.9d592639.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/89.07445d46.chunk.js","mappings":"kVAEO,MACMA,EAAmB,mBAEnBC,EAAkC,CAAC,cAAe,YAAa,SCCtE,SAAUC,EAAcC,GAC1B,IAAKC,EAAWD,GACZ,OAAO,EAAAE,EAGX,OAAQF,EAAKG,MACT,IAAK,SACD,OAAO,GACX,IAAK,UACD,OAAO,GAEX,QACI,OAAO,EAAAD,EAEnB,CAEM,SAAUE,EAA2CC,GACvD,OAAOA,EAAMC,QAAO,CAACC,EAAKP,IAASO,EAAMR,EAAcC,IAAO,EAClE,CAEM,SAAUQ,EAAqBH,GACjC,MAAMI,EAAQJ,EAAMK,WAAU,EAAEC,aAAaC,QAAQD,KACrD,OAAkB,IAAXF,OAAeI,EAAYJ,CACtC,CA0FM,SAAUR,EAAWD,GACvB,YAAkCa,KAA1Bb,aAAI,EAAJA,EAAmBc,GAC/B,E,ywBC/GA,MAAMC,GAAI,IAAAA,GAAM,kCAWHC,EAA4C,EACrDC,UACAC,WACAC,UACAC,qBAEA,MAAM,oBAACC,IAAuB,YACvB,IAACC,EAAG,KAAEC,EAAI,MAAEC,EAAK,OAAEC,GAASC,IAAe,IAAAC,UAAS,CACvDL,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,KAELG,EAAaC,IAAkB,IAAAF,WAAkB,GAElDG,GAAwB,IAAAC,UAC1B,KACIC,EAAAA,EAAAA,IACI,K,MACI,MAAM,IACFV,EAAM,EAAC,KACPC,EAAO,EAAC,MACRC,EAAQ,EAAC,OACTC,EAAS,IACS,QAAlB,EAAAR,aAAA,EAAAA,EAASN,eAAS,eAAAsB,0BAA2B,CAAC,EAElDP,EAAY,CACRJ,IAAKA,EAAMY,OAAOC,QAClBZ,KAAMA,EAAOW,OAAOE,QACpBZ,QACAC,UACF,GAjCA,IAoCN,CAACY,SAAS,KAElB,CAACpB,IAGCqB,GAAe,IAAAC,cAAY,IAAMT,KAAyB,CAACA,IAiBjE,OAfA,IAAAU,YAAU,KACN,GAAKZ,EAOL,OAHAU,IAEAJ,OAAOO,iBAAiB,SAAUH,GAC3B,IAAMJ,OAAOQ,oBAAoB,SAAUJ,EAAa,GAChE,CAACA,EAAcV,IAElBP,SAAAA,GAAuBsB,IACnBd,EAAec,EAAK,IAGnBzB,GAAaU,EAKdgB,EAAAA,cAACC,EAAA,EAAM,KACHD,EAAAA,cACI,OAAAE,UAAW/B,IACXgC,MAAO,CAACxB,OAAMD,MAAKE,QAAOC,UAC1BN,QAASA,EACTC,eAAgBA,EAAc,iBAG9BwB,EAAAA,cAAA,OAAKE,UAAW/B,EAAE,SAAUG,KAZ7B,IAcE,EAIjBF,EAAgBgC,YAAc,mB,k1IC5E9B,MAAMjC,GAAI,IAAAA,GAAM,sBA+BhB,SAASkC,EAAgBjD,GACrB,IAAIkD,EAAYN,EAAAA,cAAK,OAAAE,UAAW/B,EAAE,eAAgBf,EAAKmD,OAWvD,OATInD,EAAKoD,iBACLF,EACIN,EAAAA,cAACA,EAAAA,SAAc,KACVM,EACDN,EAAAA,cAAA,OAAKE,UAAW/B,EAAE,oBAAqBf,EAAKoD,kBAKjDF,CACX,CAEO,MAAMG,EAAwC,CAAC,aACzCC,EAAwD,EAAE,GAAI,GAE9DC,EAAkCC,IAC3C,MAAM,KACFxD,EAAI,UACJ8C,EAAS,cACTW,EAAa,aACbC,EAAY,aACZC,EAAY,cACZC,GAAgB,EAAI,aACpBC,GAAe,EAAK,YACpBC,EAAW,eACXC,EAAiBV,EAAqB,YACtCW,EAAcV,EAAkB,iBAChCW,EAAgB,mBAChBC,EAAkB,aAClBC,EAAY,YACZC,EAAW,mBACXC,EAAkB,aAClBC,GACAd,GAEE,QAACe,IAAW,WAEX5B,EAAM6B,GAAc5B,EAAAA,UAAwB,GAE7C6B,EAAM7B,EAAAA,OAA6B,MACnC8B,EAAYZ,GAAeW,EAC3BE,EAAiB/B,EAAAA,OAA6B,MAE9CzC,EAAOH,EAAKG,MH/FW,UGgGvBQ,EAAUX,EAAKW,UAAW,EAC1BiE,EAAc5E,EAAK4E,aAAe5E,EAAKmD,MACvC0B,EAAO7E,EAAK6E,KACZC,EAAW9E,EAAK8E,UAAY,EAAAC,EAC5BC,EAAgBhF,EAAKc,KAAOjB,EAE5BoF,EAA+CrC,EAAAA,SACjD,IAAM,CACF,CACIsC,KAAM,UACNC,SAAS,EACTC,QAAS,CAACb,WACVc,MAAO,OACP,EAAAC,GAAE,KAGV,CAACf,IAGCgB,EAAU3C,EAAAA,aACX4C,I,MAEOA,aAAiBC,YACjBD,EAAME,SACO,QAAb,EAAAjB,EAAI9D,eAAS,eAAAgF,SAASH,EAAME,UAIhCvB,SAAAA,GAAgB,GAEpB,CAACA,IAGL,GAAkB,YAAdnE,EAAKG,KACL,OAAOyC,EAAAA,cAAA,OAAKE,UAAW/B,EAAE,kBAG7B,MAAM6E,EAAgBC,GACXtB,EACH3B,EAAAA,cAACkD,EAAA,EACG,CAAAC,QAASnB,EACToB,UAAWpC,GAAkBoB,GAAiBrC,GAASkB,EACvDoC,UAAU,QACVnD,UAAW/B,EAAE,eAAgB,CAAC,YAAaZ,KAE3CyC,EAAAA,cAAA,OACIe,aAAc,IAAMA,aAAY,EAAZA,IACpBD,aAAc,IAAMA,aAAA,EAAAA,IACpBZ,UAAW/B,EAAE,aAEZ8E,IAEC,EAMZK,EAAW,EAAErB,KAAMgB,EAAQ1C,MAAOgD,MACpC,MAAMC,EACFxD,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cACI,OAAAE,UAAW/B,EAAE,CAACZ,OAAMQ,UAAS4D,WAAUzB,GACvC2B,IAAKA,EACLtD,QAAUqE,IACFR,EAMAR,GAAY7B,GAEZyB,SAAAA,EAAcpE,GAAM,EAAOwF,EAC9B,EAELpE,eAAgBiD,EAChBV,aAAc,KACLY,GACDZ,SAAAA,GACH,EAELD,aAAc,KACLa,GACDb,SAAAA,GACH,GAGLd,EAAAA,cAAA,OAAKE,UAAW/B,EAAE,cAAe0D,IAAKE,GACjCiB,EAAaC,IAGlBjD,EAAAA,cAAA,OACIE,UAAW/B,EAAE,SACboC,MAA6B,iBAAfnD,EAAKmD,MAAqBnD,EAAKmD,WAAQtC,GAEpDsF,IAGRjC,GAAsBtD,QAAQ8D,aAAS,EAATA,EAAW/D,UACtCiC,EAAAA,cAACyD,EAAA,EAAK,CACFC,iBAAkBvF,EAAE,SACpB4B,KAAMkB,EACN0C,YAAatC,EACbgC,UAAWlC,EACXyC,OAAQxC,EACRU,UAAWA,EACXa,QAASA,EACTN,UAAWA,GAEVf,MAMjB,OAAOlE,EAAKyG,KACR7D,EAAAA,cAAA,KAAG8D,KAAM1G,EAAKyG,KAAM3D,UAAW/B,EAAE,SAC5BqF,GACD,CAGP,EAGClF,EAAW2D,EAAOjC,EAAAA,cAAC+D,EAAA,EAAK,CAAAC,KAAM/B,EAAMgC,KAAM/B,EAAUhC,UAAW/B,EAAE,UAAc,KAE/E+F,EAAS,CAACjC,KAAM3D,EAAUiC,MADdF,EAAgBjD,IAElC,IACI+G,EADAC,EAAkB,KAGtB,MAAMC,EAAO,CAAC1C,QAAS3D,QAAQ2D,GAAU2C,WAAW,EAAOlH,OAAMyE,OAgBjE,MAdgC,mBAArBzE,EAAKmH,aACZJ,EAAO/G,EAAKmH,YAAYL,EAAQZ,EAAUe,GAC1CD,EACI1C,GACCtE,EAAKmH,YACFL,GACA,EAAEjC,KAAMgB,KAAYD,EAAaC,IACjCoB,KAGRF,EAAOb,EAASY,GAChBE,EAAkB1C,GAAgBsB,EAAa1E,IAI/C0B,EAAAA,cAAAA,EAAAA,SAAA,KACK0B,GACG1B,EAAAA,cAAC5B,EAAe,CACZE,SAAU8F,EACV/F,QAAS0D,EACTxD,QAAUqE,GACNpB,aAAA,EAAAA,EAAcpE,GAAM,EAAOwF,GAE/BpE,eAAgBiD,IAGvB0C,EACApE,GAAQqC,IAAiBvB,aAAa,EAAbA,EAAe2D,SAAUxG,QAAQ8D,aAAA,EAAAA,EAAW/D,UAClEiC,EAAAA,cAACyE,EAAc,iBAAK7D,EAAK,CAAEkB,UAAWD,EAAKc,QAAS,IAAMf,GAAW,MAE1E,EAWX,SAAS6C,GAAe,YACpBjD,EAAW,cACXX,EAAa,UACbiB,EAAS,QACTa,IAEA,MAAM,QAAChB,IAAW,UAClB,OAAOd,aAAA,EAAAA,EAAe2D,QAClBxE,EAAAA,cAACyD,EAAA,EAAM,CAAAJ,UAAWnG,EAAiB6C,MAAM,EAAM+B,UAAWA,EAAWa,QAASA,GAC1E3C,EAAAA,cAAA,OAAKE,UAAW/B,EAAE,iCACd6B,EAAAA,cAAC0E,EAAA,EACG,CAAAC,cAAexG,EAAE,sBACjBV,MAAOoD,EACP+D,kBAAmBhH,EAAqBiD,GACxCgE,WHxRa,GGyRbC,YHzRa,GGyRAjE,EAAc2D,OAC3BO,aAAa,EACbC,YAAY,EACZC,UAAU,EACVzD,YAAamB,EACbuC,WAAaC,IACT,MAAMC,EAAmB,EAAE7E,MAAOgD,MAC9B,MAAM8B,EACFrF,EAAAA,cACI,OAAAE,UAAW/B,EAAE,iBACbI,QACIqE,IAEApB,SAAAA,EAAc2D,GAAc,EAAMvC,EAAM,GAG3CW,GAIT,OAAO4B,EAAatB,KAChB7D,EAAAA,cAAA,KAAG8D,KAAMqB,EAAatB,KAAM3D,UAAW/B,EAAE,SACpCkH,GACD,CAGP,EAICnB,EAAS,CAAC3D,MADEF,EAAgB8E,IAE5Bd,EAAO,CACT1C,QAAS3D,QAAQ2D,GACjB2C,WAAW,EACXlH,KAAM+H,EACNtD,IAAKC,GAET,MAAwC,mBAA7BqD,EAAaZ,YACbY,EAAaZ,YAAYL,EAAQkB,EAAkBf,GAEnDe,EAAiBlB,EAC3B,MAKjB,IACR,CArEAvD,EAAKP,YAAc,O,eCxQnB,MAEA,EAFaQ,GAAW,gBAAoB,MAAO0E,OAAOC,OAAO,CAAEC,MAAO,6BAA8B5G,MAAO,GAAIC,OAAQ,GAAI4G,KAAM,OAAQC,QAAS,aAAe9E,GACjK,gBAAoB,OAAQ,CAAE6E,KAAM,eAAgBE,SAAU,UAAWC,EAAG,qzBAAszBC,SAAU,aCCh5B,EAFiBjF,GAAW,gBAAoB,MAAO0E,OAAOC,OAAO,CAAEC,MAAO,6BAA8B5G,MAAO,GAAIC,OAAQ,GAAI4G,KAAM,OAAQC,QAAS,aAAe9E,GACrK,gBAAoB,OAAQ,CAAE6E,KAAM,eAAgBE,SAAU,UAAWC,EAAG,wfAAyfC,SAAU,aCKnlB,EANcjF,GAAW,gBAAoB,MAAO0E,OAAOC,OAAO,CAAEC,MAAO,6BAA8B5G,MAAO,GAAIC,OAAQ,GAAI4G,KAAM,OAAQC,QAAS,aAAe9E,GAClK,gBAAoB,IAAK,CAAEkF,SAAU,WACjC,gBAAoB,OAAQ,CAAEL,KAAM,eAAgBE,SAAU,UAAWC,EAAG,8kCAA+kCC,SAAU,aACzqC,gBAAoB,OAAQ,KACxB,gBAAoB,WAAY,CAAE3H,GAAI,KAClC,gBAAoB,OAAQ,CAAEuH,KAAM,eAAgBG,EAAG,qB,uDCNpD,SAASG,IAYtB,OAXAA,EAAWT,OAAOC,OAASD,OAAOC,OAAOS,OAAS,SAAUlD,GAC1D,IAAK,IAAImD,EAAI,EAAGA,EAAIC,UAAU1B,OAAQyB,IAAK,CACzC,IAAIE,EAASD,UAAUD,GACvB,IAAK,IAAIG,KAAOD,EACVb,OAAOe,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CtD,EAAOsD,GAAOD,EAAOC,GAG3B,CACA,OAAOtD,CACT,EACOiD,EAASS,MAAMC,KAAMP,UAC9B,CCbe,SAASQ,EAA8BP,EAAQQ,GAC5D,GAAc,MAAVR,EAAgB,MAAO,CAAC,EAC5B,IAEIC,EAAKH,EAFLnD,EAAS,CAAC,EACV8D,EAAatB,OAAOuB,KAAKV,GAE7B,IAAKF,EAAI,EAAGA,EAAIW,EAAWpC,OAAQyB,IACjCG,EAAMQ,EAAWX,GACbU,EAASG,QAAQV,IAAQ,IAC7BtD,EAAOsD,GAAOD,EAAOC,IAEvB,OAAOtD,CACT,CCXe,SAASiE,EAAgBC,EAAGC,GAKzC,OAJAF,EAAkBzB,OAAO4B,eAAiB5B,OAAO4B,eAAelB,OAAS,SAAyBgB,EAAGC,GAEnG,OADAD,EAAEG,UAAYF,EACPD,CACT,EACOD,EAAgBC,EAAGC,EAC5B,CCLe,SAASG,EAAeC,EAAUC,GAC/CD,EAAShB,UAAYf,OAAOiC,OAAOD,EAAWjB,WAC9CgB,EAAShB,UAAUmB,YAAcH,EACjCH,EAAeG,EAAUC,EAC3B,CCLA,SAASG,EAAiBC,EAAWC,GACnC,OAAOD,EAAUE,QAAQ,IAAIC,OAAO,UAAYF,EAAgB,YAAa,KAAM,MAAMC,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,C,sCCOA,IAAIE,E,SCEJ,EAF2B,gDDE3B,SAASC,IAAiB,CAC1B,SAASC,IAA0B,C,OACnCA,EAAuBC,kBAAoBF,EAE3C,EAAiB,WACf,SAASG,EAAKtH,EAAOuH,EAAUC,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWT,EAAf,CAIA,IAAIU,EAAM,IAAIC,MACZ,mLAKF,MADAD,EAAIlG,KAAO,sBACLkG,C,CACV,CAEE,SAASE,IACP,OAAOR,CACX,CAHEA,EAAKS,WAAaT,EAMlB,IAAIU,EAAiB,CACnBC,MAAOX,EACPY,OAAQZ,EACRa,KAAMb,EACNc,KAAMd,EACNe,OAAQf,EACRgB,OAAQhB,EACRiB,OAAQjB,EACRkB,OAAQlB,EAERmB,IAAKnB,EACLoB,QAASZ,EACTa,QAASrB,EACTsB,YAAatB,EACbuB,WAAYf,EACZvE,KAAM+D,EACNwB,SAAUhB,EACViB,MAAOjB,EACPkB,UAAWlB,EACXmB,MAAOnB,EACPoB,MAAOpB,EAEPqB,eAAgB/B,EAChBC,kBAAmBF,GAKrB,OAFAa,EAAeoB,UAAYpB,EAEpBA,C,EE9CUqB,KCjBnB,ICCA,EAAejK,EAAAA,cAAoB,MCDxBkK,EAAc,SAAqB/F,GAC5C,OAAOA,EAAKgG,SACd,ECOWC,GAAY,YACZC,GAAS,SACTC,GAAW,WACXC,GAAU,UACVC,GAAU,UA6FjBC,GAA0B,SAAUC,GAGtC,SAASD,EAAW7J,EAAO+J,GACzB,IAAIC,EAEJA,EAAQF,EAAiBnE,KAAKE,KAAM7F,EAAO+J,IAAYlE,KACvD,IAGIoE,EADAC,EAFcH,MAEuBI,WAAanK,EAAMoK,MAAQpK,EAAMkK,OAuB1E,OArBAF,EAAMK,aAAe,KAEjBrK,EAAMsK,GACJJ,GACFD,EAAgBR,GAChBO,EAAMK,aAAeX,IAErBO,EAAgBN,GAIhBM,EADEjK,EAAMuK,eAAiBvK,EAAMwK,aACfhB,GAEAC,GAIpBO,EAAMS,MAAQ,CACZC,OAAQT,GAEVD,EAAMW,aAAe,KACdX,CACT,CAhCAxD,EAAeqD,EAAYC,GAkC3BD,EAAWe,yBAA2B,SAAkCC,EAAMC,GAG5E,OAFaD,EAAKP,IAEJQ,EAAUJ,SAAWlB,GAC1B,CACLkB,OAAQjB,IAIL,IACT,EAkBA,IAAIsB,EAASlB,EAAWpE,UAkPxB,OAhPAsF,EAAOC,kBAAoB,WACzBnF,KAAKoF,cAAa,EAAMpF,KAAKwE,aAC/B,EAEAU,EAAOG,mBAAqB,SAA4BC,GACtD,IAAIC,EAAa,KAEjB,GAAID,IAActF,KAAK7F,MAAO,CAC5B,IAAI0K,EAAS7E,KAAK4E,MAAMC,OAEpB7E,KAAK7F,MAAMsK,GACTI,IAAWhB,IAAYgB,IAAWf,KACpCyB,EAAa1B,IAGXgB,IAAWhB,IAAYgB,IAAWf,KACpCyB,EAAaxB,GAGnB,CAEA/D,KAAKoF,cAAa,EAAOG,EAC3B,EAEAL,EAAOM,qBAAuB,WAC5BxF,KAAKyF,oBACP,EAEAP,EAAOQ,YAAc,WACnB,IACIC,EAAMpB,EAAOF,EADbuB,EAAU5F,KAAK7F,MAAMyL,QAWzB,OATAD,EAAOpB,EAAQF,EAASuB,EAET,MAAXA,GAAsC,iBAAZA,IAC5BD,EAAOC,EAAQD,KACfpB,EAAQqB,EAAQrB,MAEhBF,OAA4B7M,IAAnBoO,EAAQvB,OAAuBuB,EAAQvB,OAASE,GAGpD,CACLoB,KAAMA,EACNpB,MAAOA,EACPF,OAAQA,EAEZ,EAEAa,EAAOE,aAAe,SAAsBS,EAAUN,GAKpD,QAJiB,IAAbM,IACFA,GAAW,GAGM,OAAfN,EAIF,GAFAvF,KAAKyF,qBAEDF,IAAe1B,GAAU,CAC3B,GAAI7D,KAAK7F,MAAMuK,eAAiB1E,KAAK7F,MAAMwK,aAAc,CACvD,IAAIjH,EAAOsC,KAAK7F,MAAM2L,QAAU9F,KAAK7F,MAAM2L,QAAQxO,QAAU,cAAqB0I,MAI9EtC,GAAM+F,EAAY/F,EACxB,CAEAsC,KAAK+F,aAAaF,EACpB,MACE7F,KAAKgG,mBAEEhG,KAAK7F,MAAMuK,eAAiB1E,KAAK4E,MAAMC,SAAWjB,IAC3D5D,KAAKiG,SAAS,CACZpB,OAAQlB,IAGd,EAEAuB,EAAOa,aAAe,SAAsBF,GAC1C,IAAIK,EAASlG,KAETuE,EAAQvE,KAAK7F,MAAMoK,MACnB4B,EAAYnG,KAAKkE,QAAUlE,KAAKkE,QAAQI,WAAauB,EAErDO,EAAQpG,KAAK7F,MAAM2L,QAAU,CAACK,GAAa,CAAC,cAAqBnG,MAAOmG,GACxEE,EAAYD,EAAM,GAClBE,EAAiBF,EAAM,GAEvBG,EAAWvG,KAAK0F,cAChBc,EAAeL,EAAYI,EAASlC,OAASkC,EAAShC,MAGrDsB,GAAatB,GASlBvE,KAAK7F,MAAMsM,QAAQJ,EAAWC,GAC9BtG,KAAK0G,aAAa,CAChB7B,OAAQhB,KACP,WACDqC,EAAO/L,MAAMwM,WAAWN,EAAWC,GAEnCJ,EAAOU,gBAAgBJ,GAAc,WACnCN,EAAOQ,aAAa,CAClB7B,OAAQf,KACP,WACDoC,EAAO/L,MAAM0M,UAAUR,EAAWC,EACpC,GACF,GACF,KArBEtG,KAAK0G,aAAa,CAChB7B,OAAQf,KACP,WACDoC,EAAO/L,MAAM0M,UAAUR,EACzB,GAkBJ,EAEAnB,EAAOc,YAAc,WACnB,IAAIc,EAAS9G,KAET2F,EAAO3F,KAAK7F,MAAMwL,KAClBY,EAAWvG,KAAK0F,cAChBW,EAAYrG,KAAK7F,MAAM2L,aAAUtO,EAAY,cAAqBwI,MAEjE2F,GASL3F,KAAK7F,MAAM4M,OAAOV,GAClBrG,KAAK0G,aAAa,CAChB7B,OAAQd,KACP,WACD+C,EAAO3M,MAAM6M,UAAUX,GAEvBS,EAAOF,gBAAgBL,EAASZ,MAAM,WACpCmB,EAAOJ,aAAa,CAClB7B,OAAQjB,KACP,WACDkD,EAAO3M,MAAM8M,SAASZ,EACxB,GACF,GACF,KArBErG,KAAK0G,aAAa,CAChB7B,OAAQjB,KACP,WACDkD,EAAO3M,MAAM8M,SAASZ,EACxB,GAkBJ,EAEAnB,EAAOO,mBAAqB,WACA,OAAtBzF,KAAK8E,eACP9E,KAAK8E,aAAaoC,SAClBlH,KAAK8E,aAAe,KAExB,EAEAI,EAAOwB,aAAe,SAAsBS,EAAWC,GAIrDA,EAAWpH,KAAKqH,gBAAgBD,GAChCpH,KAAKiG,SAASkB,EAAWC,EAC3B,EAEAlC,EAAOmC,gBAAkB,SAAyBD,GAChD,IAAIE,EAAStH,KAETuH,GAAS,EAcb,OAZAvH,KAAK8E,aAAe,SAAU3I,GACxBoL,IACFA,GAAS,EACTD,EAAOxC,aAAe,KACtBsC,EAASjL,GAEb,EAEA6D,KAAK8E,aAAaoC,OAAS,WACzBK,GAAS,CACX,EAEOvH,KAAK8E,YACd,EAEAI,EAAO0B,gBAAkB,SAAyBhB,EAAS4B,GACzDxH,KAAKqH,gBAAgBG,GACrB,IAAI9J,EAAOsC,KAAK7F,MAAM2L,QAAU9F,KAAK7F,MAAM2L,QAAQxO,QAAU,cAAqB0I,MAC9EyH,EAA0C,MAAX7B,IAAoB5F,KAAK7F,MAAMuN,eAElE,GAAKhK,IAAQ+J,EAAb,CAKA,GAAIzH,KAAK7F,MAAMuN,eAAgB,CAC7B,IAAIC,EAAQ3H,KAAK7F,MAAM2L,QAAU,CAAC9F,KAAK8E,cAAgB,CAACpH,EAAMsC,KAAK8E,cAC/DuB,EAAYsB,EAAM,GAClBC,EAAoBD,EAAM,GAE9B3H,KAAK7F,MAAMuN,eAAerB,EAAWuB,EACvC,CAEe,MAAXhC,GACFiC,WAAW7H,KAAK8E,aAAcc,EAXhC,MAFEiC,WAAW7H,KAAK8E,aAAc,EAelC,EAEAI,EAAO4C,OAAS,WACd,IAAIjD,EAAS7E,KAAK4E,MAAMC,OAExB,GAAIA,IAAWlB,GACb,OAAO,KAGN,IAACoE,EAAc/H,KAAK7F,MACnB6N,EAAWD,EAAYC,SACjBD,EAAYtD,GACFsD,EAAYpD,aACXoD,EAAYrD,cACnBqD,EAAY1D,OACb0D,EAAYxD,MACbwD,EAAYpC,KACToC,EAAYnC,QACLmC,EAAYL,eACnBK,EAAYtB,QACTsB,EAAYpB,WACboB,EAAYlB,UACfkB,EAAYhB,OACTgB,EAAYf,UACbe,EAAYd,SACbc,EAAYjC,QACvB,IAAAmC,EAAahI,EAA8B8H,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,YAEjP,OAGExO,EAAAA,cAAoB2O,EAAuBC,SAAU,CACnDC,MAAO,MACc,mBAAbJ,EAA0BA,EAASnD,EAAQoD,GAAc1O,EAAAA,aAAmBA,EAAAA,SAAe8O,KAAKL,GAAWC,GAEzH,EAEOjE,CACT,CAlT8B,CAkT5BzK,EAAAA,WA+LF,SAAS+O,KAAQ,CA7LjBtE,GAAWuE,YAAcL,EACzBlE,GAAWwE,UA0LP,CAAC,EAILxE,GAAWyE,aAAe,CACxBhE,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACPoB,MAAM,EACNc,QAAS6B,GACT3B,WAAY2B,GACZzB,UAAWyB,GACXvB,OAAQuB,GACRtB,UAAWsB,GACXrB,SAAUqB,IAEZtE,GAAWL,UAAYA,GACvBK,GAAWJ,OAASA,GACpBI,GAAWH,SAAWA,GACtBG,GAAWF,QAAUA,GACrBE,GAAWD,QAAUA,GCpmBrB,IAMI2E,GAAc,SAAqBhL,EAAMiL,GAC3C,OAAOjL,GAAQiL,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,ORRyCrP,EQQbqP,QRRIhG,EQQVpF,GRPZqL,UACVjG,EAAQiG,UAAUC,OAAOvP,GACa,iBAAtBqJ,EAAQrJ,UACxBqJ,EAAQrJ,UAAYuH,EAAiB8B,EAAQrJ,UAAWA,GAExDqJ,EAAQmG,aAAa,QAASjI,EAAiB8B,EAAQrJ,WAAaqJ,EAAQrJ,UAAUyP,SAAW,GAAIzP,KAN1F,IAAqBqJ,EAASrJ,CQS3C,GACF,EAwEI0P,GAA6B,SAAUlF,GAGzC,SAASkF,IAGP,IAFA,IAAIhF,EAEKiF,EAAO3J,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EF,EAAKE,GAAQ9J,UAAU8J,GAgHzB,OA7GApF,EAAQF,EAAiBnE,KAAKC,MAAMkE,EAAkB,CAACjE,MAAMwJ,OAAOH,KAAUrJ,MACxEyJ,eAAiB,CACrBpF,OAAQ,CAAC,EACTE,MAAO,CAAC,EACRoB,KAAM,CAAC,GAGTxB,EAAMsC,QAAU,SAAUJ,EAAWC,GACnC,IAAIoD,EAAwBvF,EAAMwF,iBAAiBtD,EAAWC,GAC1D5I,EAAOgM,EAAsB,GAC7BvD,EAAYuD,EAAsB,GAEtCvF,EAAMyF,cAAclM,EAAM,QAE1ByG,EAAM0F,SAASnM,EAAMyI,EAAY,SAAW,QAAS,QAEjDhC,EAAMhK,MAAMsM,SACdtC,EAAMhK,MAAMsM,QAAQJ,EAAWC,EAEnC,EAEAnC,EAAMwC,WAAa,SAAUN,EAAWC,GACtC,IAAIwD,EAAyB3F,EAAMwF,iBAAiBtD,EAAWC,GAC3D5I,EAAOoM,EAAuB,GAG9BhT,EAFYgT,EAAuB,GAEhB,SAAW,QAElC3F,EAAM0F,SAASnM,EAAM5G,EAAM,UAEvBqN,EAAMhK,MAAMwM,YACdxC,EAAMhK,MAAMwM,WAAWN,EAAWC,EAEtC,EAEAnC,EAAM0C,UAAY,SAAUR,EAAWC,GACrC,IAAIyD,EAAyB5F,EAAMwF,iBAAiBtD,EAAWC,GAC3D5I,EAAOqM,EAAuB,GAG9BjT,EAFYiT,EAAuB,GAEhB,SAAW,QAElC5F,EAAMyF,cAAclM,EAAM5G,GAE1BqN,EAAM0F,SAASnM,EAAM5G,EAAM,QAEvBqN,EAAMhK,MAAM0M,WACd1C,EAAMhK,MAAM0M,UAAUR,EAAWC,EAErC,EAEAnC,EAAM4C,OAAS,SAAUV,GACvB,IACI3I,EADyByG,EAAMwF,iBAAiBtD,GAClB,GAElClC,EAAMyF,cAAclM,EAAM,UAE1ByG,EAAMyF,cAAclM,EAAM,SAE1ByG,EAAM0F,SAASnM,EAAM,OAAQ,QAEzByG,EAAMhK,MAAM4M,QACd5C,EAAMhK,MAAM4M,OAAOV,EAEvB,EAEAlC,EAAM6C,UAAY,SAAUX,GAC1B,IACI3I,EADyByG,EAAMwF,iBAAiBtD,GAClB,GAElClC,EAAM0F,SAASnM,EAAM,OAAQ,UAEzByG,EAAMhK,MAAM6M,WACd7C,EAAMhK,MAAM6M,UAAUX,EAE1B,EAEAlC,EAAM8C,SAAW,SAAUZ,GACzB,IACI3I,EADyByG,EAAMwF,iBAAiBtD,GAClB,GAElClC,EAAMyF,cAAclM,EAAM,QAE1ByG,EAAM0F,SAASnM,EAAM,OAAQ,QAEzByG,EAAMhK,MAAM8M,UACd9C,EAAMhK,MAAM8M,SAASZ,EAEzB,EAEAlC,EAAMwF,iBAAmB,SAAUtD,EAAWC,GAC5C,OAAOnC,EAAMhK,MAAM2L,QAAU,CAAC3B,EAAMhK,MAAM2L,QAAQxO,QAAS+O,GACzD,CAACA,EAAWC,EAChB,EAEAnC,EAAM6F,cAAgB,SAAUlT,GAC9B,IAAImT,EAAa9F,EAAMhK,MAAM8P,WACzBC,EAA2C,iBAAfD,EAE5BE,EAAgBD,GADPA,GAAsBD,EAAaA,EAAa,IAAM,IACZnT,EAAOmT,EAAWnT,GAGzE,MAAO,CACLqT,cAAeA,EACfC,gBAJoBF,EAAqBC,EAAgB,UAAYF,EAAWnT,EAAO,UAKvFuT,cAJkBH,EAAqBC,EAAgB,QAAUF,EAAWnT,EAAO,QAMvF,EAEOqN,CACT,CAvHAxD,EAAewI,EAAelF,GAyH9B,IAAIiB,EAASiE,EAAcvJ,UA4D3B,OA1DAsF,EAAO2E,SAAW,SAAkBnM,EAAM5G,EAAMkF,GAC9C,IAAIvC,EAAYuG,KAAKgK,cAAclT,GAAMkF,EAAQ,aAG7CqO,EADsBrK,KAAKgK,cAAc,SACLK,cAE3B,WAATvT,GAA+B,SAAVkF,GAAoBqO,IAC3C5Q,GAAa,IAAM4Q,GAKP,WAAVrO,GACE0B,GAAM+F,EAAY/F,GAGpBjE,IACFuG,KAAKyJ,eAAe3S,GAAMkF,GAASvC,EA/NzB,SAAkBiE,EAAMiL,GAC/BjL,GAAQiL,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OCLsCrP,EDKbqP,QCLIhG,EDKVpF,GCJTqL,UAAWjG,EAAQiG,UAAUuB,IAAI7Q,GCHhC,SAAkBqJ,EAASrJ,GACxC,OAAIqJ,EAAQiG,YAAoBtP,GAAaqJ,EAAQiG,UAAUzM,SAAS7C,IACkC,KAAlG,KAAOqJ,EAAQrJ,UAAUyP,SAAWpG,EAAQrJ,WAAa,KAAK4G,QAAQ,IAAM5G,EAAY,IAClG,CDAoE8Q,CAASzH,EAASrJ,KAA6C,iBAAtBqJ,EAAQrJ,UAAwBqJ,EAAQrJ,UAAYqJ,EAAQrJ,UAAY,IAAMA,EAAeqJ,EAAQmG,aAAa,SAAUnG,EAAQrJ,WAAaqJ,EAAQrJ,UAAUyP,SAAW,IAAM,IAAMzP,KADxR,IAAkBqJ,EAASrJ,CDMxC,GACF,CA6NM+Q,CAAU9M,EAAMjE,GAEpB,EAEAyL,EAAO0E,cAAgB,SAAuBlM,EAAM5G,GAClD,IAAI2T,EAAwBzK,KAAKyJ,eAAe3S,GAC5CqT,EAAgBM,EAAsBC,KACtCN,EAAkBK,EAAsBlD,OACxC8C,EAAgBI,EAAsBE,KAC1C3K,KAAKyJ,eAAe3S,GAAQ,CAAC,EAEzBqT,GACFzB,GAAYhL,EAAMyM,GAGhBC,GACF1B,GAAYhL,EAAM0M,GAGhBC,GACF3B,GAAYhL,EAAM2M,EAEtB,EAEAnF,EAAO4C,OAAS,WACX,IAACC,EAAc/H,KAAK7F,MACf4N,EAAYkC,WAChB,IAAA9P,EAAQ8F,EAA8B8H,EAAa,CAAC,eAExD,OAAoBxO,EAAAA,cAAoByK,GAAY1E,EAAS,CAAC,EAAGnF,EAAO,CACtEsM,QAASzG,KAAKyG,QACdI,UAAW7G,KAAK6G,UAChBF,WAAY3G,KAAK2G,WACjBI,OAAQ/G,KAAK+G,OACbC,UAAWhH,KAAKgH,UAChBC,SAAUjH,KAAKiH,WAEnB,EAEOkC,CACT,CAvLiC,CAuL/B5P,EAAAA,WG5QK,SAASqR,GAAgB5C,EAAU6C,GACxC,IAIIC,EAASjM,OAAOiC,OAAO,MAO3B,OANIkH,GAAU,EAAA+C,SAASC,IAAIhD,GAAU,SAAUc,GAC7C,OAAOA,CACT,IAAGD,SAAQ,SAAUoC,GAEnBH,EAAOG,EAAMtL,KATF,SAAgBsL,GAC3B,OAAOJ,IAAS,IAAAK,gBAAeD,GAASJ,EAAMI,GAASA,CACzD,CAOsBE,CAAOF,EAC7B,IACOH,CACT,CAiEA,SAASM,GAAQH,EAAOI,EAAMlR,GAC5B,OAAsB,MAAfA,EAAMkR,GAAgBlR,EAAMkR,GAAQJ,EAAM9Q,MAAMkR,EACzD,CAaO,SAASC,GAAoBC,EAAWC,EAAkBvE,GAC/D,IAAIwE,EAAmBb,GAAgBW,EAAUvD,UAC7CA,EA/DC,SAA4B0D,EAAMC,GAIvC,SAASC,EAAejM,GACtB,OAAOA,KAAOgM,EAAOA,EAAKhM,GAAO+L,EAAK/L,EACxC,CALA+L,EAAOA,GAAQ,CAAC,EAChBC,EAAOA,GAAQ,CAAC,EAQhB,IAcInM,EAdAqM,EAAkBhN,OAAOiC,OAAO,MAChCgL,EAAc,GAElB,IAAK,IAAIC,KAAWL,EACdK,KAAWJ,EACTG,EAAY/N,SACd8N,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYE,KAAKD,GAKrB,IAAIE,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWP,EAAM,CACxB,GAAIE,EAAgBK,GAClB,IAAK1M,EAAI,EAAGA,EAAIqM,EAAgBK,GAASnO,OAAQyB,IAAK,CACpD,IAAI2M,EAAiBN,EAAgBK,GAAS1M,GAC9CyM,EAAaJ,EAAgBK,GAAS1M,IAAMoM,EAAeO,EAC7D,CAGFF,EAAaC,GAAWN,EAAeM,EACzC,CAGA,IAAK1M,EAAI,EAAGA,EAAIsM,EAAY/N,OAAQyB,IAClCyM,EAAaH,EAAYtM,IAAMoM,EAAeE,EAAYtM,IAG5D,OAAOyM,CACT,CAmBiBG,CAAmBZ,EAAkBC,GAmCpD,OAlCA5M,OAAOuB,KAAK4H,GAAUa,SAAQ,SAAUlJ,GACtC,IAAIsL,EAAQjD,EAASrI,GACrB,IAAK,IAAAuL,gBAAeD,GAApB,CACA,IAAIoB,EAAW1M,KAAO6L,EAClBc,EAAW3M,KAAO8L,EAClBc,EAAYf,EAAiB7L,GAC7B6M,GAAY,IAAAtB,gBAAeqB,KAAeA,EAAUpS,MAAMsK,IAE1D6H,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,IAAAnB,gBAAeqB,KAI9CvE,EAASrI,IAAO,IAAA8M,cAAaxB,EAAO,CAClChE,SAAUA,EAAS1H,KAAK,KAAM0L,GAC9BxG,GAAI8H,EAAUpS,MAAMsK,GACpBkB,KAAMyF,GAAQH,EAAO,OAAQM,GAC7BhH,MAAO6G,GAAQH,EAAO,QAASM,MAXjCvD,EAASrI,IAAO,IAAA8M,cAAaxB,EAAO,CAClCxG,IAAI,IAVNuD,EAASrI,IAAO,IAAA8M,cAAaxB,EAAO,CAClChE,SAAUA,EAAS1H,KAAK,KAAM0L,GAC9BxG,IAAI,EACJkB,KAAMyF,GAAQH,EAAO,OAAQM,GAC7BhH,MAAO6G,GAAQH,EAAO,QAASM,IAZD,CA+BpC,IACOvD,CACT,CH2IAmB,GAAcV,aAAe,CAC3BwB,WAAY,IAEdd,GAAcX,UAiIT,CAAC,EIjZN,ICPIkE,GAAeC,GDOfC,GAAS/N,OAAO+N,QAAU,SAAUC,GACtC,OAAOhO,OAAOuB,KAAKyM,GAAK7B,KAAI,SAAU8B,GACpC,OAAOD,EAAIC,EACb,GACF,EAuBIC,GAA+B,SAAU9I,GAG3C,SAAS8I,EAAgB5S,EAAO+J,GAC9B,IAAIC,EAIA6I,GAFJ7I,EAAQF,EAAiBnE,KAAKE,KAAM7F,EAAO+J,IAAYlE,MAE9BgN,aAAazN,KE5C3B,SAAgC0N,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAE3B,OAAOD,CACT,CFuC+CE,CAAuBhJ,IAUlE,OAPAA,EAAMS,MAAQ,CACZwI,aAAc,CACZ9I,YAAY,GAEd0I,aAAcA,EACdK,aAAa,GAERlJ,CACT,CAlBAxD,EAAeoM,EAAiB9I,GAoBhC,IAAIiB,EAAS6H,EAAgBnN,UAqE7B,OAnEAsF,EAAOC,kBAAoB,WACzBnF,KAAKsN,SAAU,EACftN,KAAKiG,SAAS,CACZmH,aAAc,CACZ9I,YAAY,IAGlB,EAEAY,EAAOM,qBAAuB,WAC5BxF,KAAKsN,SAAU,CACjB,EAEAP,EAAgBhI,yBAA2B,SAAkCwG,EAAWvG,GACtF,IDiBmC7K,EAAO8M,ECjBtCuE,EAAmBxG,EAAKgD,SACxBgF,EAAehI,EAAKgI,aAExB,MAAO,CACLhF,SAFgBhD,EAAKqI,aDeYlT,ECbcoR,EDaPtE,ECbkB+F,EDcvDpC,GAAgBzQ,EAAM6N,UAAU,SAAUiD,GAC/C,OAAO,IAAAwB,cAAaxB,EAAO,CACzBhE,SAAUA,EAAS1H,KAAK,KAAM0L,GAC9BxG,IAAI,EACJJ,OAAQ+G,GAAQH,EAAO,SAAU9Q,GACjCoK,MAAO6G,GAAQH,EAAO,QAAS9Q,GAC/BwL,KAAMyF,GAAQH,EAAO,OAAQ9Q,IAEjC,KCtB8EmR,GAAoBC,EAAWC,EAAkBwB,GAC3HK,aAAa,EAEjB,EAGAnI,EAAO8H,aAAe,SAAsB/B,EAAOvN,GACjD,IAAI6P,EAAsB3C,GAAgB5K,KAAK7F,MAAM6N,UACjDiD,EAAMtL,OAAO4N,IAEbtC,EAAM9Q,MAAM8M,UACdgE,EAAM9Q,MAAM8M,SAASvJ,GAGnBsC,KAAKsN,SACPtN,KAAKiG,UAAS,SAAUrB,GACtB,IAAIoD,EAAW1I,EAAS,CAAC,EAAGsF,EAAMoD,UAGlC,cADOA,EAASiD,EAAMtL,KACf,CACLqI,SAAUA,EAEd,IAEJ,EAEA9C,EAAO4C,OAAS,WACd,IAAIC,EAAc/H,KAAK7F,MACnBqT,EAAYzF,EAAY0F,UACxBC,EAAe3F,EAAY2F,aAC3BvT,EAAQ8F,EAA8B8H,EAAa,CAAC,YAAa,iBAEjEqF,EAAepN,KAAK4E,MAAMwI,aAC1BpF,EAAW4E,GAAO5M,KAAK4E,MAAMoD,UAAUgD,IAAI0C,GAK/C,cAJOvT,EAAMkK,cACNlK,EAAMoK,aACNpK,EAAMwL,KAEK,OAAd6H,EACkBjU,EAAAA,cAAoB2O,EAAuBC,SAAU,CACvEC,MAAOgF,GACNpF,GAGezO,EAAAA,cAAoB2O,EAAuBC,SAAU,CACvEC,MAAOgF,GACO7T,EAAAA,cAAoBiU,EAAWrT,EAAO6N,GACxD,EAEO+E,CACT,CA3FmC,CA2FjCxT,EAAAA,WAEFwT,GAAgBvE,UAyDZ,CAAC,EACLuE,GAAgBtE,aA5KG,CACjBgF,UAAW,MACXC,aAAc,SAAsBzC,GAClC,OAAOA,CACT,IGDmC,SAAUhH,GAG7C,SAAS0J,IAGP,IAFA,IAAIxJ,EAEKiF,EAAO3J,UAAU1B,OAAQ6P,EAAQ,IAAItE,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAChFqE,EAAMrE,GAAQ9J,UAAU8J,GAqD1B,OAlDApF,EAAQF,EAAiBnE,KAAKC,MAAMkE,EAAkB,CAACjE,MAAMwJ,OAAOoE,KAAW5N,MAEzE6N,YAAc,WAClB,IAAK,IAAIC,EAAQrO,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMwE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1E,EAAK0E,GAAStO,UAAUsO,GAG1B,OAAO5J,EAAM6J,gBAAgB,UAAW,EAAG3E,EAC7C,EAEAlF,EAAM8J,eAAiB,WACrB,IAAK,IAAIC,EAAQzO,UAAU1B,OAAQsL,EAAO,IAAIC,MAAM4E,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9E,EAAK8E,GAAS1O,UAAU0O,GAG1B,OAAOhK,EAAM6J,gBAAgB,aAAc,EAAG3E,EAChD,EAEAlF,EAAMiK,cAAgB,WACpB,IAAK,IAAIC,EAAQ5O,UAAU1B,OAAQsL,EAAO,IAAIC,MAAM+E,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjF,EAAKiF,GAAS7O,UAAU6O,GAG1B,OAAOnK,EAAM6J,gBAAgB,YAAa,EAAG3E,EAC/C,EAEAlF,EAAMoK,WAAa,WACjB,IAAK,IAAIC,EAAQ/O,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMkF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpF,EAAKoF,GAAShP,UAAUgP,GAG1B,OAAOtK,EAAM6J,gBAAgB,SAAU,EAAG3E,EAC5C,EAEAlF,EAAMuK,cAAgB,WACpB,IAAK,IAAIC,EAAQlP,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMqF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvF,EAAKuF,GAASnP,UAAUmP,GAG1B,OAAOzK,EAAM6J,gBAAgB,YAAa,EAAG3E,EAC/C,EAEAlF,EAAM6I,aAAe,WACnB,IAAK,IAAI6B,EAAQpP,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMuF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFzF,EAAKyF,GAASrP,UAAUqP,GAG1B,OAAO3K,EAAM6J,gBAAgB,WAAY,EAAG3E,EAC9C,EAEOlF,CACT,CA5DAxD,EAAegN,EAAmB1J,GA8DlC,IAAIiB,EAASyI,EAAkB/N,UA4C/B,OA1CAsF,EAAO8I,gBAAkB,SAAyBxG,EAASuH,EAAKC,GAC9D,IAAIC,EAEAjH,EAAWhI,KAAK7F,MAAM6N,SACtBiD,EAAQ1R,EAAAA,SAAe2V,QAAQlH,GAAU+G,GAG7C,GAFI9D,EAAM9Q,MAAMqN,KAAWyH,EAAehE,EAAM9Q,OAAOqN,GAASzH,MAAMkP,EAAcD,GAEhFhP,KAAK7F,MAAMqN,GAAU,CACvB,IAAInB,EAAY4E,EAAM9Q,MAAM2L,aAAUtO,EAAY,cAAqBwI,MACvEA,KAAK7F,MAAMqN,GAASnB,EACtB,CACF,EAEAnB,EAAO4C,OAAS,WACd,IAAIC,EAAc/H,KAAK7F,MACnB6N,EAAWD,EAAYC,SACvBmH,EAASpH,EAAYtD,GACrBtK,EAAQ8F,EAA8B8H,EAAa,CAAC,WAAY,OAEhEqH,EAAwB7V,EAAAA,SAAe2V,QAAQlH,GAC/CqH,EAAQD,EAAsB,GAC9BE,EAASF,EAAsB,GAQnC,cANOjV,EAAMsM,eACNtM,EAAMwM,kBACNxM,EAAM0M,iBACN1M,EAAM4M,cACN5M,EAAM6M,iBACN7M,EAAM8M,SACO1N,EAAAA,cAAoBwT,GAAiB5S,EAAOgV,EAAS5V,EAAAA,aAAmB8V,EAAO,CACjG1P,IAAK,QACL8G,QAASzG,KAAK6N,YACdlH,WAAY3G,KAAKiO,eACjBpH,UAAW7G,KAAKoO,gBACb7U,EAAAA,aAAmB+V,EAAQ,CAC9B3P,IAAK,SACL8G,QAASzG,KAAKuO,WACd5H,WAAY3G,KAAK0O,cACjB7H,UAAW7G,KAAKgN,eAEpB,EAEOW,CACT,CA5GqC,CA4GnCpU,EAAAA,YAEgBiP,UAMd,CAAC,EF9GE,IAAI+G,GACJ,SADIA,GAEL,SAGFC,GAAW,SAAkB1M,EAASjH,EAAM4T,GAC9C,OAAO,WACL,IAAIC,EAEJ5M,EAAQ3I,MAAM0B,KAAU6T,EAAiB5M,EAAQ3I,OAAO0B,GAAMkE,MAAM2P,EAAgBjQ,WACpFgQ,GACF,CACF,EAEIE,KAAgBjD,GAAgB,CAAC,GAAiB6C,IAAa,SAAUvK,GAC3E,IAAI1N,EAAU0N,EAAK1N,QACfsY,EAAc5K,EAAK4K,YACvB,OAAOrW,EAAAA,aAAmBjC,EAAS,CACjCmN,IAAI,EACJwC,SAAUuI,GAASlY,EAAS,YAAY,WACtCsY,EAAY/L,GAAU,KACxB,KAEJ,EAAG6I,GAAc6C,IAAY,SAAUnJ,GACrC,IAAI9O,EAAU8O,EAAM9O,QAChBsY,EAAcxJ,EAAMwJ,YACpB5H,EAAW5B,EAAM4B,SACrB,MAAO,CAAC1Q,EAASiC,EAAAA,aAAmByO,EAAU,CAC5CvD,IAAI,EACJoC,UAAW2I,GAASxH,EAAU,aAAa,WACzC4H,EAAY/L,GACd,MAEJ,EAAG6I,IACCmD,KAAgBlD,GAAgB,CAAC,GAAiB4C,IAAa,SAAU5H,GAC3E,IAAIK,EAAWL,EAAMK,SACjB4H,EAAcjI,EAAMiI,YACxB,OAAOrW,EAAAA,aAAmByO,EAAU,CAClCvD,IAAI,EACJoC,UAAW2I,GAASxH,EAAU,aAAa,WACzC4H,EAAY9L,GAASvK,EAAAA,aAAmByO,EAAU,CAChDvD,IAAI,IAER,KAEJ,EAAGkI,GAAc4C,IAAY,SAAUO,GACrC,IAAIxY,EAAUwY,EAAMxY,QAChB0Q,EAAW8H,EAAM9H,SACjB4H,EAAcE,EAAMF,YACxB,MAAO,CAACrW,EAAAA,aAAmBjC,EAAS,CAClCmN,IAAI,EACJwC,SAAUuI,GAASlY,EAAS,YAAY,WACtCsY,EAAY9L,GAASvK,EAAAA,aAAmByO,EAAU,CAChDvD,IAAI,IAER,MACElL,EAAAA,aAAmByO,EAAU,CAC/BvD,IAAI,IAER,EAAGkI,IAsDCoD,GAAgC,SAAU9L,GAG5C,SAAS8L,IAGP,IAFA,IAAI5L,EAEKiF,EAAO3J,UAAU1B,OAAQsL,EAAO,IAAIC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EF,EAAKE,GAAQ9J,UAAU8J,GAqBzB,OAlBApF,EAAQF,EAAiBnE,KAAKC,MAAMkE,EAAkB,CAACjE,MAAMwJ,OAAOH,KAAUrJ,MACxE4E,MAAQ,CACZC,OAAQf,GACRxM,QAAS,MAEX6M,EAAM6L,UAAW,EAEjB7L,EAAMyL,YAAc,SAAU/K,EAAQvN,QACpB,IAAZA,IACFA,EAAU6M,EAAMS,MAAMtN,SAGxB6M,EAAM8B,SAAS,CACbpB,OAAQA,EACRvN,QAASA,GAEb,EAEO6M,CACT,CA5BAxD,EAAeoP,EAAkB9L,GA8BjC,IAAIiB,EAAS6K,EAAiBnQ,UAmE9B,OAjEAsF,EAAOC,kBAAoB,WACzBnF,KAAKgQ,UAAW,CAClB,EAEAD,EAAiBhL,yBAA2B,SAAkC5K,EAAOyK,GACnF,OAAsB,MAAlBzK,EAAM6N,SACD,CACL1Q,QAAS,MAITsN,EAAMC,SAAWhB,IAAY1J,EAAM8V,OAASV,GACvC,CACL1K,OAAQhB,KAIRe,EAAMtN,WAlLgB4Y,EAkLgBtL,EAAMtN,YAlLT6Y,EAkLkBhW,EAAM6N,WA/K7DzO,EAAAA,eAAqB2W,IAAgB3W,EAAAA,eAAqB4W,IAAmC,MAAnBD,EAAYvQ,KAAeuQ,EAAYvQ,MAAQwQ,EAAYxQ,KAqLhI,CACLrI,QAASiC,EAAAA,aAAmBY,EAAM6N,SAAU,CAC1CvD,IAAI,KAPC,CACLI,OAAQd,IApLhB,IAA8BmM,EAAaC,CA6LzC,EAEAjL,EAAO4C,OAAS,WACd,IAYI2F,EAZA1F,EAAc/H,KAAK7F,MACnB6N,EAAWD,EAAYC,SACvBiI,EAAOlI,EAAYkI,KACnBG,EAAcpQ,KAAK4E,MACnBC,EAASuL,EAAYvL,OACrBvN,EAAU8Y,EAAY9Y,QACtBiG,EAAO,CACTyK,SAAUA,EACV1Q,QAASA,EACTsY,YAAa5P,KAAK4P,YAClB/K,OAAQA,GAIV,OAAQA,GACN,KAAKhB,GACH4J,EAAYoC,GAAaI,GAAM1S,GAC/B,MAEF,KAAKwG,GACH0J,EAAYkC,GAAaM,GAAM1S,GAC/B,MAEF,KAAKuG,GACH2J,EAAYnW,EAGhB,OAAoBiC,EAAAA,cAAoB2O,EAAuBC,SAAU,CACvEC,MAAO,CACL9D,YAAatE,KAAKgQ,WAEnBvC,EACL,EAEOsC,CACT,CAnGoC,CAmGlCxW,EAAAA,WAEFwW,GAAiBvH,UAcb,CAAC,EACLuH,GAAiBtH,aAAe,CAC9BwH,KAAMV,K,09CGrPR,MAAM,IAAI,IAAA7X,GAAM,UAWH2Y,GAAwC,EAAEC,UAAS5T,UAAS6T,YAAW9W,gBAChF,MAAM+W,EAAUjX,EAAAA,OAA6B,MACvCkX,EAA6B,SAAdF,OAAuB/Y,EAAY+Y,EAExD,OACIhX,EAAAA,cAAC4P,GAAa,CACV1E,GAAI6L,EACJ1K,QAjBI,IAkBJlB,eAAe,EACfuF,WAAY,GAAE,kBAAmB,CAACsG,UAAWE,IAC7C3K,QAAS0K,GAETjX,EAAAA,cAAK,OAAA6B,IAAKoV,EAAS/W,UAAW,GAAE,OAAQ,CAAC8W,UAAWE,GAAehX,IAC9DiD,GAEO,EAeXgU,GAAgC,EACzCjX,YACAuO,WACAtO,QACAiX,cACAC,WACAC,qBAAoB,MAEpB,IAAIC,GAAkB,EACtBvX,EAAAA,SAAesP,QAAQb,GAAWiD,IAC9B,MAAM8F,EAAY9F,EACd8F,EAAUja,OAASuZ,IACE9Y,QAAQwZ,EAAU5W,MAAMmW,WAEzCQ,GAAkB,EAEzB,IAGLvX,EAAAA,WAAgB,KACZ,SAASyX,EAAU7U,GACG,WAAdA,EAAMwD,MACNiR,SAAAA,I,CAMR,OAHIE,GACAjY,OAAOO,iBAAiB,UAAW4X,GAEhC,KACHnY,OAAOQ,oBAAoB,UAAW2X,EAAU,CACnD,GACF,CAACJ,EAAUE,KAEd,EAAAG,EAAA,GAAkB,CAACnV,QAAS+U,GAAqBC,IAEjD,MAAMI,EAAe3X,EAAAA,OAA6B,MAC5C4X,EAAU5X,EAAAA,OAA6B,MAC7C,OACIA,EAAAA,cAACyK,GAAU,CACPS,GAAIqM,EACJlL,QAAS,CAACrB,MAAO,EAAGoB,KAhFhB,KAiFJhB,cAAY,EACZD,eAAa,EACboB,QAASoL,IAEPtM,IACE,MAAMwM,EAAkBN,GAA6B,YAAVlM,EAC3C,OACIrL,EAAAA,cAAK,OAAA6B,IAAK8V,EAAczX,UAAW,GAAE,KAAMA,GAAYC,MAAOA,GAC1DH,EAAAA,cAAC4P,GAAa,CACV1E,GAAI2M,EACJxL,QA3FZ,IA4FYlB,eAAe,EACfuF,WAAY,GAAE,mBACdnE,QAASqL,GAET5X,EAAAA,cAAA,OAAK6B,IAAK+V,EAAS1X,UAAW,GAAE,QAAS3B,QAAS6Y,KAErDpX,EAAAA,SAAeyR,IAAIhD,GAAWiD,IAC3B,MAAM8F,EAAY9F,EAClB,GAAI8F,EAAUja,OAASuZ,GAAY,CAC/B,MAAMgB,EAAe9Z,QAAQwZ,EAAU5W,MAAMmW,SAC7C,OAAO/W,EAAAA,aAAmBwX,EAAW,OAAF,wBAC5BA,EAAU5W,OAAK,CAClBmW,QAASe,GAAgBD,IAEhC,CACD,OAAOnG,CAAK,IAEd,GAGL,EC1GrB,IAAIqG,GAEFA,GADoB,oBAAXzY,OACMA,OAGU,oBAAToU,KAEDA,KAEA,EAAAsE,EAEjB,IAAIC,GAAc,KACdC,GAAe,KACnB,MACMC,GAAiBJ,GAAaK,aAC9BC,GAAeN,GAAazJ,WAC5BgK,GAAyBP,GAAaQ,sBAAwBR,GAAaS,yBAA2BT,GAAaU,2BACnHC,GAA0BX,GAAaY,uBAAyBZ,GAAaa,0BAA4Bb,GAAac,4BAC9F,MAA1BP,IAA6D,MAA3BI,IAGpCT,GAAcE,GACdD,GAAe,SAA4CrK,GACzD,OAAOwK,GAAaxK,EAVC,GAWvB,IAKAoK,GAAc,UAAsBa,EAAkBC,IACpDT,GAAuBQ,GACvBX,GAAeY,EACjB,EACAb,GAAe,SAAqDrK,GAClE,MAAMiL,EAAmBJ,IAAwB,WAC/CP,GAAeY,GACflL,GACF,IACMkL,EAAYV,IAAa,WAC7BC,GAAuBQ,GACvBjL,GACF,GA5BqB,IA6BrB,MAAO,CAACiL,EAAkBC,EAC5B,GA8JF,MAAMC,WAAkB,EAAA/E,UACtB,WAAAzM,IAAesI,GACbmJ,SAASnJ,GACTrJ,KAAK4E,MAAQ,CACXxM,OAAQ4H,KAAK7F,MAAMsY,eAAiB,EACpCC,aAAc1S,KAAK7F,MAAMsY,eAAiB,EAC1CE,YAAa3S,KAAK7F,MAAMyY,cAAgB,EACxCza,MAAO6H,KAAK7F,MAAMyY,cAAgB,GAEpC5S,KAAK6S,WAAa,KAClB7S,KAAK8S,qBAAuB,KAC5B9S,KAAK+S,YAAc,KACnB/S,KAAKgT,gBAAkB,KACvBhT,KAAKiT,WAAa,KAClBjT,KAAKkT,UAAY,KACflT,KAAKiT,WAAa,KAClB,MAAM,cACJE,EAAa,aACbC,EAAY,SACZC,GACErT,KAAK7F,MACT,GAAI6F,KAAK+S,YAAa,CACpB,IAAIO,EAAoBC,EAAqBC,EAAmBC,EAKhE,MAAM/Z,EAAQb,OAAO6a,iBAAiB1T,KAAK+S,cAAgB,CAAC,EACtDY,EAAcC,WAAwD,QAA5CN,EAAqB5Z,EAAMia,mBAAgD,IAAvBL,EAAgCA,EAAqB,KACnIO,EAAeD,WAA0D,QAA9CL,EAAsB7Z,EAAMma,oBAAkD,IAAxBN,EAAiCA,EAAsB,KACxIO,EAAaF,WAAsD,QAA1CJ,EAAoB9Z,EAAMoa,kBAA8C,IAAtBN,EAA+BA,EAAoB,KAC9HO,EAAgBH,WAA4D,QAAhDH,EAAuB/Z,EAAMqa,qBAAoD,IAAzBN,EAAkCA,EAAuB,KAC7IO,EAAOhU,KAAK+S,YAAYna,wBACxB8Z,EAAesB,EAAK5b,OAAS0b,EAAaC,EAC1CpB,EAAcqB,EAAK7b,MAAQwb,EAAcE,EACzCzb,EAAS4H,KAAK+S,YAAYkB,aAAeH,EAAaC,EACtD5b,EAAQ6H,KAAK+S,YAAYmB,YAAcP,EAAcE,GACtDV,GAAkBnT,KAAK4E,MAAMxM,SAAWA,GAAU4H,KAAK4E,MAAM8N,eAAiBA,KAAkBU,GAAiBpT,KAAK4E,MAAMzM,QAAUA,GAAS6H,KAAK4E,MAAM+N,cAAgBA,KAC7K3S,KAAKiG,SAAS,CACZ7N,SACAD,QACAua,eACAC,gBAEsB,mBAAbU,GACTA,EAAS,CACPjb,SACAsa,eACAC,cACAxa,UAIR,GAEF6H,KAAKmU,QAAUC,IACbpU,KAAK6S,WAAauB,CAAS,CAE/B,CACA,iBAAAjP,GACE,MAAM,MACJkP,GACErU,KAAK7F,MACL6F,KAAK6S,YAAc7S,KAAK6S,WAAWyB,YAActU,KAAK6S,WAAWyB,WAAWC,eAAiBvU,KAAK6S,WAAWyB,WAAWC,cAAcC,aAAexU,KAAK6S,WAAWyB,sBAAsBtU,KAAK6S,WAAWyB,WAAWC,cAAcC,YAAYC,cAIlPzU,KAAK+S,YAAc/S,KAAK6S,WAAWyB,WAIX,MAApBtU,KAAK+S,cACuB,oBAAnB2B,gBACT1U,KAAKgT,gBAAkB,IAAI0B,gBAAe,KAIxC1U,KAAKiT,WAAapL,WAAW7H,KAAKkT,UAAW,EAAE,IAEjDlT,KAAKgT,gBAAgB2B,QAAQ3U,KAAK+S,eAElC/S,KAAK8S,qBA7Of,SAAmCuB,GACjC,IAAIO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAkC,oBAAbC,UAA4BA,SAASD,YAChE,IAAKA,EAAa,CAChBF,EAAgB,SAAUnS,GACxB,MAAMuS,EAAWvS,EAAQwS,mBACvBC,EAASF,EAASG,kBAClBC,EAAWJ,EAASK,iBACpBC,EAAcJ,EAAOC,kBACvBC,EAASG,WAAaH,EAASI,YAC/BJ,EAAS/R,UAAY+R,EAASK,aAC9BH,EAAYjc,MAAMvB,MAAQod,EAAOrB,YAAc,EAAI,KACnDyB,EAAYjc,MAAMtB,OAASmd,EAAOtB,aAAe,EAAI,KACrDsB,EAAOK,WAAaL,EAAOM,YAC3BN,EAAO7R,UAAY6R,EAAOO,YAC5B,EACAd,EAAgB,SAAUlS,GACxB,OAAOA,EAAQoR,cAAgBpR,EAAQiT,eAAe5d,OAAS2K,EAAQmR,eAAiBnR,EAAQiT,eAAe3d,MACjH,EACA8c,EAAiB,SAAUc,GAEzB,GAAIA,EAAE3Z,OAAO5C,WAAmD,mBAA/Buc,EAAE3Z,OAAO5C,UAAU4G,SAA0B2V,EAAE3Z,OAAO5C,UAAU4G,QAAQ,oBAAsB,GAAK2V,EAAE3Z,OAAO5C,UAAU4G,QAAQ,kBAAoB,EACjL,OAEF,MAAMyC,EAAU9C,KAChBiV,EAAcjV,MACVA,KAAKiW,eACPzE,GAAYxR,KAAKiW,eAEnBjW,KAAKiW,cAAgBxE,IAAa,WAC5BuD,EAAclS,KAChBA,EAAQiT,eAAe5d,MAAQ2K,EAAQoR,YACvCpR,EAAQiT,eAAe3d,OAAS0K,EAAQmR,aACxCnR,EAAQoT,oBAAoBrN,SAAQ,SAA+B5M,GACjEA,EAAG6D,KAAKgD,EAASkT,EACnB,IAEJ,GACF,EAGA,IAAIG,GAAY,EACZC,EAAiB,GACrBtB,EAAsB,iBACtB,MAAMuB,EAAc,kBAAkBzN,MAAM,KAC5C,IAAI0N,EAAc,uEAAuE1N,MAAM,KAC3F2N,EAAM,GACV,CACE,MAAMC,EAAMpB,SAASqB,cAAc,eAInC,QAHgCjf,IAA5Bgf,EAAI9c,MAAMmb,gBACZsB,GAAY,IAEI,IAAdA,EACF,IAAK,IAAI3W,EAAI,EAAGA,EAAI6W,EAAYtY,OAAQyB,IACtC,QAAoDhI,IAAhDgf,EAAI9c,MAAM2c,EAAY7W,GAAK,iBAAgC,CAC7D+W,EAAMF,EAAY7W,GAClB4W,EAAiB,IAAMG,EAAIG,cAAgB,IAC3C5B,EAAsBwB,EAAY9W,GAClC2W,GAAY,EACZ,KACF,CAGN,CACAtB,EAAgB,aAChBD,EAAqB,IAAMwB,EAAiB,aAAevB,EAAgB,gDAC3EE,EAAiBqB,EAAiB,kBAAoBvB,EAAgB,IACxE,CA6EA,MAAO,CACL8B,kBA1DwB,SAAU7T,EAAS7G,GAC3C,GAAIkZ,EACFrS,EAAQqS,YAAY,WAAYlZ,OAC3B,CACL,IAAK6G,EAAQwS,mBAAoB,CAC/B,MAAMsB,EAAM9T,EAAQyR,cACdsC,EAAevF,GAAaoC,iBAAiB5Q,GAC/C+T,GAA0C,WAA1BA,EAAaC,WAC/BhU,EAAQpJ,MAAMod,SAAW,YA3BZ,SAAUF,GAC7B,IAAKA,EAAIG,eAAe,uBAAwB,CAE9C,MAAMC,GAAOpC,GAA0C,IAAM,uBAAyBG,GAAkC,IAA5G,6VACVkC,EAAOL,EAAIK,MAAQL,EAAIM,qBAAqB,QAAQ,GACpDxd,EAAQkd,EAAIH,cAAc,SAC5B/c,EAAMjC,GAAK,sBACXiC,EAAM5C,KAAO,WACA,MAATud,GACF3a,EAAMuP,aAAa,QAASoL,GAE1B3a,EAAMyd,WACRzd,EAAMyd,WAAWC,QAAUJ,EAE3Btd,EAAM2d,YAAYT,EAAIU,eAAeN,IAEvCC,EAAKI,YAAY3d,EACnB,CACF,CAWM6d,CAAaX,GACb9T,EAAQiT,eAAiB,CAAC,EAC1BjT,EAAQoT,oBAAsB,IAC7BpT,EAAQwS,mBAAqBsB,EAAIH,cAAc,QAAQhd,UAAY,kBACpE,MAAM+d,EAAgBZ,EAAIH,cAAc,OACxCe,EAAc/d,UAAY,iBAC1B+d,EAAcH,YAAYT,EAAIH,cAAc,QAC5C,MAAMgB,EAAkBb,EAAIH,cAAc,OAC1CgB,EAAgBhe,UAAY,mBAC5BqJ,EAAQwS,mBAAmB+B,YAAYG,GACvC1U,EAAQwS,mBAAmB+B,YAAYI,GACvC3U,EAAQuU,YAAYvU,EAAQwS,oBAC5BL,EAAcnS,GACdA,EAAQ1J,iBAAiB,SAAU8b,GAAgB,GAG/CJ,IACFhS,EAAQwS,mBAAmBoC,sBAAwB,SAA2B1B,GACxEA,EAAEnB,gBAAkBA,GACtBI,EAAcnS,EAElB,EACAA,EAAQwS,mBAAmBlc,iBAAiB0b,EAAqBhS,EAAQwS,mBAAmBoC,uBAEhG,CACA5U,EAAQoT,oBAAoBlK,KAAK/P,EACnC,CACF,EAsBE0b,qBArB2B,SAAU7U,EAAS7G,GAC9C,GAAIkZ,EACFrS,EAAQ8U,YAAY,WAAY3b,QAGhC,GADA6G,EAAQoT,oBAAoB2B,OAAO/U,EAAQoT,oBAAoB7V,QAAQpE,GAAK,IACvE6G,EAAQoT,oBAAoBnY,OAAQ,CACvC+E,EAAQzJ,oBAAoB,SAAU6b,GAAgB,GAClDpS,EAAQwS,mBAAmBoC,wBAC7B5U,EAAQwS,mBAAmBjc,oBAAoByb,EAAqBhS,EAAQwS,mBAAmBoC,uBAC/F5U,EAAQwS,mBAAmBoC,sBAAwB,MAErD,IACE5U,EAAQwS,oBAAsBxS,EAAQgV,YAAYhV,EAAQwS,mBAC5D,CAAE,MAAOU,GAET,CACF,CAEJ,EAKF,CAmFsC+B,CAA0B1D,GACtDrU,KAAK8S,qBAAqB6D,kBAAkB3W,KAAK+S,YAAa/S,KAAKkT,YAErElT,KAAKkT,aAGX,CACA,oBAAA1N,GACMxF,KAAK+S,cACH/S,KAAK8S,sBACP9S,KAAK8S,qBAAqB6E,qBAAqB3X,KAAK+S,YAAa/S,KAAKkT,WAEhD,OAApBlT,KAAKiT,YACPtB,aAAa3R,KAAKiT,YAEhBjT,KAAKgT,kBACPhT,KAAKgT,gBAAgB2B,QAAQ3U,KAAK+S,aAClC/S,KAAKgT,gBAAgBgF,cAG3B,CACA,MAAAlQ,GACE,MAAM,SACJE,EAAQ,cACRyK,EAAa,aACbG,EAAY,cACZO,GAAgB,EAAK,aACrBC,GAAe,EAAK,MACpBiB,EAAK,SACLhB,EAAQ,MACR3Z,EAAQ,CAAC,EAAC,QACVue,EAAU,SACPC,GACDlY,KAAK7F,OACH,OACJ/B,EAAM,aACNsa,EAAY,YACZC,EAAW,MACXxa,GACE6H,KAAK4E,MAKHuT,EAAa,CACjBC,SAAU,WAENC,EAAc,CAAC,EAIrB,IAAIC,GAAoB,EAiBxB,OAhBKnF,IACY,IAAX/a,IACFkgB,GAAoB,GAEtBH,EAAW/f,OAAS,EACpBigB,EAAYjgB,OAASA,EACrBigB,EAAY3F,aAAeA,GAExBU,IACW,IAAVjb,IACFmgB,GAAoB,GAEtBH,EAAWhgB,MAAQ,EACnBkgB,EAAYlgB,MAAQA,EACpBkgB,EAAY1F,YAAcA,IAErB,IAAA8D,eAAcwB,EAAS,CAC5B7c,IAAK4E,KAAKmU,QACVza,MAAO,IACFye,KACAze,MAEFwe,IACDI,GAAqBtQ,EAASqQ,GACpC,ECxWF,MAAME,GAAiC,CACnChR,QAAQ,EACRiR,iBAAahhB,EACbihB,yBAAyB,EACzBC,0BAAsBlhB,EACtBmhB,SAAU,QAGDC,GAAyBrf,EAAAA,cAClCgf,IAKS,MAAAM,WAAgCtf,EAAAA,cAA7C,c,oBAII,KAAK,uBACEgf,IAGP,KAAAI,SAAqDvQ,IACjDpI,KAAKiG,SAAa,iBAAAmC,GAAO,C,CAG7B,MAAAN,GACI,MAAM,SAACE,GAAYhI,KAAK7F,MAExB,OACIZ,EAAAA,cAACqf,GAAuBzQ,SAAS,CAAAC,MAAK,+BAAMpI,KAAK4E,OAAO,CAAA+T,SAAU3Y,KAAK2Y,YAClE3Q,E,g1DCnCjB,MAAMtQ,IAAI,IAAAA,GAAM,oBAEVohB,GAAqC,EAAE,GAAI,GAC3CC,GAA2C,CAC7C,CACIld,KAAM,kBACNC,SAAS,IAQJkd,GAAkD,EAC3DhiB,QACAsC,OACA+B,YACAuB,gBAEA,MAAM,YAAC4b,EAAW,wBAAEC,GAA2Blf,EAAAA,WAAiBqf,IAC1DK,OAA6BzhB,IAAhBghB,EAA4B,KAAOxhB,EAAMwhB,GAE5D,OACIjf,EAAAA,cAACyD,EAAA,EAAK,CACF1D,KAAMA,EACN+B,UAAWA,EACXuB,UAAWA,EACXO,OAAQ2b,GACR7b,iBAAkBvF,GAAE,MACpBkE,UAAWmd,GACXG,cAAY,GAEZ3f,EAAAA,cAAA,OAAKE,UAAW/B,GAAE,oBACbV,EACImiB,QACG,EAAEriB,OAAO,UAAWW,SACfghB,GACAhhB,IAAOjB,GAA6B,WAATM,IAEnCkU,KAAI,CAACrU,EAAMoY,IAEC,YADDpY,EAAKG,KAGDyC,EAAAA,cAAK,OAAAE,UAAW/B,GAAE,OAAQ,CAAC0hB,SAAS,IAAQzZ,IAAKoP,GAC5CpY,EAAKmD,OAKVP,EAAAA,cACI,OAAAE,UAAW/B,GAAE,OAAQ,CACjB6P,OAAQ5Q,IAASsiB,IAErBtZ,IAAKoP,GAEJpY,EAAKmD,UAM9B,G,8JChDhB,MAAMpC,IAAI,IAAAA,GAAM,iBAsBV2hB,GAA8C,EAChDviB,OACAE,QACA+D,cACAX,gBACAkf,mBAAkB,MAElB,MAAMle,GAAM,IAAAme,QAA+B,MACrCC,GAAa,IAAAD,QAAuB,OAGtCZ,SAAUc,EACVlS,OAAQmS,EAAqB,YAC7BlB,EAAW,qBACXE,IACA,IAAAiB,YAAWf,KACT,QAAC1d,IAAW,UAElB3B,EAAAA,WAAgB,KACZ,SAASqgB,IACDN,GAAmBI,GACnBD,EAA+B,CAAClS,QAAQ,G,CAMhD,OAFA1O,OAAOO,iBAAiB,OAAQwgB,GAEzB,KACH/gB,OAAOQ,oBAAoB,OAAQugB,EAAiB,CACvD,GACF,CAACN,EAAiBI,EAAuBD,IAE5C,MAAMI,GAAsB,IAAA3gB,cACvB8c,IAEOsD,GACApe,IACCwe,GACDtE,SAAS0E,YACTtB,IAAgBE,GAChB1C,EAAE+D,SAAW,MAEbN,SAAAA,EAAiC,CAC7BlS,QAAQ,IAEf,GAEL,CACI+R,EACApe,EACAwe,EACAlB,EACAE,EACAe,IAIFO,GAAsB,IAAA9gB,cAAY,KAChCogB,GAAmBI,GAAyBtE,SAAS0E,aACrDL,SAAAA,EAAiC,CAC7BlS,QAAQ,EACRmR,0BAAsBlhB,IAE7B,GACF,CAAC8hB,EAAiBI,EAAuBD,IAEtCQ,GAAsB,IAAA/gB,cACvBghB,GAAc,KACX,GAAIZ,GAAmBlE,SAAS0E,WAAY,CACxC,IAAIK,EAA6BT,EAIjC,GAHKA,GAAyBQ,IAAcxB,IACxCyB,GAA6B,GAG7B3B,IAAgB0B,GAChBR,IAA0BS,EAE1B,OAEJV,EAA+B,CAC3BjB,YAAa0B,EACb3S,OAAQ4S,GAEf,IAEL,CACIb,EACAI,EACAhB,EACAF,EACAiB,IAIFpf,GAAe,IAAAnB,cAAY,K,MACzBgC,GAAWka,SAAS0E,aACT,QAAX,EAAA1e,EAAI9D,eAAO,SAAE8iB,kBAAa5iB,IAEtB8hB,QACiB9hB,IAAhBghB,QAAsDhhB,IAAzBkhB,GAE9Be,EAA+B,CAC3BjB,iBAAahhB,EACbkhB,0BAAsBlhB,IAGjC,GACF,CACCghB,EACAtd,EACAwd,EACAY,EACAG,IAGEY,GAAqB,IAAAnhB,cACtBghB,GACG,CAACvjB,EAAMkH,EAAW1B,KAEVjB,GACAoe,GACAY,IAAcxB,GACd/hB,EAAKc,KAAOjB,GAEZijB,EAA+B,CAC3Bf,qBAAsBwB,EACtB3S,QAAQ,IAGhBxM,SAAAA,EAAcpE,EAAMkH,EAAW1B,EAAM,GAE7C,CACIjB,EACAwd,EACAY,EACAve,EACA0e,IAIR,OACIlgB,EAAAA,cAACA,EAAAA,SAAc,KACXA,EAAAA,cACI,OAAA6B,IAAKoe,EACLlf,aAAcuf,EACdxf,aAAc2f,GAEdzgB,EAAAA,cAAC0E,EAAA,EAAI,CACD7C,IAAKA,EACLpE,MAAOA,EACPmH,kBAA4B,SAATrH,EAAkBK,EAAqBH,QAASQ,EACnE4G,WAAY1H,EACZ2H,YAAatH,EACbmH,cAAexG,GAAE,kBACjB4G,aAAa,EACbC,YAAY,EACZC,UAAU,EACVC,WAAY,CAAC9H,EAAM2jB,EAAeJ,KAC9B,MAAMK,EAAiB3jB,EAAWD,GAAQ,CAACA,QAAQA,EAC7C4D,EAAgB3D,EAAWD,IAC1B2iB,EACD3iB,EAAK4D,cAEX,OACIhB,EAAAA,cAACW,EAAI,iBACGqgB,EACJ,CAAAhgB,cAAeA,EACfD,aAAc2f,EAAoBC,GAClC7f,aAAcA,EACdU,YAAasf,EAAmBH,GAChC9f,cAAeA,IACjB,KAKR,SAATtD,GAAmBwiB,GAChB/f,EAAAA,cAACyf,GAAe,CACZ1f,KAAM4B,GAAWwe,EACjBre,UAAWme,EACX5c,UAAW,CAAC,eACZ5F,MAAOA,IAGF,EAIZwjB,GAAsC,EAC/C1jB,OACAE,QACAyjB,gBACA1f,cACAue,mBAAkB,MAElB,GAAqB,IAAjBtiB,EAAM+G,OACN,OAAO,KAEX,IAAIL,EAEJ,GAAa,SAAT5G,EAAiB,CACjB,MAAM4jB,E9B1MR,SAA4B1jB,GAC9B,MAAM2jB,EAfJ,SAAyB3jB,GAC3B,MAAM2jB,EAA0B,GAChC,IAAK,MAAMhkB,KAAQK,GACXL,EAAKikB,QAEgB,YAAdjkB,EAAKG,MACR6jB,EAAY5c,OAAS,GAAkD,YAA7C4c,EAAYA,EAAY5c,OAAS,GAAGjH,OAFlE6jB,EAAY3O,KAAKrV,GAOzB,OAAOgkB,CACX,CAGwBE,CAAe7jB,GAC7B8jB,EAAuB9jB,EAAMmiB,QAAQxiB,GAASA,EAAKokB,kBAEzD,OACIhkB,EAAe4jB,GACf5jB,EAAe+jB,IACdH,EAAY5c,SAAW/G,EAAM+G,OAAS,EAAI,EAAAlH,EAEnD,C8BiM0BmkB,CAAkBhkB,GAC9B0H,E9BhMR,SAA4B+b,GAC9B,MAAO,CACHhjB,GAAIjB,EACJsD,MAAO2gB,EACPjf,KAAMyf,EAAA,EACNxf,SAAU,GAElB,C8ByL6Byf,CAAkBT,GACvC/c,EACInE,EAAAA,cAAA,OAAKE,UAAW/B,GAAE,CAACyjB,WAAW,IAAQzhB,MAAO,CAACghB,cACxB,IAAjB1jB,EAAM+G,QACHxE,EAAAA,cAACgZ,GAAS,MACL,EAAEpa,QAAOC,aACN,MAAM,UAACgjB,EAAS,cAAEhhB,G,S9B5L1CpD,EACAoB,EACAsG,G,UAKA,MAAMoc,EAAuB9jB,EAAMmiB,QAAQxiB,GAASA,EAAKokB,kBACnDM,EAAerkB,EAAMmiB,QAAQxiB,IAAUA,EAAKokB,kBAC5CK,EAAY,IAAIC,KAAiBP,GAEjCQ,EAAiBvkB,EAAeqkB,GACtC,GAAIE,GAAkBljB,EAClB,MAAO,CAACgjB,YAAWhhB,cAAe,IAGtC,MAAMmhB,EAAqB7kB,EAAcgI,GAEzC0c,EAAUvD,OAAOwD,EAAatd,OAAQ,EAAGW,GACzC,MAAMtE,EAA4B,GAElC,IAAIohB,EAAaF,EAAiBC,EAC9BnkB,EAAQgkB,EAAUrd,OACtB,KAAOyd,EAAapjB,GACF,IAAVhB,GADoB,CAIxBA,IAEA,MAAMT,EAAOykB,EAAUhkB,GACnBT,EAAKikB,QAAUjkB,EAAKc,KAAOjB,GAAoBG,EAAKokB,kBAGtC,YAAdpkB,EAAKG,MAOT0kB,GAAc9kB,EAAcC,GAC5ByD,EAAcqhB,WAAWL,EAAUvD,OAAOzgB,EAAO,KAPzCA,EAAQ,EAAIgkB,EAAUrd,QAAyC,aAAX,QAApB,EAAAqd,EAAUhkB,EAAQ,UAAE,eAAEN,QACtD0kB,GAAc9kB,EAAcC,GAC5BykB,EAAUvD,OAAOzgB,EAAO,IAMnC,CAQD,MAN+B,aAAX,QAAhB,EAAAgkB,EAAUhkB,UAAM,eAAEN,OACP,IAAVM,GAA8C,aAAX,QAApB,EAAAgkB,EAAUhkB,EAAQ,UAAE,eAAEN,OAEtCskB,EAAUvD,OAAOzgB,EAAO,GAGrB,CAACgkB,YAAWhhB,gBACvB,C8ByI+DshB,CAC/B1kB,EACAoB,EACAsG,GAEJ,OACInF,EAAAA,cAAAA,MAAAA,CAAKG,MAAO,CAACvB,QAAOC,WAChBmB,EAAAA,cAAC8f,GACG,CAAAviB,KAAK,OACLE,MAAOokB,EACPrgB,YAAaA,EACbX,cAAeA,EACfkf,gBAAiBA,IAEnB,IAOjC,MACG5b,EACInE,EAAAA,cAAK,OAAAE,UAAW/B,GAAE,CAACikB,WAAW,KAC1BpiB,EAAAA,cAAC8f,GAAiB,CAAAviB,KAAK,YAAYE,MAAOA,EAAO+D,YAAaA,KAI1E,OAAOxB,EAAAA,cAACsf,GAAyB,KAAAnb,EAA+B,ECpRpE,QAAe,IAAAke,GAAe,I,8MAAKC,G,iOADjB,iBCAX,MAAMC,GAAe,a,uPCK5B,MAAMpkB,IAAI,IAAAA,GAAM,uBAQHqkB,GAAqD5hB,IAC9D,MAAM,KAACxD,EAAI,SAAEqlB,EAAQ,SAAEC,GAAY9hB,EAC7B+hB,GAAmB,IAAAhjB,cACpB8c,IACGA,EAAEmG,kBACFnG,EAAEoG,iBACFH,GAAU,GAEd,CAACA,IASL,OACI1iB,EAAAA,cAAAA,MAAAA,CAAKE,UAAW/B,KAAKI,QAPJke,IACbgG,IACAhG,EAAEmG,kBACFnG,EAAEoG,iBACL,GAIIzlB,EAAK6E,KACFjC,EAAAA,cAAC+D,EAAA,EAAI,CAAC7D,UAAW/B,GAAE,QAAS6F,KAAM5G,EAAK6E,KAAMgC,KAAM7G,EAAK8E,WACxD,KACJlC,EAAAA,cAAM,QAAAE,UAAW/B,GAAE,SAAUf,EAAKmD,OACjCkiB,GACGziB,EAAAA,cAAC8iB,EAAA,EAAM,CACHvkB,QAASokB,EACTI,KAAM3lB,EAAK4lB,OAAS,iBAAmB,eAEvChjB,EAAAA,cAAC8iB,EAAA,EAAO/e,KAAM,KAAA3G,EAAK4lB,OAAShjB,EAAAA,cAAC,EAAG,MAAMA,EAAAA,cAAC,EAAO,QAGpD,G,gVCjCd,MAAM7B,IAAI,IAAAA,GAAM,mBAQH8kB,GAA+CriB,IACxD,MAAM,cAACsiB,EAAa,kBAAEC,EAAiB,UAAEjjB,GAAaU,GAChD,UAACwiB,EAAS,mBAAEC,IAAsB,UAClCC,GAAe,IAAAtD,QAAOoD,GAC5BE,EAAavlB,QAAUqlB,EAEvB,MAAOG,EAAYC,IAAiB,IAAAzkB,WAAS,GACvC0kB,GAAiB,IAAA9jB,cAAY,KAC/B6jB,GAAerR,IAAUA,GAAK,GAC/B,IAEGuR,EC7ByB,CAACjmB,IAChC,MAAMkmB,GAAoB,IAAAxkB,UAAQ,KAC9B,MAAMykB,EAAgBnmB,EAAMmiB,QACvBxiB,GAAuB,YAAdA,EAAKG,MAAsBH,EAAKc,KAAOqkB,KAmBrD,OAjBAqB,EAAcC,MAAK,CAACC,EAAG3lB,IACJ,WAAX2lB,EAAEvmB,KACK,EAEI,WAAXY,EAAEZ,MACM,EAEL,IAEUqmB,EAAclmB,QAAO,CAACqmB,EAAK3mB,KAC5C,MAAM4mB,EAAW5mB,EAAK4mB,UAAYC,GAAK,oCAKvC,OAJKF,EAAIC,KACLD,EAAIC,GAAY,IAEpBD,EAAIC,GAAUvR,KAAKrV,GACZ2mB,CAAG,GACX,CAAC,EACe,GACpB,CAACtmB,IAEJ,OAAOkmB,CAAiB,EDIHO,CAAoBd,IAEzC,IAAAxjB,YAAU,KACNujB,SAAAA,EAAoBI,EAAW,GAChC,CAACA,EAAYJ,IAEhB,MAAM3hB,GAAc,IAAA7B,cAAavC,I,MAEb,QAAhB,EAAAA,EAAKoE,mBAAW,gBAAGpE,GAAM,EAAM,GAChC,IAEG+mB,GAAuB,IAAAxkB,cACxBvC,IACG,IAAKimB,EACD,OAEJ,MAAMe,EAA4B,+BAAAhnB,GAAM,CAAA4lB,QAAS5lB,EAAK4lB,SAEhDqB,EAAcf,EAAavlB,QAAQ6hB,QACpC0E,GAAaA,EAASpmB,KAAOqkB,KAElCc,EACIgB,EAAY5S,KAAK6S,GACTA,EAASpmB,KAAOkmB,EAAYlmB,GACrBomB,EAEJF,IAEd,GAEL,CAACf,IAGCkB,GAAa,IAAA5kB,cACf,CAACvC,EAA8BonB,EAAoBC,IAC/CzkB,EAAAA,cAACwiB,GACG,CAAAplB,KAAMA,EACNqlB,SAAUc,EACVb,SAAU,IAAMyB,EAAqB/mB,MAG7C,CAACmmB,EAAYY,IAGXO,GAAwB,IAAA/kB,cAAY,KACtC,IAAK0jB,EACD,OAEJ,MAAMgB,EAAcf,EAAavlB,QAAQ6hB,QAAQxiB,GAASA,EAAKc,KAAOqkB,KACtEc,EACIgB,EAAY5S,KAAKrU,GACV,+BAAAA,GAAI,CACP4lB,QAAQ,MAEf,GACF,CAACK,IACJ,OACIrjB,EAAAA,cAAC2kB,EAAA,EAAI,CAACzkB,UAAW/B,GAAE,KAAM+B,GAAY0kB,IAAI,IAAI5N,UAAU,UACnDhX,EAAAA,cAAC2kB,EAAA,EAAI,CAACC,IAAI,IAAIC,WAAW,SAASC,eAAe,iBAC7C9kB,EAAAA,cAAC+kB,EAAA,EAAI,CAACC,QAAQ,eACIf,GAAbV,EAAkB,0BAAkC,yBAEzDvjB,EAAAA,cAAC8iB,EAAA,EAAM,CAACmC,SAAU1B,EAAYR,KAAK,SAASxkB,QAASklB,GAChDP,GAAgCljB,EAAAA,cAAC+D,EAAA,EAAI,CAACC,KAAM,MAGrDhE,EAAAA,cAAC2kB,EAAA,EAAI,CAACzkB,UAAW/B,GAAE,WAAYymB,IAAI,IAAI5N,UAAU,UAC5C1R,OAAOuB,KAAK6c,GAAcjS,KAAKuS,GAExBhkB,EAAAA,cAAC2kB,EAAA,EAAI,CAACve,IAAK4d,EAAUhN,UAAU,SAAS4N,IAAI,KACxC5kB,EAAAA,cAAC+kB,EAAA,EAAK,CAAA7kB,UAAW/B,GAAE,YAAa6mB,QAAQ,SAASE,MAAM,aAClDlB,GAELhkB,EAAAA,cAAC0E,EAAA,EACG,CAAAK,aAAa,EACbC,YAAY,EACZvH,MAAOimB,EAAaM,GACpBxiB,YAAaA,EACb0D,WAAYqf,QAM/BhB,GACGvjB,EAAAA,cAAC8iB,EAAA,EAAM,CAACvkB,QAASmmB,GAAwBT,GAAK,6BAE/C,E,IEpHf,IAAe,IAAA5B,GAAe,CAAC8C,G,sEAAI7C,G,0EADjB,gB,o2BCIlB,MAAM,IAAI,IAAAnkB,GAAM,QAEHinB,GAA4B,EACrCC,OACApjB,OACAqjB,UACAC,gBACArjB,WAAW,GACXsjB,WAAW,GACX1hB,OACA2hB,UACAlnB,cAEA,MAAM,QAACoD,IAAW,UACZ+jB,EAAgC,mBAAZD,EAE1B,IAAIE,EAEAL,EACAK,EACI3lB,EAAAA,cAAC8iB,EAAA,EAAO/e,KAAI,CAAC7D,UAAWqlB,GACpBvlB,EAAAA,cAAA,OAAK4lB,IAAI,YAAYC,IAAKP,EAAS1mB,MAAOsD,EAAUrD,OAAQqD,KAG7DD,IACP0jB,EAAa3lB,EAAAA,cAAC+D,EAAA,EAAK,CAAAC,KAAM/B,EAAMgC,KAAM/B,EAAUhC,UAAWqlB,KAG9D,MAAMO,EACF9lB,EAAAA,cAAC8iB,EAAA,EACG,CAAAC,KAAK,OACL9e,KAAK,IACL/D,UAAW,GAAE,YACbgU,UAAWwR,EAAa,YAASznB,EACjCM,QAASA,EACTuE,OAAO,QACPgB,KAAMA,GAEL6hB,GAIT,IAAII,EAYJ,OATIA,EADgB,mBAATV,EACAA,IAGHrlB,EAAAA,cAAK,OAAAE,UAAW,GAAE,QAASC,MAAO,CAAC6lB,SAAUR,IACxCH,GAMTrlB,EAAAA,cAAA,OAAKE,UAAW,MACZF,EAAAA,cAAK,OAAAE,UAAW,GAAE,mBACbwlB,EAAaD,EAAQK,EAAQ9nB,QAAQ2D,IAAYmkB,IAEpDnkB,IACG+jB,EACG1lB,EAAAA,cAAK,OAAAzB,QAASA,GAAUknB,EAAQM,EAAM/nB,QAAQ2D,KAE9C3B,EAAAA,cAAA,KACI8D,KAAMA,QAAAA,EAAQ,IACdhB,OAAO,QACP5C,UAAW,GAAE,aACb3B,QAASA,GAERwnB,IAGX,ECnERE,GAA+C,GAExCC,GAAS,KAClB,MAAM,KAACH,EAAI,YAAEvkB,EAAW,aAAE2kB,EAAY,iBAAEC,EAAgB,eAAEC,IACtD,WACG9nB,QAAS+nB,GAAmBP,EAC7BQ,GAAc,IAAA5mB,cACfiD,IACGujB,SAAAA,IACAG,SAAAA,EAAkB1jB,EAAM,GAE5B,CAACujB,EAAcG,IAGnB,OACItmB,EAAAA,cAAA,OAAKE,WAAW/B,EAAAA,EAAAA,GAAE,SAAU,CAAC,kBAAqBioB,KAC9CpmB,EAAAA,cAAColB,GAAS,iBAAAW,EAAI,CAAExnB,QAASgoB,KAEzBvmB,EAAAA,cAACihB,GAAY,CACT1jB,KAAK,YACLE,MAAO4oB,GAAkBJ,GACzBzkB,YAAaA,IAGjBxB,EAAAA,cAAC+D,EAAA,EAAI,CACDC,KAAM,EAAAwiB,EACNtmB,WAAW/B,EAAAA,EAAAA,GAAE,kBACbS,MAAO,IACPC,OAAQ,EAAA4nB,IAEV,EC5Cd,IAAI,GACJ,SAAS,KAAiS,OAApR,GAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAU,GAAU,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,IAAI,EAAS,UAAU,GAAI,IAAK,IAAI,KAAO,EAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,KAAQ,EAAO,GAAO,EAAO,GAAS,CAAG,OAAO,CAAO,EAAW,GAAS,MAAM,KAAM,UAAW,CAEjV,IAWA,GAX2B,SAA8B,GACvD,OAAoB,gBAAoB,MAAO,GAAS,CACtD,MAAO,EACP,OAAQ,EACR,QAAS,UACT,KAAM,eACN,MAAO,8BACN,GAAQ,KAAU,GAAqB,gBAAoB,OAAQ,CACpE,EAAG,wFAEP,ECDA,MAAMC,GCVU,SAA8BC,EAAwB1S,GAClE,MAAM2S,EAAQhmB,GAAaZ,EAAAA,cAACiU,EAAS,iBAAKrT,IAE1C,OADAgmB,EAAKxmB,YDQuB,UCPrBwmB,CACX,CDMgBC,CAAgB,EAAW9iB,EAAA,GAE9B+iB,GAAiB,KAC1B,MAAM,gBAACC,EAAe,QAAEplB,EAAO,YAAEqlB,EAAW,cAAEC,IAAiB,UAEzDC,GAAwB,IAAAvnB,cAAY,KACtConB,SAAAA,GAAmBplB,EAAQ,GAC5B,CAACA,EAASolB,IAEPI,EAAcxlB,EACdqlB,GAAe/C,GAAK,iBACpBgD,GAAiBhD,GAAK,mBAC5B,OACIjkB,EAAAA,cAAC8iB,EAAA,EACG,CAAA5iB,WAAW/B,EAAAA,EAAAA,GAAE,kBAAmB,CAACwD,YACjCohB,KAAK,OACLxkB,QAAS2oB,EACT3mB,MAAO4mB,GAEPnnB,EAAAA,cAAC0mB,GAAO,CACJ1iB,KAAMojB,GACNlnB,WAAW/B,EAAAA,EAAAA,GAAE,iBACbS,MAAM,KACNC,OAAO,OAEN,EE9BJwoB,GAAS,KAClB,MAAM,WAACC,EAAU,aAAEnB,EAAY,KAAEliB,IAAQ,UAEzC,OAAOqjB,EACHtnB,EAAAA,cAACmX,GAAM,CACHjX,WAAW/B,EAAAA,EAAAA,GAAE,UACbiZ,YAAa+O,EACb9O,SAAU8O,EACVhmB,MAAO,CAACxB,KAAMsF,IAEbqjB,EAAW7V,KAAKrU,GACb4C,EAAAA,cAAC8W,GAAU,eAAC1Q,IAAKhJ,EAAKc,IAAQd,OAGtC,IAAI,ECRCmqB,GAAavnB,EAAAA,YAAiC,CAACwnB,EAAQ3lB,KAChE,MAAM,KACFoC,EAAI,YACJzC,EAAW,iBACX4kB,EAAgB,gBAChBrG,EAAe,cACfmB,EAAa,aACbuG,EAAY,QACZ9lB,EAAO,iBACP+lB,EAAgB,0BAChBC,IACA,UACEC,ECrByB,MAC/B,MAAM,UAACxE,EAAS,oBAAEyE,IAAuB,UACzC,OAAO,IAAA1oB,UAAQ,KACX,IAAK0oB,EACD,OAAOzE,EAEX,IAAI0E,EAAmB,EACvB,OAAO1E,EAAUxD,QAAO,CAACxiB,EAAgBS,EAAeJ,MAChDL,EAAK4lB,QAKLnlB,EAAQ,GACM,YAAdT,EAAKG,OAC6B,YAAjCE,EAAMqqB,GAAkBvqB,MAAsBE,EAAMqqB,GAAkB9E,UAI3E8E,EAAmBjqB,EACZ,KACT,GACH,CAACgqB,EAAqBzE,GAAW,EDDX2E,GAEnBC,GAAW,IAAAhI,QAAuB,MAMxC,OAJAhgB,EAAAA,WAAgB,MACZ,EAAAioB,EAAA,GAAuBpmB,EAAKmmB,EAASjqB,QAAQ,GAC9C,CAAC8D,IAGA7B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKE,WAAW/B,EAAAA,EAAAA,GAAE,SAAUgC,MAAO,CAACvB,MAAOqF,IACvCjE,EAAAA,cAAK,OAAAE,WAAW/B,EAAAA,EAAAA,GAAE,sBAAuB0D,IAAKmmB,IAE9ChoB,EAAAA,cAAA,OAAKE,WAAW/B,EAAAA,EAAAA,GAAE,gBAAiB,CAAC,kBAAqBioB,KACpDsB,GACG1nB,EAAAA,cAAK,OAAAE,WAAW/B,EAAAA,EAAAA,GAAE,0BAA2BwpB,IACxCD,GAGT1nB,EAAAA,cAACkmB,GAAS,OACT0B,aAAA,EAAAA,EAAkBpjB,QACfxE,EAAAA,cAACihB,GAAY,CACT1jB,KAAK,OACLE,MAAOmqB,EACP1G,cAAeA,QAAAA,EAAiB+C,GAAK,cACrCziB,YAAaA,EACbue,gBAAiBA,IAGrB/f,EAAAA,cAAK,OAAAE,WAAW/B,EAAAA,EAAAA,GAAE,gBAEtB6B,EAAAA,cAAA,OAAKE,WAAW/B,EAAAA,EAAAA,GAAE,WACbspB,aAAA,EAAAA,EAAe,CACZxjB,OACAtC,QAAS3D,QAAQ2D,GACjBqmB,cAGRhoB,EAAAA,cAAC8mB,GAAiB,QAG1B9mB,EAAAA,cAACqnB,GAAM,MACR,IEZX,IAAYa,IAAZ,SAAYA,GACR,sBACH,CAFD,CAAYA,KAAAA,GAEX,KCnDD,MAAMC,GAA+B,GCExBC,GAAkBpoB,EAAAA,YAAwC,CAACY,EAAOiB,KAC3E,MAAM,KAACoC,EAAI,QAAEtC,IAAW,UAElB0mB,EDHqC,CAC3CznB,IAEA,MAAM,KAACqD,EAAI,aAAEkiB,EAAY,UAAE/C,EAAS,WAAEkE,EAAU,mBAAEjE,GAAsBziB,GACjE0nB,EAAmBC,IAAwB,IAAAxpB,YAC5CypB,EAAsBxoB,EAAAA,SAAc,KdLnC,CACH9B,GAAIqkB,GACJhiB,MAAO0jB,GAAK,6BACZjiB,YAAaiiB,GAAK,6BAClBhiB,KAAMyf,EAAA,KcGP,IAEGmG,EACF7pB,QAAQqlB,MAAyBD,IAAaA,aAAA,EAAAA,EAAW5e,QAAS,IAEtE,IAAA5E,YAAU,MAEF0nB,aAAA,EAAAA,EAAYmB,MAAMC,GAAMA,EAAE3R,YAC1BwR,OAAqBtqB,EACxB,GACF,CAACqpB,IAEJ,MAAMqB,GAAoB,IAAAhpB,cAAY,KAClC4oB,OAAqBtqB,GACrBkoB,SAAAA,GAAgB,GACjB,CAACA,IAEE3kB,GAAc,IAAA7B,cAChB,CACIvC,EACAkH,EACA1B,K,MAEIxF,EAAKc,KAAOsqB,EAAoBtqB,GAChCqqB,GAAsBpW,GAClBA,IAAS+V,GAAYU,cAAW3qB,EAAYiqB,GAAYU,WAG5DD,IAEe,QAAnB,EAAAvrB,EAAKoE,mBAAc,cAAApE,EAAAA,EAAMkH,EAAW1B,EAAM,GAE9C,CAAC+lB,EAAmBH,IAGlBK,GAAiB,IAAA1pB,UACnB,IACI0oB,EACM,IACQzE,GAAa+E,GAEV,+BAAAK,GAAmB,CACtBzqB,QAASuqB,IAAsBJ,GAAYU,YAGnDxF,GAAa+E,IACvB,CAACN,EAAqBzE,EAAWkF,EAAmBE,IAGlDM,GAAkB,IAAA3pB,UAAQ,IACvB0oB,EAGE,IACCP,GAAc,GAClB,CACIppB,GAAIgqB,GAAYU,SAChBzlB,QAASnD,EAAAA,cAACijB,GAAgB,MAC1BlM,QAASuR,IAAsBJ,GAAYU,WAPxCtB,GAUZ,CAACO,EAAqBP,EAAYgB,IAErC,sCACO1nB,GACH,CAAAulB,aAAcwC,EACdd,sBACAzE,UAAWyF,EACXvB,WAAYwB,EACZ7kB,OACAzC,eACF,EC3EmCunB,CAAiC,eAAA9kB,OAAMtC,WAAYf,IAExF,OACIZ,EAAAA,cAAC,KAAgC,CAAA6O,MAAOwZ,GACpCroB,EAAAA,cAACunB,GAAU,CAAC1lB,IAAKA,IACa,I,mECR1C,MAAM,IAAI,IAAA1D,GAAM,eAMH6qB,GAAyC,aAAC5rB,GAAe,EAANwD,GAAK,UAAf,UAClD,OACIZ,EAAAA,cAACW,EAAI,iBACGC,EAAK,CACTxD,KAAO,eAAA8E,SAAU,EAAAC,GAA2B/E,GAC5C8C,UAAW,GAAE,CAACyB,QAASf,EAAMe,UAC7BH,YAAapE,EAAKoE,YAClBC,mBAAoBrE,EAAKqE,qBAC3B,E,4BCrBV,SADmB,SAAAb,GAAK,OAAIqoB,EAAAA,GAAAA,MAAA,OAAAC,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA,CAAK1jB,MAAM,6BAA6BC,KAAK,OAAOC,QAAQ,aAAgB9E,GAAK,IAAA6N,SAAA,EAAE0a,EAAAA,GAAAA,KAAA,QAAMvqB,MAAO,GAAIC,OAAQ,GAAI6pB,EAAG,EAAGU,EAAG,EAAG3jB,KAAK,UAAU4jB,GAAI,KAAKF,EAAAA,GAAAA,KAAA,QAAMvqB,MAAO,GAAIC,OAAQ,GAAI6pB,EAAG,GAAKU,EAAG,GAAKE,OAAO,OAAOC,cAAe,GAAKF,GAAI,OAAOF,EAAAA,GAAAA,KAAA,QAAM1jB,KAAK,OAAOE,SAAS,UAAUC,EAAE,w9BAAw9BC,SAAS,eAAmB,E,8GCc/xC2jB,IAAQC,EAAAA,EAAAA,GAAG,qBAEjB,SAASC,GAAsBje,GAgByC,IAfpEke,EAAale,EAAbke,cACAvG,EAAS3X,EAAT2X,UACAwG,EAAWne,EAAXme,YACAC,EAAOpe,EAAPoe,QAEAC,EAAYre,EAAZqe,aACAC,EAAYte,EAAZse,aACAC,EAAcve,EAAdue,eACA7D,EAAY1a,EAAZ0a,aAEA8D,EAAexe,EAAfwe,gBACAC,EAAeze,EAAfye,gBACAC,EAAqB1e,EAArB0e,sBAEApD,EAAetb,EAAfsb,gBAEMO,EAAatnB,EAAAA,SAAc,WAC7B,MAAO,CACH,CACI9B,GAAI,QACJiF,QAAS2mB,EACT/S,QAASgT,EACT7pB,UAAW8pB,GAEf,CACI9rB,GAAI,WACJiF,QAAS+mB,EACTnT,QAASkT,GAGrB,GAAG,CAACF,EAAcD,EAAcG,EAAiBC,IAEjDE,GAAwCrrB,EAAAA,EAAAA,WAAS,GAAMsrB,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAAhDnpB,EAAYopB,EAAA,GAAEE,EAAeF,EAAA,GAC9BG,GAAUC,EAAAA,GAAAA,MAEhB,OACItB,EAAAA,GAAAA,KAACf,GAAe,CACZrI,iBAAe,EACfuH,WAAYA,EACZnB,aAAcA,EACd/C,UAAWA,EACXgD,kBAAgB,EAChBL,KAAM,CACFV,KAAM,iBAAM,UAAU,EACtBG,SAAU,GACVvjB,KAAMmjB,GACNljB,SAAU,GACVqjB,cAAeoE,EACflE,QAAS,SAACthB,GACN,OACIglB,EAAAA,GAAAA,KAACuB,GAAAA,EAAI,CAACC,IAAK,IAAKC,MAAO,UAAW9nB,OAAO,SAAQ2L,SAC5CtK,GAGb,GAEJ4iB,gBAAiBA,EACjBU,aAAc,SAAA5a,GAAgB,IAAdlL,EAAOkL,EAAPlL,QACZ,OACIsnB,EAAAA,GAAAA,MAAA4B,GAAAA,SAAA,CAAApc,SAAA,EACI0a,EAAAA,GAAAA,KAACH,GAAU,CACPrnB,QAASA,EACTvE,KAAM,CACFc,GAAI,WACJqC,MAAO,WACPiB,YAAa2oB,EACbloB,KAAM6oB,GAAAA,MAGd3B,EAAAA,GAAAA,KAACH,GAAU,CACPrnB,QAASA,EACTvE,KAAM,CACFc,GAAI,OACJqC,MAAOqpB,EACPpoB,YAAa,WACT+oB,GAAiBtpB,EACrB,EACAsD,YAAa,SAAA6J,EAAe2c,GACxB,OAAOA,EAAS,CACZxqB,MAFY6N,EAAL7N,MAGP0B,MACIknB,EAAAA,GAAAA,KAAA,OACIjpB,UAAWspB,GAAM,aACjB5qB,MAAO,GACPC,OAAQ,GACRgnB,IAAKmF,MAIrB,GAEJhqB,eAAgBC,EAChBA,aAAcA,EACdM,aAAc,kBAAMgpB,GAAgB,EAAM,EAC1CjpB,mBAAoB,WAChB,OACI6nB,EAAAA,GAAAA,KAAA,OAAKjpB,UAAWspB,GAAM,eAAe/a,UACjCwa,EAAAA,GAAAA,MAACgC,GAAAA,EAAI,CAAAxc,SAAA,CACY,WAAZob,IACGV,EAAAA,GAAAA,KAAC8B,GAAAA,EAAKtqB,KAAI,CACNpC,QAAS,kBAAMisB,EAAQ/X,KAAK,mBAAmB,EAAChE,SACnD,qBAIL0a,EAAAA,GAAAA,KAAC8B,GAAAA,EAAKtqB,KAAI,CAACmD,KAAM,iBAAiB2K,SAAC,eAInD,MAIhB,GAGZ,CAEA,SAAezO,EAAAA,KAAW0pB,G,6DCtI1B,QADgB,SAAA9oB,GAAK,OAAIqoB,EAAAA,EAAAA,MAAA,OAAAC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAK1jB,MAAM,6BAA6BC,KAAK,OAAOC,QAAQ,aAAgB9E,GAAK,IAAA6N,SAAA,EAAE0a,EAAAA,EAAAA,KAAA,KAAGrjB,SAAS,oBAAmB2I,UAAC0a,EAAAA,EAAAA,KAAA,QAAM1jB,KAAK,eAAeE,SAAS,UAAUC,EAAE,8kCAA8kCC,SAAS,eAAgBsjB,EAAAA,EAAAA,KAAA,QAAA1a,UAAM0a,EAAAA,EAAAA,KAAA,YAAUjrB,GAAG,cAAauQ,UAAC0a,EAAAA,EAAAA,KAAA,QAAM1jB,KAAK,eAAeG,EAAE,yBAA2C,C","sources":["webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/HighlightedItem/HighlightedItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/Item/Item.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Pin.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/PinFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Gear.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/dom-helpers/esm/removeClass.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/prop-types/factoryWithThrowingShims.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/prop-types/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/config.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/utils/reflow.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/Transition.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/CSSTransition.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/dom-helpers/esm/addClass.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/dom-helpers/esm/hasClass.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/TransitionGroup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/SwitchTransition.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-transition-group/esm/ReplaceTransition.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Drawer/Drawer.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/MultipleTooltip/MultipleTooltip.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/CompositeBar/CompositeBar.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/AllPagesPanel.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/useGroupedMenuItems.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/Logo/Logo.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/components/Header.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/navigation/assets/icons/control-menu-button.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/components/CollapseButton.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/helpers.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/components/Panels.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/components/FirstPanel.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AllPagesPanel/useVisibleMenuItems.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/types.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/useAsideHeaderInnerContextValue.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/AsideHeader/components/PageLayout/PageLayoutAside.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/src/components/FooterItem/FooterItem.tsx","webpack://@ytsaurus/ui/./img/svg/appLogo.svg","webpack://@ytsaurus/ui/./src/ui/containers/AppNavigation/AppNavigationComponent.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/gear.svg"],"sourcesContent":["import {PopupPlacement} from '@gravity-ui/uikit';\n\nexport const ITEM_TYPE_REGULAR = 'regular';\nexport const COLLAPSE_ITEM_ID = 'collapse-item-id';\n\nexport const POPUP_PLACEMENT: PopupPlacement = ['right-start', 'right-end', 'right'];\nexport const POPUP_ITEM_HEIGHT = 28;\n","import {Ellipsis} from '@gravity-ui/icons';\nimport {MenuItem} from './../types';\nimport {COLLAPSE_ITEM_ID} from './constants';\nimport {CompositeBarItem} from '../CompositeBar/CompositeBar';\nimport {ITEM_HEIGHT} from '../constants';\n\nexport function getItemHeight(item: CompositeBarItem) {\n if (!isMenuItem(item)) {\n return ITEM_HEIGHT;\n }\n\n switch (item.type) {\n case 'action':\n return 50;\n case 'divider':\n return 15;\n\n default:\n return ITEM_HEIGHT;\n }\n}\n\nexport function getItemsHeight<T extends CompositeBarItem>(items: T[]) {\n return items.reduce((sum, item) => sum + getItemHeight(item), 0);\n}\n\nexport function getSelectedItemIndex(items: MenuItem[]) {\n const index = items.findIndex(({current}) => Boolean(current));\n return index === -1 ? undefined : index;\n}\n\nexport function getPinnedItems(items: MenuItem[]) {\n const pinnedItems: MenuItem[] = [];\n for (const item of items) {\n if (item.pinned) {\n pinnedItems.push(item);\n } else if (item.type === 'divider') {\n if (pinnedItems.length > 0 && pinnedItems[pinnedItems.length - 1].type !== 'divider') {\n pinnedItems.push(item);\n }\n }\n }\n return pinnedItems;\n}\n\nexport function getItemsMinHeight(items: MenuItem[]) {\n const pinnedItems = getPinnedItems(items);\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n\n return (\n getItemsHeight(pinnedItems) +\n getItemsHeight(afterMoreButtonItems) +\n (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT)\n );\n}\n\nexport function getMoreButtonItem(menuMoreTitle?: string): MenuItem {\n return {\n id: COLLAPSE_ITEM_ID,\n title: menuMoreTitle,\n icon: Ellipsis,\n iconSize: 18,\n };\n}\n\nexport function getAutosizeListItems(\n items: MenuItem[],\n height: number,\n collapseItem: MenuItem,\n): {\n listItems: MenuItem[];\n collapseItems: MenuItem[];\n} {\n const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);\n const regularItems = items.filter((item) => !item.afterMoreButton);\n const listItems = [...regularItems, ...afterMoreButtonItems];\n\n const allItemsHeight = getItemsHeight(listItems);\n if (allItemsHeight <= height) {\n return {listItems, collapseItems: []};\n }\n\n const collapseItemHeight = getItemHeight(collapseItem);\n\n listItems.splice(regularItems.length, 0, collapseItem);\n const collapseItems: MenuItem[] = [];\n\n let listHeight = allItemsHeight + collapseItemHeight;\n let index = listItems.length;\n while (listHeight > height) {\n if (index === 0) {\n break;\n }\n index--;\n\n const item = listItems[index];\n if (item.pinned || item.id === COLLAPSE_ITEM_ID || item.afterMoreButton) {\n continue;\n }\n if (item.type === 'divider') {\n if (index + 1 < listItems.length && listItems[index + 1]?.type === 'divider') {\n listHeight -= getItemHeight(item);\n listItems.splice(index, 1);\n }\n continue;\n }\n listHeight -= getItemHeight(item);\n collapseItems.unshift(...listItems.splice(index, 1));\n }\n if (\n listItems[index]?.type === 'divider' &&\n (index === 0 || listItems[index - 1]?.type === 'divider')\n ) {\n listItems.splice(index, 1);\n }\n\n return {listItems, collapseItems};\n}\n\nexport function isMenuItem(item: CompositeBarItem): item is MenuItem {\n return (item as MenuItem)?.id !== undefined;\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport debounceFn from 'lodash/debounce';\n\nimport {Portal} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderInnerContext} from '../../AsideHeader/AsideHeaderContext';\nimport {block} from '../../utils/cn';\n\nimport './HighlightedItem.scss';\n\nconst b = block('composite-bar-highlighted-item');\n\ninterface ItemInnerProps {\n iconRef: React.RefObject<HTMLDivElement>;\n iconNode: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n onClickCapture?: (event: React.SyntheticEvent) => void;\n}\n\nconst DEBOUNCE_TIME = 200;\n\nexport const HighlightedItem: React.FC<ItemInnerProps> = ({\n iconRef,\n iconNode,\n onClick,\n onClickCapture,\n}: ItemInnerProps) => {\n const {openModalSubscriber} = useAsideHeaderInnerContext();\n const [{top, left, width, height}, setPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n\n const handleResizeDebounced = useMemo(\n () =>\n debounceFn(\n () => {\n const {\n top = 0,\n left = 0,\n width = 0,\n height = 0,\n } = iconRef?.current?.getBoundingClientRect() || {};\n\n setPosition({\n top: top + window.scrollY,\n left: left + window.scrollX,\n width,\n height,\n });\n },\n DEBOUNCE_TIME,\n {leading: true},\n ),\n [iconRef],\n );\n\n const handleResize = useCallback(() => handleResizeDebounced(), [handleResizeDebounced]);\n\n useEffect(() => {\n if (!isModalOpen) {\n return;\n }\n\n handleResize();\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize, isModalOpen]);\n\n openModalSubscriber?.((open: boolean) => {\n setIsModalOpen(open);\n });\n\n if (!iconNode || !isModalOpen) {\n return null;\n }\n\n return (\n <Portal>\n <div\n className={b()}\n style={{left, top, width, height}}\n onClick={onClick}\n onClickCapture={onClickCapture}\n data-toast\n >\n <div className={b('icon')}>{iconNode}</div>\n </div>\n </Portal>\n );\n};\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import React from 'react';\nimport {block} from '../../utils/cn';\n\nimport {List, Icon, Popup, PopupPlacement, PopupProps, Tooltip} from '@gravity-ui/uikit';\n\nimport {MakeItemParams, MenuItem} from '../../types';\nimport {getSelectedItemIndex} from '../utils';\nimport {ASIDE_HEADER_ICON_SIZE} from '../../constants';\nimport {\n COLLAPSE_ITEM_ID,\n POPUP_ITEM_HEIGHT,\n POPUP_PLACEMENT,\n ITEM_TYPE_REGULAR,\n} from '../constants';\n\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {useAsideHeaderContext} from '../../AsideHeader/AsideHeaderContext';\n\nimport './Item.scss';\n\nconst b = block('composite-bar-item');\n\ninterface ItemPopup {\n popupVisible?: PopupProps['open'];\n popupAnchor?: PopupProps['anchorRef'];\n popupPlacement?: PopupProps['placement'];\n popupOffset?: PopupProps['offset'];\n popupKeepMounted?: PopupProps['keepMounted'];\n renderPopupContent?: () => React.ReactNode;\n onClosePopup?: () => void;\n}\n\nexport interface ItemProps extends ItemPopup {\n item: MenuItem;\n enableTooltip?: boolean;\n onItemClick?: (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => void;\n onItemClickCapture?: (event: React.SyntheticEvent) => void;\n bringForward?: boolean;\n}\n\ninterface ItemInnerProps extends ItemProps {\n className?: string;\n collapseItems?: MenuItem[];\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nfunction renderItemTitle(item: MenuItem) {\n let titleNode = <div className={b('title-text')}>{item.title}</div>;\n\n if (item.rightAdornment) {\n titleNode = (\n <React.Fragment>\n {titleNode}\n <div className={b('title-adornment')}>{item.rightAdornment}</div>\n </React.Fragment>\n );\n }\n\n return titleNode;\n}\n\nexport const defaultPopupPlacement: PopupPlacement = ['right-end'];\nexport const defaultPopupOffset: NonNullable<PopupProps['offset']> = [-20, 8];\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n item,\n className,\n collapseItems,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupAnchor,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onClosePopup,\n onItemClick,\n onItemClickCapture,\n bringForward,\n } = props;\n\n const {compact} = useAsideHeaderContext();\n\n const [open, toggleOpen] = React.useState<boolean>(false);\n\n const ref = React.useRef<HTMLDivElement>(null);\n const anchorRef = popupAnchor || ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = item.type || ITEM_TYPE_REGULAR;\n const current = item.current || false;\n const tooltipText = item.tooltipText || item.title;\n const icon = item.icon;\n const iconSize = item.iconSize || ASIDE_HEADER_ICON_SIZE;\n const collapsedItem = item.id === COLLAPSE_ITEM_ID;\n\n const modifiers: Required<PopupProps>['modifiers'] = React.useMemo(\n () => [\n {\n name: 'compact',\n enabled: true,\n options: {compact},\n phase: 'main',\n fn() {},\n },\n ],\n [compact],\n );\n\n const onClose = React.useCallback(\n (event: MouseEvent | KeyboardEvent) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n onClosePopup?.();\n },\n [onClosePopup],\n );\n\n if (item.type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const makeIconNode = (iconEl: React.ReactNode): React.ReactNode => {\n return compact ? (\n <Tooltip\n content={tooltipText}\n disabled={!enableTooltip || (collapsedItem && open) || popupVisible}\n placement=\"right\"\n className={b('icon-tooltip', {'item-type': type})}\n >\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n </Tooltip>\n ) : (\n iconEl\n );\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const createdNode = (\n <React.Fragment>\n <div\n className={b({type, current, compact}, className)}\n ref={ref}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (collapsedItem) {\n /**\n * If we call onItemClick for collapsedItem then:\n * - User get unexpected item in onItemClick callback\n * - onClosePanel calls twice for each popuped item, as result it will prevent opening of panelItems\n */\n toggleOpen(!open);\n } else {\n onItemClick?.(item, false, event);\n }\n }}\n onClickCapture={onItemClickCapture}\n onMouseEnter={() => {\n if (!compact) {\n onMouseEnter?.();\n }\n }}\n onMouseLeave={() => {\n if (!compact) {\n onMouseLeave?.();\n }\n }}\n >\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div\n className={b('title')}\n title={typeof item.title === 'string' ? item.title : undefined}\n >\n {titleEl}\n </div>\n </div>\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n contentClassName={b('popup')}\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorRef={anchorRef}\n onClose={onClose}\n modifiers={modifiers}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return item.link ? (\n <a href={item.link} className={b('link')}>\n {createdNode}\n </a>\n ) : (\n createdNode\n );\n };\n\n const iconNode = icon ? <Icon data={icon} size={iconSize} className={b('icon')} /> : null;\n const titleNode = renderItemTitle(item);\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item, ref};\n\n if (typeof item.itemWrapper === 'function') {\n node = item.itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (item.itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode);\n }\n\n return (\n <>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLDivElement, MouseEvent>) =>\n onItemClick?.(item, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n {open && collapsedItem && collapseItems?.length && Boolean(anchorRef?.current) && (\n <CollapsedPopup {...props} anchorRef={ref} onClose={() => toggleOpen(false)} />\n )}\n </>\n );\n};\n\nItem.displayName = 'Item';\n\ninterface CollapsedPopupProps {\n anchorRef: React.RefObject<HTMLElement>;\n onClose: () => void;\n}\n\nfunction CollapsedPopup({\n onItemClick,\n collapseItems,\n anchorRef,\n onClose,\n}: ItemInnerProps & CollapsedPopupProps) {\n const {compact} = useAsideHeaderContext();\n return collapseItems?.length ? (\n <Popup placement={POPUP_PLACEMENT} open={true} anchorRef={anchorRef} onClose={onClose}>\n <div className={b('collapse-items-popup-content')}>\n <List\n itemClassName={b('root-collapse-item')}\n items={collapseItems}\n selectedItemIndex={getSelectedItemIndex(collapseItems)}\n itemHeight={POPUP_ITEM_HEIGHT}\n itemsHeight={collapseItems.length * POPUP_ITEM_HEIGHT}\n virtualized={false}\n filterable={false}\n sortable={false}\n onItemClick={onClose}\n renderItem={(collapseItem) => {\n const makeCollapseNode = ({title: titleEl}: MakeItemParams) => {\n const res = (\n <div\n className={b('collapse-item')}\n onClick={(\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n onItemClick?.(collapseItem, true, event);\n }}\n >\n {titleEl}\n </div>\n );\n\n return collapseItem.link ? (\n <a href={collapseItem.link} className={b('link')}>\n {res}\n </a>\n ) : (\n res\n );\n };\n\n const titleNode = renderItemTitle(collapseItem);\n const params = {title: titleNode};\n const opts = {\n compact: Boolean(compact),\n collapsed: true,\n item: collapseItem,\n ref: anchorRef,\n };\n if (typeof collapseItem.itemWrapper === 'function') {\n return collapseItem.itemWrapper(params, makeCollapseNode, opts);\n } else {\n return makeCollapseNode(params);\n }\n }}\n />\n </div>\n </Popup>\n ) : null;\n}\n","import * as React from 'react';\nconst Pin = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM8 4.5c.506 0 .99-.04 1.436-.118l.84 2.352.253.707.717.221c.648.2 1.055.44 1.277.65.192.18.227.31.227.438 0 .14-.055.488-.937.878-.869.384-2.2.622-3.813.622s-2.944-.238-3.813-.622c-.882-.39-.937-.738-.937-.878 0-.128.035-.259.227-.439.222-.209.629-.448 1.277-.649l.717-.221.253-.707.84-2.352c.445.079.93.118 1.436.118Zm4-2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z\", clipRule: \"evenodd\" })));\nexport default Pin;\n","import * as React from 'react';\nconst PinFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.5 2.255v-.01c.003-.03.013-.157-.361-.35C9.703 1.668 8.966 1.5 8 1.5c-.967 0-1.703.169-2.138.394-.375.194-.365.32-.362.351v.01c-.003.03-.013.157.362.35C6.297 2.832 7.033 3 8 3c.967 0 1.703-.169 2.139-.394.374-.194.364-.32.361-.351ZM12 2.25c0 .738-.433 1.294-1.136 1.669l.825 2.31c1.553.48 2.561 1.32 2.561 2.52 0 1.854-2.402 2.848-5.5 2.985V15a.75.75 0 0 1-1.5 0v-3.266c-3.098-.136-5.5-1.131-5.5-2.984 0-1.2 1.008-2.04 2.561-2.52l.825-2.311C4.433 3.544 4 2.988 4 2.25 4 .75 5.79 0 8 0s4 .75 4 2.25Z\", clipRule: \"evenodd\" })));\nexport default PinFill;\n","import * as React from 'react';\nconst Gear = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"g\", { clipPath: \"url(#a)\" },\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.199.199 0 0 1 .271.073l.802 1.388a.199.199 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.199.199 0 0 1 .073.271l-.802 1.388a.199.199 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.199.199 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.199.199 0 0 1-.272-.073l-.8-1.388a.199.199 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.199.199 0 0 1-.073-.271l.801-1.388a.199.199 0 0 1 .272-.073C5.042 5.138 7 4.007 7 2.2c0-.11.089-.199.199-.199ZM5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.699 1.699 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.699 1.699 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.698 1.698 0 0 1-2.32-.622l-.802-1.388a1.699 1.699 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.699 1.699 0 0 1-.622-2.321l.801-1.388a1.699 1.699 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2Zm4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\", clipRule: \"evenodd\" })),\n React.createElement(\"defs\", null,\n React.createElement(\"clipPath\", { id: \"a\" },\n React.createElement(\"path\", { fill: \"currentColor\", d: \"M0 0h16v16H0z\" })))));\nexport default Gear;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nvar _leaveRenders, _enterRenders;\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { ENTERED, ENTERING, EXITING } from './Transition';\nimport TransitionGroupContext from './TransitionGroupContext';\n\nfunction areChildrenDifferent(oldChildren, newChildren) {\n if (oldChildren === newChildren) return false;\n\n if (React.isValidElement(oldChildren) && React.isValidElement(newChildren) && oldChildren.key != null && oldChildren.key === newChildren.key) {\n return false;\n }\n\n return true;\n}\n/**\n * Enum of modes for SwitchTransition component\n * @enum { string }\n */\n\n\nexport var modes = {\n out: 'out-in',\n in: 'in-out'\n};\n\nvar callHook = function callHook(element, name, cb) {\n return function () {\n var _element$props;\n\n element.props[name] && (_element$props = element.props)[name].apply(_element$props, arguments);\n cb();\n };\n};\n\nvar leaveRenders = (_leaveRenders = {}, _leaveRenders[modes.out] = function (_ref) {\n var current = _ref.current,\n changeState = _ref.changeState;\n return React.cloneElement(current, {\n in: false,\n onExited: callHook(current, 'onExited', function () {\n changeState(ENTERING, null);\n })\n });\n}, _leaveRenders[modes.in] = function (_ref2) {\n var current = _ref2.current,\n changeState = _ref2.changeState,\n children = _ref2.children;\n return [current, React.cloneElement(children, {\n in: true,\n onEntered: callHook(children, 'onEntered', function () {\n changeState(ENTERING);\n })\n })];\n}, _leaveRenders);\nvar enterRenders = (_enterRenders = {}, _enterRenders[modes.out] = function (_ref3) {\n var children = _ref3.children,\n changeState = _ref3.changeState;\n return React.cloneElement(children, {\n in: true,\n onEntered: callHook(children, 'onEntered', function () {\n changeState(ENTERED, React.cloneElement(children, {\n in: true\n }));\n })\n });\n}, _enterRenders[modes.in] = function (_ref4) {\n var current = _ref4.current,\n children = _ref4.children,\n changeState = _ref4.changeState;\n return [React.cloneElement(current, {\n in: false,\n onExited: callHook(current, 'onExited', function () {\n changeState(ENTERED, React.cloneElement(children, {\n in: true\n }));\n })\n }), React.cloneElement(children, {\n in: true\n })];\n}, _enterRenders);\n/**\n * A transition component inspired by the [vue transition modes](https://vuejs.org/v2/guide/transitions.html#Transition-Modes).\n * You can use it when you want to control the render between state transitions.\n * Based on the selected mode and the child's key which is the `Transition` or `CSSTransition` component, the `SwitchTransition` makes a consistent transition between them.\n *\n * If the `out-in` mode is selected, the `SwitchTransition` waits until the old child leaves and then inserts a new child.\n * If the `in-out` mode is selected, the `SwitchTransition` inserts a new child first, waits for the new child to enter and then removes the old child.\n *\n * **Note**: If you want the animation to happen simultaneously\n * (that is, to have the old child removed and a new child inserted **at the same time**),\n * you should use\n * [`TransitionGroup`](https://reactcommunity.org/react-transition-group/transition-group)\n * instead.\n *\n * ```jsx\n * function App() {\n * const [state, setState] = useState(false);\n * return (\n * <SwitchTransition>\n * <CSSTransition\n * key={state ? \"Goodbye, world!\" : \"Hello, world!\"}\n * addEndListener={(node, done) => node.addEventListener(\"transitionend\", done, false)}\n * classNames='fade'\n * >\n * <button onClick={() => setState(state => !state)}>\n * {state ? \"Goodbye, world!\" : \"Hello, world!\"}\n * </button>\n * </CSSTransition>\n * </SwitchTransition>\n * );\n * }\n * ```\n *\n * ```css\n * .fade-enter{\n * opacity: 0;\n * }\n * .fade-exit{\n * opacity: 1;\n * }\n * .fade-enter-active{\n * opacity: 1;\n * }\n * .fade-exit-active{\n * opacity: 0;\n * }\n * .fade-enter-active,\n * .fade-exit-active{\n * transition: opacity 500ms;\n * }\n * ```\n */\n\nvar SwitchTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(SwitchTransition, _React$Component);\n\n function SwitchTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n status: ENTERED,\n current: null\n };\n _this.appeared = false;\n\n _this.changeState = function (status, current) {\n if (current === void 0) {\n current = _this.state.current;\n }\n\n _this.setState({\n status: status,\n current: current\n });\n };\n\n return _this;\n }\n\n var _proto = SwitchTransition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n };\n\n SwitchTransition.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.children == null) {\n return {\n current: null\n };\n }\n\n if (state.status === ENTERING && props.mode === modes.in) {\n return {\n status: ENTERING\n };\n }\n\n if (state.current && areChildrenDifferent(state.current, props.children)) {\n return {\n status: EXITING\n };\n }\n\n return {\n current: React.cloneElement(props.children, {\n in: true\n })\n };\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n mode = _this$props.mode,\n _this$state = this.state,\n status = _this$state.status,\n current = _this$state.current;\n var data = {\n children: children,\n current: current,\n changeState: this.changeState,\n status: status\n };\n var component;\n\n switch (status) {\n case ENTERING:\n component = enterRenders[mode](data);\n break;\n\n case EXITING:\n component = leaveRenders[mode](data);\n break;\n\n case ENTERED:\n component = current;\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: {\n isMounting: !this.appeared\n }\n }, component);\n };\n\n return SwitchTransition;\n}(React.Component);\n\nSwitchTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Transition modes.\n * `out-in`: Current element transitions out first, then when complete, the new element transitions in.\n * `in-out`: New element transitions in first, then when complete, the current element transitions out.\n *\n * @type {'out-in'|'in-out'}\n */\n mode: PropTypes.oneOf([modes.in, modes.out]),\n\n /**\n * Any `Transition` or `CSSTransition` component.\n */\n children: PropTypes.oneOfType([PropTypes.element.isRequired])\n} : {};\nSwitchTransition.defaultProps = {\n mode: modes.out\n};\nexport default SwitchTransition;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport TransitionGroup from './TransitionGroup';\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\n\nvar ReplaceTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n var child = React.Children.toArray(children)[idx];\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n\n if (this.props[handler]) {\n var maybeNode = child.props.nodeRef ? undefined : ReactDOM.findDOMNode(this);\n this.props[handler](maybeNode);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = React.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return /*#__PURE__*/React.createElement(TransitionGroup, props, inProp ? React.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : React.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(React.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: PropTypes.bool.isRequired,\n children: function children(props, propName) {\n if (React.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nexport default ReplaceTransition;","import React from 'react';\nimport {CSSTransition, Transition} from 'react-transition-group';\n\nimport {useBodyScrollLock} from '@gravity-ui/uikit';\n\nimport {block} from '../utils/cn';\n\nimport './Drawer.scss';\n\nconst b = block('drawer');\nconst TIMEOUT = 300;\n\nexport interface DrawerItemProps {\n id: string;\n content: React.ReactNode;\n visible: boolean;\n direction?: 'right' | 'left';\n className?: string;\n}\n\nexport const DrawerItem: React.FC<DrawerItemProps> = ({visible, content, direction, className}) => {\n const itemRef = React.useRef<HTMLDivElement>(null);\n const cssDirection = direction === 'left' ? undefined : direction;\n\n return (\n <CSSTransition\n in={visible}\n timeout={TIMEOUT}\n unmountOnExit={true}\n classNames={b('item-transition', {direction: cssDirection})}\n nodeRef={itemRef}\n >\n <div ref={itemRef} className={b('item', {direction: cssDirection}, className)}>\n {content}\n </div>\n </CSSTransition>\n );\n};\n\ntype DrawerChild = React.ReactElement<DrawerItemProps>;\n\nexport interface DrawerProps {\n children: DrawerChild | DrawerChild[];\n preventScrollBody?: boolean;\n className?: string;\n style?: React.CSSProperties;\n onVeilClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n onEscape?: () => void;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n className,\n children,\n style,\n onVeilClick,\n onEscape,\n preventScrollBody = true,\n}) => {\n let someItemVisible = false;\n React.Children.forEach(children, (child) => {\n const childElem = child as DrawerChild;\n if (childElem.type === DrawerItem) {\n const childVisible = Boolean(childElem.props.visible);\n if (childVisible) {\n someItemVisible = true;\n }\n }\n });\n\n React.useEffect(() => {\n function onKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n onEscape?.();\n }\n }\n if (someItemVisible) {\n window.addEventListener('keydown', onKeyDown);\n }\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [onEscape, someItemVisible]);\n\n useBodyScrollLock({enabled: preventScrollBody && someItemVisible});\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const veilRef = React.useRef<HTMLDivElement>(null);\n return (\n <Transition\n in={someItemVisible}\n timeout={{enter: 0, exit: TIMEOUT}}\n mountOnEnter\n unmountOnExit\n nodeRef={containerRef}\n >\n {(state) => {\n const childrenVisible = someItemVisible && state === 'entered';\n return (\n <div ref={containerRef} className={b(null, className)} style={style}>\n <CSSTransition\n in={childrenVisible}\n timeout={TIMEOUT}\n unmountOnExit={true}\n classNames={b('veil-transition')}\n nodeRef={veilRef}\n >\n <div ref={veilRef} className={b('veil')} onClick={onVeilClick} />\n </CSSTransition>\n {React.Children.map(children, (child) => {\n const childElem = child as DrawerChild;\n if (childElem.type === DrawerItem) {\n const childVisible = Boolean(childElem.props.visible);\n return React.cloneElement(childElem, {\n ...childElem.props,\n visible: childVisible && childrenVisible,\n });\n }\n return child;\n })}\n </div>\n );\n }}\n </Transition>\n );\n};\n","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n const timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n return [animationFrameID, timeoutID];\n };\n}\nfunction createDetectElementResize(nonce) {\n let animationKeyframes;\n let animationName;\n let animationStartEvent;\n let animationStyle;\n let checkTriggers;\n let resetTriggers;\n let scrollListener;\n const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function (element) {\n const triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n checkTriggers = function (element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n scrollListener = function (e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n return;\n }\n const element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n let animation = false;\n let keyframeprefix = \"\";\n animationStartEvent = \"animationstart\";\n const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n let pfx = \"\";\n {\n const elm = document.createElement(\"fakeelement\");\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n if (animation === false) {\n for (let i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n animationName = \"resizeanim\";\n animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n }\n const createStyles = function (doc) {\n if (!doc.getElementById(\"detectElementResize\")) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName(\"head\")[0],\n style = doc.createElement(\"style\");\n style.id = \"detectElementResize\";\n style.type = \"text/css\";\n if (nonce != null) {\n style.setAttribute(\"nonce\", nonce);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n head.appendChild(style);\n }\n };\n const addResizeListener = function (element, fn) {\n if (attachEvent) {\n element.attachEvent(\"onresize\", fn);\n } else {\n if (!element.__resizeTriggers__) {\n const doc = element.ownerDocument;\n const elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === \"static\") {\n element.style.position = \"relative\";\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n const expandTrigger = doc.createElement(\"div\");\n expandTrigger.className = \"expand-trigger\";\n expandTrigger.appendChild(doc.createElement(\"div\"));\n const contractTrigger = doc.createElement(\"div\");\n contractTrigger.className = \"contract-trigger\";\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener(\"scroll\", scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n const removeResizeListener = function (element, fn) {\n if (attachEvent) {\n element.detachEvent(\"onresize\", fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener(\"scroll\", scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n return {\n addResizeListener,\n removeResizeListener\n };\n}\n\nclass AutoSizer extends Component {\n constructor(...args) {\n super(...args);\n this.state = {\n height: this.props.defaultHeight || 0,\n scaledHeight: this.props.defaultHeight || 0,\n scaledWidth: this.props.defaultWidth || 0,\n width: this.props.defaultWidth || 0\n };\n this._autoSizer = null;\n this._detectElementResize = null;\n this._parentNode = null;\n this._resizeObserver = null;\n this._timeoutId = null;\n this._onResize = () => {\n this._timeoutId = null;\n const {\n disableHeight,\n disableWidth,\n onResize\n } = this.props;\n if (this._parentNode) {\n var _style$paddingLeft, _style$paddingRight, _style$paddingTop, _style$paddingBottom;\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const style = window.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseFloat((_style$paddingLeft = style.paddingLeft) !== null && _style$paddingLeft !== void 0 ? _style$paddingLeft : \"0\");\n const paddingRight = parseFloat((_style$paddingRight = style.paddingRight) !== null && _style$paddingRight !== void 0 ? _style$paddingRight : \"0\");\n const paddingTop = parseFloat((_style$paddingTop = style.paddingTop) !== null && _style$paddingTop !== void 0 ? _style$paddingTop : \"0\");\n const paddingBottom = parseFloat((_style$paddingBottom = style.paddingBottom) !== null && _style$paddingBottom !== void 0 ? _style$paddingBottom : \"0\");\n const rect = this._parentNode.getBoundingClientRect();\n const scaledHeight = rect.height - paddingTop - paddingBottom;\n const scaledWidth = rect.width - paddingLeft - paddingRight;\n const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n this.setState({\n height,\n width,\n scaledHeight,\n scaledWidth\n });\n if (typeof onResize === \"function\") {\n onResize({\n height,\n scaledHeight,\n scaledWidth,\n width\n });\n }\n }\n }\n };\n this._setRef = autoSizer => {\n this._autoSizer = autoSizer;\n };\n }\n componentDidMount() {\n const {\n nonce\n } = this.props;\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n if (this._parentNode != null) {\n if (typeof ResizeObserver !== \"undefined\") {\n this._resizeObserver = new ResizeObserver(() => {\n // Guard against \"ResizeObserver loop limit exceeded\" error;\n // could be triggered if the state update causes the ResizeObserver handler to run long.\n // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n this._timeoutId = setTimeout(this._onResize, 0);\n });\n this._resizeObserver.observe(this._parentNode);\n } else {\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n }\n this._onResize();\n }\n }\n }\n componentWillUnmount() {\n if (this._parentNode) {\n if (this._detectElementResize) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n if (this._timeoutId !== null) {\n clearTimeout(this._timeoutId);\n }\n if (this._resizeObserver) {\n this._resizeObserver.observe(this._parentNode);\n this._resizeObserver.disconnect();\n }\n }\n }\n render() {\n const {\n children,\n defaultHeight,\n defaultWidth,\n disableHeight = false,\n disableWidth = false,\n nonce,\n onResize,\n style = {},\n tagName = \"div\",\n ...rest\n } = this.props;\n const {\n height,\n scaledHeight,\n scaledWidth,\n width\n } = this.state;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n const outerStyle = {\n overflow: \"visible\"\n };\n const childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n let bailoutOnChildren = false;\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n childParams.scaledHeight = scaledHeight;\n }\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n childParams.scaledWidth = scaledWidth;\n }\n return createElement(tagName, {\n ref: this._setRef,\n style: {\n ...outerStyle,\n ...style\n },\n ...rest\n }, !bailoutOnChildren && children(childParams));\n }\n}\n\nfunction isHeightAndWidthProps(props) {\n return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\n","import React from 'react';\n\ninterface MultipleTooltipContextProps {\n active: boolean;\n activeIndex: number | undefined;\n hideCollapseItemTooltip: boolean;\n lastClickedItemIndex: number | undefined;\n setValue<K extends keyof Omit<MultipleTooltipContextProps, 'setValue'>>(\n value:\n | Pick<Omit<MultipleTooltipContextProps, 'setValue'>, K>\n | Omit<MultipleTooltipContextProps, 'setValue'>,\n ): void;\n}\n\nconst multipleTooltipContextDefaults = {\n active: false,\n activeIndex: undefined,\n hideCollapseItemTooltip: false,\n lastClickedItemIndex: undefined,\n setValue: () => {},\n};\n\nexport const MultipleTooltipContext = React.createContext<MultipleTooltipContextProps>(\n multipleTooltipContextDefaults,\n);\n\ntype MultipleTooltipProviderState = Omit<MultipleTooltipContextProps, 'setValue'>;\n\nexport class MultipleTooltipProvider extends React.PureComponent<\n {children: React.ReactNode},\n MultipleTooltipProviderState\n> {\n state = {\n ...multipleTooltipContextDefaults,\n };\n\n setValue: MultipleTooltipContextProps['setValue'] = (value) => {\n this.setState({...value});\n };\n\n render() {\n const {children} = this.props;\n\n return (\n <MultipleTooltipContext.Provider value={{...this.state, setValue: this.setValue}}>\n {children}\n </MultipleTooltipContext.Provider>\n );\n }\n}\n","import React from 'react';\nimport {Popup, PopupProps} from '@gravity-ui/uikit';\n\nimport {MultipleTooltipContext} from './MultipleTooltipContext';\nimport {MenuItem} from '../../types';\nimport {block} from '../../utils/cn';\nimport {COLLAPSE_ITEM_ID} from '../constants';\n\nimport './MultipleTooltip.scss';\n\nconst b = block('multiple-tooltip');\n\nconst POPUP_OFFSET: PopupProps['offset'] = [-32, 4];\nconst POPUP_MODIFIERS: PopupProps['modifiers'] = [\n {\n name: 'preventOverflow',\n enabled: false,\n },\n];\n\nexport type MultipleTooltipProps = Pick<PopupProps, 'open' | 'anchorRef' | 'placement'> & {\n items: MenuItem[];\n};\n\nexport const MultipleTooltip: React.FC<MultipleTooltipProps> = ({\n items,\n open,\n anchorRef,\n placement,\n}) => {\n const {activeIndex, hideCollapseItemTooltip} = React.useContext(MultipleTooltipContext);\n const activeItem = activeIndex === undefined ? null : items[activeIndex];\n\n return (\n <Popup\n open={open}\n anchorRef={anchorRef}\n placement={placement}\n offset={POPUP_OFFSET}\n contentClassName={b(null)}\n modifiers={POPUP_MODIFIERS}\n disableLayer\n >\n <div className={b('items-container')}>\n {items\n .filter(\n ({type = 'regular', id}) =>\n !hideCollapseItemTooltip ||\n (id !== COLLAPSE_ITEM_ID && type !== 'action'),\n )\n .map((item, idx) => {\n switch (item.type) {\n case 'divider':\n return (\n <div className={b('item', {divider: true})} key={idx}>\n {item.title}\n </div>\n );\n default:\n return (\n <div\n className={b('item', {\n active: item === activeItem,\n })}\n key={idx}\n >\n {item.title}\n </div>\n );\n }\n })}\n </div>\n </Popup>\n );\n};\n","import React, {FC, ReactNode, useCallback, useContext, useRef} from 'react';\nimport AutoSizer, {Size} from 'react-virtualized-auto-sizer';\nimport {List} from '@gravity-ui/uikit';\n\nimport {block} from '../utils/cn';\nimport {MenuItem, SubheaderMenuItem} from '../types';\nimport {\n getItemsHeight,\n getItemHeight,\n getSelectedItemIndex,\n getItemsMinHeight,\n getMoreButtonItem,\n getAutosizeListItems,\n isMenuItem,\n} from './utils';\nimport {Item, ItemProps} from './Item/Item';\n\nimport {MultipleTooltip, MultipleTooltipContext, MultipleTooltipProvider} from './MultipleTooltip';\nimport {COLLAPSE_ITEM_ID} from './constants';\nimport {ASIDE_HEADER_COMPACT_WIDTH} from '../constants';\nimport {useAsideHeaderContext} from '../AsideHeader/AsideHeaderContext';\n\nimport './CompositeBar.scss';\n\nconst b = block('composite-bar');\n\nexport type CompositeBarItem = MenuItem | SubheaderMenuItem;\n\ntype CompositeBarItems =\n | {type: 'menu'; items: MenuItem[]}\n | {type: 'subheader'; items: SubheaderMenuItem[]};\n\nexport type CompositeBarProps = CompositeBarItems & {\n onItemClick?: (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => void;\n multipleTooltip?: boolean;\n menuMoreTitle?: string;\n};\n\ntype CompositeBarViewProps = CompositeBarProps & {\n collapseItems?: MenuItem[];\n};\n\nconst CompositeBarView: FC<CompositeBarViewProps> = ({\n type,\n items,\n onItemClick,\n collapseItems,\n multipleTooltip = false,\n}) => {\n const ref = useRef<List<CompositeBarItem>>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const {\n setValue: setMultipleTooltipContextValue,\n active: multipleTooltipActive,\n activeIndex,\n lastClickedItemIndex,\n } = useContext(MultipleTooltipContext);\n const {compact} = useAsideHeaderContext();\n\n React.useEffect(() => {\n function handleBlurWindow() {\n if (multipleTooltip && multipleTooltipActive) {\n setMultipleTooltipContextValue({active: false});\n }\n }\n\n window.addEventListener('blur', handleBlurWindow);\n\n return () => {\n window.removeEventListener('blur', handleBlurWindow);\n };\n }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);\n\n const onTooltipMouseEnter = useCallback(\n (e) => {\n if (\n multipleTooltip &&\n compact &&\n !multipleTooltipActive &&\n document.hasFocus() &&\n activeIndex !== lastClickedItemIndex &&\n e.clientX <= ASIDE_HEADER_COMPACT_WIDTH\n ) {\n setMultipleTooltipContextValue?.({\n active: true,\n });\n }\n },\n [\n multipleTooltip,\n compact,\n multipleTooltipActive,\n activeIndex,\n lastClickedItemIndex,\n setMultipleTooltipContextValue,\n ],\n );\n\n const onTooltipMouseLeave = useCallback(() => {\n if (multipleTooltip && multipleTooltipActive && document.hasFocus()) {\n setMultipleTooltipContextValue?.({\n active: false,\n lastClickedItemIndex: undefined,\n });\n }\n }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);\n\n const onMouseEnterByIndex = useCallback(\n (itemIndex) => () => {\n if (multipleTooltip && document.hasFocus()) {\n let multipleTooltipActiveValue = multipleTooltipActive;\n if (!multipleTooltipActive && itemIndex !== lastClickedItemIndex) {\n multipleTooltipActiveValue = true;\n }\n if (\n activeIndex === itemIndex &&\n multipleTooltipActive === multipleTooltipActiveValue\n ) {\n return;\n }\n setMultipleTooltipContextValue({\n activeIndex: itemIndex,\n active: multipleTooltipActiveValue,\n });\n }\n },\n [\n multipleTooltip,\n multipleTooltipActive,\n lastClickedItemIndex,\n activeIndex,\n setMultipleTooltipContextValue,\n ],\n );\n\n const onMouseLeave = useCallback(() => {\n if (compact && document.hasFocus()) {\n ref.current?.activateItem(undefined as unknown as number);\n if (\n multipleTooltip &&\n (activeIndex !== undefined || lastClickedItemIndex !== undefined)\n ) {\n setMultipleTooltipContextValue({\n activeIndex: undefined,\n lastClickedItemIndex: undefined,\n });\n }\n }\n }, [\n activeIndex,\n compact,\n lastClickedItemIndex,\n multipleTooltip,\n setMultipleTooltipContextValue,\n ]);\n\n const onItemClickByIndex = useCallback(\n (itemIndex): ItemProps['onItemClick'] =>\n (item, collapsed, event) => {\n if (\n compact &&\n multipleTooltip &&\n itemIndex !== lastClickedItemIndex &&\n item.id !== COLLAPSE_ITEM_ID\n ) {\n setMultipleTooltipContextValue({\n lastClickedItemIndex: itemIndex,\n active: false,\n });\n }\n onItemClick?.(item, collapsed, event);\n },\n [\n compact,\n lastClickedItemIndex,\n multipleTooltip,\n onItemClick,\n setMultipleTooltipContextValue,\n ],\n );\n\n return (\n <React.Fragment>\n <div\n ref={tooltipRef}\n onMouseEnter={onTooltipMouseEnter}\n onMouseLeave={onTooltipMouseLeave}\n >\n <List<CompositeBarItem>\n ref={ref}\n items={items}\n selectedItemIndex={type === 'menu' ? getSelectedItemIndex(items) : undefined}\n itemHeight={getItemHeight}\n itemsHeight={getItemsHeight}\n itemClassName={b('root-menu-item')}\n virtualized={false}\n filterable={false}\n sortable={false}\n renderItem={(item, _isItemActive, itemIndex) => {\n const itemExtraProps = isMenuItem(item) ? {item} : item;\n const enableTooltip = isMenuItem(item)\n ? !multipleTooltip\n : item.enableTooltip;\n\n return (\n <Item\n {...itemExtraProps}\n enableTooltip={enableTooltip}\n onMouseEnter={onMouseEnterByIndex(itemIndex)}\n onMouseLeave={onMouseLeave}\n onItemClick={onItemClickByIndex(itemIndex)}\n collapseItems={collapseItems}\n />\n );\n }}\n />\n </div>\n {type === 'menu' && multipleTooltip && (\n <MultipleTooltip\n open={compact && multipleTooltipActive}\n anchorRef={tooltipRef}\n placement={['right-start']}\n items={items}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport const CompositeBar: FC<CompositeBarProps> = ({\n type,\n items,\n menuMoreTitle,\n onItemClick,\n multipleTooltip = false,\n}) => {\n if (items.length === 0) {\n return null;\n }\n let node: ReactNode;\n\n if (type === 'menu') {\n const minHeight = getItemsMinHeight(items);\n const collapseItem = getMoreButtonItem(menuMoreTitle);\n node = (\n <div className={b({autosizer: true})} style={{minHeight}}>\n {items.length !== 0 && (\n <AutoSizer>\n {({width, height}: Size) => {\n const {listItems, collapseItems} = getAutosizeListItems(\n items,\n height,\n collapseItem,\n );\n return (\n <div style={{width, height}}>\n <CompositeBarView\n type=\"menu\"\n items={listItems}\n onItemClick={onItemClick}\n collapseItems={collapseItems}\n multipleTooltip={multipleTooltip}\n />\n </div>\n );\n }}\n </AutoSizer>\n )}\n </div>\n );\n } else {\n node = (\n <div className={b({subheader: true})}>\n <CompositeBarView type=\"subheader\" items={items} onItemClick={onItemClick} />\n </div>\n );\n }\n return <MultipleTooltipProvider>{node}</MultipleTooltipProvider>;\n};\n","import {registerKeyset} from '../../utils/registerKeyset';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'AllPagesPanel';\nexport default registerKeyset({en, ru}, COMPONENT);\n","import {Ellipsis} from '@gravity-ui/icons';\n\nimport i18n from './i18n';\nimport {MenuItem} from '../types';\n\nexport const ALL_PAGES_ID = 'all-pages' as const;\n\nexport function getAllPagesMenuItem(): MenuItem {\n return {\n id: ALL_PAGES_ID,\n title: i18n('menu-item.all-pages.title'),\n tooltipText: i18n('menu-item.all-pages.title'),\n icon: Ellipsis,\n };\n}\n","import React, {useCallback, MouseEvent} from 'react';\n\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport {PinFill, Pin} from '@gravity-ui/icons';\n\nimport {block} from '../../utils/cn';\nimport {MenuItem} from '../../types';\n\nimport './AllPagesListItem.scss';\n\nconst b = block('all-pages-list-item');\n\ninterface AllPagesListItemProps {\n item: MenuItem;\n editMode?: boolean;\n onToggle: () => void;\n}\n\nexport const AllPagesListItem: React.FC<AllPagesListItemProps> = (props) => {\n const {item, editMode, onToggle} = props;\n const onPinButtonClick = useCallback(\n (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n e.stopPropagation();\n e.preventDefault();\n onToggle();\n },\n [onToggle],\n );\n\n const onItemClick = (e: MouseEvent<HTMLDivElement>) => {\n if (editMode) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n return (\n <div className={b()} onClick={onItemClick}>\n {item.icon ? (\n <Icon className={b('icon')} data={item.icon} size={item.iconSize} />\n ) : null}\n <span className={b('text')}>{item.title}</span>\n {editMode && (\n <Button\n onClick={onPinButtonClick}\n view={item.hidden ? 'flat-secondary' : 'flat-action'}\n >\n <Button.Icon>{item.hidden ? <Pin /> : <PinFill />}</Button.Icon>\n </Button>\n )}\n </div>\n );\n};\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\n\nimport {Button, Icon, List, ListItemData, Text, Flex} from '@gravity-ui/uikit';\nimport {Gear} from '@gravity-ui/icons';\n\nimport {block} from '../utils/cn';\n\nimport {useGroupedMenuItems} from './useGroupedMenuItems';\nimport {AllPagesListItem} from './AllPagesListItem';\nimport './AllPagesPanel.scss';\n\nimport i18n from './i18n';\nimport {MenuItem} from '../types';\nimport {useAsideHeaderInnerContext} from '../AsideHeader/AsideHeaderContext';\nimport {ALL_PAGES_ID} from './constants';\n\nconst b = block('all-pages-panel');\n\ninterface AllPagesPanelProps {\n className?: string;\n startEditIcon?: React.ReactNode;\n onEditModeChanged?: (isEditMode: boolean) => void;\n}\n\nexport const AllPagesPanel: React.FC<AllPagesPanelProps> = (props) => {\n const {startEditIcon, onEditModeChanged, className} = props;\n const {menuItems, onMenuItemsChanged} = useAsideHeaderInnerContext();\n const menuItemsRef = useRef(menuItems);\n menuItemsRef.current = menuItems;\n\n const [isEditMode, setIsEditMode] = useState(false);\n const toggleEditMode = useCallback(() => {\n setIsEditMode((prev) => !prev);\n }, []);\n\n const groupedItems = useGroupedMenuItems(menuItems);\n\n useEffect(() => {\n onEditModeChanged?.(isEditMode);\n }, [isEditMode, onEditModeChanged]);\n\n const onItemClick = useCallback((item: ListItemData<MenuItem>) => {\n //@ts-ignore TODO fix when @gravity-ui/uikit/List will provide event arg on item click\n item.onItemClick?.(item, false);\n }, []);\n\n const togglePageVisibility = useCallback(\n (item: MenuItem) => {\n if (!onMenuItemsChanged) {\n return;\n }\n const changedItem: MenuItem = {...item, hidden: !item.hidden};\n\n const originItems = menuItemsRef.current.filter(\n (menuItem) => menuItem.id !== ALL_PAGES_ID,\n );\n onMenuItemsChanged(\n originItems.map((menuItem) => {\n if (menuItem.id !== changedItem.id) {\n return menuItem;\n }\n return changedItem;\n }),\n );\n },\n [onMenuItemsChanged],\n );\n\n const itemRender = useCallback(\n (item: ListItemData<MenuItem>, _isActive: boolean, _itemIndex: number) => (\n <AllPagesListItem\n item={item}\n editMode={isEditMode}\n onToggle={() => togglePageVisibility(item)}\n />\n ),\n [isEditMode, togglePageVisibility],\n );\n\n const onResetToDefaultClick = useCallback(() => {\n if (!onMenuItemsChanged) {\n return;\n }\n const originItems = menuItemsRef.current.filter((item) => item.id !== ALL_PAGES_ID);\n onMenuItemsChanged(\n originItems.map((item) => ({\n ...item,\n hidden: false,\n })),\n );\n }, [onMenuItemsChanged]);\n return (\n <Flex className={b(null, className)} gap=\"5\" direction=\"column\">\n <Flex gap=\"4\" alignItems=\"center\" justifyContent=\"space-between\">\n <Text variant=\"subheader-2\">\n {isEditMode ? i18n('all-panel.title.editing') : i18n('all-panel.title.main')}\n </Text>\n <Button selected={isEditMode} view=\"normal\" onClick={toggleEditMode}>\n {startEditIcon ? startEditIcon : <Icon data={Gear} />}\n </Button>\n </Flex>\n <Flex className={b('content')} gap=\"5\" direction=\"column\">\n {Object.keys(groupedItems).map((category) => {\n return (\n <Flex key={category} direction=\"column\" gap=\"3\">\n <Text className={b('category')} variant=\"body-1\" color=\"secondary\">\n {category}\n </Text>\n <List\n virtualized={false}\n filterable={false}\n items={groupedItems[category]}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n </Flex>\n );\n })}\n </Flex>\n {isEditMode && (\n <Button onClick={onResetToDefaultClick}>{i18n('all-panel.resetToDefault')}</Button>\n )}\n </Flex>\n );\n};\n","import {useMemo} from 'react';\n\nimport {MenuItem} from '../types';\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\n\nexport const useGroupedMenuItems = (items: MenuItem[]) => {\n const allPagesMenuItems = useMemo(() => {\n const filteredItems = items.filter(\n (item) => item.type !== 'divider' && item.id !== ALL_PAGES_ID,\n );\n filteredItems.sort((a, b) => {\n if (a.type === 'action') {\n return 1;\n }\n if (b.type === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = filteredItems.reduce((acc, item) => {\n const category = item.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(item);\n return acc;\n }, {} as {[key: string]: MenuItem[]});\n return groupedItems;\n }, [items]);\n\n return allPagesMenuItems;\n};\n","import {registerKeyset} from '../../utils/registerKeyset';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'AsideHeader';\nexport default registerKeyset({en, ru}, COMPONENT);\n","import React from 'react';\nimport {block} from '../utils/cn';\nimport {LogoProps} from '../types';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderContext} from '../AsideHeader/AsideHeaderContext';\n\nimport './Logo.scss';\n\nconst b = block('logo');\n\nexport const Logo: React.FC<LogoProps> = ({\n text,\n icon,\n iconSrc,\n iconClassName,\n iconSize = 24,\n textSize = 15,\n href,\n wrapper,\n onClick,\n}) => {\n const {compact} = useAsideHeaderContext();\n const hasWrapper = typeof wrapper === 'function';\n\n let buttonIcon;\n\n if (iconSrc) {\n buttonIcon = (\n <Button.Icon className={iconClassName}>\n <img alt=\"logo icon\" src={iconSrc} width={iconSize} height={iconSize} />\n </Button.Icon>\n );\n } else if (icon) {\n buttonIcon = <Icon data={icon} size={iconSize} className={iconClassName} />;\n }\n\n const button = (\n <Button\n view=\"flat\"\n size=\"l\"\n className={b('btn-logo')}\n component={hasWrapper ? 'span' : undefined}\n onClick={onClick}\n target=\"_self\"\n href={href}\n >\n {buttonIcon}\n </Button>\n );\n\n let logo: React.ReactNode;\n\n if (typeof text === 'function') {\n logo = text();\n } else {\n logo = (\n <div className={b('logo')} style={{fontSize: textSize}}>\n {text}\n </div>\n );\n }\n\n return (\n <div className={b()}>\n <div className={b('logo-btn-place')}>\n {hasWrapper ? wrapper(button, Boolean(compact)) : button}\n </div>\n {!compact &&\n (hasWrapper ? (\n <div onClick={onClick}>{wrapper(logo, Boolean(compact))}</div>\n ) : (\n <a\n href={href ?? '/'}\n target=\"_self\"\n className={b('logo-link')}\n onClick={onClick}\n >\n {logo}\n </a>\n ))}\n </div>\n );\n};\n","import React, {useCallback} from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {SubheaderMenuItem} from '../../types';\nimport {ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT} from '../../constants';\nimport {Logo} from '../../Logo/Logo';\nimport {CompositeBar} from '../../CompositeBar/CompositeBar';\n\nimport headerDividerCollapsedIcon from '../../../../assets/icons/divider-collapsed.svg';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {b} from '../utils';\n\nconst DEFAULT_SUBHEADER_ITEMS: SubheaderMenuItem[] = [];\n\nexport const Header = () => {\n const {logo, onItemClick, onClosePanel, headerDecoration, subheaderItems} =\n useAsideHeaderInnerContext();\n const {onClick: onLogoClickProp} = logo;\n const onLogoClick = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onClosePanel?.();\n onLogoClickProp?.(event);\n },\n [onClosePanel, onLogoClickProp],\n );\n\n return (\n <div className={b('header', {['with-decoration']: headerDecoration})}>\n <Logo {...logo} onClick={onLogoClick} />\n\n <CompositeBar\n type=\"subheader\"\n items={subheaderItems || DEFAULT_SUBHEADER_ITEMS}\n onItemClick={onItemClick}\n />\n\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={ASIDE_HEADER_COMPACT_WIDTH}\n height={HEADER_DIVIDER_HEIGHT}\n />\n </div>\n );\n};\n","<svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45Z\"/></svg>\n","import React, {useCallback} from 'react';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {fakeDisplayName} from '../../helpers';\nimport i18n from '../i18n';\n\nimport {b} from '../utils';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\n\nimport controlMenuButtonIcon from '../../../../assets/icons/control-menu-button.svg';\n\n// TODO: remove temporary fix for expand button\nconst NotIcon = fakeDisplayName('NotIcon', Icon);\n\nexport const CollapseButton = () => {\n const {onChangeCompact, compact, expandTitle, collapseTitle} = useAsideHeaderInnerContext();\n\n const onCollapseButtonClick = useCallback(() => {\n onChangeCompact?.(!compact);\n }, [compact, onChangeCompact]);\n\n const buttonTitle = compact\n ? expandTitle || i18n('button_expand')\n : collapseTitle || i18n('button_collapse');\n return (\n <Button\n className={b('collapse-button', {compact})}\n view=\"flat\"\n onClick={onCollapseButtonClick}\n title={buttonTitle}\n >\n <NotIcon\n data={controlMenuButtonIcon}\n className={b('collapse-icon')}\n width=\"16\"\n height=\"10\"\n />\n </Button>\n );\n};\n","import React from 'react';\n\nexport function fakeDisplayName<T extends {}>(newDisplayName: string, Component: React.FC<T>) {\n const Fake = (props: T) => <Component {...props} />;\n Fake.displayName = newDisplayName;\n return Fake;\n}\n","import React from 'react';\n\nimport {Drawer, DrawerItem} from '../../Drawer/Drawer';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {b} from '../utils';\n\nexport const Panels = () => {\n const {panelItems, onClosePanel, size} = useAsideHeaderInnerContext();\n\n return panelItems ? (\n <Drawer\n className={b('panels')}\n onVeilClick={onClosePanel}\n onEscape={onClosePanel}\n style={{left: size}}\n >\n {panelItems.map((item) => (\n <DrawerItem key={item.id} {...item} />\n ))}\n </Drawer>\n ) : null;\n};\n","import React, {useRef} from 'react';\n\nimport {setRef} from '@gravity-ui/uikit';\nimport {CompositeBar} from '../../CompositeBar/CompositeBar';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {b} from '../utils';\nimport {useVisibleMenuItems} from '../../AllPagesPanel';\n\nimport i18n from '../i18n';\nimport {Header} from './Header';\nimport {CollapseButton} from './CollapseButton';\nimport {Panels} from './Panels';\n\nexport const FirstPanel = React.forwardRef<HTMLDivElement>((_props, ref) => {\n const {\n size,\n onItemClick,\n headerDecoration,\n multipleTooltip,\n menuMoreTitle,\n renderFooter,\n compact,\n customBackground,\n customBackgroundClassName,\n } = useAsideHeaderInnerContext();\n const visibleMenuItems = useVisibleMenuItems();\n\n const asideRef = useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n setRef<HTMLDivElement>(ref, asideRef.current);\n }, [ref]);\n\n return (\n <>\n <div className={b('aside')} style={{width: size}}>\n <div className={b('aside-popup-anchor')} ref={asideRef} />\n\n <div className={b('aside-content', {['with-decoration']: headerDecoration})}>\n {customBackground && (\n <div className={b('aside-custom-background', customBackgroundClassName)}>\n {customBackground}\n </div>\n )}\n <Header />\n {visibleMenuItems?.length ? (\n <CompositeBar\n type=\"menu\"\n items={visibleMenuItems}\n menuMoreTitle={menuMoreTitle ?? i18n('label_more')}\n onItemClick={onItemClick}\n multipleTooltip={multipleTooltip}\n />\n ) : (\n <div className={b('menu-items')} />\n )}\n <div className={b('footer')}>\n {renderFooter?.({\n size,\n compact: Boolean(compact),\n asideRef,\n })}\n </div>\n <CollapseButton />\n </div>\n </div>\n <Panels />\n </>\n );\n});\n","import {useMemo} from 'react';\nimport {useAsideHeaderInnerContext} from '../AsideHeader/AsideHeaderContext';\nimport {MenuItem} from '../types';\n\nexport const useVisibleMenuItems = (): MenuItem[] => {\n const {menuItems, allPagesIsAvailable} = useAsideHeaderInnerContext();\n return useMemo(() => {\n if (!allPagesIsAvailable) {\n return menuItems;\n }\n let lastVisibleIndex = 0;\n return menuItems.filter((item: MenuItem, index: number, items: MenuItem[]): boolean => {\n if (item.hidden) {\n return false;\n }\n\n if (\n index > 0 &&\n item.type === 'divider' &&\n (items[lastVisibleIndex].type === 'divider' || items[lastVisibleIndex].hidden)\n ) {\n return false;\n }\n lastVisibleIndex = index;\n return true;\n });\n }, [allPagesIsAvailable, menuItems]);\n};\n","import {RenderContentType} from '../Content';\nimport {DrawerItemProps} from '../Drawer/Drawer';\nimport {\n LogoProps,\n MenuItem,\n SubheaderMenuItem,\n OpenModalSubscriber,\n AsideHeaderTopAlertProps,\n} from '../types';\nimport {AsideHeaderContextType} from './AsideHeaderContext';\n\nexport interface LayoutProps {\n compact: boolean;\n className?: string;\n topAlert?: AsideHeaderTopAlertProps;\n}\n\nexport interface AsideHeaderGeneralProps {\n logo: LogoProps;\n multipleTooltip?: boolean;\n className?: string;\n collapseTitle?: string;\n expandTitle?: string;\n menuMoreTitle?: string;\n topAlert?: AsideHeaderTopAlertProps;\n customBackground?: React.ReactNode;\n customBackgroundClassName?: string;\n renderContent?: RenderContentType;\n renderFooter?: (data: {\n size: number;\n compact: boolean;\n asideRef: React.RefObject<HTMLDivElement>;\n }) => React.ReactNode;\n onClosePanel?: () => void;\n onChangeCompact?: (compact: boolean) => void;\n openModalSubscriber?: (subscriber: OpenModalSubscriber) => void;\n}\n\nexport interface AsideHeaderDefaultProps {\n panelItems?: DrawerItemProps[];\n subheaderItems?: SubheaderMenuItem[];\n menuItems?: MenuItem[];\n onMenuItemsChanged?: (items: MenuItem[]) => void;\n headerDecoration?: boolean;\n}\n\nexport type AsideHeaderInnerProps = AsideHeaderGeneralProps &\n AsideHeaderDefaultProps &\n AsideHeaderContextType;\n\nexport interface AsideHeaderProps\n extends AsideHeaderGeneralProps,\n LayoutProps,\n Partial<AsideHeaderDefaultProps> {}\n\nexport enum InnerPanels {\n AllPages = 'all-pages',\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {AsideHeaderInnerContextType} from './AsideHeaderContext';\nimport {AsideHeaderProps, InnerPanels} from './types';\nimport {MenuItem} from '../types';\nimport {getAllPagesMenuItem, AllPagesPanel} from '../AllPagesPanel';\n\nconst EMPTY_MENU_ITEMS: MenuItem[] = [];\n\nexport const useAsideHeaderInnerContextValue = (\n props: AsideHeaderProps & {size: number},\n): AsideHeaderInnerContextType => {\n const {size, onClosePanel, menuItems, panelItems, onMenuItemsChanged} = props;\n const [innerVisiblePanel, setInnerVisiblePanel] = useState<InnerPanels | undefined>();\n const ALL_PAGES_MENU_ITEM = React.useMemo(() => {\n return getAllPagesMenuItem();\n }, []);\n\n const allPagesIsAvailable =\n Boolean(onMenuItemsChanged) && (!menuItems || menuItems?.length > 0);\n\n useEffect(() => {\n // If any user panel became visible we need to switch off all inner panels\n if (panelItems?.some((x) => x.visible)) {\n setInnerVisiblePanel(undefined);\n }\n }, [panelItems]);\n\n const innerOnClosePanel = useCallback(() => {\n setInnerVisiblePanel(undefined);\n onClosePanel?.();\n }, [onClosePanel]);\n\n const onItemClick = useCallback(\n (\n item: MenuItem,\n collapsed: boolean,\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (item.id === ALL_PAGES_MENU_ITEM.id) {\n setInnerVisiblePanel((prev) =>\n prev === InnerPanels.AllPages ? undefined : InnerPanels.AllPages,\n );\n } else {\n innerOnClosePanel();\n }\n item.onItemClick?.(item, collapsed, event);\n },\n [innerOnClosePanel, ALL_PAGES_MENU_ITEM],\n );\n\n const innerMenuItems = useMemo(\n () =>\n allPagesIsAvailable\n ? [\n ...(menuItems || EMPTY_MENU_ITEMS),\n {\n ...ALL_PAGES_MENU_ITEM,\n current: innerVisiblePanel === InnerPanels.AllPages,\n },\n ]\n : menuItems || EMPTY_MENU_ITEMS,\n [allPagesIsAvailable, menuItems, innerVisiblePanel, ALL_PAGES_MENU_ITEM],\n );\n\n const innerPanelItems = useMemo(() => {\n if (!allPagesIsAvailable) {\n return panelItems;\n }\n return [\n ...(panelItems || []),\n {\n id: InnerPanels.AllPages,\n content: <AllPagesPanel />,\n visible: innerVisiblePanel === InnerPanels.AllPages,\n },\n ];\n }, [allPagesIsAvailable, panelItems, innerVisiblePanel]);\n\n return {\n ...props,\n onClosePanel: innerOnClosePanel,\n allPagesIsAvailable,\n menuItems: innerMenuItems,\n panelItems: innerPanelItems,\n size,\n onItemClick,\n };\n};\n","import React from 'react';\nimport {FirstPanel} from '..';\nimport {useAsideHeaderInnerContextValue} from '../../useAsideHeaderInnerContextValue';\nimport {AsideHeaderInnerContextProvider, useAsideHeaderContext} from '../../AsideHeaderContext';\nimport {AsideHeaderProps} from '../../types';\n\ntype Props = Omit<AsideHeaderProps, 'compact' | 'size'>;\n\nexport const PageLayoutAside = React.forwardRef<HTMLDivElement, Props>((props, ref) => {\n const {size, compact} = useAsideHeaderContext();\n\n const asideHeaderInnerContextValue = useAsideHeaderInnerContextValue({size, compact, ...props});\n\n return (\n <AsideHeaderInnerContextProvider value={asideHeaderInnerContextValue}>\n <FirstPanel ref={ref} />\n </AsideHeaderInnerContextProvider>\n );\n});\n","import React from 'react';\nimport {block} from '../utils/cn';\n\nimport {Item, ItemProps} from '../CompositeBar/Item/Item';\nimport {ASIDE_HEADER_ICON_SIZE} from '../constants';\n\nimport './FooterItem.scss';\n\nconst b = block('footer-item');\n\nexport interface FooterItemProps extends Omit<ItemProps, 'onItemClick' | 'onItemClickCapture'> {\n compact: boolean;\n}\n\nexport const FooterItem: React.FC<FooterItemProps> = ({item, ...props}) => {\n return (\n <Item\n {...props}\n item={{iconSize: ASIDE_HEADER_ICON_SIZE, ...item}}\n className={b({compact: props.compact})}\n onItemClick={item.onItemClick}\n onItemClickCapture={item.onItemClickCapture}\n />\n );\n};\n","const SvgAppLogo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 34 34\" {...props}><rect width={32} height={32} x={1} y={1} fill=\"#FFB23E\" rx={4} /><rect width={33} height={33} x={0.5} y={0.5} stroke=\"#fff\" strokeOpacity={0.1} rx={4.5} /><path fill=\"#000\" fillRule=\"evenodd\" d=\"M13.344 12.395c2.08-2.926 5.396-4.56 6.967-4.246 1.008.202.397 1.294-.33 2.53-.19.322-.377.619-.544.886-.474.757-.798 1.273-.633 1.44 2.613-2.513 4.292-2.793 5.692-2.793 1.386 0 .734 1 .021 2.092l-.021.033c-.103.158-.21.315-.313.466-.4.589-.742 1.09-.589 1.257 1.507-1.073 3.066-1.332 3.799-1.18.733.151.948.47-.063 2.034l-.967 1.451.045.072c.343.551.866 1.393.866 2.733 0 2.26-1.45 4.509-2.595 5.879-.467.559-1.174.84-1.902.84-.815 0-1.367-.754-1.703-1.496-.64-1.408-2.665-1.133-4.295.752-.381.44-.914.744-1.497.744-.925 0-1.831-.362-2.317-1.15-.467-.758-.834-1.58-.956-2.012-.859 1.326-3.21 2.055-4.891.92-1.996-1.347-1.983-3.64-1.12-5.039l1.754.997c-.258 1.017.124 1.718.858 1.718 1.06 0 1.476-1.286 2.07-3.124.539-1.663 1.224-3.779 2.664-5.804Zm1.285 7.304c.584-1.322.584-2.603 0-2.862-.585-.259-1.533.603-2.118 1.925-.146.33-.255.657-.328.966h2.433l.013-.029Zm4.308-2.862c.585.259.585 1.54 0 2.862l-.013.029h-2.433a5.57 5.57 0 0 1 .329-.966c.584-1.322 1.532-2.184 2.117-1.925Z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgAppLogo;","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport {FooterItem, PageLayoutAside} from '@gravity-ui/navigation';\n\nimport Logo from '../../../../img/svg/appLogo.svg';\nimport GearIcon from '@gravity-ui/icons/svgs/gear.svg';\nimport Link from '../../components/Link/Link';\nimport unknown from '../../../../img/user-avatar.svg';\nimport {AppNavigationProps} from './AppNavigationPageLayout';\n\nimport './AppNavigationComponent.scss';\nimport {Menu} from '@gravity-ui/uikit';\nimport {useHistory} from 'react-router';\n\nconst block = cn('yt-app-navigation');\n\nfunction AppNavigationComponent({\n logoClassName,\n menuItems,\n currentUser,\n authWay,\n\n panelContent,\n panelVisible,\n panelClassName,\n onClosePanel,\n\n settingsVisible,\n settingsContent,\n toggleSettingsVisible,\n\n onChangeCompact,\n}: Omit<AppNavigationProps, 'compact' | 'rememberSize' | 'className'>) {\n const panelItems = React.useMemo(() => {\n return [\n {\n id: 'panel',\n content: panelContent,\n visible: panelVisible,\n className: panelClassName,\n },\n {\n id: 'settings',\n content: settingsContent,\n visible: settingsVisible,\n },\n ];\n }, [panelVisible, panelContent, settingsVisible, settingsContent]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const history = useHistory();\n\n return (\n <PageLayoutAside\n multipleTooltip\n panelItems={panelItems}\n onClosePanel={onClosePanel}\n menuItems={menuItems}\n headerDecoration\n logo={{\n text: () => 'YTsaurus',\n textSize: 22,\n icon: Logo,\n iconSize: 36,\n iconClassName: logoClassName,\n wrapper: (node) => {\n return (\n <Link url={'/'} theme={'primary'} target=\"_blank\">\n {node}\n </Link>\n );\n },\n }}\n onChangeCompact={onChangeCompact}\n renderFooter={({compact}) => {\n return (\n <>\n <FooterItem\n compact={compact}\n item={{\n id: 'settings',\n title: 'Settings',\n onItemClick: toggleSettingsVisible,\n icon: GearIcon,\n }}\n />\n <FooterItem\n compact={compact}\n item={{\n id: 'user',\n title: currentUser,\n onItemClick: () => {\n setPopupVisible(!popupVisible);\n },\n itemWrapper: ({title}: any, makeItem: any) => {\n return makeItem({\n title,\n icon: (\n <img\n className={block('user-icon')}\n width={40}\n height={40}\n src={unknown}\n />\n ),\n });\n },\n }}\n enableTooltip={!popupVisible}\n popupVisible={popupVisible}\n onClosePopup={() => setPopupVisible(false)}\n renderPopupContent={() => {\n return (\n <div className={block('settings-ul')}>\n <Menu>\n {authWay === 'passwd' && (\n <Menu.Item\n onClick={() => history.push('/change-password')}\n >\n Change password\n </Menu.Item>\n )}\n <Menu.Item href={'/api/yt/logout'}>Logout</Menu.Item>\n </Menu>\n </div>\n );\n }}\n />\n </>\n );\n }}\n />\n );\n}\n\nexport default React.memo(AppNavigationComponent);\n","const SvgGear = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#gear_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.199.199 0 0 1 .271.073l.802 1.388a.199.199 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.199.199 0 0 1 .073.271l-.802 1.388a.199.199 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.199.199 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.199.199 0 0 1-.272-.073l-.8-1.388a.199.199 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.199.199 0 0 1-.073-.271l.801-1.388a.199.199 0 0 1 .272-.073C5.042 5.138 7 4.007 7 2.2c0-.11.089-.199.199-.199ZM5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.699 1.699 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.699 1.699 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.698 1.698 0 0 1-2.32-.622l-.802-1.388a1.699 1.699 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.699 1.699 0 0 1-.622-2.321l.801-1.388a1.699 1.699 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2Zm4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"gear_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgGear;"],"names":["COLLAPSE_ITEM_ID","POPUP_PLACEMENT","getItemHeight","item","isMenuItem","I","type","getItemsHeight","items","reduce","sum","getSelectedItemIndex","index","findIndex","current","Boolean","undefined","id","b","HighlightedItem","iconRef","iconNode","onClick","onClickCapture","openModalSubscriber","top","left","width","height","setPosition","useState","isModalOpen","setIsModalOpen","handleResizeDebounced","useMemo","debounceFn","getBoundingClientRect","window","scrollY","scrollX","leading","handleResize","useCallback","useEffect","addEventListener","removeEventListener","open","React","Portal","className","style","displayName","renderItemTitle","titleNode","title","rightAdornment","defaultPopupPlacement","defaultPopupOffset","Item","props","collapseItems","onMouseLeave","onMouseEnter","enableTooltip","popupVisible","popupAnchor","popupPlacement","popupOffset","popupKeepMounted","renderPopupContent","onClosePopup","onItemClick","onItemClickCapture","bringForward","compact","toggleOpen","ref","anchorRef","highlightedRef","tooltipText","icon","iconSize","A","collapsedItem","modifiers","name","enabled","options","phase","fn","onClose","event","MouseEvent","target","contains","makeIconNode","iconEl","Tooltip","content","disabled","placement","makeNode","titleEl","createdNode","Popup","contentClassName","keepMounted","offset","link","href","Icon","data","size","params","node","highlightedNode","opts","collapsed","itemWrapper","length","CollapsedPopup","List","itemClassName","selectedItemIndex","itemHeight","itemsHeight","virtualized","filterable","sortable","renderItem","collapseItem","makeCollapseNode","res","Object","assign","xmlns","fill","viewBox","fillRule","d","clipRule","clipPath","_extends","bind","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","replaceClassName","origClass","classToRemove","replace","RegExp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","require$$2","forceReflow","scrollTop","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","context","_this","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","state","status","nextCallback","getDerivedStateFromProps","_ref","prevState","_proto","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","mounting","nodeRef","performEnter","performExit","setState","_this2","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","_this3","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","_this4","active","handler","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","setTimeout","render","_this$props","children","childProps","TransitionGroupContext","Provider","value","only","noop","contextType","propTypes","defaultProps","removeClass","classes","split","forEach","c","classList","remove","setAttribute","baseVal","CSSTransition","_len","args","Array","_key","concat","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","add","hasClass","_addClass","_this$appliedClasses$","base","done","getChildMapping","mapFn","result","Children","map","child","isValidElement","mapper","getProp","prop","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","_leaveRenders","_enterRenders","values","obj","k","TransitionGroup","handleExited","self","ReferenceError","_assertThisInitialized","contextValue","firstRender","mounted","currentChildMapping","Component","component","childFactory","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","idx","originalArgs","_child$props","toArray","inProp","_React$Children$toArr","first","second","modes","callHook","cb","_element$props","leaveRenders","changeState","enterRenders","_ref4","SwitchTransition","appeared","mode","oldChildren","newChildren","_this$state","DrawerItem","visible","direction","itemRef","cssDirection","Drawer","onVeilClick","onEscape","preventScrollBody","someItemVisible","childElem","onKeyDown","useBodyScrollLock","containerRef","veilRef","childrenVisible","childVisible","windowObject","g","cancelFrame","requestFrame","clearTimeoutFn","clearTimeout","setTimeoutFn","cancelAnimationFrameFn","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","animationFrameID","timeoutID","AutoSizer","super","defaultHeight","scaledHeight","scaledWidth","defaultWidth","_autoSizer","_detectElementResize","_parentNode","_resizeObserver","_timeoutId","_onResize","disableHeight","disableWidth","onResize","_style$paddingLeft","_style$paddingRight","_style$paddingTop","_style$paddingBottom","getComputedStyle","paddingLeft","parseFloat","paddingRight","paddingTop","paddingBottom","rect","offsetHeight","offsetWidth","_setRef","autoSizer","nonce","parentNode","ownerDocument","defaultView","HTMLElement","ResizeObserver","observe","animationKeyframes","animationName","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","attachEvent","document","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","scrollHeight","__resizeLast__","e","__resizeRAF__","__resizeListeners__","animation","keyframeprefix","domPrefixes","startEvents","pfx","elm","createElement","toLowerCase","addResizeListener","doc","elementStyle","position","getElementById","css","head","getElementsByTagName","styleSheet","cssText","appendChild","createTextNode","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","detachEvent","splice","removeChild","createDetectElementResize","disconnect","tagName","rest","outerStyle","overflow","childParams","bailoutOnChildren","multipleTooltipContextDefaults","activeIndex","hideCollapseItemTooltip","lastClickedItemIndex","setValue","MultipleTooltipContext","MultipleTooltipProvider","POPUP_OFFSET","POPUP_MODIFIERS","MultipleTooltip","activeItem","disableLayer","filter","divider","CompositeBarView","multipleTooltip","useRef","tooltipRef","setMultipleTooltipContextValue","multipleTooltipActive","useContext","handleBlurWindow","onTooltipMouseEnter","hasFocus","clientX","onTooltipMouseLeave","onMouseEnterByIndex","itemIndex","multipleTooltipActiveValue","activateItem","onItemClickByIndex","_isItemActive","itemExtraProps","CompositeBar","menuMoreTitle","minHeight","pinnedItems","pinned","getPinnedItems","afterMoreButtonItems","afterMoreButton","getItemsMinHeight","Ellipsis","getMoreButtonItem","autosizer","listItems","regularItems","allItemsHeight","collapseItemHeight","listHeight","unshift","getAutosizeListItems","subheader","r","ru","ALL_PAGES_ID","AllPagesListItem","editMode","onToggle","onPinButtonClick","stopPropagation","preventDefault","Button","view","hidden","AllPagesPanel","startEditIcon","onEditModeChanged","menuItems","onMenuItemsChanged","menuItemsRef","isEditMode","setIsEditMode","toggleEditMode","groupedItems","allPagesMenuItems","filteredItems","sort","a","acc","category","i18n","useGroupedMenuItems","togglePageVisibility","changedItem","originItems","menuItem","itemRender","_isActive","_itemIndex","onResetToDefaultClick","Flex","gap","alignItems","justifyContent","Text","variant","selected","color","en","Logo","text","iconSrc","iconClassName","textSize","wrapper","hasWrapper","buttonIcon","alt","src","button","logo","fontSize","DEFAULT_SUBHEADER_ITEMS","Header","onClosePanel","headerDecoration","subheaderItems","onLogoClickProp","onLogoClick","h","H","NotIcon","newDisplayName","Fake","fakeDisplayName","CollapseButton","onChangeCompact","expandTitle","collapseTitle","onCollapseButtonClick","buttonTitle","controlMenuButtonIcon","Panels","panelItems","FirstPanel","_props","renderFooter","customBackground","customBackgroundClassName","visibleMenuItems","allPagesIsAvailable","lastVisibleIndex","useVisibleMenuItems","asideRef","setRef","InnerPanels","EMPTY_MENU_ITEMS","PageLayoutAside","asideHeaderInnerContextValue","innerVisiblePanel","setInnerVisiblePanel","ALL_PAGES_MENU_ITEM","some","x","innerOnClosePanel","AllPages","innerMenuItems","innerPanelItems","useAsideHeaderInnerContextValue","FooterItem","_jsxs","_objectSpread","_jsx","y","rx","stroke","strokeOpacity","block","cn","AppNavigationComponent","logoClassName","currentUser","authWay","panelContent","panelVisible","panelClassName","settingsVisible","settingsContent","toggleSettingsVisible","_useState","_useState2","_slicedToArray","setPopupVisible","history","useHistory","Link","url","theme","_Fragment","GearIcon","makeItem","unknown","Menu"],"sourceRoot":""}