@kizmann/nano-ui 0.9.10 → 1.0.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 (270) hide show
  1. package/.github/workflows/compile-deploy-publish.yml +65 -0
  2. package/README.md +1 -1
  3. package/assets/nano-ui-dark.svg +19 -0
  4. package/assets/nano-ui-light.svg +19 -0
  5. package/assets/pico-js-dark.svg +19 -0
  6. package/assets/pico-js-light.svg +19 -0
  7. package/demos/form.html +462 -0
  8. package/demos/overview.html +97 -45
  9. package/docs/_sidebar.md +11 -10
  10. package/docs/files/form/button.md +10 -1
  11. package/docs/files/form/switch.md +6 -0
  12. package/docs/files/others/config.md +261 -8
  13. package/docs/files/others/drawer.md +32 -0
  14. package/docs/files/others/map.md +32 -0
  15. package/docs/index.template.html +76 -0
  16. package/docs/src/js/backup.js +128 -0
  17. package/docs/src/js/helper/item-helper.js +0 -0
  18. package/docs/src/js/index.js +21 -0
  19. package/docs/src/js/plugin/title-plugin.js +0 -0
  20. package/docs/src/js/plugin/vue-demo-plugin.js +97 -0
  21. package/docs/src/js/theme/basic.js +31 -0
  22. package/docs/src/js/theme/docsify.js +11 -0
  23. package/docs/src/scss/index-dark.scss +3 -0
  24. package/docs/src/scss/index-light.scss +3 -0
  25. package/docs/src/scss/index.scss +10 -443
  26. package/docs/src/scss/mixins/grid.scss +12 -11
  27. package/docs/src/scss/mixins/media.scss +2 -1
  28. package/docs/src/scss/root/vars-dark.scss +15 -0
  29. package/docs/src/scss/root/vars-light.scss +15 -0
  30. package/docs/src/scss/root/vars.scss +110 -0
  31. package/docs/src/scss/theme/default.scss +123 -0
  32. package/docs/src/scss/theme/header.scss +147 -0
  33. package/docs/src/scss/theme/layout.scss +186 -0
  34. package/docs/src/scss/theme/loader.scss +63 -0
  35. package/docs/src/scss/theme/markdown.scss +79 -0
  36. package/docs/src/scss/theme/navigation.scss +58 -0
  37. package/docs/src/scss/theme/progress.scss +9 -0
  38. package/docs/src/scss/theme/search.scss +119 -0
  39. package/docs/src/scss/{docsify → theme}/syntax.scss +18 -15
  40. package/docs/src/scss/theme/table.scss +63 -0
  41. package/favicon/apple-touch-icon.png +0 -0
  42. package/favicon/favicon-96x96.png +0 -0
  43. package/favicon/favicon.ico +0 -0
  44. package/favicon/favicon.svg +3 -0
  45. package/favicon/site.webmanifest +21 -0
  46. package/favicon/web-app-manifest-192x192.png +0 -0
  47. package/favicon/web-app-manifest-512x512.png +0 -0
  48. package/package.json +19 -12
  49. package/postcss.config.js +1 -1
  50. package/src/alert/src/alert/alert.scss +5 -4
  51. package/src/button/src/button/button.scss +5 -5
  52. package/src/button/src/button-group/button-group.scss +5 -4
  53. package/src/cascader/src/cascader/cascader.scss +5 -4
  54. package/src/cascader/src/cascader-panel/cascader-panel.scss +5 -4
  55. package/src/checkbox/src/checkbox/checkbox.scss +5 -4
  56. package/src/checkbox/src/checkbox-group/checkbox-group.scss +5 -4
  57. package/src/collapse/src/collapse/collapse.scss +5 -4
  58. package/src/collapse/src/collapse-item/collapse-item.scss +5 -4
  59. package/src/config/src/builder/builder.scss +17 -13
  60. package/src/config/src/reference-panel/reference-panel.scss +7 -4
  61. package/src/confirm/src/confirm/confirm.scss +5 -4
  62. package/src/datepicker/src/datepicker/datepicker.scss +5 -4
  63. package/src/datepicker/src/datepicker-panel/datepicker-panel.scss +5 -4
  64. package/src/datetimepicker/src/datetimepicker/datetimepicker.js +0 -4
  65. package/src/datetimepicker/src/datetimepicker/datetimepicker.scss +5 -4
  66. package/src/draggable/src/draggrid/draggrid.scss +5 -4
  67. package/src/draggable/src/draggrid-item/draggrid-item.scss +5 -4
  68. package/src/draggable/src/draglist/draglist.scss +5 -4
  69. package/src/draggable/src/draglist-item/draglist-item.scss +5 -4
  70. package/src/draggable/src/dropzone/dropzone.scss +5 -4
  71. package/src/drawer/index.js +5 -0
  72. package/src/drawer/index.scss +1 -0
  73. package/src/drawer/src/drawer/drawer.js +431 -0
  74. package/src/drawer/src/drawer/drawer.scss +136 -0
  75. package/src/durationpicker/src/durationpicker/durationpicker.scss +5 -4
  76. package/src/empty/src/empty-icon/empty-icon.scss +5 -4
  77. package/src/form/index.js +6 -0
  78. package/src/form/index.scss +2 -0
  79. package/src/form/src/form/form.js +11 -1
  80. package/src/form/src/form-frame/form-frame.js +42 -0
  81. package/src/form/src/form-frame/form-frame.scss +28 -0
  82. package/src/form/src/form-frame-item/form-frame-item.js +114 -0
  83. package/src/form/src/form-group/form-group.js +33 -1
  84. package/src/form/src/form-group/form-group.scss +5 -4
  85. package/src/form/src/form-item/form-item.scss +5 -4
  86. package/src/form/src/form-menu/form-menu.js +89 -0
  87. package/src/form/src/form-menu/form-menu.scss +9 -0
  88. package/src/index.js +1 -0
  89. package/src/index.scss +1 -0
  90. package/src/info/src/info/info.scss +5 -4
  91. package/src/info/src/info-column/info-column.scss +7 -4
  92. package/src/input/src/input/input.scss +5 -4
  93. package/src/input-number/src/input-number/input-number.scss +5 -4
  94. package/src/loader/src/loader/loader.scss +5 -4
  95. package/src/modal/src/modal/modal.scss +5 -4
  96. package/src/notification/src/notification/notification.scss +5 -4
  97. package/src/paginator/src/paginator/paginator.scss +5 -4
  98. package/src/popover/src/popover/popover.scss +5 -4
  99. package/src/radio/src/radio/radio.scss +5 -4
  100. package/src/radio/src/radio-group/radio-group.scss +5 -4
  101. package/src/rating/src/rating/rating.scss +5 -4
  102. package/src/root/vars.scss +84 -81
  103. package/src/select/src/select/select.scss +5 -4
  104. package/src/slider/src/slider/slider.scss +5 -4
  105. package/src/switch/src/switch/switch.scss +6 -4
  106. package/src/table/src/table/table.scss +15 -0
  107. package/src/table/src/table-cell/table-cell.scss +5 -4
  108. package/src/tabs/src/tabs/tabs.scss +5 -4
  109. package/src/tabs/src/tabs-item/tabs-item.scss +5 -4
  110. package/src/tags/src/tags-item/tags-item.scss +5 -4
  111. package/src/textarea/src/textarea/textarea.scss +5 -4
  112. package/src/timepicker/src/timepicker/timepicker.scss +5 -4
  113. package/src/timepicker/src/timepicker-panel/timepicker-panel.scss +5 -4
  114. package/src/transfer/src/transfer/transfer.scss +5 -4
  115. package/themes/macos/alert/src/alert/alert.scss +4 -3
  116. package/themes/macos/button/src/button/button.scss +8 -3
  117. package/themes/macos/cascader/src/cascader/cascader.scss +5 -4
  118. package/themes/macos/checkbox/src/checkbox/checkbox.scss +5 -4
  119. package/themes/macos/collapse/src/collapse/collapse.scss +4 -3
  120. package/themes/macos/collapse/src/collapse-item/collapse-item.scss +4 -3
  121. package/themes/macos/confirm/src/confirm/confirm.scss +4 -3
  122. package/themes/macos/datepicker/src/datepicker/datepicker.scss +5 -4
  123. package/themes/macos/datepicker/src/datepicker-panel/datepicker-panel.scss +4 -3
  124. package/themes/macos/datetimepicker/src/datetimepicker/datetimepicker.scss +14 -12
  125. package/themes/macos/draggable/src/draggrid/draggrid.scss +4 -3
  126. package/themes/macos/draggable/src/draggrid-item/draggrid-item.scss +4 -3
  127. package/themes/macos/draggable/src/draglist/draglist.scss +4 -3
  128. package/themes/macos/draggable/src/draglist-item/draglist-item.scss +6 -5
  129. package/themes/macos/draggable/src/dropzone/dropzone.scss +4 -3
  130. package/themes/macos/drawer/index.scss +1 -0
  131. package/themes/macos/drawer/src/drawer/drawer.scss +35 -0
  132. package/themes/macos/durationpicker/src/durationpicker/durationpicker.scss +5 -4
  133. package/themes/macos/file/src/file/file.scss +4 -3
  134. package/themes/macos/form/src/form-group/form-group.scss +4 -3
  135. package/themes/macos/index-dark.scss +1 -39
  136. package/themes/macos/index-light.scss +1 -39
  137. package/themes/macos/index.scss +1 -2
  138. package/themes/macos/input/src/input/input.scss +6 -5
  139. package/themes/macos/input-number/src/input-number/input-number.scss +6 -5
  140. package/themes/macos/loader/src/loader/loader.scss +4 -3
  141. package/themes/macos/modal/src/modal/modal.scss +6 -5
  142. package/themes/macos/notification/src/notification/notification.scss +4 -3
  143. package/themes/macos/popover/src/popover/popover.scss +9 -8
  144. package/themes/macos/radio/src/radio/radio.scss +5 -4
  145. package/themes/macos/rating/src/rating/rating.scss +4 -3
  146. package/themes/macos/root/vars-dark.scss +87 -74
  147. package/themes/macos/root/vars-light.scss +87 -74
  148. package/themes/macos/root/vars.scss +88 -74
  149. package/themes/macos/select/src/select/select.scss +5 -4
  150. package/themes/macos/switch/src/switch/switch.scss +6 -4
  151. package/themes/macos/table/src/table/table.scss +3 -3
  152. package/themes/macos/table/src/table-cell/table-cell.scss +5 -4
  153. package/themes/macos/tabs/src/tabs/tabs.scss +4 -3
  154. package/themes/macos/tabs/src/tabs-item/tabs-item.scss +4 -3
  155. package/themes/macos/tags/src/tags-item/tags-item.scss +6 -4
  156. package/themes/macos/textarea/src/textarea/textarea.scss +5 -4
  157. package/themes/macos/timepicker/src/timepicker/timepicker.scss +5 -4
  158. package/themes/macos/timepicker/src/timepicker-panel/timepicker-panel.scss +4 -3
  159. package/webpack.config.js +81 -13
  160. package/bun.lockb +0 -0
  161. package/dist/nano-ui.css +0 -2
  162. package/dist/nano-ui.js +0 -4
  163. package/dist/nano-ui.js.map +0 -1
  164. package/dist/themes/dark.css +0 -2
  165. package/dist/themes/light.css +0 -2
  166. package/docs/dist/docs.css +0 -2
  167. package/docs/index.html +0 -176
  168. package/docs/src/scss/docsify/basic/_coverpage.sass +0 -95
  169. package/docs/src/scss/docsify/basic/_layout.sass +0 -472
  170. package/docs/src/scss/docsify/vue.sass +0 -250
  171. package/nano.svg +0 -52
  172. package/themes/light/alert/index.scss +0 -1
  173. package/themes/light/alert/src/alert/alert.scss +0 -26
  174. package/themes/light/button/index.scss +0 -2
  175. package/themes/light/button/src/button/button.scss +0 -46
  176. package/themes/light/button/src/button-group/button-group.scss +0 -1
  177. package/themes/light/cascader/index.scss +0 -2
  178. package/themes/light/cascader/src/cascader/cascader.scss +0 -45
  179. package/themes/light/cascader/src/cascader-panel/cascader-panel.scss +0 -13
  180. package/themes/light/checkbox/index.scss +0 -2
  181. package/themes/light/checkbox/src/checkbox/checkbox.scss +0 -44
  182. package/themes/light/checkbox/src/checkbox-group/checkbox-group.scss +0 -1
  183. package/themes/light/collapse/index.scss +0 -2
  184. package/themes/light/collapse/src/collapse/collapse.scss +0 -21
  185. package/themes/light/collapse/src/collapse-item/collapse-item.scss +0 -21
  186. package/themes/light/confirm/index.scss +0 -1
  187. package/themes/light/confirm/src/confirm/confirm.scss +0 -13
  188. package/themes/light/datepicker/index.scss +0 -2
  189. package/themes/light/datepicker/src/datepicker/datepicker.scss +0 -49
  190. package/themes/light/datepicker/src/datepicker-panel/datepicker-panel.scss +0 -43
  191. package/themes/light/datetimepicker/index.scss +0 -1
  192. package/themes/light/datetimepicker/src/datetimepicker/datetimepicker.scss +0 -49
  193. package/themes/light/demo/index.scss +0 -1
  194. package/themes/light/demo/src/demo/demo.scss +0 -11
  195. package/themes/light/draggable/index.scss +0 -9
  196. package/themes/light/draggable/src/draggrid/draggrid.scss +0 -13
  197. package/themes/light/draggable/src/draggrid-item/draggrid-item.scss +0 -65
  198. package/themes/light/draggable/src/draghandler/draghandler.scss +0 -15
  199. package/themes/light/draggable/src/draglist/draglist.scss +0 -13
  200. package/themes/light/draggable/src/draglist-item/draglist-item.scss +0 -72
  201. package/themes/light/draggable/src/dropzone/dropzone.scss +0 -13
  202. package/themes/light/durationpicker/index.scss +0 -1
  203. package/themes/light/durationpicker/src/durationpicker/durationpicker.scss +0 -49
  204. package/themes/light/empty/index.scss +0 -1
  205. package/themes/light/empty/src/empty-icon/empty-icon.scss +0 -13
  206. package/themes/light/file/index.scss +0 -1
  207. package/themes/light/file/src/file/file.scss +0 -38
  208. package/themes/light/form/index.scss +0 -3
  209. package/themes/light/form/src/form/form.scss +0 -1
  210. package/themes/light/form/src/form-group/form-group.scss +0 -17
  211. package/themes/light/form/src/form-item/form-item.scss +0 -29
  212. package/themes/light/index.scss +0 -38
  213. package/themes/light/info/index.scss +0 -3
  214. package/themes/light/info/src/info/info.scss +0 -5
  215. package/themes/light/info/src/info-column/info-column.scss +0 -5
  216. package/themes/light/info/src/info-field/info-field.scss +0 -5
  217. package/themes/light/input/index.scss +0 -1
  218. package/themes/light/input/src/input/input.scss +0 -37
  219. package/themes/light/input-number/index.scss +0 -1
  220. package/themes/light/input-number/src/input-number/input-number.scss +0 -46
  221. package/themes/light/loader/index.scss +0 -1
  222. package/themes/light/loader/src/loader/loader.scss +0 -21
  223. package/themes/light/map/index.scss +0 -1
  224. package/themes/light/map/src/map/map.scss +0 -1
  225. package/themes/light/modal/index.scss +0 -1
  226. package/themes/light/modal/src/modal/modal.scss +0 -51
  227. package/themes/light/notification/index.scss +0 -1
  228. package/themes/light/notification/src/notification/notification.scss +0 -24
  229. package/themes/light/paginator/index.scss +0 -1
  230. package/themes/light/paginator/src/paginator/paginator.scss +0 -5
  231. package/themes/light/popover/index.scss +0 -1
  232. package/themes/light/popover/src/popover/popover.scss +0 -100
  233. package/themes/light/radio/index.scss +0 -2
  234. package/themes/light/radio/src/radio/radio.scss +0 -44
  235. package/themes/light/radio/src/radio-group/radio-group.scss +0 -1
  236. package/themes/light/rating/index.scss +0 -1
  237. package/themes/light/rating/src/rating/rating.scss +0 -18
  238. package/themes/light/resizer/index.scss +0 -1
  239. package/themes/light/resizer/src/resizer/resizer.scss +0 -5
  240. package/themes/light/root/vars.scss +0 -183
  241. package/themes/light/scrollbar/index.scss +0 -1
  242. package/themes/light/scrollbar/src/scrollbar/scrollbar.scss +0 -6
  243. package/themes/light/select/index.scss +0 -2
  244. package/themes/light/select/src/select/select.scss +0 -46
  245. package/themes/light/select/src/select-option/select-option.scss +0 -1
  246. package/themes/light/switch/index.scss +0 -1
  247. package/themes/light/switch/src/switch/switch.scss +0 -28
  248. package/themes/light/table/index.scss +0 -4
  249. package/themes/light/table/src/table/table.scss +0 -14
  250. package/themes/light/table/src/table-cell/table-cell.scss +0 -50
  251. package/themes/light/table/src/table-column/table-column.scss +0 -32
  252. package/themes/light/table/src/table-filter/table-filter.scss +0 -1
  253. package/themes/light/tabs/index.scss +0 -2
  254. package/themes/light/tabs/src/tabs/tabs.scss +0 -21
  255. package/themes/light/tabs/src/tabs-item/tabs-item.scss +0 -18
  256. package/themes/light/tags/index.scss +0 -2
  257. package/themes/light/tags/src/tags/tags.scss +0 -1
  258. package/themes/light/tags/src/tags-item/tags-item.scss +0 -28
  259. package/themes/light/textarea/index.scss +0 -1
  260. package/themes/light/textarea/src/textarea/textarea.scss +0 -29
  261. package/themes/light/timepicker/index.scss +0 -2
  262. package/themes/light/timepicker/src/timepicker/timepicker.scss +0 -49
  263. package/themes/light/timepicker/src/timepicker-panel/timepicker-panel.scss +0 -26
  264. package/themes/light/transfer/index.scss +0 -1
  265. package/themes/light/transfer/src/transfer/transfer.scss +0 -17
  266. package/themes/light/virtualscroller/index.scss +0 -1
  267. package/themes/light/virtualscroller/src/virtualscroller/virtualscroller.scss +0 -1
  268. /package/{themes/light → src}/root/image/empty-default.svg +0 -0
  269. /package/{themes/light → src}/root/image/empty-space.svg +0 -0
  270. /package/{themes/light → src}/root/image/star-default.svg +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://Nano/webpack/universalModuleDefinition","webpack://Nano/webpack/bootstrap","webpack://Nano/external {\"root\":\"pi\",\"commonjs2\":\"@kizmann/pico-js\",\"commonjs\":\"@kizmann/pico-js\",\"amd\":\"@kizmann/pico-js\"}","webpack://Nano/external {\"root\":\"Vue\",\"commonjs2\":\"vue\",\"commonjs\":\"vue\",\"amd\":\"vue\"}","webpack://Nano/(webpack)/buildin/global.js","webpack://Nano/./src/draggable/src/draghandler/draghandler.js","webpack://Nano/./src/mixins/src/ctor.js","webpack://Nano/./src/config/src/builder/builder.js","webpack://Nano/./src/virtualscroller/src/virtualscroller/virtualscroller.beta.js","webpack://Nano/./src/draggable/src/draglist/draglist.js","webpack://Nano/./src/draggable/src/draglist-item/draglist-item.js","webpack://Nano/./src/draggable/src/draggrid/draggrid.js","webpack://Nano/./src/draggable/src/draggrid-item/draggrid-item.js","webpack://Nano/./src/draggable/src/dropzone/dropzone.js","webpack://Nano/./src/preview/src/preview/preview.js","webpack://Nano/./src/preview/src/preview-video/preview-video.js","webpack://Nano/./src/mixins/src/cmer.js","webpack://Nano/./src/mixins/src/cslo.js","webpack://Nano/./src/index.js","webpack://Nano/./src/config/src/builder/prototypes/html/nano.js","webpack://Nano/./src/config/src/builder/prototypes/html/div.js","webpack://Nano/./src/config/src/builder/prototypes/html/span.js","webpack://Nano/./src/config/src/builder/prototypes/button/n-button.js","webpack://Nano/./src/config/src/builder/prototypes/button/n-button-group.js","webpack://Nano/./src/config/src/builder/prototypes/cascader/n-cascader.js","webpack://Nano/./src/config/src/builder/prototypes/checkbox/n-checkbox.js","webpack://Nano/./src/config/src/builder/prototypes/checkbox/n-checkbox-group.js","webpack://Nano/./src/config/src/builder/prototypes/confirm/n-confirm.js","webpack://Nano/./src/config/src/builder/prototypes/datepicker/n-datepicker.js","webpack://Nano/./src/config/src/builder/prototypes/datetimepicker/n-datetimepicker.js","webpack://Nano/./src/config/src/builder/prototypes/durationpicker/n-durationpicker.js","webpack://Nano/./src/config/src/builder/prototypes/empty/n-empty.js","webpack://Nano/./src/config/src/builder/prototypes/form/n-form.js","webpack://Nano/./src/config/src/builder/prototypes/form/n-form-group.js","webpack://Nano/./src/config/src/builder/prototypes/form/n-form-item.js","webpack://Nano/./src/config/src/builder/prototypes/input/n-input.js","webpack://Nano/./src/config/src/builder/prototypes/input-number/n-input-number.js","webpack://Nano/./src/config/src/builder/prototypes/loader/n-loader.js","webpack://Nano/./src/config/src/builder/prototypes/modal/n-modal.js","webpack://Nano/./src/config/src/builder/prototypes/radio/n-radio.js","webpack://Nano/./src/config/src/builder/prototypes/radio/n-radio-group.js","webpack://Nano/./src/config/src/builder/prototypes/rating/n-rating.js","webpack://Nano/./src/config/src/builder/prototypes/select/n-select.js","webpack://Nano/./src/config/src/builder/prototypes/slider/n-slider.js","webpack://Nano/./src/config/src/builder/prototypes/switch/n-switch.js","webpack://Nano/./src/config/src/builder/prototypes/table/n-table.js","webpack://Nano/./src/config/src/builder/prototypes/table/n-table-column.js","webpack://Nano/./src/config/src/builder/prototypes/tabs/n-tabs.js","webpack://Nano/./src/config/src/builder/prototypes/tabs/n-tabs-item.js","webpack://Nano/./src/config/src/builder/prototypes/tags/n-tags.js","webpack://Nano/./src/config/src/builder/prototypes/tags/n-tags-item.js","webpack://Nano/./src/config/src/builder/prototypes/timepicker/n-timepicker.js","webpack://Nano/./src/config/src/builder/prototypes/transfer/n-transfer.js","webpack://Nano/./src/virtualscroller/index.js","webpack://Nano/./src/draggable/index.js","webpack://Nano/./src/table/src/table/table.js","webpack://Nano/./src/table/src/table-column/table-column.js","webpack://Nano/./src/table/src/table-cell/table-cell.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-string.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-boolean.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-datetime.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-option.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-image.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-matrix.js","webpack://Nano/./src/table/src/table-cell/types/table-cell-select.js","webpack://Nano/./src/table/src/table-filter/table-filter.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-string.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-boolean.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-datetime.js","webpack://Nano/./src/table/src/table-filter/types/table-filter-option.js","webpack://Nano/./src/table/index.js","webpack://Nano/./src/info/src/info/info.js","webpack://Nano/./src/info/src/info-column/info-column.js","webpack://Nano/./src/info/src/info-field/info-field.js","webpack://Nano/./src/info/src/info-field/types/info-field-string.js","webpack://Nano/./src/info/src/info-field/types/info-field-boolean.js","webpack://Nano/./src/info/src/info-field/types/info-field-datetime.js","webpack://Nano/./src/info/src/info-field/types/info-field-option.js","webpack://Nano/./src/info/src/info-field/types/info-field-image.js","webpack://Nano/./src/info/index.js","webpack://Nano/./src/config/src/config/config.js","webpack://Nano/./src/config/src/config/config-next.js","webpack://Nano/./src/config/src/reference-panel/reference-panel.js","webpack://Nano/./src/config/src/reference-picker/reference-picker.js","webpack://Nano/./src/config/index.js","webpack://Nano/./src/popover/src/popover/popover.js","webpack://Nano/./src/popover/src/popover-group/popover-group.js","webpack://Nano/./src/popover/src/popover-option/popover-option.js","webpack://Nano/./src/popover/index.js","webpack://Nano/./src/form/src/form/form.js","webpack://Nano/./src/form/src/form-group/form-group.js","webpack://Nano/./src/form/src/form-item/form-item.js","webpack://Nano/./src/form/index.js","webpack://Nano/./src/button/src/button/button.js","webpack://Nano/./src/button/src/button-group/button-group.js","webpack://Nano/./src/button/index.js","webpack://Nano/./src/select/src/select/select.js","webpack://Nano/./src/select/src/select-option/select-option.js","webpack://Nano/./src/select/index.js","webpack://Nano/./src/checkbox/src/checkbox/checkbox.js","webpack://Nano/./src/checkbox/src/checkbox-group/checkbox-group.js","webpack://Nano/./src/checkbox/index.js","webpack://Nano/./src/radio/src/radio/radio.js","webpack://Nano/./src/radio/src/radio-group/radio-group.js","webpack://Nano/./src/radio/index.js","webpack://Nano/./src/cascader/src/cascader-panel/cascader-panel.js","webpack://Nano/./src/cascader/src/cascader/cascader.js","webpack://Nano/./src/cascader/index.js","webpack://Nano/./src/datepicker/src/datepicker-panel/datepicker-panel.js","webpack://Nano/./src/datepicker/src/datepicker/datepicker.js","webpack://Nano/./src/datepicker/index.js","webpack://Nano/./src/timepicker/src/timepicker-panel/timepicker-panel.js","webpack://Nano/./src/timepicker/src/timepicker/timepicker.js","webpack://Nano/./src/timepicker/index.js","webpack://Nano/./src/tabs/src/tabs/tabs.js","webpack://Nano/./src/tabs/src/tabs-item/tabs-item.js","webpack://Nano/./src/tabs/index.js","webpack://Nano/./src/tags/src/tags/tags.js","webpack://Nano/./src/tags/src/tags-item/tags-item.js","webpack://Nano/./src/tags/index.js","webpack://Nano/./src/collapse/src/collapse/collapse.js","webpack://Nano/./src/collapse/src/collapse-item/collapse-item.js","webpack://Nano/./src/collapse/index.js","webpack://Nano/./src/preview/src/preview-plain/preview-plain.js","webpack://Nano/./src/preview/src/preview-image/preview-image.js","webpack://Nano/./src/preview/index.js","webpack://Nano/./src/map/src/map/map.js","webpack://Nano/./src/map/src/map-marker/map-marker.js","webpack://Nano/./src/map/index.js","webpack://Nano/./src/alert/src/alert/alert.js","webpack://Nano/./src/alert/index.js","webpack://Nano/./src/notification/src/notification/notification.js","webpack://Nano/./src/notification/index.js","webpack://Nano/./src/empty/src/empty-icon/empty-icon.js","webpack://Nano/./src/empty/index.js","webpack://Nano/./src/scrollbar/src/scrollbar/scrollbar.next.js","webpack://Nano/./src/scrollbar/index.js","webpack://Nano/./src/loader/src/loader/loader.js","webpack://Nano/./src/loader/index.js","webpack://Nano/./src/resizer/src/resizer/resizer.js","webpack://Nano/./src/resizer/index.js","webpack://Nano/./src/modal/src/modal/modal.js","webpack://Nano/./src/modal/index.js","webpack://Nano/./src/input/src/input/input.js","webpack://Nano/./src/input/index.js","webpack://Nano/./src/input-number/src/input-number/input-number.js","webpack://Nano/./src/input-number/index.js","webpack://Nano/./src/textarea/src/textarea/textarea.js","webpack://Nano/./src/textarea/index.js","webpack://Nano/./src/slider/src/slider/slider.js","webpack://Nano/./src/slider/index.js","webpack://Nano/./src/switch/src/switch/switch.js","webpack://Nano/./src/switch/index.js","webpack://Nano/./src/confirm/src/confirm/confirm.js","webpack://Nano/./src/confirm/index.js","webpack://Nano/./src/datetimepicker/src/datetimepicker/datetimepicker.js","webpack://Nano/./src/datetimepicker/index.js","webpack://Nano/./src/durationpicker/src/durationpicker/durationpicker.js","webpack://Nano/./src/durationpicker/index.js","webpack://Nano/./src/transfer/src/transfer/transfer.js","webpack://Nano/./src/transfer/index.js","webpack://Nano/./src/paginator/src/paginator/paginator.js","webpack://Nano/./src/paginator/index.js","webpack://Nano/./src/file/src/file/file.js","webpack://Nano/./src/file/index.js","webpack://Nano/./src/rating/src/rating/rating.js","webpack://Nano/./src/rating/index.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","global","dragMods","NDragCounter","$el","Dom","make","classList","appendTo","document","body","event","count","update","html","Locale","choice","dataTransfer","setData","setDragImage","keyMods","Arr","has","push","attr","join","DragCounter","NDragIndicator","parent","safezone","el","strategy","rect","getBoundingClientRect","clientY","y","height","find","hasClass","show","hide","offsetTop","style","top","css","Obj","map","item","remove","NDraghandler","rootNode","frame","DragIndicator","DragCache","bindDragstart","on","onDragenterRoot","onDragoverRoot","onDragleaveRoot","onDragendRoot","onDragdropRoot","Event","uid","bindDragend","bindDragdrop","off","unbind","preventDefault","target","closest","cacheNodes","length","frames","Date","now","allowDrop","Any","isFunction","rainbow","each","node","addClass","removeClass","fire","moveNodes","group","cache","allowGroups","JSON","parse","stringify","dragcount","dropNodes","tempSelected","$emit","removeNode","clone","items","unlinkNodes","removeNodes","isSelected","id","virtuals","uniqueProp","route","clientHeight","resolve","targetNode","isInSelf","cascade","childNodes","unbindNode","$handle","handle","onDragstartNode","onDragenterNode","onDragoverNode","onDragleaveNode","onDragendNode","onDragdropNode","undefined","moveNodesMany","moveNodesOne","insertNode","moveNodesRoot","source","first","transformDrop","moveNodesInto","moveNodesBefore","moveNodesAfter","sources","eventName","set","prop","filter","childProp","disableMove","targetRoute","children","replace","index","splice","except","UUID","props","reduce","merge","reduceItem","Num","depth","cascades","unique","tempCascade","virtual","last","isEmpty","childRoute","ctor","fallback","$options","split","args","apply","NanoBuilderPropType","trans","NanoBuilderPropCode","NanoBuilderProps","for","type","vIf","vShow","NanoBuilderTypes","NanoBuilderIndexies","modelValue","scope","model","renderDemo","Boolean","renderExport","data","init","demo","collapse","safevar","normalizeModel","watch","mounted","methods","exportJson","matches","exportExecutable","result","assign","normalizeChild","order","vals","child","applyProps","content","builder","buildProps","isArray","isPlain","isString","match","getOriginalValue","safevalue","btoa","toString","getSafeValue","string","getRealValue","realvalue","code","number","atob","original","changeElement","newKey","unset","k","changeAlias","changeType","reset","val","bindValue","console","error","only","sey","isObject","$nextTick","addProp","removeProp","collapseElement","toggle","addElement","removeElement","moveupElement","childs","close","Number","MIN_VALUE","sub","Math","max","replacement","movedownElement","MAX_VALUE","min","renderTools","rootProps","collapseProps","href","addProps","removeProps","moveupProps","movedownProps","renderProp","$data","typeProps","size","options","keyProps","allowCreate","optionsLabel","codeProps","valueInputProps","valueHtml","fallbackProps","minRows","autoRows","renderProps","elementProps","aliasProps","plainProps","link","renderElement","builderHtml","renderBuilder","sort","v","_key","renderBody","renderHead","addHtml","demoProps","demoHtml","renderOutput","renderFunction","$slots","render","configProps","config","width","DEBUG_NVSCROLL","inject","NDraggable","default","itemHeight","itemWidth","renderNode","deathzone","overflowY","overflowX","offsetY","offsetX","threshold","framerate","useKeys","state","start","end","grid","buffer","load","updateRender","beforeMount","scrollTop","bindAdaptScroll","beforeUnmount","unbindAdaptScroll","refreshScroll","setInterval","onScrollupdate","clearInterval","isIndexRendered","scrollIntoView","$refs","scrollbar","scrollToIndex","selector","delay","onScrollToIndex","total","ceil","floor","targetTop","scrollTo","x","onScrollTo","clearState","async","refreshDriver","offset","offsetHeight","inner","scrollHeight","onSizechange","queue","timer","clearTimeout","to","setTimeout","bufferItems","round","startItem","endItem","isEqual","renderItem","passed","topOffset","renderRows","slice","renderGridRows","counter","chunk","renderGrid","chunks","renderItems","empty","totalHeight","DEBUG_NDLIST","draggable","String","current","selected","expanded","Array","lazyload","showEmptyIcon","itemOffset","scrollTopOnChange","renderCurrent","renderHandle","renderSelect","renderExpand","allowSelect","allowDrag","keyEvents","highlightTimeout","provide","modifier","visible","highlight","firstSelected","lastSelected","tempCurrent","tempExpanded","drag","watchModifierDown","_","watchModifierUp","virtualscroller","bindRoot","$watch","watchSelected","deep","refreshVirtuals","unbindRoot","filterVirtuals","add","which","updateNode","findVirtual","log","contains","getIndex","findIndex","getCurrentIndex","isDraggable","canDrag","isHighlight","highlightNode","refresh","recursive","scrollToHighlight","isCurrent","setCurrent","setRawCurrent","setNextCurrent","setPrevCurrent","syncCurrent","isDisabled","canSelect","hasChildren","getChildren","isExpanded","expandItem","expandCurrent","isTotalSelected","isInterSelected","toggleSingleNode","toggleRangeNode","indexies","reversed","selectItem","selectAll","row","unselectAll","bindKeydown","onKeydown","unbindKeydown","stopPropagation","renderEmpty","$props","onMouseenter","onMouseleave","NDraggableItem","required","computed","touch","navigator","msMaxTouchPoints","mousedown","mousemove","mouseup","bindNode","copy","copyNode","onClick","onDblclick","renderSpacer","nano","Icons","Str","ucfirst","angleRight","checked","NDropzone","fileMap","image","video","font","text","application","file","thumb","fit","mime","typre","preview","showSrc","tempFile","tempThumb","fileMime","getFileMime","thumbMime","getThumbMime","lightbox","extension","exts","resolveVimeo","resolveYoutube","showLightbox","renderPreview","renderFull","renderLightbox","slots","raw","url","host","path","src","provider","tempSrc","resolveType","resolveData","youtube","vimeo","renderYoutube","renderVimeo","renderPlain","cmer","attrsList","$attrs","cslo","slot","Comment","circle","intermediate","clock","calendar","times","primary","success","warning","danger","info","angleUp","angleDown","angleLeft","angleDoubleLeft","angleDoubleRight","Settings","iconPosition","notifySize","notifyPosition","Install","App","pi","globalProperties","CtorMixin","CmerMixin","CsloMixin","Nano","NanoPrototypeSizes","NanoPrototypeTypes","NanoPrototypeBools","square","disabled","icon","nativeType","click","label","placeholder","iconDisabled","iconClick","clearValue","clearable","stepSize","precision","format","decimals","onValue","offValue","onType","offType","component","Virtualscroller","Draglist","DraglistItem","Draggrid","DraggridItem","Dropzone","NTable","sortProp","sortDir","closeFilterOnEnter","elements","tempVisible","tempVisibleProps","tempSortProp","tempSortDir","tempFilter","tempFilterProps","makeVisibleProps","detectVisible","addColumn","column","removeColumn","getColumnIndex","getColumnVisiblity","getColumnSorted","getColumnFilter","filterProp","getColumnFiltered","detectVisibity","intersect","extract","onResize","sortByColumn","dir","replaceFilter","search","filters","resetFilter","refreshCurrent","columns","values","renderContext","defaultRender","draggableHtml","tooltip","align","matrixDisabled","breakpoint","previewProp","matrix","matrixProp","optionsValue","fluid","fixedWidth","minWidth","maxWidth","emptyText","undefinedText","trueText","falseText","datetimeFormat","allowUncheck","matrixValues","NTableColumn","tempWidth","changedStates","sortDirection","flexBasis","onMousedown","renderHeadLabel","labelHtml","renderHeadSort","renderHeadFilter","angleHtml","resolveComponent","h","class","input","setFirstState","firstState","extends","TableCell","convertString","convertBoolean","convertDatetime","renderOption","$value","$index","option","toggleMatrix","toggleSelect","itemList","currentMatrix","combine","finder","isChecked","canReset","canApply","getFilterClone","mountFilter","getFilterProp","getDefaultFilter","applyFilter","clearFilter","popover","renderForm","renderApply","renderReset","renderFooter","trigger","footer","TableFilter","operator","li","nl","eq","ne","1","0","lt","gt","in","ni","Table","TableColumn","TableCellString","TableCellBoolean","TableCellDatetime","TableCellOption","TableCellImage","TableCellMatrix","TableCellSelect","TableFilterString","TableFilterBoolean","TableFilterDatetime","TableFilterOption","syncEvent","relative","tempValue","bindSyncEvent","unbindSyncEvent","updated","adaptHeight","setValue","NInfo","infoHtml","renderLabel","InfoField","Info","InfoColumn","InfoFieldString","InfoFieldBoolean","InfoFieldDatetime","InfoFieldOption","InfoFieldImage","solveAwait","$$scope","$$value","solveValue","solveEvent","$configRefs","solveContent","$render","prepareValue","veModel","deepSet","inputClosure","closure","obj","keys","shift","renderLayer","setup","vAwait","$on","display","resolved","extraValue","sempValue","getString","final","propAwait","getState","propExists","exists","solveInput","$scope","$model","$extra","$global","toPropKey","splits","lcfirst","toEventKey","cb","solveContext","getProp","getInput","isNull","setInput","renderSetup","alias","defaultsBind","binds","events","updateKey","modelTree","buildTree","scopeTree","ref","submitItem","renderLeaf","renderTree","childItems","childHtml","renderModel","modelHtml","renderScope","scopeHtml","modal","updateValue","renderModal","modalProps","panelProps","renderInput","inputProps","NConfig","NConfigNext","NBuilder","NRefrencePanel","NRefrencePicker","NPopover","listen","position","scrollClose","multiClose","clientX","prevent","refreshVisible","previous","append","onHover","onContext","onExit","onCloseEvent","active","open","pause","unpause","stopRefreshInterval","startRefreshInterval","passedOffset","updatePosition","isSameOffset","isSameSize","passedSize","getTargetHorizontal","targetRect","left","windowRect","posY","posX","center","inverse","broken","innerHeight","innerWidth","clientWidth","getTargetVertical","getTargetOffset","scroll","zIndex","isScrollClose","keyCode","header","viewBody","tempSize","focus","imagePosition","clickClose","renderImage","renderIcon","renderContent","Popover","PopoverGroup","PopoverOption","inheritAttrs","dom","form","errors","ignore","forceChange","forceErrors","blocked","NForm","ready","emitChange","resetChange","onSubmit","is","addItem","removeItem","timeout","prevState","nextState","attrs","tooltipPosition","collapseGroup","renderCollapse","renderText","textHtml","renderAction","action","renderTooltip","NTabs","NTabsItem","NFormItem","tooltipWindow","conditional","conditionOn","conditionOff","enabled","toggleCondition","focusInput","$input","gotoInput","changeTab","renderCondition","renderError","Form","FormGroup","FormItem","innerHtml","Button","ButtonGroup","lazy","multiple","collapseText","optionsDisabled","deepDisabled","custom","element","tempClear","searched","generateOptions","searchOptions","NSelect","scrollToClosest","clear","tempLabel","addOption","removeOption","resetInput","onFocusInput","onInputInput","onKeydownInput","createOrToggle","selectPrev","selectNext","searchRegex","RegExp","toggleOption","denyUpdate","getOptionLabel","newIndex","scrollToCurrent","createOption","virtualbar","select","renderLabelClear","renderLabelAngle","renderLabelItem","renderLabelCollapse","firstHtml","renderLabelItems","renderMultiple","isEmptyValue","isNumber","onFocus","onInput","inputHtml","renderSingle","modelLabel","renderDisplay","displayHtml","emptyHtml","renderLazyOption","isMultipleActive","isSingleActive","renderLazyItems","renderPopover","onClose","renderOptions","valueProp","labelProp","toggleItem","Select","SelectOption","NCheckboxGroup","tempComputed","globalChecked","tempChecked","tempIntermediate","globalIntermediate","tempDisabled","globalDisabled","addCheckbox","removeCheckbox","check","checkCheckbox","uncheck","uncheckCheckbox","eventShiftClick","shiftCheckbox","eventLocalClick","shiftKey","toggleCheckbox","eventGlobalClick","toggleAll","updateFromGroup","renderCheckbox","interHtml","checkHtml","checkbox","emit","checkboxes","uncheckAll","checkAll","Checkbox","CheckboxGroup","NRadioGroup","addRadio","removeRadio","checkRadio","renderRadio","radio","NRadio","hover","disabledProp","tempHover","clearCascader","hoverItem","onSelect","updateHover","clickTimer","lastclick","hoverTimer","fireSelectItem","onMousemove","renderCascade","renderList","onCascaderInput","onCascaderHover","onPopoverInput","itemLabel","CascaderPanel","Cascader","arrive","clearArrive","depart","clearDepart","minDate","maxDate","range","monthPanels","weekdays","months","yearsGrid","tempCache","getYears","monthsGrid","getMonths","Now","tempArrive","tempDepart","tempView","tempRanger","cacheArrive","cacheDepart","gotoDate","gotoMonth","gotoYear","patchDate","resetTime","applyTime","patchMonth","printRange","patchYear","patchRange","renderToolbarPrev","renderToolbarNext","renderToolbarMonth","monthsHtml","month","addMonths","renderToolbarYear","yearsHtml","year","renderToolbar","prev","next","renderDateItem","equalDate","valid","isNotBeforeMin","after","isNotAfterMax","before","renderRangeDateItem","viewMode","isTempValid","between","arriveFirst","renderDate","legendHtml","day","bodyHtml","getDatesGrid","panelHtml","prevMonth","nextMonth","renderMonthItem","equal","renderMonth","prevYear","nextYear","renderYearItem","renderYear","prevDecade","nextDecade","placeholderArrive","placeholderDepart","rangeSeparator","boundary","displayFormat","clearDatepicker","clearRangeDatepicker","clearSingleDatepicker","onValueInput","moment","isValid","date","onArriveInput","onDepartInput","onDatepickerInput","onDatepickerDepart","onDatepickerArrive","initialDate","renderRange","arriveProps","departProps","DatepickerPanel","Datepicker","hoursInterval","minutesInterval","secondsInterval","hoursGrid","getHours","minutesGrid","getMinutes","secondsGrid","getSeconds","eventSelect","scrollbars","renderHourItem","hour","renderHourPanel","renderMinuteItem","minute","renderMinutePanel","renderSecondItem","second","renderSecondPanel","clearTimepicker","onTimepickerInput","renderPanel","TimepickerPanel","Timepicker","float","addTab","tab","$forceUpdate","removeTab","getTab","updateEvent","currentTab","sorted","repeatNext","renderHeaderIndicator","transform","renderHeader","tabs","preload","keep","renderHeaderIcon","renderHeaderLabel","Tabs","TabsItem","NTags","tags","addTag","removeTag","color","Tags","TagsItem","NCollapse","showTab","hideTab","toggleTab","NCollapseItem","dragger","renderHeaderAngle","angle","showDelay","Collapse","CollapseItem","tempExt","ImageCache","resolveLoad","loaded","laod","reader","FileReader","onload","readAsDataURL","Preview","PreviewPlain","PreviewImage","PreviewVideo","lat","lng","zoom","NMap","callbacks","tempMap","focusMarkers","Map","callback","getMap","onMount","tempMarker","importMarkerPosition","marker","setPosition","updateMarkerPosition","getPosition","initializeMarker","innerHTML","createMarker","addListener","debounce","setMarkerByAddress","address","then","Notify","MapMarker","AlertFrame","iconPrimary","iconSecondary","iconSuccess","iconWarning","iconDanger","iconInfo","Alert","backdrop","onclick","getIcon","alert","Notification","duration","wrapper","getWrapper","notifications","Notifcation","inline","EmptyIcon","NScrollbar","fixture","allowNative","wrapClass","native","adaptScrollBehavior","bindAdaptHeight","bindAdaptWidth","passive","onUpdate","onScroll","passedHeight","passedWidth","unbindAdaptHeight","unbindAdaptWidth","scrollLeft","onScrollIntoView","outerHeight","outerWidth","offsetLeft","$dom","offsetWidth","adaptScrollHeight","virtualHeight","barHeight","maxHeight","heightRatio","vbar","hasVtrack","adaptScrollPosition","adaptScrollWidth","scrollWidth","virtualWidth","barWidth","widthRatio","hbar","hasHtrack","vbarTop","hbarLeft","cacheChildEl","cacheWindwoEl","windowCache","spacer","refreshHeight","adaptWidth","resizeTimer","refreshWidth","$inner","actual","getTouchEvent","touches","changedTouches","onVbarMousedown","onVbarMousemove","onVbarMouseup","onHbarMousedown","onHbarMousemove","onHbarMouseup","WIN","vbarProps","hbarProps","Scrollbar","NLoader","minimum","applyTimer","timing","startTimer","restartTimer","Loader","resizerWidth","sizeFixed","updateWidth","bindSizechange","forceWidth","unmounted","unbindSizechange","flex","updateHandle","onLeftMousedown","onLeftMouseup","onLeftMousemove","scrollX","targetWidth","frameStyle","onRightMousedown","onRightMouseup","onRightMousemove","Resizer","title","closable","renderClose","startRefreshTimeout","NModal","eventClick","eventKeydown","openModal","force","closeModal","stopRefreshTimeout","queueRefreshTimeout","indexes","renderFrame","renderBackdrop","Modal","onIconClick","onBlur","Input","getValue","getDisplayValue","nextStep","isNaN","toFixed","onNextDown","nextTimeout","nextInterval","onNextUp","prevStep","onPrevDown","prevTimeout","prevInterval","onPrevUp","regex","renderPrev","renderNext","renderClear","InputNumber","maxRows","maxLength","eventInput","rows","currentRows","Textarea","steps","labels","fixmin","fixmax","minmax","getPseudoValue","setModelValue","getValPos","fixed","getValStyle","getBarPos","getBarWidth","getBarStyle","getClosestValue","diff","step","abs","onMouseup","relativeWidth","closestValue","stepMin","stepMax","handleProps","renderHandles","renderBar","barProps","Slider","renderSwitch","Switch","confirmText","abortText","buttonSize","abort","confirm","Confirm","clearDatetimepicker","renderPanels","renderDatePanel","renderTimePanel","Datetimepicker","minDuration","maxDuration","negativeText","days","hours","minutes","seconds","editValue","findPattern","pattern","replaceAll","humanizeValue","digitizeValue","dmatch","hmatch","mmatch","smatch","clearDurationpicker","onValueChange","onDurationpickerInput","onChange","optionProps","scrollProps","Durationpicker","sourceLabel","targetLabel","sourceChecked","selectedSource","tempSource","sourceIntermediate","targetChecked","selectedTarget","tempTarget","targetIntermediate","sourceSearch","searchPattern","targetSearch","moveItemsTarget","moveItemsSource","moveRowTarget","moveRowSource","moveToSource","moveToTarget","updateSelectedSource","updateSelectedTarget","renderSourceSelect","renderSourceTitle","counterHtml","renderSourceHeader","renderSourceSearch","renderSourceBody","onMove","renderTargetSelect","renderTargetTitle","renderTargetHeader","renderTargetSearch","renderTargetBody","renderMoveSource","renderMoveTarget","Transfer","page","limit","limitOptions","maxPages","layout","pages","tempLimit","pageOptions","tempPage","forcePage","updatePaginate","paginate","onPrevPage","onPageInput","onNextPage","onFirstPage","onLastPage","onLimitInput","renderLimit","renderCount","renderGoto","renderFirst","renderLast","renderPage","renderPages","renderSlot","view","className","Paginator","clearableIcon","buttonText","openContext","updateFile","files","clearFile","renderButton","renderHidden","File","virtualValue","renderStars","rate","renderValue","vars","Rating"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,oBAAqBA,QAAQ,QACrC,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,mBAAoB,OAAQJ,GACV,iBAAZC,QACdA,QAAc,KAAID,EAAQG,QAAQ,oBAAqBA,QAAQ,QAE/DJ,EAAW,KAAIC,EAAQD,EAAS,GAAGA,EAAU,KAR/C,CASGO,QAAQ,SAASC,EAAgCC,GACpD,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUV,QAGnC,IAAIC,EAASO,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHZ,QAAS,IAUV,OANAa,EAAQH,GAAUI,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASS,GAG/DR,EAAOW,GAAI,EAGJX,EAAOD,QA0Df,OArDAS,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASjB,EAASkB,EAAMC,GAC3CV,EAAoBW,EAAEpB,EAASkB,IAClCG,OAAOC,eAAetB,EAASkB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAASzB,GACX,oBAAX0B,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAetB,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAetB,EAAS,aAAc,CAAE4B,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAASnC,GAChC,IAAIkB,EAASlB,GAAUA,EAAO8B,WAC7B,WAAwB,OAAO9B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAQ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,I,gBClFrDzC,EAAOD,QAAUM,G,cCAjBL,EAAOD,QAAUO,G,cCAjB,IAAIoC,EAGJA,EAAI,WACH,OAAOC,KADJ,GAIJ,IAECD,EAAIA,GAAK,IAAIE,SAAS,cAAb,GACR,MAAOC,GAEc,iBAAXzC,SAAqBsC,EAAItC,QAOrCJ,EAAOD,QAAU2C,G,otCCjBjBI,EAAOC,SAAW,G,IAEZC,E,WAKF,aACA,uBAHM,MAIFL,KAAKM,IAAMC,MAAIC,KAAK,MAAO,CACvBC,UAAW,CAAC,0BAGhBT,KAAKM,IAAII,SAASC,SAASC,M,sCAG3BC,EAAOC,GAGPd,KAAKe,SAELf,KAAKM,IAAIU,KAAT,gBACaC,SAAOC,OAAO,2BAA4BJ,GADvD,YAKAD,EAAMM,aAAaC,QAAQ,aAAc,IAEO,mBAApCP,EAAMM,aAAaE,cAK/BR,EAAMM,aAAaE,aAAarB,KAAKM,IAAI1B,IAAI,GAAI,EAAG,K,+BAKpDuB,EAAOC,SAAWD,EAAOmB,QAEzB,IAAIb,EAAY,CACZ,wBAGCc,MAAIC,IAAIrB,EAAOC,SAAU,KAC1BK,EAAUgB,KAAK,iBAGdF,MAAIC,IAAIrB,EAAOC,SAAU,KAC1BK,EAAUgB,KAAK,kBAGdF,MAAIC,IAAIrB,EAAOC,SAAU,KAC1BK,EAAUgB,KAAK,kBAGnBzB,KAAKM,IAAIoB,KAAK,QAASjB,EAAUkB,KAAK,U,KAK9CxB,EAAOyB,YAAc,IAAIvB,E,IAEnBwB,E,WAOF,WAAYC,GACZ,uBALM,MAKN,gBAHS,MAIL9B,KAAKM,IAAMC,MAAIC,KAAK,MAAO,CACvBC,UAAW,CAAC,4BAGhBT,KAAKM,IAAII,SAASV,KAAK8B,OAASA,G,0CAG5BjB,EAAOkB,EAAUC,GACzB,IAD6BC,EAC7B,uDADwC,QAEhCC,EAAOF,EAAGG,wBAkBd,OAhBKtB,EAAMuB,QAAUF,EAAKG,EAAIN,IAC1BE,EAAW,UAGVpB,EAAMuB,QAAUF,EAAKG,EAAIH,EAAKI,OAASP,IACxCE,EAAW,SAGV1B,MAAIgC,KAAKP,GAAIQ,SAAS,gBACvBP,EAAwB,UAAbA,EAAuB,QAAUA,GAGhDV,MAAIC,IAAI,CAAC,SAAU,SAAUS,GACzBjC,KAAKyC,KAAKT,EAAIC,GAAYjC,KAAK0C,OAG5BT,I,2BAGND,EAAIC,GAEL,IAAIU,EAAYpC,MAAIgC,KAAKP,GAAIW,UAAU3C,KAAK8B,QAExCc,EAAQ,CACRC,IAAKF,GAAa,GAGJ,UAAbV,IACDW,EAAMC,IAAMF,EAAYpC,MAAIgC,KAAKP,GAAIM,UAGzCtC,KAAKM,IAAIwC,IAAIC,MAAIC,IAAIJ,GAAO,SAACK,GAAD,OAAUA,EAAO,W,6BAK7CjD,KAAKM,IAAIwC,IAAI,Q,gCAKb9C,KAAKM,IAAI1B,IAAI,GAAGsE,a,KAKlBC,E,WAgBF,WAAYC,GACZ,uBAdM,MAcN,kBAZW,MAYX,oBAXa,IAWb,mBATY,IASZ,oBARa,IAQb,kBANW,UAMX,gBALS,GAKT,iBAJU,GAIV,mBAHY,IAIRpD,KAAKoD,SAAWA,E,6CAIpB,IAG4B,EAH5B,OADSC,EACT,uDADiB,MAEbrD,KAAKsD,cAAgB,IAAIzB,EAAewB,GAASrD,KAAKoD,SAAS9C,KAE1DH,EAAOoD,aACR,EAAAvD,KAAKwD,eAActF,KAAnB,SAAwB8B,MAAxB,SAAiCG,EAAOoD,aAG5ChD,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,aAAa,SAAC5C,GACzC,EAAK6C,gBAAgB7C,MAGzBN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,YAAY,SAAC5C,GACxC,EAAK8C,eAAe9C,MAGxBN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,aAAa,SAAC5C,GACzC,EAAK+C,gBAAgB/C,MAGzBN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,WAAW,SAAC5C,GACvC,EAAKgD,cAAchD,MAGvBN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,QAAQ,SAAC5C,GACpC,EAAKiD,eAAejD,MAGxBN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAKmD,GAAG,YAAY,SAAC5C,GACxC,EAAKiD,eAAejD,MAGxBkD,QAAMxE,KAAK,cAAeS,KAAKwD,cAAcjE,KAAKS,MAC9CA,KAAKoD,SAASY,KAElBD,QAAMxE,KAAK,YAAaS,KAAKiE,YAAY1E,KAAKS,MAC1CA,KAAKoD,SAASY,KAElBD,QAAMxE,KAAK,aAAcS,KAAKkE,aAAa3E,KAAKS,MAC5CA,KAAKoD,SAASY,O,mCAelBzD,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAK6D,IAVf,CACT,YACA,YACA,WACA,YACA,UACA,OACA,aAKJJ,QAAMK,OAAO,cAAepE,KAAKoD,SAASY,KAC1CD,QAAMK,OAAO,YAAapE,KAAKoD,SAASY,KACxCD,QAAMK,OAAO,aAAcpE,KAAKoD,SAASY,O,sCAG7BnD,GAEZA,EAAMwD,mB,qCAGKxD,GACf,WAII,IAHaN,MAAIgC,KAAK1B,EAAMyD,QACvBC,QAAQ,qBAEGvE,KAAKwE,WAAWC,SAIhC5D,EAAMwD,mBAEDrE,KAAK0E,QAAUC,KAAKC,MAAQ5E,KAAK0E,OAAS,MAA/C,CAIA,IAAIG,EAAY7E,KAAKoD,SAASyB,UAExBC,MAAIC,WAAWF,KACjBA,EAAY,kBAAM,EAAKzB,SAASyB,YAGpC,IAAIG,EAAUzD,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACrC,QAASL,EAAUK,EAAM,KAAM,EAAKjD,aAGxCjC,KAAKiC,SAAW,OAEXV,MAAIC,IAAIwD,GAAS,KAClBhF,KAAKiC,SAAW,UAGpBjC,KAAKsD,cAAcZ,OAEI,WAAlB1C,KAAKiC,SACN1B,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAK6E,SAAS,cAErC5E,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAK8E,YAAY,cAGrB,WAAlBpF,KAAKiC,SACN1B,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAK6E,SAAS,YAErC5E,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAAK8E,YAAY,YAG5CpF,KAAK0E,OAASC,KAAKC,S,sCAGP/D,GAEZN,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAClB8E,YAAY,yB,oCAGPvE,GAEJb,KAAKwE,WAAWC,SAItBlE,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAClB8E,YAAY,uBAEM,SAAlBpF,KAAKiC,UAIV8B,QAAMsB,KAAK,gB,qCAGAxE,GAELb,KAAKwE,WAAWC,SAItBlE,MAAIgC,KAAKvC,KAAKoD,SAAS9C,KAClB8E,YAAY,uBAEM,SAAlBpF,KAAKiC,WAIVpB,EAAMwD,iBAENrE,KAAKsF,UAAU,KAAMtF,KAAKiC,UAE1B8B,QAAMsB,KAAK,kB,oCAGDE,EAAOC,GAEZjE,MAAIC,IAAIxB,KAAKoD,SAASqC,YAAaF,KACpCvF,KAAKwE,WAAakB,KAAKC,MAAMD,KAAKE,UAAUJ,O,oCAMhDxF,KAAK6F,UAAY,GAEjB7F,KAAKwE,WAAaxE,KAAK8F,UAAY,K,qCAKnC,GAAM9F,KAAK8F,UAAUrB,SAIrBzE,KAAKoD,SAAS2C,aAAe,GAE7B/F,KAAKoD,SAAS4C,MAAM,kBAChBhG,KAAKoD,SAAS2C,cAEZ/F,KAAKoD,SAAS6C,YAApB,CAIA,IAAIC,EAAQ,CACRC,MAAOpD,MAAImD,MAAMlG,KAAKoD,SAAS+C,QAGnCnG,KAAKoG,YAAYF,GACjBlG,KAAKqG,YAAYH,GAEjBlG,KAAKoD,SAAS4C,MAAM,eAAgBE,EAAMC,U,sCAG9BtF,EAAOqE,GACvB,WACUlF,KAAKoD,SAASkD,WAAWpB,IAC3BlF,KAAKoD,SAAS4C,MAAM,kBAChBhG,KAAKoD,SAAS2C,aAAe,CAACb,EAAKlB,MAG3C,IAAIwB,EAAQjE,MAAI0D,KAAKjF,KAAKoD,SAAS2C,cAAc,SAACQ,GAC9C,OAAOhF,MAAIgB,KAAK,EAAKa,SAASoD,SAAvB,KAAoC,EAAKpD,SAASqD,WAAaF,OAG1EpG,EAAOyB,YAAYhD,IAAIiC,EAAO2E,EAAMf,QAEpClD,MAAIyB,IAAIwC,GAAO,SAACxG,GACZ,MAAO,CAAEA,QAAOiE,KAAMF,MAAInE,IAAI,EAAKwE,SAAUpE,EAAM0H,WAGvD3C,QAAMsB,KAAK,cAAerF,KAAKoD,SAASmC,MACpCvF,KAAK8F,UAAYN,GAErBrF,EAAOoD,UAAY,CACfvD,KAAKoD,SAASmC,MAAOvF,KAAK8F,WAG9B9F,KAAK6F,UAAUX,EAAKlB,KAAO,I,sCAGfnD,EAAOqE,GAEnBrE,EAAMwD,iBAEArE,KAAK6F,UAAUX,EAAKlB,OACtBhE,KAAK6F,UAAUX,EAAKlB,KAAO,GAG/BhE,KAAK6F,UAAUX,EAAKlB,S,qCAGTnD,EAAOqE,GACtB,WACI,GAAMlF,KAAKwE,WAAWC,SAItB5D,EAAMwD,mBAEDrE,KAAK0E,QAAUC,KAAKC,MAAQ5E,KAAK0E,OAAS,KAA/C,CAIA,IAAI3C,EAAW/B,KAAKoD,SACfrB,SAASmD,EAAK5E,IAAIqG,cAEvB3G,KAAKiC,SAAWjC,KAAKsD,cAChBsD,QAAQ/F,EAAOkB,EAAUmD,EAAK5E,KAEnC,IAAIuG,EAAa,CACb7H,MAAOkG,EAAKlG,MAAOiE,KAAMiC,EAAKjC,MAG9B4B,EAAY7E,KAAKoD,SAASyB,UAExBC,MAAIC,WAAWF,KACjBA,EAAY,kBAAM,EAAKzB,SAASyB,YAGpC,IAAIG,EAAUzD,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACrC,QAASL,EAAUK,EAAM2B,EAAY,EAAK5E,aAG1C6E,EAAWvF,MAAIC,IAAI0D,EAAKlG,MAAM+H,QAC9B/G,KAAKoD,SAAS2C,cAElBf,EAAQvD,MAAMqF,GAETvF,MAAIC,IAAIwD,GAAS,KAClBhF,KAAKiC,SAAW,UAGG,WAAlBjC,KAAKiC,UACNjC,KAAKsD,cAAcZ,OAGA,WAAlB1C,KAAKiC,WACN1B,MAAIgC,KAAK2C,EAAK5E,KAAK6E,SAAS,cAC5B5E,MAAIgC,KAAK2C,EAAK5E,KAAK8E,YAAY,aAGZ,WAAlBpF,KAAKiC,WACN1B,MAAIgC,KAAK2C,EAAK5E,KAAK8E,YAAY,cAC/B7E,MAAIgC,KAAK2C,EAAK5E,KAAK6E,SAAS,aAGhCnF,KAAK0E,OAASC,KAAKC,S,sCAGP/D,EAAOqE,GAEnBlF,KAAK6F,UAAUX,EAAKlB,OAEc,IAA7BhE,KAAK6F,UAAUX,EAAKlB,OAIzBzD,MAAIgC,KAAK2C,EAAK5E,KAAK8E,YAAY,uBAE/BpF,KAAKsD,cAAcZ,U,oCAGT7B,EAAOqE,GAEjB3E,MAAIgC,KAAK2C,EAAK5E,KAAK8E,YAAY,uBAE/BpF,KAAKsD,cAAcZ,OAEnBqB,QAAMsB,KAAK,aAEXlF,EAAOoD,UAAY,O,qCAGR1C,EAAOqE,GAEZlF,KAAKwE,WAAWC,SAItBlE,MAAIgC,KAAK2C,EAAK5E,KAAK8E,YAAY,uBAE/BpF,KAAKsD,cAAcZ,OAEI,WAAlB1C,KAAKiC,WAIVpB,EAAMwD,iBAENrE,KAAKsF,UAAUJ,EAAMlF,KAAKiC,UAE1B8B,QAAMsB,KAAK,kB,+BAGNH,GACT,WACSlF,KAAKgH,WAAW9B,EAAKlB,MACtBhE,KAAKiH,WAAW/B,GAGpB,IAAIgC,EAAU3G,MAAIgC,KAAK2C,EAAK5E,KAEvBN,KAAKoD,SAAS+D,SACfD,EAAUA,EAAQ3E,KAAK,gBAG3B,IAAIjC,EAAMC,MAAIgC,KAAK2C,EAAK5E,KAExB4G,EAAQzD,GAAG,aAAa,SAAC5C,GACrB,EAAKuG,gBAAgBvG,EAAOqE,MAGhC5E,EAAImD,GAAG,aAAa,SAAC5C,GACjB,EAAKwG,gBAAgBxG,EAAOqE,MAGhC5E,EAAImD,GAAG,YAAY,SAAC5C,GAChB,EAAKyG,eAAezG,EAAOqE,MAG/B5E,EAAImD,GAAG,aAAa,SAAC5C,GACjB,EAAK0G,gBAAgB1G,EAAOqE,MAGhC5E,EAAImD,GAAG,WAAW,SAAC5C,GACf,EAAK2G,cAAc3G,EAAOqE,MAG9B5E,EAAImD,GAAG,QAAQ,SAAC5C,GACZ,EAAK4G,eAAe5G,EAAOqE,MAG/B5E,EAAImD,GAAG,YAAY,SAAC5C,GAChB,EAAK4G,eAAe5G,EAAOqE,MAG/BlF,KAAKgH,WAAW9B,EAAKlB,KAAOkB,I,iCAGrBA,GAEP,IAAIgC,EAAU3G,MAAIgC,KAAK2C,EAAK5E,KAEvBN,KAAKoD,SAAS+D,SACfD,EAAUA,EAAQ3E,KAAK,gBAG3B2E,EAAQ/C,IAAI,aAEZ,IAAI7D,EAAMC,MAAIgC,KAAK2C,EAAK5E,KAExBA,EAAI6D,IAAI,CACJ,YACA,WACA,YACA,UACA,OACA,aAGJ7D,EAAI8E,YAAY,uBAEhBpF,KAAKsD,cAAcZ,cAEZ1C,KAAKgH,WAAW9B,EAAKlB,O,gCAGtBM,EAAQrC,GAEd,YAA6ByF,IAAxB1H,KAAKoD,SAAS+C,MACRnG,KAAK2H,cAAcrD,EAAQrC,QAGVyF,IAAvB1H,KAAKoD,SAASH,KACRjD,KAAK4H,aAAatD,EAAQrC,GAG9B,O,mCAGEqC,EAAQrC,GACrB,WACQiE,EAAQ,CACRC,MAAO,CAACpD,MAAImD,MAAMlG,KAAKoD,SAASH,QAG/BjD,KAAKoD,SAASyE,aACf3B,EAAQlG,KAAK8H,cAAc5B,EAAO5B,IAGjCtE,KAAKoD,SAAS6C,aACfC,EAAQlG,KAAKqG,YAAYH,IAGf3E,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACrC,OAAOA,EAAKjC,KAAK,EAAKG,SAASqD,eADnC,IAIIsB,EAASxG,MAAIyG,MAAMhI,KAAKwE,YAE5BxE,KAAKoD,SAAS4C,MAAM,OAAQjD,MAAInE,IAAImJ,EAAQ,YACxChF,MAAInE,IAAI0F,EAAQ,OAAQrC,GAE5BjC,KAAKoD,SAAS4C,MAAM,UAChB+B,EAAQzD,EAAQrC,GAEpBjC,KAAKoD,SAAS4C,MAAM,cAChBjD,MAAInE,IAAImJ,EAAQ,W,oCAGVzD,EAAQrC,GACtB,WACQiE,EAAQ,CACRC,MAAOpD,MAAImD,MAAMlG,KAAKoD,SAAS+C,QAG9BnG,KAAKoD,SAAS6C,YACfjG,KAAKoG,YAAYF,GAGflG,KAAK8F,UAAUrB,QACjBlD,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACxF,EAAOM,GAC9B,EAAKkF,WAAWlF,GAAhB,KAA+B,EAAK8D,SAAS6E,cAAcjJ,EAAMiE,SAIpEjD,KAAKoD,SAASyE,YAA2B,SAAb5F,IAC7BiE,EAAQlG,KAAK8H,cAAc5B,EAAO5B,IAGjCtE,KAAKoD,SAASyE,YAA2B,UAAb5F,IAC7BiE,EAAQlG,KAAKkI,cAAchC,EAAO5B,IAGjCtE,KAAKoD,SAASyE,YAA2B,WAAb5F,IAC7BiE,EAAQlG,KAAKmI,gBAAgBjC,EAAO5B,IAGnCtE,KAAKoD,SAASyE,YAA2B,UAAb5F,IAC7BiE,EAAQlG,KAAKoI,eAAelC,EAAO5B,IAGlCtE,KAAKoD,SAAS6C,aACfC,EAAQlG,KAAKqG,YAAYH,IAG7B,IAAImC,EAAU9G,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACrC,OAAOA,EAAKjC,KAAK,EAAKG,SAASqD,eAGnCzG,KAAK8F,UAAY9F,KAAKoD,SAAS2C,aAAe,GAE9C,IAAIuC,EAAY,OAEX/G,MAAIC,IAAIrB,EAAOC,SAAU,MAC1BkI,EAAY,WAGX/G,MAAIC,IAAIrB,EAAOC,SAAU,MAC1BkI,EAAY,YAGX/G,MAAIC,IAAIrB,EAAOC,SAAU,MAC1BkI,EAAY,YAGhBtI,KAAKoD,SAAS4C,MAAMsC,EAAWD,EAC3BtF,MAAInE,IAAI0F,EAAQ,OAAQrC,GAE5BjC,KAAKoD,SAAS4C,MAAMsC,EAAY,MAC5BtI,KAAKwE,WAAYF,EAAQrC,GAE7BjC,KAAKoD,SAAS4C,MAAM,kBAChBhG,KAAKoD,SAAS2C,cAElB/F,KAAKoD,SAAS4C,MAAM,eAAgBE,EAAMC,S,kCAGlCD,GAER3E,MAAI0D,KAAKjF,KAAK8F,WAAW,SAACZ,GACtBnC,MAAIwF,IAAIrC,EAAOhB,EAAKlG,MAAM0H,MAAO,W,kCAI7BR,GACZ,WADmBsC,EACnB,uDAD0B,QAgBtB,OAdAtC,EAAMsC,GAAQjH,MAAIkH,OAAOvC,EAAMsC,IAAO,SAACtD,GACnC,QAASA,KAGb3D,MAAIyB,IAAIkD,EAAMsC,IAAO,SAACtD,GAElB,OAAMA,EAAK,EAAK9B,SAASsF,WAIlB,EAAKrC,YAAYnB,EACpB,EAAK9B,SAASsF,WAJPxD,KAORgB,I,oCAGGA,GAEV,OAAKlG,KAAKoD,SAASuF,aAInBpH,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACvBgB,EAAMC,MAAM1E,KAAKyD,EAAKjC,SAJfiD,I,oCAUDA,EAAO5B,GAEjB,GAAKtE,KAAKoD,SAASuF,YACf,OAAOzC,EAGX,IAAI0C,EAAc,CACdtE,EAAOtF,MAAM0H,MACb1G,KAAKoD,SAASsF,WAChB/G,KAAK,KAEHkH,EAAW9F,MAAInE,IAAIsH,EACnB0C,EAAa,IAQjB,OANArH,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,GACvB2D,EAASpH,KAAKyD,EAAKjC,SAGvBF,MAAIwF,IAAIrC,EAAO0C,EAAaC,GAErB3C,I,sCAGKA,EAAO5B,GAEnB,GAAKtE,KAAKoD,SAASuF,YACf,OAAOzC,EAGX,IAAI0C,EAActE,EAAOtF,MAAM0H,MAC1BoC,QAAQ,YAAa,IAEtB3C,EAAQpD,MAAInE,IAAIsH,EAAO0C,GAQ3B,OANArH,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,EAAM6D,GAC7B5C,EAAM6C,OAAO1E,EAAOtF,MAAM+J,MAAQA,EAAO,EAAG7D,EAAKjC,SAGrDF,MAAIwF,IAAIrC,EAAO0C,EAAazC,GAErBD,I,qCAGIA,EAAO5B,GAElB,GAAKtE,KAAKoD,SAASuF,YACf,OAAOzC,EAGX,IAAI0C,EAActE,EAAOtF,MAAM0H,MAC1BoC,QAAQ,YAAa,IAEtB3C,EAAQpD,MAAInE,IAAIsH,EAAO0C,GAQ3B,OANArH,MAAI0D,KAAKjF,KAAKwE,YAAY,SAACU,EAAM6D,GAC7B5C,EAAM6C,OAAO1E,EAAOtF,MAAM+J,MAAQA,EAAQ,EAAG,EAAG7D,EAAKjC,SAGzDF,MAAIwF,IAAIrC,EAAO0C,EAAazC,GAErBD,I,+BAGFhB,GAEL,IAAIgB,EAAQ,CACRC,MAAOpD,MAAImD,MAAMlG,KAAKoD,SAAS+C,QAG/ByC,EAAc1D,EAAKlG,MAAM0H,MACxBoC,QAAQ,YAAa,IAEtB3C,EAAQpD,MAAInE,IAAIsH,EAAO0C,GAEvBtE,EAASvB,MAAIkG,OAAO/D,EAAKjC,KAAM,GAAtB,KACRjD,KAAKoD,SAASqD,WAAayC,mBAGhC/C,EAAM6C,OAAO9D,EAAKlG,MAAM+J,MAAQ,EAC5B,EAAGzE,GAEPvB,MAAIwF,IAAIrC,EAAO0C,EAAazC,GAE5BnG,KAAKoD,SAAS4C,MAAM,eAAgBE,EAAMC,S,iCAGnCjB,GAEP,IAAIgB,EAAQ,CACRC,MAAOpD,MAAImD,MAAMlG,KAAKoD,SAAS+C,QAG/ByC,EAAc1D,EAAKlG,MAAM0H,MACxBoC,QAAQ,YAAa,IAEtB3C,EAAQpD,MAAInE,IAAIsH,EAAO0C,GAE3BzC,EAAM6C,OAAO9D,EAAKlG,MAAM+J,MAAO,GAE/BhG,MAAIwF,IAAIrC,EAAO0C,EAAazC,GAE5BnG,KAAKoD,SAAS4C,MAAM,eAAgBE,EAAMC,S,6BAGvCA,GACP,kCADiBgD,EACjB,iCADiBA,EACjB,kBACI,OAAO5H,MAAI6H,OAAOjD,GAAO,SAACkD,EAAOpG,EAAM8F,GAAd,OACrB,EAAKO,WAAL,QAAI,CAAYD,EAAOpG,EAAMsG,MAAG,IAAKR,IAAjC,OAA4CI,MAAQ,M,iCAGrDE,EAAOpG,EAAM8F,GACxB,IAD+BS,EAC/B,uDADuC,EAAG9C,EAC1C,uDADkD,QAAS+C,EAC3D,uDADsE,GAG9DC,EAAS3G,MAAInE,IAAIqE,EACjBjD,KAAKoD,SAASqD,WAAYyC,kBAG1BS,EAAcpI,MAAI8H,MAAMI,EACxB,CAACC,IAEDE,EAAU,CACVb,MAAOA,EACPS,MAAOA,EACP9C,MAAO,CAACA,EAAOqC,GAAOpH,KAAK,KAC3BG,OAAQP,MAAIsI,KAAKJ,GACjB1C,QAAS4C,GAGbC,EAAQ5J,KAAKoD,SAASqD,YAAciD,EAEpC,IAAIb,EAAW9F,MAAInE,IAAIqE,EACnBjD,KAAKoD,SAASsF,UAAW,IAE7B,GAAK5D,MAAIgF,QAAQjB,GACb,OAAOtH,MAAI8H,MAAMA,EAAO,CAACO,IAG7B,IAAIG,EAAa,CACbrD,EAAOqC,EACP/I,KAAKoD,SAASsF,WAChB/G,KAAK,KAEHwH,EAAQ,CACRK,EAAQ,EAAGO,EAAYJ,GAG3B,OAAOpI,MAAI8H,MAAMA,EAAO,CAACO,GACrB5J,KAAKoJ,OAAL,MAAApJ,KAAA,CAAY6I,GAAZ,OAAyBM,S,KAKtBhG,Q,8CC/1Bf,WAEe,KAEX6G,KAFW,SAEN1K,GACL,WADU2K,EACV,uDADqB,KAEbD,EAAOjH,MAAInE,IAAIoB,KAAKkK,SAAU5K,EAAI6K,MAAM,MAAO,GAWnD,OAJe,IAAVH,IACDA,EAAOC,GAGU,mBAATD,EACDA,EAGJ,sCAAII,EAAJ,yBAAIA,EAAJ,uBAAaJ,EAAKK,MAAM,EAAMD,O,+kCCnB7CjK,EAAOmK,oBAAsB,CACzB,KAAQrJ,SAAOsJ,MAAM,QACrB,MAAStJ,SAAOsJ,MAAM,QACtB,MAAStJ,SAAOsJ,MAAM,YACtB,MAAStJ,SAAOsJ,MAAM,aACtB,GAAMtJ,SAAOsJ,MAAM,UAGvBpK,EAAOqK,oBAAsB,CACzB,OAAUvJ,SAAOsJ,MAAM,UACvB,OAAUtJ,SAAOsJ,MAAM,UACvB,QAAWtJ,SAAOsJ,MAAM,WACxB,OAAUtJ,SAAOsJ,MAAM,UACvB,SAAYtJ,SAAOsJ,MAAM,aAG7BpK,EAAOsK,iBAAmB,CACtBhK,UAAW,CACPiK,IAAK,CAAC,OAAQ,QAAS,SAAUC,KAAM,UAE3CC,IAAK,CACDF,IAAK,CAAC,QAASC,KAAM,UAEzBE,MAAO,CACHH,IAAK,CAAC,QAASC,KAAM,WAI7BxK,EAAO2K,iBAAmB,GAI1B3K,EAAO4K,oBAAsB,GAK7BzN,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IAGRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,IAEO,KAEXgB,KAAM,WAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAAClM,SAGXwM,MAAO,oBAGC,MAAO,IAEXN,KAAM,CAAClM,SAGXyM,MAAO,oBAGC,MAAO,IAEXP,KAAM,CAAClM,SAGX0M,WAAY,oBAGJ,OAAO,GAEXR,KAAM,CAACS,UAGXC,aAAc,oBAGN,OAAO,GAEXV,KAAM,CAACS,WAKfE,KAhDW,WAkDP,MAAO,CACHC,MAAM,EAAOC,MAAM,EAAOC,SAAU,GAAIC,QAAS1L,KAAK2L,eAAe3L,KAAKgL,cAIlFY,MAAO,CACHZ,WAAY,WACRhL,KAAK0L,QAAU1L,KAAK2L,eAAe3L,KAAKgL,cAIhDa,QA7DW,WA+DP7L,KAAKuL,MAAO,GAGhBO,QAAS,CAELC,WAFK,SAEM/M,GAEP,OAAO0G,KAAKE,UAAU7C,MAAImD,MAAMlH,GAAQ,KAAM,GAAG8J,QAAQ,wBAAwB,SAACkD,GAC9E,OAAOA,EAAQlD,QAAQ,WAAY,IAAIA,QAAQ,WAAY,IAAIA,QAAQ,MAAO,KAAKA,QAAQ,OAAQ,UAI3GmD,iBATK,SASYjN,GAEb,OAAO,IAAIiB,SAAJ,iBAAuBD,KAAK+L,WAAW/M,GAAvC,SAGX2M,eAdK,SAcUT,GACf,WACQgB,EAAS,GAQb,OANAnJ,MAAIkC,KAAKiG,GAAO,SAAClM,EAAOM,GACpB4M,EAAO5M,GAAOyD,MAAIoJ,OAAO,EAAKC,eAAepN,GAAQ,CACjDqN,MAAuC,KAA/BvH,MAAIwH,KAAKJ,GAAQzH,OAAS,QAInCyH,GAGXE,eA3BK,SA2BUG,GACf,WACQL,EAASlM,KAAKwM,WAAW,KAAhB,OACNzJ,MAAIkG,OAAOsD,EAAO,CAAC,aADb,IAC0BE,QAAS,GAAIC,QAAS1M,KAAK2M,WAAWJ,MA8B7E,OA3BKzH,MAAI8H,QAAQL,EAAME,WACnBF,EAAME,QAAUlL,MAAIyG,MAAMuE,EAAME,UAG7B3H,MAAI+H,QAAQN,EAAME,UAAc3H,MAAIgI,SAASP,EAAME,WACtDF,EAAME,QAAU,IAGpBP,EAAOQ,QAAP,KAAyB,CACrB/B,KAAM,EAAO4B,EAAME,UAGnB3H,MAAI+H,QAAQN,EAAME,SAClB1J,MAAIkC,KAAKsH,EAAME,SAAW,IAAI,SAACzN,EAAOM,GAE3BA,EAAIyN,MAAM,OACbzN,GAAO,IAAM4J,kBAGjBgD,EAAM,QAAY5M,GAAOyD,MAAIoJ,OAAO,EAAKC,eAAepN,GAAQ,CAC5DqN,MAAkD,KAA1CvH,MAAIwH,KAAKJ,EAAM,SAAazH,OAAS,QAIrDyH,EAAOO,QAAUF,EAAME,QAGpBP,GAGXc,iBA/DK,SA+DYxE,GAEb,IAAIyE,EAAYzE,EAAKxJ,MAMrB,MAJ2B,mBAAfwJ,EAAKxJ,QACbiO,EAAYC,KAAK,SAAW1E,EAAKxJ,MAAMmO,WAAa,WAGjDF,GAGXG,aA1EK,SA0EQ5E,GAET,IAAIyE,EAAY,GAsBhB,MApB2B,iBAAfzE,EAAKxJ,QACbiO,EAAYnI,MAAIuI,OAAO7E,EAAKxJ,QAGL,kBAAfwJ,EAAKxJ,QACbiO,EAAYnI,MAAIuI,OAAO7E,EAAKxJ,QAGL,iBAAfwJ,EAAKxJ,QACbiO,EAAYnI,MAAIuI,OAAO7E,EAAKxJ,QAGL,WAAtB,EAAOwJ,EAAKxJ,SACbiO,EAAYvH,KAAKE,UAAU4C,EAAKxJ,QAGT,mBAAfwJ,EAAKxJ,QACbiO,EAAYC,KAAK,SAAW1E,EAAKxJ,MAAMmO,WAAa,WAGjDF,GAGXK,aArGK,SAqGQ9E,GAET,IAAI+E,EAAY,GAsBhB,MApBmB,WAAd/E,EAAKgF,OACND,EAAYzI,MAAIuI,OAAO7E,EAAKxJ,QAGb,YAAdwJ,EAAKgF,OACND,EAAYzI,MAAG,QAAS0D,EAAKxJ,QAGd,WAAdwJ,EAAKgF,OACND,EAAYzI,MAAI2I,OAAOjF,EAAKxJ,MAAO,IAGpB,WAAdwJ,EAAKgF,OACND,EAAY7H,KAAKC,MAAM6C,EAAKxJ,QAGb,aAAdwJ,EAAKgF,OACND,EAAYG,KAAKlF,EAAKmF,WAGnBJ,GAGXK,cAhIK,SAgIStO,EAAKyB,GAEf,IAAK+D,MAAIgF,QAAQ/I,GAAjB,CAIA,IAAI8M,EAASvO,EAAIwJ,QAAQ,2BAAZ,YAA6C/H,EAA7C,QAET/B,EAAQ+D,MAAInE,IAAIoB,KAAMV,EAAK,IAE/ByD,MAAI+K,MAAM9N,KAAMV,GAChByD,MAAIwF,IAAIvI,KAAM6N,EAAQ7O,GAEtBgB,KAAKyL,SAAWlK,MAAI0D,KAAKjF,KAAKyL,UAAU,SAACsC,GACrC,OAAOA,EAAEjF,QAAQxJ,EAAKuO,QAI9BG,YAlJK,SAkJO1O,EAAKyB,GAEb,IAAK+D,MAAIgF,QAAQ/I,GAAjB,CAIA,IAAI8M,EAASvO,EAAIwJ,QAAQ,2BAAZ,eAAgD/H,IAEzD/B,EAAQ+D,MAAInE,IAAIoB,KAAMV,EAAK,IAE/ByD,MAAI+K,MAAM9N,KAAMV,GAChByD,MAAIwF,IAAIvI,KAAM6N,EAAQ7O,GAEtBgB,KAAKyL,SAAWlK,MAAI0D,KAAKjF,KAAKyL,UAAU,SAACsC,GACrC,OAAOA,EAAEjF,QAAQxJ,EAAKuO,QAI9BI,WApKK,SAoKM3O,EAAKqL,GAEZ,IAAI3L,EAAQ+D,MAAInE,IAAIoB,KAAMV,EAAK,IAEhByD,MAAInE,IAAII,EAAO,qBAEhB,WAAT2L,IACD3L,EAAMyN,QAAU,IAGN,WAAT9B,IACD3L,EAAMyN,QAAU,IAGpB1J,MAAIwF,IAAIvJ,EAAO,oBAAf,EAA2CA,EAAMyN,WAGrDD,WArLK,WAsLL,WADWlN,EACX,uDADiB,KAAMN,EACvB,uDAD+B,GAEpB8F,MAAIgF,QAAQxK,KACfN,EAAQ+D,MAAInE,IAAIoB,KAAMV,EAAK,KAG/B,IAAI4O,EAAQ,CACR,MAAO,QAAS,YAAa,UAAW,QAAS,QAAS,QAAS,MA6DvE,OA1DAnL,MAAIkC,KAAKiJ,GAAO,SAAC1F,GACbzF,MAAI+K,MAAM9O,EAAOwJ,MAGrBzF,MAAIkC,KAAKjG,EAAM0N,SAAW,IAAI,SAACyB,GAE3B,IAAKrJ,MAAIgF,QAAQqE,EAAI7O,KAArB,CAIA,IAAI8O,EAAY,CACZpP,MAAOmP,EAAInP,MAAOiL,SAAU,MAehC,GAZkB,WAAbkE,EAAIX,OACLY,EAAUnE,SAAWnF,MAAIuI,OAAOc,EAAIlE,UAAY,KAGlC,YAAbkE,EAAIX,OACLY,EAAUnE,SAAWnF,MAAG,QAASqJ,EAAIlE,UAAY,UAGnC,WAAbkE,EAAIX,OACLY,EAAUnE,SAAWvE,KAAKC,MAAMwI,EAAIlE,UAAY,OAGlC,UAAbkE,EAAIxD,KACL,OAAO5H,MAAIwF,IAAIvJ,EAAO,CAACmP,EAAIxD,KAAMwD,EAAI7O,KAAM8O,GAG/C,IAAIb,EAAY,GAEhB,IACIA,EAAY,EAAKD,aAAaa,GAChC,MAAOjO,GACE4E,MAAIgF,QAAQqE,EAAInP,QACnBqP,QAAQC,MAAM,iBAAmBH,EAAInP,OAI7C,MAAkB,SAAbmP,EAAIxD,KACE5H,MAAIwF,IAAIvJ,EAAOmP,EAAI7O,IAAKiO,GAGjB,UAAbY,EAAIxD,MAIS,UAAbwD,EAAIxD,MAIS,OAAbwD,EAAIxD,KAPE5H,MAAIwF,IAAIvJ,EAAO,CAACmP,EAAIxD,KAAMwD,EAAI7O,KAAMiO,QAO/C,MAMCzI,MAAIgF,QAAQxK,GACNN,EAGJ+D,MAAIwF,IAAIvI,KAAMV,EAAKN,IAG9B2N,WAhQK,SAgQM3K,GACX,WADe1C,EACf,uDADqB,KAEboN,EAAU,GAqCd,OAnCA3J,MAAIkC,KAAKlC,MAAIwL,KAAKvM,EAAI,CAAC,MAAO,QAAS,eAAe,SAAChD,EAAOwP,GAC1D9B,EAAQxD,kBAAU,CACdyB,KAAM,OAAQ6C,KAAM,EAAOxO,GAAOM,IAAKkP,EAAKxP,MAAO,EAAKoO,aAAa,CAAEpO,UAAUiL,SAAU,KAAM0D,SAAU,EAAKX,iBAAiB,CAAEhO,cAI3I+D,MAAIkC,KAAKlC,MAAInE,IAAIoD,EAAR,QAAqB,KAAK,SAAChD,EAAOwP,GAEvC,IAAItC,EAAS,CACTvB,KAAM,QAAS6C,KAAM,EAAOxO,GAAOM,IAAKkP,EAAKvE,SAAU,KAAM0D,SAAU,EAAKX,iBAAiB,CAAEhO,WAG9F8F,MAAIgI,SAAS9N,KACdkN,EAAOlN,MAAQ,EAAKoO,aAAa,CAAEpO,WAGlC8F,MAAI2J,SAASzP,IACd+D,MAAIoJ,OAAOD,EAAQ,CAAElN,MAAO,EAAKoO,aAAapO,GAAQiL,SAAUlH,MAAInE,IAAII,EAAO,WAAY,QAG/F0N,EAAQxD,kBAAUgD,KAGtBnJ,MAAIkC,KAAKlC,MAAInE,IAAIoD,EAAR,QAAqB,KAAK,SAAChD,EAAOwP,GACvC9B,EAAQxD,kBAAU,CAAEyB,KAAM,QAAS6C,KAAM,EAAOxO,GAAOM,IAAKkP,EAAKxP,MAAO,EAAKoO,aAAa,CAAEpO,UAAUiL,SAAU,KAAM0D,SAAU,EAAKX,iBAAiB,CAAEhO,cAG5J+D,MAAIkC,KAAKlC,MAAInE,IAAIoD,EAAR,QAAqB,KAAK,SAAChD,EAAOwP,GACvC9B,EAAQxD,kBAAU,CAAEyB,KAAM,QAAS6C,KAAM,EAAOxO,GAAOM,IAAKkP,EAAKxP,MAAO,EAAKoO,aAAa,CAAEpO,UAAUiL,SAAU,KAAM0D,SAAU,EAAKX,iBAAiB,CAAEhO,cAG5J+D,MAAIkC,KAAKlC,MAAInE,IAAIoD,EAAR,KAAkB,KAAK,SAAChD,EAAOwP,GACpC9B,EAAQxD,kBAAU,CAAEyB,KAAM,KAAM6C,KAAM,EAAOxO,GAAOM,IAAKkP,EAAKxP,MAAO,EAAKoO,aAAa,CAAEpO,UAAUiL,SAAU,KAAM0D,SAAU,EAAKX,iBAAiB,CAAEhO,cAGpJ8F,MAAIgF,QAAQxK,IAIjBU,KAAK0O,WAAU,WACV3L,MAAIwF,IAAI,EAAR,UAAiBjJ,EAAjB,YAAgCoN,MAJ1BA,GAUfiC,QAlTK,SAkTGrP,GAEJ,IAAIN,EAAQ+D,MAAInE,IAAIoB,KAAR,UAAiBV,EAAjB,YAAgC,IAE5CyD,MAAIwF,IAAIvJ,EAAOkK,iBAAQ,CACnByB,KAAM,QAAS6C,KAAM,SAAUlO,IAAK,GAAIN,MAAO,GAAIiL,SAAU,OAGjElH,MAAIwF,IAAIvI,KAAR,UAAiBV,EAAjB,YAAgCN,IAGpC4P,WA7TK,SA6TMtP,EAAKkJ,GAEZzF,MAAI+K,MAAM9N,KAAV,UAAmBV,EAAnB,oBAAkCkJ,IAElCxI,KAAKwM,WAAWlN,IAGpBuP,gBApUK,SAoUWvP,GAEZiC,MAAIuN,OAAO9O,KAAKyL,SAAUnM,IAG9ByP,WAzUK,SAyUMzP,GAEP,IAAIN,EAAQ+D,MAAInE,IAAIoB,KAAMV,EAAK,IAE/ByD,MAAIwF,IAAIvJ,EAAO,OAASkK,iBAAQ,CAC5BmD,MAAsC,KAA9BvH,MAAIwH,KAAKtN,GAAOyF,OAAS,GAAU0E,MAAO,CAAE6B,WAAY,eAAiByB,QAAS,KAG9F1J,MAAIoJ,OAAOnM,KAAMV,EAAKN,IAG1BgQ,cApVK,SAoVS1P,GAEVyD,MAAI+K,MAAM9N,KAAMV,IAGpB2P,cAzVK,SAyVS3P,GACd,MACuB,CACfyD,MAAInE,IAAIoB,KAAMV,GAAMyD,MAAInE,IAAIoB,KAAMV,EAAIwJ,QAAQ,WAAY,MADzD9G,EADT,KACakN,EADb,KAKQC,EAAQC,OAAOC,UAMnB,GAJA9N,MAAI0D,KAAKiK,GAAQ,SAACI,GACTA,EAAIjD,MAAQrK,EAAGqK,QAAQ8C,EAAQI,KAAKC,IAAIL,EAAOG,EAAIjD,WAGvD8C,IAAUC,OAAOC,UAAtB,CAIA,IAAII,EAAclO,MAAIgB,KAAK2M,EAAQ,CAC/B7C,MAAO8C,IAGXpM,MAAIoJ,OAAOsD,EAAa,CACpBpD,MAAOrK,EAAGqK,QAGdtJ,MAAIoJ,OAAOnK,EAAI,CAAEqK,MAAO8C,MAG5BO,gBApXK,SAoXWpQ,GAChB,MACuB,CACfyD,MAAInE,IAAIoB,KAAMV,GAAMyD,MAAInE,IAAIoB,KAAMV,EAAIwJ,QAAQ,WAAY,MADzD9G,EADT,KACakN,EADb,KAKQC,EAAQC,OAAOO,UAMnB,GAJApO,MAAI0D,KAAKiK,GAAQ,SAACI,GACTA,EAAIjD,MAAQrK,EAAGqK,QAAQ8C,EAAQI,KAAKK,IAAIT,EAAOG,EAAIjD,WAGvD8C,IAAUC,OAAOO,UAAtB,CAIA,IAAIF,EAAclO,MAAIgB,KAAK2M,EAAQ,CAC/B7C,MAAO8C,IAGXpM,MAAIoJ,OAAOsD,EAAa,CACpBpD,MAAOrK,EAAGqK,QAGdtJ,MAAIoJ,OAAOnK,EAAI,CAAEqK,MAAO8C,OAKhCU,YAndW,SAmdC7N,EAAIhD,EAAOM,GACvB,WACQwQ,EAAY,CAIhBA,WAA0B,WACtB,EAAKjB,gBAAgBvP,KAGrByQ,EAAgB,CAChBC,KAAM,qBAGVD,QAA2B,WACvB,EAAKlB,gBAAgBvP,KAGrB2Q,EAAW,CACXD,KAAM,qBAGVC,QAAsB,WAClB,EAAKlB,WAAL,UAAmBzP,EAAnB,eAGA4Q,EAAc,CACdF,KAAM,qBAGVE,QAAyB,WACrB,EAAKlB,cAAc1P,KAGnB6Q,EAAc,CACdH,KAAM,qBAGVG,QAAyB,WACrB,EAAKlB,cAAc3P,KAGnB8Q,EAAgB,CAChBJ,KAAM,qBAGVI,QAA2B,WACvB,EAAKV,gBAAgBpQ,KAIzB,OACI,wDAAW,oBAAuBwQ,GAAlC,CACI,mCAAW,uBAAX,CACI,0BAAOC,EAAP,CAAsB,iCAAS,cAAT,UAE1B,mCAAW,mBAAX,CACKzQ,EAAIwJ,QAAQ,2BAA4B,MAAM,mCAAOxJ,EAAIwJ,QAAQ,2BAA4B,UAElG,mCAAW,mBAAX,CACI,0BAAOqH,EAAP,CAAoB,iCAAS,kBAAT,QACpB,0BAAOC,EAAP,CAAsB,iCAAS,oBAAT,UAE1B,mCAAW,kBAAX,CACI,0BAAOH,EAAP,CAAiB,iCAAS,cAAT,UAErB,mCAAW,qBAAX,CACI,0BAAOC,EAAP,CAAoB,iCAAS,eAAT,aAMpCG,WA5hBW,SA4hBArO,EAAIsN,EAAKhQ,GACpB,WACI,GAAa,SAARgQ,EACD,OAAO,KAGX,IAAI/J,EAAQjG,EAAIwJ,QAAQ,yBAA0B,MAC9C9J,EAAQ+D,MAAInE,IAAIoB,KAAKsQ,MAAb,UAAuBhR,EAAvB,oBAAsCgQ,GAAO,IAErDnG,EAAQpG,MAAImD,MAAMnD,MAAInE,IAAIuB,EAAO4K,oBAAf,UAAuCxF,EAAvC,UAAsD,KAE5E4D,EAAQpG,MAAIoJ,OAAO,GAAIhM,EAAOsK,iBAAkBtB,GAEhDpG,MAAIkC,KAAKkE,GAAO,SAACX,EAAMO,GACZjE,MAAIgF,QAAQtB,EAAI,MAAWjH,MAAIC,IAAIgH,EAAI,IAAMxJ,EAAM2L,QACtDxB,EAAQpG,MAAI+K,MAAM3E,EAAOJ,OAIjC,IAAIwH,EAAY,CACZC,KAAM,KAAMC,QAAStQ,EAAOmK,oBAGhCiG,sBAAmC,WAC/B,EAAK7B,WAAU,kBAAM,EAAKlC,WAAWlN,QAGrCoR,EAAW,CACXF,KAAM,KAAMG,aAAa,EAAMF,QAAStH,EAAOyH,aAAc,SAGjEF,sBAAkC,WAC9B,EAAKhC,WAAU,kBAAM,EAAKlC,WAAWlN,QAGrCuR,EAAY,CACZL,KAAM,KAAMC,QAAStQ,EAAOqK,oBAGhCqG,sBAAmC,WAC/B,EAAKnC,WAAU,kBAAM,EAAKlC,WAAWlN,QAKrCwR,GAFS/N,MAAInE,IAAIuK,EAAR,UAAkBnK,EAAMM,IAAxB,YAAuC,IAE9B,CAClBkR,KAAM,KAAMtF,MAAOlL,KAAKkL,MAAOD,MAAOjL,KAAKiL,MAG/C6F,sBAAyC,WACrC,EAAKpC,WAAU,kBAAM,EAAKlC,WAAWlN,SAGrCyR,EACA,sGAA0B/R,EAAMA,MAAhC,yCAA0BA,EAAMA,MAAhC,IAA2C8R,GAA3C,MAGAE,EAAgB,CAChBR,KAAM,KAAMS,QAAS,EAAGC,UAAU,EAGtCF,sBAAuC,WACnC,EAAKtC,WAAU,kBAAM,EAAKlC,WAAWlN,QAIrC,mCAAW,uBAAX,CACI,gCAAIyD,MAAInE,IAAIuK,EAAR,UAAkBnK,EAAMM,IAAxB,SAAoC,QAIhD,OACI,mCAAW,kBAAX,CACI,mCAAW,uBAAX,CACI,6FAAiBN,EAAM2L,KAAvB,yCAAiB3L,EAAM2L,KAAvB,IAAiC4F,GAAjC,QAEJ,mCAAW,sBAAX,CACI,6FAAiBvR,EAAMM,IAAvB,yCAAiBN,EAAMM,IAAvB,IAAgCoR,GAAhC,QAEJ,mCAAW,uBAAX,CACI,6FAAiB1R,EAAMwO,KAAvB,yCAAiBxO,EAAMwO,KAAvB,IAAiCqD,GAAjC,QAEJ,mCAAW,wBAAX,EACKE,KADL,2BACKA,MAEL,mCAAW,2BAAX,CACI,4FAAgB/R,EAAMiL,SAAtB,yCAAgBjL,EAAMiL,SAAtB,IAAoC+G,GAApC,QAEJ,mCAAW,yBAAX,CACI,kEAAc,KAAd,KAAwB,SAAxB,QAA0C,kBAAM,EAAKpC,WAAWtP,EAAKgQ,KAArE,wEAMhB6B,YA3nBW,SA2nBCnP,EAAIhD,EAAOM,GACvB,mBACI,IAAMiC,MAAIC,IAAIxB,KAAKyL,SAAUnM,GACzB,OAAO,KAGX,IAAI8R,EAAe,CACfX,QAAStQ,EAAO2K,iBAAkB6F,aAAa,EAAM3F,WAAY1L,EAAIwJ,QAAQ,yBAA0B,MAG3GsI,sBAAsC,SAACpS,GACnC,EAAK4O,cAActO,EAAKN,KAGxBqS,EAAa,CACbrG,WAAY1L,EAAIwJ,QAAQ,yBAA0B,MAGtDuI,sBAAoC,SAACrS,GACjC,EAAKgP,YAAY1O,EAAKN,KAGtBsS,EAAa,CACbtG,WAAYjI,MAAInE,IAAII,EAAO,qBAC3ByR,QAAS,CACL,OAAUzQ,KAAKuK,MAAM,UACrB,OAAUvK,KAAKuK,MAAM,WAI7B+G,sBAAoC,SAACtS,GACjC,EAAKiP,WAAW3O,EAAKN,KAGrBiR,EAAW,CACXtF,KAAM,UAAW6F,KAAM,KAAMe,MAAM,EAGvCtB,QAAsB,WAClB,EAAKtB,QAAQrP,EAAKN,KAGlBmK,EAAQpG,MAAInE,IAAII,EAAR,WAMZ,OAJO+D,MAAIvB,IAAIxC,EAAO,aAClBmK,EAAQnJ,KAAK2M,WAAW3K,EAAI1C,EAAKN,IAIjC,iEAAa,oBAAb,2BACI,qEAAiB,0BAAjB,MAAkD,EAAKuL,MAAM,SAA7D,IACI,4DAAa6G,EAAb,OADJ,mCAGA,qEAAiB,2BAAjB,MAAmD,EAAK7G,MAAM,UAA9D,IACI,2DAAY8G,EAAZ,OADJ,mCAGA,qEAAiB,2BAAjB,MAAmD,EAAK9G,MAAM,YAA9D,IACI,4DAAa+G,EAAb,IAA0B,EAAK/G,MAAM,iBAArC,oCADJ,mCAGA,mCAAW,2BAAX,CACI,4DAAa0F,EAAb,2EAEJ,mCAAW,2BAAX,CACK1O,MAAI0D,KAAKkE,GAAO,SAACX,EAAM8G,GAAP,OAAe,EAAKtF,KAAK,aAAV,CAAwBhI,EAAIsN,EAAKhQ,aAMjFkS,cAhsBW,SAgsBGxP,EAAIhD,EAAOM,GACzB,WACQmB,EAAY,CACZ,sBAGCc,MAAIC,IAAIxB,KAAKyL,SAAUnM,IACxBmB,EAAUgB,KAAK,WAGnB,IAAIgQ,EAAc,WACd,OAAO,EAAKzH,KAAK,gBAAV,CAA2BhL,EAAMyN,SAAW,GAA5C,UAAmDnN,EAAnD,cASX,MANuC,WAAlCN,EAAM0N,QAAN,YACD+E,EAAc,WACV,OAAQ,kCAAK,uEAAgBzS,EAAMyN,QAAtB,yCAAgBzN,EAAMyN,QAAtB,cAKjB,mCAAYhM,GAAZ,CACKT,KAAKgK,KAAK,cAAVhK,CAAyBgC,EAAIhD,EAAOM,GACpCU,KAAKgK,KAAK,cAAVhK,CAAyBgC,EAAIhD,EAAOM,GACpCmS,OAKbC,cA7tBW,SA6tBG1P,EAAI1C,GAClB,WACI,GAAKwF,MAAIgF,QAAQ9H,GACb,OAAO,KAGX,IAAImE,EAAQ5E,MAAI0D,KAAKlC,MAAI4O,KAAK5O,MAAImD,MAAMlE,GAAK,UAAU,SAAC4P,GAEpD,IAAIxH,EAAO,CACPrH,MAAInE,IAAI,EAAK0R,MAAOhR,EAAK,IACzByD,MAAInE,IAAI,EAAK0R,MAAO,CAAChR,EAAKsS,EAAEC,MAAO,IAF5B,UAGJvS,EAHI,YAGGsS,EAAEC,OAGhB,OAAO,EAAK7H,KAAK,iBAAV,aAA8BI,MAGzC,OACI,mCAAW,oBAAX,EACKjE,KADL,2BACKA,OAKb2L,WArvBW,WAuvBP,OACI,mCAAW,mBAAX,CACK9R,KAAKgK,KAAK,gBAAVhK,CAA2BA,KAAK0L,QAAS,cAKtDqG,WA9vBW,WA+vBX,eACQ9B,EAAW,CACXtF,KAAM,UAGVsF,QAAsB,WAClB,EAAKlB,WAAW,aAGhBiD,EACA,mCAAW,uBAAX,CACI,4DAAa/B,EAAb,IAAwBjQ,KAAKuK,MAAM,qBAAnC,qCAIJ0H,EAAY,CACZtH,KAAM,UAGVsH,QAAuB,WACnB,EAAKzG,MAAO,IAGZ0G,EACA,mCAAW,wBAAX,CACI,4DAAaD,EAAb,IAAyBjS,KAAKuK,MAAM,gBAApC,qCAIR,OACI,mCAAW,mBAAX,CACK,CAACyH,EAASE,MAKvBC,aAnyBW,WAqyBP,OACI,mCAAW,qBAAX,CACI,kCAAMnS,KAAK+L,WAAW/L,KAAK0L,cAKvCP,WA5yBW,WA6yBX,aACI,IAAOnL,KAAKmL,aAAgBnL,KAAKwL,KAC7B,OAAO,KAGX,IAAI4G,EAAiBpS,KAAKqS,OAAL,QAEhBvN,MAAIgF,QAAQsI,KACbA,EAAiB,mBAAgBE,EAAhB,EAAGA,YAGxB,IAKIC,EAAc,CACdvH,WAAYhL,KAAKkL,MAAOD,MAAOjL,KAAKiL,MAAOuH,OAAQxS,KAAKiM,iBAAiBjM,KAAK0L,UAOlF,OACI,4FAAgB,EAAKF,KAArB,yCAAgB,EAAKA,KAArB,IAda,CACbiH,MAAO,OACPnQ,OAAQ,SAYR,IACK8P,EAAe,CAAEE,OANN,WAChB,OAAS,gEAAiBC,EAAjB,UAIT,oCAMRD,OA50BW,WAk1BP,OACI,mCALY,CACZ,cAIA,CACK,CACGtS,KAAKgK,KAAK,aAAVhK,GAA2BA,KAAKgK,KAAK,aAAVhK,GAA2BA,KAAKgK,KAAK,eAAVhK,GAA6BA,KAAKgK,KAAK,aAAVhK,U,6EC/5BvGG,EAAOuS,gBAAiB,EAET,KAEXpU,KAAM,mBAENqU,OAAQ,CAEJC,WAAY,CACRC,aAASnL,IAKjBwD,MAAO,CACH1C,KAAM,SAGVW,MAAO,CAEHhD,MAAO,oBAGC,MAAO,KAIf2M,WAAY,oBAGJ,OAAO,KAIfC,UAAW,oBAGH,OAAO,IAIfC,WAAY,oBAGJ,OAAO,OAIfC,UAAW,oBAGH,OAAO,GAEXtI,KAAM,CAACyE,SAGX8D,UAAW,oBAGH,OAAO,GAEXvI,KAAM,CAACS,UAGX+H,UAAW,oBAGH,OAAO,GAEXxI,KAAM,CAACS,UAGXgI,QAAS,oBAGD,OAAO,IAEXzI,KAAM,CAACyE,SAGXiE,QAAS,oBAGD,OAAO,IAEX1I,KAAM,CAACyE,SAGXkE,UAAW,oBAGH,OAAO,GAEX3I,KAAM,CAACyE,SAGXmE,UAAW,oBAGH,OAAO,IAEX5I,KAAM,CAACyE,SAGXoE,QAAS,oBAGD,OAAO,GAEX7I,KAAM,CAACS,WAKfE,KAhHW,WAsHP,MAAO,CACHmI,MALQ,CACRC,MAAO,EAAGC,IAAK,EAAGC,KAAM,GAIjBC,OAAQ,GAAIpB,MAAO,EAAGnQ,OAAQ,EAAGwR,MAAM,IAItDlI,MAAO,CAEH,MAAS,WACL5L,KAAK+T,iBAKbC,YAnIW,WAqIPhU,KAAKiU,UAAY,GAGrBpI,QAxIW,WA2IP7L,KAAKkU,mBAITC,cA/IW,WAiJPnU,KAAKoU,qBAGTtI,QAAS,CAELoI,gBAFK,WAIDlU,KAAKqU,cAAgBC,YAAYtU,KAAKuU,eAClC,IAAOvU,KAAKuT,YAGpBa,kBARK,WAUDI,cAAcxU,KAAKqU,gBAGvBI,gBAbK,SAaW1L,GAEZ,OAAO/I,KAAK8S,YAIL9S,KAAKyT,MAAMC,MAAQ3K,GACtB/I,KAAKyT,MAAME,IAAM5K,GAGzB2L,eAvBK,SAuBU3L,GAEX,GAAO/I,KAAK2U,MAAMC,UAAlB,CAQA,KAJgB,IAAX7L,GAAgBA,GAAS/I,KAAKmG,MAAM1B,UACrCsE,EAAQ/I,KAAKmG,MAAM1B,SAGhBzE,KAAKyU,gBAAgB1L,GACxB,OAAO/I,KAAK6U,cAAc9L,GAG9B,IAAI+L,EAAW,gBAAH,OAAmB/L,EAAnB,MAEZ/I,KAAK2U,MAAMC,UAAUF,eAAeI,KAGxCD,cA1CK,SA0CS9L,GACd,WADqBgM,EACrB,uDAD6B,EAEzBjQ,MAAIiQ,OAAM,kBAAM,EAAKC,gBAAgBjM,KAAQgM,IAGjDC,gBA/CK,SA+CWjM,GAEZ,GAAO/I,KAAK2U,MAAMC,UAAlB,CAIA,IAAIK,EAAQ1F,KAAK2F,KAAKlV,KAAKmG,MAAM1B,OAC7BzE,KAAKyT,MAAMG,QAIC,KAFhB7K,EAAQwG,KAAK4F,MAAMpM,EAAQ/I,KAAKyT,MAAMG,QAEjB7K,GAASkM,KAC1BlM,EAAQkM,GAGZ,IAAIG,EAAYrM,EAAQ/I,KAAK8S,WAE7B,GAAK9S,KAAKiU,UAAYmB,EAClB,OAAOpV,KAAKqV,SAAS,EAAGD,GAG5BA,EAAYA,EAAYpV,KAAKsC,OACzBtC,KAAK8S,WAET9S,KAAKqV,SAAS,EAAGD,KAGrBC,SA1EK,WA2EL,WADSC,EACT,uDADa,EAAGjT,EAChB,uDADoB,EAAG0S,EACvB,uDAD+B,EAE3BjQ,MAAIiQ,OAAM,kBAAM,EAAKQ,WAAWD,EAAGjT,KAAI0S,IAG3CQ,WA/EK,WAgFL,IADWD,EACX,uDADe,EAAGjT,EAClB,uDADsB,EAEXrC,KAAK2U,MAAMC,WAIlB5U,KAAK2U,MAAMC,UAAUS,SAASC,EAAGjT,IAGrCmT,WAxFK,WA0FDxV,KAAKyT,MAAQ,CAAEC,MAAO,EAAGC,IAAK,IAGlCI,aA7FK,WA+FD,IAAO/T,KAAK2U,MAAMC,UACd,OAAO9P,MAAIiQ,MAAM/U,KAAK+T,cAG1B/T,KAAKiU,UAAYjU,KAAK2U,MAAMC,UACxBD,MAAMlI,QAAQwH,UAElBnP,MAAI2Q,MAAMzV,KAAK0V,gBAGnBnB,eAzGK,WA2GD,GAAOvU,KAAKsT,UAAZ,CAIA,IAAIW,EAAYjU,KAAK2U,MAAMC,UACvBD,MAAMlI,QAAQwH,UAElB,GAAKA,IAAcjU,KAAKiU,UAAxB,CAIAjU,KAAKiU,UAAYA,EAEjB,IAAI0B,EAAS3V,KAAK2U,MAAMC,UAAUtU,IAAIsV,aAClC5V,KAAK2U,MAAMC,UAAUtU,IAAIqG,aAEVsN,EAAY,GAAKA,EAAYjU,KAAKsC,OAC/CtC,KAAK2U,MAAMkB,MAAMC,aAAeH,GAMtC7Q,MAAI2Q,MAAMzV,KAAK0V,kBAGnBK,aArIK,SAqIQzT,EAAQmQ,EAAOzQ,GAExBhC,KAAKyS,MAAQA,EACbzS,KAAKsC,OAASA,EAEdwC,MAAI2Q,MAAMzV,KAAK0V,gBAInBA,cA9IK,WA+IL,WADcM,IACd,yDAeI,GAdKlR,MAAIgF,QAAQ9J,KAAKiW,SAClBjW,KAAKiW,MAAQtR,KAAKC,OAGjBD,KAAKC,MAAQ5E,KAAKiW,MAAQ,KAC3BD,GAAQ,GAGZE,aAAalW,KAAKmW,IAElBnW,KAAKmW,GAAKC,YAAW,WACjB,EAAKV,eAAc,KACpB,KAEEM,EAAL,CAIAE,aAAalW,KAAKmW,IAElB,IAAIvC,EAAO,EAOX,GALK5T,KAAK+S,YACNa,EAAOrE,KAAK4F,OAAOnV,KAAKyS,MAAQzS,KAAKiT,WACjCjT,KAAK+S,YAAc,IAGpB/S,KAAKsT,WAAatT,KAAKsT,UAAYtT,KAAKmG,MAAM1B,OACjD,OAAOzE,KAAKyT,MAAQ,CAAEC,MAAO,EAAGC,IAAK,EAAGC,QAG5C,IAAIqB,EAAQ1F,KAAK2F,KAAKlV,KAAKmG,MAAM1B,OAC3BmP,GAEFyC,EAAc9G,KAAK+G,MAAOtW,KAAKsC,OAC/BtC,KAAK8S,WAAc,IAEnByD,EAAYhH,KAAK+G,MAAMtW,KAAKiU,UAC5BjU,KAAK8S,YAEL0D,EAAUjH,KAAK+G,OAAOtW,KAAKiU,UAC3BjU,KAAKsC,QAAUtC,KAAK8S,YAEpBY,EAAS6C,EAAYF,EAEpB3C,EAAQ,IACTA,EAAQ,GAGZ,IAAIC,EAAM6C,EAAUH,EAEf1C,EAAMsB,IACPtB,EAAMsB,GAGV,IAAIxB,EAAQ,CAAEC,QAAOC,MAAKC,QAErB9O,MAAI2R,QAAQzW,KAAKyT,MAAOA,KAI7BzT,KAAKyT,MAAQA,MAKrBiD,WAtWW,SAsWAC,GAEPA,EAAO5N,MAAS4N,EAAO5N,MACnB/I,KAAKyT,MAAMC,MAEf,IAAIkD,EAAYrH,KAAK+G,MAAMtW,KAAK8S,WAC5B6D,EAAO5N,OAEPqJ,EAAiBpS,KAAKqS,OAAL,QAEhBrS,KAAKgT,aACNZ,EAAiBpS,KAAKgT,YAG1B,IAAI7J,EAAQ,CACR,aAAcwN,EAAO5N,OAGpB/I,KAAK4S,YAAc5S,KAAKwT,UACzBrK,EAAM7J,IAAMqX,EAAO3X,MAAMgB,KAAK4S,WAAWnM,aAG7C,IAAI7D,EAAQ,GAiBZ,OAfa5C,KAAKsT,WAAatT,KAAKsT,WAChCtT,KAAKmG,MAAM1B,QAEoB,IAApBzE,KAAKyT,MAAMG,OACtBhR,EAAMC,IAAM+T,EAAY,MAGvB5W,KAAK8S,aACNlQ,EAAMN,OAAStC,KAAK8S,WAAa,MAGZ,IAApB9S,KAAKyT,MAAMG,OACZhR,EAAM6P,MAAQzS,KAAK+S,UAAY,MAI/B,wDAAW,0BAAX,MAA4CnQ,GAAWuG,GAAvD,CACMiJ,EAAeuE,MAK7BE,WApZW,WAqZX,WACQ1Q,EAAQ5E,MAAIuV,MAAM9W,KAAKmG,MAAOnG,KAAKyT,MAAMC,MACzC1T,KAAKyT,MAAME,KAMf,QAJO3T,KAAKsT,WAAatT,KAAKsT,UAAYtT,KAAKmG,MAAM1B,UACjD0B,EAAQnG,KAAKmG,OAGV5E,MAAI0D,KAAKkB,GAAO,SAACnH,EAAO+J,GAC3B,OAAO,EAAKiB,KAAK,aAAV,CAAwB,CAAEhL,QAAO+J,cAIhDgO,eAlaW,SAkaIJ,GACf,WACQC,EAAYrH,KAAK+G,MAAMtW,KAAK8S,YAC3B6D,EAAO5N,MAAQ/I,KAAKyT,MAAMC,QAE3B9Q,EAAQ,GAEP5C,KAAKsT,WAAatT,KAAKsT,WAAatT,KAAKmG,MAAM1B,SAChD7B,EAAMC,IAAM+T,EAAY,MAG5B,IAAII,EAAUL,EAAO5N,MAAQ/I,KAAKyT,MAAMC,MAExC,OACI,wCAAeiD,EAAO5N,MAAtB,MAAmC,yBAAnC,MAAmEnG,GAAnE,CAEQrB,MAAI0D,KAAK0R,EAAOM,OAAO,SAACjY,EAAO+J,GAC3B,OAAO,EAAKiB,KAAK,aAAV,CAAwB,CAC3BhL,QAAO+J,MAAOA,EAAQiO,UAQ9CE,WA5bW,WA6bX,WACQC,EAAS5V,MAAI0V,MAAMjX,KAAKmG,MACxBnG,KAAKyT,MAAMG,MAEXzN,EAAQ5E,MAAIuV,MAAMK,EAAQnX,KAAKyT,MAAMC,MACrC1T,KAAKyT,MAAME,KAMf,QAJO3T,KAAKsT,WAAatT,KAAKsT,UAAYtT,KAAKmG,MAAM1B,UACjD0B,EAAQgR,GAGL5V,MAAI0D,KAAKkB,GAAO,SAAC8Q,EAAOlO,GAC3B,OAAO,EAAKiB,KAAK,iBAAV,CAA4B,CAAEiN,QAAOlO,cAIpDqO,YA7cW,WA+cP,OAAOpX,KAAKmG,MAAM1B,OAIO,IAApBzE,KAAKyT,MAAMG,KACL5T,KAAKgK,KAAK,aAAVhK,GAGJA,KAAKgK,KAAK,aAAVhK,GAPIA,KAAKqS,OAAOgF,OAASrX,KAAKqS,OAAOgF,SAAW,MAU3D/E,OA1dW,WA2dX,MACQ7R,EAAY,CACZ,qBAGCT,KAAKsT,WAAatT,KAAKsT,WAAatT,KAAKmG,MAAM1B,QAChDhE,EAAUgB,KAAK,+BAGnB,I,EAAI0H,EAAQ,CACR+J,UAAWlT,KAAKkT,UAChBC,UAAWnT,KAAKmT,UAChBC,QAASpT,KAAKoT,QACdC,QAASrT,KAAKqT,QACd0C,aAAc/V,KAAK+V,cAGnBnT,EAAQ,CACR,aAAc,UAGd0U,EAAc/H,KAAK2F,KAAKlV,KAAKmG,MAAM1B,OAASzE,KAAKyT,MAAMG,MACvD5T,KAAK8S,WAMT,OAJK9S,KAAKsT,WAAatT,KAAKmG,MAAM1B,SAC9B7B,EAAMN,OAASiN,KAAK2F,KAAKoC,EAActX,KAAKoT,SAAW,MAIvD,2FAAmB3S,EAAnB,IAAkC,aAAgB0I,G,qBAAlD,EACI,iCAAS,QAAT,MAAuB,2BAAvB,MAAyDvG,GAAzD,CACM5C,KAAKgK,KAAK,cAAVhK,O,6EAFV,uC,4MCzfZG,EAAOoX,cAAe,EAEP,KAEXjZ,KAAM,YAEN4M,MAAO,CACH1C,KAAM,SAGVW,MAAO,CAEHhD,MAAO,oBAGC,MAAO,KAIf6M,WAAY,oBAGJ,OAAO,OAIfwE,UAAW,oBAGH,OAAO,GAEX7M,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXC,QAAS,oBAGD,OAAO,OAIfC,SAAU,oBAGF,MAAO,KAIfC,SAAU,oBAGF,MAAO,KAIfzQ,OAAQ,oBAGA,OAAO,GAEXwD,KAAM,CAACS,UAGX7F,MAAO,oBAGC,MAAO,CAAC,YAEZoF,KAAM,CAACkN,QAGXpS,YAAa,oBAGL,MAAO,CAAC,YAEZkF,KAAM,CAACkN,QAGX9V,SAAU,oBAGF,OAAO,SAACO,GAAD,MAAqB,KAATA,KAI3BwV,SAAU,oBAGF,OAAO,GAEXnN,KAAM,CAACS,UAGX2M,cAAe,oBAGP,OAAO,GAEXpN,KAAM,CAACS,UAGX0H,WAAY,oBAGJ,OAAO,IAEXnI,KAAM,CAACyE,SAGX4I,WAAY,oBAGJ,OAAO,IAEXrN,KAAM,CAACyE,SAGXkE,UAAW,oBAGH,OAAO,GAEX3I,KAAM,CAACyE,SAGXoE,QAAS,oBAGD,OAAO,GAEX7I,KAAM,CAACS,UAGX8H,UAAW,oBAGH,OAAO,GAEXvI,KAAM,CAACS,UAGX+H,UAAW,oBAGH,OAAO,GAEXxI,KAAM,CAACS,UAGXgI,QAAS,oBAGD,OAAO,IAEXzI,KAAM,CAACyE,SAGXiE,QAAS,oBAGD,OAAO,IAEX1I,KAAM,CAACyE,SAGX6I,kBAAmB,oBAGX,OAAO,IAIfxR,WAAY,oBAGJ,MAAO,MAEXkE,KAAM,CAAC8M,SAGX/O,UAAW,oBAGH,MAAO,YAEXiC,KAAM,CAAC8M,SAGXS,cAAe,oBAGP,OAAO,IAIfC,aAAc,oBAGN,OAAO,GAEXxN,KAAM,CAACS,UAGXgN,aAAc,oBAGN,OAAO,GAEXzN,KAAM,CAACS,UAGXiN,aAAc,oBAGN,OAAO,GAEX1N,KAAM,CAACS,UAGXnD,cAAe,oBAGP,OAAO,SAAC/C,GAAD,OAAUA,KAIzByD,YAAa,oBAGL,OAAO,GAEXgC,KAAM,CAACS,UAGXvD,WAAY,oBAGJ,OAAO,IAIf5B,WAAY,oBAGJ,OAAO,IAIfqS,YAAa,oBAGL,OAAO,kBAAM,KAIrBC,UAAW,oBAGH,OAAO,kBAAM,KAIrB1T,UAAW,oBAGH,OAAO,kBAAM,KAIrB2T,UAAW,oBAGH,OAAO,GAEX7N,KAAM,CAACS,UAGXqN,iBAAkB,oBAGV,OAAO,KAEX9N,KAAM,CAACyE,UAKfsJ,QA9SW,WAgTP,MAAO,CACH9F,WAAY5S,OAIpBsL,KArTW,WAuTP,MAAO,CACHtH,IAAKkF,iBACLyP,SAAU,GACVnS,SAAU,GACVoS,QAAS,GACT5R,WAAY,GACZ6R,UAAW,GACXC,cAAe,KACfC,aAAc,KACdC,YAAahZ,KAAK0X,QAClBuB,aAAcjZ,KAAK4X,SACnB7R,aAAc/F,KAAK2X,WAI3B3D,YAtUW,WAwUPhU,KAAKkZ,KAAO,IAAI/V,IAAanD,MAE7BO,MAAIgC,KAAK9E,QAAQgG,GAAG,UAChBzD,KAAKmZ,kBAAmBnZ,KAAKoZ,EAAEpV,KAEnCzD,MAAIgC,KAAK9E,QAAQgG,GAAG,QAChBzD,KAAKqZ,gBAAiBrZ,KAAKoZ,EAAEpV,MAGrC6H,QAjVW,WAmVP,IAAIxI,EAAQrD,KAAK2U,MAAM2E,gBACnB3E,MAAMkB,MAEV7V,KAAKkZ,KAAKK,SAASlW,GAEnBrD,KAAKwZ,OAAO,eAAgBxZ,KAAKyZ,cAC7B,CAAEC,MAAM,IAEZ1Z,KAAK2Z,mBAGTxF,cA9VW,WAgWPnU,KAAKkZ,KAAKU,aAEVrZ,MAAIgC,KAAK5B,UAAUwD,IAAI,UAAW,KAAMnE,KAAKgE,KAC7CzD,MAAIgC,KAAK5B,UAAUwD,IAAI,QAAS,KAAMnE,KAAKgE,MAG/C4H,MAAO,CAEHzF,MAFG,WAIMnG,KAAKiY,mBACNjY,KAAKqV,WAGTrV,KAAK2Z,mBAGTnT,SAXG,WAaCxG,KAAK6Z,kBAGTjC,SAhBG,SAgBM5Y,GAELgB,KAAKiZ,aAAeja,EAEpBgB,KAAK6Z,kBAGTlC,SAvBG,SAuBM3Y,GAELgB,KAAK+F,aAAe/G,GAGxB0Y,QA5BG,SA4BK1Y,GAEJgB,KAAKgZ,YAAcha,IAK3B8M,QAAS,CAELqN,kBAFK,SAEajZ,GAEdqB,MAAIuY,IAAI9Z,KAAK2Y,SAAUzY,EAAE6Z,QAG7BV,gBAPK,SAOWnZ,GAEZqB,MAAI2B,OAAOlD,KAAK2Y,SAAUzY,EAAE6Z,QAGhCN,cAZK,WAcD,IAAOzZ,KAAK+F,aAAatB,OACrB,OAAOzE,KAAK8Y,cAAgB,KAGhC9Y,KAAK8Y,cAAgBvX,MAAIgB,KAAKvC,KAAKwG,SAAd,KAChBxG,KAAKyG,WAAazG,KAAK+F,aAAa,MAI7CiU,WAvBK,SAuBM9U,GAEPnC,MAAIwF,IAAIvI,KAAMkF,EAAKlG,MAAM0H,MAAOxB,EAAKjC,MAErCjD,KAAKgG,MAAM,eAAgBhG,KAAKmG,QAGpC8T,YA9BK,SA8BOvQ,GACZ,WACQ1K,EAAQuC,MAAIgB,KAAKvC,KAAKwG,UAAU,SAACvD,GACjC,OAAOA,EAAK,EAAKwD,cAAgBiD,KAGrC,OAAO1K,EAIA,CACHA,QAAOiE,KAAMF,MAAInE,IAAIoB,KAAMhB,EAAM0H,MAAO,OAJjC,MAQfiT,gBA7CK,WA+CD3Z,KAAKwG,SAAWxG,KAAKkZ,KAAK9P,OAAOpJ,KAAKmG,OAEjChG,EAAOoX,cACRlJ,QAAQ6L,IAAI,gCAAkCla,KAAKwG,SAAS/B,SAIpEoV,eAtDK,WAuDL,WACI7Z,KAAK4Y,QAAUrX,MAAIkH,OAAOzI,KAAKwG,UAAU,SAACtB,GACtC,OAAO3D,MAAI4Y,SAAS,EAAKlB,aAAc/T,EAAK6B,QAAQ+P,MAAM,GAAI,QAItEsD,SA7DK,SA6DI1Q,GAEL,OAAOnI,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACF5Y,KAAKyG,WAAaiD,KAI3B4Q,gBApEK,WAsED,OAAOta,KAAKgZ,YAILzX,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACF5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAJjC,GAQhB4O,SA/EK,WAgFL,WADSC,EACT,uDADa,EAAGjT,EAChB,uDADoB,EAEhB,IAAOrC,KAAK2U,MAAM2E,gBACd,OAAOxU,MAAIiQ,OAAM,kBAAM,EAAKM,SAASC,EAAGjT,MAG5CrC,KAAK2U,MAAM2E,gBAAgBjE,SAASC,EAAGjT,IAG3CwS,cAxFK,SAwFS9L,GACd,WACI,IAAO/I,KAAK2U,MAAM2E,gBACd,OAAOxU,MAAIiQ,OAAM,kBAAM,EAAKF,cAAc9L,MAG9C/I,KAAK2U,MAAM2E,gBAAgB5E,eAAe3L,IAG9CwR,YAjGK,SAiGOrV,GACZ,WACQsV,EAAUxa,KAAKuY,UAMnB,OAJOzT,MAAIC,WAAWyV,KAClBA,EAAU,kBAAM,EAAKjC,YAGlBiC,EAAQtV,IAGnBuV,YA5GK,SA4GOvV,GAER,OAAO3D,MAAIC,IAAIxB,KAAK6Y,UAAW3T,EAAKlG,MAAMgB,KAAKyG,cAGnDiU,cAjHK,SAiHS1b,GACd,WADqBM,EACrB,uDAD2B,KAEvB4W,aAAalW,KAAK2a,SAGlB3a,KAAK6Y,UAAY,GAEjBtX,MAAIqZ,UAAU5a,KAAKmG,MAAOnG,KAAK0I,WAAW,SAACxD,EAAM6B,GAE7C,IAAIoH,EAAMjJ,EAEJJ,MAAIgF,QAAQxK,KACd6O,EAAMpL,MAAInE,IAAIuP,EAAK7O,IAGhBwF,MAAIC,WAAW/F,KAClBA,EAAQ,SAACmP,GAAD,OAASA,IAAQnP,IAGtBA,EAAMmP,KAIb5M,MAAI0D,KAAK8B,GAAS,SAAC9D,GACf1B,MAAIuY,IAAI,EAAKb,aAAchW,EAAK,EAAKwD,gBAGzClF,MAAIuY,IAAI,EAAKjB,UAAW3T,EAAK,EAAKuB,iBAG/BzG,KAAK6Y,UAAUpU,SAItBzE,KAAK0O,UAAU1O,KAAK6a,mBAEpB7a,KAAK2a,QAAUvE,YAAW,kBACtB,EAAKyC,UAAY,KAAI7Y,KAAKyY,kBAE9BzY,KAAK6Z,mBAGTgB,kBA3JK,WA6JD,GAAO7a,KAAK6Y,UAAUpU,OAAtB,CAIA,IAAIsE,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAalF,MAAIyG,MAAMhI,KAAK6Y,aAGtC7Y,KAAK2U,MAAM2E,gBAAgB5E,eAAe3L,KAG9C+R,UAxKK,SAwKK5V,GAEN,OAAOlF,KAAKkY,eAAiBlY,KAAKgZ,aAC9B9T,EAAKlG,MAAMgB,KAAKyG,cAAgBzG,KAAKgZ,YAAYhZ,KAAKyG,aAG9DsU,WA9KK,SA8KM7V,GAEUlF,KAAKgZ,aAClBhZ,KAAKgZ,YAAYhZ,KAAKyG,cAAgBvB,EAAKlG,MAAMgB,KAAKyG,cAM1DzG,KAAKgG,MAAM,iBACPhG,KAAKgZ,YAAc9T,EAAKjC,MAE5Bc,QAAMsB,KAAK,wBAAyBH,EAAKjC,KAAMjD,KAAKgE,OAGxDgX,cA7LK,SA6LSjS,GAEV,IAAIrC,EAAQ3D,MAAInE,IAAIoB,KAAK4Y,QACrB,CAAC7P,EAAO,UAEZ,IAAOrC,EACH,OAAO1G,KAAKgb,cAAc,GAG9B,IAAI/X,EAAOF,MAAInE,IAAIoB,KAAM0G,GAEzB1G,KAAK2U,MAAM2E,gBACN5E,eAAe3L,GAEpB/I,KAAKgG,MAAM,iBACPhG,KAAKgZ,YAAc/V,GAEvBc,QAAMsB,KAAK,wBAAyBpC,EAAMjD,KAAKgE,MAGnDiX,eAjNK,WAmND,GAAOjb,KAAK4Y,QAAQnU,OAApB,CAMA,IAAOzE,KAAKgZ,YACR,OAAOhZ,KAAKgb,cAHJ,GAMZ,IAAIjS,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAG7B,IAAXsC,GACDA,IAGCA,GAAS/I,KAAK4Y,QAAQnU,SACvBsE,EAfQ,GAkBZ/I,KAAKgb,cAAcjS,KAGvBmS,eA5OK,WA8OD,GAAOlb,KAAK4Y,QAAQnU,OAApB,CAIA,IAAIyJ,EAAQlO,KAAK4Y,QAAQnU,OAAS,EAElC,IAAOzE,KAAKgZ,YACR,OAAOhZ,KAAKgb,cAAc9M,GAG9B,IAAInF,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAG7B,IAAXsC,GACDA,IAGCA,EAAQ,IACTA,EAAQmF,GAGZlO,KAAKgb,cAAcjS,KAGvBoS,YAvQK,WAyQD,MAAO,CAAC,wBAAyBnb,KAAKgE,MAG1CoX,WA5QK,SA4QMlW,GACX,WACQmW,EAAYrb,KAAKsY,YAMrB,OAJOxT,MAAIC,WAAWsW,KAClBA,EAAY,kBAAM,EAAK/C,eAGlB+C,EAAUnW,IAAUlF,KAAK8Y,eAC9B5T,EAAKlG,MAAMwK,QAAUxJ,KAAK8Y,cAActP,OAGhD8R,YAxRK,SAwROpW,GAER,QAAUlF,KAAKub,YAAYrW,GAAMT,QAGrC8W,YA7RK,SA6ROrW,GAER,OAAOnC,MAAInE,IAAIsG,EAAKjC,KAAMjD,KAAK0I,UAAW,KAG9C8S,WAlSK,SAkSMtW,GAEP,OAAO3D,MAAIC,IAAIxB,KAAKiZ,aAAc/T,EAAKlG,MAAMgB,KAAKyG,cAGtDgV,WAvSK,SAuSMvW,GAEAlF,KAAKsb,YAAYpW,KAIxB3D,MAAIuN,OAAO9O,KAAKiZ,aAAc/T,EAAKlG,MAAMgB,KAAKyG,aAE9CzG,KAAK6Z,mBAGT6B,cAlTK,WAoTD,GAAO1b,KAAKgZ,YAAZ,CAIA,IAAInQ,EAAW9F,MAAInE,IAAIoB,KAAKgZ,YACxBhZ,KAAK0I,WAEJ5D,MAAIgF,QAAQjB,KAIjBtH,MAAIuN,OAAO9O,KAAKiZ,aACZjZ,KAAKgZ,YAAYhZ,KAAKyG,aAE1BzG,KAAK6Z,oBAGTvT,WArUK,SAqUMpB,GAEP,OAAO3D,MAAIC,IAAIxB,KAAK+F,aAAcb,EAAKlG,MAAMgB,KAAKyG,cAGtDkV,gBA1UK,WAgVD,OAJcpa,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GACpC,OAASA,EAAKuG,SAGH/E,SAAWzE,KAAK+F,cAGnC6V,gBAnVK,WAyVD,OAJcra,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GACpC,OAASA,EAAKuG,SAGH/E,SAAWzE,KAAK+F,cAC3B/F,KAAK+F,cAGb8V,iBA7VK,SA6VY3W,GAEb3D,MAAIuN,OAAO9O,KAAK+F,aAAc/F,KAAK+Y,aAC/B7T,EAAKlG,MAAMgB,KAAKyG,cAGxBqV,gBAnWK,SAmWW5W,GAChB,WACQ6W,EAAW,CAAC,GAAI,GAAIC,GAAW,EAE5BlX,MAAIgF,QAAQ9J,KAAK+Y,gBACpBgD,EAAS,GAAK/b,KAAKoa,SAASpa,KAAK+Y,eAGrCgD,EAAS,GAAK/b,KAAKoa,SAASlV,EAAKlG,MAAMgB,KAAKyG,aAEvCsV,EAAS,GAAKA,EAAS,KACxBC,GAAW,GAGRA,IACHD,EAAW,CAACA,EAAS,GAAG,EAAGA,EAAS,GAAG,IAG3Cxa,MAAI0D,KAAKjF,KAAKmG,MAAM2Q,MAAMiF,EAAS,GAAIA,EAAS,KAAK,SAAC9Y,EAAM8F,GACxDxH,MAAIuN,OAAO,EAAK/I,aAAc9C,EAAK,EAAKwD,gBAG5CzG,KAAK+Y,aAAe7T,EAAKlG,MAAMgB,KAAKyG,aAGxCwV,WA5XK,SA4XM/W,GAEFlF,KAAKob,WAAWlW,MAInB3D,MAAIC,IAAIxB,KAAK2Y,SAAU,KAAO3Y,KAAKqY,aACjCrY,KAAK6b,iBAAiB3W,GAAQlF,KAAK8b,gBAAgB5W,GAEvDlF,KAAKgG,MAAM,kBAAmBhG,KAAK+F,gBAGvCmW,UAxYK,WAyYL,WACQhQ,EAAS3K,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GAEnC,IAAIoY,EAAY,EAAK/C,YAEdxT,MAAIC,WAAWsW,KAClBA,EAAY,kBAAM,EAAK/C,cAG3B,IAAI6D,EAAM,CACNnd,MAAOiE,EAAMA,KAAMF,MAAInE,IAAI,EAAMqE,EAAKyD,QAG1C,OAASzD,EAAKuG,OAAS6R,EAAUc,MAGjCJ,EAAWxa,MAAI0D,KAAKiH,GAAQ,SAACjJ,GAC7B,OAAOA,EAAK,EAAKwD,eAGrB,GAAKsV,EAAStX,SAAWzE,KAAK+F,aAAatB,OACvC,OAAOzE,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAe,IAG7D/F,KAAK+Y,aAAe,KAEpB/Y,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAegW,IAGtDK,YAtaK,WAwaIpc,KAAK+F,aAAatB,QACnBzE,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAe,KAI1DsW,YA7aK,WA+aMrc,KAAKwY,WAIZjY,MAAIgC,KAAK5B,UAAU8C,GAAG,UAClBzD,KAAKsc,UAAWtc,KAAKgE,MAG7BuY,cAvbK,WAybMvc,KAAKwY,WAIZjY,MAAIgC,KAAK5B,UAAUwD,IAAI,UACnB,KAAMnE,KAAKgE,MAGnBsY,UAjcK,SAicKzb,EAAOmB,GAERzB,MAAIgC,KAAKP,GAAIuC,QAAQ,WAIL,KAAhB1D,EAAMkZ,QACPlZ,EAAMwD,iBACNxD,EAAM2b,kBACNxc,KAAK0b,iBAGY,KAAhB7a,EAAMkZ,QACPlZ,EAAMwD,iBACNxD,EAAM2b,kBACNxc,KAAKkb,kBAGY,KAAhBra,EAAMkZ,QACPlZ,EAAMwD,iBACNxD,EAAM2b,kBACNxc,KAAKib,qBAMjBwB,YAr2BW,WAs2BX,WACI,OACI,0EAAwBzc,KAAK+X,cAA7B,MAAkD,qBAAlD,2BACO,EAAK1F,OAAOgF,OAAS,EAAKhF,OAAOgF,SAAW,EAAK9M,MAAM,mBAKtEmM,WA92BW,SA82BAvN,GAEP,OACI,kEAAmBpG,MAAIkG,OAAOE,EAAO,CAAC,UAAtC,CACQ0J,QAAS7S,KAAKqS,OAAL,WAKzBC,OAv3BW,WAy3BP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAGnB3K,KAAKmG,MAAM1B,QACdhE,EAAUgB,KAAK,WAGnB,IAKI0H,EAAQpG,MAAIwL,KAAKvO,KAAK0c,OALb,CACT,YAAa,cAAe,aAC5B,YAAa,YAAc,UAAW,UAAW,WAGX,CACtCvW,MAAOnG,KAAK4Y,QACZ+D,aAAc3c,KAAKqc,YACnBO,aAAc5c,KAAKuc,gBAGvB,OACI,+FAAsB,kBAAtB,MAA+C9b,GAAe0I,GAA9D,CACQ0J,QAAS7S,KAAKgK,KAAK,cAAeqN,MAAOrX,KAAKgK,KAAK,qB,qMCn5BxD,KAEX1L,KAAM,gBAENqU,OAAQ,CAEJC,WAAY,CACRC,aAASnL,IAKjBgR,QAZW,WAcP,MAAO,CACHmE,eAAgB7c,OAIxBmJ,MAAO,CAEHnK,MAAO,CACH8d,UAAU,IAKlBC,SAAU,CAEN/Y,IAFM,WAIF,OAAOjB,MAAInE,IAAIoB,KAAKhB,MAAOgB,KAAK4S,WAAWnM,aAG/CxD,KAPM,WASF,OAAOF,MAAInE,IAAIoB,KAAK4S,WAAY5S,KAAKhB,MAAM0H,QAG/CsW,MAZM,WAaF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAjBM,WAkBF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAtBM,WAuBF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QA3BM,WA4BF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KA7DW,WA+DP,MAAO,CACHC,MAAQvL,KAAK4S,WAAWkF,WAIhCjM,QApEW,WAqEX,WACI7L,KAAKiW,MAAQG,YAAW,WAEf,EAAKxD,WAAW4E,YACjB,EAAKvB,MAAQG,YAAW,WACpB,EAAKxD,WAAWsG,KAAKoE,SAAS,KAC/B,KAGP,EAAK/R,MAAO,IACb,IAGP4I,cAlFW,WAoFP+B,aAAalW,KAAKiW,OAElBjW,KAAK4S,WAAWsG,KAAKjS,WAAWjH,OAGpC8L,QAAS,CAELyR,KAFK,WAID,OAAOvd,KAAK4S,WAAWsG,KAAKsE,SAASxd,OAGzCkD,OAPK,WASD,OAAOlD,KAAK4S,WAAWsG,KAAKjT,WAAWjG,OAG3Csb,YAZK,WAcD,OAAOtb,KAAK4S,WAAW0I,YAAYtb,OAGvCob,WAjBK,WAmBD,OAAOpb,KAAK4S,WAAWwI,WAAWpb,OAGtCya,YAtBK,WAwBD,OAAOza,KAAK4S,WAAW6H,YAAYza,OAGvC8a,UA3BK,WA6BD,OAAO9a,KAAK4S,WAAWkI,UAAU9a,OAGrCua,YAhCK,WAkCD,OAAOva,KAAK4S,WAAW2H,YAAYva,OAGvCwb,WArCK,WAuCD,OAAOxb,KAAK4S,WAAW4I,WAAWxb,OAGtCyb,WA1CK,WA4CDzb,KAAK4S,WAAW6I,WAAWzb,OAG/BsG,WA/CK,WAiDD,OAAOtG,KAAK4S,WAAWtM,WAAWtG,OAGtCic,WApDK,WAsDDjc,KAAK4S,WAAWqJ,WAAWjc,OAG/Byd,QAzDK,SAyDG5c,GAEWN,MAAIgC,KAAK1B,EAAMyD,QACzBC,QAAQ,8BAMbvE,KAAK4S,WAAWmI,WAAW/a,MAEtBuB,MAAIC,IAAIrB,EAAOmB,QAAS,KACzBtB,KAAK4S,WAAWqJ,WAAWjc,MAG/BA,KAAK4S,WAAW5M,MAAM,YAAahG,QAGvC0d,WA3EK,WA6ED1d,KAAK4S,WAAWmI,WAAW/a,MAE3BA,KAAK4S,WAAW5M,MAAM,eAAgBhG,QAK9CwR,cA7KW,WA+KP,IAAI/Q,EAAY,CACZ,4BAGJ,IAAOT,KAAKuL,KACR,OAAQ,mCAAY9K,GAAZ,MAGZ,IAAI0I,EAAQ,CACRnK,MAAOgB,KAAKhB,MACZiE,KAAMjD,KAAKiD,KACXsa,KAAMvd,KAAKud,KACXra,OAAQlD,KAAKkD,QAGbkP,EAAiBpS,KAAKqS,OAAL,QAMrB,OAJKrS,KAAK4S,WAAWI,aACjBZ,EAAiBpS,KAAK4S,WAAWI,YAIjC,mCAAYvS,GAAZ,CACM2R,EAAejJ,MAK7BwU,aA3MW,WA6MP,IAAIlL,EAAQzS,KAAKhB,MAAMwK,MACnBxJ,KAAK4S,WAAWoF,WAEpB,IAAOvF,EACH,OAAO,KAGX,IAAI7P,EAAQ,CACR6P,MAAOA,EAAQ,MAGnB,OACI,mCAAW,0BAAX,MAA4C7P,GAA5C,OAMRuV,aA/NW,WAiOP,IAAOnY,KAAK4S,WAAWuF,aACnB,OAAO,KAGX,IAAIhP,EAAQ,GAMZ,OAJKnJ,KAAK4S,WAAW4E,WAAaxX,KAAKua,gBACnCpR,EAAMqO,WAAY,GAIlB,wDAAW,2BAA8BrO,GAAzC,CACI,mCAAW,6BAAX,CACI,iCAAWyU,KAAKC,MAAM1W,QAAtB,WAMhBkR,aApPW,WAsPP,IAAOrY,KAAK4S,WAAWyF,aACnB,OAAO,KAGX,IAAIlP,EAAQ,EAAH,GACJ,KAAO2U,MAAIC,QAAQ/d,KAAKmd,WAAand,KAAKyb,YAG/C,OACI,wDAAW,2BAA8BtS,GAAzC,CACI,mCAAW,0BAAX,CACI,iCAAWyU,KAAKC,MAAMG,YAAtB,WAMhB5F,aAvQW,WAyQP,IAAOpY,KAAK4S,WAAWwF,aACnB,OAAO,KAGX,IAAIjP,EAAQ,EAAH,GACJ,KAAO2U,MAAIC,QAAQ/d,KAAKmd,WAAand,KAAKic,YAG/C,OACI,wDAAW,2BAA8B9S,GAAzC,CACI,mCAAW,6BAAX,CACI,iCAAWyU,KAAKC,MAAMI,SAAtB,WAMhB3L,OA1RW,WA4RP,IAAI7R,EAAY,CACZ,mBAGCT,KAAKsb,eACN7a,EAAUgB,KAAK,cAGdzB,KAAKob,cACN3a,EAAUgB,KAAK,cAGdzB,KAAKsG,cACN7F,EAAUgB,KAAK,cAGdzB,KAAKwb,cACN/a,EAAUgB,KAAK,cAGdzB,KAAK8a,aACNra,EAAUgB,KAAK,aAGdzB,KAAKya,eACNha,EAAUgB,KAAK,eAGnB,IAAI0H,EAAQ,CACRsU,QAASzd,KAAKyd,QACdC,WAAY1d,KAAK0d,YASrB,OANK1d,KAAK4S,WAAW4E,YAAexX,KAAK4S,WAAWzL,QAAUnH,KAAKua,gBAC/DpR,EAAMqO,WAAY,GAGtBrO,EAAM,eAAiBnJ,KAAKhB,MAAMgB,KAAK4S,WAAWnM,YAG9C,wDAAYhG,GAAe0I,GAA3B,CACMnJ,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,S,4MCxUlBG,EAAOoX,cAAe,EAEP,KAEXjZ,KAAM,YAEN4M,MAAO,CACH1C,KAAM,SAGVW,MAAO,CAEHhD,MAAO,oBAGC,MAAO,KAIf6M,WAAY,oBAGJ,OAAO,OAIfwE,UAAW,oBAGH,OAAO,GAEX7M,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXC,QAAS,oBAGD,OAAO,OAIfC,SAAU,oBAGF,MAAO,KAIfxQ,OAAQ,oBAGA,OAAO,GAEXwD,KAAM,CAACS,UAGX7F,MAAO,oBAGC,MAAO,CAAC,YAEZoF,KAAM,CAACkN,QAGXpS,YAAa,oBAGL,MAAO,CAAC,YAEZkF,KAAM,CAACkN,QAGX9V,SAAU,oBAGF,OAAO,SAACO,GAAD,OAAa,KAI5BwV,SAAU,oBAGF,OAAO,GAEXnN,KAAM,CAACS,UAGX2M,cAAe,oBAGP,OAAO,GAEXpN,KAAM,CAACS,UAGX0H,WAAY,oBAGJ,OAAO,KAEXnI,KAAM,CAACyE,SAGX2D,UAAW,oBAGH,OAAO,KAEXpI,KAAM,CAACyE,SAGXkE,UAAW,oBAGH,OAAO,GAEX3I,KAAM,CAACyE,SAGXoE,QAAS,oBAGD,OAAO,GAEX7I,KAAM,CAACS,UAGX6H,UAAW,oBAGH,OAAO,GAEXtI,KAAM,CAACyE,SAGX8D,UAAW,oBAGH,OAAO,GAEXvI,KAAM,CAACS,UAGX+H,UAAW,oBAGH,OAAO,GAEXxI,KAAM,CAACS,UAGXgI,QAAS,oBAGD,OAAO,IAEXzI,KAAM,CAACyE,SAGXiE,QAAS,oBAGD,OAAO,IAEX1I,KAAM,CAACyE,SAGX6I,kBAAmB,oBAGX,OAAO,IAIfxR,WAAY,oBAGJ,MAAO,MAEXkE,KAAM,CAAC8M,SAGX/O,UAAW,oBAGH,MAAO,YAEXiC,KAAM,CAAC8M,SAGXS,cAAe,oBAGP,OAAO,IAIfC,aAAc,oBAGN,OAAO,GAEXxN,KAAM,CAACS,UAGXgN,aAAc,oBAGN,OAAO,GAEXzN,KAAM,CAACS,UAGXnD,cAAe,oBAGP,OAAO,SAAC/C,GAAD,OAAUA,KAIzByD,YAAa,oBAGL,OAAO,GAEXgC,KAAM,CAACS,UAGXvD,WAAY,oBAGJ,OAAO,IAIf5B,WAAY,oBAGJ,OAAO,IAIfqS,YAAa,oBAGL,OAAO,kBAAM,KAIrBC,UAAW,oBAGH,OAAO,kBAAM,KAIrB1T,UAAW,oBAGH,OAAO,kBAAM,KAIrB2T,UAAW,oBAGH,OAAO,GAEX7N,KAAM,CAACS,UAGXqN,iBAAkB,oBAGV,OAAO,KAEX9N,KAAM,CAACyE,UAKfsJ,QAvSW,WAySP,MAAO,CACH9F,WAAY5S,OAIpBsL,KA9SW,WAgTP,MAAO,CACHtH,IAAKkF,iBACL1C,SAAU,GACVoS,QAAS,GACT5R,WAAY,GACZ6R,UAAW,GACXC,cAAe,KACfE,YAAahZ,KAAK0X,QAClBuB,aAAcjZ,KAAK4X,SACnB7R,aAAc/F,KAAK2X,WAI3B3D,YA7TW,WA+TPhU,KAAKkZ,KAAO,IAAI/V,IAAanD,OAGjC6L,QAlUW,WAoUP,IAAIxI,EAAQrD,KAAK2U,MAAM2E,gBACnB3E,MAAMkB,MAEV7V,KAAKkZ,KAAKK,SAASlW,GAEnBrD,KAAKwZ,OAAO,eAAgBxZ,KAAKyZ,cAC7B,CAAEC,MAAM,IAEZ1Z,KAAK2Z,mBAGTxF,cA/UW,WAiVPnU,KAAKkZ,KAAKU,aAEVrZ,MAAIgC,KAAK5B,UAAUwD,IAAI,UAAW,KAAMnE,KAAKgE,MAGjD4H,MAAO,CAEHzF,MAFG,WAIMnG,KAAKiY,mBACNjY,KAAKqV,WAGTrV,KAAK2Z,mBAGTnT,SAXG,WAaCxG,KAAK6Z,kBAGTlC,SAhBG,SAgBM3Y,GAELgB,KAAK+F,aAAe/G,GAGxB0Y,QArBG,SAqBK1Y,GAEJgB,KAAKgZ,YAAcha,IAK3B8M,QAAS,CAEL2N,cAFK,WAID,IAAOzZ,KAAK+F,aAAatB,OACrB,OAAOzE,KAAK8Y,cAAgB,KAGhC9Y,KAAK8Y,cAAgBvX,MAAIgB,KAAKvC,KAAKwG,SAAd,KAChBxG,KAAKyG,WAAazG,KAAK+F,aAAa,MAI7C4T,gBAbK,WAeD3Z,KAAKwG,SAAWxG,KAAKkZ,KAAK9P,OAAOpJ,KAAKmG,OAEjChG,EAAOoX,cACRlJ,QAAQ6L,IAAI,gCAAkCla,KAAKwG,SAAS/B,SAIpEoV,eAtBK,WAwBD7Z,KAAK4Y,QAAUrX,MAAIkH,OAAOzI,KAAKwG,UAAU,SAACtB,GACtC,OAAsB,IAAfA,EAAKsE,UAIpB4Q,SA7BK,SA6BI1Q,GAEL,OAAOnI,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACF5Y,KAAKyG,WAAaiD,KAI3B4Q,gBApCK,WAsCD,OAAOta,KAAKgZ,YAILzX,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACF5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAJjC,GAQhB4O,SA/CK,WAgDL,IADSC,EACT,uDADa,EAAGjT,EAChB,uDADoB,EAEhBrC,KAAK2U,MAAM2E,gBAAgBjE,SAASC,EAAGjT,IAG3CwS,cApDK,SAoDS9L,GAEV/I,KAAK2U,MAAM2E,gBAAgB5E,eAAe3L,IAG9CwR,YAzDK,SAyDOrV,GACZ,WACQsV,EAAUxa,KAAKuY,UAMnB,OAJOzT,MAAIC,WAAWyV,KAClBA,EAAU,kBAAM,EAAKjC,YAGlBiC,EAAQtV,IAGnBuV,YApEK,SAoEOvV,GAER,OAAO3D,MAAIC,IAAIxB,KAAK6Y,UAAW3T,EAAKlG,MAAMgB,KAAKyG,cAGnDiU,cAzEK,SAyES1b,GACd,WADqBM,EACrB,uDAD2B,KAEvB4W,aAAalW,KAAK2a,SAGlB3a,KAAK6Y,UAAY,GAEjBtX,MAAIqZ,UAAU5a,KAAKmG,MAAOnG,KAAK0I,WAAW,SAACxD,EAAM6B,GAExChE,MAAInE,IAAIsG,EAAM5F,GAAO,EAAKmH,cAAgBzH,IAI/CuC,MAAI0D,KAAK8B,GAAS,SAAC9D,GACf1B,MAAIuY,IAAI,EAAKb,aAAchW,EAAK,EAAKwD,gBAGzClF,MAAIuY,IAAI,EAAKjB,UAAW3T,EAAK,EAAKuB,iBAG/BzG,KAAK6Y,UAAUpU,SAItBzE,KAAK0O,UAAU1O,KAAK6a,mBAEpB7a,KAAK2a,QAAUvE,YAAW,kBACtB,EAAKyC,UAAY,KAAI7Y,KAAKyY,kBAE9BzY,KAAK6Z,mBAGTgB,kBAzGK,WA2GD,GAAO7a,KAAK6Y,UAAUpU,OAAtB,CAIA,IAAIsE,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAalF,MAAIyG,MAAMhI,KAAK6Y,aAGtC7Y,KAAK2U,MAAM2E,gBAAgB5E,eAAe3L,KAG9C+R,UAtHK,SAsHK5V,GAEN,OAAOlF,KAAKkY,eAAiBlY,KAAKgZ,aAC9B9T,EAAKlG,MAAMgB,KAAKyG,cAAgBzG,KAAKgZ,YAAYhZ,KAAKyG,aAG9DsU,WA5HK,SA4HM7V,GAEUlF,KAAKgZ,aAClBhZ,KAAKgZ,YAAYhZ,KAAKyG,cAAgBvB,EAAKlG,MAAMgB,KAAKyG,cAM1DzG,KAAKgG,MAAM,iBACPhG,KAAKgZ,YAAc9T,EAAKjC,MAE5Bc,QAAMsB,KAAK,wBAAyBH,EAAKjC,KAAMjD,KAAKgE,OAGxDgX,cA3IK,SA2ISjS,GAEV,IAAIrC,EAAQ3D,MAAInE,IAAIoB,KAAK4Y,QACrB,CAAC7P,EAAO,UAEZ,IAAOrC,EACH,OAAO1G,KAAKgb,cAAc,GAG9B,IAAI/X,EAAOF,MAAInE,IAAIoB,KAAM0G,GAEzB1G,KAAK2U,MAAM2E,gBACN5E,eAAe3L,GAEpB/I,KAAKgG,MAAM,iBACPhG,KAAKgZ,YAAc/V,GAEvBc,QAAMsB,KAAK,wBAAyBpC,EAAMjD,KAAKgE,MAGnDiX,eA/JK,WAiKD,GAAOjb,KAAK4Y,QAAQnU,OAApB,CAMA,IAAOzE,KAAKgZ,YACR,OAAOhZ,KAAKgb,cAHJ,GAMZ,IAAIjS,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAG7B,IAAXsC,GACDA,IAGCA,GAAS/I,KAAK4Y,QAAQnU,SACvBsE,EAfQ,GAkBZ/I,KAAKgb,cAAcjS,KAGvBmS,eA1LK,WA4LD,GAAOlb,KAAK4Y,QAAQnU,OAApB,CAIA,IAAIyJ,EAAQlO,KAAK4Y,QAAQnU,OAAS,EAElC,IAAOzE,KAAKgZ,YACR,OAAOhZ,KAAKgb,cAAc9M,GAG9B,IAAInF,EAAQxH,MAAI8Y,UAAUra,KAAK4Y,QAAnB,KACP5Y,KAAKyG,WAAazG,KAAKgZ,YAAYhZ,KAAKyG,eAG7B,IAAXsC,GACDA,IAGCA,EAAQ,IACTA,EAAQmF,GAGZlO,KAAKgb,cAAcjS,KAGvBoS,YArNK,WAuND,MAAO,CAAC,wBAAyBnb,KAAKgE,MAG1CoX,WA1NK,SA0NMlW,GACX,WACQmW,EAAYrb,KAAKsY,YAMrB,OAJOxT,MAAIC,WAAWsW,KAClBA,EAAY,kBAAM,EAAK/C,eAGlB+C,EAAUnW,IAAUlF,KAAK8Y,eAC9B5T,EAAKlG,MAAMwK,QAAUxJ,KAAK8Y,cAActP,OAGhDlD,WAtOK,SAsOMpB,GAEP,OAAO3D,MAAIC,IAAIxB,KAAK+F,aAAcb,EAAKlG,MAAMgB,KAAKyG,cAGtDkV,gBA3OK,WAiPD,OAJcpa,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GACpC,OAASA,EAAKuG,SAGH/E,SAAWzE,KAAK+F,cAGnC6V,gBApPK,WA0PD,OAJcra,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GACpC,OAASA,EAAKuG,SAGH/E,SAAWzE,KAAK+F,cAC3B/F,KAAK+F,cAGbkW,WA9PK,SA8PM/W,GAEFlF,KAAKob,WAAWlW,KAIrB3D,MAAIuN,OAAO9O,KAAK+F,aAAcb,EAAKlG,MAAMgB,KAAKyG,aAE9CzG,KAAKgG,MAAM,kBAAmBhG,KAAK+F,gBAGvCmW,UAzQK,WA0QL,WACQtD,EAAUrX,MAAIkH,OAAOzI,KAAK4Y,SAAS,SAAC3V,GACpC,OAASA,EAAKuG,SAGduS,EAAWxa,MAAI0D,KAAK2T,GAAS,SAAC3V,GAC9B,OAAOA,EAAK,EAAKwD,eAGrB,GAAKsV,EAAStX,SAAWzE,KAAK+F,aAAatB,OACvC,OAAOzE,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAe,IAG7D/F,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAegW,IAGtDK,YA1RK,WA4RIpc,KAAK+F,aAAatB,QACnBzE,KAAKgG,MAAM,kBAAmBhG,KAAK+F,aAAe,KAI1DsW,YAjSK,WAmSMrc,KAAKwY,WAIZjY,MAAIgC,KAAK5B,UAAU8C,GAAG,UAClBzD,KAAKsc,UAAWtc,KAAKgE,MAG7BuY,cA3SK,WA6SMvc,KAAKwY,WAIZjY,MAAIgC,KAAK5B,UAAUwD,IAAI,UACnB,KAAMnE,KAAKgE,MAGnBsY,UArTK,SAqTKzb,EAAOmB,GAERzB,MAAIgC,KAAKP,GAAIuC,QAAQ,WAIL,KAAhB1D,EAAMkZ,QACPlZ,EAAMwD,iBACNxD,EAAM2b,mBAIW,KAAhB3b,EAAMkZ,QACPlZ,EAAMwD,iBACNxD,EAAM2b,sBAOlBC,YA5rBW,WA6rBX,WACI,OACI,0EAAwBzc,KAAK+X,cAA7B,MAAkD,qBAAlD,2BACM,EAAK1F,OAAOgF,OAAS,EAAKhF,OAAOgF,SAAW,EAAK9M,MAAM,mBAKrEmM,WArsBW,SAqsBAvN,GAEP,OACI,kEAAmBpG,MAAIkG,OAAOE,EAAO,CAAC,UAAtC,CACQ0J,QAAS7S,KAAKqS,OAAL,WAKzBC,OA9sBW,WAgtBP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAGnB3K,KAAKmG,MAAM1B,QACdhE,EAAUgB,KAAK,WAGnB,IAKI0H,EAAQpG,MAAIwL,KAAKvO,KAAK0c,OALb,CACT,YAAa,YAAa,aAAc,YACxC,YAAa,YAAc,UAAW,UAAW,WAGX,CACtCvW,MAAOnG,KAAK4Y,QACZ+D,aAAc3c,KAAKqc,YACnBO,aAAc5c,KAAKuc,gBAGvB,OACI,+FAAsB,kBAAtB,MAA+C9b,GAAe0I,GAA9D,CACQ0J,QAAS7S,KAAKgK,KAAK,cAAeqN,MAAOrX,KAAKgK,KAAK,qB,6EC1uBxD,KAEX1L,KAAM,gBAENqU,OAAQ,CAEJC,WAAY,CACRC,aAASnL,IAKjBgR,QAZW,WAcP,MAAO,CACHmE,eAAgB7c,OAIxBmJ,MAAO,CAEHnK,MAAO,CACH8d,UAAU,IAKlBC,SAAU,CAEN/Y,IAFM,WAIF,OAAOjB,MAAInE,IAAIoB,KAAKhB,MAAOgB,KAAK4S,WAAWnM,aAG/CxD,KAPM,WASF,OAAOF,MAAInE,IAAIoB,KAAK4S,WAAY5S,KAAKhB,MAAM0H,QAG/CsW,MAZM,WAaF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAjBM,WAkBF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAtBM,WAuBF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QA3BM,WA4BF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KA7DW,WA+DP,MAAO,CACHC,MAAQvL,KAAK4S,WAAWkF,WAIhCjM,QApEW,WAqEX,WACI7L,KAAKiW,MAAQG,YAAW,WAEf,EAAKxD,WAAW4E,YACjB,EAAKvB,MAAQG,YAAW,WACpB,EAAKxD,WAAWsG,KAAKoE,SAAS,KAC/B,KAGP,EAAK/R,MAAO,IACb,KAGP4I,cAlFW,WAoFAnU,KAAKuL,MACR2K,aAAalW,KAAKiW,OAGtBjW,KAAK4S,WAAWsG,KAAKjS,WAAWjH,OAGpC8L,QAAS,CAELyR,KAFK,WAID,OAAOvd,KAAK4S,WAAWsG,KAAKsE,SAASxd,OAGzCkD,OAPK,WASD,OAAOlD,KAAK4S,WAAWsG,KAAKjT,WAAWjG,OAG3Cob,WAZK,WAcD,OAAOpb,KAAK4S,WAAWwI,WAAWpb,OAGtCya,YAjBK,WAmBD,OAAOza,KAAK4S,WAAW6H,YAAYza,OAGvC8a,UAtBK,WAwBD,OAAO9a,KAAK4S,WAAWkI,UAAU9a,OAGrCua,YA3BK,WA6BD,OAAOva,KAAK4S,WAAW2H,YAAYva,OAGvCsG,WAhCK,WAkCD,OAAOtG,KAAK4S,WAAWtM,WAAWtG,OAGtCic,WArCK,WAuCDjc,KAAK4S,WAAWqJ,WAAWjc,OAG/Byd,QA1CK,WA4CDzd,KAAK4S,WAAWmI,WAAW/a,MAEtBuB,MAAIC,IAAIrB,EAAOmB,QAAS,KACzBtB,KAAK4S,WAAWqJ,WAAWjc,MAG/BA,KAAK4S,WAAW5M,MAAM,YAAahG,OAGvC0d,WArDK,WAuDD1d,KAAK4S,WAAWmI,WAAW/a,MAE3BA,KAAK4S,WAAW5M,MAAM,eAAgBhG,QAK9CwR,cAzJW,WA2JP,IAAI/Q,EAAY,CACZ,4BAGJ,IAAOT,KAAKuL,KACR,OAAQ,mCAAY9K,GAAZ,MAGZ,IAAI0I,EAAQ,CACRnK,MAAOgB,KAAKhB,MACZiE,KAAMjD,KAAKiD,KACXsa,KAAMvd,KAAKud,KACXra,OAAQlD,KAAKkD,QAGbkP,EAAiBpS,KAAKqS,OAAL,QAMrB,OAJKrS,KAAK4S,WAAWI,aACjBZ,EAAiBpS,KAAK4S,WAAWI,YAIjC,mCAAYvS,GAAZ,CACK2R,EAAejJ,MAK5BgP,aAvLW,WAyLP,IAAOnY,KAAK4S,WAAWuF,aACnB,OAAO,KAGX,IAAIhP,EAAQ,GAMZ,OAJKnJ,KAAK4S,WAAW4E,WAAaxX,KAAKua,gBACnCpR,EAAMqO,WAAY,GAIlB,wDAAW,2BAA8BrO,GAAzC,CACI,mCAAW,6BAAX,CACI,iCAAWyU,KAAKC,MAAM1W,QAAtB,WAMhBiR,aA5MW,WA8MP,IAAOpY,KAAK4S,WAAWwF,aACnB,OAAO,KAGX,I,MAAIjP,G,EAAK,G,EACJ,KAAO2U,MAAIC,QAAQ/d,KAAKmd,W,EAAand,KAAKic,W,gGAG/C,OACI,wDAAW,2BAA8B9S,GAAzC,CACI,mCAAW,6BAAX,CACI,iCAAWyU,KAAKC,MAAMI,SAAtB,WAMhB3L,OA/NW,WAiOP,IAAI7R,EAAY,CACZ,mBAGCT,KAAKob,cACN3a,EAAUgB,KAAK,cAGdzB,KAAKsG,cACN7F,EAAUgB,KAAK,cAGdzB,KAAK8a,aACNra,EAAUgB,KAAK,aAGdzB,KAAKya,eACNha,EAAUgB,KAAK,eAGnB,IAAI0H,EAAQ,CACRsU,QAASzd,KAAKyd,QACdC,WAAY1d,KAAK0d,YASrB,OANK1d,KAAK4S,WAAW4E,YAAexX,KAAK4S,WAAWzL,QAAUnH,KAAKua,gBAC/DpR,EAAMqO,WAAY,GAGtBrO,EAAM,eAAiBnJ,KAAKhB,MAAMgB,KAAK4S,WAAWnM,YAG9C,wDAAYhG,GAAe0I,GAA3B,CACMnJ,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,S,oFCnQlBG,EAAOoX,cAAe,EAEP,KAEXjZ,KAAM,YAEN4M,MAAO,CACH1C,KAAM,QAGVW,MAAO,CAEHlG,KAAM,oBAGE,OAAO,OAIf+P,WAAY,oBAGJ,OAAO,OAIfwE,UAAW,oBAGH,OAAO,GAEX7M,KAAM,CAACS,UAGXT,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXlS,MAAO,oBAGC,MAAO,CAAC,YAEZoF,KAAM,CAACkN,QAGXpS,YAAa,oBAGL,MAAO,CAAC,YAEZkF,KAAM,CAACkN,QAGXE,cAAe,oBAGP,OAAO,GAEXpN,KAAM,CAACS,UAGX3E,WAAY,oBAGJ,MAAO,MAEXkE,KAAM,CAAC8M,SAGXxP,cAAe,oBAGP,OAAO,SAAC/C,GAAD,OAAUA,KAIzByD,YAAa,oBAGL,OAAO,GAEXgC,KAAM,CAACS,UAGXvD,WAAY,oBAGJ,OAAO,IAIf5B,WAAY,oBAGJ,OAAO,IAIfpB,UAAW,oBAGH,OAAO,kBAAM,MAMzB6T,QAtHW,WAwHP,MAAO,CACHwF,UAAWle,OAInBsL,KA7HW,WA+HP,MAAO,CACHtH,IAAKkF,mBAIb8K,YApIW,WAsIPhU,KAAKkZ,KAAO,IAAI/V,IAAanD,OAGjC6L,QAzIW,WA2IP7L,KAAKkZ,KAAKK,SAASvZ,KAAKM,MAG5B6T,cA9IW,WAgJPnU,KAAKkZ,KAAKU,cAGdlD,WAnJW,WAqJP,OAAK5R,MAAIgF,QAAQ9J,KAAKiD,MACX,KAGJjD,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,QAAoBrS,KAAKiD,OAG3DwZ,YA5JW,WA6JX,WACI,OAAO3X,MAAIgF,QAAQ9J,KAAKiD,MAKpB,0EAAwBjD,KAAK+X,cAA7B,MAAkD,qBAAlD,2BACM,EAAK1F,OAAOgF,OAAS,EAAKhF,OAAOgF,SAAW,EAAK9M,MAAM,gBALtD,MAUf+H,OAzKW,WA2KP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAO1B,OAJK7F,MAAIgF,QAAQ9J,KAAKiD,OAClBxC,EAAUgB,KAAK,WAIf,mCAAYhB,GAAZ,CACK,CAACT,KAAKgK,KAAK,aAAVhK,GAA2BA,KAAKgK,KAAK,cAAVhK,U,maC1L7C,IAAMme,EAAU,CACZC,MAAO,CACH,MAAO,OAAQ,MAAO,MAAO,OAEjCC,MAAO,CACH,MAAO,OAAQ,OAEnBC,KAAM,CACF,OAAQ,MAAO,OAEnBC,KAAM,CACF,MAAO,MAAO,QAElBC,YAAa,CACT,MAAO,MAAO,QAIP,KAEXlgB,KAAM,WAEN6K,MAAO,CAEHsV,KAAM,oBAGE,OAAO,OAIfC,MAAO,oBAGC,OAAO,OAIfC,IAAK,oBAGG,MAAO,SAEXhU,KAAM,CAAC8M,SAGXmH,KAAM,oBAGE,OAAO,MAEXC,MAAO,CAACpH,SAGZqH,QAAS,oBAGD,OAAO,GAEXD,MAAO,CAACzT,UAGZ2T,QAAS,oBAGD,OAAO,GAEXF,MAAO,CAACzT,UAGZpI,IAAK,oBAGG,OAAOmb,GAEXxT,KAAM,CAAClM,UAKfse,SAAU,CAENiC,SAFM,WAIF,OAAOhf,KAAKye,MAAQze,KAAK0e,OAG7BO,UAPM,WASF,OAAOjf,KAAK0e,OAAS1e,KAAKye,MAG9BS,SAZM,WAcF,OAAOlf,KAAKmf,eAGhBC,UAjBM,WAmBF,OAAOpf,KAAKqf,iBAKpB/T,KAtFW,WAwFP,MAAO,CACHgU,UAAU,EAAOxL,MAAM,IAI/BhI,QAAS,CAELqT,YAFK,WAGL,IADYlV,EACZ,uDADuB,KAEfwU,EAAO1b,MAAInE,IAAIoB,KAAKgf,SAAU,OAC9Bhf,KAAKgf,UAET,GAAKla,MAAIgF,QAAQ2U,GACb,OAAOxU,EAGX,IAAIsV,EAAYd,EAAK3V,QAAQ,0BACzB,MAkBJ,OAhBA/F,MAAIkC,KAAKjF,KAAKgD,KAAK,SAACwc,EAAMlgB,GACjBiC,MAAIC,IAAIge,EAAMD,KAAatV,EAAW3K,MAG1Ca,EAAOsf,aAAahB,KACrBxU,EAAW,SAGV9J,EAAOuf,eAAejB,KACvBxU,EAAW,SAGVnF,MAAIgI,SAAS9M,KAAK4e,QACnB3U,EAAWjK,KAAK4e,MAGb3U,GAGXoV,aAjCK,WAkCL,IADapV,EACb,uDADwB,KAEpB,GAAKnF,MAAIgI,SAAS9M,KAAK4e,MACnB,OAAO5e,KAAK4e,KAGhB,IAAIH,EAAO1b,MAAInE,IAAIoB,KAAKif,UAAW,OAC/Bjf,KAAKif,WAET,GAAKna,MAAIgF,QAAQ2U,GACb,OAAOxU,EAGX,IAAIsV,EAAYd,EAAK3V,QAAQ,0BACzB,MAMJ,OAJA/F,MAAIkC,KAAKjF,KAAKgD,KAAK,SAACwc,EAAMlgB,GACjBiC,MAAIC,IAAIge,EAAMD,KAAatV,EAAW3K,MAGxC2K,GAGX0V,aAxDK,WA0DD3f,KAAKsf,UAAW,IAKxBM,cA5JW,WA8JP,IAAO5f,KAAK8e,QACR,OAAO9e,KAAKgK,KAAK,aAAVhK,GAGX,GAAwB,UAAnBA,KAAKof,UACN,OAAQ,uEAAoBpf,KAAKif,WAAzB,MAGZ,IAAI9V,EAAQ,CACRwB,KAAM3K,KAAKof,UACXL,SAAS,GAGb,OAAQ,4FAAoB/e,KAAKif,WAAe9V,GAAxC,OAGZ0W,WA9KW,WAgLP,IAAIpR,EAAW3J,MAAI2J,SAASzO,KAAKgf,UAEjC,GAAuB,UAAlBhf,KAAKkf,SACN,OAAQ,uEAAoBlf,KAAKgf,UAAzB,MAGZ,GAAuB,UAAlBhf,KAAKkf,WAA0BzQ,EAChC,OAAQ,uEAAoBzO,KAAKgf,UAAzB,MAGZ,IAAI7V,EAAQ,CACRwB,KAAM3K,KAAKof,UACXL,QAAS/e,KAAK+e,SAGlB,OAAQ,4FAAoB/e,KAAKgf,UAAc7V,GAAvC,OAGZ2W,eAlMW,WAmMX,WACI,IAAO9f,KAAKsf,WAActf,KAAK8e,QAC3B,OAAO,KAGX,IAAIiB,EAAQ,CACRC,IAAKhgB,KAAKgK,KAAK,eASnB,OAAQ,4FAAgB,EAAKsV,SAArB,yCAAgB,EAAKA,SAArB,IANI,CACR3U,KAAM,UACN8H,MAAO,MACPnQ,OAAQ,Q,+VAGJ,IAAmDyd,KAG/DzN,OArNW,WAuNP,IAAI7R,EAAY,CACZ,YACA,cAAgBT,KAAK2e,KAGpB3e,KAAK8e,SACNre,EAAUgB,KAAK,eAGdzB,KAAKkf,UACNze,EAAUgB,KAAK,UAAYzB,KAAKkf,UAGpC,IAAI/V,EAAQ,GAEPnJ,KAAK8e,UACN3V,EAAMsU,QAAUzd,KAAK2f,cAGzB,IAAIrgB,EAAM4N,KAAKlN,KAAKif,WAEpB,OACI,sDAAU3f,EAAV,MAAsBmB,GAAe0I,GAArC,CACM,CAACnJ,KAAKgK,KAAK,gBAAVhK,GAA8BA,KAAKgK,KAAK,iBAAVhK,U,6EChQjDG,EAAOuf,eAAiB,SAASO,GAAsB,IAAjBhW,EAAiB,uDAAN,KAE7C,IAAOnF,MAAIgI,SAASmT,GAChB,OAAOhW,EAGX,IAAIiW,EAAOD,EAAIlT,MAAM,gDAErB,IAAOmT,EACH,OAAOjW,EAGX,IAAI1D,EAAK0Z,EAAIlT,MAAM,oBAEnB,GAAKxG,GAAoB,IAAdA,EAAG9B,OACV,OAAO8B,EAAG,GAAGuC,QAAQ,QAAS,IAGlC,IAAIqX,EAAOF,EAAIlT,MAAM,uBAErB,GAAKoT,GAAwB,IAAhBA,EAAK1b,OACd,OAAO0b,EAAK,GAAGrX,QAAQ,UAAW,IAGtC,IAAIzF,EAAQ4c,EAAIlT,MAAM,qBAEtB,OAAK1J,GAA0B,IAAjBA,EAAMoB,OACTpB,EAAM,GAAGyF,QAAQ,aAAc,IAGnCmB,GAGX9J,EAAOsf,aAAe,SAASQ,GAAsB,IAAjBhW,EAAiB,uDAAN,KAE3C,IAAOnF,MAAIgI,SAASmT,GAChB,OAAOhW,EAGX,IAAIiW,EAAOD,EAAIlT,MAAM,2CAErB,IAAOmT,EACH,OAAOjW,EAGX,IAAIkW,EAAOF,EAAIlT,MAAM,mBAErB,OAAKoT,GAAwB,IAAhBA,EAAK1b,OACP0b,EAAK,GAAGrX,QAAQ,WAAY,IAGhCmB,GAGI,KAEX3L,KAAM,gBAEN6K,MAAO,CAEHiX,IAAK,oBAGG,OAAO,QAMnB9U,KAfW,WAiBP,MAAO,CACH+U,SAAU,QAAS3W,OAAQ,KAAM4W,QAAS,OAIlDzU,QAtBW,WAwBP7L,KAAKugB,eAGT3U,MAAO,CAEH,IAAO,WACH5L,KAAKugB,gBAKbzU,QAAS,CAELyU,YAFK,WAIDvgB,KAAKsgB,QAAU,KAEVtgB,KAAK0f,kBAIL1f,KAAKyf,iBAIL3a,MAAI2J,SAASzO,KAAKogB,MACnBpgB,KAAKwgB,cAGTxgB,KAAKqgB,SAAW,UAGpBG,YArBK,WAuBDnS,QAAQ6L,IAAI,2CAGhBwF,eA1BK,WA4BD,IAAIe,EAAUtgB,EAAOuf,eAAe1f,KAAKogB,KAEzC,QAAOK,IAIPzgB,KAAKqgB,SAAW,UAEhBrgB,KAAKgG,MAAM,kBAAmBhG,KAAK0J,OAAS+W,IAErC,IAGXhB,aAzCK,WA2CD,IAAIiB,EAAQvgB,EAAOsf,aAAazf,KAAKogB,KAErC,QAAOM,IAIP1gB,KAAKqgB,SAAW,QAEhBrgB,KAAKgG,MAAM,gBAAiBhG,KAAK0J,OAASgX,IAEnC,KAKfC,cA7FW,WA+FP,IAAIxX,EAAQ,CACRiX,IAAK,iCAAF,OAAmCpgB,KAAK0J,SAG/C,OACI,+BAAYP,EAAZ,OAIRyX,YAxGW,WA0GP,IAAIzX,EAAQ,CACRiX,IAAK,kCAAF,OAAoCpgB,KAAK0J,SAGhD,OACI,+BAAYP,EAAZ,OAIR0X,YAnHW,WAqHP,IAEItB,EAFMxc,MAAInE,IAAIoB,KAAKogB,IAAK,OAAQpgB,KAAKogB,KAErBtX,QAAQ,0BACxB,MAEJ,OACI,qCAAa,MAAb,OAA0B,MAA1B,cACI,oCAAa9I,KAAKsgB,SAAWtgB,KAAKogB,IAAlC,qBAAsDb,IAAtD,SAKZjN,OAjIW,WAuIP,OACI,mCALY,CACZ,oBAIA,CACMtS,KAAKgK,KAAK,SAAW8T,MAAIC,QAAQ/d,KAAKqgB,UAAtCrgB,S,8CCjMlB,WAEe,KAEX8gB,KAFW,SAENrgB,GAED,IAAIsgB,EAAY,GA0BhB,OAxBKjc,MAAIgI,SAASrM,KACdsgB,EAAUtgB,IAAa,GAGtBqE,MAAI8H,QAAQnM,IACbc,MAAI0D,KAAKxE,GAAW,SAACzB,GAAD,OAAW+hB,EAAU/hB,IAAS,KAGjD8F,MAAI+H,QAAQpM,IACbsC,MAAIoJ,OAAO4U,EAAWtgB,GAGrBqE,MAAIgI,SAAS9M,KAAKghB,OAAL,SACdD,EAAU/gB,KAAKghB,OAAL,QAAqB,GAG9Blc,MAAI8H,QAAQ5M,KAAKghB,OAAL,QACbzf,MAAI0D,KAAKjF,KAAKghB,OAAL,OAAmB,SAAChiB,GAAD,OAAW+hB,EAAU/hB,IAAS,KAGzD8F,MAAI+H,QAAQ7M,KAAKghB,OAAL,QACbje,MAAIoJ,OAAO4U,EAAW/gB,KAAKghB,OAAL,OAGnBD,K,6BChCf,gBAGe,KAEXE,KAFW,WAGX,IADKC,EACL,uDADY,UAAW/X,EACvB,uDAD+B,GAE3B,QAAOnJ,KAAKqS,OAAO6O,KAMX,IAFDlhB,KAAKqS,OAAO6O,GAAM/X,GAAOkR,WAAU,SAAC7b,GACvC,OAAOA,EAAEmM,OAASwW,gB,8DCZ9B,iNAMatD,EAAQ,CACjB1W,OAAQ,mBACR8W,QAAS,cACTmD,OAAQ,eACRC,aAAc,cACdC,MAAO,cACPC,SAAU,iBACVC,MAAO,cACPC,QAAS,oBACTC,QAAS,qBACTC,QAAS,2BACTC,OAAQ,qBACRC,KAAM,oBACNC,QAAS,iBACT9D,WAAY,oBACZ+D,UAAW,mBACXC,UAAW,mBACXC,gBAAiB,0BACjBC,iBAAkB,4BAGTC,EAAW,CACpBC,aAAc,SACdC,WAAY,KACZC,eAAgB,gBAGb,SAASC,EAAQC,GACxB,IAD6B3E,EAC7B,uDADqC,GAMjC,QAA0B,IAAd1d,EAAOsiB,GACf,OAAOpU,QAAQC,MAAM,6BAGzBvL,MAAIkC,KAAK9E,EAAOsiB,IAAI,SAACzjB,EAAOM,GACxBkjB,EAAIhQ,OAAOkQ,iBAAiBpjB,GAAON,KAGvCwjB,EAAIhQ,OAAOkQ,iBAAiB1Y,KAAO2Y,IAAU3Y,KAC7CwY,EAAIhQ,OAAOkQ,iBAAiB5B,KAAO8B,IAAU9B,KAC7C0B,EAAIhQ,OAAOkQ,iBAAiBzB,KAAO4B,IAAU5B,KAE7CuB,EAAIhQ,OAAOkQ,iBAAiBnY,MAAQtJ,SAAOsJ,MAC3CiY,EAAIhQ,OAAOkQ,iBAAiBxhB,OAASD,SAAOC,OAE5Cf,EAAOyd,KAAKC,MAAQ9a,MAAIoJ,OAAO0R,EAAO1d,EAAOyd,KAAKC,OAClD1d,EAAOyd,KAAKuE,SAAWpf,MAAIoJ,OAAOgW,EAAUhiB,EAAOyd,KAAKuE,UAExD7kB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAwCklB,GACxCllB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAkCklB;AAClCllB,EAAQ,IAAR,QAAqCklB,GACrCllB,EAAQ,IAAR,QAA2CklB,GAC3CllB,EAAQ,IAAR,QAAqCklB,GACrCllB,EAAQ,IAAR,QAAkCklB,GAClCllB,EAAQ,IAAR,QAAmCklB,GACnCllB,EAAQ,IAAR,QAAmCklB,GACnCllB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAkCklB,GAClCllB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAwCklB,GACxCllB,EAAQ,IAAR,QAAoCklB,GACpCllB,EAAQ,IAAR,QAAkCklB,GAClCllB,EAAQ,IAAR,QAAoCklB,GACpCllB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAkCklB,GAClCllB,EAAQ,IAAR,QAAkCklB,GAClCllB,EAAQ,IAAR,QAAmCklB,GACnCllB,EAAQ,IAAR,QAAoCklB,GACpCllB,EAAQ,IAAR,QAAsCklB,GACtCllB,EAAQ,IAAR,QAAsCklB,GACtCllB,EAAQ,IAAR,QAA0CklB,GAC1CllB,EAAQ,IAAR,QAA0CklB,GAC1CllB,EAAQ,IAAR,QAAoCklB,GACpCllB,EAAQ,IAAR,QAAgCklB,GAChCllB,EAAQ,IAAR,QAAgCklB,GAChCllB,EAAQ,IAAR,QAAgCklB,GAChCllB,EAAQ,IAAR,QAAoCklB,GACpCllB,EAAQ,IAAR,QAAiCklB,GACjCllB,EAAQ,IAAR,QAAqCklB,GACrCllB,EAAQ,IAAR,QAAgCklB;AAChCllB,EAAQ,IAAR,QAAmCklB,GACnCllB,EAAQ,IAAR,QAA+BklB,GAC/BllB,EAAQ,IAAR,QAAgCklB,GAChCllB,EAAQ,IAAR,QAAkCklB,GAM/B,IAAMM,EAAO,CAChBjF,MAAOA,EAAOsE,SAAUA,EAAUI,QAASA,GAG/CpiB,EAAOmB,QAAU,GAEjBf,MAAIgC,KAAK5B,UAAU8C,GAAG,WAAW,SAAC5C,GAC9BU,MAAIuY,IAAI3Z,EAAOmB,QAAST,EAAMkZ,UAGlCxZ,MAAIgC,KAAK5B,UAAU8C,GAAG,SAAS,SAAC5C,GAC5BU,MAAI2B,OAAO/C,EAAOmB,QAAST,EAAMkZ,UAGrCxZ,MAAIgC,KAAK5B,UAAU8C,GAAG,aAAa,SAAC5C,GAChCU,MAAIuY,IAAI3Z,EAAOmB,QAAST,EAAMkZ,UAGlCxZ,MAAIgC,KAAK5B,UAAU8C,GAAG,WAAW,SAAC5C,GAC9BV,EAAOmB,QAAU,WAGO,IAAhBnB,EAAOyd,OACfzd,EAAOyd,KAAOkF,GAGHA,a,kCC9Hf3iB,cAAO4iB,mBAAqB,CACxB,KAAM,KAAM,KAAM,MAGtB5iB,EAAO6iB,mBAAqB,CACxB,UAAW,YAAa,UAAW,UAAW,SAAU,QAG5D7iB,EAAO8iB,mBAAqB,CACxB,OAAQ,W,8CCTZ,8BAEA9iB,EAAO2K,iBAAP,IAAiC7J,SAAOsJ,MAAM,OAE9CpK,EAAO4K,oBAAP,IAAoC,CAChCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,UAA6C,CACzCtK,UAAW,CACPkK,KAAM,Y,8CCVd,8BAEAxK,EAAO2K,iBAAP,KAAkC7J,SAAOsJ,MAAM,QAE/CpK,EAAO4K,oBAAP,KAAqC,CACjCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,WAA8C,I,8CCR9C,8BAEA5K,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,cAAiD,CAC7CyF,KAAM,CACF9F,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAStQ,EAAO4iB,oBAE7DpY,KAAM,CACFD,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAStQ,EAAO6iB,oBAE7DzR,KAAM,CACF7G,IAAK,CAAC,QAAS,SAAUC,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9DC,OAAQ,CACJxY,IAAK,CAAC,QAAS,SAAUC,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9DE,SAAU,CACNzY,IAAK,CAAC,QAAS,SAAUC,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9DG,KAAM,CACF1Y,IAAK,CAAC,QAAS,SAAUC,KAAM,UAEnCyX,aAAc,CACV1X,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAS,CAAC,SAAU,UAEjE4S,WAAY,CACR3Y,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAS,CAAC,SAAU,IAAK,QAEtE6S,MAAO,CACH5Y,IAAK,CAAC,MAAOC,KAAM,Y,8CClC3B,8BAEAxK,EAAO2K,iBAAP,aAA0C7J,SAAOsJ,MAAM,kBAEvDpK,EAAO4K,oBAAP,aAA6C,CACzCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,mBAAsD,I,8CCRtD,8BAEA5K,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,cAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,gBAAmD,I,8CCRnD,8BAEA5K,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,cAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,gBAAmD,I,8CCRnD,8BAEA5K,EAAO2K,iBAAP,eAA4C7J,SAAOsJ,MAAM,kBAEzDpK,EAAO4K,oBAAP,eAA+C,CAC3CmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,qBAAwD,I,8CCRxD,8BAEA5K,EAAO2K,iBAAP,SAAsC7J,SAAOsJ,MAAM,aAEnDpK,EAAO4K,oBAAP,SAAyC,CACrCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,eAAkD,I,8CCRlD,8BAEA5K,EAAO2K,iBAAP,YAAyC7J,SAAOsJ,MAAM,eAEtDpK,EAAO4K,oBAAP,YAA4C,CACxCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,kBAAqD,I,8CCRrD,8BAEA5K,EAAO2K,iBAAP,gBAA6C7J,SAAOsJ,MAAM,mBAE1DpK,EAAO4K,oBAAP,gBAAgD,CAC5CmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,sBAAyD,I,8CCRzD,8BAEA5K,EAAO2K,iBAAP,gBAA6C7J,SAAOsJ,MAAM,mBAE1DpK,EAAO4K,oBAAP,gBAAgD,CAC5CmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,sBAAyD,I,8CCRzD,8BAEA5K,EAAO2K,iBAAP,OAAoC7J,SAAOsJ,MAAM,UAEjDpK,EAAO4K,oBAAP,OAAuC,CACnCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,aAAgD,I,8CCRhD,8BAEA5K,EAAO2K,iBAAP,MAAmC7J,SAAOsJ,MAAM,SAEhDpK,EAAO4K,oBAAP,MAAsC,CAClCmE,QAAQ,EAAM/F,MAAO,IAGzBhJ,EAAO4K,oBAAP,YAA+C,I,8CCR/C,8BAEA5K,EAAO2K,iBAAP,WAAwC7J,SAAOsJ,MAAM,cAErDpK,EAAO4K,oBAAP,WAA2C,CACvCmE,QAAQ,EAAM/F,MAAO,IAGzBhJ,EAAO4K,oBAAP,iBAAoD,CAChDwY,MAAO,CACH7Y,IAAK,CAAC,QAAS,SAAUC,KAAM,Y,8CCVvC,8BAEAxK,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,aAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAM/F,MAAO,IAGzBhJ,EAAO4K,oBAAP,gBAAmD,CAC/CwY,MAAO,CACH7Y,IAAK,CAAC,QAAS,SAAUC,KAAM,Y,8CCVvC,8BAEAxK,EAAO2K,iBAAP,OAAoC7J,SAAOsJ,MAAM,UAEjDpK,EAAO4K,oBAAP,OAAuC,CACnCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,aAAgD,CAC5CC,WAAY,CACRN,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,UAElD6F,KAAM,CACF9F,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,SAAU8F,QAAStQ,EAAO4iB,oBAE5EpY,KAAM,CACFD,IAAK,CAAC,QAAS,SAAUmI,QAAS,UAAWlI,KAAM,SAAU8F,QAAStQ,EAAO6iB,oBAEjFG,SAAU,CACNzY,IAAK,CAAC,QAAS,SAAUmI,SAAS,EAAOlI,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9EO,YAAa,CACT9Y,IAAK,CAAC,QAAS,SAAUmI,QAAS,GAAIlI,KAAM,UAEhD0Y,WAAY,CACR3Y,IAAK,CAAC,QAAS,SAAUmI,QAAS,OAAQlI,KAAM,SAAU8F,QAAS,CAAC,OAAQ,WAAY,UAE5F2S,KAAM,CACF1Y,IAAK,CAAC,QAAS,SAAUmI,QAAS,GAAIlI,KAAM,UAEhDyX,aAAc,CACV1X,IAAK,CAAC,QAAS,SAAUmI,QAAS,SAAUlI,KAAM,SAAU8F,QAAS,CAAC,SAAU,UAEpFgT,aAAc,CACV/Y,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE7ES,UAAW,CACPhZ,IAAK,CAAC,MAAOC,KAAM,Y,8CCrC3B,8BAEAxK,EAAO2K,iBAAP,aAA0C7J,SAAOsJ,MAAM,gBAEvDpK,EAAO4K,oBAAP,aAA6C,CACzCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,mBAAsD,CAClDC,WAAY,CACRN,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,UAElDgZ,WAAY,CACRjZ,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,UAElDiZ,UAAW,CACPlZ,IAAK,CAAC,QAAS,SAAUmI,SAAS,EAAOlI,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9ErT,IAAK,CACDlF,IAAK,CAAC,QAAS,SAAUmI,QAAS,EAAGlI,KAAM,UAE/C6E,IAAK,CACD9E,IAAK,CAAC,QAAS,SAAUmI,QAASzD,OAAOO,UAAWhF,KAAM,UAE9DkZ,SAAU,CACNnZ,IAAK,CAAC,QAAS,SAAUmI,QAAS,EAAGlI,KAAM,UAE/CmZ,UAAW,CACPpZ,IAAK,CAAC,QAAS,SAAUmI,QAAS,EAAGlI,KAAM,UAE/C6F,KAAM,CACF9F,IAAK,CAAC,QAAS,SAAUmI,QAAS,KAAMlI,KAAM,SAAU8F,QAAStQ,EAAO4iB,oBAE5EpY,KAAM,CACFD,IAAK,CAAC,QAAS,SAAUmI,QAAS,UAAWlI,KAAM,SAAU8F,QAAStQ,EAAO6iB,oBAEjFG,SAAU,CACNzY,IAAK,CAAC,QAAS,SAAUmI,SAAS,EAAOlI,KAAM,UAAW8F,QAAStQ,EAAO8iB,oBAE9EO,YAAa,CACT9Y,IAAK,CAAC,QAAS,SAAUmI,QAAS,GAAIlI,KAAM,UAEhDoZ,OAAQ,CACJrZ,IAAK,CAAC,QAAS,SAAUmI,QAAS,SAAUlI,KAAM,UAEtDqZ,SAAU,CACNtZ,IAAK,CAAC,QAAS,SAAUmI,QAAS,IAAKlI,KAAM,Y,8CC9CrD,8BAEAxK,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,cAAiD,I,8CCRjD,8BAEA5K,EAAO2K,iBAAP,OAAoC7J,SAAOsJ,MAAM,UAEjDpK,EAAO4K,oBAAP,OAAuC,CACnCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,aAAgD,I,8CCRhD,8BAEA5K,EAAO2K,iBAAP,OAAoC7J,SAAOsJ,MAAM,UAEjDpK,EAAO4K,oBAAP,OAAuC,CACnCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,aAAgD,I,8CCRhD,8BAEA5K,EAAO2K,iBAAP,YAAyC7J,SAAOsJ,MAAM,eAEtDpK,EAAO4K,oBAAP,YAA4C,CACxCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,kBAAqD,I,8CCRrD,8BAEA5K,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,cAAiD,I,8CCRjD,8BAEA5K,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,cAAiD,I,8CCRjD,8BAEA5K,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,cAAiD,I,8CCRjD,8BAEA5K,EAAO2K,iBAAP,QAAqC7J,SAAOsJ,MAAM,WAElDpK,EAAO4K,oBAAP,QAAwC,CACpCmE,QAAQ,EAAM/F,MAAO,IAGzBhJ,EAAO4K,oBAAP,cAAiD,CAC7CC,WAAY,CACRN,IAAK,CAAC,QAAS,SAAUC,KAAM,OAEnCsZ,QAAS,CACLvZ,IAAK,CAAC,QAAS,SAAUC,KAAM,OAEnCuZ,SAAU,CACNxZ,IAAK,CAAC,QAAS,SAAUC,KAAM,OAEnCwZ,OAAQ,CACJzZ,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAStQ,EAAO6iB,oBAE7DoB,QAAS,CACL1Z,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAStQ,EAAO6iB,oBAE7DxS,KAAM,CACF9F,IAAK,CAAC,QAAS,SAAUC,KAAM,SAAU8F,QAAStQ,EAAO4iB,oBAE7DI,SAAU,CACNzY,IAAK,CAAC,QAAS,SAAUC,KAAM,UAAW8F,QAAStQ,EAAO8iB,sB,8CC5BlE,8BAEA9iB,EAAO2K,iBAAP,OAAoC7J,SAAOsJ,MAAM,UAEjDpK,EAAO4K,oBAAP,OAAuC,CACnCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,aAAgD,I,8CCRhD,8BAEA5K,EAAO2K,iBAAP,aAA0C7J,SAAOsJ,MAAM,gBAEvDpK,EAAO4K,oBAAP,aAA6C,CACzCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,mBAAsD,I,8CCRtD,8BAEA5K,EAAO2K,iBAAP,MAAmC7J,SAAOsJ,MAAM,SAEhDpK,EAAO4K,oBAAP,MAAsC,CAClCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,YAA+C,I,8CCR/C,8BAEA5K,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,aAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,gBAAmD,I,8CCRnD,8BAEA5K,EAAO2K,iBAAP,MAAmC7J,SAAOsJ,MAAM,SAEhDpK,EAAO4K,oBAAP,MAAsC,CAClCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,YAA+C,I,8CCR/C,8BAEA5K,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,aAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,gBAAmD,I,8CCRnD,8BAEA5K,EAAO2K,iBAAP,YAAyC7J,SAAOsJ,MAAM,eAEtDpK,EAAO4K,oBAAP,YAA4C,CACxCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,kBAAqD,I,8CCRrD,8BAEA5K,EAAO2K,iBAAP,UAAuC7J,SAAOsJ,MAAM,aAEpDpK,EAAO4K,oBAAP,UAA0C,CACtCmE,QAAQ,EAAO/F,MAAO,IAG1BhJ,EAAO4K,oBAAP,gBAAmD,I,8CCRnD,kBAEe,mBAAUyX,GACrBA,EAAI6B,UAAUC,IAAgBhmB,KAAMgmB,O,6BCHxC,gDAMe,mBAAU9B,GACrBA,EAAI6B,UAAUE,IAASjmB,KAAMimB,KAC7B/B,EAAI6B,UAAUG,IAAalmB,KAAMkmB,KACjChC,EAAI6B,UAAUI,IAASnmB,KAAMmmB,KAC7BjC,EAAI6B,UAAUK,IAAapmB,KAAMomB,KACjClC,EAAI6B,UAAUM,IAASrmB,KAAMqmB,O,6KCRlB,OAEXrmB,KAAM,SAENoa,QAJW,WAMP,MAAO,CACHkM,OAAQ5kB,OAIhBmJ,MAAO,CAEHhD,MAAO,oBAGC,MAAO,IAEXwE,KAAM,CAACkN,QAGXL,UAAW,oBAGH,OAAO,GAEX7M,KAAM,CAACS,UAGXwN,QAAS,oBAGD,MAAO,IAEXjO,KAAM,CAACkN,QAGXH,QAAS,oBAGD,OAAO,OAIfC,SAAU,oBAGF,MAAO,IAEXhN,KAAM,CAACkN,QAGXD,SAAU,oBAGF,MAAO,IAEXjN,KAAM,CAACkN,QAGXpP,OAAQ,oBAGA,MAAO,IAEXkC,KAAM,CAACkN,QAGXgN,SAAU,oBAGF,MAAO,MAEXla,KAAM,CAAC8M,SAGXqN,QAAS,oBAGD,MAAO,QAEXna,KAAM,CAAC8M,SAGXsN,mBAAoB,oBAGZ,OAAO,GAEXpa,KAAM,CAACS,UAGX7F,MAAO,oBAGC,MAAO,CAAC,YAEZoF,KAAM,CAACkN,QAGXpS,YAAa,oBAGL,MAAO,CAAC,YAEZkF,KAAM,CAACkN,QAGX1Q,OAAQ,oBAGA,OAAO,GAEXwD,KAAM,CAACS,UAGXrJ,SAAU,oBAGF,OAAO,SAACO,GAAD,MAAqB,IAATA,KAI3ByV,cAAe,oBAGP,OAAO,GAEXpN,KAAM,CAACS,UAGX0H,WAAY,oBAGJ,OAAO,IAEXnI,KAAM,CAACyE,SAGX4I,WAAY,oBAGJ,OAAO,IAEXrN,KAAM,CAACyE,SAGX6I,kBAAmB,oBAGX,OAAO,IAIfxR,WAAY,oBAGJ,MAAO,MAEXkE,KAAM,CAAC8M,SAGX/O,UAAW,oBAGH,MAAO,YAEXiC,KAAM,CAAC8M,SAGXW,aAAc,oBAGN,OAAO,GAEXzN,KAAM,CAACS,UAGX+M,aAAc,oBAGN,OAAO,GAEXxN,KAAM,CAACS,UAGXiN,aAAc,oBAGN,OAAO,GAEX1N,KAAM,CAACS,UAGX8M,cAAe,oBAGP,OAAO,IAIfjQ,cAAe,oBAGP,OAAO,SAAC/C,GAAD,OAAUA,KAIzByD,YAAa,oBAGL,OAAO,GAEXgC,KAAM,CAACS,UAGXvD,WAAY,oBAGJ,OAAO,kBAAM,KAIrB5B,WAAY,oBAGJ,OAAO,kBAAM,KAIrBqS,YAAa,oBAGL,OAAO,kBAAM,KAIrBC,UAAW,oBAGH,OAAO,kBAAM,KAIrB1T,UAAW,oBAGH,OAAO,kBAAM,KAIrByO,UAAW,oBAGH,OAAO,GAEX3I,KAAM,CAACyE,SAGXoE,QAAS,oBAGD,OAAO,GAEX7I,KAAM,CAACS,UAGXoN,UAAW,oBAGH,OAAO,GAEX7N,KAAM,CAACS,UAGXqN,iBAAkB,oBAGV,OAAO,KAEX9N,KAAM,CAACyE,UAKf2N,SAAU,CAENkB,QAFM,WAIF,QAASje,KAAK+F,aAAatB,QACvBzE,KAAK+F,aAAatB,SAAWzE,KAAKmG,MAAM1B,QAGhD4c,aARM,WAUF,QAASrhB,KAAK+F,aAAatB,QACvBzE,KAAK+F,aAAatB,SAAWzE,KAAKmG,MAAM1B,SAKpD6G,KA7SW,WA+SP,MAAO,CACHtH,IAAKkF,iBACL8b,SAAU,GACVC,YAAajlB,KAAK4Y,QAClBsM,iBAAkB,GAClBnf,aAAc/F,KAAK2X,SACnBwN,aAAcnlB,KAAK6kB,SACnBO,YAAaplB,KAAK8kB,QAClBO,WAAYrlB,KAAKyI,OACjB6c,gBAAiB,KAIzBzZ,QA5TW,WA8TP7L,KAAKwZ,OAAO,cACRxZ,KAAKulB,iBAAkB,CAAE7L,MAAM,IAE7B1Z,KAAKilB,YAAYxgB,QACnBlD,MAAI0D,KAAKjF,KAAKglB,SAAUhlB,KAAKwlB,gBAIrC5Z,MAAO,CAEH+L,SAFG,SAEM3Y,GAELgB,KAAK+F,aAAe/G,IAK5B8M,QAAS,CAEL2Z,UAFK,SAEKC,GAENnkB,MAAIuY,IAAI9Z,KAAKglB,SAAUU,EACnB,CAAE1hB,IAAK0hB,EAAO1hB,OAGtB2hB,aARK,SAQQD,GAETnkB,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAEhhB,IAAK0hB,EAAO1hB,OAGtB4hB,eAdK,SAcUF,GAMX,OAJM5gB,MAAIgI,SAAS4Y,KACfA,EAASA,EAAM,MAGZnkB,MAAI8Y,UAAUra,KAAKklB,iBACtBQ,IAGRG,mBAxBK,SAwBcH,GAMf,OAJM5gB,MAAIgI,SAAS4Y,KACfA,EAASA,EAAOld,MAGbjH,MAAIC,IAAIxB,KAAKilB,YAAaS,IAGrCI,gBAjCK,SAiCWJ,GAEZ,IAAIld,EAAOkd,EAUX,OARM5gB,MAAIgI,SAAStE,KACfA,EAAOkd,EAAOb,UAGb/f,MAAIgF,QAAQtB,KACbA,EAAOkd,EAAOld,MAGbxI,KAAKmlB,eAAiB3c,EAChB,KAGJxI,KAAKolB,aAGhBW,gBApDK,SAoDWL,GAEZ,IAAIld,EAAOkd,EAUX,OARM5gB,MAAIgI,SAAStE,KACfA,EAAOkd,EAAOM,YAGblhB,MAAIgF,QAAQtB,KACbA,EAAOkd,EAAOld,MAGXjH,MAAIgB,KAAKvC,KAAKqlB,WAAY,CAC7B3lB,SAAU8I,KAIlByd,kBArEK,SAqEaP,GAEd,IAAIld,EAAOkd,EAUX,OARM5gB,MAAIgI,SAAStE,KACfA,EAAOkd,EAAOM,YAGblhB,MAAIgF,QAAQtB,KACbA,EAAOkd,EAAOld,MAGXjH,MAAIC,IAAIxB,KAAKslB,gBAAiB9c,IAGzCgd,cApFK,SAoFSE,GAELA,EAAOQ,kBACR3kB,MAAIuY,IAAI9Z,KAAKilB,YAAaS,EAAOld,OAIzC+c,iBA3FK,WA6FDvlB,KAAKklB,iBAAmB3jB,MAAI4kB,UACxB5kB,MAAI6kB,QAAQpmB,KAAKglB,SAAU,QAAShlB,KAAKilB,aAE7CjlB,KAAK0O,UAAU1O,KAAK2U,MAAMC,UAAUyR,WAGxCC,aAnGK,SAmGQZ,GAET,IAAIld,EAAOkd,EAEL5gB,MAAIgI,SAAStE,KACfA,EAAOkd,EAAOb,UAGb/f,MAAIgF,QAAQtB,KACbA,EAAOkd,EAAOld,MAIlB,IAAI+d,EAAMvmB,KAAKolB,YAEV5c,IAASxI,KAAKmlB,cAAqC,SAArBnlB,KAAKolB,cACpCmB,EAAM,OAGL/d,IAASxI,KAAKmlB,cAAqC,QAArBnlB,KAAKolB,cACpCmB,EAAM,QAGLvmB,KAAKolB,cAAgBmB,GACtBvmB,KAAKgG,MAAM,iBAAkBhG,KAAKolB,YAAcmB,GAG/CvmB,KAAKmlB,eAAiB3c,GACvBxI,KAAKgG,MAAM,kBAAmBhG,KAAKmlB,aAAe3c,GAGtDxI,KAAKgG,MAAM,OAAQhG,KAAKmlB,aAAcnlB,KAAKolB,cAG/CoB,cArIK,SAqIS/d,EAAQge,GACtB,WACIllB,MAAIuH,QAAQ9I,KAAKqlB,WAAY5c,EAAQge,GAErC,IAAIC,EAAUnlB,MAAIkH,OAAOzI,KAAKqlB,YAAY,SAAC5c,GACvC,OAAOlH,MAAIC,IAAI,EAAK8jB,gBAAiB7c,EAAO/I,aAGhDM,KAAKgG,MAAM,gBAAiB0gB,GAE5B1mB,KAAKgG,MAAM,SAAU0gB,EAAS1mB,KAAKslB,kBAGvCqB,YAlJK,WAoJD3mB,KAAKqlB,WAAarlB,KAAKslB,gBAAkB,GAEzCvhB,QAAMsB,KAAK,eAAgBrF,KAAKgE,KAEhChE,KAAKgG,MAAM,gBAAiBhG,KAAKqlB,YAEjCrlB,KAAKgG,MAAM,SAAUhG,KAAKqlB,WAAYrlB,KAAKslB,kBAG/CpJ,UA7JK,WA+JDlc,KAAK2U,MAAM6C,UAAU0E,aAGzBxB,cAlKK,SAkKS1b,GACd,IADqBM,EACrB,uDAD2B,KAEvBU,KAAK2U,MAAM6C,UAAUkD,cAAc1b,EAAOM,IAG9C6b,YAvKK,WAyKD,OAAOnb,KAAK2U,MAAM6C,UAAU2D,eAGhCyL,eA5KK,WA8KD5mB,KAAK2U,MAAM6C,UAAUoP,mBAK7BzO,aAlgBW,WAogBP,OAAMnY,KAAKmY,aAKP,mCAAW,2BAAX,MAJO,MAUfE,aA/gBW,WAihBP,OAAMrY,KAAKqY,aAKP,mCAAW,2BAAX,MAJO,MAUfD,aA5hBW,WA8hBP,IAAMpY,KAAKoY,aACP,OAAO,KAGX,IAAIjP,EAAQ,CACR6B,WAAYhL,KAAKie,QACjBoD,aAAcrhB,KAAKqhB,aACnB8B,UAAWnjB,KAAKmG,MAAM1B,OACtBgZ,QAASzd,KAAKkc,WAGlB,OACI,mCAAW,2BAAX,CACI,8DAAe/S,EAAf,SAKZ2I,WAhjBW,SAgjBA3I,GAEP,IAAI0d,EAAU9jB,MAAIkC,KAAKjF,KAAKglB,UAAU,SAACU,GACnC,OAAOA,EAAOvC,SAAW,KAAOuC,EAAO1b,KAAK,aAAZ0b,CAA0Bvc,MAG9D,OAAOpG,MAAI+jB,OAAOD,IAGtBE,cAzjBW,WA0jBX,eACQF,EAAU9jB,MAAIkC,KAAKjF,KAAKglB,UAAU,SAACU,GAEnC,OAAKA,EAAOvC,SACD,KAIP,qEAAiB,oBAAjB,MAA4CuC,EAAOld,MAAnD,2BACKkd,EAAOnC,aAKpB,OACI,sEAAkB,UAAlB,MAAmC,KAAnC,IACI,+EAAwB,EAAK0B,YAA7B,yCAAwB,EAAKA,YAA7B,SAAgD,YAAhD,IACKliB,MAAI+jB,OAAOD,IADhB,oCADJ,oCAQR9U,WAjlBW,WAmlBP,IAAIiV,EAAgB,CAChBhnB,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,IAGA6mB,EAAU9jB,MAAIkC,KAAKjF,KAAKglB,UAAU,SAACU,GACnC,OAAOA,EAAOvC,SAAW,KAAOuC,EAAO1b,KAAK,aAAZ0b,MAGpC,OACI,mCAAW,mBAAX,CACKsB,EADL,+BACqBjkB,MAAI+jB,OAAOD,MAKxCvU,OArmBW,WAsmBX,aAMQnJ,EAAQpG,MAAIkG,OAAOjJ,KAAK0c,OALf,CACT,UAAW,SAAU,WACrB,UAAW,sBAG6B,CACxCvW,MAAOnG,KAAKmG,MACZwR,SAAU3X,KAAK+F,aACfoN,WAAW,EACXK,QAASxT,KAAKwT,UAIlBrK,EAAK,WAAiB,WAAa,2BAATiB,EAAS,yBAATA,EAAS,gBAC/B,EAAKpE,MAAL,QAAI,CAAO,aAAP,OAAuBoE,KAG/BjB,EAAK,cAAoB,WAAa,2BAATiB,EAAS,yBAATA,EAAS,gBAClC,EAAKpE,MAAL,QAAI,CAAO,gBAAP,OAA0BoE,KAGlCjB,EAAM,kBAAoB,SAACnK,GACvB,EAAKgH,MAAM,eAAgBhH,IAG/BmK,EAAM,oBAAsB,SAACnK,GACzB,EAAKgH,MAAM,iBAAkBhH,IAGjCmK,EAAM,qBAAuB,SAACnK,GAC1B,EAAKgH,MAAM,kBAAmBhH,IAGlCmK,EAAM,qBAAuB,SAACnK,GAC1B,EAAKgH,MAAM,kBAAmB,EAAKD,aAAe/G,IAGtD,IAAIioB,EACA,mCAAW,iBAAX,CACI,wFAAe,aAAgB9d,EAA/B,SAA+C,KAA/C,CACO0J,QAAS7S,KAAKgK,KAAK,kBAKlC,OACI,mCAAW,WAAX,CACI,oEAAgB,YAAhB,MAAkC,gBAAlC,SAA2D,EAA3D,WAA4E,GAA5E,IACI,mCAAW,kBAAX,CACK,CAAChK,KAAKgK,KAAK,aAAVhK,GAA2BinB,MAFrC,mCAKCjnB,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,c,urBC3pBzB,OAEX/T,KAAM,eAENqU,OAAQ,CAEJiS,OAAQ,CACJ/R,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfxC,KAAM,oBAGE,OAAOU,kBAEXyB,KAAM,CAAC8M,SAGX8L,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGXyP,QAAS,oBAGD,MAAO,IAEXvc,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,UAEXA,KAAM,CAAC8M,SAGX0P,MAAO,oBAGC,MAAO,QAEXxc,KAAM,CAAC8M,SAGX9F,KAAM,oBAGE,OAAO,GAEXhH,KAAM,CAACS,UAGX3C,OAAQ,oBAGA,OAAO,GAEXkC,KAAM,CAACS,UAGXwN,QAAS,oBAGD,OAAO,GAEXjO,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,QAASnL,WAGpBmnB,eAAgB,oBAGR,OAAO,GAEXzc,KAAM,CAACS,QAASnL,WAGpBonB,WAAY,oBAGJ,OAAO,GAEX1c,KAAM,CAACyE,SAGXkY,YAAa,oBAGL,MAAO,WAEX3c,KAAM,CAAC8M,SAGX8P,OAAQ,oBAGA,OAAS,GAEb5c,KAAM,CAACyE,OAAQqI,SAGnB+P,WAAY,oBAGJ,MAAO,UAEX7c,KAAM,CAAC8M,SAGXhH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAAClM,OAAQoZ,MAAO5X,WAG1BwnB,aAAc,oBAGN,MAAO,UAEX9c,KAAM,CAAC8M,SAGX7G,aAAc,oBAGN,MAAO,UAEXjG,KAAM,CAAC8M,SAGXoN,SAAU,oBAGF,MAAO,IAEXla,KAAM,CAAC8M,SAGXuO,WAAY,oBAGJ,MAAO,IAEXrb,KAAM,CAAC8M,SAGXiQ,MAAO,oBAGC,OAAO,GAEX/c,KAAM,CAACS,UAGXuc,WAAY,oBAGJ,OAAO,IAIflV,MAAO,oBAGC,OAAO,IAIfmV,SAAU,oBAGF,OAAO,MAIfC,SAAU,oBAGF,OAAO,IAIfC,UAAW,oBAGH,MAAO,KAEXnd,KAAM,CAAC8M,SAGXsQ,cAAe,oBAGP,OAAO9mB,SAAOsJ,MAAM,MAExBI,KAAM,CAAC8M,SAGXuQ,SAAU,oBAGF,OAAO/mB,SAAOsJ,MAAM,QAExBI,KAAM,CAAC8M,SAGXwQ,UAAW,oBAGH,OAAOhnB,SAAOsJ,MAAM,OAExBI,KAAM,CAAC8M,SAGXyQ,eAAgB,oBAGR,OAAOjnB,SAAOsJ,MAAM,qBAExBI,KAAM,CAAC8M,SAGX0Q,aAAc,oBAGN,OAAO,GAEXxd,KAAM,CAACS,WAKf2R,SAAU,CAENqL,aAFM,WAGN,WACI,GAAmB,WAAdpoB,KAAK2K,KAAV,CAIA,IAAImc,EAAS,GAEb,OAAKhiB,MAAIgF,QAAQ9J,KAAKgL,aAItBzJ,MAAI0D,KAAKjF,KAAKgL,YAAY,SAAC/H,GACvBF,MAAIwF,IAAIue,EAAQ7jB,EAAK,EAAK2hB,OAAOne,YAC7B8C,MAAIge,OAAOtkB,EAAK,EAAKukB,iBALlBV,KAanBpO,QA3RW,WA6RP,MAAO,CACH2P,aAAcroB,OAItBsL,KAlSW,WAoSP,MAAO,CACHtH,IAAKkF,iBAAQof,UAAW,IAIhCxc,QAAS,CAELoa,eAFK,WAID,IAAItN,EAAU5Y,KAAK4Y,QAMnB,OAJK5Y,KAAKqnB,aACNzO,GAAWrY,MAAIgC,KAAKvC,KAAK4kB,OAAOtkB,KAAKmS,QAAUzS,KAAKqnB,YAGjDzO,GAGX0N,aAbK,SAaQzlB,GAEHU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAItBxZ,MAAIgC,KAAK1B,EAAMyD,QAAQC,QAAQ,4BACjCvE,KAAK4kB,OAAO0B,aAAatmB,SAMrCgU,YAnUW,WAqUPhU,KAAKuoB,cAAgB,GACrBvoB,KAAK4kB,OAAOa,UAAUzlB,OAG1BmU,cAzUW,WA2UPnU,KAAK4kB,OAAOe,aAAa3lB,OAG7B+R,WA9UW,WA+UX,WACI,IAAM/R,KAAK4kB,OAAOiB,mBAAmB7lB,MACjC,OAAO,KAGX,IAAIS,EAAY,CACZ,iBACA,mBAAqBT,KAAKmnB,MAC1B,mBAAqBnnB,KAAK2K,MAG1B6d,EAAgBxoB,KAAK4kB,OAAOkB,gBAAgB9lB,MAE3CwoB,GACD/nB,EAAUgB,KAAK,WAAY,KAAO+mB,IAGjCxoB,KAAK0nB,OAAU1nB,KAAKyS,OACrBhS,EAAUgB,KAAK,WAGdzB,KAAK2nB,YACNlnB,EAAUgB,KAAK,WAGdzB,KAAK4kB,OAAOqB,kBAAkBjmB,OAC/BS,EAAUgB,KAAK,cAGnB,IAAImB,EAAQ,GAEP5C,KAAK2nB,aACN/kB,EAAM6P,MAAQzS,KAAK2nB,WAAa,MAG/B3nB,KAAKyS,QACN7P,EAAM6lB,UAAYzoB,KAAKyS,MAAQ,MAGnC,IAAItJ,EAAQ,CACR6B,WAAYhL,KAAKsoB,UACjB7V,MAAYzS,KAAKyS,MACjBmV,SAAY5nB,KAAK4nB,SACjBC,SAAY7nB,KAAK6nB,SACjB1E,WAAcnjB,KAAK2nB,WACnBpiB,MAAY,CAACvF,KAAK4kB,OAAO5gB,KAG7BmF,sBAA+B,SAACnK,GAC5B,EAAKspB,UAAYtpB,IAOrB,OAJKgB,KAAK2R,OACNxI,EAAMuf,YAAc1oB,KAAKsmB,cAIzB,uFAAc,SAAd,MAA8B7lB,EAA9B,MAAgDmC,GAAWuG,GAA3D,2BACK,EAAKa,KAAK,iBAAV,GACA,EAAKA,KAAK,kBAAV,GACA,EAAKA,KAAK,mBAAV,QAKb2e,gBAhZW,WAiZX,WAKQC,EACA,mCALY,CACZ,0BAIA,CACI,mCAAO5oB,KAAKujB,UAIpB,OAAKze,MAAIgF,QAAQ9J,KAAKknB,SACX0B,EAOJ,CAACA,EAHJ,mEAAe,WAAf,2BAA0B,EAAK1B,cAMvC2B,eAvaW,WAyaP,OAAM7oB,KAAK2R,KAKP,mCAAW,wBAAX,CACI,uCALG,MAUfmX,iBApbW,WAsbP,IAAM9oB,KAAKyI,OACP,OAAO,KAGX,IAAIsgB,EACA,mCAAW,0BAAX,CACI,iCAAUnL,KAAKC,MAAMkE,WAArB,QAIJsC,EAAY2E,2BAAiB,eAC7BlL,MAAIC,QAAQ/d,KAAK2K,OAErB,MAAO,CACHoe,EAAWE,YAAE5E,EAAW,CAAEqB,OAAQ1lB,SAI1C8R,WAxcW,SAwcA3I,GAEP,IAAMnJ,KAAK4kB,OAAOiB,mBAAmB7lB,MACjC,OAAO,KAGX,IAAIgE,EAAMmF,EAAMnK,MAAMgB,KAAK4kB,OAAOne,YAC5BzG,KAAKgE,IAEPvD,EAAY,CACZ,eACA,iBAAmBT,KAAKmnB,MACxB,iBAAmBnnB,KAAK2K,MAGvB3K,KAAK0nB,OACNjnB,EAAUgB,KAAK,WAGdzB,KAAKsoB,WACN7nB,EAAUgB,KAAK,WAGnB,IAEIkU,EAAS,EAEE,IAJH3V,KAAK4kB,OAAOgB,eAAe5lB,QAKnC2V,EAASxM,EAAMnK,MAAMwK,MAAQxJ,KAAK4kB,OAAO5M,YAG7C,IAAIpV,EAAQ,CACR6P,MAAQzS,KAAKsoB,UAAY3S,EAAU,MAGlC3V,KAAK4nB,WACNhlB,EAAMglB,SAAY5nB,KAAK4nB,SAAWjS,EAAU,MAG3C3V,KAAK6nB,WACNjlB,EAAMilB,SAAY7nB,KAAK6nB,SAAWlS,EAAU,MAGhD,IAAIgB,EAAS5T,MAAIkG,OAAOjJ,KAAKghB,OAAQ,GAAxB,OACN7X,GADM,IACCnF,IAAKA,EAAKklB,MAAOzoB,EAAWmC,MAAOA,EAAO8iB,OAAQ1lB,QAG5DqkB,EAAY2E,2BAAiB,aAC7BlL,MAAIC,QAAQ/d,KAAK2K,OAErB,OAAOse,YAAE5E,EAAW1N,IAGxBrE,OA7fW,WA+fP,OAAO,OChgBA,GAEXK,OAAQ,CAEJiS,OAAQ,CACJ/R,aAASnL,GAGbmV,eAAgB,CACZhK,aAASnL,IAKjByB,MAAO,CAEHnF,IAAK,CACD8Y,UAAU,GAGd4I,OAAQ,CACJ5I,UAAU,GAGd7Z,KAAM,CACF6Z,UAAU,GAGd9d,MAAO,CACH8d,UAAU,GAGdS,KAAM,CACFT,UAAU,GAGd5Z,OAAQ,CACJ4Z,UAAU,IAMlBC,SAAU,CAENoM,MAFM,WAIF,OAAOpmB,MAAInE,IAAIoB,KAAKiD,KAAMjD,KAAK0lB,OAAOld,QAK9C8C,KApDW,WAsDP,MAAO,CAAEC,MAAM,IAGnBM,QAzDW,WA0DX,WACI7L,KAAKiW,MAAQG,YAAW,kBAAM,EAAK7K,MAAO,IAAM,KAGpD4I,cA9DW,WAgEP+B,aAAalW,KAAKiW,QAGtBnK,QAAS,CAELsd,cAFK,SAES3V,GAEV1Q,MAAIwF,IAAIvI,KAAK0lB,OAAO6C,cAChBvoB,KAAKgE,IAAKhE,KAAKqpB,WAAa5V,KAKxCnB,OA7EW,WA+EP,OAAKtS,KAAK0lB,OAAOrT,OAAZ,QACMrS,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,MAIlC,kCAAOA,KAAKmpB,UCnFT,GAEX7qB,KAAM,mBAENgrB,QAASC,EAETjX,OANW,WAQP,OAAOtS,KAAKuL,KAIPvL,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI0kB,cAAcxpB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOoC,eAX/C,OCTJ,GAEXxpB,KAAM,oBAENgrB,QAASC,EAETjX,OANW,WAQP,OAAOtS,KAAKuL,KAIPvL,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI2kB,eAAezpB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOsC,SAAUhoB,KAAK0lB,OAAOuC,eAXtE,OCTJ,GAEX3pB,KAAM,qBAENgrB,QAASC,EAETjX,OANW,WAQP,OAAOtS,KAAKuL,KAIPvL,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI4kB,gBAAgB1pB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOwC,eAAgBloB,KAAK0lB,OAAOoC,eAX7E,OCTJ,GAEXxpB,KAAM,mBAENgrB,QAASC,EAETI,aANW,SAME3qB,GAET,IAAIyR,EAAUzQ,KAAK0lB,OAAOjV,QAErB3L,MAAIC,WAAW0L,KAChBA,EAAUzQ,KAAK0lB,OAAOjV,QAAQzQ,OAGlCyQ,EAAUlP,MAAI0D,KAAKwL,GAAS,SAACzR,EAAO+J,GAChC,MAAO,CAAE6gB,OAAQ5qB,EAAO6qB,OAAQ9gB,MAGpC,IAAIP,EAAOxI,KAAK0lB,OAAO+B,aAEnBqC,EAASvoB,MAAIgB,KAAKkO,GAAS,SAACxN,GAC5B,OAAOF,MAAInE,IAAIqE,EAAMuF,IAASxJ,KAGlC,OAAO8qB,EAIA/mB,MAAInE,IAAIkrB,EAAQ9pB,KAAK0lB,OAAO9U,aAC/B5Q,KAAK0lB,OAAOqC,eAJL,CAAC/nB,KAAK0lB,OAAOoC,YAO5BxV,OAhCW,WAkCP,IAAOtS,KAAKuL,KACR,OAAO,KAGX,GAAKvL,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAC7B,OACI,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAI1C,IAAImpB,EAAUrkB,MAAI2J,SAASzO,KAAKmpB,OACbnpB,KAAKmpB,MAApB,CAACnpB,KAAKmpB,OAEV,OACI,kCACI,mCAAQ5nB,MAAI0D,KAAKkkB,EAAOnpB,KAAKgK,KAAK,uBCjDnC,GAEX1L,KAAM,kBAENgrB,QAASC,EAETxM,SAAU,CAEN+B,QAFM,WAIF,OAAO/b,MAAInE,IAAIoB,KAAKiD,KAAMjD,KAAK0lB,OAAO4B,eAK9ChV,OAfW,WAiBP,IAAOtS,KAAKuL,KACR,OAAO,KAGX,GAAKvL,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAC7B,OACI,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAI1C,IAAIS,EAAY,CACZ,eACA,iBAAmBT,KAAK0lB,OAAO/a,MAOnC,OACI,mCAAYlK,GAAZ,CACI,wFAAgBT,KAAK8e,SAAW9e,KAAKmpB,MAArC,MAAmDnpB,KAAKmpB,OANpD,CACRxK,IAAK,YAKD,U,wHCtCD,OAEXrgB,KAAM,mBAENgrB,QAASC,EAETvV,YANW,WAQPhU,KAAKqpB,WAAatmB,MAAInE,IAAIoB,KAAK0lB,OAAO6C,cAClCvoB,KAAKgE,MAGb8H,QAAS,CAELie,aAFK,WAID,IAA6B,IAAxB/pB,KAAK0lB,OAAO6B,OACb,OAAOvnB,KAAKgqB,eAGhB,IAAIC,EAAWjqB,KAAK0lB,OAAO1a,WAET,OAAbif,IACDA,EAAW,IAGf,IAAIhnB,EAAO1B,MAAIgB,KAAK0nB,EAAT,KACNjqB,KAAK4kB,OAAOne,WAAazG,KAAKhB,MAAMgB,KAAK4kB,OAAOne,cAG9CxD,IACHA,EAAOF,MAAIoJ,OAAO,GAAInM,KAAKiD,KAApB,KAA6BjD,KAAK0lB,OAAO8B,WAAa,KAGjE,IAAI0C,EAAgB3gB,MAAG,IAAKtG,EAAKjD,KAAK0lB,OAAO8B,aAEzCD,EAAShmB,MAAIuN,OAAOvF,MAAIge,OAAO2C,GAC/B3gB,MAAG,IAAKvJ,KAAK0lB,OAAO6B,SAExBtkB,EAAKjD,KAAK0lB,OAAO8B,YAAcje,MAAI4gB,QAAQ5C,GAE3ChmB,MAAIuH,QAAQmhB,EAAUhnB,EAAtB,KACKjD,KAAK4kB,OAAOne,WAAaxD,EAAKjD,KAAK4kB,OAAOne,cAG/CzG,KAAK0lB,OAAO1f,MAAM,oBAAqBikB,IAG3CD,aApCK,WAsCD,IAAIC,EAAWjqB,KAAK0lB,OAAO1a,WAET,OAAbif,IACDA,EAAW,IAGf,IAAIhgB,EAAWlH,MAAIoJ,OAAO,GAAInM,KAAKiD,KAApB,KACVjD,KAAK0lB,OAAO8B,WAAaxnB,KAAK0lB,OAAO6B,SAGtC6C,EAAS,KACRpqB,KAAK4kB,OAAOne,WAAazG,KAAKhB,MAAMgB,KAAK4kB,OAAOne,aAG1ClF,MAAIgB,KAAK0nB,EAAUG,GAK1B7oB,MAAI2B,OAAO+mB,EAAUG,GAFrB7oB,MAAIuY,IAAImQ,EAAUhgB,GAKtBjK,KAAK0lB,OAAO1f,MAAM,oBAAqBikB,IAG3CI,UA/DK,WAiED,IAAI9C,EAASxkB,MAAInE,IAAIoB,KAAK0lB,OAAO0C,aAC7BpoB,KAAKiD,KAAKjD,KAAK4kB,OAAOne,aAE1B,IAAO8gB,EACH,OAAO,EAGX,IAAIvoB,EAAQuK,MAAG,IAAKvJ,KAAK0lB,OAAO6B,QAEhC,OAAgB,IAAXvoB,GAIEuC,MAAIC,IAAI+lB,EAAQvoB,IAG3Boc,WAjFK,WAmFD,OAAOtW,MAAIC,WAAW/E,KAAK0lB,OAAO0B,gBAI3BpnB,KAAK0lB,OAAO0B,eAAepnB,MAHvBA,KAAK0lB,OAAO0B,iBAQ/B9U,OAxGW,WA0GP,IAAI2L,EAAUje,KAAKqqB,YAMnB,GAJyB,OAApBrqB,KAAKqpB,YACNrpB,KAAKopB,cAAcnL,IAGhBje,KAAKuL,KACR,OAAO,KAGX,IAAI9K,EAAY,CACZ,0BAGCT,KAAKqpB,aAAepL,GACrBxd,EAAUgB,KAAK,aAGdwc,GACDxd,EAAUgB,KAAK,aAGnB,IAAI2Z,EAAapb,KAAKob,aAEjBpb,KAAK0lB,OAAOyC,eACb/M,EAAaA,IAAgB6C,GAG5B7C,GACD3a,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,GAMZ,OAJOiS,IACHjS,EAAMsU,QAAUzd,KAAK+pB,cAIrB,wDAAYtpB,GAAe0I,GAA3B,CACI,iCAAUyU,KAAKC,MAAMI,SAArB,UClJD,GAEX3f,KAAM,mBAENgrB,QAASC,EAETvV,YANW,WAQPhU,KAAKqpB,WAAatmB,MAAInE,IAAIoB,KAAK0lB,OAAO6C,cAClCvoB,KAAKgE,MAGb8H,QAAS,CAELke,aAFK,WAID,IAAI/mB,EAAO,KAEJjD,KAAKqqB,cACRpnB,EAAOF,MAAIoJ,OAAO,GAAInM,KAAKiD,OAG/BjD,KAAK0lB,OAAO1f,MAAM,oBAAqB/C,IAG3ConB,UAbK,WAeD,OAAKvlB,MAAIgF,QAAQ9J,KAAK0lB,OAAO1a,aAItBjI,MAAInE,IAAIoB,KAAK0lB,OAAO1a,WAAYhL,KAAK4kB,OAAOne,cAC/CzG,KAAKhB,MAAMgB,KAAK4kB,OAAOne,aAG/B2U,WAvBK,WAyBD,OAAOtW,MAAIgF,QAAQ9J,KAAK0lB,OAAO1a,cAIxBlG,MAAIC,WAAW/E,KAAK0lB,OAAOvC,UAI3BnjB,KAAK0lB,OAAOvC,SAASnjB,MAHjBA,KAAK0lB,OAAOvC,YAQ/B7Q,OAlDW,WAoDP,IAAI2L,EAAUje,KAAKqqB,YAMnB,GAJyB,OAApBrqB,KAAKqpB,YACNrpB,KAAKopB,cAAcnL,IAGhBje,KAAKuL,KACR,OAAO,KAGX,IAAI9K,EAAY,CACZ,0BAGCT,KAAKqpB,aAAepL,GACrBxd,EAAUgB,KAAK,aAGdwc,GACDxd,EAAUgB,KAAK,aAGnB,IAAI2Z,EAAapb,KAAKob,aAEjBpb,KAAK0lB,OAAOyC,eACb/M,EAAaA,IAAgB6C,GAG5B7C,GACD3a,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,GAMZ,OAJOiS,IACHjS,EAAMsU,QAAUzd,KAAKgqB,cAIrB,wDAAYvpB,GAAe0I,GAA3B,CACI,iCAAUyU,KAAKC,MAAMI,SAArB,U,uHC7FD,OAEXtL,OAAQ,CAEJiS,OAAQ,CACJ/R,aAASnL,IAKjByB,MAAO,CAEHuc,OAAQ,CACJ5I,UAAU,IAKlBC,SAAU,CAENsI,WAFM,WAIF,OAAOrlB,KAAK4kB,OAAOmB,gBAAgB/lB,KAAK0lB,SAG5C4E,SAPM,WASF,OAAStqB,KAAK4kB,OAAOqB,kBAAkBjmB,KAAK0lB,SAGhD6E,SAZM,WAcF,OAASzlB,MAAIgF,QAAQ9J,KAAKyI,OAAOzJ,SAKzCsM,KArCW,WAuCP,MAAO,CACH7C,OAAQzI,KAAKwqB,iBAAkB5R,SAAS,IAIhD5E,YA5CW,WA8CPhU,KAAKyqB,eAGT5e,QAjDW,WAmDP9H,QAAMxE,KAAK,eACPS,KAAK2mB,YAAa3mB,KAAKoZ,EAAEpV,KAE7BzD,MAAIgC,KAAK5B,UAAU8C,GAAG,UAClBzD,KAAKsc,UAAWtc,KAAKoZ,EAAEpV,MAG/BmQ,cA1DW,WA4DPpQ,QAAMK,OAAO,eACTpE,KAAKoZ,EAAEpV,KAEXzD,MAAIgC,KAAK5B,UAAUwD,IAAI,UACnB,KAAMnE,KAAKoZ,EAAEpV,MAGrB8H,QAAS,CAEL0e,eAFK,WAID,IAAInF,EAAarlB,KAAK4kB,OAAOmB,gBAAgB/lB,KAAK0lB,QAElD,OAAK5gB,MAAIgF,QAAQub,GACN,KAGJtiB,MAAImD,MAAMmf,IAGrBqF,cAbK,WAeD,OAAO1qB,KAAK0lB,OAAOM,YACfhmB,KAAK0lB,OAAOld,MAGpBmiB,iBAnBK,WAqBD,MAAO,CACHhgB,KAAY3K,KAAK0lB,OAAO/a,KACxB3L,MAAY,KACZU,SAAYM,KAAK0qB,kBAIzBD,YA5BK,WA8BD,GAAKzqB,KAAKyI,OACN,OAAOzI,KAAK4qB,cAGhB5qB,KAAKyI,OAASzI,KAAK2qB,mBAEZ3qB,KAAKuqB,UAIZhpB,MAAIuY,IAAI9Z,KAAK4kB,OAAOS,WAAYrlB,KAAKyI,OAAQ,CACzC/I,SAAUM,KAAK0qB,mBAIvB/D,YA7CK,SA6CO3iB,GAEHhE,KAAK4kB,OAAO5gB,MAAQA,IAIzBhE,KAAKyI,OAASzI,KAAK2qB,mBAEnBppB,MAAIuY,IAAI9Z,KAAK4kB,OAAOS,WAAYrlB,KAAKyI,OAAQ,CACzC/I,SAAUM,KAAK0qB,oBAIvBpO,UA1DK,SA0DKzb,GAECb,KAAK4Y,UAIS,KAAhB/X,EAAMkZ,OAAgB/Z,KAAKuqB,UAC5BvqB,KAAK4qB,cAGY,KAAhB/pB,EAAMkZ,OAAkB/Z,KAAKuqB,UAC9BvqB,KAAK6qB,eAGyB,KAAhBhqB,EAAMkZ,OACpB/Z,KAAK4kB,OAAOG,oBAEoB,KAAhBlkB,EAAMkZ,QACtB/Z,KAAK2U,MAAMmW,QAAQ3b,UAI3Byb,YAhFK,WAkFD,IAAIniB,EAAS1F,MAAImD,MAAMlG,KAAKyI,QAE5BlH,MAAIuY,IAAI9Z,KAAK4kB,OAAOU,gBAChBtlB,KAAK0qB,iBAET1qB,KAAK4kB,OAAO4B,cAAc/d,EAAQ,CAC9B/I,SAAUM,KAAK0qB,mBAIvBG,YA5FK,WA8FD,IAAIpiB,EAASzI,KAAK2qB,mBAElBppB,MAAI2B,OAAOlD,KAAK4kB,OAAOU,gBACnBtlB,KAAK0qB,iBAET1qB,KAAK4kB,OAAO4B,cAAc/d,EAAQ,CAC9B/I,SAAUM,KAAK0qB,kBAGnB1qB,KAAKyI,OAASA,IAKtBsiB,WA/KW,WAiLP,OAAO,MAGXC,YApLW,WAqLX,MACQ7hB,EAAQ,CACRwB,KAAM,UACN4G,MAAM,EACNf,KAAM,KACN2S,UAAYnjB,KAAKuqB,UAGrB,OACI,iFAAaphB,EAAb,SAA6BnJ,KAAK4qB,cAAlC,IACM5qB,KAAKuK,MAAM,UADjB,oCAMR0gB,YApMW,WAqMX,MACQ9hB,EAAQ,CACRwB,KAAM,SACN4G,MAAM,EACNf,KAAM,KACN2S,SAAUnjB,KAAKsqB,UAGnB,OACI,iFAAanhB,EAAb,SAA6BnJ,KAAK6qB,cAAlC,IACM7qB,KAAKuK,MAAM,UADjB,oCAMR2gB,aApNW,WAsNP,OACI,mCAAW,0BAAX,CACMlrB,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,MAKdsS,OA9NW,WA+NX,WAQI,OACI,uFAAc,UAAd,WAAgC,EAAKsG,QAArC,yCAAgC,EAAKA,QAArC,IARQ,CACRsQ,MAAO,0BACPiC,QAAS,QACT3a,KAAM,KACNiC,MAAO,MAIP,CAEUI,QAAS7S,KAAKgK,KAAK,cAAeohB,OAAQprB,KAAKgK,KAAK,oB,uHCzO3D,OAEX1L,KAAM,qBAENgrB,QAAS+B,EAETvf,QAAS,CAEL6e,iBAFK,WAID,MAAO,CACHhgB,KAAY3K,KAAK0lB,OAAO/a,KACxB3L,MAAY,KACZssB,SAAY,KACZ5rB,SAAYM,KAAK0qB,mBAM7BK,WApBW,WAqBX,eACQta,EAAU,CACV8a,GAAIvrB,KAAKuK,MAAM,kBACfihB,GAAIxrB,KAAKuK,MAAM,kBACfkhB,GAAIzrB,KAAKuK,MAAM,eACfmhB,GAAI1rB,KAAKuK,MAAM,iBAGnB,OACI,0FACI,uEACI,iEAAa,KAAb,WAA0B,EAAK9B,OAAOzJ,MAAtC,yCAA0B,EAAKyJ,OAAOzJ,MAAtC,WADJ,mCAGA,uEACI,kEAAc,KAAd,WAA2B,EAAKyJ,OAAO6iB,SAAvC,yCAA2B,EAAK7iB,OAAO6iB,SAAvC,WAA0D7a,GAA1D,OADJ,yC,uHClCD,OAEXnS,KAAM,sBAENgrB,QAAS+B,EAETvf,QAAS,CAEL6e,iBAFK,WAID,MAAO,CACHhgB,KAAY3K,KAAK0lB,OAAO/a,KACxB3L,MAAY,KACZssB,SAAY,KACZ5rB,SAAYM,KAAK0qB,mBAM7BK,WApBW,WAqBX,eACQta,EAAU,CACVkb,EAAG3rB,KAAKuK,MAAMvK,KAAK0lB,OAAOsC,UAC1B4D,EAAG5rB,KAAKuK,MAAMvK,KAAK0lB,OAAOuC,YAG9B,OACI,mEACI,uEACI,kEAAc,KAAd,WAA2B,EAAKxf,OAAOzJ,MAAvC,yCAA2B,EAAKyJ,OAAOzJ,MAAvC,WAAuDyR,GAAvD,OADJ,oCADJ,qC,uHC7BG,OAEXnS,KAAM,uBAENgrB,QAAS+B,EAETvf,QAAS,CAEL6e,iBAFK,WAID,MAAO,CACHhgB,KAAY3K,KAAK0lB,OAAO/a,KACxB3L,MAAY,KACZssB,SAAY,KACZ5rB,SAAYM,KAAK0qB,mBAM7BK,WApBW,WAqBX,eACQta,EAAU,CACVgb,GAAIzrB,KAAKuK,MAAM,cACfshB,GAAI7rB,KAAKuK,MAAM,eACfuhB,GAAI9rB,KAAKuK,MAAM,eAGnB,OACI,0FACI,uEACI,sEAAkB,KAAlB,WAA+B,EAAK9B,OAAOzJ,MAA3C,yCAA+B,EAAKyJ,OAAOzJ,MAA3C,UAA0D,EAAK0mB,OAAOwC,gBAAtE,OADJ,mCAGA,uEACI,kEAAc,KAAd,WAA2B,EAAKzf,OAAO6iB,SAAvC,yCAA2B,EAAK7iB,OAAO6iB,SAAvC,WAA0D7a,GAA1D,OADJ,yC,uHChCD,OAEXnS,KAAM,qBAENgrB,QAAS+B,EAETvf,QAAS,CAEL6e,iBAFK,WAID,MAAO,CACHhgB,KAAY3K,KAAK0lB,OAAO/a,KACxB3L,MAAY,GACZssB,SAAY,KACZ5rB,SAAYM,KAAK0qB,mBAM7Bf,aApBW,SAoBE3qB,GACb,MACQmK,EAAQ,CACRnK,MAAO+D,MAAInE,IAAII,EAAOgB,KAAK0lB,OAAO+B,eAGtC,OACI,8DAAete,EAAf,IAAwBpG,MAAInE,IAAII,EAAOgB,KAAK0lB,OAAO9U,eAAnD,oCAIRma,WA/BW,WAgCX,iBACQ5kB,EAAQnG,KAAK0lB,OAAOjV,QAEnB3L,MAAIC,WAAWoB,KAChBA,EAAQnG,KAAK0lB,OAAOjV,QAAQzQ,OAGhCmG,EAAQ5E,MAAI0D,KAAKkB,GAAO,SAACnH,EAAO+J,GAC5B,MAAO,CAAE6gB,OAAQ5qB,EAAO6qB,OAAQ9gB,MAGpC,IAAI0H,EAAU,CACVsb,GAAI/rB,KAAKuK,MAAM,kBACfyhB,GAAIhsB,KAAKuK,MAAM,mBAGnB,OACI,0FACI,uEACI,yEAAqB,KAArB,MAAgC,WAAhC,WAAmD,EAAK9B,OAAOzJ,MAA/D,yCAAmD,EAAKyJ,OAAOzJ,MAA/D,QACMuC,MAAI0D,KAAKkB,EAAO,EAAK6D,KAAK,kBADhC,oCADJ,mCAKA,uEACI,kEAAc,KAAd,WAA2B,EAAKvB,OAAO6iB,SAAvC,yCAA2B,EAAK7iB,OAAO6iB,SAAvC,WAA0D7a,GAA1D,OADJ,yCC3CD,mBAAU+R,GACrBA,EAAI6B,UAAU4H,EAAM3tB,KAAM2tB,GAC1BzJ,EAAI6B,UAAU6H,EAAY5tB,KAAM4tB,GAChC1J,EAAI6B,UAAU8H,EAAgB7tB,KAAM6tB,GACpC3J,EAAI6B,UAAU+H,EAAiB9tB,KAAM8tB,GACrC5J,EAAI6B,UAAUgI,EAAkB/tB,KAAM+tB,GACtC7J,EAAI6B,UAAUiI,EAAgBhuB,KAAMguB,GACpC9J,EAAI6B,UAAUkI,EAAejuB,KAAMiuB,GACnC/J,EAAI6B,UAAUmI,EAAgBluB,KAAMkuB,GACpChK,EAAI6B,UAAUoI,EAAgBnuB,KAAMmuB,GACpCjK,EAAI6B,UAAUqI,EAAkBpuB,KAAMouB,GACtClK,EAAI6B,UAAUsI,EAAmBruB,KAAMquB,GACvCnK,EAAI6B,UAAUuI,EAAoBtuB,KAAMsuB,GACxCpK,EAAI6B,UAAUwI,EAAkBvuB,KAAMuuB,K,sDC1B3B,OAEXvuB,KAAM,QAEN4M,MAAO,CACH1C,KAAM,QAGVW,MAAO,CAEHlG,KAAM,oBAGE,OAAO,OAIf6pB,UAAW,oBAGH,OAAO,OAIfniB,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXsV,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGX2M,cAAe,oBAGP,OAAO,GAEXpN,KAAM,CAACS,WAKfE,KA1DW,WA4DP,MAAO,CACHtH,IAAKkF,iBACL8b,SAAU,GACVvU,QAAS,GACTuc,UAAWhtB,KAAKiD,OAIxB2I,MAAO,CAEH3I,KAFG,SAEEjE,GAEIA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B6M,QA/EW,WAiFP7L,KAAKitB,iBAGT9Y,cApFW,WAsFPnU,KAAKktB,mBAGTC,QAzFW,WA0FX,WACIroB,MAAIiQ,OAAM,WACD,EAAKJ,MAAMC,WACZ,EAAKD,MAAMC,UAAUwY,gBAE1B,MAGPthB,QAAS,CAELmhB,cAFK,WAGL,WACI,GAAMjtB,KAAK8sB,UAAX,CAIA9sB,KAAKyQ,QAAUzQ,KAAK8sB,UAEfhoB,MAAIC,WAAW/E,KAAKyQ,WACrBzQ,KAAKyQ,QAAUzQ,KAAKyQ,QAAQzQ,OAShC+D,QAAMxE,KAAKS,KAAKyQ,QAAQ,IANL,SAACzR,GAAsB,IAAfgF,EAAe,uDAAT,KACxBA,IAAQ,EAAKyM,QAAQ,IACtB,EAAK4c,SAASruB,KAKlBgB,KAAKgE,OAGbkpB,gBAxBK,WA0BDnpB,QAAMK,OAAOpE,KAAKyQ,QAAQ,GAAIzQ,KAAKgE,MAGvCqpB,SA7BK,SA6BIruB,GAELgB,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYhuB,IAGzBymB,UAnCK,SAmCKC,GAENnkB,MAAIuY,IAAI9Z,KAAKglB,SACTU,EAAQ,CAAE1hB,IAAK0hB,EAAO1hB,OAG9B2hB,aAzCK,SAyCQD,GAETnkB,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAEhhB,IAAK0hB,EAAO1hB,QAK1B0U,QAnJW,WAqJP,MAAO,CACH4U,MAAOttB,OAIfyc,YA1JW,WA2JX,WACI,OACI,0EAAuBzc,KAAK+X,cAA5B,MAAiD,iBAAjD,2BACK,EAAK1F,OAAOgF,OAAS,EAAKhF,OAAOgF,SAAW,EAAK9M,MAAM,iBAKpEuH,WAnKW,WAoKX,WACI,GAAKhN,MAAIgF,QAAQ9J,KAAKgtB,WAClB,OAAOhtB,KAAKgK,KAAK,cAAVhK,GAGX,IAAIglB,EAAWjiB,MAAIkC,KAAKjF,KAAKglB,UAAU,SAACU,GACpC,OACI,mCAAW,kBAAX,CACKA,EAAO1b,KAAK,cAAZ0b,CAA2B,CAAEziB,KAAM,EAAK+pB,YACxCtH,EAAO1b,KAAK,aAAZ0b,CAA0B,CAAEziB,KAAM,EAAK+pB,iBAKpD,OACI,mCAAW,gBAAX,CACKloB,MAAIwH,KAAK0Y,MAKtB1S,OAzLW,WA0LX,M,EACQ7R,EAAY,CACZ,SACA,WAAaT,KAAK2K,KAClB,WAAa3K,KAAKwQ,MAGlB+c,EACA,oEAAgB,YAAhB,SAAsCvtB,KAAK+sB,U,qBAA3C,EACK/sB,KAAKgK,KAAK,aAAVhK,K,6EADL,mCAKJ,OACI,mCAAYS,GAAZ,CACK,CAAC8sB,EAAUvtB,KAAKqS,OAAL,eCxMb,GAEX/T,KAAM,cAENqU,OAAQ,CAEJ2a,MAAO,CACHza,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfxC,KAAM,oBAGE,MAAO,MAEXmC,KAAM,CAAC8M,SAGX8L,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,UAEXA,KAAM,CAAC8M,SAGX6P,YAAa,oBAGL,MAAO,WAEX3c,KAAM,CAAC8M,SAGXhH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAAClM,OAAQoZ,MAAO5X,WAG1BwnB,aAAc,oBAGN,MAAO,UAEX9c,KAAM,CAAC8M,SAGX7G,aAAc,oBAGN,MAAO,UAEXjG,KAAM,CAAC8M,SAGXqQ,UAAW,oBAGH,OAAO7mB,SAAOsJ,MAAM,MAExBI,KAAM,CAAC8M,SAGXuQ,SAAU,oBAGF,OAAO/mB,SAAOsJ,MAAM,QAExBI,KAAM,CAAC8M,SAGXwQ,UAAW,oBAGH,OAAOhnB,SAAOsJ,MAAM,OAExBI,KAAM,CAAC8M,SAGXyQ,eAAgB,oBAGR,OAAOjnB,SAAOsJ,MAAM,qBAExBI,KAAM,CAAC8M,UAKfnM,KA/GW,WAiHP,MAAO,CACHtH,IAAKkF,mBAIb8K,YAtHW,WAwHPhU,KAAKstB,MAAM7H,UAAUzlB,OAGzBmU,cA3HW,WA6HPnU,KAAKstB,MAAM3H,aAAa3lB,OAG5BwtB,YAhIW,WAkIP,OAAKxtB,KAAKqS,OAAOkR,MACNvjB,KAAKqS,OAAOkR,QAInB,mCAAW,iBAAX,CACI,mCAAOvjB,KAAKujB,WAKxBzR,WA7IW,SA6IA3I,GAEP,IAAIwN,EAAS5T,MAAIkG,OAAOE,EAAO,GAAI,CAC/Buc,OAAQ1lB,OAGRqkB,EAAY2E,2BAAiB,aAC7BlL,MAAIC,QAAQ/d,KAAK2K,OAErB,OAAO0Z,GAIP1N,EAAM,MAAS,CACX,eACA,iBAAmB3W,KAAK2K,MAGpBse,YAAE5E,EAAW1N,IARV,MAWfrE,OAlKW,WAoKP,OAAO,OCpKA,G,KAAA,CAEXK,OAAQ,CAEJ2a,MAAO,CACHza,aAASnL,IAKjByB,MAAO,CAEHuc,OAAQ,CACJ5I,UAAU,GAGd7Z,KAAM,CACF6Z,UAAU,IAKlBC,SAAU,CAENoM,MAFM,WAIF,OAAOpmB,MAAInE,IAAIoB,KAAKiD,KAAMjD,KAAK0lB,OAAOld,QAK9C8J,OA/BW,WAiCP,OACI,kCACI,mCAAQtS,KAAKmpB,aCnCd,GAEX7qB,KAAM,mBAENgrB,QAASmE,EAETnb,OANW,WAQP,OAAKtS,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI0kB,cAAcxpB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOoC,iBChBnD,GAEXxpB,KAAM,oBAENgrB,QAASmE,EAETnb,OANW,WAQP,OAAKtS,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI2kB,eAAezpB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOsC,SAAUhoB,KAAK0lB,OAAOuC,iBChB1E,GAEX3pB,KAAM,qBAENgrB,QAASmE,EAETnb,OANW,WAQP,OAAKtS,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAEzB,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAKtC,kCACI,mCAAQ8E,MAAI4kB,gBAAgB1pB,KAAKmpB,MAAOnpB,KAAK0lB,OAAOwC,eAAgBloB,KAAK0lB,OAAOoC,iBChBjF,GAEXxpB,KAAM,mBAENgrB,QAASmE,EAET9D,aANW,SAME3qB,GAET,IAAIyR,EAAUzQ,KAAK0lB,OAAOjV,QAErB3L,MAAIC,WAAW0L,KAChBA,EAAUzQ,KAAK0lB,OAAOjV,QAAQzQ,OAGlC,IAAIwI,EAAOxI,KAAK0lB,OAAO+B,aAEvBhX,EAAUlP,MAAI0D,KAAKwL,GAAS,SAACzR,EAAO+J,GAChC,MAAO,CAAE6gB,OAAQ5qB,EAAO6qB,OAAQ9gB,MAGpC,IAAI+gB,EAASvoB,MAAIgB,KAAKkO,GAAS,SAACxN,GAC5B,OAAOF,MAAInE,IAAIqE,EAAMuF,IAASxJ,KAGlC,OAAO8qB,EAIA/mB,MAAInE,IAAIkrB,EAAQ9pB,KAAK0lB,OAAO9U,aAC/B5Q,KAAK0lB,OAAOqC,eAJL,CAAC/nB,KAAK0lB,OAAOoC,YAO5BxV,OAhCW,WAkCP,GAAKtS,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAC7B,OACI,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAI1C,IAAImpB,EAAUrkB,MAAI2J,SAASzO,KAAKmpB,OACbnpB,KAAKmpB,MAApB,CAACnpB,KAAKmpB,OAEV,OACI,kCACI,mCAAQ5nB,MAAI0D,KAAKkkB,EAAOnpB,KAAKgK,KAAK,uBC7CnC,GAEX1L,KAAM,kBAENgrB,QAASmE,EAET1Q,SAAU,CAEN+B,QAFM,WAIF,OAAO/b,MAAInE,IAAIoB,KAAKiD,KAAMjD,KAAK0lB,OAAO4B,eAK9ChV,OAfW,WAiBP,GAAKtS,KAAK0lB,OAAOzE,KAAK,UAAWjhB,MAC7B,OACI,kCAAOA,KAAK0lB,OAAOrT,OAAZ,QAA2BrS,QAQ1C,OACI,kCACI,wFAAgBA,KAAK8e,SAAW9e,KAAKmpB,MAArC,MAAmDnpB,KAAKmpB,OANpD,CACRxK,IAAK,YAKD,UCxBD,mBAAU6D,GACrBA,EAAI6B,UAAUqJ,EAAKpvB,KAAMovB,GACzBlL,EAAI6B,UAAUsJ,EAAWrvB,KAAMqvB,GAC/BnL,EAAI6B,UAAUuJ,EAAgBtvB,KAAMsvB,GACpCpL,EAAI6B,UAAUwJ,EAAiBvvB,KAAMuvB,GACrCrL,EAAI6B,UAAUyJ,EAAkBxvB,KAAMwvB,GACtCtL,EAAI6B,UAAU0J,EAAgBzvB,KAAMyvB,GACpCvL,EAAI6B,UAAU2J,EAAe1vB,KAAM0vB,K,sDCZxB,GAEX1vB,KAAM,UAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAAClM,SAGX+T,OAAQ,oBAGA,MAAO,IAEX7H,KAAM,CAAClM,SAGXwM,MAAO,oBAGC,OAAOjL,MAEX2K,KAAM,CAAClM,UAKf6M,KAhCW,WAkCP,MAAO,CACH0hB,UAAWhtB,KAAKgL,aAIxBc,QAAS,CAELmiB,WAFK,SAEMjvB,GAEP,QAAK8F,MAAIgF,QAAQ9K,KAIZ8F,MAAIgI,SAAS9N,IAAUA,EAAM+N,MAAM,aAC7BhK,MAAIvB,IAAI,CAAE0sB,QAASluB,KAAKiL,OAASjM,MAGvC8F,MAAIgI,SAAS9N,KAAUA,EAAM+N,MAAM,eAC7BhK,MAAIvB,IAAI,CAAE2sB,QAASnuB,KAAKgtB,WAAahuB,KAMpDovB,WAnBK,SAmBMpvB,GAEP,GAAK8F,MAAIC,WAAW/F,GAAS,4BAFZoL,EAEY,iCAFZA,EAEY,kBACzB,OAAOpL,EAAMqL,MAAMrK,KAAKiL,MAAjB,CAAyBjL,KAAKgtB,WAA9B,OAA4C5iB,IAGvD,OAAKtF,MAAIgI,SAAS9N,IAAUA,EAAM+N,MAAM,cAC7BhK,MAAInE,IAAI,CAAEsvB,QAASluB,KAAKiL,OAASjM,GAGvC8F,MAAIgI,SAAS9N,IAAUA,EAAM+N,MAAM,cAC7BhK,MAAInE,IAAI,CAAEuvB,QAASnuB,KAAKgtB,WAAahuB,GAGzCA,GAGXqvB,WApCK,SAoCMrvB,GAEP,IAAIiM,EAAQlI,MAAIoJ,OAAOnM,KAAKiL,MAAO,CAC/BqjB,YAAatuB,KAAK2U,QAGtB,OAAK7P,MAAIC,WAAW/F,GACT,sCAAIoL,EAAJ,yBAAIA,EAAJ,uBAAapL,EAAMqL,MAAMY,EAAOb,IAGpCpL,GAGXuvB,aAjDK,SAiDQvvB,GAET,GAAK8F,MAAIC,WAAW/F,GAAS,4BAFVoL,EAEU,iCAFVA,EAEU,kBACzB,OAAOpL,EAAMqL,MAAMrK,KAAKiL,MAAjB,CAAyBjL,KAAKwuB,QAASxuB,KAAKgtB,WAA5C,OAA0D5iB,IAGrE,OAAOpL,GAGXyvB,aA1DK,SA0DQC,GAET,OAAOA,EAAQvO,MAIRpd,MAAIvB,IAAIxB,KAAKgtB,UAAW0B,EAAQvO,OACnCngB,KAAK2uB,QAAQ3uB,KAAKgtB,UAAW0B,EAAQvO,KAAMuO,EAAQzkB,UAGhDlH,MAAInE,IAAIoB,KAAKgtB,UAAW0B,EAAQvO,OAP5BuO,EAAQzkB,UAUvB2kB,aAvEK,SAuEQF,GACb,WADsBG,EACtB,uDADgC,KAE5B,OAAOH,EAAQvO,KAIR,SAACnhB,GAEC6vB,GACDA,EAAQ7vB,EAAO,EAAKguB,WAGxB,EAAK2B,QAAQ,EAAK3B,UAAW0B,EAAQvO,KAAMnhB,IATpC,kBAAM,OAarB2vB,QAvFK,SAuFGG,EAAKC,EAAM5gB,GAKf,IAAI7O,GAHJyvB,EAAwB,iBAATA,EACXA,EAAK5kB,MAAM,KAAO4kB,GAEPC,QAMf,YAJkBtnB,IAAbonB,EAAIxvB,IAAmC,OAAbwvB,EAAIxvB,IAC/ByD,MAAIwF,IAAIumB,EAAKxvB,EAAK,IAGD,IAAhByvB,EAAKtqB,OACC1B,MAAIwF,IAAIumB,EAAKxvB,EAAK6O,GAGtBnO,KAAK2uB,QAAQG,EAAIxvB,GAAMyvB,EAAM5gB,KAK5CvC,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7BiwB,YA7JW,SA6JClnB,GACZ,WACI,OAAOjD,MAAI+H,QAAQ9E,GAIZxG,MAAI0D,KAAK8C,GAAQ,SAACmnB,EAAO7K,GAS5B,GAPAA,EAAYA,EAAUvb,QAAQ,QAAS,IAGvComB,EAAQnsB,MAAIoJ,OAAO,CACfvB,KAAK,EAAMC,OAAO,EAAMskB,OAAQ,KAAMjG,MAAO,KAAMkG,IAAK,GAAI1S,OAAQ,GAAIsE,OAAQ,IACjFkO,IAEI,EAAKjB,WAAWiB,EAAMC,QACzB,OAAO,KAGX,IAAO,EAAKf,WAAWc,EAAMtkB,KACzB,OAAO,KAGJ,EAAKwjB,WAAWc,EAAMrkB,SACzBqkB,EAAMtsB,MAAQ,CAAEysB,QAAS,SAI7B,IAAIX,EAAU3rB,MAAIoJ,OAAO,CACrB3D,KAAM,aAAcyB,SAAU,MAC/BilB,EAAMhkB,cAGFgkB,EAAMhkB,MAGbgkB,EAAMxS,OAAS,EAAK0R,WAAWc,EAAMxS,QAGrCwS,EAAK,MAAS,EAAKd,WAAWc,EAAK,OAGnCnsB,MAAIC,IAAIksB,EAAMxS,QAAQ,SAAC1d,GAAD,OAAW,EAAKovB,WAAWpvB,MAGjDkwB,EAAMlO,OAAS,EAAKoN,WAAWc,EAAMlO,QAGrCje,MAAIC,IAAIksB,EAAMlO,QAAQ,SAAChiB,GAAD,OAAW,EAAKovB,WAAWpvB,MAGjD+D,MAAIC,IAAIksB,EAAME,KAAK,SAACpwB,GAAD,OAAW,EAAKqvB,WAAWrvB,MAEzC0vB,EAAQvO,OAGT+O,EAAM,uBAAyB,EAAKN,aAAaF,EAASQ,EAAME,IAAIjG,OAGpE+F,EAAMxS,OAAOgS,EAAQlmB,MAAQ,EAAKimB,aAAaC,IAGnD3rB,MAAIoJ,OAAO+iB,EAAOA,EAAMxS,eACjBwS,EAAMxS,OAEb3Z,MAAIoJ,OAAO+iB,EAAOA,EAAMlO,eACjBkO,EAAMlO,OAEbje,MAAIoJ,OAAO+iB,EAAOA,EAAME,YACjBF,EAAME,IAEb,IAAI3iB,EAAUyiB,EAAMziB,eACbyiB,EAAMziB,eAENyiB,EAAMtkB,WACNskB,EAAMrkB,aACNqkB,EAAMC,OAGb,IAAIpP,EAAQ,EAAKwO,aAAa9hB,EAASyiB,GAMnCI,EAAWjL,EAMf,OAJO9iB,MAAIC,IANI,CACX,MAAO,OAAQ,KAKM8tB,KACrBA,EAAWtG,2BAAiB3E,IAGzB4E,YAAEqG,EAAUJ,EAAO,EAAKllB,KAAK,cAAV,CAAyB+V,OAxF5ChY,GA4FfuK,OA5PW,WA8PP,OAAOtS,KAAKgK,KAAK,cAAVhK,CAAyBA,KAAKwS,QAAQ,KC9PtC,GAEXlU,KAAM,cAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAAClM,SAGX8wB,WAAY,oBAGJ,OAAO,MAEX5kB,KAAM,CAAClM,SAGX+T,OAAQ,oBAGA,MAAO,IAEX7H,KAAM,CAAClM,SAGXwM,MAAO,oBAGC,MAAO,IAEXN,KAAM,CAAClM,UAKf6M,KAxCW,WA0CP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAAYwkB,UAAWxvB,KAAKuvB,YAAcvvB,KAAKgL,aAIvEY,MAAO,CAEHZ,WAAY,SAAUhM,GACbA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,IAIzBuwB,WAAY,SAAUvwB,GACbA,IAAUgB,KAAKwvB,YAChBxvB,KAAKwvB,UAAYxwB,KAM7B8M,QAAS,CAEL2jB,UAFK,SAEKzwB,GAEN,IAAI0wB,EAAQ1wB,EAAM8J,QAAQ,KAAM,IAC3BA,QAAQ,OAAQ,KAIrB,OAAK9J,EAAM+N,MAAM,MACN/M,KAAKuK,MAAMmlB,GAGfA,GAGXC,UAhBK,SAgBK3wB,GACV,WACI,GAAK8F,MAAIgF,QAAQ9K,GACb,OAAO,EAGJ8F,MAAI8H,QAAQ5N,KACfA,EAAQ,CAACA,IAGb,IAAIkN,EAAS3K,MAAI0D,KAAKjG,GAAO,SAACyU,GAC1B,OAAO,EAAKmc,SAASnc,GAAO,MAGhC,OAASlS,MAAIC,IAAI0K,GAAQ,IAG7B2jB,WAjCK,SAiCM7wB,GACX,WACI,GAAK8F,MAAIgF,QAAQ9K,GACb,OAAO,EAGJ8F,MAAI8H,QAAQ5N,KACfA,EAAQ,CAACA,IAGb,IAAIkN,EAAS3K,MAAI0D,KAAKjG,GAAO,SAACyU,GAC1B,OAAO,EAAKmc,SAASnc,GAAO,MAGhC,OAASlS,MAAIC,IAAI0K,GAAQ,IAG7B0jB,SAlDK,SAkDI5wB,GACT,IADgB8wB,IAChB,yDACI,GAAKhrB,MAAIC,WAAW/F,GAChB,QAAUgB,KAAK+vB,WAAW/wB,GAG9B,IAAO8F,MAAIgI,SAAS9N,GAChB,QAAUA,EAGd,IAAOA,EAAM+N,MAAM,8BACf,QAAU/N,EAGd,IAAIqJ,EAAU,CACV2nB,OAAQhwB,KAAKiL,MAAOglB,OAAQjwB,KAAKgtB,UAAWkD,OAAQlwB,KAAKwvB,UAAWW,QAAS1yB,QAGjF,OAAKqyB,OAC6CpoB,IAAvC3E,MAAInE,IAAIyJ,EAASrJ,OAAO0I,KAGzB3E,MAAInE,IAAIyJ,EAASrJ,IAG/BoxB,UA3EK,SA2EKpxB,GAEN,IAAIqxB,EAASrxB,EAAM8J,QAAQ,KAAM,IAAIqB,MAAM,KAM3C,OAJAnL,EAAQuC,MAAI0D,KAAKorB,GAAQ,SAAClmB,GACtB,OAAO2T,MAAIC,QAAQ5T,MAGhB2T,MAAIwS,QAAQtxB,EAAM2C,KAAK,MAGlC4uB,WAtFK,SAsFMvxB,GAEAA,EAAM+N,MAAM,SACf/N,EAAQ,MAAQA,GAGpB,IAAIqxB,EAASrxB,EAAMmL,MAAM,KAMzB,OAJAnL,EAAQuC,MAAI0D,KAAKorB,GAAQ,SAAClmB,GACtB,OAAO2T,MAAIC,QAAQ5T,MAGhB2T,MAAIwS,QAAQtxB,EAAM2C,KAAK,MAGlCouB,WArGK,SAqGMS,EAAIvmB,GAEX,OAAOumB,EAAGtyB,KAAK8B,KAAKiL,MAAOjL,KAAKgtB,UAAW/iB,IAG/CwmB,aA1GK,SA0GQD,GACb,WACI,OAAO1rB,MAAIC,WAAWyrB,GAIf,sCAAIpmB,EAAJ,yBAAIA,EAAJ,uBAAaomB,EAAGtyB,KAAH,MAAAsyB,EAAE,CAAM,EAAKvlB,OAAX,OAAqBb,KAHhC,kBAAMiE,QAAQC,MAAM,8CAMnCoiB,QAnHK,SAmHGpxB,EAAKN,GAET,GAAKM,EAAIyN,MAAM,MACX,OAAO/M,KAAKywB,aAAazxB,GAG7B,GAAK8F,MAAIC,WAAW/F,GAChB,OAAOgB,KAAK+vB,WAAW/wB,GAG3B,IAAO8F,MAAIgI,SAAS9N,GAChB,OAAOA,EAGX,IAAOA,EAAM+N,MAAM,8BACf,OAAO/M,KAAKyvB,UAAUzwB,GAG1B,IAAIqJ,EAAU,CACV2nB,OAAQhwB,KAAKiL,MAAOglB,OAAQjwB,KAAKgtB,UAAWkD,OAAQlwB,KAAKwvB,UAAWW,QAAS1yB,QAG7EyO,EAASnJ,MAAInE,IAAIyJ,EAASrJ,EAAM8J,QAAQ,MAAO,KAUnD,OARK9J,EAAM+N,MAAM,WACbb,EAASpH,MAAIgF,QAAQoC,IAGpBlN,EAAM+N,MAAM,UACbb,EAASpH,MAAIgF,QAAQoC,IAGlBA,GAGXykB,SAtJK,SAsJInoB,EAAMyB,GAEX,GAAKnF,MAAIC,WAAWyD,GAChB,OAAOxI,KAAK+vB,WAAWvnB,EAAMyB,GAGjC,IAAI5B,EAAU,CACV2nB,OAAQhwB,KAAKiL,MAAOglB,OAAQjwB,KAAKgtB,UAAWkD,OAAQlwB,KAAKwvB,UAAWW,QAAS1yB,QAOjF,OAJOqH,MAAI8rB,OAAO3mB,KAAgD,OAAnClH,MAAInE,IAAIyJ,EAASG,GAAO,OACnDzF,MAAIwF,IAAIF,EAASG,EAAMyB,GAGpBlH,MAAInE,IAAIyJ,EAASG,IAG5BqoB,SAvKK,SAuKIroB,EAAMxJ,GAEX,GAAK8F,MAAIC,WAAWyD,GAChB,OAAO6F,QAAQC,MAAM,kDAGzB,IAAIjG,EAAU,CACV2nB,OAAQhwB,KAAKiL,MAAOglB,OAAQjwB,KAAKgtB,UAAWkD,OAAQlwB,KAAKwvB,UAAWW,QAAS1yB,QAGjFsF,MAAIwF,IAAIF,EAASG,EAAMxJ,KAK/B8xB,YArPW,SAqPC5B,EAAO6B,GACnB,WACI,IAAOjsB,MAAI+H,QAAQqiB,GACf,OAAOA,EAGX,IAAOlvB,KAAK6vB,WAAWX,EAAK,KACxB,OAAO,KAGX,IAAOlvB,KAAK2vB,UAAUT,EAAK,QACvB,OAAO,KAGX,IAII8B,EAAe,CACfhyB,MAAO,GAAIiL,SAAU,MAGzBilB,EAAQnsB,MAAIoJ,OARG,CACX8kB,MAAO,GAAI9nB,MAAO,GAAI+nB,OAAQ,GAAIzkB,QAAS,IAOlByiB,GAE7B,IAAI+B,EAAQ,GAEZluB,MAAIkC,KAAKiqB,EAAK,OAAW,SAAClwB,EAAOM,GAExBwF,MAAIgI,SAAS9N,KACdA,EAAQ,CAAEA,MAAOA,IAGrBiyB,EAAM3xB,GAAOyD,MAAIoJ,OAAO6kB,EAAchyB,MAG1C,IAAIkyB,EAAS,GAEbnuB,MAAIkC,KAAKiqB,EAAK,QAAY,SAAClwB,EAAOM,GAC9B4xB,EAAO,EAAKX,WAAWjxB,IAAQ,EAAKmxB,aAAazxB,MAGrD,IAAImK,EAAQ,GAEZpG,MAAIkC,KAAKiqB,EAAK,OAAW,SAAClwB,EAAOM,GAC7B6J,EAAM,EAAKinB,UAAU9wB,IAAQ,EAAKoxB,QAAQpxB,EAAKN,MAGnDmK,EAAQpG,MAAIoJ,OAAOhD,EAAO+nB,GAE1BnuB,MAAIkC,KAAKgsB,GAAO,SAACjyB,EAAOM,GAEpB,IAAI6xB,EAAY,YAAc7xB,EAE9B6J,EAAM,EAAKonB,WAAWY,IAAc,SAAChI,GACjC,EAAK0H,SAAS7xB,EAAMA,MAAOmqB,IAG/BhgB,EAAM,EAAKinB,UAAU9wB,IAAQ,EAAKqxB,SAAS3xB,EAAMA,MAC7CA,EAAMiL,aAGd,IAAIoa,EAAY0M,EAAMjoB,QAAQ,QAAS,IAMvC,GAJMvH,MAAIC,IAAI,CAAC,MAAO,KAAM6iB,KACxBA,EAAY2E,2BAAiB3E,IAG5Bvf,MAAIgF,QAAQua,GACb,OAAO,KAGLrkB,KAAK6vB,WAAWX,EAAK,SACvB/lB,EAAMvG,MAAQ,kBAGlB,IAAI0P,EAAS,kBAAM/Q,MAAI0D,KAAKiqB,EAAMziB,SAAS,SAACzN,EAAOM,GAC/C,OAAO,EAAK0K,KAAK,cAAV,CAAyBhL,EAAOM,OAW3C,OARKwF,MAAIC,WAAWmqB,EAAMziB,WACtB6F,EAAS,kBAAM4c,EAAMziB,QAAQpC,MAAM,EAAKY,SAGvCnG,MAAIgI,SAASoiB,EAAMziB,WACpB6F,EAAS,kBAAM,EAAKmd,UAAUP,EAAMziB,WAGjCwc,YAAE5E,EAAWlb,EAAO,CAAE0J,QAASP,KAG1CA,OA/UW,WAgVX,WACI,OAAO/Q,MAAI0D,KAAKjF,KAAKwS,QAAQ,SAACxT,EAAOM,GAAR,OAAgB,EAAK0K,KAAK,cAAV,CAAyBhL,EAAOM,Q,mWClVtE,OAEXhB,KAAM,kBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAAC8M,SAGXvM,MAAO,oBAGC,MAAO,IAEXP,KAAM,CAAClM,SAGXwM,MAAO,oBAGC,MAAO,IAEXN,KAAM,CAAClM,UAKf6M,KAhCW,WAkCP,MAAO,CACHsM,SAAU,GAAID,SAAU,KAAMyZ,UAAWpxB,KAAKqxB,UAAUrxB,KAAKkL,MAAO,UAAWomB,UAAWtxB,KAAKqxB,UAAUrxB,KAAKiL,MAAO,YAI7Ha,QAAS,CAELulB,UAFK,SAEKryB,GACV,IADiBmhB,EACjB,uDADwB,GAEhBjU,EAAS,GAEb,IAAOpH,MAAI+H,QAAQ7N,KAAY+D,MAAInE,IAAII,EAAO,YAC1C,OAAOkN,EAGX,IAAI,IAAI5M,KAAON,EAAO,OAED,CAAC,GAAD,OACVmhB,EADU,YACF7gB,GAAON,EAAMM,IADvBiyB,EAFa,KAERpjB,EAFQ,KAMbrJ,MAAI+H,QAAQsB,KACbA,EAAMnO,KAAKqxB,UAAUljB,EAAKojB,IAG9B,IAAI5mB,EAAO,EAAOwD,GAEbrJ,MAAI8H,QAAQuB,KACbxD,EAAO,SAGXuB,EAAO5M,GAAO,CACV6gB,KAAMoR,EAAKvyB,MAAOmP,EAAKxD,KAAMA,GAKrC,OAAOuB,GAGXslB,WAnCK,SAmCMxyB,GAEPgB,KAAKgG,MAAM,oBAAqBhH,EAAMmhB,OAG1ClE,WAxCK,SAwCMjd,GAEPgB,KAAK2X,SAAW3Y,GAGpByc,WA7CK,SA6CMzc,GAEa,WAAfA,EAAM2L,MACPpJ,MAAIuN,OAAO9O,KAAK4X,SAAU5Y,EAAMmhB,QAM5CsR,WA7FW,SA6FAzyB,EAAOM,GAClB,WACQmB,EAAY,CACZ,0BACA,4BAA8BzB,EAAM2L,MAexC,OAZK5H,MAAInE,IAAIoB,KAAK2X,SAAU,UAAY3Y,EAAMmhB,MAC1C1f,EAAUgB,KAAK,eAGC,WAAfzC,EAAM2L,MACPlK,EAAUgB,KAAK,cAGdF,MAAIC,IAAIxB,KAAK4X,SAAU5Y,EAAMmhB,OAC9B1f,EAAUgB,KAAK,eAIf,mCAAYhB,EAAZ,WAAmC,kBAAM,EAAK+wB,WAAWxyB,KAAzD,CACI,mCAAW,4BAAX,QAAgD,kBAAM,EAAKyc,WAAWzc,KAAtE,CACI,iCAAS,qBAAT,QAEJ,mCAAW,0BAAX,QAA8C,kBAAM,EAAKid,WAAWjd,KAApE,EACKM,KADL,2BACKA,MAEL,mCAAW,0BAAX,QAA8C,kBAAM,EAAK2c,WAAWjd,KAApE,CACKA,EAAM2L,OAEX,mCAAW,0BAAX,QAA8C,kBAAM,EAAK6mB,WAAWxyB,KAApE,CACI,iCAAS,gBAAT,WAMhB0yB,WAlIW,SAkIA1yB,EAAOM,GAClB,WACQqyB,EAAapwB,MAAI0D,KAAKjG,EAAMA,OAAO,SAACA,EAAOM,GAC3C,OAAO,EAAK0K,KAAK,aAAV,CAAwBhL,EAAOM,MAGtCsyB,EACA,mCAAW,6BAAX,EACKD,KADL,2BACKA,MAQT,OAJOpwB,MAAIC,IAAIxB,KAAK4X,SAAU5Y,EAAMmhB,QAChCyR,EAAY,MAGT,CAAC5xB,KAAKgK,KAAK,aAAVhK,CAAwBhB,EAAOM,GAAMsyB,IAGjDlb,WArJW,SAqJA1X,EAAOM,GAEd,MAAoB,WAAfN,EAAM2L,KACA3K,KAAKgK,KAAK,aAAVhK,CAAwBhB,EAAOM,GAGnCU,KAAKgK,KAAK,aAAVhK,CAAwBhB,EAAOM,IAG1CuyB,YA9JW,WA+JX,WACQC,EAAYvwB,MAAI0D,KAAKjF,KAAKoxB,WAAW,SAACpyB,EAAOM,GAC7C,OAAO,EAAK0K,KAAK,aAAV,CAAwBhL,EAAOM,MAG1C,OACI,mCAAW,4BAAX,EACKwyB,KADL,2BACKA,OAKbC,YA3KW,WA4KX,WACQC,EAAYzwB,MAAI0D,KAAKjF,KAAKsxB,WAAW,SAACtyB,EAAOM,GAC7C,OAAO,EAAK0K,KAAK,aAAV,CAAwBhL,EAAOM,MAG1C,OACI,mCAAW,4BAAX,EACK0yB,KADL,2BACKA,OAKb1f,OAxLW,WA0LP,OACI,mCAAW,qBAAX,CACK,CAACtS,KAAKgK,KAAK,cAAVhK,GAA4BA,KAAKgK,KAAK,cAAVhK,Q,sVC5L/B,OAEX1B,KAAM,mBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAAC8M,SAGXvM,MAAO,oBAGC,MAAO,IAEXP,KAAM,CAAClM,SAGXwM,MAAO,oBAGC,MAAO,IAEXN,KAAM,CAAClM,SAGX+R,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXhF,MAAO,oBAGC,MAAO,QAEX9H,KAAM,CAAC8M,SAGXnV,OAAQ,oBAGA,MAAO,QAEXqI,KAAM,CAAC8M,UAKfnM,KAxDW,WA0DP,MAAO,CACH2mB,OAAO,EAAOjF,UAAWhtB,KAAKgL,aAItCc,QAAS,CAELomB,YAFK,SAEOlzB,GAERgB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYhuB,KAKzDmzB,YAxEW,WAyEX,WACI,IAAOnyB,KAAKiyB,MACR,OAAO,KAGX,IAAIG,EAAa,CACbpnB,YAAY,EACZyH,MAAOzS,KAAKyS,MACZnQ,OAAQtC,KAAKsC,OAGjB8vB,QAAwB,WACpB,EAAKH,OAAQ,IAGbI,EAAa,CACbnnB,MAAOlL,KAAKkL,MAAOD,MAAOjL,KAAKiL,MAGnConB,sBAAoC,SAACrzB,GACjC,EAAKkzB,YAAYlzB,GAAQ,EAAKizB,OAAQ,IAGtClS,EAAQ,CAIZA,KAAgB,kBACZ,gGAAuB,YAAesS,GAAtC,QAGJ,OACI,2DAAYD,E,+VAAZ,IAAiCrS,KAIzCuS,YA7GW,WA8GX,WACQC,EAAa,CACbvnB,WAAYhL,KAAKgtB,UACjB5J,KAAM,eACN5S,KAAMxQ,KAAKwQ,KAGf+hB,sBAAoC,SAACvzB,GACjC,EAAKkzB,YAAYlzB,IAGrBuzB,OAAuB,SAACryB,GACpB,EAAK8F,MAAM,SAAU9F,IAGzBqyB,YAA4B,WACxB,EAAKN,OAAQ,IAGjB,OACI,2DAAYM,EAAZ,OAIRjgB,OAtIW,WAwIP,OACI,mCAAW,sBAAX,CACK,CAACtS,KAAKgK,KAAK,cAAVhK,GAA4BA,KAAKgK,KAAK,cAAVhK,QCtI/B,mBAASwiB,GACpBA,EAAI6B,UAAUmO,EAAQl0B,KAAMk0B,GAC5BhQ,EAAI6B,UAAUoO,EAAYn0B,KAAMm0B,GAChCjQ,EAAI6B,UAAUqO,IAASp0B,KAAMo0B,KAC7BlQ,EAAI6B,UAAUsO,EAAer0B,KAAMq0B,GACnCnQ,EAAI6B,UAAUuO,EAAgBt0B,KAAMs0B,K,sDCRzB,GAEXt0B,KAAM,WAENoa,QAJW,WAMP,MAAO,CACHma,SAAU7yB,OAIlB2S,OAAQ,CAEJkgB,SAAU,CACNhgB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfyH,MAAO,oBAGC,OAAO,GAEX9H,KAAM,CAACyE,SAGX+T,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGX0nB,OAAQ,oBAGA,OAAO,GAEXnoB,KAAM,CAACS,UAGX3N,OAAQ,oBAGA,OAAO,GAEXkN,KAAM,CAACS,UAGX+f,QAAS,oBAGD,MAAO,SAEXxgB,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,iBAEXpoB,KAAM,CAAC8M,SAGXub,YAAa,oBAGL,OAAO,GAEXroB,KAAM,CAACS,UAGX6nB,WAAY,oBAGJ,OAAO,GAEXtoB,KAAM,CAACS,UAGXmI,UAAW,oBAGH,OAAO,IAEX5I,KAAM,CAACyE,UAKf2N,SAAU,CAENC,MAFM,WAGF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAPM,WAQF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAZM,WAaF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QAjBM,WAkBF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KA9IW,WAgJP,MAAO,CACH0hB,WAAW,EACXkG,QAAS,EACT9wB,QAAS,EACTkC,OAAQ,KACR6uB,SAAS,IAIjBvnB,MAAO,CAEHZ,WAFG,WAIChL,KAAKgtB,UAAYhtB,KAAKgL,YAG1BgiB,UAPG,WASCloB,MAAIiQ,MAAM/U,KAAKozB,eAAgB,MAKvCpf,YAvKW,WAyKPhU,KAAKgtB,UAAYhtB,KAAKgL,YAG1Ba,QA5KW,WA8KP7L,KAAKsE,OAAS/D,MAAIgC,KAAKvC,KAAKM,KAAK+yB,WAAWz0B,IAAI,GAE1B,YAAjBoB,KAAKmrB,UACNnrB,KAAKsE,OAAS/D,MAAIgC,KAAKvC,KAAKM,KAAKwB,SAASlD,IAAI,IAG7CoB,KAAKvC,QACN8C,MAAIgC,KAAK5B,SAASC,MAAM0yB,OAAOtzB,KAAKM,KAGnCN,KAAK8yB,QAA2B,UAAjB9yB,KAAKmrB,SACrB5qB,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAG,YACvBqB,MAAIyO,UAAUvT,KAAKuzB,QAAS,IAAKvzB,KAAKoZ,EAAEpV,KAG3ChE,KAAK8yB,QAA2B,UAAjB9yB,KAAKmrB,SACrB5qB,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAGzD,KAAKmd,UAC5BrY,MAAIyO,UAAUvT,KAAKyd,QAAS,IAAKzd,KAAKoZ,EAAEpV,KAG3ChE,KAAK8yB,QAA2B,YAAjB9yB,KAAKmrB,SACrB5qB,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAG,cACvBqB,MAAIyO,UAAUvT,KAAKwzB,UAAW,IAAKxzB,KAAKoZ,EAAEpV,KAGlDzD,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAGzD,KAAKmd,UAC5BrY,MAAIyO,UAAUvT,KAAKyzB,OAAQ,IAAKzzB,KAAKoZ,EAAEpV,KAE3CD,QAAMxE,KAAK,iBAAkBS,KAAK0zB,aAAc1zB,KAAKoZ,EAAEpV,MAG3DmQ,cA7MW,WA+MPnU,KAAKM,IAAI4C,SAET3C,MAAIgC,KAAK5B,UAAUwD,IAAI,YAAa,KAAMnE,KAAKoZ,EAAEpV,KACjDzD,MAAIgC,KAAK5B,UAAUwD,IAAI,YAAa,KAAMnE,KAAKoZ,EAAEpV,KACjDzD,MAAIgC,KAAK5B,UAAUwD,IAAI,cAAe,KAAMnE,KAAKoZ,EAAEpV,KAEnDD,QAAMK,OAAO,iBAAkBpE,KAAKoZ,EAAEpV,MAI1C8H,QAAS,CAEL6nB,OAFK,WAID,OAAO3zB,KAAKgtB,WAGhB4G,KAPK,WASD5zB,KAAKgG,MAAM,oBACPhG,KAAKgtB,WAAY,IAGzB7d,MAbK,WAcL,IADMxE,EACN,uDADa,KAEJ3K,KAAKmzB,iBAIHnzB,KAAKiW,MAELtL,GACH3K,KAAKgG,MAAM,SAGD,WAAT2E,GACD3K,KAAKgG,MAAM,eAGD,UAAT2E,GACD3K,KAAKgG,MAAM,cAGfhG,KAAKgG,MAAM,oBACPhG,KAAKgtB,WAAY,KAGzB6G,MArCK,WAuCD7zB,KAAKmzB,SAAU,GAGnBW,QA1CK,WA4CD9zB,KAAKmzB,SAAU,GAGnBO,aA/CK,SA+CQ1vB,GAEJhE,KAAKizB,YAAcjzB,KAAKgtB,WAAahtB,KAAKoZ,EAAEpV,MAAQA,GACrDhE,KAAKmP,MAAM,UAInBikB,eAtDK,WA0DD,GAFA7yB,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAI,OAEhB9C,KAAKgtB,UACR,OAAOhtB,KAAK+zB,sBAGhB/zB,KAAKg0B,8BAEEh0B,KAAKi0B,cAGhBD,qBAnEK,WAoEL,WACIh0B,KAAK2a,QAAUrG,YAAYtU,KAAKk0B,eAC5B,IAAOl0B,KAAKuT,WAiBhBzO,MAAIiQ,OAfU,WAEL,EAAK+d,QACNvyB,MAAIgC,KAAK,EAAK+B,QAAQa,SAAS,UAGnC5E,MAAIgC,KAAK,EAAKjC,KAAK6E,SAAS,WAEvB,EAAK0tB,UACN,EAAKA,SAASgB,QAGlB9vB,QAAMsB,KAAK,iBAAkB,EAAK+T,EAAEpV,OAGrB,MAGvB+vB,oBA1FK,WA4FDvf,cAAcxU,KAAK2a,SAEd3a,KAAK6yB,UACN7yB,KAAK6yB,SAASiB,UAGb9zB,KAAK8yB,QACNvyB,MAAIgC,KAAKvC,KAAKsE,QAAQc,YAAY,UAGtC7E,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,YAGnC+uB,aAzGK,SAyGQxe,GACb,WACI,IAAO3V,KAAKi0B,aACR,OAAO,EAGX,IAAIjvB,EAAUzD,MAAI0D,KAAK,CAAC,IAAK,MAAM,SAAC3F,GAChC,OAAOqW,EAAOrW,KAAS,EAAK20B,aAAa30B,MAG7C,OAASiC,MAAIC,IAAIwD,GAAS,IAG9BovB,WAtHK,SAsHM5jB,GACX,WACI,IAAOxQ,KAAKq0B,WACR,OAAO,EAGX,IAAIrvB,EAAUzD,MAAI0D,KAAK,CAAC,QAAS,WAAW,SAAC3F,GACzC,OAAOkR,EAAKlR,KAAS,EAAK+0B,WAAW/0B,MAGzC,OAASiC,MAAIC,IAAIwD,GAAS,IAG9BsvB,oBAnIK,SAmIevB,GACpB,IAD8B9oB,EAC9B,uDADyC,KAEjCsqB,EAAav0B,KAAKsE,OAAOnC,wBAEP,YAAjBnC,KAAKmrB,UACNoJ,EAAa,CACT1xB,IAAK7C,KAAKoC,QAASoyB,KAAMx0B,KAAKkzB,QAASzgB,MAAO,EAAGnQ,OAAQ,IAIjE,IAAImyB,EAAaz0B,KAAKM,IAAI6B,yBAEL,IAAhBnC,KAAKyS,QACNgiB,EAAWhiB,MAAQ8hB,EAAW9hB,OAGlC,IAAIiiB,EAAO,CAGPhhB,MAAO6gB,EAAW1xB,IAAM4xB,EAAWnyB,OAGnCqR,IAAK4gB,EAAW1xB,IAAM0xB,EAAWjyB,QAIjCqyB,EAAO,CAGPjhB,MAAO6gB,EAAWC,KAGlBI,OAAQL,EAAWC,KAA2B,GAAnBD,EAAW9hB,MACd,GAAnBgiB,EAAWhiB,MAGhBkB,IAAK4gB,EAAWC,KAAOD,EAAW9hB,MAC9BgiB,EAAWhiB,OAIfkD,EAAS,CAAEL,EAAG,EAAGjT,EAAG,GAEN,cAAb0wB,IACDpd,EAAS,CAAEL,EAAGqf,EAAKjhB,MAAOrR,EAAGqyB,EAAKhhB,QAGpB,eAAbqf,IACDpd,EAAS,CAAEL,EAAGqf,EAAKC,OAAQvyB,EAAGqyB,EAAKhhB,QAGrB,YAAbqf,IACDpd,EAAS,CAAEL,EAAGqf,EAAKhhB,IAAKtR,EAAGqyB,EAAKhhB,QAGlB,iBAAbqf,IACDpd,EAAS,CAAEL,EAAGqf,EAAKjhB,MAAOrR,EAAGqyB,EAAK/gB,MAGpB,kBAAbof,IACDpd,EAAS,CAAEL,EAAGqf,EAAKC,OAAQvyB,EAAGqyB,EAAK/gB,MAGrB,eAAbof,IACDpd,EAAS,CAAEL,EAAGqf,EAAKhhB,IAAKtR,EAAGqyB,EAAK/gB,MAGpC,IAAIkhB,EAAU70B,KAAK+yB,SAEdA,EAAShmB,MAAM,cAChB8nB,EAAUA,EAAQ/rB,QAAQ,WAAY,YAGrCiqB,EAAShmB,MAAM,iBAChB8nB,EAAUA,EAAQ/rB,QAAQ,cAAe,SAG7C,IAAIgsB,EAASnf,EAAOtT,EAAIoyB,EAAWnyB,OAC/B7E,OAAOs3B,aAAepf,EAAOtT,EAAI,EAErC,OAAKrC,KAAKgzB,aAAe8B,IAAY7qB,EAC1BjK,KAAKs0B,oBAAoBO,EAASlf,IAGxC1L,GAAY6qB,IACbnf,EAAS1L,GAGR0L,EAAOtT,EAAI,IACZsT,EAAOtT,EAAI,GAGVsT,EAAOtT,EAAIoyB,EAAWnyB,OAAS7E,OAAOs3B,cACvCpf,EAAOtT,EAAI5E,OAAOs3B,YAAcN,EAAWnyB,QAG1CqT,EAAOL,EAAI,IACZK,EAAOL,EAAI,GAGVK,EAAOL,EAAImf,EAAWhiB,MAAQhV,OAAOu3B,aACtCrf,EAAOL,EAAI7X,OAAOu3B,WAAaP,EAAWhiB,OACrChV,OAAOu3B,WAAar0B,SAASC,KAAKq0B,cAGpCtf,IAGXuf,kBA/OK,SA+OanC,GAClB,IAD4B9oB,EAC5B,uDADuC,KAE/BsqB,EAAav0B,KAAKsE,OAAOnC,wBAEP,YAAjBnC,KAAKmrB,UACNoJ,EAAa,CACT1xB,IAAK7C,KAAKoC,QAASoyB,KAAMx0B,KAAKkzB,QAASzgB,MAAO,EAAGnQ,OAAQ,IAIjE,IAAImyB,EAAaz0B,KAAKM,IAAI6B,yBAEL,IAAhBnC,KAAKyS,QACNgiB,EAAWhiB,MAAQ8hB,EAAW9hB,OAGlC,IAAIiiB,EAAO,CAGPhhB,MAAO6gB,EAAW1xB,IAGlB+xB,OAAQL,EAAW1xB,IAA2B,GAApB0xB,EAAWjyB,OACZ,GAApBmyB,EAAWnyB,OAGhBqR,IAAK4gB,EAAW1xB,IAAM0xB,EAAWjyB,OAC7BmyB,EAAWnyB,QAIfqyB,EAAO,CAGPjhB,MAAO6gB,EAAWC,KAAOC,EAAWhiB,MAGpCkB,IAAK4gB,EAAWC,KAAOD,EAAW9hB,OAIlCkD,EAAS,CAAEL,EAAG,EAAGjT,EAAG,GAEN,eAAb0wB,IACDpd,EAAS,CAAEL,EAAGqf,EAAKjhB,MAAOrR,EAAGqyB,EAAKhhB,QAGpB,gBAAbqf,IACDpd,EAAS,CAAEL,EAAGqf,EAAKjhB,MAAOrR,EAAGqyB,EAAKE,SAGpB,aAAb7B,IACDpd,EAAS,CAAEL,EAAGqf,EAAKjhB,MAAOrR,EAAGqyB,EAAK/gB,MAGpB,gBAAbof,IACDpd,EAAS,CAAEL,EAAGqf,EAAKhhB,IAAKtR,EAAGqyB,EAAKhhB,QAGlB,iBAAbqf,IACDpd,EAAS,CAAEL,EAAGqf,EAAKhhB,IAAKtR,EAAGqyB,EAAKE,SAGlB,cAAb7B,IACDpd,EAAS,CAAEL,EAAGqf,EAAKhhB,IAAKtR,EAAGqyB,EAAK/gB,MAGpC,IAAIkhB,EAAU70B,KAAK+yB,SAEdA,EAAShmB,MAAM,eAChB8nB,EAAUA,EAAQ/rB,QAAQ,YAAa,WAGtCiqB,EAAShmB,MAAM,gBAChB8nB,EAAUA,EAAQ/rB,QAAQ,aAAc,UAG5C,IAAIgsB,EAASnf,EAAOL,EAAImf,EAAWhiB,MAC/BhV,OAAOu3B,YAAcrf,EAAOL,EAAI,EAEpC,OAAKtV,KAAKgzB,aAAe8B,IAAY7qB,EAC1BjK,KAAKk1B,kBAAkBL,EAASlf,IAGtC1L,GAAY6qB,IACbnf,EAAS1L,GAGR0L,EAAOtT,EAAI,IACZsT,EAAOtT,EAAI,GAGVsT,EAAOtT,EAAIoyB,EAAWnyB,OAAU7E,OAAOs3B,cACxCpf,EAAOtT,EAAI5E,OAAOs3B,YAAcN,EAAWnyB,QAG1CqT,EAAOL,EAAI,IACZK,EAAOL,EAAI,GAGVK,EAAOL,EAAImf,EAAWhiB,MAAQhV,OAAOu3B,aACtCrf,EAAOL,EAAI7X,OAAOu3B,WAAaP,EAAWhiB,OACrChV,OAAOu3B,WAAar0B,SAASC,KAAKq0B,cAGpCtf,IAGXwf,gBA3VK,WA6VD,IAAIpC,EAAW/yB,KAAK+yB,SAEpB,OAAKA,EAAShmB,MAAM,mBACT/M,KAAKs0B,oBAAoBvB,GAG/BA,EAAShmB,MAAM,mBACT/M,KAAKk1B,kBAAkBnC,GAG3BwB,YAGXL,eA1WK,WA4WD,IAAI1jB,EAAOxQ,KAAKM,IAAI6B,wBAChBD,EAAOlC,KAAKsE,OAAOnC,wBAEnBiyB,EAAap0B,KAAKo0B,WAAW5jB,GAEjC,IAAK4jB,IAAcp0B,KAAKm0B,aAAajyB,GAArC,CAIOlC,KAAKiW,QACRjW,KAAKiW,MAAQtR,KAAKC,OAGtB5E,KAAKq0B,WAAa7jB,EAEbxQ,KAAKyS,OACNlS,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAI,CAAE2P,MAAOzS,KAAKyS,MAAQ,OAGjD,IAAIkD,EAAS3V,KAAKm1B,kBAEdC,EAAS70B,MAAIgC,KAAK5B,SAASC,MAC1Bw0B,SAEDxyB,EAAQ,CACR,UAAYnF,OAAO43B,SACnB,IAAY9lB,KAAK+G,MAAMX,EAAOtT,EAAI+yB,EAAOvyB,KAAO,KAChD,KAAY0M,KAAK+G,MAAMX,EAAOL,EAAI8f,EAAOZ,MAAQ,OAGhC,IAAhBx0B,KAAKyS,QACN7P,EAAM6P,MAAQvQ,EAAKuQ,MAAQ,MAG/BlS,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAIF,GAEvB,IAAI0yB,EAAgBt1B,KAAKi0B,cAAgBG,GACpCzvB,KAAKC,MAAQ5E,KAAKiW,MAAS,IAE3BjW,KAAKgzB,aAAesC,GACrBt1B,KAAKmP,MAAM,UAGfnP,KAAKi0B,aAAe/xB,IAGxBqxB,QA1ZK,SA0ZG1yB,EAAOmB,GAEX,IAAKhC,KAAKmjB,SAAV,CAIA,IAAI7e,EAAS/D,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKsE,QACnCyD,EAASxH,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKM,KAEnC4L,IAAa5H,KAAayD,EAE9B,GAAK/H,KAAKgtB,YAAc9gB,EAIxB,OAAOA,OAIPlM,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAY9gB,GAHtClM,KAAK0O,UAAU1O,KAAKmP,SAMnCsO,QAhbK,SAgbG5c,EAAOmB,GAEX,IAAIuzB,EAA0B,IAAhB10B,EAAMkZ,OACA,IAAhBlZ,EAAMkZ,MAEV,IAAK/Z,KAAKmjB,WAAYnjB,KAAKgtB,WAAeuI,EAA1C,CAIA,IAAIjxB,EAAS/D,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKsE,QACnCyD,EAASxH,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKM,KAEnC4L,IAAa5H,KAAayD,EAEzB/H,KAAKgtB,YAAc9gB,GAIxBlM,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAY9gB,KAGrDsnB,UArcK,SAqcK3yB,EAAOmB,GAEb,IAAIuzB,EAA0B,IAAhB10B,EAAMkZ,MAEpB,IAAK/Z,KAAKmjB,WAAYnjB,KAAKgtB,WAAeuI,EAA1C,CAIA,IAAIjxB,EAAS/D,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKsE,QACnCyD,EAASxH,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKM,KAEvCN,KAAKkzB,QAAUryB,EAAMqyB,QACrBlzB,KAAKoC,QAAUvB,EAAMuB,QAErB,IAAI8J,IAAa5H,KAAayD,EAEzBmE,IACDrL,EAAMwD,iBACNxD,EAAM2b,mBAGLxc,KAAKgtB,YAAc9gB,GAIxBlM,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAY9gB,KAGrDunB,OAjeK,SAieE5yB,EAAOmB,GAEV,IAAKhC,KAAKmjB,UAAcnjB,KAAKgtB,YAIrBzsB,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKM,KAAlC,CAIA,IAAIgE,EAAS/D,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKsE,QAEjB,YAAjBtE,KAAKmrB,SAA4B7mB,GAItCtE,KAAKmP,WAKb2C,WA/sBW,WAitBP,OAAK9R,KAAKqS,OAAO2N,IACNhgB,KAAKqS,OAAO2N,MAInB,mCAAW,oBAAX,CACMhgB,KAAKqS,OAAOmjB,QACV,mCAAW,qBAAX,CACMx1B,KAAKqS,OAAOmjB,WAGtB,mCAAW,mBAAX,CACMx1B,KAAKqS,OAAL,YAEJrS,KAAKqS,OAAO+Y,QACV,mCAAW,qBAAX,CACMprB,KAAKqS,OAAO+Y,cAOlC9Y,OAxuBW,WA0uBA7U,OAAO43B,SACV53B,OAAO43B,OAAS,KAGpB,IAAI50B,EAAY,CACZ,YACA,cAAgBT,KAAK2K,KACrB,cAAgB3K,KAAKwQ,KACrB,cAAgBxQ,KAAK+yB,UAGlB/yB,KAAKgtB,WACRvsB,EAAUgB,KAAK,YAGnB,IAAIg0B,EAAWz1B,KAAKgL,WAMpB,OAJKlG,MAAI8rB,OAAO5wB,KAAKgL,cACjByqB,EAAWz1B,KAAKgtB,WAIhB,mCAAYvsB,GAAZ,CACMg1B,GAAYz1B,KAAKgK,KAAK,aAAVhK,OCpwBf,GAEX1B,KAAM,gBAENqU,OAAQ,CACJkgB,SAAU,CACNhgB,aAASnL,IAIjByB,MAAO,CAEHqH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,UAMfsF,SAAU,CAEN2Y,SAFM,WAIF,OAAK11B,KAAK6yB,SACC7yB,KAAK6yB,SAASriB,KAGlBxQ,KAAKwQ,OAKpB8B,OApCW,WAsCP,IAAI7R,EAAY,CACZ,kBACA,oBAAsBT,KAAK01B,UAG/B,OACI,qCAAcj1B,GAAd,CACI,mCAAQT,KAAKqS,OAAL,gBC3CT,GAEX/T,KAAM,iBAENqU,OAAQ,CACJkgB,SAAU,CACNhgB,aAASnL,IAIjByB,MAAO,CAEHwB,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXke,MAAO,oBAGC,OAAO,GAEXhrB,KAAM,CAACS,UAGXuoB,OAAQ,oBAGA,OAAO,GAEXhpB,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXgY,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGX2K,aAAc,oBAGN,MAAO,SAEXzX,KAAM,CAAC8M,SAGX2G,MAAO,oBAGC,MAAO,IAEXzT,KAAM,CAAC8M,SAGXme,cAAe,oBAGP,MAAO,UAEXjrB,KAAM,CAAC8M,SAGXoe,WAAY,oBAGJ,OAAO,GAEXlrB,KAAM,CAACS,WAMf2R,SAAU,CAEN2Y,SAFM,WAIF,OAAK11B,KAAK6yB,SACC7yB,KAAK6yB,SAASriB,KAGlBxQ,KAAKwQ,OAKpB1E,QAAS,CAEL2R,QAFK,SAEG5c,GAECb,KAAK6yB,UAAY7yB,KAAK61B,YACvB71B,KAAK6yB,SAAS1jB,QAGlBnP,KAAKgG,MAAM,YAAanF,KAKhCi1B,YAzHW,WA2HP,IAAO91B,KAAKoe,MACR,OAAO,KAGX,IAAI3d,EAAY,CACZ,UACA,YAAcT,KAAK41B,eAGvB,OAAQ,mCAAYn1B,EAAZ,IAA4BT,KAAKoe,OAAjC,OAGZ2X,WAvIW,WAyIP,IAAO/1B,KAAKojB,KACR,OAAO,KAGX,IAAI3iB,EAAY,CACZ,SACA,WAAaT,KAAKoiB,cAKtB,OAFA3hB,EAAUgB,KAAKzB,KAAKojB,MAEZ,iCAAU3iB,GAAV,OAGZu1B,cAvJW,WAyJP,OAAKh2B,KAAKqS,OAAO2N,IACNhgB,KAAKqS,OAAO2N,MAInB,mCAAQhgB,KAAKqS,OAAL,aAIhBC,OAlKW,WAoKP,IAAI7R,EAAY,CACZ,mBACA,qBAAuBT,KAAK2K,KAC5B,qBAAuB3K,KAAK01B,UAG3B11B,KAAK2zB,QACNlzB,EAAUgB,KAAK,YAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQpG,MAAImD,MAAMlG,KAAKghB,QAU3B,OAROhhB,KAAKmjB,WACRha,EAAMsU,QAAUzd,KAAKyd,SAGpBzd,KAAKmjB,WACNha,EAAMga,UAAW,GAIjB,sDAAU1iB,EAAV,KAA0B,sBAAyB0I,GAAnD,CACMnJ,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,OClMH,mBAAUwiB,GACrBA,EAAI6B,UAAU4R,EAAQ33B,KAAM23B,GAC5BzT,EAAI6B,UAAU6R,EAAa53B,KAAM43B,GACjC1T,EAAI6B,UAAU8R,EAAc73B,KAAM63B,K,4YCJvB,OAEX73B,KAAM,QAEN83B,cAAc,EAEdlrB,MAAO,CACH1C,KAAM,QAGVW,MAAO,CAEHktB,IAAK,oBAGG,MAAO,OAEX1rB,KAAM,CAAC8M,SAGX6e,KAAM,oBAGE,MAAO,IAEX3rB,KAAM,CAAClM,SAGX83B,OAAQ,oBAGA,MAAO,IAEX5rB,KAAM,CAAClM,SAGX+R,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0P,MAAO,oBAGC,MAAO,YAEXxc,KAAM,CAAC8M,SAGX0b,QAAS,oBAGD,OAAO,GAEXxoB,KAAM,CAACS,UAGXorB,OAAQ,oBAGA,MAAO,CAAC,WAAY,WAExB7rB,KAAM,CAACkN,QAGX4e,YAAa,oBAGL,OAAO,GAEX9rB,KAAM,CAACS,UAGXsrB,YAAa,oBAGL,OAAO,GAEX/rB,KAAM,CAACS,WAKf2R,SAAU,CAENtc,UAFM,WAIF,OAAOT,KAAKghB,OAAL,MAIAlc,MAAI8H,QAAQ5M,KAAKghB,QAAUhhB,KAAKghB,OAAL,MAC9B,CAAChhB,KAAKghB,OAAL,OAJM,KASnB1V,KApGW,WAsGP,MAAO,CACHtH,IAAKkF,iBAAQ8b,SAAU,GAAI2R,SAAS,IAI5Cje,QA3GW,WA6GP,MAAO,CACHke,MAAO52B,OAIf6L,QAlHW,WAoHP/G,MAAIiQ,MAAM/U,KAAKgK,KAAK,SAAU,MAGlC6sB,MAvHW,WAyHP72B,KAAKwZ,OAAO,OAAQxZ,KAAK82B,WACrB,CAAEpd,MAAM,IAEZ1Z,KAAK+2B,eAGTjrB,QAAS,CAELkrB,SAFK,SAEIn2B,GAWL,OATKb,KAAKmzB,UACNtyB,EAAMwD,iBACNxD,EAAM2b,mBAGLjc,MAAIgC,KAAK1B,EAAMyD,QAAQ2yB,GAAG,UAC3Bj3B,KAAKgG,MAAM,SAAUnF,GAGlBb,KAAKmzB,SAGhB+D,QAhBK,SAgBGj0B,GAEJ1B,MAAIuY,IAAI9Z,KAAKglB,SAAU/hB,EAAM,CACzBe,IAAKf,EAAKe,OAIlBmzB,WAvBK,SAuBMl0B,GAEP1B,MAAI2B,OAAOlD,KAAKglB,SAAS,CACrBhhB,IAAKf,EAAKe,OAIlB+yB,YA9BK,WA+BL,WADYK,EACZ,uDADsB,IAElBlhB,aAAalW,KAAKo3B,SAElBp3B,KAAKo3B,QAAUhhB,YAAW,WACtB,EAAKugB,SAAU,IAChBS,GAEHp3B,KAAK22B,SAAU,EAEf,IAAI33B,EAAQ+D,MAAIkG,OAAOjJ,KAAKs2B,KACxBt2B,KAAKw2B,QAETx2B,KAAKq3B,UAAY3xB,KAAKE,UAAU5G,IAGpC83B,WA9CK,WAgDD,IAAK92B,KAAK22B,QAAV,CAIA,IAAI33B,EAAQ+D,MAAIkG,OAAOjJ,KAAKs2B,KACxBt2B,KAAKw2B,QAELc,EAAY5xB,KAAKE,UAAU5G,GAE1BgB,KAAKq3B,WAAaC,IAIvBt3B,KAAKq3B,UAAYC,EAEjBt3B,KAAKgG,MAAM,cAKnBsM,OAnMW,WAqMP,IAAI7R,EAAY,CACZ,SACA,WAAaT,KAAKmnB,OAGlBoQ,EAAQx0B,MAAIkG,OAAOjJ,KAAKghB,OAAQ,CAAC,QAAS,WAAY,YAAa,CACnEkI,MAAOlpB,KAAK8gB,KAAKrgB,KAOrB,OAJA82B,EAAK,SAAe,SAACr3B,GACjB,OAAO,GAGJ+oB,YAAEjpB,KAAKq2B,I,+VAAN,IAAgBkB,GAAS,CAC7Bv3B,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCtNpB,GAEX/T,KAAM,aAENqU,OAAQ,CAEJikB,MAAO,CACH/jB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACS,UAGXmY,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGX2L,KAAM,oBAGE,MAAO,KAIf5S,KAAM,oBAGE,MAAO,IAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX0P,MAAO,oBAGC,MAAO,YAEXxc,KAAM,CAAC8M,SAGXhM,SAAU,oBAGF,OAAO,GAEXd,KAAM,CAACS,UAGX8b,QAAS,oBAGD,MAAO,IAEXvc,KAAM,CAAC8M,SAGX+f,gBAAiB,oBAGT,MAAO,gBAEX7sB,KAAM,CAAC8M,UAKfnM,KAvFW,WAyFP,MAAO,CACH0hB,UAAWhtB,KAAKgL,aAIxBY,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B8M,QAAS,CAEL2rB,cAFK,WAIDz3B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,WAAchtB,KAAKgtB,aAKhE0K,eAlHW,WAoHP,OAAO13B,KAAKyL,SAKR,mCAAW,0BAAX,CACI,iCAAUmS,KAAKC,MAAMkE,WAArB,QALG,MAUfgU,WA/HW,WAiIP,OAAO/1B,KAAKojB,KAKR,mCAAW,sBAAX,CACI,iCAAU,CAAC,SAAUpjB,KAAKojB,OAA1B,QALG,MAUfuU,WA5IW,WA8IP,IAAIC,EACA,mCAAW,sBAAX,CACI,mCAAQ53B,KAAKujB,UAIrB,OACI,mCAAW,uBAAX,CACM,CAACvjB,KAAKgK,KAAK,aAAVhK,GAA2B43B,MAK1CC,aA3JW,WA6JP,OAAO73B,KAAKqS,OAAOylB,OAKf,mCAAW,wBAAX,CACM93B,KAAKqS,OAAOylB,WALX,MAUftK,YAxKW,WA0KP,OACI,mCAAW,uBAAX,QAA2CxtB,KAAKy3B,eAAhD,CACMz3B,KAAKgK,KAAK,iBAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,MAKd+3B,cAnLW,WAoLX,WACI,OAAO/3B,KAAKknB,QAKR,mEAAe,UAAf,KAA8B,KAA9B,SAA6ClnB,KAAKw3B,iBAAlD,2BACK,EAAKtQ,YALH,MAUfpV,WAhMW,WAkMP,OACI,mCAAW,sBAAX,CACM9R,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,aAKrCC,OAzMW,WA2MP,IAAI9B,EAAOxQ,KAAKwQ,KAEXxQ,KAAK42B,QACNpmB,EAAOA,GAAQxQ,KAAK42B,MAAMpmB,MAG9B,IAAI/P,EAAY,CACZ,eACA,iBAAmB+P,EACnB,iBAAmBxQ,KAAK2K,KACxB,iBAAmB3K,KAAKmnB,OAe5B,OAZKnnB,KAAKyL,UACNhL,EAAUgB,KAAK,0BAGZzB,KAAKgtB,WACRvsB,EAAUgB,KAAK,YAGdzB,KAAKqS,OAAOylB,QACbr3B,EAAUgB,KAAK,YAIf,wCAAiBhB,GAAjB,CACMT,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,OCtOH,GAEX1B,KAAM,YAENqU,OAAQ,CAEJikB,MAAO,CACH/jB,aAASnL,GAGbswB,MAAO,CACHnlB,aAASnL,GAGbuwB,UAAW,CACPplB,aAASnL,IAKjBgR,QApBW,WAsBP,MAAO,CAAEwf,UAAWl4B,OAGxBmJ,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACS,UAGX5C,KAAM,oBAGE,MAAO,MAEXmC,KAAM,CAAC8M,SAGX8L,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,IAEX7F,KAAM,CAAC8M,SAGXyP,QAAS,oBAGD,MAAO,IAEXvc,KAAM,CAAC8M,SAGX+f,gBAAiB,oBAGT,MAAO,gBAEX7sB,KAAM,CAAC8M,SAGX0gB,cAAe,oBAGP,OAAO,GAEXxtB,KAAM,CAACS,UAGXgtB,YAAa,oBAGL,OAAO,GAEXztB,KAAM,CAACS,UAGXitB,YAAa,oBAGL,OAAOp3B,SAAOsJ,MAAM,iBAExBI,KAAM,CAAC8M,SAGX6gB,aAAc,oBAGN,OAAOr3B,SAAOsJ,MAAM,kBAExBI,KAAM,CAAC8M,UAKf3L,QAAS,CAELysB,QAFK,WAGL,IADQlU,EACR,wDACI,QAAUrkB,KAAKo4B,aAAep4B,KAAKgL,cAAiBqZ,GAGxDlB,SAPK,SAOIkB,GAEL,OAAQrkB,KAAKo4B,cAAiBp4B,KAAKgL,YAAeqZ,GAGtDmU,gBAZK,WAcDx4B,KAAKgG,MAAM,qBAAsBhG,KAAKgL,aAG1CytB,WAjBK,WAmBD,IAAIC,EAASn4B,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAK,SAErC,OAAMm2B,EAAOrhB,SAIbqhB,EAASn4B,MAAIgC,KAAKvC,KAAK2U,MAAMwU,OAAOja,UAEvBmI,aAIbhJ,QAAQ6L,IAAI,yBAHDwe,EAAO95B,IAAI,GAAG0kB,QANdoV,EAAO95B,IAAI,GAAG+2B,SAY7BgD,UAlCK,WAoCD,IAAIpC,EAASv2B,KAAK42B,MAAML,OAExB,IAAKzxB,MAAIgF,QAAQysB,IAIXv2B,KAAKg4B,OAAUh4B,KAAKi4B,UAA1B,CAIA,IAAIlJ,EAAOjqB,MAAIiqB,KAAKwH,GAEfh1B,MAAIyG,MAAM+mB,KAAU/uB,KAAKwI,MAI9BxI,KAAKg4B,MAAMY,UAAU54B,KAAKi4B,UAAU35B,SAK5CgN,KAtKW,WAwKP,MAAO,CACHtH,IAAKkF,mBAIb8K,YA7KW,WA+KFhU,KAAK42B,OACN52B,KAAK42B,MAAMM,QAAQl3B,OAI3B6L,QApLW,WAsLF7L,KAAK42B,OACN52B,KAAK42B,MAAMpd,OAAO,SAAUxZ,KAAK24B,UAAW,CAAEjf,MAAM,KAI5DvF,cA3LW,WA6LFnU,KAAK42B,OACN52B,KAAK42B,MAAMO,WAAWn3B,OAI9B+3B,cAlMW,WAmMX,WACI,IAAM/3B,KAAKknB,UAAYlnB,KAAKqS,OAAO6U,QAC/B,OAAO,KAGX,IAAI/d,EAAQ,CACRqH,KAAM,KACNuiB,SAAU/yB,KAAKw3B,iBAGnB,OACI,wFAAe,WAAcruB,GAA7B,2BACK,EAAKkJ,OAAO6U,SAAW,EAAK7U,OAAO6U,WAAa,EAAKA,aAKlE2R,gBApNW,WAsNP,OAAO74B,KAAKo4B,YAKR,mCAAW,yBAAX,QAA6Cp4B,KAAKw4B,iBAAlD,CACI,mCAAQx4B,KAAKgL,WAAahL,KAAKs4B,aAAet4B,KAAKq4B,gBALhD,MAUf7K,YAjOW,WAmOP,OAAMxtB,KAAKujB,OAAUvjB,KAAKqS,OAAOkR,MAY1B,CAPH,mCAAW,sBAAX,CACI,uCAAgBvjB,KAAKy4B,YAArB,CACKz4B,KAAKqS,OAAOkR,OAASvjB,KAAKqS,OAAOkR,SAAWvjB,KAAKujB,UAM/CvjB,KAAKgK,KAAK,gBAAVhK,IAZJ,MAgBf84B,YApPW,WAsPP,OAAM94B,KAAK42B,OAAU7zB,MAAIvB,IAAIxB,KAAK42B,MAAML,OAAQv2B,KAAKwI,MAKjD,mCAAW,sBAAX,CACKzF,MAAInE,IAAIoB,KAAK42B,MAAML,OAAQv2B,KAAKwI,QAL9B,MAUf8pB,YAjQW,WAmQP,OACI,iCAAS,QAAT,MAAuB,sBAAvB,CACKtyB,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,aAKpCC,OA1QW,WA4QP,IAGI7R,EAAY,CACZ,cACA,iBALOT,KAAKwQ,MAAQzN,MAAInE,IAAIoB,KAAK42B,MAAO,OAAQ,QAYpD,OAJK52B,KAAKmjB,YACN1iB,EAAUgB,KAAK,eAGZ,mCAAYhB,GAAZ,CACFT,KAAKgK,KAAK,kBAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,OC1RE,mBAAUwiB,GACrBA,EAAI6B,UAAU0U,EAAKz6B,KAAMy6B,GACzBvW,EAAI6B,UAAU2U,EAAU16B,KAAM06B,GAC9BxW,EAAI6B,UAAU4U,EAAS36B,KAAM26B,K,+CCJlB,G,KAAA,CAEX36B,KAAM,UAEN6K,MAAO,CAEHwB,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXlG,KAAM,oBAGE,OAAO,GAEX5G,KAAM,CAACS,UAGX8X,OAAQ,oBAGA,OAAO,GAEXvY,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXgY,KAAM,oBAGE,OAAO,OAIfhB,aAAc,oBAGN,MAAO,UAEXzX,KAAM,CAAC8M,SAGX4L,WAAY,oBAGJ,MAAO,UAEX1Y,KAAM,CAAC8M,UAKfse,WAvEW,WAyEP,IAAO/1B,KAAKojB,KACR,OAAO,KAGX,IAAI3iB,EAAY,CACZ,SACA,WAAaT,KAAKoiB,cAKtB,OAFA3hB,EAAUgB,KAAKzB,KAAKojB,MAEZ,iCAAU3iB,GAAV,OAGZ6R,OAvFW,WAyFP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAKwQ,KACpB,aAAexQ,KAAK2K,MAGnB3K,KAAKojB,MACN3iB,EAAUgB,KAAK,kBAGdzB,KAAKuR,MACN9Q,EAAUgB,KAAK,kBAGdzB,KAAKkjB,QACNziB,EAAUgB,KAAK,oBAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACR+f,MAAOzoB,GAGNT,KAAKmjB,WACNha,EAAMga,UAAW,GAGrB,IAAI+V,EAAY,GAchB,MAZ2B,WAAtBl5B,KAAKoiB,cACN8W,EAAUz3B,KAAKzB,KAAKgK,KAAK,aAAVhK,IAGdA,KAAKqS,OAAL,UAAyBrS,KAAKkjB,QAC/BgW,EAAUz3B,KAAK,mCAAQzB,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,aAGvB,UAAtBrS,KAAKoiB,cACN8W,EAAUz3B,KAAKzB,KAAKgK,KAAK,aAAVhK,IAGZipB,YAAEjpB,KAAKqjB,WAAYla,EAAO+vB,MCxI1B,GAEX56B,KAAM,eAEN6K,MAAO,CAEHqH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,UAKfnF,OAhBW,WAkBP,IAAI7R,EAAY,CACZ,iBACA,mBAAqBT,KAAKwQ,MAE9B,OACI,mCAAY/P,GAAZ,CACMT,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCrB1B,mBAAUmQ,GACrBA,EAAI6B,UAAU8U,EAAO76B,KAAM66B,GAC3B3W,EAAI6B,UAAU+U,EAAY96B,KAAM86B,K,6KCHrB,OAEX96B,KAAM,UAENqU,OAAQ,CAEJulB,UAAW,CACPrlB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfhZ,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX4hB,KAAM,oBAGE,OAAO,GAEX1uB,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,iBAEXpoB,KAAM,CAAC8M,SAGX6hB,SAAU,oBAGF,OAAO,GAEX3uB,KAAM,CAACS,UAGXK,SAAU,oBAGF,OAAO,GAEXd,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGXoY,YAAa,oBAGL,OAAOviB,SAAOsJ,MAAM,kBAExBI,KAAM,CAAC8M,SAGXqQ,UAAW,oBAGH,MAAO,YAEXnd,KAAM,CAAC8M,SAGXsQ,cAAe,oBAGP,MAAO,kBAEXpd,KAAM,CAAC8M,SAGX8hB,aAAc,oBAGN,MAAO,8BAEX5uB,KAAM,CAAC8M,SAGX9G,YAAa,oBAGL,OAAO,GAEXhG,KAAM,CAACS,UAGXqF,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAACkN,MAAOpZ,SAGlBgpB,aAAc,oBAGN,MAAO,UAEX9c,KAAM,CAAC8M,SAGX7G,aAAc,oBAGN,MAAO,UAEXjG,KAAM,CAAC8M,SAGX+hB,gBAAiB,oBAGT,MAAO,QAEX7uB,KAAM,CAAC8M,UAKfsF,SAAU,CAEN0c,aAFM,WAIF,OAAOz5B,KAAKk4B,UAAYl4B,KAAKk4B,UAAU/U,SAASnjB,KAAKmjB,UACjDnjB,KAAKmjB,UAGb9L,MARM,WAUF,OAAOvS,MAAIgF,QAAQ9J,KAAKgtB,YAG5B0M,OAbM,WAcN,WAUI,OAAyB,IATZn4B,MAAIkH,OAAOzI,KAAKglB,UAAU,SAAC2U,GAEpC,OAAK70B,MAAI8H,QAAQ,EAAKogB,WACXzrB,MAAIC,IAAI,EAAKwrB,UAAW2M,EAAQ36B,OAGpC26B,EAAQ36B,QAAU,EAAKguB,aAGpBvoB,SAKtB6G,KAnMW,WAqMP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAChB4uB,UAAW55B,KAAK2jB,WAChBgS,OAAO,EACPlP,OAAQ,GACR1d,OAAS,EACTic,SAAU,GACV6U,SAAU,KAKlB7lB,YAjNW,WAmNFhU,KAAKq5B,MACNr5B,KAAK85B,kBAGJ95B,KAAKs5B,WAAax0B,MAAI8H,QAAQ5M,KAAKgtB,aACpChtB,KAAKgtB,UAAY,IAGhBhtB,KAAKs5B,WAAax0B,MAAI8H,QAAQ5M,KAAK2jB,cACpC3jB,KAAK45B,UAAY,IAGrB55B,KAAK+5B,iBAGTrhB,QAlOW,WAoOP,MAAO,CACHshB,QAASh6B,OAIjB4L,MAAO,CAEHZ,WAFG,SAEQhM,IAEDgB,KAAKs5B,UAAYx0B,MAAI8H,QAAQ5N,KAC/BA,EAAQ,MAGPgB,KAAKs5B,WAAax0B,MAAI8H,QAAQ5N,KAC/BA,EAAQ,IAGZgB,KAAKgtB,UAAYhuB,GAGrBynB,OAfG,WAiBCzmB,KAAK+5B,iBAGTpE,MApBG,WAsBC31B,KAAK0O,UAAU1O,KAAKi6B,mBAK5BnuB,QAAS,CAELouB,MAFK,WAGL,IADMr5B,EACN,uDADc,KAELA,IACDA,EAAMwD,iBACNxD,EAAM2b,mBAGVxc,KAAKy4B,aAELz4B,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYzrB,MAAI2E,MAAMlG,KAAK45B,aAGxCE,gBAfK,WAgBL,WACI95B,KAAKglB,SAAWzjB,MAAI0D,KAAKjF,KAAKyQ,SAAS,SAACzR,EAAO+J,GAE3C,IAAIuC,EAAO,CACPse,OAAQ5qB,EAAO6qB,OAAQ9gB,GAGvB+gB,EAAS,CACTvG,MAAOxgB,MAAInE,IAAI0M,EAAM,EAAKsF,cAC1B5R,MAAO+D,MAAInE,IAAI0M,EAAM,EAAKmc,eAG9B,OAAO1kB,MAAIoJ,OAAO2d,EAAQ,CACtBqQ,UAAWrQ,EAAOvG,MAAOyJ,UAAWlD,EAAO9qB,YAKvDo7B,UAlCK,SAkCKtQ,GAENvoB,MAAIuY,IAAI9Z,KAAKglB,SAAU8E,EACnB,CAAEkD,UAAWlD,EAAOkD,aAG5BqN,aAxCK,SAwCQvQ,GAETvoB,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAEgI,UAAWlD,EAAOkD,aAG5BsN,WA9CK,WAgDDt6B,KAAK+I,OAAU,EACf/I,KAAKymB,OAAS,IAGlBgS,WApDK,WAqDL,IADW53B,EACX,uDADmB,KAEVA,GACDA,EAAMwD,iBAGVrE,KAAK2U,MAAMwU,MAAMwM,SAGrB4E,aA7DK,WA+DKv6B,KAAK21B,OACP31B,KAAK2U,MAAMmW,QAAQ8I,OAGvBpf,cAAcxU,KAAK2a,UAGvB6f,aAtEK,SAsEQ35B,GAETb,KAAKymB,OAAS5lB,EAAMyD,OAAOtF,OAG/By7B,eA3EK,SA2EU55B,GAEX,IAAMb,KAAK21B,MACP,OAAO31B,KAAKu6B,eAGK,KAAhB15B,EAAMkZ,OACP/Z,KAAK06B,iBAGY,KAAhB75B,EAAMkZ,OACP/Z,KAAK26B,aAGY,KAAhB95B,EAAMkZ,OACP/Z,KAAK46B,cAIbb,cA9FK,WAkGD,GAFA/5B,KAAK+I,OAAU,EAEVjE,MAAIgF,QAAQ9J,KAAKymB,QAClB,OAAOzmB,KAAK65B,SAAW75B,KAAKglB,SAGhC,IAAI6V,EAAc,IAAIC,OAAO96B,KAAKymB,OAAQ,KAEtCoT,EAAWt4B,MAAIkH,OAAOzI,KAAKglB,UAAU,SAAC8E,GACtC,OAAOA,EAAOvG,MAAMxW,MAAM8tB,MAG9B76B,KAAK65B,SAAWA,GAGpBkB,aA/GK,SA+GQ/7B,GACb,IADoB6B,EACpB,uDAD4B,KAExB,KAAKiE,MAAIgF,QAAQ9K,IAIZ6B,GAAyB,IAAhBA,EAAMkZ,OAApB,CAIKlZ,GACDA,EAAMwD,iBAGV,IAAI2oB,EAAYhtB,KAAKgtB,UAEhBhtB,KAAKs5B,UACNt5B,KAAKy4B,aAGHz4B,KAAKs5B,WACPtM,EAAYhuB,GAGXgB,KAAKs5B,UACN/3B,MAAIuN,OAAOke,EAAWhuB,GAG1BgB,KAAK2U,MAAMmW,QAAQ3b,QAEnB,IAAI6rB,EAAah7B,KAAKgtB,YAAcA,EAE/BhtB,KAAKs5B,WAAax0B,MAAI8H,QAAQ5M,KAAKgL,cACpCgwB,GAAa,IAGXh7B,KAAKs5B,UAAYx0B,MAAI8H,QAAQ5M,KAAKgL,cACpCgwB,GAAa,GAGZA,GAILh7B,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYA,KAGzBiO,eA/JK,SA+JUj8B,GAEX,IAAI8qB,EAASvoB,MAAIgB,KAAKvC,KAAKglB,SACvB,CAAEgI,UAAWhuB,IAEjB,OAAM8qB,GAAU9pB,KAAK2Q,YACV3R,EAGL8qB,GAAW9pB,KAAK2Q,YAIfmZ,EAAOqQ,UAHHn6B,KAAKuK,MAAMvK,KAAK+nB,gBAM/B4S,WA/KK,WAiLD,IAAIO,EAAWl7B,KAAK+I,MAAQ,EAEvBmyB,EAAW,IACZA,EAAWl7B,KAAK65B,SAASp1B,OAAS,GAGtCzE,KAAK+I,MAAQmyB,EAEbl7B,KAAKm7B,mBAGTP,WA5LK,WA8LD,IAAIM,EAAWl7B,KAAK+I,MAAQ,EAEvBmyB,EAAWl7B,KAAK65B,SAASp1B,OAAS,IACnCy2B,EAAW,GAGfl7B,KAAK+I,MAAQmyB,EAEbl7B,KAAKm7B,mBAGTT,eAzMK,WA2MD,GAAK16B,KAAK2Q,aAAe3Q,KAAKymB,OAC1B,OAAOzmB,KAAKo7B,eAGhB,IAAIzjB,EAAWpW,MAAI3C,IAAIoB,KAAK65B,SACxB75B,KAAK+I,OAEqB,IAAzB/I,KAAK65B,SAASp1B,SACfkT,EAAWpW,MAAIyG,MAAMhI,KAAK65B,WAGxBliB,IAAYA,EAASwL,UAI3BnjB,KAAK+6B,aAAapjB,EAASqV,YAG/BoO,aA7NK,WA+NDp7B,KAAK+6B,aAAa/6B,KAAKymB,QAEvBzmB,KAAKymB,OAAS,IAGlB0U,gBApOK,WAsOD,GAAMn7B,KAAK21B,MAAX,CAIA,IAAIhe,EAAWpW,MAAI3C,IAAIoB,KAAK65B,SACxB75B,KAAK+I,OAEH4O,IAID3X,KAAK2U,MAAMC,WACZ5U,KAAK2U,MAAMC,UAAUF,eAArB,wBAAqDiD,EAASyB,EAAEpV,IAAhE,OAGChE,KAAK2U,MAAM0mB,YACZr7B,KAAK2U,MAAM0mB,WAAWxmB,cAAc7U,KAAK+I,UAIjDkxB,gBA1PK,WA4PD,GAAMj6B,KAAK21B,MAAX,CAIA,IAAI32B,EAAQgB,KAAKgtB,UAMjB,GAJKloB,MAAI8H,QAAQ5M,KAAKgtB,aAClBhuB,EAAQuC,MAAIyG,MAAMhI,KAAKgtB,YAGrBhuB,EAAN,CAIA,IAAI+J,EAAQxH,MAAI8Y,UAAUra,KAAKglB,SAAU,CACrCgI,UAAWhuB,IAGf,GAAM+J,EAAN,CAIK/I,KAAK2U,MAAM0mB,YACZr7B,KAAK2U,MAAM0mB,WAAWxmB,cAAc9L,EAAO,KAG/C,IAAIuyB,EAAS,iBAAH,OAAoBv4B,MAAInE,IAAIoB,KAAKglB,SAASjc,GAAQ,QAAS,GAA3D,MAEL/I,KAAK2U,MAAMC,WACZ5U,KAAK2U,MAAMC,UAAUF,eAAe4mB,EAAQ,UAMxDC,iBAniBW,WAqiBP,IAAMv7B,KAAK4jB,WAAa9e,MAAIgF,QAAQ9J,KAAKgtB,WACrC,OAAO,KAGX,IAAI7jB,EAAQ,GAMZ,OAJMnJ,KAAKy5B,eACPtwB,EAAMuf,YAAc1oB,KAAKk6B,OAIzB,wDAAW,mBAAsB/wB,GAAjC,CACI,iCAAUyU,KAAKC,MAAM2D,OAArB,SAKZga,iBAtjBW,WAwjBP,OACI,mCAAW,mBAAX,CACI,iCAAU5d,KAAKC,MAAMkE,WAArB,SAKZ0Z,gBA/jBW,SA+jBKz8B,GAChB,WAKQmK,EAAQ,CACR+f,MAAOtL,KAAKC,MAAM2D,OAGhBxhB,KAAKy5B,eACPtwB,EAAMuf,YAAc,SAAC7nB,GAAD,OAAW,EAAKk6B,aAAa/7B,EAAO6B,KAG5D,IAAI+nB,EACA,mCAAO5oB,KAAKi7B,eAAej8B,KAG/B,OACI,mCAjBY,CACZ,mBAgBA,CACK,CAAC4pB,EAAW,0BAAOzf,EAAP,UAKzBuyB,oBAxlBW,WA0lBP,IAAI1zB,EAAQzG,MAAIyG,MAAMhI,KAAKgtB,WAE3B,IAAMhlB,EACF,OAAO,KAGX,IAAI2zB,EAAY37B,KAAKgK,KAAK,kBAAVhK,CAA6BgI,GAE7C,GAA+B,IAA1BhI,KAAKgtB,UAAUvoB,OAChB,OAAOk3B,EAGX,IAAI76B,EAAQd,KAAKgtB,UAAUvoB,OAAS,EAQpC,MAAO,CACHk3B,EANA,mCAAW,kBAAX,CACI,mCAAO37B,KAAKkB,OAAOlB,KAAKu5B,aAAcz4B,SASlD86B,iBAnnBW,WAonBX,WACI,OAAM92B,MAAI8H,QAAQ5M,KAAKgtB,WAIlBhtB,KAAKyL,SACCzL,KAAKgK,KAAK,sBAAVhK,GAGJuB,MAAI0D,KAAKjF,KAAKgtB,WAAW,SAAChuB,GAC7B,OAAO,EAAKgL,KAAK,kBAAV,CAA6BhL,MAR7B,MAYf68B,eAloBW,WAooBP,IAAIC,EAAeh3B,MAAIgF,QAAQ9J,KAAKgtB,aAC/BloB,MAAIi3B,SAAS/7B,KAAKgtB,WAEnB7jB,EAAQ,CACRnK,MAAOgB,KAAKymB,OACZjD,YAAaxjB,KAAKwjB,YAClBL,SAAUnjB,KAAKy5B,aACfuC,QAASh8B,KAAKu6B,aACd0B,QAASj8B,KAAKw6B,aACdle,UAAWtc,KAAKy6B,gBAGdz6B,KAAK21B,QACPxsB,EAAMnK,MAAQ,MAGZ88B,IACF3yB,EAAMqa,YAAc,MAGxB,IAAI0Y,EACA,mCAAW,mBAAX,CACI,wDAAW,SAAY/yB,GAAvB,QAIR,MAAO,CACHnJ,KAAKgK,KAAK,mBAAVhK,GAEI,mCAAW,mBAAX,CACK,CAACA,KAAKgK,KAAK,mBAAVhK,GAAiCk8B,KAG3Cl8B,KAAKgK,KAAK,mBAAVhK,KAIRm8B,aAzqBW,WA2qBP,IAAIL,EAAeh3B,MAAIgF,QAAQ9J,KAAKgtB,aAC/BloB,MAAIi3B,SAAS/7B,KAAKgtB,WAEnBoP,EAAap8B,KAAKi7B,eAClBj7B,KAAKgtB,WAEJ8O,IACDM,EAAa,MAGjB,IAAIjzB,EAAQ,CACRnK,MAAOgB,KAAKymB,OACZjD,YAAaxjB,KAAKwjB,YAClBL,SAAUnjB,KAAKy5B,aACfuC,QAASh8B,KAAKu6B,aACd0B,QAASj8B,KAAKw6B,aACdle,UAAWtc,KAAKy6B,gBAepB,OAZMz6B,KAAKymB,QAAUzmB,KAAK05B,SACtBvwB,EAAMnK,MAAQgB,KAAKgtB,WAGjBhtB,KAAK21B,QACPxsB,EAAMnK,MAAQo9B,GAGZN,IACF3yB,EAAMqa,YAAc4Y,GAGjB,CACHp8B,KAAKgK,KAAK,mBAAVhK,GAEI,mCAAW,mBAAX,CACI,wDAAW,SAAYmJ,GAAvB,QAGRnJ,KAAKgK,KAAK,mBAAVhK,KAIRq8B,cArtBW,WAutBP,IAAI57B,EAAY,CACZ,qBAGCT,KAAKs5B,UACN74B,EAAUgB,KAAK,cAGnB,IAAI66B,EAAct8B,KAAKgK,KAAK,gBAM5B,OAJKhK,KAAKs5B,WACNgD,EAAct8B,KAAKgK,KAAK,mBAIxB,mCAAYvJ,GAAZ,CAAwB67B,OAIhCllB,YA1uBW,WA2uBX,QACQmlB,EACA,mCAAW,mBAAX,CACI,wEAAoB,GAApB,IAA2Bv8B,KAAKuK,MAAMvK,KAAK8nB,YAA3C,qCAIR,IAAM9nB,KAAK65B,SAASp1B,OAChB,OAAO83B,EAGX,GAAKv8B,KAAKq5B,KACN,OAAOr5B,KAAKgK,KAAK,kBAAVhK,GAGX,IAAIyQ,EAAU1N,MAAIkC,KAAKjF,KAAK65B,UAAU,SAAC/P,EAAQ/gB,GAC3C,OAAO+gB,EAAO9f,KAAK,eAAZ8f,CAA4B/gB,MAGnCI,EAAQ,CACR4jB,UAAU,EAAMvc,KAAMxQ,KAAKwQ,MAG/B,OACI,yFAAgB,YAAhB,MAAkC,kBAAqBrH,GAAvD,IACKpG,MAAI+jB,OAAOrW,IADhB,oCAMR+rB,iBAzwBW,SAywBMx9B,EAAO+J,GACxB,WACQtI,EAAY,GAEZg8B,EAAmBz8B,KAAKs5B,UACxB/3B,MAAIC,IAAIxB,KAAKgtB,UAAWhuB,EAAMA,OAE7By9B,GACDh8B,EAAUgB,KAAK,YAGnB,IAAIi7B,GAAmB18B,KAAKs5B,UACxBt5B,KAAKgtB,YAAchuB,EAAMA,MAExB09B,GACDj8B,EAAUgB,KAAK,YAGdzB,KAAK+I,QAAUQ,MAAG,IAAKR,IACxBtI,EAAUgB,KAAK,WAGnB,IAAI0H,EAAQ,CACR,KAAQnJ,KAAK2K,KACb,YAAgB3K,KAAKs5B,SAGzBnwB,YAAuB,SAACjJ,GACpB,EAAK66B,aAAa/7B,EAAMA,MAAOkB,KAOnC,OAJKw8B,GAAkBD,KACnBtzB,EAAMia,KAAOxF,KAAKC,MAAMI,SAIxB,+FAAuBxd,GAAe0I,GAAtC,2BACKnK,EAAMukB,WAKnBoZ,gBAnzBW,WAozBX,WACQxzB,EAAQ,CACRhD,MAAOnG,KAAK65B,SAGhB1wB,WAAmB,YAAsB,IAAnBnK,EAAmB,EAAnBA,MAAO+J,EAAY,EAAZA,MACzB,OAAO,EAAKiB,KAAK,mBAAV,CAA8BhL,EAAO+J,KAGhD,OACI,+FAAsB,aAAtB,MAAyC,4BAA+BI,GAAxE,OAIRyzB,cAl0BW,WAm0BX,WACQn8B,EAAY,CACZ,qBAGCT,KAAKq5B,MACN54B,EAAUgB,KAAK,aAGnB,IAAI0H,EAAQ,CACR+f,MAAOzoB,EACP0qB,QAAS,QACT1Y,OAAS,EACTqgB,QAAQ,EACRtiB,KAAMxQ,KAAKwQ,KACXwiB,aAAa,EACb7P,SAAUnjB,KAAKy5B,aACfoD,QAAS78B,KAAKs6B,YAGlB,OACI,uFAAc,UAAd,WAAgC,EAAK3E,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,GAAhD,CACO6W,IAAKhgB,KAAKgK,KAAK,kBAK9B8yB,cA91BW,WA+1BX,WACI,GAAK98B,KAAKq5B,KACN,OAAO,KAGX,GAAKv0B,MAAIgF,QAAQ9J,KAAKyQ,SAClB,OAAOzQ,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,UAalC,OAAOtP,MAAI+jB,OAAO/jB,MAAIkC,KAAKjF,KAAKyQ,SAVb,SAACmZ,EAAQC,GAExB,IAAI1gB,EAAQ,CACRoa,MAAOxgB,MAAInE,IAAI,CAAEgrB,SAAQC,UAAU,EAAKjZ,aAAc,MACtD5R,MAAO+D,MAAInE,IAAI,CAAEgrB,SAAQC,UAAU,EAAKpC,aAAc,OAG1D,OAAQ,kEAAmBte,EAAnB,WAMhBmJ,OAr3BW,WAu3BP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAK2K,KACpB,aAAe3K,KAAKwQ,MAsBxB,OAnBmB1L,MAAIgF,QAAQ9J,KAAKgtB,aAC/BloB,MAAIi3B,SAAS/7B,KAAKgtB,YAGnBvsB,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKy5B,cACNh5B,EAAUgB,KAAK,cAIf,mCAAYhB,EAAZ,QAAgCT,KAAKy4B,YAArC,CACKz4B,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OCp5BF,GAEX1B,KAAM,gBAEN83B,cAAc,EAEdzjB,OAAQ,CAEJqnB,QAAS,CACLnnB,aAASnL,IAKjByB,MAAO,CAEHnK,MAAO,oBAGC,MAAO,KAIfukB,MAAO,oBAGC,OAAO,OAIfwZ,UAAW,oBAGH,OAAO,OAIfC,UAAW,oBAGH,OAAO,OAIf7Z,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,WAKf2R,SAAU,CAENiQ,UAFM,WAIF,OAAKloB,MAAIgF,QAAQ9J,KAAK+8B,WACX/8B,KAAKhB,MAGT+D,MAAInE,IAAIoB,KAAKhB,MAAOgB,KAAK+8B,YAGpC5C,UAXM,WAaF,OAAKr1B,MAAIgF,QAAQ9J,KAAKg9B,WACXh9B,KAAKujB,MAGTxgB,MAAInE,IAAIoB,KAAKhB,MAAOgB,KAAKg9B,aAKxCnxB,QA5EW,WA8EA7L,KAAKg6B,QAAQX,MAChBr5B,KAAKg6B,QAAQI,UAAUp6B,OAI/BmU,cAnFW,WAqFAnU,KAAKg6B,QAAQX,MAChBr5B,KAAKg6B,QAAQK,aAAar6B,OAIlC8L,QAAS,CAELmxB,WAFK,SAEMp8B,GAEPA,EAAMwD,iBAEe,IAAhBxD,EAAMkZ,QAIN/Z,KAAKmjB,UAIVnjB,KAAKg6B,QAAQe,aAAa/6B,KAAKgtB,UAC3BnsB,MAKZ8oB,aA9GW,SA8GE5gB,GACb,WAEQtI,EAAY,GAEZg8B,EAAmBz8B,KAAKg6B,QAAQV,UAChC/3B,MAAIC,IAAIxB,KAAKg6B,QAAQhN,UAAWhtB,KAAKgtB,WAEpCyP,GACDh8B,EAAUgB,KAAK,YAGnB,IAAIi7B,GAAmB18B,KAAKg6B,QAAQV,UAChCt5B,KAAKg6B,QAAQhN,YAAchtB,KAAKgtB,UAE/B0P,GACDj8B,EAAUgB,KAAK,YAGdzB,KAAKg6B,QAAQjxB,QAAUQ,MAAG,IAAKR,IAChCtI,EAAUgB,KAAK,WAGnB,IAAI0H,EAAQ,CACR,SAAYnJ,KAAKmjB,SACjB,YAAenjB,KAAKi9B,WACpB,KAAQj9B,KAAKg6B,QAAQrvB,KACrB,YAAgB3K,KAAKg6B,QAAQV,UAUjC,OAPKoD,GAAkBD,KACnBtzB,EAAMia,KAAOxF,KAAKC,MAAMI,SAI5B9U,EAAM,eAAiBnJ,KAAKoZ,EAAEpV,IAG1B,+FAAuBvD,GAAe0I,GAAtC,2BACM,EAAKkJ,OAAL,SAAuB,EAAKA,OAAL,WAAyB,EAAK8nB,eAKnE7nB,OA1JW,WA4JP,OAAO,OCzJA,mBAAUkQ,GACrBA,EAAI6B,UAAU6Y,EAAO5+B,KAAM4+B,GAC3B1a,EAAI6B,UAAU8Y,EAAa7+B,KAAM6+B,K,sDCLtB,GAEX7+B,KAAM,YAENqU,OAAQ,CAEJyqB,eAAgB,CACZvqB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACS,UAGXpM,MAAO,oBAGC,OAAO,OAIfmpB,aAAc,oBAGN,OAAO,GAEXxd,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXT,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX4J,aAAc,oBAGN,OAAO,GAEX1W,KAAM,CAACS,UAGXjL,OAAQ,oBAGA,OAAO,GAEXwK,KAAM,CAACS,WAKf2R,SAAU,CAENsgB,aAFM,WAIF,OAASr9B,KAAKG,OACVH,KAAKo9B,eAAeE,cADDt9B,KAAKu9B,aAIhCC,iBARM,WAUF,OAASx9B,KAAKG,OACVH,KAAKo9B,eAAeK,mBADDz9B,KAAKqhB,cAIhCqc,aAdM,WAgBF,OAAS19B,KAAKG,OACVH,KAAKo9B,eAAeO,eADD39B,KAAKmjB,WAMpC7X,KArGW,WAuGP,MAAO,CACHtH,IAAKkF,iBAAQq0B,YAAav9B,KAAKgL,aAIvCY,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKu9B,cAChBv9B,KAAKu9B,YAAcv+B,KAM/BgV,YAvHW,WAyHFhU,KAAKo9B,iBACNp9B,KAAKu9B,YAAcv9B,KAAKo9B,eAAe/S,UAAUrqB,KAAKhB,SAI9D6M,QA9HW,WA+HX,WACW7L,KAAKo9B,iBAAkBp9B,KAAKG,SAInCH,KAAKwZ,OAAO,4BAA4B,WACpC,EAAK+jB,YAAc,EAAKH,eAAe/S,UAAU,EAAKrrB,UAG1DgB,KAAKo9B,eAAeQ,YAAY59B,QAGpCmU,cA3IW,WA6IFnU,KAAKo9B,iBAAoBp9B,KAAKG,QAC/BH,KAAKo9B,eAAeS,eAAe79B,OAI3C8L,QAAS,CAELgD,OAFK,WAID9O,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAgBv9B,KAAKu9B,cAG9DO,MAPK,WASI99B,KAAKo9B,gBACNp9B,KAAKo9B,eAAeW,cAAc/9B,MAGtCA,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAc,IAGvDS,QAhBK,WAkBIh+B,KAAKo9B,gBACNp9B,KAAKo9B,eAAea,gBAAgBj+B,MAGxCA,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAc,IAGvDW,gBAzBK,WA2BIl+B,KAAKo9B,gBACNp9B,KAAKo9B,eAAee,cAAcn+B,MAGtCA,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAc,IAGvDa,gBAlCK,SAkCWv9B,GAKZ,IAHiBb,KAAK09B,cAAiB19B,KAAKmoB,cACxCnoB,KAAKu9B,YAET,CAMA,GAFA18B,EAAMwD,iBAEDxD,EAAMw9B,SACP,OAAOr+B,KAAKk+B,kBAGXl+B,KAAKo9B,gBACNp9B,KAAKo9B,eAAekB,eAAet+B,MAGvCA,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAgBv9B,KAAKu9B,eAG9DgB,iBAxDK,aA0DgBv+B,KAAK09B,cAAiB19B,KAAKmoB,cACxCnoB,KAAKu9B,cAMTv9B,KAAKo9B,eAAeoB,aAGxBC,gBApEK,WAsED,IAAIxgB,EAAUje,KAAKo9B,eAAe/S,UAAUrqB,KAAKhB,OAE5CgB,KAAKu9B,cAAgBtf,GAI1Bje,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,YAActf,KAK3DygB,eAnOW,WAqOP,IAAIC,EAAY3+B,KAAKqS,OAAOgP,cACxBrhB,KAAKqS,OAAOgP,eAETsd,IACHA,EAAa,iCAAU/gB,KAAKC,MAAMwD,cAArB,OAGjB,IAAIud,EAAY5+B,KAAKqS,OAAO4L,SACxBje,KAAKqS,OAAO4L,UAMhB,OAJO2gB,IACHA,EAAa,iCAAUhhB,KAAKC,MAAMI,SAArB,OAIb,mCAAW,wBAAX,CACMje,KAAKw9B,iBAAmBmB,EAAYC,KAKlDpR,YA1PW,WA4PP,OAAOxtB,KAAKihB,KAAK,YAAgBjhB,KAAKihB,KAAK,SAKvC,mCAAW,qBAAX,CACMjhB,KAAKqS,OAAL,WAAyBrS,KAAKqS,OAAOkR,UALpC,MAUfjR,OAvQW,WAyQP,IAAI9B,EAAOxQ,KAAKwQ,KAEXxQ,KAAKo9B,iBACN5sB,EAAOxQ,KAAKo9B,eAAe5sB,MAG/B,IAAI/P,EAAY,CACZ,aACA,eAAiB+P,EACjB,eAAiBxQ,KAAK2K,MAGrB3K,KAAKmoB,cACN1nB,EAAUgB,KAAK,aAGdzB,KAAKq9B,cACN58B,EAAUgB,KAAK,aAGdzB,KAAKw9B,kBACN/8B,EAAUgB,KAAK,kBAGdzB,KAAK09B,cACNj9B,EAAUgB,KAAK,cAGdzB,KAAKq9B,cAAgBr9B,KAAKmoB,cAC3B5mB,MAAI2B,OAAOzC,EAAW,cAG1B,IAAI0I,EAAQpG,MAAImD,MAAMlG,KAAKghB,QAU3B,OARKhhB,KAAKG,SACNgJ,EAAMuf,YAAc1oB,KAAKu+B,kBAGtBv+B,KAAKG,SACRgJ,EAAMuf,YAAc1oB,KAAKo+B,iBAIzB,wDAAY39B,GAAe0I,GAA3B,CACM,CAACnJ,KAAKgK,KAAK,iBAAVhK,GAA+BA,KAAKgK,KAAK,cAAVhK,QCrTnC,GAEX1B,KAAM,iBAENoa,QAJW,WAMP,MAAO,CACH0kB,eAAgBp9B,OAIxBmJ,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGXrH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0P,MAAO,oBAGC,MAAO,cAEXxc,KAAM,CAAC8M,UAKfsF,SAAU,CAENugB,cAFM,WAQF,OAJc/7B,MAAIkH,OAAOzI,KAAKglB,UAAU,SAAC6Z,GACrC,OAAOA,EAAStB,eAGL94B,SAAWzE,KAAKglB,SAASvgB,QACX,IAAzBzE,KAAKglB,SAASvgB,QAGtBg5B,mBAZM,WAcF,IAAIxf,EAAUje,KAAKglB,SAASvc,QAAO,SAACo2B,GAChC,OAAOA,EAAStB,eAGpB,OAAOtf,EAAQxZ,SAAWzE,KAAKglB,SAASvgB,QACjB,IAAnBwZ,EAAQxZ,QAGhBk5B,eAtBM,WAwBF,OAAgC,IAAzB39B,KAAKglB,SAASvgB,SAK7B6G,KApEW,WAsEP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAChBjC,OAAQ,EACRic,SAAU,KAIlBpZ,MAAO,CAEHZ,WAFG,YAIMhL,KAAKgtB,UAAYhtB,KAAKgL,cACvBhL,KAAKgtB,UAAYhtB,KAAKgL,cAOlCc,QAAS,CAEL8xB,YAFK,SAEOiB,GAER7+B,KAAK+I,OAAS,EAEdxH,MAAIuY,IAAI9Z,KAAKglB,SAAU6Z,EAAU,CAC7B76B,IAAK66B,EAAS76B,MAGlBhE,KAAKglB,SAAWzjB,MAAIoQ,KAAK3R,KAAKglB,SAAU,SAG5C6Y,eAbK,SAaUgB,GAEX7+B,KAAK+I,OAAS,EAEdxH,MAAI2B,OAAOlD,KAAKglB,SAAU,CACtBhhB,IAAK66B,EAAS76B,OAItBs6B,eAtBK,SAsBUO,GACf,IADyBC,IACzB,yDACQ/1B,EAAQxH,MAAI8Y,UAAUra,KAAKglB,SAAU,CACrChhB,IAAK66B,EAAS76B,MAGX66B,EAAStB,cACZv9B,KAAK+I,MAAQA,GAGjBxH,MAAIuN,OAAO9O,KAAKgtB,UAAW6R,EAAS7/B,OAE7B8/B,GAIP9+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzC+Q,cAzCK,SAyCSc,GACd,IADwBC,IACxB,yDACIv9B,MAAIuY,IAAI9Z,KAAKgtB,UAAW6R,EAAS7/B,OAE1B8/B,GAIP9+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCiR,gBApDK,SAoDWY,GAChB,IAD0BC,IAC1B,yDACIv9B,MAAI2B,OAAOlD,KAAKgtB,UAAW6R,EAAS7/B,OAE7B8/B,GAIP9+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCmR,cA/DK,SA+DSU,GACd,WACI,IAAqB,IAAhB7+B,KAAK+I,MACN,OAAO/I,KAAKs+B,eAAeO,GAAU,GAGzC,IAAI91B,EAAQxH,MAAI8Y,UAAUra,KAAKglB,SAAU,CACrChhB,IAAK66B,EAAS76B,MAGd+6B,EAAa/+B,KAAKglB,SAASlO,MAAM9W,KAAK+I,MAAOA,EAAQ,GAEpDA,EAAQ/I,KAAK+I,QACdg2B,EAAa/+B,KAAKglB,SAASlO,MAAM/N,EAAO/I,KAAK+I,MAAQ,IAGzD/I,KAAK+I,OAAS,EAEdxH,MAAI0D,KAAK85B,GAAY,SAACF,GAClB,EAAKd,cAAcc,GAAU,MAGjCt9B,MAAI0D,KAAK85B,GAAY,SAACF,GAClBA,EAASJ,qBAGbz+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCwR,UA5FK,WA8FDx+B,KAAKs9B,cAAgBt9B,KAAKg/B,aAAeh/B,KAAKi/B,YAGlDA,SAjGK,WAkGL,WACI19B,MAAI0D,KAAKjF,KAAKglB,UAAU,SAAC6Z,GACrB,EAAKd,cAAcc,GAAU,MAGjCt9B,MAAI0D,KAAKjF,KAAKglB,UAAU,SAAC6Z,GACrBA,EAASJ,qBAGbz+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCgS,WA9GK,WA+GL,WACIz9B,MAAI0D,KAAKjF,KAAKglB,UAAU,SAAC6Z,GACrB,EAAKZ,gBAAgBY,GAAU,MAGnCt9B,MAAI0D,KAAKjF,KAAKglB,UAAU,SAAC6Z,GACrBA,EAASJ,qBAGbz+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzC3C,UA3HK,SA2HKrrB,GAEN,OAAOuC,MAAIC,IAAIxB,KAAKgtB,UAAWhuB,KAKvCsT,OA3NW,WA6NP,IAAI7R,EAAY,CACZ,mBACA,qBAAuBT,KAAKwQ,KAC5B,qBAAuBxQ,KAAKmnB,OAGhC,OACI,mCAAY1mB,GAAZ,CACKT,KAAKqS,OAAL,cClOF,mBAAUmQ,GACrBA,EAAI6B,UAAU6a,EAAS5gC,KAAM4gC,GAC7B1c,EAAI6B,UAAU8a,EAAc7gC,KAAM6gC,K,sDCLvB,GAEX7gC,KAAM,SAEN4M,MAAO,CACH1C,KAAM,WAGVmK,OAAQ,CAEJysB,YAAa,CACTvsB,aAASnL,IAKjByB,MAAO,CAEHnK,MAAO,oBAGC,OAAO,OAIfif,QAAS,oBAGD,OAAO,GAEXtT,KAAM,CAACS,UAGX+X,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,UAKfsF,SAAU,CAEN/Y,IAFM,WAIF,OAAOhE,KAAKoZ,EAAEpV,MAKtBsH,KApEW,WAsEP,MAAO,CACHiyB,YAAav9B,KAAKie,UAI1BrS,MAAO,CAEHqS,QAFG,WAIMje,KAAKie,UAAYje,KAAKu9B,cACvBv9B,KAAKu9B,YAAcv9B,KAAKie,WAMpCjK,YAtFW,WAwFFhU,KAAKo/B,cACNp/B,KAAKu9B,YAAcv9B,KAAKo/B,YAAY/U,UAAUrqB,KAAKhB,SAI3D6M,QA7FW,WA+FF7L,KAAKo/B,aACNp/B,KAAKo/B,YAAYC,SAASr/B,OAIlCmU,cApGW,WAsGFnU,KAAKo/B,aACNp/B,KAAKo/B,YAAYE,YAAYt/B,OAIrC8L,QAAS,CAELgyB,MAFK,WAII99B,KAAKo/B,aACNp/B,KAAKo/B,YAAYG,WAAWv/B,MAGhCA,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,aAAc,IAGvDkB,gBAXK,WAaD,IAAIxgB,EAAUje,KAAKo/B,YAAY/U,UAAUrqB,KAAKhB,OAEzCgB,KAAKu9B,cAAgBtf,GAI1Bje,KAAKgG,MAAM,oBAAqBhG,KAAKu9B,YAActf,KAK3DuhB,YAnIW,WAqIP,OACI,mCAAW,kBAAX,CACI,2CAKZhS,YA5IW,WA8IP,OAAOxtB,KAAKqS,OAAL,SAAyBrS,KAAKqS,OAAOkR,MAKxC,mCAAW,kBAAX,CACMvjB,KAAKqS,OAAL,WAAyBrS,KAAKqS,OAAOkR,UALpC,MAUfjR,OAzJW,WA2JP,IAAI7R,EAAY,CACZ,UACA,YAAcT,KAAKwQ,KACnB,YAAcxQ,KAAK2K,MAGlB3K,KAAKu9B,aACN98B,EAAUgB,KAAK,aAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQpG,MAAImD,MAAMlG,KAAKghB,QAM3B,OAJOhhB,KAAKmjB,WACRha,EAAMuf,YAAc1oB,KAAK89B,OAIzB,wDAAYr9B,GAAe0I,GAA3B,CACMnJ,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,OClLH,GAEX1B,KAAM,cAENoa,QAJW,WAMP,MAAO,CACH0mB,YAAap/B,OAIrBmJ,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfwF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0P,MAAO,oBAGC,MAAO,cAEXxc,KAAM,CAAC8M,UAKfnM,KAtCW,WAwCP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAChBga,SAAU,KAIlBpZ,MAAO,CAEHZ,WAFG,WAIMhL,KAAKgL,aAAehL,KAAKgtB,YAC1BhtB,KAAKgtB,UAAYhtB,KAAKgL,cAMlCc,QAAS,CAELuzB,SAFK,SAEII,GAELl+B,MAAIuY,IAAI9Z,KAAKglB,SAAUya,EAAO,CAC1Bz7B,IAAKy7B,EAAMz7B,OAInBs7B,YATK,SASOG,GAERl+B,MAAI2B,OAAOlD,KAAKglB,SAAU,CACtBhhB,IAAKy7B,EAAMz7B,OAInBu7B,WAhBK,SAgBME,GAEPz/B,KAAKgtB,UAAYyS,EAAMzgC,MAEvBuC,MAAI0D,KAAKjF,KAAKglB,UAAU,SAACya,GACrBA,EAAMhB,qBAGVz+B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzC3C,UA3BK,SA2BKrrB,GAEN,OAAOgB,KAAKgtB,YAAchuB,IAKlCsT,OA3FW,WA6FP,IAAI7R,EAAY,CACZ,gBACA,kBAAoBT,KAAKwQ,KACzB,kBAAoBxQ,KAAKmnB,OAG7B,OACI,mCAAY1mB,GAAZ,CACMT,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCpG1B,mBAAUmQ,GACrBA,EAAI6B,UAAUqb,EAAOphC,KAAMohC,GAC3Bld,EAAI6B,UAAU+a,EAAY9gC,KAAM8gC,K,6KCHrB,OAEX9gC,KAAM,iBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGX8L,WAAY,oBAGJ,MAAO,IAEXhZ,KAAM,CAACkN,QAGX8nB,MAAO,oBAGC,MAAO,IAEXh1B,KAAM,CAACkN,QAGXpH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAACkN,QAGXsL,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX0T,QAAS,oBAGD,MAAO,SAEXxgB,KAAM,CAAC8M,SAGXulB,UAAW,oBAGH,MAAO,SAEXryB,KAAM,CAAC8M,SAGXslB,UAAW,oBAGH,MAAO,SAEXpyB,KAAM,CAAC8M,SAGX/O,UAAW,oBAGH,MAAO,YAEXiC,KAAM,CAAC8M,SAGXmoB,aAAc,oBAGN,MAAO,YAEXj1B,KAAM,CAAC8M,UAKfsF,SAAU,CAENC,MAFM,WAGF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAPM,WAQF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAZM,WAaF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QAjBM,WAkBF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KAhIW,WAkIP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAChB60B,UAAW7/B,KAAK2/B,QAIxB/zB,MAAO,CAEHZ,WAFG,SAEQhM,GACFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,IAIzB2gC,MARG,SAQG3gC,GACGA,IAAUgB,KAAK6/B,YAChB7/B,KAAK6/B,UAAY7gC,KAM7B8M,QAAS,CAELg0B,cAFK,WAID9/B,KAAKgG,MAAM,oBAAqBhG,KAAK6/B,UACjC7/B,KAAKgtB,UAAYhtB,KAAK2jB,aAG9B4P,QARK,SAQGxsB,GACR,WACI,OAAO,SAAClG,GAAD,OAAW,EAAKk/B,UAAUh5B,EAASlG,KAG9Cm/B,SAbK,SAaIj5B,GACT,WACI,OAAO,SAAClG,GAAD,OAAW,EAAKob,WAAWlV,EAASlG,KAG/Ck/B,UAlBK,SAkBKh5B,GACV,WAEImP,aAAalW,KAAK+U,OAElB,IAAIkrB,EAAc,WACd,EAAKj6B,MAAM,eACP,EAAK65B,UAAY94B,IAGzB/G,KAAK+U,MAAQqB,WAAW6pB,EAAa,MAGzChkB,WA/BK,SA+BMlV,GACX,WADoBlG,EACpB,uDAD4B,KAExBqV,aAAalW,KAAKkgC,YAEXlgC,KAAKmgC,YACRngC,KAAKmgC,UAAY,GAGrBngC,KAAKmgC,YAEL,IAAIhV,EAAUnrB,KAAKgd,MAAQ,QACvBhd,KAAKmrB,QAQT,GANAnrB,KAAKkgC,WAAa9pB,YAAW,kBACzB,EAAK+pB,UAAY,IAAG,KAExBngC,KAAKogC,WAAahqB,YAAW,kBACzB,EAAK2pB,UAAUh5B,KAAU,KAEL,IAAnB/G,KAAKmgC,WAA+B,UAAZhV,EACzB,OAAOnrB,KAAK+/B,UAAUh5B,EAASlG,GAG9BA,GACDA,EAAMwD,iBAGVrE,KAAKkgC,WAAa9pB,YAAW,kBACzB,EAAKiqB,eAAet5B,KAAU,KAGtCs5B,eA9DK,SA8DUt5B,GAEXmP,aAAalW,KAAKogC,YAElBpgC,KAAKmgC,UAAY,EAEjBngC,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYjmB,KAK7Bs1B,cAlOW,WAoOP,IAAI57B,EAAY,CACZ,mBACA,qBAAuBT,KAAKwQ,MAGhC,OACI,mCAAY/P,GAAZ,CACMT,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,MAKd2pB,aAlPW,SAkPE1mB,GACb,MADmB8D,EACnB,uDAD6B,GAErB/H,EAAQ+D,MAAInE,IAAIqE,EAAMjD,KAAK+8B,WAE3Bt8B,EAAY,CACZ,oBAGCc,MAAIC,IAAIxB,KAAKgtB,UAAW/pB,EAAKjD,KAAK+8B,aACnCt8B,EAAUgB,KAAK,YAGnB,IAAI0hB,EAAWpgB,MAAInE,IAAIqE,EAAMjD,KAAK4/B,cAAc,GAE3Czc,GACD1iB,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACRqH,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXkrB,YAAY,GAGXt0B,MAAIsI,KAAK7J,KAAKgtB,aAAehuB,IAC9BmK,EAAMia,KAAOxF,KAAKC,MAAMI,SAG5B,IAAItU,EAAcpI,MAAI8H,MAAM9H,MAAI2E,MAAMa,GAAU,CAAC/H,IAE3B,UAAjBgB,KAAKmrB,UACNhiB,EAAMm3B,YAAcx7B,MAAIyO,UAAUvT,KAAKuzB,QAAQ5pB,GAAc,KAG1DwZ,IACHha,EAAM,KAAO2U,MAAIC,QAAQ/d,KAAKmd,YAAcnd,KAAKggC,SAASr2B,IAG9D,IAAId,EAAW9F,MAAInE,IAAIqE,EAAMjD,KAAK0I,WAMlC,OAJQS,EAAMia,MAAUte,MAAIgF,QAAQjB,KAChCM,EAAMia,KAAOxF,KAAKC,MAAMG,YAIxB,+FAAuBvd,GAAe0I,GAAtC,IACMpG,MAAInE,IAAIqE,EAAMjD,KAAKg9B,YADzB,oCAMRF,cArSW,SAqSG32B,GACd,aADqBY,EACrB,uDAD+B,GAE3B,OAAKjC,MAAIgF,QAAQ3D,GACN,KAIP,mCAAW,2BAAX,CACI,0EAAsB,GAAtB,IAEQ5E,MAAI0D,KAAKkB,GAAO,SAAClD,GACb,OAAO,EAAK+G,KAAK,eAAV,CAA0B/G,EAAM8D,OAHnD,sCAWZw5B,cAxTW,WAyTX,WACQC,EAAa,CACbxgC,KAAKgK,KAAK,gBAAVhK,CAA2BA,KAAKyQ,UAGhCtK,EAAQnG,KAAKyQ,QAAS1J,EAAU,GAsBpC,OApBAxF,MAAI0D,KAAKjF,KAAK6/B,WAAW,SAAC7gC,GAEtB,GAAOmH,EAAP,CAIAY,EAAQtF,KAAKzC,GAEb,IAAIiE,EAAO1B,MAAIgB,KAAK4D,E,sHAAT,IACN,EAAK42B,UAAY/9B,IAGtBmH,EAAQpD,MAAInE,IAAIqE,EAAM,EAAKyF,WAE3B,IAAI+H,EAAU,EAAKzG,KAAK,gBAAV,CACT7D,EAAOY,GAEZy5B,EAAW/+B,KAAKgP,OAGb+vB,GAGXluB,OAvVW,WAyVP,IAAI7R,EAAY,CACZ,mBACA,qBAAuBT,KAAKwQ,MAOhC,OAJKxQ,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CAAyBT,KAAKgK,KAAK,gBAAVhK,OCnWtB,OAEX1B,KAAM,YAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGX8L,WAAY,oBAGJ,MAAO,IAEXhZ,KAAM,CAACkN,QAGXpH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAACkN,QAGXH,QAAS,oBAGD,OAAO,OAIf8L,YAAa,oBAGL,MAAO,iBAEX7Y,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,gBAEXpoB,KAAM,CAAC8M,SAGX0T,QAAS,oBAGD,MAAO,SAEXxgB,KAAM,CAAC8M,SAGXulB,UAAW,oBAGH,MAAO,SAEXryB,KAAM,CAAC8M,SAGXslB,UAAW,oBAGH,MAAO,SAEXpyB,KAAM,CAAC8M,SAGX/O,UAAW,oBAGH,MAAO,YAEXiC,KAAM,CAAC8M,SAGXmoB,aAAc,oBAGN,MAAO,YAEXj1B,KAAM,CAAC8M,UAKfnM,KA/HW,WAiIP,MAAO,CACH0hB,UAAWhtB,KAAKgL,WAChB60B,UAAW7/B,KAAKgL,WAChB2qB,OAAO,IAIf7pB,QAAS,CAELg0B,cAFK,WAID9/B,KAAK21B,OAAQ,EAEb31B,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYhtB,KAAK6/B,UAAY7/B,KAAK2jB,aAG/C8c,gBAVK,SAUWzhC,GAEZgB,KAAK21B,OAAQ,EAEb31B,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYhuB,IAGzB0hC,gBAlBK,SAkBW1hC,GAEZgB,KAAKgG,MAAM,eACPhG,KAAK6/B,UAAY7gC,IAGzB2hC,eAxBK,SAwBU3hC,GAEXgB,KAAK21B,MAAQ32B,IAKrB4M,MAAO,CAEHZ,WAFG,SAEQhM,GACFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7Bu8B,iBAjLW,WAmLP,IAAOv7B,KAAK4jB,WAAa9e,MAAIgF,QAAQ9J,KAAKgtB,WACtC,OAAO,KAGX,IAAI7jB,EAAQ,GAMZ,OAJOnJ,KAAKmjB,WACRha,EAAMuf,YAAc1oB,KAAK8/B,eAIzB,wDAAW,qBAAwB32B,GAAnC,CACI,iCAAWyU,KAAKC,MAAM2D,OAAtB,SAKZga,iBApMW,WAsMP,OACI,mCAAW,qBAAX,CACI,iCAAW5d,KAAKC,MAAMkE,WAAtB,SAKZ6Z,iBA7MW,WA8MX,I,EAAA,OACQz1B,EAAQnG,KAAKyQ,QAAS+vB,EAAa,GAEvC,OAAK17B,MAAIgF,QAAQ9J,KAAKgtB,WAEd,mCAAW,2BAAX,CACMhtB,KAAKuK,MAAMvK,KAAKwjB,gBAK9BjiB,MAAI0D,KAAKjF,KAAKgtB,WAAW,SAAChuB,GAEtB,GAAOmH,EAAP,CAIA,IAAIlD,EAAO1B,MAAIgB,KAAK4D,E,sHAAT,IACN,EAAK42B,UAAY/9B,IAGtBmH,EAAQpD,MAAInE,IAAIqE,EAAM,EAAKyF,WAE3B,IAAIk4B,EACA,mCAAW,oBAAX,CACI,mCAAQ79B,MAAInE,IAAIqE,EAAM,EAAK+5B,eAInCwD,EAAW/+B,KAAKm/B,OAIhB,mCAAW,qB,qBACLJ,I,6EAAAA,EADN,2BACMA,QAKdnE,cArPW,WA2PP,OACI,mCALY,CACZ,wBAIA,CACMr8B,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,MAKdoX,YApQW,WAsQP,IAAIjO,EAAQpG,MAAIkG,OAAOjJ,KAAK0c,OAAQ,CAAC,cAAe,CAChDijB,MAAO3/B,KAAK6/B,UACZ70B,WAAYhL,KAAKgtB,YAMrB,OAHA7jB,EAAM,kBAAoBnJ,KAAK0gC,gBAC/Bv3B,EAAM,uBAAyBnJ,KAAKygC,gBAGhC,+FAAsB,oBAAuBt3B,GAA7C,OAIRyzB,cAnRW,WAoRX,WACQzzB,EAAQ,CACRgiB,QAAS,QACT1Y,MAAO,EACPjC,KAAMxQ,KAAKwQ,KACXuiB,SAAU/yB,KAAK+yB,SACfC,aAAa,EACb7P,SAAUnjB,KAAKmjB,UAGnB,OACI,uFAAc,UAAd,WAAgC,EAAKwS,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,GAAhD,CACQ6W,IAAKhgB,KAAKgK,KAAK,kBAK/BsI,OArSW,WAuSP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAK2K,KACtB,eAAiB3K,KAAKwQ,MAmB1B,OAhBK1L,MAAIgF,QAAQ9J,KAAKgtB,YAClBvsB,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OC/TH,mBAAUwiB,GACrBA,EAAI6B,UAAUwc,EAAcviC,KAAMuiC,GAClCre,EAAI6B,UAAUyc,EAASxiC,KAAMwiC,K,6KCHlB,OAEXxiC,KAAM,mBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfod,OAAQ,oBAGA,OAAO,OAIfC,YAAa,oBAGL,OAAO,OAIfC,OAAQ,oBAGA,OAAO,OAIfC,YAAa,oBAGL,OAAO,OAIfC,QAAS,oBAGD,OAAO,OAIfC,QAAS,oBAGD,OAAO,OAIf5wB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX4pB,MAAO,oBAGC,OAAO,GAEX12B,KAAM,CAACS,UAGXk2B,YAAa,oBAGL,OAAO,GAEX32B,KAAM,CAACyE,SAGX+T,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGX2Y,OAAQ,oBAGA,MAAO,uBAEXpZ,KAAM,CAAC8M,SAGX8pB,SAAU,oBAGF,MAAO,CACH,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAG5C52B,KAAM,CAACkN,QAGX2pB,OAAQ,oBAGA,MAAO,CACH,MAAO,MAAO,MAAO,MAAO,MAAO,MACnC,MAAO,MAAO,MAAO,MAAO,MAAO,QAG3C72B,KAAM,CAACkN,SAKfkF,SAAU,CAEN0kB,UAFM,WAIF,OAAOzhC,KAAK0hC,UAAUC,YAG1BC,WAPM,WASF,OAAO5hC,KAAK0hC,UAAUG,cAK9Bj2B,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UACtC/jB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,KAIlC+hC,OATG,SASI/hC,GAEEA,IAAUgB,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,UACvC/jB,KAAK+hC,WAAaD,MAAIthC,KAAKxB,KAInCiiC,OAhBG,SAgBIjiC,GAEEA,IAAUgB,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,UACvC/jB,KAAKgiC,WAAaF,MAAIthC,KAAKxB,MAMvCsM,KA5KW,WA8KP,MAAO,CACH22B,SAAU,OACVC,WAAY,KACZC,YAAa,KACbC,YAAa,KACbpV,UAAW8U,MAAIthC,KAAKR,KAAKgL,WAAYhL,KAAK+jB,QAC1C2d,UAAWI,MAAIthC,KAAKR,KAAKgL,WAAYhL,KAAK+jB,QAC1Cge,WAAYD,MAAIthC,KAAKR,KAAK+gC,QAC1BiB,WAAYF,MAAIthC,KAAKR,KAAKihC,UAIlCn1B,QAAS,CAELu2B,SAFK,WAIDriC,KAAKiiC,SAAW,QAGpBK,UAPK,WASDtiC,KAAKiiC,SAAW,SAGpBM,SAZK,WAcDviC,KAAKiiC,SAAW,QAGpBO,UAjBK,SAiBK59B,GAEDE,MAAIgI,SAASlI,KACdA,EAAMk9B,MAAIthC,KAAKoE,IAGdE,MAAIgF,QAAQ9J,KAAKgL,YAClBpG,EAAI69B,YAEJ79B,EAAI89B,UAAU1iC,KAAKgtB,WAIvBhtB,KAAK0hC,UAAY98B,EAAIsB,QAGrBlG,KAAKgtB,UAAYpoB,EAAIsB,QAErBlG,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UAGnC4e,WAvCK,SAuCM/9B,GAEFE,MAAIgI,SAASlI,KACdA,EAAMk9B,MAAIthC,KAAKoE,IAGnB5E,KAAK0hC,UAAY98B,EAAIsB,QAErBlG,KAAKqiC,YAGTO,WAlDK,SAkDMh+B,GAEP5E,KAAKkiC,WAAat9B,EAAIsB,SAG1B28B,UAvDK,SAuDKj+B,GAEDE,MAAIgI,SAASlI,KACdA,EAAMk9B,MAAIthC,KAAKoE,IAGnB5E,KAAK0hC,UAAY98B,EAAIsB,QAErBlG,KAAKsiC,aAGTQ,WAlEK,SAkEMl+B,GAEF5E,KAAKmiC,cAAiBniC,KAAKoiC,cAC5BpiC,KAAKoiC,YAAcx9B,EAAIsB,SAGpBlG,KAAKmiC,aAAiBniC,KAAKoiC,cAC9BpiC,KAAKmiC,YAAcv9B,EAAIsB,SAGpBlG,KAAKmiC,aAAiBniC,KAAKoiC,cAIlCpiC,KAAK+hC,WAAa/hC,KAAKmiC,YAAYj8B,QACnClG,KAAKgiC,WAAahiC,KAAKoiC,YAAYl8B,QAEnClG,KAAKgG,MAAM,gBACPhG,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,SAEhC/jB,KAAKgG,MAAM,gBACPhG,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,SAEhC/jB,KAAKmiC,YAAc,KACnBniC,KAAKoiC,YAAc,KAEnBpiC,KAAKgG,MAAM,gBAAiB,CACxBhG,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,QAC5B/jB,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,aAMxCgf,kBA9RW,SA8ROlU,GAEd,IAAI1lB,EAAQ,CACRwB,KAAM3K,KAAK2K,KACX4G,MAAM,EACN6R,KAAMxF,KAAKC,MAAMmE,UACjBvE,QAASoR,GAGb,OAAQ,4DAAa1lB,EAAb,OAGZ65B,kBA1SW,SA0SOnU,GAEd,IAAI1lB,EAAQ,CACRwB,KAAM3K,KAAK2K,KACX4G,MAAM,EACN6R,KAAMxF,KAAKC,MAAMG,WACjBP,QAASoR,GAGb,OAAQ,4DAAa1lB,EAAb,OAGZ85B,mBAtTW,WAwTP,IAAI95B,EAAQ,CACRsU,QAASzd,KAAKsiC,WAGdY,EAAa,CACbljC,KAAKwhC,OAAOxhC,KAAK0hC,UAAUyB,UAG3BA,EAAQnjC,KAAK0hC,UAAUx7B,QACtBk9B,UAAUpjC,KAAKshC,YAAc,GAMlC,OAJK6B,EAAMA,UAAYnjC,KAAK0hC,UAAUyB,SAClCD,EAAWzhC,KAAKzB,KAAKwhC,OAAO2B,EAAMA,UAIlC,yDAAY,6BAAgCh6B,GAA5C,CACM+5B,EAAWvhC,KAAK,UAK9B0hC,kBA9UW,WAgVP,IAAIl6B,EAAQ,CACRsU,QAASzd,KAAKuiC,UAGde,EAAY,CACZtjC,KAAK0hC,UAAU6B,QAGfJ,EAAQnjC,KAAK0hC,UAAUx7B,QACtBk9B,UAAUpjC,KAAKshC,YAAc,GAMlC,OAJK6B,EAAMI,SAAWvjC,KAAK0hC,UAAU6B,QACjCD,EAAU7hC,KAAK0hC,EAAMI,QAIrB,yDAAY,4BAA+Bp6B,GAA3C,CACMm6B,EAAU3hC,KAAK,UAK7B6hC,cAtWW,YAuWX,IADgBC,EAChB,EADgBA,KAAMC,EACtB,EADsBA,KAElB,OACI,mCAAW,+BAAX,CACI,mCAAW,+BAAX,CACM1jC,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,KAEN,mCAAW,4BAAX,CACMA,KAAKgK,KAAK,oBAAVhK,CAA+ByjC,KAErC,mCAAW,4BAAX,CACMzjC,KAAKgK,KAAK,oBAAVhK,CAA+B0jC,QAMjDC,eAxXW,SAwXI/+B,EAAKu+B,GACpB,WACQ1iC,EAAY,CACZ,2BAGCmE,EAAIg/B,aACLnjC,EAAUgB,KAAK,WAGFzB,KAAKgtB,UAAU6W,SAC5Bj/B,EAAIg/B,UAAU5jC,KAAKgtB,YAGnBvsB,EAAUgB,KAAK,cAGdmD,EAAIu+B,UAAYA,EAAMA,SACvB1iC,EAAUgB,KAAK,aAGnB,IAAIqiC,GAAmB9jC,KAAKmhC,SACxBv8B,EAAIm/B,MAAM/jC,KAAKmhC,UAAYv8B,EAAIg/B,UAAU5jC,KAAKmhC,SAE9C6C,GAAkBhkC,KAAKohC,SACvBx8B,EAAIq/B,OAAOjkC,KAAKohC,UAAYx8B,EAAIg/B,UAAU5jC,KAAKohC,SAE5C0C,GAAoBE,GACvBvjC,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,GAMZ,OAJK26B,GAAkBE,IACnB76B,EAAMsU,QAAU,kBAAM,EAAK+kB,UAAU59B,KAIrC,wDAAYnE,GAAe0I,GAA3B,CACI,mCAAQvE,EAAImf,OAAO,WAK/BmgB,oBApaW,SAoaSt/B,EAAKu+B,GACzB,WACQ1iC,EAAY,CACZ,2BAGCmE,EAAIg/B,UAAU,QACfnjC,EAAUgB,KAAK,WAGdmD,EAAIu+B,UAAYA,EAAMA,SACvB1iC,EAAUgB,KAAK,aAGnB,IAAI0iC,EAAW,EAEPnkC,KAAKmiC,aACTgC,IAGInkC,KAAKoiC,aACT+B,IAGJ,IAAIC,EAAcpkC,KAAK+hC,WAAW8B,SAC9B7jC,KAAKgiC,WAAW6B,QAEpB,GAAkB,IAAbM,GAAkBC,EAAc,CAE5Bx/B,EAAIy/B,QAAQrkC,KAAK+hC,WAAY/hC,KAAKgiC,cACnCvhC,EAAUgB,KAAK,aACfhB,EAAUgB,KAAK,eAGnB,IAAI6iC,EAActkC,KAAK+hC,WAAWkC,OAAOjkC,KAAKgiC,YAEzCp9B,EAAIg/B,UAAU5jC,KAAK+hC,cACpBthC,EAAUgB,KAAK6iC,EAAc,WAAa,YAC1C7jC,EAAUgB,KAAK,eAGdmD,EAAIg/B,UAAU5jC,KAAKgiC,cACpBvhC,EAAUgB,KAAK6iC,EAAc,WAAa,YAC1C7jC,EAAUgB,KAAK,eAKvB,GAAkB,IAAb0iC,GAAkBnkC,KAAKmiC,YAAc,CAEjCv9B,EAAIy/B,QAAQrkC,KAAKmiC,YAAaniC,KAAKkiC,aACpCzhC,EAAUgB,KAAK,aAGnB,IAAI6iC,EAActkC,KAAKmiC,YAAY8B,OAAOjkC,KAAKkiC,YAE1Ct9B,EAAIg/B,UAAU5jC,KAAKmiC,cACpB1hC,EAAUgB,KAAK6iC,EAAc,WAAa,YAGzC1/B,EAAIg/B,UAAU5jC,KAAKkiC,aACpBzhC,EAAUgB,KAAK6iC,EAAc,WAAa,YAKlD,IAAIR,GAAmB9jC,KAAKmhC,SACxBv8B,EAAIm/B,MAAM/jC,KAAKmhC,UAAYv8B,EAAIg/B,UAAU5jC,KAAKmhC,SAE9C6C,GAAkBhkC,KAAKohC,SACvBx8B,EAAIq/B,OAAOjkC,KAAKohC,UAAYx8B,EAAIg/B,UAAU5jC,KAAKohC,SAE5C0C,GAAoBE,GACvBvjC,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACRwT,aAAc,kBAAM,EAAKimB,WAAWh+B,KAOxC,OAJKk/B,GAAkBE,IACnB76B,EAAMsU,QAAU,kBAAM,EAAKqlB,WAAWl+B,KAItC,wDAAYnE,GAAe0I,GAA3B,CACI,mCAAQvE,EAAImf,OAAO,WAK/BwgB,WA/fW,WAggBX,WAQQC,EACAjjC,MAAI0D,KAAKjF,KAAKuhC,UAAU,SAACkD,GACrB,OACI,mCAAW,2BAAX,CACI,mCAAQ,EAAKl6B,MAAMk6B,UAM/B/tB,EAAa1W,KAAKgK,KAAK,kBAEtBhK,KAAKqhC,QACN3qB,EAAa1W,KAAKgK,KAAK,wBAG3B,IAAI06B,EAAW,SAACvB,GAAD,OACX5hC,MAAI0D,KAAK1D,MAAI0V,MAAMksB,EAAMwB,eAAgB,IAAI,SAACxtB,GAC1C,OACI,mCAAW,4BAAX,CACM5V,MAAI0D,KAAKkS,GAAQ,SAACF,GAAD,OAAWP,EAAWO,EAAOksB,YAM5DyB,EACArjC,MAAI0D,KAAK1D,MAAIf,KAAKR,KAAKshC,cAAc,SAAC3rB,GAElC,IAAIwtB,EAAQ,EAAKzB,UAAUx7B,QACtBk9B,UAAUztB,EAAS,GAExB,OACI,mCAAW,6BAAX,CACI,mCAAW,8BAAX,EACM6uB,KADN,2BACMA,MAEN,mCAAW,4BAAX,CACME,EAASvB,UAO/B,OACI,mCAAW,gCAAX,CACI,mCAAW,8BAAX,CACMnjC,KAAKgK,KAAK,gBAAVhK,CAA2B,CAAEyjC,KAvDhC,WACP,EAAK/B,UAAY,EAAKA,UAAUmD,aAsDanB,KApDtC,WACP,EAAKhC,UAAY,EAAKA,UAAUoD,iBAqD5B,mCAAW,8BAAX,EACMF,KADN,2BACMA,SAMlBG,gBAjkBW,SAikBKngC,GAChB,WACQnE,EAAY,CACZ,6BAGCmE,EAAIogC,MAAMhlC,KAAK0hC,UAAW,WAC3BjhC,EAAUgB,KAAK,cAGdmD,EAAIu+B,UAAYrB,MAAIthC,KAAK,OAAO2iC,SACjC1iC,EAAUgB,KAAK,aAGnB,IAAI0H,EAAQ,CACRsU,QAAS,kBAAM,EAAKklB,WAAW/9B,KAGnC,OACI,wDAAYnE,GAAe0I,GAA3B,CACI,mCAAQnJ,KAAKuK,MAAMvK,KAAKwhC,OAAO58B,EAAIu+B,eAK/C8B,YA1lBW,WA2lBX,aASI,OACI,mCAAW,iCAAX,CACI,mCAAW,8BAAX,CACMjlC,KAAKgK,KAAK,gBAAVhK,CAA2B,CAAEyjC,KAXhC,WACP,EAAK/B,UAAY,EAAKA,UAAUwD,YAUaxB,KAPtC,WACP,EAAKhC,UAAY,EAAKA,UAAUyD,gBAQ5B,mCAAW,4BAAX,CACI,mCAAW,4BAAX,CACM5jC,MAAI0D,KAAKjF,KAAK4hC,WAAY5hC,KAAKgK,KAAK,wBAG9C,mCAAW,8BAAX,CACI,kEAAehK,KAAK2K,KAApB,MAAkD,EAAlD,QAAiE3K,KAAKqiC,UAAtE,IACMriC,KAAKuK,MAAM,YADjB,wCAQhB66B,eAvnBW,SAunBIxgC,GACf,WACQnE,EAAY,CACZ,4BAGCmE,EAAIogC,MAAMhlC,KAAK0hC,UAAW,SAC3BjhC,EAAUgB,KAAK,cAGdmD,EAAI2+B,SAAWzB,MAAIthC,KAAK,OAAO+iC,QAChC9iC,EAAUgB,KAAK,aAGnB,IAAI0H,EAAQ,CACRsU,QAAS,kBAAM,EAAKolB,UAAUj+B,KAGlC,OACI,wDAAYnE,GAAe0I,GAA3B,CACI,mCAAQvE,EAAI2+B,YAKxB8B,WAhpBW,WAipBX,aASI,OACI,mCAAW,gCAAX,CACI,mCAAW,8BAAX,CACMrlC,KAAKgK,KAAK,gBAAVhK,CAA2B,CAAEyjC,KAXhC,WACP,EAAK/B,UAAY,EAAKA,UAAU4D,cAUa5B,KAPtC,WACP,EAAKhC,UAAY,EAAKA,UAAU6D,kBAQ5B,mCAAW,4BAAX,CACI,mCAAW,8BAAX,CACMhkC,MAAI0D,KAAKjF,KAAKyhC,UAAWzhC,KAAKgK,KAAK,uBAG7C,mCAAW,8BAAX,CACI,kEAAehK,KAAK2K,KAApB,MAAkD,EAAlD,QAAiE3K,KAAKqiC,UAAtE,IACMriC,KAAKuK,MAAM,YADjB,wCAQhB+H,OA7qBW,WA+qBP,IAAI7R,EAAY,CACZ,qBACA,uBAAyBT,KAAKwQ,KAC9B,uBAAyBxQ,KAAK2K,MAGlC,OACI,mCAAYlK,GAAZ,CACMT,KAAKgK,KAAK,SAAW8T,MAAIC,QAAQ/d,KAAKiiC,UAAtCjiC,OCvrBH,GAEX1B,KAAM,cAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfod,OAAQ,oBAGA,OAAO,OAIfC,YAAa,oBAGL,OAAO,OAIfC,OAAQ,oBAGA,OAAO,OAIfC,YAAa,oBAGL,OAAO,OAIfC,QAAS,oBAGD,OAAO,OAIfC,QAAS,oBAGD,OAAO,OAIf5wB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX+L,YAAa,oBAGL,OAAOviB,SAAOsJ,MAAM,gBAExBI,KAAM,CAAC8M,SAGX+tB,kBAAmB,oBAGX,OAAOvkC,SAAOsJ,MAAM,eAExBI,KAAM,CAAC8M,SAGXguB,kBAAmB,oBAGX,OAAOxkC,SAAOsJ,MAAM,aAExBI,KAAM,CAAC8M,SAGX4pB,MAAO,oBAGC,OAAO,GAEX12B,KAAM,CAACS,UAGXs6B,eAAgB,oBAGR,MAAO,KAEX/6B,KAAM,CAAC8M,SAGX6pB,YAAa,oBAGL,OAAO,GAEX32B,KAAM,CAACyE,SAGXu2B,SAAU,oBAGF,OAAO,OAIf5S,SAAU,oBAGF,MAAO,gBAEXpoB,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGX2Y,OAAQ,oBAGA,MAAO,uBAEXpZ,KAAM,CAAC8M,SAGXmuB,cAAe,oBAGP,OAAO3kC,SAAOsJ,MAAM,eAExBI,KAAM,CAAC8M,SAGX8pB,SAAU,oBAGF,MAAO,CACHtgC,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,QAGrBI,KAAM,CAACkN,QAGX2pB,OAAQ,oBAGA,MAAO,CACHvgC,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,SAGrBI,KAAM,CAACkN,SAMfjM,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UACtC/jB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,KAIlC+hC,OATG,SASI/hC,GAEEA,IAAUgB,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,UACvC/jB,KAAK+hC,WAAaD,MAAIthC,KAAKxB,KAInCiiC,OAhBG,SAgBIjiC,GAEEA,IAAUgB,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,UACvC/jB,KAAKgiC,WAAaF,MAAIthC,KAAKxB,MAMvCsM,KA9OW,WAgPP,MAAO,CACHqqB,OAAO,EACP3I,UAAW8U,MAAIthC,KAAKR,KAAKgL,WAAYhL,KAAK+jB,QAC1Cge,WAAYD,MAAIthC,KAAKR,KAAK+gC,OAAQ/gC,KAAK+jB,QACvCie,WAAYF,MAAIthC,KAAKR,KAAKihC,OAAQjhC,KAAK+jB,UAI/CjY,QAAS,CAEL+5B,gBAFK,WAID7lC,KAAKqhC,MAAQrhC,KAAK8lC,uBACd9lC,KAAK+lC,yBAGbA,sBARK,WAUD/lC,KAAKgtB,UAAY8U,MAAIthC,KAAKR,KAAK2jB,WAC3B3jB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhG,KAAK2jB,aAIzCmiB,qBAjBK,WAmBD9lC,KAAK+hC,WAAaD,MAAIthC,KAAKR,KAAKghC,YAC5BhhC,KAAK+jB,QAET/jB,KAAKgG,MAAM,gBAAiBhG,KAAK2jB,YAEjC3jB,KAAKgiC,WAAaF,MAAIthC,KAAKR,KAAKkhC,YAC5BlhC,KAAK+jB,QAET/jB,KAAKgG,MAAM,gBAAiBhG,KAAKkhC,cAGrCP,eA9BK,SA8BU3hC,GAEXgB,KAAK21B,MAAQ32B,GAGjBgnC,aAnCK,SAmCQnlC,GAKT,KAHsBb,KAAK4lC,cAAcnhC,SACrC5D,EAAMyD,OAAOtF,MAAMyF,QAEvB,CAIA,IAAIzF,EAAQ8iC,MAAIthC,KAAKK,EAAMyD,OAAOtF,MAC9BgB,KAAK4lC,eAET,GAAO5mC,EAAMinC,OAAOC,UAApB,CAIA,IAAID,EAASjmC,KAAKgtB,UAAUiZ,OAAO19B,IAAI,CACnCg7B,KAAMvkC,EAAMinC,OAAO1C,OACnBJ,MAAOnkC,EAAMinC,OAAO9C,QACpBgD,KAAMnnC,EAAMinC,OAAOE,SAGvBnmC,KAAKgtB,UAAY8U,MAAIthC,KAAKylC,GAE1BjmC,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,YAGnCqiB,cA/DK,SA+DSvlC,GAKV,KAHsBb,KAAK4lC,cAAcnhC,SACrC5D,EAAMyD,OAAOtF,MAAMyF,QAEvB,CAIA,IAAIzF,EAAQ8iC,MAAIthC,KAAKK,EAAMyD,OAAOtF,MAC9BgB,KAAK4lC,eAET,GAAO5mC,EAAMinC,OAAOC,UAApB,CAIA,IAAID,EAASjmC,KAAKgtB,UAAUiZ,OAAO19B,IAAI,CACnCg7B,KAAMvkC,EAAMinC,OAAO1C,OACnBJ,MAAOnkC,EAAMinC,OAAO9C,QACpBgD,KAAMnnC,EAAMinC,OAAOE,SAGvBnmC,KAAK+hC,WAAaD,MAAIthC,KAAKylC,GAE3BjmC,KAAKgG,MAAM,gBACPhG,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,YAGpCsiB,cA3FK,SA2FSxlC,GAKV,KAHsBb,KAAK4lC,cAAcnhC,SACrC5D,EAAMyD,OAAOtF,MAAMyF,QAEvB,CAIA,IAAIzF,EAAQ8iC,MAAIthC,KAAKK,EAAMyD,OAAOtF,MAC9BgB,KAAK4lC,eAET,GAAO5mC,EAAMinC,OAAOC,UAApB,CAIA,IAAID,EAASjmC,KAAKgtB,UAAUiZ,OAAO19B,IAAI,CACnCg7B,KAAMvkC,EAAMinC,OAAO1C,OACnBJ,MAAOnkC,EAAMinC,OAAO9C,QACpBgD,KAAMnnC,EAAMinC,OAAOE,SAGvBnmC,KAAKgiC,WAAaF,MAAIthC,KAAKylC,GAE3BjmC,KAAKgG,MAAM,gBACPhG,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,YAGpCuiB,kBAvHK,SAuHatnC,GAEdgB,KAAK21B,OAAQ,EAEb31B,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,EACtBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhH,IAGpCunC,mBAjIK,SAiIcvnC,GAEfgB,KAAK21B,OAAQ,EAEb31B,KAAKgiC,WAAaF,MAAIthC,KAAKxB,EACvBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,gBAAiBhH,IAGhCwnC,mBA3IK,SA2IcxnC,GAEfgB,KAAK21B,OAAQ,EAEb31B,KAAK+hC,WAAaD,MAAIthC,KAAKxB,EACvBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,gBAAiBhH,KAMpCu8B,iBAhZW,WAkZP,IAAIzxB,GAAY9J,KAAK+hC,WAAW0E,cAC1BzmC,KAAKgiC,WAAWyE,YAMtB,GAJOzmC,KAAKqhC,QACRv3B,GAAY9J,KAAKgtB,UAAUyZ,cAGxBzmC,KAAK4jB,WAAa9Z,EACrB,OAAO,KAGX,IAAIX,EAAQ,GAMZ,OAJOnJ,KAAKmjB,WACRha,EAAMuf,YAAc1oB,KAAK6lC,iBAIzB,wDAAW,uBAA0B18B,GAArC,CACI,iCAAWyU,KAAKC,MAAM2D,OAAtB,SAKZga,iBA1aW,WA4aP,OACI,mCAAW,uBAAX,CACI,iCAAW5d,KAAKC,MAAMkE,WAAtB,SAKZ2kB,YAnbW,WAqbP,IAAIC,EAAc,CACd3nC,MAAO,GACPmkB,SAAUnjB,KAAKmjB,SACfK,YAAaxjB,KAAKwlC,kBAClBvJ,QAASj8B,KAAKomC,eAGbpmC,KAAK+hC,WAAW8B,UACjB8C,EAAY3nC,MAAQgB,KAAK+hC,WAAWhe,OAChC/jB,KAAK4lC,eAAe,IAG5B,IAAIgB,EAAc,CACd5nC,MAAO,GACPmkB,SAAUnjB,KAAKmjB,SACfK,YAAaxjB,KAAKylC,kBAClBxJ,QAASj8B,KAAKqmC,eAQlB,OALKrmC,KAAKgiC,WAAW6B,UACjB+C,EAAY5nC,MAAQgB,KAAKgiC,WAAWje,OAChC/jB,KAAK4lC,eAAe,IAGrB,CAEC,mCAAW,uBAAX,CACI,8BAAWe,EAAX,QAIJ,mCAAW,2BAAX,CACI,mCAAQ3mC,KAAK0lC,mBAIjB,mCAAW,uBAAX,CACI,8BAAWkB,EAAX,UAMhBzK,aAheW,WAkeP,IAAIhzB,EAAQ,CACRnK,MAAO,GACPmkB,SAAUnjB,KAAKmjB,SACfK,YAAaxjB,KAAKwjB,YAClByY,QAASj8B,KAAKgmC,cAQlB,OALKhmC,KAAKgtB,UAAU6W,UAChB16B,EAAMnK,MAAQgB,KAAKgtB,UAAUjJ,OACzB/jB,KAAK4lC,eAAe,IAIxB,mCAAW,uBAAX,CACI,8BAAWz8B,EAAX,SAKZkzB,cArfW,WAufP,IAAI57B,EAAY,CACZ,yBAGCT,KAAKqhC,OACN5gC,EAAUgB,KAAK,WAGnB,IAAI66B,EAAct8B,KAAKgK,KAAK,gBAM5B,OAJKhK,KAAKqhC,QACN/E,EAAct8B,KAAKgK,KAAK,gBAIxB,mCAAYvJ,GAAZ,CACMT,KAAKgK,KAAK,mBAAVhK,GACAs8B,IACAt8B,KAAKgK,KAAK,mBAAVhK,MAKdoX,YA9gBW,WAihBP,IAAIjO,EAAQpG,MAAIkG,OAAOjJ,KAAK0c,OAAQ,CAAC,cAAe,CAChDqkB,OAAQ/gC,KAAK+hC,WAAWhe,OAAO/jB,KAAK+jB,SAAW,KAC/Ckd,OAAQjhC,KAAKgiC,WAAWje,OAAO/jB,KAAK+jB,SAAW,KAC/C/Y,WAAYhL,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,SAAW,OAOtD,OAJA5a,EAAM,mBAAqBnJ,KAAKwmC,mBAChCr9B,EAAM,mBAAqBnJ,KAAKumC,mBAChCp9B,EAAM,uBAAyBnJ,KAAKsmC,kBAGhC,iGAAwB,sBAAyBn9B,GAAjD,OAIRyzB,cAhiBW,WAiiBX,WACQzzB,EAAQ,CACRgiB,QAAS,QACT1Y,MAAO,EACPjC,KAAMxQ,KAAKwQ,KACXuiB,SAAU/yB,KAAK+yB,SACfC,aAAa,EACb7P,SAAUnjB,KAAKmjB,UAGnB,OACI,uFAAc,UAAd,WAAgC,EAAKwS,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,GAAhD,CACQ6W,IAAKhgB,KAAKgK,KAAK,kBAK/BsI,OAljBW,WAojBP,IAAI7R,EAAY,CACZ,eACA,iBAAmBT,KAAK2K,KACxB,iBAAmB3K,KAAKwQ,MAGxB1G,GAAY9J,KAAK+hC,WAAW0E,cAC1BzmC,KAAKgiC,WAAWyE,YAsBtB,OApBOzmC,KAAKqhC,QACRv3B,GAAY9J,KAAKgtB,UAAUyZ,aAG1B38B,GACDrJ,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OCnlBH,mBAAUwiB,GACrBA,EAAI6B,UAAUwiB,EAAgBvoC,KAAMuoC,GACpCrkB,EAAI6B,UAAUyiB,EAAWxoC,KAAMwoC,K,6KCHpB,OAEXxoC,KAAM,mBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfH,YAAa,oBAGL,MAAO,eAEX7Y,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,OAIf7F,KAAM,oBAGE,MAAO,YAIfwY,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGX2Y,OAAQ,oBAGA,MAAO,uBAEXpZ,KAAM,CAAC8M,SAGXmuB,cAAe,oBAGP,MAAO,YAEXj7B,KAAM,CAAC8M,SAGXsvB,cAAe,oBAGP,OAAO,GAEXp8B,KAAM,CAACyE,SAGX43B,gBAAiB,oBAGT,OAAO,GAEXr8B,KAAM,CAACyE,SAGX63B,gBAAiB,oBAGT,OAAO,GAEXt8B,KAAM,CAACyE,UAKf2N,SAAU,CAENmqB,UAFM,WAIF,OAAOlnC,KAAKgtB,UAAUma,SAASnnC,KAAK+mC,gBAGxCK,YAPM,WASF,OAAOpnC,KAAKgtB,UAAUqa,WAAWrnC,KAAKgnC,kBAG1CM,YAZM,WAcF,OAAOtnC,KAAKgtB,UAAUua,WAAWvnC,KAAKinC,mBAK9Cr7B,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UACtC/jB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,MAMtCsM,KA1HW,WA4HP,IAAIN,EAAa82B,MAAIthC,KAAKR,KAAKgL,YAM/B,OAJKlG,MAAIgF,QAAQ9J,KAAKgL,cAClBA,EAAaA,EAAWy3B,aAGrB,CACHzV,UAAWhiB,IAInBa,QAvIW,WAyIP7L,KAAKqV,YAGTvJ,QAAS,CAEL07B,YAFK,SAEO5iC,GAER5E,KAAKgG,MAAM,qBACNhG,KAAKgtB,UAAYpoB,EAAIsB,SAAS6d,OAAO/jB,KAAK+jB,UAGnD1O,SARK,WASL,WACQoyB,EAAa1kC,MAAIwL,KAAKvO,KAAK2U,MAAO,CAClC,OAAQ,SAAU,WAGtBpT,MAAI0D,KAAKwiC,GAAY,SAAClW,EAAKjyB,GACvBiyB,EAAI7c,eAAJ,uBAAmC,EAAKsY,UAAU1tB,KAAlD,YAMZkkC,cAjKW,WAmKP,OACI,mCAAW,+BAAX,CACI,mCAAW,+BAAX,CACI,oCAAY,4BAAZ,CACKxjC,KAAKgtB,UAAUjJ,OAAO/jB,KAAK4lC,gBAAkB5lC,KAAKwjB,mBAOvEkkB,eA9KW,SA8KI9iC,GACf,WACQnE,EAAY,CACZ,4BAGCT,KAAKgtB,UAAU6W,SAAWj/B,EAAI+iC,SAAW3nC,KAAKgtB,UAAU2a,QACzDlnC,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACRuf,YAAa,kBAAM,EAAK8e,YAAY5iC,KAGxC,OACI,wDAAYnE,GAAe0I,EAA3B,cAA8CvE,EAAI+iC,SAAlD,CACI,mCAAO/iC,EAAImf,OAAO,WAK9B6jB,gBAnMW,WAoMX,MACI,OAAM5nC,KAAK4lC,cAAc74B,MAAM,MAK3B,oEAAgB,OAAhB,MAA6B,4BAA7B,UAAmE,4BAAnE,IACKxL,MAAI0D,KAAKjF,KAAKknC,UAAWlnC,KAAKgK,KAAK,oBADxC,mCAJO,MAUf69B,iBAhNW,SAgNMjjC,GACjB,WACQnE,EAAY,CACZ,4BAGCT,KAAKgtB,UAAU6W,SAAWj/B,EAAIkjC,WAAa9nC,KAAKgtB,UAAU8a,UAC3DrnC,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACRuf,YAAa,kBAAM,EAAK8e,YAAY5iC,KAGxC,OACI,wDAAYnE,GAAe0I,EAA3B,cAA8CvE,EAAIkjC,WAAlD,CACI,mCAAOljC,EAAImf,OAAO,WAK9BgkB,kBArOW,WAsOX,MACI,OAAM/nC,KAAK4lC,cAAc74B,MAAM,MAK3B,oEAAgB,SAAhB,MAA+B,4BAA/B,UAAqE,4BAArE,IACKxL,MAAI0D,KAAKjF,KAAKonC,YAAapnC,KAAKgK,KAAK,sBAD1C,mCAJO,MAUfg+B,iBAlPW,SAkPMpjC,GACjB,WACQnE,EAAY,CACZ,4BAGCT,KAAKgtB,UAAU6W,SAAWj/B,EAAIqjC,WAAajoC,KAAKgtB,UAAUib,UAC3DxnC,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQ,CACRuf,YAAa,kBAAM,EAAK8e,YAAY5iC,KAGxC,OACI,wDAAYnE,GAAe0I,EAA3B,cAA8CvE,EAAIqjC,WAAlD,CACI,mCAAOrjC,EAAImf,OAAO,WAK9BmkB,kBAvQW,WAwQX,MACI,OAAMloC,KAAK4lC,cAAc74B,MAAM,MAK3B,oEAAgB,SAAhB,MAA+B,4BAA/B,UAAqE,4BAArE,IACKxL,MAAI0D,KAAKjF,KAAKsnC,YAAatnC,KAAKgK,KAAK,sBAD1C,mCAJO,MAUfsI,OApRW,WAsRP,IAAI7R,EAAY,CACZ,qBACA,uBAAyBT,KAAKwQ,KAC9B,uBAAyBxQ,KAAK2K,MAOlC,OAJK3K,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACI,mCAAW,8BAAX,CACKT,KAAKgK,KAAK,gBAAVhK,KAEL,mCAAW,4BAAX,CACKA,KAAKgK,KAAK,kBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,SCxSN,GAEX1B,KAAM,cAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfH,YAAa,oBAGL,MAAO,eAEX7Y,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,gBAEXpoB,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGX2Y,OAAQ,oBAGA,MAAO,uBAEXpZ,KAAM,CAAC8M,SAGXmuB,cAAe,oBAGP,OAAO3kC,SAAOsJ,MAAM,aAExBI,KAAM,CAAC8M,SAGXsvB,cAAe,oBAGP,OAAO,GAEXp8B,KAAM,CAACyE,SAGX43B,gBAAiB,oBAGT,OAAO,GAEXr8B,KAAM,CAACyE,SAGX63B,gBAAiB,oBAGT,OAAO,GAEXt8B,KAAM,CAACyE,UAKf2N,SAAU,CAENmqB,UAFM,WAIF,OAAOlnC,KAAKgtB,UAAUma,SAASnnC,KAAK+mC,gBAGxCK,YAPM,WASF,OAAOpnC,KAAKgtB,UAAUqa,WAAWrnC,KAAKgnC,kBAG1CM,YAZM,WAcF,OAAOtnC,KAAKgtB,UAAUua,WAAWvnC,KAAKinC,mBAK9Cr7B,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UACtC/jB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,MAMtCsM,KA5IW,WA8IP,MAAO,CACHqqB,OAAO,EACP3I,UAAW8U,MAAIthC,KAAKR,KAAKgL,cAIjCc,QAAS,CAELq8B,gBAFK,WAIDnoC,KAAKgtB,UAAY8U,MAAIthC,KAAKR,KAAK2jB,WAC3B3jB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhG,KAAK2jB,aAGzCgd,eAVK,SAUU3hC,GAEXgB,KAAK21B,MAAQ32B,GAGjBgnC,aAfK,SAeQnlC,GAKT,KAHsBb,KAAK4lC,cAAcnhC,SACrC5D,EAAMyD,OAAOtF,MAAMyF,QAEvB,CAIA,IAAIzF,EAAQ8iC,MAAIthC,KAAKK,EAAMyD,OAAOtF,MAC9BgB,KAAK4lC,eAET,GAAO5mC,EAAMinC,OAAOC,UAApB,CAIA,IAAID,EAASjmC,KAAKgtB,UAAUiZ,OAAO19B,IAAI,CACnCo/B,KAAM3oC,EAAMinC,OAAO0B,OACnBG,OAAQ9oC,EAAMinC,OAAO6B,SACrBG,OAAQjpC,EAAMinC,OAAOgC,WAGzBjoC,KAAKgtB,UAAY8U,MAAIthC,KAAKylC,GAE1BjmC,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,YAGnCqkB,kBA3CK,SA2CappC,GAEdgB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,EACtBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhH,KAKxCu8B,iBAzMW,WA2MP,IAAOv7B,KAAK4jB,YAAe5jB,KAAKgtB,UAAU6W,QACtC,OAAO,KAGX,IAAI16B,EAAQ,GAMZ,OAJOnJ,KAAKmjB,WACRha,EAAMuf,YAAc1oB,KAAKmoC,iBAIzB,wDAAW,uBAA0Bh/B,GAArC,CACI,iCAAWyU,KAAKC,MAAM2D,OAAtB,SAKZga,iBA5NW,WA8NP,OACI,mCAAW,uBAAX,CACI,iCAAW5d,KAAKC,MAAMkE,WAAtB,SAKZoa,aArOW,WAuOP,IAAIhzB,EAAQ,CACRnK,MAAO,GACPmkB,SAAUnjB,KAAKmjB,SACfK,YAAaxjB,KAAKuK,MAAMvK,KAAKwjB,aAC7ByY,QAASj8B,KAAKgmC,cAQlB,OALKhmC,KAAKgtB,UAAU6W,UAChB16B,EAAMnK,MAAQgB,KAAKgtB,UAAUjJ,OACzB/jB,KAAK4lC,eAAe,IAIxB,mCAAW,uBAAX,CACI,8BAAWz8B,EAAX,SAKZkzB,cA1PW,WAgQP,OACI,mCALY,CACZ,0BAIA,CACMr8B,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,MAKdqoC,YAzQW,WA4QP,IAAIl/B,EAAQpG,MAAIkG,OAAOjJ,KAAK0c,OAAQ,CAAC,cAAe,CAChD1R,WAAYhL,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,SAAW,OAKtD,OAFA5a,EAAM,uBAAyBnJ,KAAKooC,kBAGhC,iGAAwB,sBAAyBj/B,GAAjD,OAIRyzB,cAvRW,WAwRX,WACQzzB,EAAQ,CACRgiB,QAAS,QACT1Y,MAAO,EACPjC,KAAMxQ,KAAKwQ,KACXuiB,SAAU/yB,KAAK+yB,SACfC,aAAa,EACb7P,SAAUnjB,KAAKmjB,UAGnB,OACI,uFAAc,UAAd,WAAgC,EAAKwS,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,GAAhD,CACQ6W,IAAKhgB,KAAKgK,KAAK,kBAK/BsI,OAzSW,WA2SP,IAAI7R,EAAY,CACZ,eACA,iBAAmBT,KAAK2K,KACxB,iBAAmB3K,KAAKwQ,MAmB5B,OAhBOxQ,KAAKgtB,UAAU6W,SAClBpjC,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OCnUH,mBAAUwiB,GACrBA,EAAI6B,UAAUikB,EAAgBhqC,KAAMgqC,GACpC9lB,EAAI6B,UAAUkkB,EAAWjqC,KAAMiqC,K,sDCHpB,GAEXjqC,KAAM,QAENoa,QAJW,WAMP,MAAO,CACHsf,MAAOh4B,OAIfmJ,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,WAEXL,KAAM,CAAC8M,SAGXsV,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX+wB,MAAO,oBAGC,OAAO,GAEX79B,KAAM,CAACS,WAKfE,KAvDW,WAyDP,MAAO,CACHC,MAAM,EACNyZ,SAAU,GACVvS,MAAO,EACPkD,OAAQ,EACRqX,UAAWhtB,KAAKgL,aAIxBc,QAAS,CAEL28B,OAFK,SAEEC,GAEHnnC,MAAIuY,IAAI9Z,KAAKglB,SAAU0jB,EACnB,CAAEpqC,KAAMoqC,EAAIpqC,OAEX0B,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,eAI5BC,UAZK,SAYKF,GAENnnC,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAE1mB,KAAMoqC,EAAIpqC,OAEX0B,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,eAI5BE,OAtBK,WAuBL,WADOC,IACP,yDACQC,EAAaxnC,MAAIgB,KAAKvC,KAAKglB,SAAU,CACrC1mB,KAAM0B,KAAKgL,aAGXg+B,EAASznC,MAAIoQ,KAAK3R,KAAKglB,SAAU,QAE9B+jB,IACHA,EAAaxnC,MAAIyG,MAAMghC,IAG3B,IAAIC,EAAa,kBAAM,EAAKJ,OAAOC,IAEnC,IAAOC,EACH,OAAOjkC,MAAIiQ,MAAMk0B,EAAY,KAG5BF,EAAWzqC,OAAS0B,KAAKgtB,WAAe8b,GAI7C9oC,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAY+b,EAAWzqC,OAGpCs6B,UAhDK,SAgDK55B,GAEDgB,KAAKgtB,YAAchuB,GAIxBgB,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYhuB,KAK7B4M,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B6M,QAzIW,WA2IP7L,KAAKuL,MAAO,EACZvL,KAAK6oC,QAAO,IAGhB1b,QA/IW,WAiJP,IAAI1a,EAAQlS,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAK,aAC/BkQ,QAELzS,KAAKyS,MAAQA,EAAQ,EAAI,EAAIA,EAE7B,IAAIkD,EAASpV,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAK,aAChCoT,OAAO,OAAQ3V,KAAKM,KAEzBN,KAAK2V,OAASA,EAAS,EAAI,EAAIA,GAGnCuzB,sBA5JW,WA8JP,IAAIC,EAAY,iBAAUnpC,KAAKyS,MAAQ,IAAvB,2BACEzS,KAAK2V,QAAU3V,KAAKyS,MAAQ,KAD9B,OAGhB,OACI,mCAAW,oBAAX,MAAsC,CAAE02B,cAAxC,OAMRC,aAxKW,WA0KP,GAAKppC,KAAKglB,SAASvgB,QAAU,EACzB,OAAO,KAIX,IAAIukC,EAASznC,MAAIoQ,KAAK3R,KAAKglB,SAAU,QAEjCqkB,EAAO9nC,MAAI0D,KAAK1D,MAAIf,KAAKwoC,EAAOvkC,SAAS,SAACikC,EAAK3/B,GAC/C,OAAOigC,EAAOjgC,GAAOiB,KAAK,eAAnBg/B,MAGX,OACI,mCAAW,kBAAX,CACK,CAACK,EAAMrpC,KAAKgK,KAAK,wBAAVhK,OAKpB8R,WA5LW,WA8LP,OACI,mCAAW,gBAAX,CACM9R,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,aAKrCC,OArMW,WAuMP,IAAI7R,EAAY,CACZ,SACA,WAAaT,KAAKwQ,KAClB,WAAaxQ,KAAK2K,MAOtB,OAJK3K,KAAA,OACDS,EAAUgB,KAAK,WAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,OCpNH,GAEX1B,KAAM,YAENqU,OAAQ,CAEJqlB,MAAO,CACHnlB,aAASnL,IAKjBgR,QAZW,WAcP,MAAO,CACHuf,UAAWj4B,OAInBmJ,MAAO,CAEHoa,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGXnZ,KAAM,oBAGE,MAAO,WAEXqM,KAAM,CAAC8M,SAGX2L,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGX9F,KAAM,oBAGE,OAAO,GAEXhH,KAAM,CAACyE,SAGX2d,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGXk+B,QAAS,oBAGD,OAAO,GAEX3+B,KAAM,CAACS,UAGXm+B,KAAM,oBAGE,OAAO,GAEX5+B,KAAM,CAACS,WAMfU,QAAS,CAEL8sB,UAFK,WAID54B,KAAKg4B,MAAMY,UAAU54B,KAAK1B,QAKlCgN,KAzFW,WA2FP,MAAO,CACHuG,KAAM,KAAMtG,MAAM,IAI1ByI,YAhGW,WAkGPhU,KAAKg4B,MAAMyQ,OAAOzoC,OAGtBmU,cArGW,WAuGPnU,KAAKg4B,MAAM4Q,UAAU5oC,OAGzBwpC,iBA1GW,WA4GP,OAAOxpC,KAAKqS,OAAO+Q,MAAUpjB,KAAKojB,KAK9B,mCAAW,oBAAX,CACMpjB,KAAKqS,OAAO+Q,MAAQpjB,KAAKqS,OAAO+Q,QAAU,iCAAUpjB,KAAKojB,MAAf,QALzC,MAUfqmB,kBAvHW,WAyHP,OACI,mCAAW,qBAAX,CACMzpC,KAAKqS,OAAOkR,OAASvjB,KAAKqS,OAAOkR,SAAY,mCAAOvjB,KAAKujB,WAKvE6lB,aAhIW,WAiIX,WACQ3oC,EAAY,CACZ,eAGCT,KAAKg4B,MAAMhL,YAAchtB,KAAK1B,MAC/BmC,EAAUgB,KAAK,YAGnB,IAAI0H,EAAQ,CACRsU,QAAS,kBAAM,EAAKmb,UAAU,EAAKt6B,QAGvC,OACI,wDAAYmC,GAAe0I,GAA3B,CACMnJ,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,MAKdsS,OAtJW,WAwJP,IAAIR,EAAa9R,KAAKg4B,MAAMhL,YAAchtB,KAAK1B,KAU/C,GARK0B,KAAKg4B,MAAMhL,YAAchtB,KAAK1B,MAAQ0B,KAAKupC,OAC5Cz3B,EAAa9R,KAAKuL,MAGjBvL,KAAKg4B,MAAMhL,YAAchtB,KAAK1B,MAAQ0B,KAAKspC,UAC5Cx3B,GAAa,IAGVA,EACH,OAAO,KAGX9R,KAAKuL,MAAO,EAEZ,IAII3I,EAAQ,GAMZ,GAJK5C,KAAKg4B,MAAMhL,YAAchtB,KAAK1B,OAC/BsE,EAAMysB,QAAU,QAGfrvB,KAAKqS,OAAO2N,IACb,OAAOhgB,KAAKqS,OAAO2N,IAAI,CAAEpd,UAG7B,IAAI+2B,EAAU,MAMd,OAJO35B,KAAK+sB,UAAc/sB,KAAKg4B,MAAMjL,WACjC4M,EAAU3Q,2BAAiB,eAGxBC,YAAE0Q,EAAS,CAAEzQ,MApBJ,CACZ,eAmBkCtmB,SAAS5C,KAAKqS,UC3L7C,mBAAUmQ,GACrBA,EAAI6B,UAAUqlB,EAAKprC,KAAMorC,GACzBlnB,EAAI6B,UAAUslB,EAASrrC,KAAMqrC,K,sDCHlB,GAEXrrC,KAAM,QAENoa,QAJW,WAMP,MAAO,CACHkxB,MAAO5pC,OAIfmJ,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGXgyB,KAAM,oBAGE,MAAO,IAEXl/B,KAAM,CAACkN,QAGXrH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,UAKfnM,KA/CW,WAiDP,MAAO,CACHC,MAAM,EAAOyZ,SAAU,GAAIgI,UAAWhtB,KAAKgL,aAInDc,QAAS,CAELg+B,OAFK,SAEEpB,GAEHnnC,MAAIuY,IAAI9Z,KAAKglB,SAAU0jB,EACnB,CAAEnlB,MAAOmlB,EAAInlB,QAEZvjB,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,eAI5BoB,UAZK,SAYKrB,GAENnnC,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAEzB,MAAOmlB,EAAInlB,QAEZvjB,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,gBAMhC/8B,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B6M,QAzFW,WA2FP7L,KAAKuL,MAAO,GAGhB+G,OA9FW,WAoGP,OACI,mCALY,CACZ,WAIA,CACMtS,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCtG1B,GAEX/T,KAAM,YAENqU,OAAQ,CAEJi3B,MAAO,CACH/2B,aAASnL,IAKjByB,MAAO,CAEHoa,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGX2L,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,OAAQ,GAEZA,KAAM,CAAC8M,OAAQrI,SAGnB46B,MAAO,oBAGC,OAAO,GAEXr/B,KAAM,CAAC8M,OAAQrI,SAGnBoB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,UAKfzD,YAxDW,WA0DFhU,KAAK4pC,OACN5pC,KAAK4pC,MAAME,OAAO9pC,OAI1BmU,cA/DW,WAiEFnU,KAAK4pC,OACN5pC,KAAK4pC,MAAMG,UAAU/pC,OAI7B+1B,WAtEW,WAwEP,OAAKjxB,MAAIgF,QAAQ9J,KAAKojB,MACX,KAIP,iCAAUpjB,KAAKojB,MAAf,OAIRoK,YAjFW,WAmFP,OACI,mCAAOxtB,KAAKqS,OAAL,QAAsBrS,KAAKqS,OAAL,UAAwBrS,KAAKujB,SAIlEjR,OAxFW,WA0FP,IAAI9B,EAAOxQ,KAAKwQ,KAEXxQ,KAAK4pC,QACNp5B,EAAOxQ,KAAK4pC,MAAMp5B,MAGtB,IAAI/P,EAAY,CACZ,cACA,gBAAkB+P,EAFN,GAchB,OARoB,IAAfxQ,KAAK2K,MACNlK,EAAUgB,KAAK,sBAAwBzB,KAAKgqC,QAG5B,IAAfhqC,KAAK2K,MACNlK,EAAUgB,KAAK,sBAAwBzB,KAAK2K,MAI5C,mCAAYlK,GAAZ,CACK,CAACT,KAAKgK,KAAK,aAAVhK,GAA2BA,KAAKgK,KAAK,cAAVhK,QC/G9B,mBAAUwiB,GACrBA,EAAI6B,UAAU4lB,EAAK3rC,KAAM2rC,GACzBznB,EAAI6B,UAAU6lB,EAAS5rC,KAAM4rC,K,sDCHlB,GAEX5rC,KAAM,YAENoa,QAJW,WAMP,MAAO,CACHyxB,UAAWnqC,OAInBmJ,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGXkV,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,UAKfnM,KA/CW,WAiDP,MAAO,CACHC,MAAM,EAAOyZ,SAAU,GAAIgI,UAAWhtB,KAAKgL,aAInDc,QAAS,CAEL28B,OAFK,SAEEC,GAEHnnC,MAAIuY,IAAI9Z,KAAKglB,SAAU0jB,EACnB,CAAEpqC,KAAMoqC,EAAIpqC,OAEX0B,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,eAI5BC,UAZK,SAYKF,GAENnnC,MAAI2B,OAAOlD,KAAKglB,SACZ,CAAE1mB,KAAMoqC,EAAIpqC,OAEX0B,KAAKuL,MACNvL,KAAK0O,UAAU1O,KAAK2oC,eAI5ByB,QAtBK,SAsBGprC,GAECuC,MAAIC,IAAIxB,KAAKgtB,UAAWhuB,KAI7BuC,MAAIuY,IAAI9Z,KAAKgtB,UAAWhuB,GAExBgB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,aAGzCqd,QAjCK,SAiCGrrC,GAEGuC,MAAIC,IAAIxB,KAAKgtB,UAAWhuB,KAI/BuC,MAAI2B,OAAOlD,KAAKgtB,UAAWhuB,GAE3BgB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,aAGzCsd,UA5CK,SA4CKtrC,GAENuC,MAAIuN,OAAO9O,KAAKgtB,UAAWhuB,GAE3BgB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,aAK7CphB,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B6M,QAtHW,WAwHP7L,KAAKuL,MAAO,GAGhB+G,OA3HW,WA6HP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAG1B,OACI,mCAAYlK,GAAZ,CACMT,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCpI1B,GAEX/T,KAAM,gBAENqU,OAAQ,CAEJw3B,UAAW,CACPt3B,aAASnL,IAKjBgR,QAZW,WAcP,MAAO,CACH6xB,cAAevqC,OAIvBmJ,MAAO,CAEHoa,MAAO,oBAGC,MAAO,IAEX5Y,KAAM,CAAC8M,SAGXnZ,KAAM,oBAGE,MAAO,WAEXqM,KAAM,CAAC8M,SAGX2L,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGX9F,KAAM,oBAGE,OAAO,GAEXhH,KAAM,CAACyE,SAGX2d,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGXk+B,QAAS,oBAGD,OAAO,GAEX3+B,KAAM,CAACS,UAGXm+B,KAAM,oBAGE,OAAO,GAEX5+B,KAAM,CAACS,WAKfU,QAAS,CAELs+B,QAFK,WAIDpqC,KAAKmqC,UAAUC,QAAQpqC,KAAK1B,OAGhC+rC,QAPK,WASDrqC,KAAKmqC,UAAUE,QAAQrqC,KAAK1B,OAGhCgsC,UAZK,WAcDtqC,KAAKmqC,UAAUG,UAAUtqC,KAAK1B,QAKtCgN,KAlGW,WAoGP,MAAO,CACHuG,KAAM,KAAMtG,MAAM,EAAOi/B,QAAS,IAI1Cx2B,YAzGW,WA2GPhU,KAAKmqC,UAAU1B,OAAOzoC,OAG1BmU,cA9GW,WAgHPnU,KAAKmqC,UAAUvB,UAAU5oC,OAG7BwpC,iBAnHW,WAqHP,OAAMxpC,KAAKqS,OAAO+Q,MAASpjB,KAAKojB,KAK5B,mCAAW,2BAAX,CACKpjB,KAAKqS,OAAO+Q,MAAQpjB,KAAKqS,OAAO+Q,QAAU,iCAAUpjB,KAAKojB,MAAf,QALxC,MAUfqmB,kBAhIW,WAkIP,OACI,mCAAW,4BAAX,CACKzpC,KAAKqS,OAAOkR,OAASvjB,KAAKqS,OAAOkR,SAAW,mCAAOvjB,KAAKujB,WAKrEknB,kBAzIW,WA2IP,OACI,mCAAW,4BAAX,CACKzqC,KAAKqS,OAAOq4B,OAAS1qC,KAAKqS,OAAOq4B,SAAW,iCAAU9sB,KAAKC,MAAMG,YAArB,SAKzDorB,aAlJW,WAmJX,WACI,IAAMppC,KAAKujB,QAAUvjB,KAAKqS,OAAOkR,MAC7B,OAAO,KAGX,IAAI9iB,EAAY,CACZ,sBAGCc,MAAIC,IAAIxB,KAAKmqC,UAAUnd,UAAWhtB,KAAK1B,OACxCmC,EAAUgB,KAAK,YAGnB,IAAI0H,EAAQ,CACRsU,QAAS,kBAAM,EAAK6sB,UAAU,EAAKhsC,OAGvC6K,YAAuB,SAACtI,GAEpB,EAAK2pC,UAEiB,IAAjB,EAAKA,UAIV,EAAKG,UAAYv0B,YAAW,WACxB,EAAKg0B,QAAQ,EAAK9rC,QACnB,OAGP6K,YAAuB,SAACtI,GAEpB,EAAK2pC,UAEiB,IAAjB,EAAKA,SAIVt0B,aAAa,EAAKy0B,aAOtB,OAJAxhC,EAAMvG,MAAQ,CACVyJ,MAAOrM,KAAK2R,KAAO,GAInB,sDAAS,SAAT,MAAyBlR,GAAe0I,GAAxC,CACKnJ,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,MAKb8R,WAzMW,WA2MP,IAIIkb,EAAYzrB,MAAI2E,MAAMlG,KAAKmqC,UAAUnd,WAEnChtB,KAAKujB,OAAUvjB,KAAKqS,OAAOkR,OAC7ByJ,EAAUvrB,KAAKzB,KAAK1B,MAGxB,IAAIwT,EAAavQ,MAAIC,IAAIwrB,EAAWhtB,KAAK1B,MAUzC,IARMiD,MAAIC,IAAIwrB,EAAWhtB,KAAK1B,OAAS0B,KAAKupC,OACxCz3B,EAAa9R,KAAKuL,OAGhBhK,MAAIC,IAAIwrB,EAAWhtB,KAAK1B,OAAS0B,KAAKspC,UACxCx3B,GAAa,IAGXA,GAAc9R,KAAKujB,MACrB,OAAO,KAGXvjB,KAAKuL,MAAO,EAEZ,IAAI3I,EAAQ,CACRyJ,MAAOrM,KAAK2R,KAAO,GAGjBpQ,MAAIC,IAAIwrB,EAAWhtB,KAAK1B,QAC1BsE,EAAMysB,QAAU,QAGpB,IAAIsK,EAAU,MAMd,OAJM35B,KAAK+sB,UAAa/sB,KAAKmqC,UAAUpd,WACnC4M,EAAU3Q,2BAAiB,eAGxBC,YAAE0Q,EAAS,CAAEzQ,MAxCJ,CACZ,oBAuCkCtmB,SAAU5C,KAAKqS,SAGzDC,OAtPW,WAwPP,MAAO,CACHtS,KAAKgK,KAAK,eAAVhK,GAA6BA,KAAKgK,KAAK,aAAVhK,MCzP1B,mBAAUwiB,GACrBA,EAAI6B,UAAUumB,EAAStsC,KAAMssC,GAC7BpoB,EAAI6B,UAAUwmB,EAAavsC,KAAMusC,K,8DCHtB,OAEXvsC,KAAM,gBAEN6K,MAAO,CAEHiX,IAAK,oBAGG,OAAO,OAIfzV,KAAM,oBAGE,OAAO,OAIfoU,QAAS,oBAGD,OAAO,KAMnBhC,SAAU,CAENuD,QAFM,WAIF,OAAOvd,MAAInE,IAAIoB,KAAKogB,IAAK,OAAQpgB,KAAKogB,MAG1C0qB,QAPM,WAWF,OAAKhmC,MAAIgF,QAAQ9J,KAAKsgB,SACX,KAGJtgB,KAAKsgB,QAAQxX,QANR,0BAMuB,QAK3CwJ,OAjDW,WAmDP,I,EAIIyN,EAAQ,GAUZ,OARAA,EAAM,GACF,iCAAM/f,KAAK2K,MAAQ1J,SAAOsJ,MAAM,SAAhC,+BAA6CvK,KAAK8qC,SAAW7pC,SAAOsJ,MAAM,UAGzEvK,KAAK+e,UACNgB,EAAM,GAAM,iCAAM/f,KAAKsgB,WAIvB,mCAfY,CACZ,oBAcA,CACI,iC,EAAMP,E,mGAAAA,EAAN,2BAAMA,WCnEP,GAEXzhB,KAAM,gBAEN6K,MAAO,CAEHiX,IAAK,oBAGG,OAAO,QAMnB9U,KAfW,WAiBP,MAAO,CACHwI,MAAM,EAAOwM,QAAS,OAI9BtM,YAtBW,WAwBAvW,OAAOstC,aACVttC,OAAOstC,WAAa,IAIjBxpC,MAAIC,IAAI/D,OAAOstC,WAAY/qC,KAAKogB,OACnCpgB,KAAKsgB,QAAUtgB,KAAKogB,MAK5BvU,QAnCW,WAqCP7L,KAAKgrC,eAGTp/B,MAAO,CAEH,IAAO,WACH5L,KAAKgrC,gBAKbl/B,QAAS,CAELk/B,YAFK,WAGL,WACI,IAAKzpC,MAAIC,IAAI/D,OAAOstC,WAAY/qC,KAAKogB,KAArC,CAMA,GAFApgB,KAAKsgB,QAAU,KAEVxb,MAAI2J,SAASzO,KAAKogB,KACnB,OAAOpgB,KAAKwgB,cAGhBjgB,MAAIgC,KAAKvC,KAAK2U,MAAMyJ,OAAO6sB,QAAO,WAK9B1pC,MAAIuY,IAAIrc,OAAOstC,WAAY,EAAK3qB,KAKhCtb,MAAIiQ,OAAM,kBAAM,EAAKjB,MAAO,IAAO,QAGvC9T,KAAKkrC,MAAO,IAGhB1qB,YA9BK,WA+BL,WACQ2qB,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,WACZ,EAAK/qB,QAAU6qB,EAAOj/B,QAG1Bi/B,EAAOG,cAActrC,KAAKogB,OAKlC9N,OA3FW,WA6FP,IAAI7R,EAAY,CACZ,mBAWJ,OARKc,MAAIC,IAAI/D,OAAOstC,WAAY/qC,KAAKogB,MACjC3f,EAAUgB,KAAK,YAGZzB,KAAK8T,MACRrT,EAAUgB,KAAK,WAIf,mCAAYhB,GAAZ,CACI,iCAAS,QAAT,IAAsBT,KAAKsgB,SAAWtgB,KAAKogB,KAA3C,U,QCxGD,mBAAUoC,GACrBA,EAAI6B,UAAUknB,IAAQjtC,KAAMitC,KAC5B/oB,EAAI6B,UAAUmnB,EAAaltC,KAAMktC,GACjChpB,EAAI6B,UAAUonB,EAAantC,KAAMmtC,GACjCjpB,EAAI6B,UAAUqnB,IAAaptC,KAAMotC,O,sDCPtB,GAEXptC,KAAM,OAEN6K,MAAO,CAEHwiC,IAAK,oBAGG,OAAO,GAEXhhC,KAAM,CAACyE,SAGXw8B,IAAK,oBAGG,OAAO,GAEXjhC,KAAM,CAACyE,SAGXy8B,KAAM,oBAGE,OAAO,IAEXlhC,KAAM,CAACyE,UAKfsJ,QAhCW,WAkCP,MAAO,CACHozB,KAAM9rC,OAIdsL,KAvCW,WAyCP,MAAO,CAAEC,MAAM,EAAOwgC,UAAW,GAAIC,QAAS,OAGlDpgC,MAAO,CAEH+/B,IAFG,WAGH,WACI7mC,MAAIiQ,OAAM,kBAAM,EAAKi3B,QAAQC,iBAAgB,MAGjDL,IAPG,WAQH,WACI9mC,MAAIiQ,OAAM,kBAAM,EAAKi3B,QAAQC,iBAAgB,OAKrDpgC,QA1DW,WA4DP7L,KAAKgsC,QAAU,IAAIE,MAAIlsC,KAAKM,IAAK,CAC7BqrC,IAAK3rC,KAAK2rC,IAAKC,IAAK5rC,KAAK4rC,IAAKC,KAAM7rC,KAAK6rC,OAG7C7rC,KAAKuL,MAAO,EAEZhK,MAAI0D,KAAKjF,KAAK+rC,WAAW,SAACI,GAAD,OAAcA,QAG3CrgC,QAAS,CAELsgC,OAFK,WAID,OAAOpsC,KAAKgsC,SAGhBK,QAPK,SAOGF,GAEJnsC,KAAKuL,KAAO4gC,IAAansC,KAAK+rC,UAAUtqC,KAAK0qC,KAKrD75B,OAnFW,WAyFP,OACI,mCALY,CACZ,UAIA,CACMtS,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cC3F1B,GAEX/T,KAAM,aAENqU,OAAQ,CAEJm5B,KAAM,CACFj5B,aAASnL,IAKjByB,MAAO,CAEHwiC,IAAK,oBAGG,OAAO,GAEXhhC,KAAM,CAACyE,SAGXw8B,IAAK,oBAGG,OAAO,GAEXjhC,KAAM,CAACyE,SAGX8J,KAAM,oBAGE,OAAO,GAEXvO,KAAM,CAACS,UAGXqF,QAAS,oBAGD,MAAO,CAAE7N,MAAO,YAEpB+H,KAAM,CAAClM,UAKf6M,KAhDW,WAkDP,MAAO,CACH/E,GAAI2C,iBAAQojC,WAAY,OAIhCxgC,QAAS,CAELygC,qBAFK,WAIDvsC,KAAKssC,WAAWE,OAAOC,YAAY,CAC/Bd,IAAK3rC,KAAK2rC,IAAKC,IAAK5rC,KAAK4rC,OAIjCc,qBATK,WAWD1sC,KAAKgG,MAAM,aAAchG,KAAKssC,WAAWE,OAAOG,cAAchB,OAC9D3rC,KAAKgG,MAAM,aAAchG,KAAKssC,WAAWE,OAAOG,cAAcf,QAGlEgB,iBAfK,WAgBL,WACQn8B,EAAU1N,MAAIoJ,OAAO,CACrBw/B,IAAKpiC,MAAG,MAAOvJ,KAAK2rC,KAAMC,IAAKriC,MAAG,MAAOvJ,KAAK4rC,KAAMp0B,UAAWxX,KAAKkZ,MACrElZ,KAAKyQ,SAED3L,MAAIgF,QAAQ9J,KAAKqS,OAAL,WACf5B,EAAQzP,KAAOhB,KAAKM,IAAIusC,WAG5B7sC,KAAKssC,WAAatsC,KAAK8rC,KAAKM,SAASU,aAAa9sC,KAAKuG,GAAIkK,GAE3DzQ,KAAKssC,WAAWE,OAAOO,YAAY,mBAC/BjoC,MAAIkoC,SAAShtC,KAAK0sC,uBAEtB1sC,KAAKssC,WAAWE,OAAOO,YAAY,aAC/B,kBAAM,EAAK/mC,MAAM,YAAa,EAAKsmC,eAEvCtsC,KAAKssC,WAAWE,OAAOO,YAAY,WAC/B,kBAAM,EAAK/mC,MAAM,UAAW,EAAKsmC,eAErCtsC,KAAKssC,WAAWE,OAAOO,YAAY,aAC/B,kBAAM,EAAK/mC,MAAM,aAAc,EAAKsmC,eAExCtsC,KAAKssC,WAAWE,OAAOO,YAAY,YAC/B,kBAAM,EAAK/mC,MAAM,aAAc,EAAKsmC,gBAG5CW,mBA3CK,SA2CcC,GACnB,WASIltC,KAAK8rC,KAAKM,SAASa,mBAAmBjtC,KAAKuG,GAAI2mC,GAC1CC,MATgB,WACjB,EAAKrB,KAAKM,SAASH,aAAa,KAAM,EAAKH,KAAKD,SAGjC,WACf,EAAKuB,OAAO,EAAK7iC,MAAM,sBAAuB,eAS1DqB,MAAO,CAEH+/B,IAFG,WAIC3rC,KAAKusC,wBAGTX,IAPG,WASC5rC,KAAKusC,yBAKbv4B,YAhIW,WAkIPhU,KAAK8rC,KAAKO,QAAQrsC,KAAK4sC,mBAG3Bt6B,OArIW,WAuIP,OACI,mCAAW,kBAAX,CACMtS,KAAKqS,OAAL,YCxIH,mBAAUmQ,GACrBA,EAAI6B,UAAU6nB,EAAI5tC,KAAM4tC,GACxB1pB,EAAI6B,UAAUgpB,EAAU/uC,KAAM+uC,K,u/BCH5BC,E,WAmBF,WAAY/uB,GACZ,IADkB5T,EAClB,uDADyB,UAAW8F,EACpC,uDAD8C,GAC9C,sBAlBK,MAkBL,cAhBO,IAgBP,cAdO,IAcP,cAZO,IAYP,iBAVU,CACN88B,YAAa3vB,KAAKC,MAAMgE,KACxB2rB,cAAe5vB,KAAKC,MAAMgE,KAC1B4rB,YAAa7vB,KAAKC,MAAM6D,QACxBgsB,YAAa9vB,KAAKC,MAAM8D,QACxBgsB,WAAY/vB,KAAKC,MAAM+D,OACvBgsB,SAAUhwB,KAAKC,MAAMgE,OAKrB7hB,KAAKue,KAAOA,EACZve,KAAK2K,KAAOA,EAEZ3K,KAAKyQ,QAAU1N,MAAIoJ,OAAOnM,KAAKyQ,QAASA,GAExCzQ,KAAKsS,S,4CAKL,OAAOvP,MAAInE,IAAIoB,KAAKyQ,QAChB,OAASqN,MAAIC,QAAQ/d,KAAK2K,S,+BAIlC,WADO3I,EACP,uDADYrB,SAASC,KAEjBZ,KAAKgC,GAAGtB,SAASsB,GAEjBzB,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAG,WAAW,SAAC5C,GACd,KAAhBA,EAAMkZ,OACP,EAAK7W,WAEV,WAEHkT,YAAW,kBAAM,EAAKpU,GAAGmD,SAAS,cAAa,O,+BAK/C5E,MAAIgC,KAAK5B,SAASC,MAAMuD,IAAI,UAAW,KAAM,WAE7CnE,KAAKgC,GAAGpD,IAAI,GAAGsE,W,+BAInB,WACQzC,EAAY,CACZ,gBACA,kBAAoBT,KAAK2K,KACzB,kBAAoBkjC,EAAMr9B,MAG9BxQ,KAAKgC,GAAKzB,MAAIC,KAAK,MAAO,CACtBC,UAAWA,EAAUkB,KAAK,OAG9B,IAAImsC,EAAWvtC,MAAIC,KAAK,MAAO,CAC3BC,UAAW,mBAAoBstC,QAAS,kBAAM,EAAK7qC,YAGvD4qC,EAASrwB,QAAU,WACf,EAAKva,UAGT4qC,EAASptC,SAASV,KAAKgC,IAEvB,IAAIqB,EAAQ9C,MAAIC,KAAK,MAAO,CACxBC,UAAW,YAGf4C,EAAM3C,SAASV,KAAKgC,IAEpB,IAAIohB,EAAO7iB,MAAIC,KAAK,MAAO,CACvBC,UAAW,kBAGf2iB,EAAK1iB,SAAS2C,GAEC9C,MAAIC,KAAK,OAAQ,CAC5BC,UAAWT,KAAKguC,YAGXttC,SAAS0iB,GAEP7iB,MAAIC,KAAK,MAAO,CACvBC,UAAW,kBAGVO,KAAKhB,KAAKue,MAAM7d,SAAS2C,O,KAKjBwqC,E,kFAUN/oC,MAAIgF,QAAQ+jC,EAAMI,QACrBJ,EAAMI,MAAM/qC,SAFpB,2BADiBkH,EACjB,yBADiBA,EACjB,gBASI,OAJAyjC,EAAMI,MAAN,EAAkBX,EAAcljC,GAEhCyjC,EAAMI,MAAM3a,SAELua,M,OAlBMA,E,QAEF,S,EAFEA,E,OAIHjwB,KAAKuE,SAASE,Y,EAJXwrB,E,QAMF,MC9GJ,mBAAUrrB,GACrBA,EAAIhQ,OAAOkQ,iBAAiBmrB,EAAM9c,OAAStzB,OAAOowC,EAAM9c,OAAS8c,EAAM1mC,S,u/BCDrE+mC,E,WAoBF,WAAY3vB,GACZ,IADkB5T,EAClB,uDADyB,UAAW8F,EACpC,uDAD8C,GAC9C,sBAnBK,MAmBL,cAjBO,IAiBP,cAfO,IAeP,cAbO,IAaP,iBAXU,CACN09B,SAAU,KACVZ,YAAa3vB,KAAKC,MAAMgE,KACxB2rB,cAAe5vB,KAAKC,MAAMgE,KAC1B4rB,YAAa7vB,KAAKC,MAAM6D,QACxBgsB,YAAa9vB,KAAKC,MAAM8D,QACxBgsB,WAAY/vB,KAAKC,MAAM+D,OACvBgsB,SAAUhwB,KAAKC,MAAMgE,OAKrB7hB,KAAKue,KAAOA,EACZve,KAAK2K,KAAOA,EAEZ3K,KAAKyQ,QAAU1N,MAAIoJ,OAAOnM,KAAKyQ,QAASA,GAExCzQ,KAAKsS,S,4CAKL,OAAOvP,MAAInE,IAAIoB,KAAKyQ,QAChB,OAASqN,MAAIC,QAAQ/d,KAAK2K,S,+BAIlC,WADO3I,EACP,uDADYrB,SAASC,KAMjB,OAJAZ,KAAKgC,GAAGtB,SAASsB,GAEjBoU,YAAW,kBAAM,EAAKpU,GAAGmD,SAAS,cAAa,KAExCnF,O,+BAOP,OAFAA,KAAKgC,GAAGpD,IAAI,GAAGsE,SAERlD,O,+BAIX,WACQS,EAAY,CACZ,iBACA,mBAAqBT,KAAK2K,MAG9B3K,KAAKgC,GAAKzB,MAAIC,KAAK,MAAO,CACtBC,UAAWA,EAAUkB,KAAK,KAAMosC,QAAS,kBAAM,EAAK7qC,YAIxD,IAAIkgB,EAAO7iB,MAAIC,KAAK,MAAO,CACvBC,UAAW,yBAGf2iB,EAAK1iB,SAASV,KAAKgC,IAEJzB,MAAIC,KAAK,OAAQ,CAC5BC,UAAWT,KAAKguC,YAGXttC,SAAS0iB,GAEP7iB,MAAIC,KAAK,MAAO,CACvBC,UAAW,yBAGVO,KAAKhB,KAAKue,MAAM7d,SAASV,KAAKgC,Q,KAKtBorC,E,kFAWjB,2BADiBhjC,EACjB,yBADiBA,EACjB,gBACI,IAAIpG,EAAMopC,EAAO/tC,OAAP,MAAA+tC,EAAM,MAAQ1lC,GAAR,OAAsB0C,IAElCgkC,EAAUhB,EAAOiB,aASrB,OANAjB,EAAOkB,cAActqC,GAAKsvB,OAAO8a,GAGjCh4B,YAAW,kBAAMg3B,EAAOlqC,OAAOc,KAC3BopC,EAAOkB,cAActqC,GAAKyM,QAAQ09B,UAE/BnqC,I,+BAIX,QADcA,EACd,uDADoBkF,iBACpB,mBAD+BkB,EAC/B,iCAD+BA,EAC/B,kBAGI,OAFAgjC,EAAOkB,cAActqC,GAArB,EAAgCkqC,EAAgB9jC,GAEzCpG,I,6BAGGA,QAEyB0D,IAA9B0lC,EAAOkB,cAActqC,KAK1BopC,EAAOkB,cAActqC,GAAKd,gBAGnBkqC,EAAOkB,cAActqC,M,mCAKrBvG,OAAO43B,SACV53B,OAAO43B,OAAS,KAGpB,IAAIzyB,EAAQ,CACR,UAAWnF,OAAO43B,OAAS,KAG3B50B,EAAY,CACZ,uBACA,yBAA2BT,KAAKwQ,KAChC,yBAA2BxQ,KAAK+yB,UASpC,OANmD,IAA9CxyB,MAAIgC,KAAK,yBAAyB8U,SACnC9W,MAAIC,KAAK,MAAO,CAAEC,UAAWA,EAAUkB,KAAK,OAAQjB,SAASC,SAASC,MAG1EL,MAAIgC,KAAK,yBAAyBO,IAAIF,GAE/BrC,MAAIgC,KAAK,6B,OApEH6qC,E,QAEF,U,EAFEA,E,OAIHxvB,KAAKuE,SAASE,Y,EAJX+qB,E,WAMCxvB,KAAKuE,SAASG,gB,EANf8qB,E,gBAQM,IC7FZ,mBAAU5qB,GACrBA,EAAIhQ,OAAOkQ,iBAAiB6rB,EAAYxd,OAAStzB,OAAO8wC,EAAYxd,OAASwd,EAAYpnC,S,+CCH9E,GAEX7I,KAAM,aAEN6K,MAAO,CAEHqH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXojC,OAAQ,oBAGA,OAAO,GAEX7jC,KAAM,CAACS,WAKfkH,OAxCW,WA0CP,IAAI7R,EAAY,CACZ,eACA,iBAAmBT,KAAKwQ,KACxB,iBAAmBxQ,KAAK2K,MAW5B,OARK3K,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAGdzB,KAAKwuC,QACN/tC,EAAUgB,KAAK,YAIf,mCAAYhB,GAAZ,CACI,mCAAW,uBAAX,MAGA,mCAAW,sBAAX,CACMT,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,gBC5D9B,mBAAUmQ,GACrBA,EAAI6B,UAAUoqB,EAAUnwC,KAAMmwC,K,8KCDnB,OAEXnwC,KAAM,aAENoa,QAJW,WAMP,MAAO,CACHg2B,WAAY1uC,OAIpBmJ,MAAO,CAEHsH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAAClM,SAGXsuB,SAAU,oBAGF,OAAO,GAEXpiB,KAAM,CAACS,UAGXujC,QAAS,oBAGD,OAAO,GAEXhkC,KAAM,CAACS,UAGXwjC,YAAa,oBAGL,OAAO,GAEXjkC,KAAM,CAACS,UAGX8H,UAAW,oBAGH,OAAO,GAEXvI,KAAM,CAACS,UAGX+H,UAAW,oBAGH,OAAO,GAEXxI,KAAM,CAACS,UAGXgI,QAAS,oBAGD,OAAO,IAEXzI,KAAM,CAACyE,SAGXiE,QAAS,oBAGD,OAAO,IAEX1I,KAAM,CAACyE,SAGXmE,UAAW,oBAGH,OAAO,IAEX5I,KAAM,CAACyE,SAGXy/B,UAAW,oBAGH,MAAO,uBAMnB9xB,SAAU,CAENC,MAFM,WAGF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAPM,WAQF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAZM,WAaF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QAjBM,WAkBF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KAtHW,WAwHP,MAAO,CACHwjC,QAAQ,IAIhB96B,YA7HW,WA+HPhU,KAAK+uC,uBAGTljC,QAlIW,WAoIP7L,KAAKgvC,kBACLhvC,KAAKivC,iBAEL,IAAIC,EAAU,CACVA,SAAS,EAAMlrC,IAAKhE,KAAKoZ,EAAEpV,KAG/BD,QAAMxE,KAAK,oBACPS,KAAKqmB,SAAUrmB,KAAKoZ,EAAEpV,KAE1BD,QAAMxE,KAAK,iBACPS,KAAKmvC,SAAUnvC,KAAKoZ,EAAEpV,KAE1BzD,MAAIgC,KAAK9E,QAAQgG,GAAG,SAChBzD,KAAKqmB,SAAU6oB,GAEnB3uC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAAShJ,GAAG,SAC5BzD,KAAKovC,SAAUF,IAGvB/hB,QAxJW,YA0JFntB,KAAKqvC,cAAgBrvC,KAAKsvC,cAC3B/uC,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,YAIpCgP,cA/JW,WAiKPnU,KAAKuvC,oBACLvvC,KAAKwvC,mBAEL,IAAIN,EAAU,CACVA,SAAS,EAAMlrC,IAAKhE,KAAKoZ,EAAEpV,KAG/BD,QAAMK,OAAO,oBACTpE,KAAKoZ,EAAEpV,KAEXD,QAAMK,OAAO,iBACTpE,KAAKoZ,EAAEpV,KAEXzD,MAAIgC,KAAK9E,QAAQ0G,IAAI,SACjB,KAAM+qC,GAEV3uC,MAAIgC,KAAKvC,KAAKM,KAAK6D,IAAI,SACnB,KAAM+qC,IAGdpjC,QAAS,CAELuJ,SAFK,WAGL,WADSC,EACT,uDADa,EAAGjT,EAChB,uDADoB,EAAG0S,EACvB,uDAD+B,EAE3BjQ,MAAIiQ,OAAM,kBAAM,EAAKQ,WAAWD,EAAGjT,KAAI0S,IAG3CQ,WAPK,WAQL,IADWD,EACX,uDADe,EAAGjT,EAClB,uDADsB,EAEbrC,KAAK2U,MAAMlI,UACZzM,KAAK2U,MAAMlI,QAAQwH,UAAY5R,EAC/BrC,KAAK2U,MAAMlI,QAAQgjC,WAAan6B,IAIxCZ,eAfK,SAeUI,GACf,WADyBC,EACzB,uDADiC,EAE7BjQ,MAAIiQ,OAAM,kBAAM,EAAK26B,iBAAiB56B,KAAWC,IAGrD26B,iBApBK,SAoBY56B,GAEb,IAAIxU,EAAMC,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAKuS,GAE9Bb,EAAYjU,KAAK2U,MAAMlI,QACtBwH,UAED07B,EAAc3vC,KAAK2U,MAAMlI,QACzB9F,aAEAhE,EAAYrC,EAAIqC,UAAU3C,KAAKM,KAE9BqC,EAAYsR,IACbjU,KAAK2U,MAAMlI,QAAQwH,UAAYtR,GAG9BA,EAAYrC,EAAIgC,UAAY2R,EAAY07B,IACzC3vC,KAAK2U,MAAMlI,QAAQwH,UAAYtR,EAAYgtC,EAAcrvC,EAAIgC,UAGjE,IAAImtC,EAAazvC,KAAK2U,MAAMlI,QACvBgjC,WAEDG,EAAa5vC,KAAK2U,MAAMlI,QACxBwoB,YAEA4a,EAAavvC,EAAIuvC,WAAW7vC,KAAKM,KAEhCuvC,EAAaJ,IACdzvC,KAAK2U,MAAMlI,QAAQgjC,WAAaI,GAG/BA,EAAavvC,EAAImS,SAAWg9B,EAAaG,IAC1C5vC,KAAK2U,MAAMlI,QAAQgjC,WAAaI,EAAaD,EAAatvC,EAAImS,UAItEs8B,oBAzDK,WA2DD,IAAIe,EAAOvvC,MAAIC,KAAK,MAAO,CAAEC,UAAW,CAAC,sBACpCC,SAASC,SAASC,MAAMhC,IAAI,GAEjC2B,MAAIC,KAAK,OAAOE,SAASovC,GAEzB9vC,KAAA,OAAc8vC,EAAK7a,cAAgB6a,EAAKC,aACpCD,EAAKnpC,eAAiBmpC,EAAKl6B,aAE/Bk6B,EAAK5sC,UAGT8sC,kBAtEK,WAwED,IAAKhwC,KAAA,SAAeA,KAAK4uC,YAAzB,CAUA,IAAIe,EAAc3vC,KAAK2U,MAAMlI,QACzB9F,cAAgB,EAEf3G,KAAA,SAAiBA,KAAK4uC,cACvBe,GAAe,IAOnB,IAAI5a,EAAc/0B,KAAK2U,MAAMlI,QACxBqJ,cAAgB,EAEjBm6B,EAAgB,EAqBpB,GAnBA1vC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAASyC,SAASjK,MAAK,SAACjD,GACxCiuC,GAAiB1vC,MAAIgC,KAAKP,GAAIM,UAAY,KAGzCtC,KAAA,SAAiBA,KAAK4uC,cACvB7Z,GAAe,IAGdkb,EAAgBlb,IACjBA,EAAckb,KAOFN,IAAgB3vC,KAAK2vC,aACjC5a,IAAgB/0B,KAAK+0B,aAEzB,CAIA/0B,KAAK2vC,YAAcA,EACnB3vC,KAAK+0B,YAAcA,EAEnB,IAAIzyB,EAAUqtC,EAAc5a,EACtB4a,EAEFO,EAAY3gC,KAAKC,IAAIlN,EAAQ,IAE7B6tC,EAAY5gC,KAAK2F,KAAMy6B,EAAc5a,GACpCA,EAAc4a,IAEnB3vC,KAAKowC,aAAeD,GAAaD,EAAY5tC,GACvCtC,KAAKoT,SAAW+8B,EAEtB5vC,MAAIgC,KAAKvC,KAAK2U,MAAM07B,MAAMvtC,IAAI,CAC1BR,QAAStC,KAAKkwC,UAAY3gC,KAAK2F,KAAKg7B,IAAc,OAatD,IAAII,EAAYX,GAAeA,EAAc5a,EAExCub,GACD/vC,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,cAGzBmrC,GACH/vC,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,cAOnCpF,KAAKuwC,yBAGTC,iBAtKK,WAwKD,IAAKxwC,KAAA,SAAeA,KAAK4uC,YAAzB,CAUA,IAAIgB,EAAa5vC,KAAK2U,MAAMlI,QACxBwoB,aAAe,EAEdj1B,KAAA,SAAiBA,KAAK4uC,cACvBgB,GAAc,IAOlB,IAAI5a,EAAah1B,KAAK2U,MAAMlI,QACvBgkC,aAAe,EAEhBC,EAAe,EAqBnB,GAnBAnwC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAASyC,SAASjK,MAAK,SAACjD,GACxC0uC,GAAgBnwC,MAAIgC,KAAKP,GAAIyQ,SAAW,KAGvCzS,KAAA,SAAiBA,KAAK4uC,cACvB5Z,GAAc,IAGb0b,EAAe1b,IAChBA,EAAa0b,KAODd,IAAe5vC,KAAK4vC,YAChC5a,IAAeh1B,KAAKg1B,YAExB,CAIAh1B,KAAK4vC,WAAaA,EAClB5vC,KAAKg1B,WAAaA,EAElB,IAAIviB,EAASm9B,EAAa5a,EACpB4a,EAEFe,EAAWphC,KAAKC,IAAIiD,EAAO,IAE3BoV,EAAWtY,KAAK2F,KAAM06B,EAAa5a,GAClCA,EAAa4a,IAElB5vC,KAAK4wC,YAAc/oB,GAAY8oB,EAAWl+B,GACpCzS,KAAKqT,SAAWwU,EAEtBtnB,MAAIgC,KAAKvC,KAAK2U,MAAMk8B,MAAM/tC,IAAI,CAC1B2P,OAAQzS,KAAK2wC,SAAWphC,KAAK2F,KAAKy7B,IAAa,OAanD,IAAIG,EAAYlB,GAAcA,EAAa5a,EAEtC8b,GACDvwC,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,cAGzB2rC,GACHvwC,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,cAOnCpF,KAAKuwC,yBAGTA,oBAtQK,WAuQL,IADoBnb,EACpB,uDAD6B,GAEzB,IAAKp1B,KAAA,SAAeA,KAAK4uC,YAAzB,CAIOxZ,EAAOvyB,MACVuyB,EAAOvyB,IAAM7C,KAAK2U,MAAMlI,QAAQwH,WAG7BmhB,EAAOZ,OACVY,EAAOZ,KAAOx0B,KAAK2U,MAAMlI,QAAQgjC,YAGrC,IAAIsB,EAAUxhC,KAAK2F,KAAMlV,KAAK2vC,YAAc3vC,KAAK+0B,YAC7CK,EAAOvyB,IAAM7C,KAAKowC,cAAgB,EAE/BpwC,KAAK+wC,SAAWA,IAAY/wC,KAAK+wC,UAEpCxwC,MAAIgC,KAAKvC,KAAK2U,MAAM07B,MAAMvtC,IAAI,CAC1BqmC,UAAW,cAAF,OAAgB4H,EAAhB,uBAGb/wC,KAAK+wC,QAAUA,GAGnB,IAAIC,EAAYzhC,KAAK2F,KAAMlV,KAAK4vC,WAAa5vC,KAAKg1B,WAC9CI,EAAOZ,KAAOx0B,KAAK4wC,aAAe,EAE/B5wC,KAAKgxC,UAAYA,IAAahxC,KAAKgxC,WAEtCzwC,MAAIgC,KAAKvC,KAAK2U,MAAMk8B,MAAM/tC,IAAI,CAC1BqmC,UAAW,cAAF,OAAgB6H,EAAhB,uBAGbhxC,KAAKgxC,SAAWA,KAIxB5jB,YA7SK,WA+SMptB,KAAKixC,eACRjxC,KAAKixC,aAAe1wC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAASF,SAGrD,IAAIjK,EAAStC,KAAKixC,aACb3uC,SAEEtC,KAAKkxC,gBACRlxC,KAAKkxC,cAAgB3wC,MAAIgC,KAAKvC,KAAKM,MAGvC,IAAI7C,EAASuC,KAAKkxC,cACbnc,cAEL,GAAKzyB,IAAWtC,KAAKqvC,cAAgB5xC,IAAWuC,KAAKmxC,YAArD,CAIAnxC,KAAKmxC,YAAc1zC,EAEduC,KAAKkT,WACNlT,KAAKgwC,oBAGJvyC,IACDuC,KAAKqvC,aAAe/sC,GAGxB,IAAIM,EAAQ,CACRN,OAASA,EAAS,EAAK,MAG3B,IAAOtC,KAAK+sB,SACR,OAAOjoB,MAAIiQ,MAAM/U,KAAK+V,aAAc,KAGxCxV,MAAIgC,KAAKvC,KAAK2U,MAAMy8B,QAAQ7kC,QAAQzJ,IAAIF,KAG5CosC,gBAtVK,WAwVDhvC,KAAKqxC,cAAgB/8B,YAAYtU,KAAKotB,YAClC,IAAOptB,KAAKuT,YAGpBg8B,kBA5VK,WA8VD/6B,cAAcxU,KAAKqxC,gBAGvBC,WAjWK,WAmWD,IAAKtxC,KAAKuxC,YAAV,CAIA,IAAI9+B,EAAQlS,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAC3BF,QAAQkG,QAEThV,EAAS8C,MAAIgC,KAAKvC,KAAKM,KACtB00B,aAEL,GAAKviB,IAAUzS,KAAKsvC,YAApB,CAIKtvC,KAAKmT,WACNnT,KAAKwwC,mBAGJ/yC,IACDuC,KAAKsvC,YAAc78B,GAGvB,IAAI7P,EAAQ,CACR6P,MAAOA,EAAQ,MAOnB,GAJKzS,KAAK2uC,SACN3uC,KAAKmvC,YAGFnvC,KAAK+sB,SACR,OAAOjoB,MAAIiQ,MAAM/U,KAAK+V,aAAc,KAGxCxV,MAAIgC,KAAKvC,KAAK2U,MAAMy8B,QAAQ7kC,QAAQzJ,IAAIF,MAG5CqsC,eAxYK,WA0YDjvC,KAAKwxC,aAAel9B,YAAYtU,KAAKsxC,WACjC,IAAOtxC,KAAKuT,YAGpBi8B,iBA9YK,WAgZDh7B,cAAcxU,KAAKwxC,eAGvBpC,SAnZK,SAmZIvuC,GACT,WACQu0B,EAAS,CACTvyB,IAAK7C,KAAK2U,MAAMlI,QAAQwH,UACxBugB,KAAMx0B,KAAK2U,MAAMlI,QAAQgjC,YAO7BzvC,KAAK0O,WAJc,WACf,EAAK1I,MAAM,eAAgBovB,EAAOvyB,IAAKuyB,EAAOZ,SAIlDx0B,KAAKuwC,oBAAoBnb,IAG7Brf,aAlaK,SAkaQlV,GAET,IAAIyB,EAAS/B,MAAIgC,KAAKvC,KAAKM,KAAKgC,SAC5BmQ,EAAQlS,MAAIgC,KAAKvC,KAAKM,KAAKmS,QAExBnQ,GAAYmQ,KAIdzS,KAAKqvC,cAAgBrvC,KAAKsvC,cAC3B/uC,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,YAGhCnF,KAAKgG,MAAM,aAAc1D,EAAQmQ,EAAOzS,KAAKM,OAGjD+lB,SAlbK,WAobMrmB,KAAK2uC,UAIZpuC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SACfF,QAAQzJ,IAAI,MAEjBoT,aAAalW,KAAKuxC,aAElBvxC,KAAKuxC,YAAcn7B,WACfpW,KAAKmvC,SAAU,KAEnB5uC,MAAIgC,KAAKvC,KAAKM,KAAK+E,KAAK,aAG5B8pC,SAncK,WAqcD,GAAOnvC,KAAK2uC,SAAa3uC,KAAK2U,MAAMlI,QAApC,CAIA,IAAIglC,EAASlxC,MAAIgC,KAAKvC,KAAK2U,MAAMlI,SAC5BF,QAEDjK,EAASmvC,EAAOC,QAAO,WACvB,OAAOD,EAAO37B,kBAGbxT,IAAWtC,KAAKqvC,cACjBoC,EAAO3uC,IAAI,CAAER,OAAQA,EAAS,OAGlC,IAAImQ,EAAQg/B,EAAOC,QAAO,WACtB,OAAOD,EAAOhB,iBAGbh+B,IAAUzS,KAAKsvC,aAChBmC,EAAO3uC,IAAI,CAAE2P,MAAOA,EAAQ,cAGzBzS,KAAKuxC,cAGhBI,cA/dK,SA+dS9wC,GAEV,OAAOb,KAAKgd,MAILnc,EAAM+wC,QAAQ,IAAM/wC,EAAMgxC,eAAe,GAHrChxC,GAMfixC,gBAxeK,SAweWjxC,GAELU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAI7BlZ,EAAM2b,kBAENjc,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKod,UACvBpd,KAAK+xC,gBAAiB/xC,KAAKoZ,EAAEpV,KAEjCzD,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKqd,QACvBrd,KAAKgyC,cAAehyC,KAAKoZ,EAAEpV,KAE/BhE,KAAKiU,UAAYjU,KAAK2U,MAAMlI,QACvBwH,UAELjU,KAAKoC,QAAUpC,KAAK2xC,cAAc9wC,GAC7BuB,UAGT2vC,gBA7fK,SA6fWlxC,GAEZ,IAAIuB,EAAUpC,KAAK2xC,cAAc9wC,GAC5BuB,QAEDS,EAAO7C,KAAK2vC,YAAc3vC,KAAK+0B,YAC/B/0B,KAAKiU,UAAYjU,KAAKowC,YAEtBz6B,EAAUvT,EAAUpC,KAAKoC,QAAWS,EAEpCP,EAAUtC,KAAK2vC,YACf3vC,KAAKkwC,UAAYlwC,KAAKoT,QAE1BpT,KAAK2U,MAAMlI,QAAQwH,UAAY0B,EAASrT,GACnCtC,KAAK+0B,YAAc/0B,KAAK2vC,cAGjCqC,cA9gBK,SA8gBSnxC,GAEVN,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKod,UACxB,KAAMpd,KAAKoZ,EAAEpV,KAEjBzD,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKqd,QACxB,KAAMrd,KAAKoZ,EAAEpV,MAGrBiuC,gBAvhBK,SAuhBWpxC,GAELU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAI7BlZ,EAAM2b,kBAENjc,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKod,UACvBpd,KAAKkyC,gBAAiBlyC,KAAKoZ,EAAEpV,KAEjCzD,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKqd,QACvBrd,KAAKmyC,cAAenyC,KAAKoZ,EAAEpV,KAE/BhE,KAAKyvC,WAAazvC,KAAK2U,MAAMlI,QACxBgjC,WAELzvC,KAAKkzB,QAAUryB,EAAMqyB,UAGzBgf,gBA3iBK,SA2iBWrxC,GAEZ,IAAIgC,EAAO7C,KAAK4vC,WAAa5vC,KAAKg1B,WAC9Bh1B,KAAKyvC,WAAazvC,KAAK4wC,WAEvBj7B,EAAU9U,EAAMqyB,QAAUlzB,KAAKkzB,QAAWrwB,EAE1C4P,EAASzS,KAAK4vC,WACd5vC,KAAK2wC,SAAW3wC,KAAKqT,QAEzBrT,KAAK2U,MAAMlI,QAAQgjC,WAAa95B,EAASlD,GACpCzS,KAAKg1B,WAAah1B,KAAK4vC,aAGhCuC,cAzjBK,SAyjBStxC,GAEVN,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKod,UACxB,KAAMpd,KAAKoZ,EAAEpV,KAEjBzD,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKqd,QACxB,KAAMrd,KAAKoZ,EAAEpV,OAKzBsO,OAzvBW,WA2vBP,IAAI7R,EAAY,CACZ,eAGCT,KAAA,QACDS,EAAUgB,KAAK,uBAGZzB,KAAK4uC,aACRnuC,EAAUgB,KAAK,uBAGdzB,KAAKgd,OACNvc,EAAUgB,KAAK,sBAGdhE,OAAO20C,KACR3xC,EAAUgB,KAAK,aAGdzB,KAAKkT,WACNzS,EAAUgB,KAAK,gBAGdzB,KAAKmT,WACN1S,EAAUgB,KAAK,gBAGnB,IAAI4wC,EAAY,EAAH,GACR,KAAOv0B,MAAIC,QAAQ/d,KAAKmd,WAAand,KAAK8xC,iBAG3CQ,EAAY,EAAH,GACR,KAAOx0B,MAAIC,QAAQ/d,KAAKmd,WAAand,KAAKiyC,iBAG/C,OACI,wDAAYxxC,GAAesC,MAAIkG,OAAOjJ,KAAKghB,OAAQ,CAAC,WAApD,CACI,mCAAW,sBAAX,IAAqC,WAArC,CACI,mCAAYhhB,KAAK6uC,WAAjB,CACM7uC,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cAGjC,mCAAW,qBAAX,IAAoC,UAApC,CACI,mCAAYrS,KAAK6uC,WAAjB,QAIJ,sDAAS,OAAT,MAAsB,iBAAoByD,GAA1C,MACA,sDAAS,OAAT,MAAsB,iBAAoBD,GAA1C,UC5yBD,mBAAU7vB,GACrBA,EAAI6B,UAAUkuB,EAAUj0C,KAAMi0C,K,sDCDnB,GAEXj0C,KAAM,UAENqU,OAAQ,CAEJ6/B,QAAS,CACL3/B,aAASnL,IAKjBgR,QAZW,WAcP,MAAO,CACH85B,QAASxyC,OAIjBmJ,MAAO,CAEHyP,QAAS,oBAGD,OAAO,GAEXjO,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXg7B,QAAS,oBAGD,OAAO,KAEX9nC,KAAM,CAACyE,SAGX49B,SAAU,oBAGF,OAAO,KAEXriC,KAAM,CAACyE,UAKf9D,KA/DW,WAiEP,MAAO,CACH2Z,YAAajlB,KAAK4Y,UAI1B9M,QAAS,CAEL4mC,WAFK,WAMD,GAFA1yC,KAAK2yC,OAAShuC,KAAKC,MAEd5E,KAAK4Y,QACN,OAAO5Y,KAAKilB,YAAcjlB,KAAK4Y,QAGnC5Y,KAAK4yC,cAGTA,WAbK,WAcL,WACQD,EAAShuC,KAAKC,MAAQ5E,KAAK2yC,OAE/B,GAAKA,EAAS3yC,KAAKyyC,QACf,OAAOzyC,KAAK6yC,aAAaF,GAG7B3yC,KAAKo3B,QAAUhhB,YAAW,kBAAM,EAAK6O,aAAc,IAC/CjlB,KAAKgtC,WAGb6F,aAzBK,WAyBoB,IAAZF,EAAY,uDAAH,EAClB7tC,MAAIiQ,MAAM/U,KAAK4yC,WAAY5yC,KAAKyyC,QAAUE,EAAS,MAK3D/mC,MAAO,CAEHgN,QAFG,WAIC5Y,KAAK0yC,eAKb7mC,QA9GW,WAgHP7L,KAAK0yC,cAGTpgC,OAnHW,WAqHP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAKwQ,KACpB,aAAexQ,KAAK2K,MAOxB,OAJK3K,KAAKilB,aACNxkB,EAAUgB,KAAK,UAIf,mCAAYhB,GAAZ,CACMT,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,cCjI1B,mBAAUmQ,GACrBA,EAAI6B,UAAUyuB,EAAOx0C,KAAMw0C,K,sDCDhB,GAEXx0C,KAAM,WAENqU,OAAQ,CAEJ+7B,WAAY,CACR77B,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACyE,SAGXqD,MAAO,oBAGC,OAAO,GAEX9H,KAAM,CAACyE,SAGXwY,SAAU,oBAGF,OAAO,IAEXjd,KAAM,CAACyE,SAGXyY,SAAU,oBAGF,OAAO,GAEXld,KAAM,CAACyE,SAGX7J,MAAO,oBAGC,MAAO,IAEXoF,KAAM,CAACkN,QAGXsL,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGX2nB,SAAU,oBAGF,MAAO,SAEXpoB,KAAM,CAAC8M,SAGXs7B,aAAc,oBAGN,OAAO,GAEXpoC,KAAM,CAACyE,UAKf2N,SAAU,CAENC,MAFM,WAGF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UAPM,WAQF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAZM,WAaF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QAjBM,WAkBF,OAAOrd,KAAKgd,MAAQ,WAChB,YAKZ1R,KAxGW,WA0GP,MAAO,CACH0nC,WAAW,EACXhmB,UAAWhtB,KAAKgL,aAIxBY,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B6M,QA3HW,WA6HA7L,KAAKgL,YACRhL,KAAKizC,cAGJjzC,KAAK0uC,YACN1uC,KAAKkzC,iBAGTnvC,QAAMxE,KAAK,gBACPS,KAAKmzC,WAAYnzC,KAAKoZ,EAAEpV,KAE5BzD,MAAIgC,KAAK9E,QAAQgG,GAAG,SAChBqB,MAAIkoC,SAAShtC,KAAKqmB,SAAU,KAAMrmB,KAAKoZ,EAAEpV,MAGjDmpB,QA5IW,WA8IPntB,KAAKizC,eAGTG,UAjJW,WAmJFpzC,KAAK0uC,YACN1uC,KAAKqzC,mBAGTtvC,QAAMK,OAAO,gBACTpE,KAAKoZ,EAAEpV,KAEXzD,MAAIgC,KAAK9E,QAAQ0G,IAAI,SACjB,KAAMnE,KAAKoZ,EAAEpV,MAGrB8H,QAAS,CAELqnC,WAFK,SAEM5tC,GAEP,GAAOhE,MAAIC,IAAI+D,EAAOvF,KAAKuF,QAIpBvF,KAAKgtB,WAAehtB,KAAKuF,MAAMd,OAAtC,CAIAzE,KAAKgzC,WAAY,EAEjB,IAAIpwC,EAAQ,CACR6P,MAAOzS,KAAKgtB,UAAY,KAAMsmB,KAAM,YAGxC/yC,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAIF,KAG3BqwC,YArBK,WAuBD,IAAIxgC,EAAQlS,MAAIgC,KAAKvC,KAAKM,KACrBmS,QAEAA,IAAUzS,KAAKgtB,YAIpBhtB,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYva,GAErBzS,KAAKuzC,iBAGTA,aApCK,WAsCD,IAAI3wC,EAAQ,GAEW,SAAlB5C,KAAK+yB,WACNnwB,EAAMumC,UAAN,sBAAgCnpC,KAAKgtB,UAAYhtB,KAAK+yC,aAAtD,QAGmB,UAAlB/yC,KAAK+yB,WACNnwB,EAAMumC,UAAN,qBAAgCnpC,KAAKgtB,UAAYhtB,KAAK+yC,aAAtD,QAGJxyC,MAAIgC,KAAKvC,KAAK2U,MAAMxN,QAAQrE,IAAIF,IAGpCswC,eAnDK,WAqDD3yC,MAAIgC,KAAKvC,KAAK0uC,WAAWpuC,KAAKmD,GAAG,UAC7BqB,MAAIkoC,SAAShtC,KAAKizC,YAAa,IAAKjzC,KAAKoZ,EAAEpV,MAGnDqvC,iBAzDK,WA2DD9yC,MAAIgC,KAAKvC,KAAK0uC,WAAWpuC,KACpB6D,IAAI,UAAW,KAAMnE,KAAKoZ,EAAEpV,MAIrCqiB,SAhEK,WAkEIrmB,KAAK0uC,YAIV1uC,KAAKizC,eAGTtB,cAzEK,SAyES9wC,GAEV,OAAOb,KAAKgd,MAILnc,EAAM+wC,QAAQ,IAAM/wC,EAAMgxC,eAAe,GAHrChxC,GAMf2yC,gBAlFK,SAkFW3yC,GAELU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAI7BlZ,EAAMwD,iBACNxD,EAAM2b,kBAEDxc,KAAKuF,MAAMd,QACZV,QAAMsB,KAAK,gBAAiBrF,KAAKuF,OAGrChF,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,UAC5B5E,MAAIgC,KAAK5B,SAASC,MAAMuE,SAAS,UAEjC5E,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKqd,QACvBvY,MAAIyO,UAAUvT,KAAKyzC,cAAe,IAAKzzC,KAAKoZ,EAAEpV,KAElDzD,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKod,UACvBtY,MAAIyO,UAAUvT,KAAK0zC,gBAAiB,IAAK1zC,KAAKoZ,EAAEpV,OAGxD0vC,gBAzGK,SAyGW7yC,GAEZb,KAAKkzB,QAAWz1B,OAAOu3B,WACnBh1B,KAAK2xC,cAAc9wC,GAAOqyB,QAE9B,IAAI7f,EAAU9S,MAAIgC,KAAKvC,KAAKM,KACvBqV,OAAO,SAERg+B,EAAUpzC,MAAIgC,KAAKvC,KAAKM,KACvB80B,OAAO,SAERwe,EAAe5zC,KAAKkzB,QAAUygB,EAAUtgC,EACvCrT,KAAK+yC,aAAe,EAEpB/yC,KAAK4nB,WACNgsB,EAAcrkC,KAAKC,IAAIokC,EACnB5zC,KAAK4nB,SAAW5nB,KAAK+yC,eAGxB/yC,KAAK6nB,WACN+rB,EAAcrkC,KAAKK,IAAIgkC,EACnB5zC,KAAK6nB,SAAW7nB,KAAK+yC,eAG7B,IAAInwC,EAAQ,CACRumC,UAAW,eAAF,OAAiByK,EAAjB,QAGbrzC,MAAIgC,KAAKvC,KAAK2U,MAAMxN,QAAQrE,IAAIF,IAGpC6wC,cAxIK,SAwIS5yC,GAQV,GANAA,EAAMwD,iBACNxD,EAAM2b,kBAENjc,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKqd,QAAS,KAAMrd,KAAKoZ,EAAEpV,KAClDzD,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKod,UAAW,KAAMpd,KAAKoZ,EAAEpV,KAE7ChE,KAAKkzB,QAAZ,CAIA,IAAI7f,EAAU9S,MAAIgC,KAAKvC,KAAKM,KACvBqV,OAAO,SAERg+B,EAAUpzC,MAAIgC,KAAKvC,KAAKM,KACvB80B,OAAO,SAERwe,EAAc5zC,KAAKkzB,QAAUygB,EAAUtgC,EAEtCrT,KAAK4nB,WACNgsB,EAAcrkC,KAAKC,IAAIokC,EAAa5zC,KAAK4nB,WAGxC5nB,KAAK6nB,WACN+rB,EAAcrkC,KAAKK,IAAIgkC,EAAa5zC,KAAK6nB,WAG7C7nB,KAAKgtB,UAAYzd,KAAK+G,MAAMs9B,GAE5BrzC,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,UAE/B,IAAIxC,EAAQ,CACRumC,UAAW,eAAF,OAAiByK,EAAc5zC,KAAK+yC,aAApC,QAGbxyC,MAAIgC,KAAKvC,KAAK2U,MAAMxN,QAAQrE,IAAIF,GAEhC,IAAIixC,EAAa,CACbphC,MAAOzS,KAAKgtB,UAAY,KAAMsmB,KAAM,YAGxC/yC,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAI+wC,UAEhB7zC,KAAKkzB,QAEPlzB,KAAKuF,MAAMd,QACZV,QAAMsB,KAAK,iBAAkBrF,KAAKuF,OAGtCvF,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,aAGzC8mB,iBA7LK,SA6LYjzC,GAENU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAI7BlZ,EAAMwD,iBACNxD,EAAM2b,kBAEDxc,KAAKuF,MAAMd,QACZV,QAAMsB,KAAK,gBAAiBrF,KAAKuF,OAGrChF,MAAIgC,KAAKvC,KAAKM,KAAK6E,SAAS,UAC5B5E,MAAIgC,KAAK5B,SAASC,MAAMuE,SAAS,UAEjC5E,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKqd,QACvBvY,MAAIyO,UAAUvT,KAAK+zC,eAAgB,IAAK/zC,KAAKoZ,EAAEpV,KAEnDzD,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKod,UACvBtY,MAAIyO,UAAUvT,KAAKg0C,iBAAkB,IAAKh0C,KAAKoZ,EAAEpV,OAGzDgwC,iBApNK,SAoNYnzC,GAEbb,KAAKkzB,QAAUlzB,KAAK2xC,cAAc9wC,GAAOqyB,QAEzC,IAAI7f,EAAU9S,MAAIgC,KAAKvC,KAAKM,KACvBqV,OAAO,QAERg+B,EAAUpzC,MAAIgC,KAAKvC,KAAKM,KACvB80B,OAAO,QAERwe,EAAe5zC,KAAKkzB,QAAUygB,EAAUtgC,EACvCrT,KAAK+yC,aAAe,EAEpB/yC,KAAK4nB,WACNgsB,EAAcrkC,KAAKC,IAAIokC,EACnB5zC,KAAK4nB,SAAW5nB,KAAK+yC,eAGxB/yC,KAAK6nB,WACN+rB,EAAcrkC,KAAKK,IAAIgkC,EACnB5zC,KAAK6nB,SAAW7nB,KAAK+yC,eAG7B,IAAInwC,EAAQ,CACRumC,UAAW,cAAF,OAAgByK,EAAhB,QAGbrzC,MAAIgC,KAAKvC,KAAK2U,MAAMxN,QAAQrE,IAAIF,IAGpCmxC,eAlPK,SAkPUlzC,GAQX,GANAA,EAAMwD,iBACNxD,EAAM2b,kBAENjc,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKod,UAAW,KAAMpd,KAAKoZ,EAAEpV,KACpDzD,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKqd,QAAS,KAAMrd,KAAKoZ,EAAEpV,KAE3ChE,KAAKkzB,QAAZ,CAIA,IAAI7f,EAAU9S,MAAIgC,KAAKvC,KAAKM,KACvBqV,OAAO,QAERg+B,EAAUpzC,MAAIgC,KAAKvC,KAAKM,KACvB80B,OAAO,QAERwe,EAAc5zC,KAAKkzB,QAAUygB,EAAUtgC,EAEtCrT,KAAK4nB,WACNgsB,EAAcrkC,KAAKC,IAAIokC,EAAa5zC,KAAK4nB,WAGxC5nB,KAAK6nB,WACN+rB,EAAcrkC,KAAKK,IAAIgkC,EAAa5zC,KAAK6nB,WAG7C7nB,KAAKgtB,UAAYzd,KAAK+G,MAAMs9B,GAE5BrzC,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,UAE/B,IAAIxC,EAAQ,CACRumC,UAAW,cAAF,OAAgByK,EAAc5zC,KAAK+yC,aAAnC,QAGbxyC,MAAIgC,KAAKvC,KAAK2U,MAAMxN,QAAQrE,IAAIF,GAEhC,IAAIixC,EAAa,CACbphC,MAAOzS,KAAKgtB,UAAY,KAAMsmB,KAAM,YAGxC/yC,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAI+wC,UAEhB7zC,KAAKkzB,QAEPlzB,KAAKuF,MAAMd,QACZV,QAAMsB,KAAK,iBAAkBrF,KAAKuF,OAGtCvF,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,cAK7C7U,aAvcW,WAycP,GAAKnY,KAAKmjB,SACN,OAAO,KAGX,IAIIha,EAAQ,GAcZ,MAZuB,UAAlBnJ,KAAK+yB,WACN5pB,EAAM,KAAO2U,MAAIC,QAAQ/d,KAAKmd,YAAcnd,KAAK8zC,kBAG9B,SAAlB9zC,KAAK+yB,WACN5pB,EAAM,KAAO2U,MAAIC,QAAQ/d,KAAKmd,YAAcnd,KAAKwzC,iBAGhDxzC,KAAK+yC,eACN5pC,EAAMsJ,MAAQzS,KAAK+yC,aAAe,MAIlC,sDAAS,SAAT,MAnBY,CACZ,sBAkBwC5pC,GAAxC,OAIRmJ,OApeW,WAseP,IAAI7R,EAAY,CACZ,YACA,cAAgBT,KAAK+yB,UAGrBnwB,EAAQ,GAkBZ,OAhBK5C,KAAKyS,QAAWzS,KAAKgtB,YACtBpqB,EAAK,MAAY5C,KAAKyS,MAAQ,MAG7BzS,KAAKyS,QACN7P,EAAM,cAAgB5C,KAAKyS,MAAQ,MAGlCzS,KAAK4nB,WACNhlB,EAAM,aAAe5C,KAAK4nB,SAAW,MAGpC5nB,KAAK6nB,WACNjlB,EAAM,aAAe5C,KAAK6nB,SAAW,MAIrC,mCAAYpnB,EAAZ,MAA8BmC,GAA9B,CACM,CAAC5C,KAAKqS,OAAL,UAAuBrS,KAAKgK,KAAK,eAAVhK,QC/f3B,mBAAUwiB,GACrBA,EAAI6B,UAAU4vB,EAAQ31C,KAAM21C,K,sDCDjB,OAEX31C,KAAM,SAENqU,OAAQ,CAEJ+7B,WAAY,CACR77B,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACS,UAGX0nB,OAAQ,oBAGA,OAAO,GAEXnoB,KAAM,CAACS,UAGXrK,OAAQ,oBAGA,OAAO,GAEX4J,KAAM,CAACS,UAGX0J,SAAU,oBAGF,OAAO,OAIfqO,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXqH,MAAO,oBAGC,MAAO,OAEX9H,KAAM,CAAC8M,SAGXnV,OAAQ,oBAGA,MAAO,QAEXqI,KAAM,CAAC8M,SAGXy8B,MAAO,oBAGC,MAAO,IAEXvpC,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,iBAEXpoB,KAAM,CAAC8M,SAGX08B,SAAU,oBAGF,OAAO,GAEXxpC,KAAM,CAACS,UAGXgpC,YAAa,oBAGL,OAAO,GAEXzpC,KAAM,CAACS,WAKfQ,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,IAIzBguB,UATG,WAWChtB,KAAKq0C,wBAKb37B,QAvIW,WAyIP,MAAO,CACH47B,OAAQt0C,OAIhBsL,KA9IW,WAgJP,MAAO,CACHhH,OAAQ,KAAM0oB,WAAW,IAIjCnhB,QArJW,WAsJX,WACI7L,KAAKsE,OAAS/D,MAAIgC,KAAKvC,KAAK8U,UAAY9U,KAAKM,KACxC+yB,WAAWz0B,IAAI,GAEpB2B,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAG,YACvBzD,KAAKu0C,WAAYv0C,KAAKoZ,EAAEpV,KAE5BzD,MAAIgC,KAAK5B,SAASC,MAAM6C,GAAG,UACvBzD,KAAKw0C,aAAcx0C,KAAKoZ,EAAEpV,KAMzBhE,KAAKgL,YACNlG,MAAIiQ,OALQ,WACZ,EAAKiY,WAAY,IAII,KAGzBzsB,MAAIgC,KAAK5B,SAASC,MAAM0yB,OAAOtzB,KAAKM,MAGxC6T,cA3KW,WA6KPnU,KAAKM,IAAI4C,UAGbkwC,UAhLW,WAkLP7yC,MAAIgC,KAAK5B,SAASC,MAAMuD,IAAI,YACxB,KAAMnE,KAAKoZ,EAAEpV,KAEjBzD,MAAIgC,KAAK5B,SAASC,MAAMuD,IAAI,UACxB,KAAMnE,KAAKoZ,EAAEpV,MAGrB8H,QAAS,CAEL2oC,UAFK,WAGL,IADUC,EACV,wDADyB3sC,EACzB,uDADkC,KAEzB/H,KAAKgtB,aAILhtB,KAAKm0C,UAAYO,KAClB10C,KAAKgtB,WAAY,GAGrBhtB,KAAKgG,MAAM,qBAAqB,EAAM+B,KAG1C4sC,WAfK,WAgBL,IADWD,EACX,wDAD0B3sC,EAC1B,uDADmC,KAE/B,GAAO/H,KAAKgtB,UAAZ,CAIA,IAAOhtB,KAAKe,OACR,OAAOf,KAAKgG,MAAM,QAAS+B,IAG1B/H,KAAKm0C,UAAYO,KAClB10C,KAAKgtB,WAAY,GAGrBhtB,KAAKgG,MAAM,qBAAqB,EAAO+B,KAG3C6sC,mBAhCK,WAkCD1+B,aAAalW,KAAK2a,SAElBpa,MAAIgC,KAAKvC,KAAKM,KAAK8E,YAAY,YAGnCivC,oBAvCK,WAyCD,IAAOr0C,KAAKgtB,UACR,OAAOhtB,KAAK40C,qBAGhBn3C,OAAO43B,QAAU,EAEjB90B,MAAIgC,KAAKvC,KAAKM,KAAKoB,KAAK,aACpBjE,OAAO43B,QAEX90B,MAAIgC,KAAKvC,KAAKM,KAAKwC,IAAI,CACnB,UAAWrF,OAAO43B,SAGtBr1B,KAAK60C,uBAGTA,oBAzDK,WA0DL,WACI,IAAO70C,KAAKgtB,UACR,OAAOhtB,KAAK40C,qBAGhB50C,KAAK2a,QAAUvE,YAAW,WACtB7V,MAAIgC,KAAK,EAAKjC,KAAK6E,SAAS,aAC7B,MAGPovC,WApEK,SAoEM1zC,EAAOmB,GAEd,IAAKhC,KAAKmjB,UAA4B,IAAhBtiB,EAAMkZ,MAA5B,CAIA,IAAI7N,IAAY3L,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAKsE,QAE1C,IAAO4H,GAAYlM,KAAKgtB,aAInBhtB,KAAKgtB,WAAahtB,KAAKm0C,WACxBjoC,GAAW3L,MAAIgC,KAAKP,GAAIuC,QAAQvE,KAAK2U,MAAMm5B,WAG1C5hC,IAAWlM,KAAKgtB,WAIrB,OAAO9gB,OAIFlM,KAAK8yB,QACN9yB,KAAKy0C,WAAU,EAAM,aAJdz0C,KAAK20C,YAAW,EAAO,YAQtCH,aAjGK,SAiGQ3zC,EAAOmB,GAEhB,GAAOhC,KAAKgtB,WAA6B,KAAhBnsB,EAAMkZ,MAA/B,CAIA,IAII+6B,EAAUv0C,MAAIgC,KAAK,2BAClB0C,MALc,SAACgtB,GAChB,OAAO1xB,MAAIgC,KAAK0vB,GAAOvwB,KAAK,iBAM5BqH,EAAQxI,MAAIgC,KAAKvC,KAAKM,KAAKoB,KAAK,cAE/BH,MAAIsI,KAAKirC,EAAQnjC,UAAY5I,GAIlC/I,KAAK20C,YAAW,EAAO,aAK/BP,YAlTW,WAmTX,WACI,IAAOp0C,KAAKo0C,cAAiBp0C,KAAKm0C,SAC9B,OAAO,KAGX,IAAIhrC,EAAQ,CACRsU,QAAS,kBAAM,EAAKk3B,YAAW,EAAO,YAG1C,OACI,wDAAW,kBAAqBxrC,GAAhC,CACI,oCAAayU,KAAKC,MAAM2D,OAAxB,SAKZ4nB,aAnUW,WAqUP,OAAOppC,KAAKqS,OAAOmjB,QAAYx1B,KAAKk0C,MAKhC,mCAAW,mBAAX,CACM,CAACl0C,KAAKqS,OAAOmjB,QAAUx1B,KAAKqS,OAAOmjB,OAAO,CAAEmf,WAAY30C,KAAK20C,cAAiB30C,KAAKk0C,MAAOl0C,KAAKgK,KAAK,cAAVhK,MALzF,MAUfkrB,aAhVW,WAkVP,OAAOlrB,KAAKqS,OAAO+Y,OAKf,mCAAW,mBAAX,CACMprB,KAAKqS,OAAO+Y,OAAO,CAAEupB,WAAY30C,KAAK20C,eALrC,MAUf7iC,WA7VW,WA8VX,I,EAAA,OACQ4yB,EACA,oEAAgB,YAAhB,UAAsC,EAAtC,UAAsD,iBAAtD,2BACM,EAAKryB,OAAL,SAAuB,EAAKA,OAAL,QAAoB,CAAEsiC,WAAY,EAAKA,iBAQxE,OAJK30C,KAAKqS,OAAOzR,OACb8jC,EAAW1kC,KAAKqS,OAAOzR,KAAK,CAAE+zC,WAAY30C,KAAK20C,cAI/C,mCAAW,iB,qBACLjQ,I,6EAAAA,EADN,2BACMA,OAKdqQ,YAhXW,WAkXP,IAAO/0C,KAAKgtB,UACR,OAAO,KAGX,IAAIpqB,EAAQ,CACR6P,MAAOzS,KAAKyS,MAAOnQ,OAAQtC,KAAKsC,QAGhC42B,EAAY,CACZl5B,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,IAGJ,OACI,mCAAW,iBAAX,MAAmC4C,GAAnC,CACM5C,KAAKqS,OAAO2N,IAAMhgB,KAAKqS,OAAO2N,MAAQkZ,KAKpD8b,eAvYW,WAyYP,OACI,iCAAS,WAAT,MAA0B,qBAA1B,OAIR1iC,OA9YW,WAgZA7U,OAAO43B,SACV53B,OAAO43B,OAAS,KAGpB,IAAI50B,EAAY,CACZ,UACA,YAAcT,KAAKwQ,KACnB,YAAcxQ,KAAK2K,KACnB,YAAc3K,KAAK+yB,UAGlB/yB,KAAKgtB,WACNhtB,KAAK60C,sBAGJ70C,KAAKo0C,aACN3zC,EAAUgB,KAAK,cAGZzB,KAAKgtB,WACRvsB,EAAUgB,KAAK,YAGnB,IAAIy3B,EAAY,KAMhB,OAJKl5B,KAAKgtB,YACNkM,EAAYl5B,KAAKgK,KAAK,cAAVhK,IAIZ,mCAAYS,GAAZ,CACM,CAACy4B,EAAWl5B,KAAKgK,KAAK,iBAAVhK,QC/af,mBAAUwiB,GACrBA,EAAI6B,UAAU4wB,EAAM32C,KAAM22C,K,sDCAf,GAEX32C,KAAM,SAENqU,OAAQ,CAEJikB,MAAO,CACH/jB,aAASnL,GAGbwwB,UAAW,CACPrlB,aAASnL,IAKjB0uB,cAAc,EAEdjtB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfL,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX2L,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGX2K,aAAc,oBAGN,MAAO,SAEXzX,KAAM,CAAC8M,SAGXgM,aAAc,oBAGN,OAAO,MAEX9Y,KAAM,CAACS,UAGXoF,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX4L,WAAY,oBAGJ,MAAO,QAEX1Y,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXoY,YAAa,oBAGL,MAAO,IAEX7Y,KAAM,CAAC8M,UAKfsF,SAAU,CAEN0c,aAFM,WAGF,OAAOz5B,KAAKk4B,UAAYl4B,KAAKk4B,UAAU/U,SAASnjB,KAAKmjB,UACjDnjB,KAAKmjB,WAKjB7X,KAtGW,WAwGP,MAAO,CACHqqB,OAAO,EAAO3I,UAAWhtB,KAAKgL,YAAc,KAIpDY,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B8M,QAAS,CAELopC,YAFK,SAEOr0C,IAEHA,EAAMqyB,SAAWryB,EAAMuB,UACxBpC,KAAKgG,MAAM,aAAcnF,IAIjCo7B,QATK,SASGp7B,GAEJb,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYnsB,EAAMyD,OAAOtF,QAGtCsd,UAfK,SAeKzb,GAENb,KAAKgG,MAAM,UAAWnF,GAED,KAAhBA,EAAMkZ,QAIXlZ,EAAMwD,iBAECrE,KAAK42B,OAIZ52B,KAAK42B,MAAMI,SAASn2B,KAGxBm7B,QAhCK,SAgCGn7B,GAEJb,KAAK21B,OAAQ,EACb31B,KAAKgG,MAAM,QAASnF,IAGxBs0C,OAtCK,SAsCEt0C,GAEHb,KAAK21B,OAAQ,EACb31B,KAAKgG,MAAM,OAAQnF,KAK3Bk1B,WAtKW,WAwKP,IAAM/1B,KAAKojB,KACP,OAAO,KAGX,IAAID,EAAWnjB,KAAKy5B,aAEO,OAAtBz5B,KAAKyjB,eACNN,EAAWnjB,KAAKyjB,cAGpB,IAAIta,EAAQ,CACRwB,KAAM,QACNyY,KAAMpjB,KAAKojB,KACX5S,KAAMxQ,KAAKwQ,KACX0S,QAAQ,EACRC,SAAUA,GAOd,OAJMA,IACFha,EAAMsU,QAAUzd,KAAKk1C,aAGjB,4DAAa/rC,EAAb,OAGZmpB,YAjMW,WAmMP,IAAInpB,EAAQpG,MAAIkG,OAAOjJ,KAAKghB,OAAQ,CAChC,QAAS,UAcb,OAXAje,MAAIoJ,OAAOhD,EAAO,CACdnK,MAAOgB,KAAKgtB,UACZriB,KAAM3K,KAAKqjB,WACXF,SAAUnjB,KAAKy5B,aACfjW,YAAaxjB,KAAKwjB,YAClByY,QAASj8B,KAAKi8B,QACdD,QAASh8B,KAAKg8B,QACdmZ,OAAQn1C,KAAKm1C,OACb74B,UAAWtc,KAAKsc,YAGb2M,YAAE,QAAS9f,IAGtBmJ,OArNW,WAuNP,IAAI7R,EAAY,CACZ,UACA,YAAcT,KAAKwQ,KACnB,YAAcxQ,KAAK2K,MAGlB3K,KAAKojB,OACN3iB,EAAUgB,KAAK,iBACfhB,EAAUgB,KAAK,iBAAmBzB,KAAKoiB,eAGtCpiB,KAAKy5B,cACNh5B,EAAUgB,KAAK,cAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGnB,IAAI0H,EAAQpG,MAAIwL,KAAKvO,KAAKghB,OAAQ,CAAC,SAAU,CACzCkI,MAAOlpB,KAAK8gB,KAAKrgB,KAGjBy4B,EAAY,GAYhB,MAV2B,WAAtBl5B,KAAKoiB,cACN8W,EAAUz3B,KAAKzB,KAAKgK,KAAK,aAAVhK,IAGnBk5B,EAAUz3B,KAAKzB,KAAKgK,KAAK,cAAVhK,IAEY,UAAtBA,KAAKoiB,cACN8W,EAAUz3B,KAAKzB,KAAKgK,KAAK,aAAVhK,IAGZipB,YAAE,MAAO9f,EAAO+vB,KC3PhB,mBAAU1W,GACrBA,EAAI6B,UAAU+wB,EAAM92C,KAAM82C,K,sDCAf,GAEX92C,KAAM,eAEN83B,cAAc,EAEdzjB,OAAQ,CAEJulB,UAAW,CACPrlB,aAASnL,IAMjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIf/T,IAAK,oBAGG,OAAO,GAEXjF,KAAM,CAACyE,SAGXI,IAAK,oBAGG,OAAOJ,OAAOO,WAElBhF,KAAM,CAACyE,SAGXoU,YAAa,oBAGL,MAAO,IAEX7Y,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGXyY,SAAU,oBAGF,OAAO,GAEXlZ,KAAM,CAACyE,SAGX0U,UAAW,oBAGH,OAAO,GAEXnZ,KAAM,CAACyE,SAGX2U,OAAQ,oBAGA,MAAO,UAEXpZ,KAAM,CAAC8M,SAGXuM,SAAU,oBAGF,OAAO/iB,SAAOsJ,MAAM,MAExBI,KAAM,CAAC8M,UAKfsF,SAAU,CAEN0c,aAFM,WAGF,OAAOz5B,KAAKk4B,UAAYl4B,KAAKk4B,UAAU/U,SAASnjB,KAAKmjB,UACjDnjB,KAAKmjB,WAKjBvX,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhtB,KAAKq1C,SAASr2C,MAM3CsM,KA7IW,WA+IP,MAAO,CACHqqB,OAAO,EAAO3I,UAAWhtB,KAAKq1C,aAItCvpC,QAAS,CAELouB,MAFK,WAIDl6B,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYhtB,KAAK2jB,aAG1D0xB,SAPK,WAQL,IADSr2C,EACT,uDADiB,KAMb,OAJK8F,MAAI8rB,OAAO5xB,KACZA,EAAQgB,KAAKgL,YAGZlG,MAAIgF,QAAQ9K,GACNgB,KAAK4P,IAGTrG,MAAG,MAAOvK,IAGrBs2C,gBApBK,WAuBD,GAAKxwC,MAAIgF,QAAQ9J,KAAKgL,YAClB,OAAO,KAGX,IAAIhM,EAAQuK,MAAIwa,OAAO/jB,KAAKgtB,UACxBhtB,KAAKgkB,SAAU,IAAKhkB,KAAK8jB,WAE7B,OAAO7iB,SAAOsJ,MAAMvK,KAAK+jB,OAAQ,CAAEjjB,MAAO9B,KAG9Cu2C,SAjCK,WAmCIC,MAAMx1C,KAAKgtB,aACZhtB,KAAKgtB,UAAY,GAGrB,IAAIhuB,EAAQgB,KAAKgtB,UAAYhtB,KAAK6jB,SAE7B7jB,KAAKwP,IAAMxQ,IAIhBA,EAAQuK,MAAG,MAAOvK,GAAOy2C,QAAQz1C,KAAK8jB,WAEtC9jB,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYzjB,MAAG,MAAOvK,MAGnC02C,WAnDK,WAoDL,WACI11C,KAAKu1C,WAELv1C,KAAK21C,YAAcv/B,YAAW,WAC1B,EAAKw/B,aAAethC,YAAY,EAAKihC,SAAU,OAChD,KAEHh1C,MAAIgC,KAAK5B,UAAU8C,GAAG,UAAWzD,KAAK61C,SAClC71C,KAAKoZ,EAAEpV,MAGf6xC,SA/DK,WAiED3/B,aAAalW,KAAK21C,aAClBnhC,cAAcxU,KAAK41C,cAEnBr1C,MAAIgC,KAAK5B,UAAUwD,IAAI,UAAW,KAC9BnE,KAAKoZ,EAAEpV,MAGf8xC,SAxEK,WA0EIN,MAAMx1C,KAAKgtB,aACZhtB,KAAKgtB,UAAY,GAGrB,IAAIhuB,EAAQgB,KAAKgtB,UAAYhtB,KAAK6jB,SAE7B7jB,KAAK4P,IAAM5Q,IAIhBA,EAAQuK,MAAG,MAAOvK,GAAOy2C,QAAQz1C,KAAK8jB,WAEtC9jB,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYzjB,MAAG,MAAOvK,MAGnC+2C,WA1FK,WA2FL,WACI/1C,KAAK81C,WAEL91C,KAAKg2C,YAAc5/B,YAAW,WAC1B,EAAK6/B,aAAe3hC,YAAY,EAAKwhC,SAAU,OAChD,KAEHv1C,MAAIgC,KAAK5B,UAAU8C,GAAG,UAAWzD,KAAKk2C,SAClCl2C,KAAKoZ,EAAEpV,MAGfkyC,SAtGK,WAwGDhgC,aAAalW,KAAKg2C,aAClBxhC,cAAcxU,KAAKi2C,cAEnB11C,MAAIgC,KAAK5B,UAAUwD,IAAI,UAAW,KAC9BnE,KAAKoZ,EAAEpV,MAGfsY,UA/GK,SA+GKzb,GAEe,KAAhBA,EAAMkZ,OACP/Z,KAAKi8B,QAAQp7B,IAIrBm7B,QAtHK,SAsHGn7B,GAEJb,KAAK21B,OAAQ,GAGjBwf,OA3HK,SA2HEt0C,GAEHb,KAAKi8B,QAAQp7B,GAEbb,KAAK21B,OAAQ,GAGjBsG,QAlIK,SAkIGp7B,GAEJ,IAAI7B,EAAQ6B,EAAMyD,OAAOtF,MAEpBA,EAAM+N,MAAM,4BACb/N,EAAQgB,KAAK+jB,OAAOjb,QAAQ,SAAU9J,IAG1C,IAAI+kB,EAAS/jB,KAAK+jB,OAAOjb,QAAQ,SAApB,wBAGTqtC,EAAQ,IAAIrb,OAAJ,WAAe/W,EAAf,MAERhX,EAAQ/N,EAAM+N,MAAMopC,GAExB,IAAMppC,EACF,OAAOlM,EAAMyD,OAAOtF,MAAQgB,KAAKs1C,kBAGrCt2C,EAAQ+N,EAAM,GAAGjE,QAAQ,IAAK,KACzBA,QAAQ,KAAM,KAEnB9J,EAAQuK,MAAG,MAAOvK,GAAOy2C,QAAQz1C,KAAK8jB,YAEzB9jB,KAAK4P,MACd5Q,EAAQgB,KAAK4P,KAGZ5Q,EAAQgB,KAAKwP,MACdxQ,EAAQgB,KAAKwP,KAGjBxP,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYzjB,MAAG,MAAOvK,IAE/B6B,EAAMyD,OAAOtF,MAAQgB,KAAKs1C,oBAKlCc,WA9TW,WAgUP,IAAIjzB,EAAWnjB,KAAKy5B,cAChBz5B,KAAKgtB,WAAahtB,KAAK4P,IAEvBzG,EAAQ,CACRwB,KAAM,eACN6F,KAAMxQ,KAAKwQ,KACX4S,KAAM,cACNF,QAAQ,EACRC,SAAUA,EACVuF,YAAa1oB,KAAK+1C,YAGtB,OAAQ,4DAAa5sC,EAAb,OAGZktC,WA/UW,WAiVP,IAAIlzB,EAAWnjB,KAAKy5B,cAChBz5B,KAAKgtB,WAAahtB,KAAKwP,IAEvBrG,EAAQ,CACRwB,KAAM,eACN6F,KAAMxQ,KAAKwQ,KACX4S,KAAM,aACNF,QAAQ,EACRC,SAAUA,EACVuF,YAAa1oB,KAAK01C,YAGtB,OAAQ,4DAAavsC,EAAb,OAGZmpB,YAhWW,WAkWP,IAAInpB,EAAQpG,MAAIkG,OAAOjJ,KAAKghB,OACxB,CAAC,QAAS,UAWd,OATAje,MAAIoJ,OAAOhD,EAAO,CACdnK,MAAOgB,KAAKs1C,kBACZnyB,SAAUnjB,KAAKy5B,aACfjW,YAAaxjB,KAAKwjB,YAClBlH,UAAWtc,KAAKsc,UAChB0f,QAASh8B,KAAKg8B,QACdmZ,OAAQn1C,KAAKm1C,SAGVlsB,YAAE,QAAS9f,IAGtBmtC,YAjXW,WAmXP,IAAMt2C,KAAK4jB,WAAa9e,MAAIgF,QAAQ9J,KAAKgtB,WACrC,OAAO,KAGX,IAAI7jB,EAAQ,GAMZ,OAJMnJ,KAAKy5B,eACPtwB,EAAMuf,YAAc1oB,KAAKk6B,OAIzB,wDAAW,yBAA4B/wB,GAAvC,CACI,iCAAUyU,KAAKC,MAAM2D,OAArB,SAKZlP,OApYW,WAsYP,IAAI7R,EAAY,CACZ,iBACA,mBAAqBT,KAAK2K,KAC1B,mBAAqB3K,KAAKwQ,MAmB9B,OAhBK1L,MAAIgF,QAAQ9J,KAAKgL,aAClBvK,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKy5B,cACNh5B,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACKT,KAAKgK,KAAK,aAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,OClaF,mBAAUwiB,GACrBA,EAAI6B,UAAUkyB,EAAYj4C,KAAMi4C,K,sDCArB,GAEXj4C,KAAM,YAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfL,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXoY,YAAa,oBAGL,MAAO,IAEX7Y,KAAM,CAAC8M,SAGXvG,SAAU,oBAGF,OAAO,GAEXvG,KAAM,CAACS,UAGXorC,QAAS,oBAGD,OAAO,IAEX7rC,KAAM,CAACyE,SAGX6B,QAAS,oBAGD,OAAO,GAEXtG,KAAM,CAACyE,SAGXqnC,UAAW,oBAGH,OAAO,GAEX9rC,KAAM,CAACyE,UAKfxD,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B8M,QAAS,CAEL4qC,WAFK,SAEM71C,GAEPb,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAYnsB,EAAMyD,OAAOtF,SAK1CsM,KApGW,WAsGP,MAAO,CACH0hB,UAAWhtB,KAAKgL,YAAc,KAItCsnB,YA3GW,WA6GP,IAAInpB,EAAQpG,MAAIkG,OAAOjJ,KAAKghB,OAAQ,CAAC,QAAS,UAE9Cje,MAAIoJ,OAAOhD,EAAO,CACdnK,MAAgBgB,KAAKgtB,UACrB2pB,KAAgB32C,KAAKiR,QACrBkS,SAAgBnjB,KAAKmjB,SACrBK,YAAgBxjB,KAAKwjB,YACrByY,QAAgBj8B,KAAK02C,aAGD,IAAnB12C,KAAKy2C,YACNttC,EAAMstC,UAAYz2C,KAAKy2C,WAG3B,IAAIG,GAAe52C,KAAKgtB,UAAUjgB,MAAM,QAAU,IAAItI,OAAS,EAM/D,OAJKzE,KAAKkR,UAAY/H,EAAMwtC,KAAOC,IAC/BztC,EAAMwtC,KAAOC,GAAe52C,KAAKw2C,QAAUI,EAAc52C,KAAKw2C,SAG3DvtB,YAAE,WAAY9f,IAGzBmJ,OApIW,WAsIP,IAAI7R,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAGrB3K,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAGnB,IAAI0H,EAAQpG,MAAIwL,KAAKvO,KAAKghB,OAAQ,CAAC,SAAU,CACzCkI,MAAOlpB,KAAK8gB,KAAKrgB,KAGrB,OAAOwoB,YAAE,MAAO9f,EAAO,CAACnJ,KAAKgK,KAAK,cAAVhK,OCrJjB,mBAAUwiB,GACrBA,EAAI6B,UAAUwyB,EAASv4C,KAAMu4C,K,gyBCDlB,OAEXv4C,KAAM,UAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfq2B,MAAO,oBAGC,OAAO,GAEX12B,KAAM,CAACS,UAGX0rC,MAAO,oBAGC,OAAO,IAIfC,OAAQ,oBAGA,MAAO,IAEXpsC,KAAM,CAACkN,QAGXjI,IAAK,oBAGG,OAAO,GAEXjF,KAAM,CAACyE,SAGXI,IAAK,oBAGG,OAAO,KAEX7E,KAAM,CAACyE,SAGXzE,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,WAKfE,KA9EW,WAgFP,MAAO,CACHvC,MAAO,EAAG0J,MAAO,KAAMua,UAAW,CAAC,KAAM,QAIjDjQ,SAAU,CAENjI,SAFM,WAIF,6BAAuB9U,KAAK+I,MAA5B,OAGJiuC,OAPM,WASF,OAAOlyC,MAAI8H,QAAQ5M,KAAK82C,OAASv1C,MAAIyG,MAAMhI,KAAK82C,OAAS92C,KAAK4P,KAGlEqnC,OAZM,WAcF,OAAOnyC,MAAI8H,QAAQ5M,KAAK82C,OAASv1C,MAAIsI,KAAK7J,KAAK82C,OAAS92C,KAAKwP,KAGjE0nC,OAjBM,WAmBF,OAAOl3C,KAAKi3C,OAASj3C,KAAKg3C,QAG9Bh6B,MAtBM,WAuBF,UAAW,iBAAkBvf,UACzBwf,UAAUC,mBAGlBC,UA3BM,WA4BF,OAAOnd,KAAKgd,MAAQ,aAChB,aAGRI,UAhCM,WAiCF,OAAOpd,KAAKgd,MAAQ,YAChB,aAGRK,QArCM,WAsCF,OAAOrd,KAAKgd,MAAQ,WAChB,YAIZpR,MAAO,CAEHZ,WAFG,WAIChL,KAAKm3C,mBAKbtrC,QAzIW,WA2IPtL,MAAIgC,KAAK9E,QAAQgG,GAAG,SAChBqB,MAAIkoC,SAAShtC,KAAKqmB,SAAU,KAAMrmB,KAAKoZ,EAAEpV,KAE7ChE,KAAKqmB,WACLrmB,KAAKm3C,kBAGT/D,UAlJW,WAoJP7yC,MAAIgC,KAAK9E,QAAQ0G,IAAI,SACjB,KAAMnE,KAAKoZ,EAAEpV,MAGrB8H,QAAS,CAELua,SAFK,WAIDrmB,KAAKyS,MAAQlS,MAAIgC,KAAKvC,KAAKM,KAAKmS,SAGpC0kC,eAPK,WASD,IAAIn4C,EAAQgB,KAAKgL,WASjB,OAPKlG,MAAI8rB,OAAO5xB,KACZA,EAAQgB,KAAKi3C,QAEVnyC,MAAI8H,QAAQ5N,KACfA,EAAQ,CAACgB,KAAKg3C,OAAQh4C,IAGnBgB,KAAKgtB,UAAYhuB,GAG5Bo4C,cArBK,WAuBD,IAAIp4C,EAAQgB,KAAKgtB,UAEVhtB,KAAKqhC,QACRriC,EAAQgB,KAAKgtB,UAAU,IAG3BhtB,KAAKgG,MAAM,oBAAqBhH,IAGpCq4C,UAhCK,SAgCKr4C,GAEN,OAAOuK,MAAI+tC,MAAMt3C,KAAKyS,MAAQzS,KAAKk3C,QAAUl4C,EAAQgB,KAAKg3C,QAAS,GAAK,MAG5EO,YArCK,SAqCOv4C,GAER,MAAO,yBAA2BgB,KAAKq3C,UAAUr4C,GAAS,MAG9Dw4C,UA1CK,WA4CD,OAAOjuC,MAAI+tC,MAAMt3C,KAAKyS,MAAQzS,KAAKk3C,QAAUl3C,KAAKgtB,UAAU,GAAKhtB,KAAKg3C,QAAS,GAAK,MAGxFS,YA/CK,WAiDD,OAAOluC,MAAI+tC,MAAMt3C,KAAKyS,MAAQzS,KAAKk3C,QAAUl3C,KAAKgtB,UAAU,GAAKhtB,KAAKgtB,UAAU,IAAK,GAAK,MAG9F0qB,YApDK,WAsDD,MAAO,cAAgB13C,KAAKy3C,cAArB,2BACwBz3C,KAAKw3C,YAAc,MAGtDG,gBA1DK,SA0DWllC,GAChB,WACI,GAAK3N,MAAIi3B,SAAS/7B,KAAK82C,OACnB,OAAOvtC,MAAI+M,MAAM7D,EAAQzS,KAAK82C,OAAS92C,KAAK82C,MAGhD,IAAIzV,EAAQ9/B,MAAIsI,KAAK7J,KAAK82C,OACtBv1C,MAAIyG,MAAMhI,KAAK82C,OAEfc,EAAOr2C,MAAI0D,KAAKjF,KAAK82C,OAAO,SAACe,GAC7B,OAAOtoC,KAAKuoC,IAAKzW,EAAQ,IAAM5uB,EAASolC,EAAO,EAAKb,WAGpDjuC,EAAQxH,MAAI8Y,UAAUu9B,EAAMroC,KAAKK,IAAL,MAAAL,KAAI,EAAQqoC,KAE5C,OAAO53C,KAAK82C,MAAM/tC,IAGtB4oC,cA5EK,SA4ES9wC,GAEV,OAAOb,KAAKgd,MAILnc,EAAM+wC,QAAQ,IAAM/wC,EAAMgxC,eAAe,GAHrChxC,GAMf6nB,YArFK,SAqFO7nB,GAEDU,MAAIC,IAAI,CAAC,EAAG,GAAIX,EAAMkZ,SAI7BlZ,EAAMwD,iBACNxD,EAAM2b,kBAENjc,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAKvC,KAAK8U,UAAU3P,SAAS,UAChD5E,MAAIgC,KAAK5B,SAASC,MAAMuE,SAAS,UAEjC5E,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKqd,QACvBvY,MAAIyO,UAAUvT,KAAK+3C,UAAW,IAAK/3C,KAAKoZ,EAAEpV,KAE9CzD,MAAIgC,KAAK5B,UAAU8C,GAAGzD,KAAKod,UACvBtY,MAAIyO,UAAUvT,KAAKsgC,YAAa,IAAKtgC,KAAKoZ,EAAEpV,OAGpDs8B,YAxGK,SAwGOz/B,GAERb,KAAKkzB,QAAUlzB,KAAK2xC,cAAc9wC,GAAOqyB,QAEzC,IAAI7f,EAAU9S,MAAIgC,KAAKvC,KAAKM,KACvBqV,OAAO,QAERqiC,GAAiBh4C,KAAKkzB,QAAU7f,GAAWrT,KAAKyS,MAAQ,IAExDwlC,EAAej4C,KAAK23C,gBAAgBK,GAEnCC,EAAej4C,KAAKg3C,SACrBiB,EAAej4C,KAAKg3C,QAGnBiB,EAAej4C,KAAKi3C,SACrBgB,EAAej4C,KAAKi3C,QAGxB,IAAIiB,EAAUl4C,KAAKgtB,UAAU,GAAKhtB,KAAK82C,MAEnB,IAAf92C,KAAK+I,OAAekvC,EAAeC,IACpCD,EAAeC,GAGnB,IAAIC,EAAUn4C,KAAKgtB,UAAU,GAAKhtB,KAAK82C,MAEnB,IAAf92C,KAAK+I,OAAekvC,EAAeE,IACpCF,EAAeE,GAGnBn4C,KAAKgtB,UAAUhtB,KAAK+I,OAASkvC,GAGjCF,UA1IK,SA0IKl3C,GAENA,EAAMwD,iBACNxD,EAAM2b,kBAENjc,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKqd,QAAS,KAAMrd,KAAKoZ,EAAEpV,KAClDzD,MAAIgC,KAAK5B,UAAUwD,IAAInE,KAAKod,UAAW,KAAMpd,KAAKoZ,EAAEpV,KAEpDzD,MAAIgC,KAAKvC,KAAKM,KAAKiC,KAAKvC,KAAK8U,UAAU1P,YAAY,UACnD7E,MAAIgC,KAAK5B,SAASC,MAAMwE,YAAY,UAEpCpF,KAAKo3C,kBAKbj/B,aAlTW,SAkTEnZ,EAAO+J,GACpB,WACQqvC,EAAc,CACd,aAAcp5C,EACd,aAAc+J,EACdnG,MAAO5C,KAAKu3C,YAAYv4C,GAG5Bo5C,YAA6B,SAACv3C,GAC1B,EAAK6nB,YAAY7nB,EAAO,EAAKkI,MAAQA,KAGrCzJ,EAAMiC,MAAI8Y,UAAUra,KAAK82C,MAAO93C,GAEpC,OACI,wDAAW,oBAAuBo5C,GAAlC,CACI,mCAAQr1C,MAAInE,IAAIoB,KAAK+2C,OAAQz3C,EAAKN,QAK9Cq5C,cAvUW,WAwUX,WACQvxB,EAASvlB,MAAI2E,MAAMlG,KAAKgtB,WAM5B,OAJOhtB,KAAKqhC,cACDva,EAAO,GAGXvlB,MAAI0D,KAAK6hB,GAAQ,SAAC9nB,EAAO+J,GAC5B,OAAO,EAAKiB,KAAK,eAAV,CAA0BhL,EAAO+J,OAIhDuvC,UApVW,WAsVP,IAAIC,EAAW,CACX31C,MAAO5C,KAAK03C,eAGhB,OACI,mCAAW,iBAAX,CACI,wDAAW,mBAAsBa,GAAjC,SAKZjmC,OAjWW,WAmWP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAKwQ,MAWxB,OARKxQ,KAAKqhC,OACN5gC,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,YAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OCjXH,mBAAUwiB,GACrBA,EAAI6B,UAAUm0B,EAAOl6C,KAAMk6C,K,+CCHhB,G,KAAA,CAEXl6C,KAAM,UAENqU,OAAQ,CAEJulB,UAAW,CACPrlB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,IAIfiZ,QAAS,oBAGD,OAAO,IAIfC,SAAU,oBAGF,OAAO,IAIfC,OAAQ,oBAGA,MAAO,YAIfC,QAAS,oBAGD,MAAO,YAIf5T,KAAM,oBAGE,MAAO,OAIf2S,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,WAKf2R,SAAU,CAEN0c,aAFM,WAGF,OAAOz5B,KAAKk4B,UAAYl4B,KAAKk4B,UAAU/U,SAASnjB,KAAKmjB,UACjDnjB,KAAKmjB,WAKjB7X,KA3EW,WA6EP,MAAO,CACH0hB,UAAWhtB,KAAKgL,aAIxBc,QAAS,CAELyoC,WAFK,WAID,IAAIvnB,EAAYhtB,KAAKikB,QAEhBjkB,KAAKgtB,YAAchtB,KAAKikB,UACzB+I,EAAYhtB,KAAKkkB,UAGrBlkB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYA,KAKzDphB,MAAO,CAEHZ,WAFG,WAIMhL,KAAKgL,aAAehL,KAAKgtB,YAC1BhtB,KAAKgtB,UAAYhtB,KAAKgL,cAMlCytC,aA5GW,WA8GP,IAIItvC,EAAQ,GAMZ,OAJOnJ,KAAKy5B,eACRtwB,EAAMuf,YAAc1oB,KAAKu0C,YAIzB,wDAXY,CACZ,qBAU2BprC,GAA3B,CACI,2CAKZqkB,YA/HW,WAiIP,IAAOxtB,KAAKqS,OAAL,QACH,OAAO,KAGX,IAIIlJ,EAAQ,GAMZ,OAJOnJ,KAAKy5B,eACRtwB,EAAMuf,YAAc1oB,KAAKu0C,YAIzB,wDAXY,CACZ,oBAU2BprC,GAA3B,CACMnJ,KAAKqS,OAAL,aAKdC,OAtJW,WAwJP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAKwQ,MAuBxB,OApBKxQ,KAAKgtB,YAAchtB,KAAKikB,SACzBxjB,EAAUgB,KAAK,aAAezB,KAAKmkB,QAGlCnkB,KAAKgtB,YAAchtB,KAAKkkB,UACzBzjB,EAAUgB,KAAK,aAAezB,KAAKokB,SAGlCpkB,KAAKgtB,YAAchtB,KAAKikB,SACzBxjB,EAAUgB,KAAK,QAGdzB,KAAKgtB,YAAchtB,KAAKkkB,UACzBzjB,EAAUgB,KAAK,SAGdzB,KAAKy5B,cACNh5B,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,QClLH,mBAAUwiB,GACrBA,EAAI6B,UAAUq0B,EAAOp6C,KAAMo6C,K,sDCHhB,OAEXp6C,KAAM,WAEN6K,MAAO,CAEHyP,QAAS,oBAGD,OAAO,GAEXjO,KAAM,CAACS,UAGX0nB,OAAQ,oBAGA,OAAO,GAEXnoB,KAAM,CAACS,UAGXrK,OAAQ,oBAGA,OAAO,GAEX4J,KAAM,CAACS,UAGX0J,SAAU,oBAGF,OAAO,OAIftE,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXhF,MAAO,oBAGC,MAAO,QAEX9H,KAAM,CAAC8M,SAGXsb,SAAU,oBAGF,MAAO,iBAEXpoB,KAAM,CAAC8M,SAGX08B,SAAU,oBAGF,OAAO,GAEXxpC,KAAM,CAACS,UAGXutC,YAAa,oBAGL,OAAO13C,SAAOsJ,MAAM,YAExBI,KAAM,CAAC8M,SAGXmhC,UAAW,oBAGH,OAAO33C,SAAOsJ,MAAM,UAExBI,KAAM,CAAC8M,SAGXohC,WAAY,oBAGJ,MAAO,MAEXluC,KAAM,CAAC8M,UAKf7L,MAAO,CAEHgN,QAFG,WAIM5Y,KAAK4Y,UAAY5Y,KAAKilB,cACvBjlB,KAAKilB,YAAcjlB,KAAK4Y,WAMpCtN,KAlHW,WAoHP,MAAO,CACH2Z,YAAajlB,KAAK4Y,UAI1B9M,QAAS,CAELgtC,MAFK,SAECj4C,GAEFb,KAAK2U,MAAMsd,MAAM0iB,YAAW,EAAM,QAClC30C,KAAKgG,MAAM,UAGf+yC,QARK,SAQGl4C,GAEJb,KAAK2U,MAAMsd,MAAM0iB,YAAW,EAAM,QAClC30C,KAAKgG,MAAM,YAGf0wC,WAdK,SAcM13C,EAAO+I,GAEP/I,GAAoB,SAAX+I,GACZ/H,KAAKgG,MAAM,SAGfhG,KAAKgG,MAAM,iBAAkBhG,KAAKilB,YAAcjmB,KAKxD+2B,WAlJW,WAoJP,OACI,mCAAW,mBAAX,CACI,oCAAanY,KAAKC,MAAM7d,KAAK2K,OAA7B,SAKZmH,WA3JW,WA6JP,OACI,mCAAW,mBAAX,CACM9R,KAAKqS,OAAL,SAAuBrS,KAAKqS,OAAL,WAAyBrS,KAAKuK,MAAM,oBAKzEstB,aApKW,WAqKX,WACQp3B,EAAY,CACZ,qBAOJ,OAJKhD,OAAO20C,KACR3xC,EAAUgB,KAAK,aAIf,mCAAYhB,GAAZ,CACI,kEAAeT,KAAK64C,WAApB,KAAsC74C,KAAK2K,KAA3C,MAAuD,EAAvD,QAAsE3K,KAAK84C,OAA3E,2BACM,EAAKF,cAEX,kEAAe54C,KAAK64C,WAApB,KAAsC74C,KAAK2K,KAA3C,MAAuD,EAAvD,QAAuE3K,KAAK+4C,SAA5E,2BACM,EAAKJ,mBAMvBrmC,OA1LW,WA2LX,WACQ7R,EAAY,CACZ,YACA,cAAgBT,KAAK2K,KACrB,cAAgB3K,KAAKwQ,MAGrBrH,EAAQ,CACRwB,KAAM,UACNmK,SAAU9U,KAAK8U,SACfge,OAAQ9yB,KAAK8yB,OACb/xB,OAAQf,KAAKe,OACb0R,MAAOzS,KAAKyS,MACZsgB,SAAU/yB,KAAK+yB,SACfohB,SAAUn0C,KAAKm0C,SACfnpC,WAAYhL,KAAKilB,aAIrB9b,EAAM,uBAAyBnJ,KAAK02C,WAEpC,I,EAAIxd,EAAY,CACZlZ,IAAK,kBACD,mCAAYvf,GAAZ,CACM,EAAKuJ,KAAK,aAAV,GACA,EAAKA,KAAK,aAAV,GACA,EAAKA,KAAK,eAAV,OAKd,OACI,qFAAY,SAAYb,G,qBAClB+vB,I,6EAAAA,EADN,2BACMA,QC5NH,mBAAU1W,GACrBA,EAAI6B,UAAU20B,EAAQ16C,KAAM06C,K,4YCDjB,OAEX16C,KAAM,kBAENqU,OAAQ,CAEJulB,UAAW,CACPrlB,aAASnL,IAKjByB,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIfwd,QAAS,oBAGD,OAAO,OAIfC,QAAS,oBAGD,OAAO,OAIf5wB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX+L,YAAa,oBAGL,OAAOviB,SAAOsJ,MAAM,oBAExBI,KAAM,CAAC8M,SAGX6pB,YAAa,oBAGL,OAAO,GAEX32B,KAAM,CAACyE,SAGXu2B,SAAU,oBAGF,OAAO,OAIf5S,SAAU,oBAGF,MAAO,gBAEXpoB,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGX2Y,OAAQ,oBAGA,MAAO,uBAEXpZ,KAAM,CAAC8M,SAGXmuB,cAAe,oBAGP,OAAO3kC,SAAOsJ,MAAM,wBAExBI,KAAM,CAAC8M,SAGX8pB,SAAU,oBAGF,MAAO,CACHtgC,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,MACbtJ,SAAOsJ,MAAM,QAGrBI,KAAM,CAACkN,QAGX2pB,OAAQ,oBAGA,MAAO,CACHvgC,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,OACbtJ,SAAOsJ,MAAM,SAGrBI,KAAM,CAACkN,SAKfkF,SAAU,CAEN0c,aAFM,WAGF,OAAOz5B,KAAKk4B,UAAYl4B,KAAKk4B,UAAU/U,SAASnjB,KAAKmjB,UACjDnjB,KAAKmjB,WAKjBvX,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,UACtC/jB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,MAMtCsM,KApLW,WAsLP,MAAO,CACHqqB,OAAO,EAAO3I,UAAW8U,MAAIthC,KAAKR,KAAKgL,WAAYhL,KAAK+jB,UAIhEjY,QAAS,CAELmtC,oBAFK,WAIDj5C,KAAKgtB,UAAY8U,MAAIthC,KAAKR,KAAK2jB,WAC3B3jB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhG,KAAK2jB,aAGzCgd,eAVK,SAUU3hC,GAEXgB,KAAK21B,MAAQ32B,GAGjBgnC,aAfK,SAeQnlC,GAKT,KAHsBb,KAAK4lC,cAAcnhC,SACrC5D,EAAMyD,OAAOtF,MAAMyF,QAEvB,CAIA,IAAIzF,EAAQ8iC,MAAIthC,KAAKK,EAAMyD,OAAOtF,MAC9BgB,KAAK4lC,eAET,GAAO5mC,EAAMinC,OAAOC,UAApB,CAIA,IAAID,EAASjmC,KAAKgtB,UAAUiZ,OAAO19B,IAAI,CACnCg7B,KAAMvkC,EAAMinC,OAAO1C,OACnBJ,MAAOnkC,EAAMinC,OAAO9C,QACpBgD,KAAMnnC,EAAMinC,OAAOE,OACnBwB,KAAM3oC,EAAMinC,OAAO0B,OACnBG,OAAQ9oC,EAAMinC,OAAO6B,SACrBG,OAAQjpC,EAAMinC,OAAOgC,WAGzBjoC,KAAKgtB,UAAY8U,MAAIthC,KAAKylC,GAE1BjmC,KAAKgG,MAAM,oBACPhG,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,YAGnCuiB,kBA9CK,SA8CatnC,GAEdgB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,EACtBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhH,IAGpCopC,kBAtDK,SAsDappC,GAEdgB,KAAKgtB,UAAY8U,MAAIthC,KAAKxB,EACtBgB,KAAK+jB,QAET/jB,KAAKgG,MAAM,oBAAqBhH,KAMxCu8B,iBA5PW,WA8PP,IAAIzxB,GAAY9J,KAAKgtB,UAAUyZ,YAE/B,IAAOzmC,KAAK4jB,WAAa9Z,EACrB,OAAO,KAGX,IAAIX,EAAQ,GAMZ,OAJOnJ,KAAKy5B,eACRtwB,EAAMuf,YAAc1oB,KAAKi5C,qBAIzB,wDAAW,2BAA8B9vC,GAAzC,CACI,iCAAWyU,KAAKC,MAAM2D,OAAtB,SAKZga,iBAjRW,WAmRP,OACI,mCAAW,2BAAX,CACI,iCAAW5d,KAAKC,MAAMkE,WAAtB,SAKZoa,aA1RW,WA4RP,IAAIhzB,EAAQ,CACRnK,MAAO,GACPmkB,SAAUnjB,KAAKy5B,aACfjW,YAAaxjB,KAAKwjB,YAClByY,QAASj8B,KAAKgmC,cAQlB,OALKhmC,KAAKgtB,UAAU6W,UAChB16B,EAAMnK,MAAQgB,KAAKgtB,UAAUjJ,OACzB/jB,KAAK4lC,eAAe,IAIxB,mCAAW,2BAAX,CACI,8BAAWz8B,EAAX,SAKZkzB,cA/SW,WAiTP,IAAI57B,EAAY,CACZ,6BAOJ,OAJKT,KAAKqhC,OACN5gC,EAAUgB,KAAK,WAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,MAKdk5C,aAlUW,WAoUP,OACI,mCAAW,0BAAX,CACK,CAACl5C,KAAKgK,KAAK,kBAAVhK,GAAgCA,KAAKgK,KAAK,kBAAVhK,OAK9Cm5C,gBA3UW,WA6UP,IAAIhwC,EAAQpG,MAAIwL,KAAKvO,KAAK0c,OAAQ,CAC9B,UAAW,UAAW,OAAQ,OAAQ,SAAU,cAAe,WAAY,WAAY,WAS3F,OANAvT,EAAQpG,MAAIoJ,OAAOhD,EAAO,CACtB6B,WAAYhL,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,SAAW,QAGhD,uBAAyB/jB,KAAKsmC,kBAGhC,iGAAwB,gCAAmCn9B,GAA3D,OAIRiwC,gBA5VW,WA8VP,IAAIjwC,EAAQpG,MAAIwL,KAAKvO,KAAK0c,OAAQ,CAC9B,OAAQ,OAAQ,SAAU,WAAY,gBAAiB,kBAAmB,oBAS9E,OANAvT,EAAQpG,MAAIoJ,OAAOhD,EAAO,CACtB6B,WAAYhL,KAAKgtB,UAAUjJ,OAAO/jB,KAAK+jB,SAAW,QAGhD,uBAAyB/jB,KAAKooC,kBAGhC,iGAAwB,gCAAmCj/B,GAA3D,OAIRyzB,cA7WW,WA8WX,WACQzzB,EAAQ,CACRgiB,QAAS,QACT1Y,MAAO,EACPjC,KAAMxQ,KAAKwQ,KACXuiB,SAAU/yB,KAAK+yB,SACfC,aAAa,EACb7P,SAAUnjB,KAAKy5B,cAGf1Z,EAAQ,CACRC,IAAKhgB,KAAKgK,KAAK,iBAGnB,OACI,uFAAc,UAAd,WAAgC,EAAK2rB,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,G,+VAAhD,IAAgE4W,KAIxEzN,OAjYW,WAmYP,IAAI7R,EAAY,CACZ,mBACA,qBAAuBT,KAAK2K,KAC5B,qBAAuB3K,KAAKwQ,MAqBhC,OAlBgBxQ,KAAKgtB,UAAUyZ,aAG3BhmC,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKy5B,cACNh5B,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OC9ZH,mBAAUwiB,GACrBA,EAAI6B,UAAUg1B,EAAe/6C,KAAM+6C,K,mgBCDxB,OAEX/6C,KAAM,kBAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIf2Y,WAAY,oBAGJ,OAAO,OAIflT,QAAS,oBAGD,MAAO,CACH,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,MACA,OACA,SAGR9F,KAAM,CAACkN,QAGXyhC,YAAa,oBAGL,OAAO,OAIfC,YAAa,oBAGL,OAAO,OAIf/oC,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX+L,YAAa,oBAGL,OAAOviB,SAAOsJ,MAAM,oBAExBI,KAAM,CAAC8M,SAGX+hC,aAAc,oBAGN,OAAOv4C,SAAOsJ,MAAM,sBAExBI,KAAM,CAAC8M,SAGXkuB,SAAU,oBAGF,OAAO,OAIf5S,SAAU,oBAGF,MAAO,gBAEXpoB,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXwY,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGXquC,KAAM,oBAGE,OAAOx4C,SAAOsJ,MAAM,2BAExBI,KAAM,CAAC8M,SAGXiiC,MAAO,oBAGC,OAAOz4C,SAAOsJ,MAAM,6BAExBI,KAAM,CAAC8M,SAGXkiC,QAAS,oBAGD,OAAO14C,SAAOsJ,MAAM,iCAExBI,KAAM,CAAC8M,SAGXmiC,QAAS,oBAGD,OAAO34C,SAAOsJ,MAAM,iCAExBI,KAAM,CAAC8M,UAMf7L,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7BsM,KA7KW,WA+KP,MAAO,CACHqqB,OAAO,EAAO3I,UAAWhtB,KAAKgL,WAAY6uC,UAAW,OAI7D/tC,QAAS,CAELguC,YAFK,SAEOv7B,EAAMw7B,GAKd,OAHAA,EAAUA,EAAQC,WAAW,SAAU,cAClCA,WAAW,IAAK,QAEdz7B,EAAKxR,MAAM,IAAI+tB,OAAOif,EAAS,OAG1CE,cAVK,SAUSj7C,GAEV,GAAK8F,MAAIgF,QAAQ9K,GACb,MAAO,GAGX,GAAKA,EAAQ,EACT,OAAOgB,KAAKw5C,aAGhB,IAAII,EAAU56C,EAGV26C,EAAUpqC,KAAK4F,MAAMykC,EAAQ,IACjCA,GAAqB,GAAVD,EAGX,IAAID,EAAQnqC,KAAK4F,MAAMwkC,EAAQ,IAC/BA,GAAmB,GAARD,EAIX,IAAID,EAAOlqC,KAAK4F,MAAMukC,EAAM,IAC5BA,GAAgB,GAAPD,EAET,IAAIl7B,EAAO,GAkBX,OAhBKk7B,GACDl7B,EAAK9c,KAAKR,SAAOC,OAAOlB,KAAKy5C,KAAMA,IAGlCC,GACDn7B,EAAK9c,KAAKR,SAAOC,OAAOlB,KAAK05C,MAAOA,IAGnCC,GACDp7B,EAAK9c,KAAKR,SAAOC,OAAOlB,KAAK25C,QAASA,IAGrCC,GACDr7B,EAAK9c,KAAKR,SAAOC,OAAOlB,KAAK45C,QAASA,IAGnCr7B,EAAK5c,KAAK,MAGrBu4C,cAxDK,SAwDS37B,GAEV,GAAKzZ,MAAIgF,QAAQyU,GACb,OAAOve,KAAK2jB,WAGhB,IAAI3kB,EAAQ,EAERm7C,EAASn6C,KAAK85C,YAAYv7B,EAAMve,KAAKy5C,MAEpCU,GAA4B,IAAlBA,EAAO11C,SAClBzF,GAAkD,GAAzC8F,MAAG,MAAOq1C,EAAO,GAAGrxC,QAAQ,IAAK,MAAa,GAAK,IAGhE,IAAIsxC,EAASp6C,KAAK85C,YAAYv7B,EAAMve,KAAK05C,OAEpCU,GAA4B,IAAlBA,EAAO31C,SAClBzF,GAAkD,GAAzC8F,MAAG,MAAOs1C,EAAO,GAAGtxC,QAAQ,IAAK,MAAa,IAG3D,IAAIuxC,EAASr6C,KAAK85C,YAAYv7B,EAAMve,KAAK25C,SAEpCU,GAA4B,IAAlBA,EAAO51C,SAClBzF,GAAkD,GAAzC8F,MAAG,MAAOu1C,EAAO,GAAGvxC,QAAQ,IAAK,OAG9C,IAAIwxC,EAASt6C,KAAK85C,YAAYv7B,EAAMve,KAAK45C,SAMzC,OAJKU,GAA4B,IAAlBA,EAAO71C,SAClBzF,GAAS8F,MAAG,MAAOw1C,EAAO,GAAGxxC,QAAQ,IAAK,OAGvC9J,GAGXu7C,oBA3FK,WA6FDv6C,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYhtB,KAAK2jB,aAG1Dgd,eAhGK,SAgGU3hC,GAEXgB,KAAK21B,MAAQ32B,GAGjBgnC,aArGK,SAqGQ9lC,GAET,IAAIlB,EAAQgB,KAAKk6C,cAAch6C,EAAEoE,OAAOtF,OAEnCA,IAAUgB,KAAKgtB,YAIpBhtB,KAAK65C,UAAY76C,IAGrBw7C,cAhHK,SAgHSt6C,GAEV,IAAIlB,EAAQgB,KAAK65C,UAGjB75C,KAAK65C,UAAY,KAEV76C,GAASA,IAAUgB,KAAKgtB,WAI/BhtB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYhuB,IAGrDy7C,sBA9HK,SA8HiBz7C,GAElBgB,KAAK21B,OAAQ,EAGb31B,KAAK65C,UAAY,KAEjB75C,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYhuB,KAKzDu8B,iBA9TW,WAgUP,IAAOv7B,KAAK4jB,YAAe5jB,KAAKgtB,UAC5B,OAAO,KAGX,IAAI7jB,EAAQ,GAMZ,OAJOnJ,KAAKmjB,WACRha,EAAMuf,YAAc1oB,KAAKu6C,qBAIzB,wDAAW,2BAA8BpxC,GAAzC,CACI,iCAAWyU,KAAKC,MAAM2D,OAAtB,SAKZga,iBAjVW,WAmVP,OACI,mCAAW,2BAAX,CACI,iCAAW5d,KAAKC,MAAMkE,WAAtB,SAKZuQ,YA1VW,WA4VP,IAAInpB,EAAQ,CACRnK,MAAOgB,KAAKi6C,cAAcj6C,KAAKgtB,WAC/B7J,SAAUnjB,KAAKmjB,SACfK,YAAaxjB,KAAKwjB,YAClByY,QAASj8B,KAAKgmC,aACdmP,OAAQn1C,KAAKw6C,cACbE,SAAU16C,KAAKw6C,eAGnB,OACI,mCAAW,2BAAX,CACI,8BAAWrxC,EAAX,SAKZkzB,cA5WW,WAkXP,OACI,mCALY,CACZ,8BAIA,CACMr8B,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,MAKdoX,YA3XW,WA4XX,WACI,OAAO7V,MAAI0D,KAAKjF,KAAKyQ,SAAS,SAACzR,GAE3B,IAAIuf,EAAO,EAAK07B,cAAcj7C,GAE1B27C,EAAc,CAIlBA,QAAyB,WACrB,EAAKF,sBAAsBz7C,KAG/B,OAAQ,mEAAoB27C,EAApB,EAAkCp8B,KAAlC,2BAAkCA,UAIlDqe,cA7YW,WA8YX,WACQzzB,EAAQ,CACRgiB,QAAS,QACT1Y,OAAQ,EACRjC,KAAMxQ,KAAKwQ,KACXuiB,SAAU/yB,KAAK+yB,SACfC,aAAa,EACb7P,SAAUnjB,KAAKmjB,UAGfpD,EAAQ,CAEZA,IAAY,WAAM,MAEV66B,EAAc,CACd7tB,UAAU,EAAMvc,KAAM,EAAKA,MAG/B,OACI,yFAAgB,YAAhB,MAAkC,0BAA6BoqC,GAA/D,IACK,EAAK5wC,KAAK,cAAV,IADL,qCAMR,OACI,uFAAc,UAAd,WAAgC,EAAK2rB,MAArC,yCAAgC,EAAKA,MAArC,IAAgDxsB,G,+VAAhD,IAAgE4W,KAIxEzN,OA5aW,WA8aP,IAAI7R,EAAY,CACZ,mBACA,qBAAuBT,KAAK2K,KAC5B,qBAAuB3K,KAAKwQ,MAmBhC,OAhBOxQ,KAAKgtB,WACRvsB,EAAUgB,KAAK,WAGdzB,KAAK4jB,WACNnjB,EAAUgB,KAAK,eAGdzB,KAAK21B,OACNl1B,EAAUgB,KAAK,WAGdzB,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,gBAAVhK,GACAA,KAAKgK,KAAK,gBAAVhK,OCvcH,mBAAUwiB,GACrBA,EAAI6B,UAAUw2B,EAAev8C,KAAMu8C,K,8KCDxB,OAEXv8C,KAAM,YAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,MAAO,IAEXL,KAAM,CAACkN,QAGXrH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGXhH,QAAS,oBAGD,MAAO,IAEX9F,KAAM,CAACkN,QAGXijC,YAAa,oBAGL,MAAO,UAEXnwC,KAAM,CAAC8M,SAGXsjC,YAAa,oBAGL,MAAO,UAEXpwC,KAAM,CAAC8M,SAGXulB,UAAW,oBAGH,MAAO,SAEXryB,KAAM,CAAC8M,SAGXhR,WAAY,oBAGJ,MAAO,MAEXkE,KAAM,CAAC8M,UAKfsF,SAAU,CAENi+B,cAFM,WAIF,QAAUh7C,KAAKi7C,eAAex2C,QAC1BzE,KAAKi7C,eAAex2C,SAAWzE,KAAKk7C,WAAWz2C,QAGvD02C,mBARM,WAUF,QAAUn7C,KAAKi7C,eAAex2C,QAC1BzE,KAAKi7C,eAAex2C,SAAWzE,KAAKk7C,WAAWz2C,QAGvD22C,cAdM,WAgBF,QAAUp7C,KAAKq7C,eAAe52C,QAC1BzE,KAAKq7C,eAAe52C,SAAWzE,KAAKs7C,WAAW72C,QAGvD82C,mBApBM,WAsBF,QAAUv7C,KAAKq7C,eAAe52C,QAC1BzE,KAAKq7C,eAAe52C,SAAWzE,KAAKs7C,WAAW72C,QAGvDy2C,WA1BM,WA2BN,WACQnzC,EAASxG,MAAIkH,OAAOzI,KAAKyQ,SAAS,SAACxN,GACnC,OAAS1B,MAAIgB,KAAK,EAAKyqB,UAAd,KAA4B,EAAKvmB,WAAaxD,EAAK,EAAKwD,iBAGrE,GAAK3B,MAAIgF,QAAQ9J,KAAKw7C,cAClB,OAAOj6C,MAAI2E,MAAM6B,GAGrB,IAAI0zC,EAAgB,IAAI3gB,OAAO96B,KAAKw7C,aAAc,KAMlD,OAJAzzC,EAASxG,MAAIkH,OAAOV,GAAQ,SAAC9E,GACzB,OAAOA,EAAK,EAAK+5B,WAAWjwB,MAAM0uC,MAG/Bl6C,MAAI2E,MAAM6B,IAGrBuzC,WA7CM,WA8CN,WACQh3C,EAAS/C,MAAIkH,OAAOzI,KAAKyQ,SAAS,SAACxN,GACnC,QAAU1B,MAAIgB,KAAK,EAAKyqB,UAAd,KAA4B,EAAKvmB,WAAaxD,EAAK,EAAKwD,iBAGtE,GAAK3B,MAAIgF,QAAQ9J,KAAK07C,cAClB,OAAOn6C,MAAI2E,MAAM5B,GAGrB,IAAIm3C,EAAgB,IAAI3gB,OAAO96B,KAAK07C,aAAc,KAMlD,OAJAp3C,EAAS/C,MAAIkH,OAAOnE,GAAQ,SAACrB,GACzB,OAAOA,EAAK,EAAK+5B,WAAWjwB,MAAM0uC,MAG/Bl6C,MAAI2E,MAAM5B,KAIzBgH,KAzIW,WA2IP,MAAO,CACHtH,IAAKkF,iBACL8jB,UAAWhtB,KAAKgL,WAChBwwC,aAAc,GACdE,aAAc,GACdT,eAAgB,GAChBI,eAAgB,KAIxBzvC,MAAO,CAEHZ,WAFG,SAEQhM,GAEFA,IAAUgB,KAAKgtB,YAChBhtB,KAAKgtB,UAAYhuB,KAM7B8M,QAAS,CAEL6vC,gBAFK,SAEWlrC,GAChB,WACIlP,MAAI0D,KAAKwL,GAAS,SAAC1I,GAEf,IAAI9E,EAAO1B,MAAIgB,KAAK,EAAKkO,QAAd,KACN,EAAKhK,WAAasB,IAGvBxG,MAAIuY,IAAI,EAAKkT,UAAW/pB,EAAxB,KACK,EAAKwD,WAAasB,OAK3B/H,KAAKgG,MAAM,QAAShG,KAAKgtB,YAG7B4uB,gBAnBK,SAmBWnrC,GAChB,WACIlP,MAAI0D,KAAKwL,GAAS,SAAC1I,GAEfxG,MAAI2B,OAAO,EAAK8pB,UAAhB,KACK,EAAKvmB,WAAasB,OAK3B/H,KAAKgG,MAAM,QAAShG,KAAKgtB,YAG7B6uB,cAhCK,SAgCS32C,GAGV,IAAIZ,EAASY,EAAKlG,MAAMgB,KAAKyG,YAG7BlF,MAAI2B,OAAOlD,KAAKq7C,eAAgB/2C,GAEhCtE,KAAKgtB,UAAYzrB,MAAI2B,OAAOlD,KAAKgtB,UAAhB,KACZhtB,KAAKyG,WAAanC,IAGvBtE,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzC8uB,cA/CK,SA+CS52C,GAGV,IAAI6C,EAAS7C,EAAKlG,MAAMgB,KAAKyG,YAG7BlF,MAAI2B,OAAOlD,KAAKi7C,eAAgBlzC,GAEhCxG,MAAIuY,IAAI9Z,KAAKgtB,UAAW9nB,EAAKjC,KAAM8E,EAAnC,KACK/H,KAAKyG,WAAasB,IAGvB/H,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzC+uB,aA9DK,WA+DL,WACIx6C,MAAI0D,KAAKjF,KAAKq7C,gBAAgB,SAAC/2C,GAE3B/C,MAAI2B,OAAO,EAAK8pB,UAAhB,KACK,EAAKvmB,WAAanC,OAK3BtE,KAAKq7C,eAAiB,GAEtBr7C,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCgvB,aA7EK,WA8EL,WACIz6C,MAAI0D,KAAKjF,KAAKi7C,gBAAgB,SAAClzC,GAE3B,IAAI9E,EAAO1B,MAAIgB,KAAK,EAAKkO,QAAd,KACN,EAAKhK,WAAasB,IAGvBxG,MAAIuY,IAAI,EAAKkT,UAAW/pB,EAAxB,KACK,EAAKwD,WAAasB,OAK3B/H,KAAKi7C,eAAiB,GAEtBj7C,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,YAGzCivB,qBAhGK,SAgGgBtkC,GAEjB3X,KAAKi7C,eAAiBtjC,GAG1BukC,qBArGK,SAqGgBvkC,GAEjB3X,KAAKq7C,eAAiB1jC,IAK9BwkC,mBA5QW,WA6QX,WACQhzC,EAAQ,CACR6B,WAAYhL,KAAKg7C,cACjBxqC,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACX0W,aAAcrhB,KAAKm7C,mBACnBh4B,UAAYnjB,KAAKk7C,WAAWz2C,OAGhC0E,sBAA+B,WAC3B,EAAKwL,MAAM5M,OAAOmU,cAGtB,OACI,mCAAW,sBAAX,CACI,8DAAe/S,EAAf,SAKZizC,kBAjSW,WAmSP,IAAIxzB,EACA,oCAAY,0BAAZ,CACM5oB,KAAK86C,cAIXuB,EACA,oCAAY,0BAAZ,CACMr8C,KAAKk7C,WAAWz2C,SAI1B,OACI,mCAAW,qBAAX,CACM,CAACmkB,EAAWyzB,MAK1BC,mBAtTW,WAwTP,OACI,mCAAW,sBAAX,CACMt8C,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,MAKdu8C,mBAhUW,WAiUX,WACQpzC,EAAQ,CACRqa,YAAaxjB,KAAKuK,MAAM,eACxBiG,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXyY,KAAMxF,KAAKC,MAAM2D,MACjBiC,cAAgBzjB,KAAKw7C,aAGzBryC,YAAuB,WACnB,EAAKqyC,aAAe,IAGxBryC,sBAA+B,WAC3B,EAAK8xC,eAAiB,KAG1B,OACI,mCAAW,sBAAX,CACI,4FAAgB,EAAKO,aAArB,yCAAgB,EAAKA,aAArB,IAAuCryC,GAAvC,SAKZqzC,iBAzVW,WA2VP,IAAIrzC,EAAQ,CACR5D,MAAO,CAACvF,KAAKgE,IAAM,UACnByB,YAAa,CAACzF,KAAKgE,IAAM,UACzBmC,MAAOnG,KAAKk7C,WACZ1qC,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXyN,cAAc,EACdT,SAAU3X,KAAKi7C,eACfl5C,SAAU,kBAAO,IACjB4G,aAAa,EACbqK,WAAYhT,KAAKgK,KAAK,cACtByyC,OAAQz8C,KAAK47C,gBACb,cAAiB57C,KAAK87C,cACtB,oBAAqB97C,KAAKi8C,sBAG9B,OACI,wFAAe,SAAf,MAA8B,oBAAuB9yC,GAArD,OAIRuzC,mBAhXW,WAiXX,WACQvzC,EAAQ,CACR6B,WAAYhL,KAAKo7C,cACjB5qC,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACX0W,aAAcrhB,KAAKu7C,mBACnBp4B,UAAYnjB,KAAKs7C,WAAW72C,OAGhC0E,sBAA+B,WAC3B,EAAKwL,MAAMrQ,OAAO4X,cAGtB,OACI,mCAAW,sBAAX,CACI,8DAAe/S,EAAf,SAKZwzC,kBArYW,WAuYP,IAAI/zB,EACA,oCAAY,0BAAZ,CACM5oB,KAAK+6C,cAIXsB,EACA,oCAAY,0BAAZ,CACMr8C,KAAKs7C,WAAW72C,SAI1B,OACI,mCAAW,qBAAX,CACM,CAACmkB,EAAWyzB,MAK1BO,mBA1ZW,WA4ZP,OACI,mCAAW,sBAAX,CACM58C,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,oBAAVhK,MAKd68C,mBApaW,WAqaX,WACQ1zC,EAAQ,CACRqa,YAAaxjB,KAAKuK,MAAM,eACxBiG,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXyY,KAAMxF,KAAKC,MAAM2D,MACjBiC,cAAgBzjB,KAAK07C,aAGzBvyC,YAAuB,WACnB,EAAKuyC,aAAe,IAGxBvyC,sBAA+B,WAC3B,EAAKkyC,eAAiB,KAG1B,OACI,mCAAW,sBAAX,CACI,4FAAgB,EAAKK,aAArB,yCAAgB,EAAKA,aAArB,IAAuCvyC,GAAvC,SAKZ2zC,iBA7bW,WA+bP,IAAI3zC,EAAQ,CACR5D,MAAO,CAACvF,KAAKgE,IAAM,UACnByB,YAAa,CAACzF,KAAKgE,IAAM,UACzBmC,MAAOnG,KAAKs7C,WACZ9qC,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXyN,cAAc,EACdT,SAAU3X,KAAKq7C,eACft5C,SAAU,kBAAO,GACjB4G,aAAa,EACbqK,WAAYhT,KAAKgK,KAAK,cACtByyC,OAAQz8C,KAAK27C,gBACb,cAAiB37C,KAAK67C,cACtB,oBAAqB77C,KAAKk8C,sBAG9B,OACI,wFAAe,SAAf,MAA8B,oBAAuB/yC,GAArD,OAIR6J,WApdW,SAodA7J,GAEP,OAAKnJ,KAAKqS,OAAL,QACMrS,KAAKqS,OAAL,QAAoBlJ,GAI3B,mCAAW,oBAAX,CACMpG,MAAInE,IAAIuK,EAAMlG,KAAMjD,KAAKg9B,cAKvC+f,iBAjeW,WAmeP,IAAI5zC,EAAQ,CACRga,UAAYnjB,KAAKi7C,eAAex2C,OAChC+L,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXuY,QAAQ,EACRE,KAAMxF,KAAKC,MAAMG,WACjBP,QAASzd,KAAKg8C,cAGlB,OACI,4DAAa7yC,EAAb,OAIR6zC,iBAjfW,WAmfP,IAAI7zC,EAAQ,CACRga,UAAYnjB,KAAKq7C,eAAe52C,OAChC+L,KAAMxQ,KAAKwQ,KACX7F,KAAM3K,KAAK2K,KACXuY,QAAQ,EACRE,KAAMxF,KAAKC,MAAMmE,UACjBvE,QAASzd,KAAK+7C,cAElB,OACI,4DAAa5yC,EAAb,OAIRmJ,OAhgBW,SAggBJkc,GAEH,IAAI/tB,EAAY,CACZ,aACA,eAAiBT,KAAKwQ,KACtB,eAAiBxQ,KAAK2K,MAG1B,OACI,mCAAYlK,GAAZ,CACI,mCAAW,qBAAX,CACMT,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,KAEN,mCAAW,wBAAX,CACMA,KAAKgK,KAAK,mBAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,KAEN,mCAAW,qBAAX,CACMA,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,qBAAVhK,GACAA,KAAKgK,KAAK,mBAAVhK,SCthBP,mBAAUwiB,GACrBA,EAAI6B,UAAU44B,EAAS3+C,KAAM2+C,K,gyBCDlB,OAEX3+C,KAAM,aAEN6K,MAAO,CAEH+zC,KAAM,oBAGE,OAAO,GAEXvyC,KAAM,CAACyE,SAGX+tC,MAAO,oBAGC,OAAO,KAEXxyC,KAAM,CAACyE,SAGXguC,aAAc,oBAGN,MAAO,CAAC,GAAI,GAAI,IAAK,IAAK,IAAM,QAIxCnoC,MAAO,oBAGC,OAAO,GAEXtK,KAAM,CAACyE,SAGXoB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX4lC,SAAU,oBAGF,OAAO,GAEX1yC,KAAM,CAACyE,SAGXkuC,OAAQ,oBAGA,MAAO,CACH,QAAS,QAAS,SAAU,OAAQ,UAG5C3yC,KAAM,CAACkN,SAKfkF,SAAU,CAENwgC,MAFM,WAIF,OAAOh0C,MAAI2L,KAAKlV,KAAKiV,MAAQjV,KAAKw9C,YAGtCC,YAPM,WASF,OAAOl8C,MAAIf,KAAKR,KAAKu9C,OAAS,KAKtCjyC,KAvFW,WAyFP,MAAO,CACHoyC,SAAU19C,KAAKk9C,KAAMM,UAAWx9C,KAAKm9C,QAM7CrxC,QAAS,CAEL6xC,UAFK,SAEKT,GAEDA,IAASl9C,KAAK09C,WACf19C,KAAK09C,SAAWR,IAIxBU,eATK,WAWD,IAAIC,EAAW,CACXX,KAAMl9C,KAAK09C,SAAUP,MAAOn9C,KAAKw9C,WAGrCx9C,KAAKgG,MAAM,WAAY63C,IAG3BC,WAlBK,WAoBD99C,KAAK+9C,YAAY/9C,KAAK09C,SAAW,IAGrCM,WAvBK,WAyBDh+C,KAAK+9C,YAAY/9C,KAAK09C,SAAW,IAGrCO,YA5BK,WA8BDj+C,KAAK+9C,YAAY,IAGrBG,WAjCK,WAmCDl+C,KAAK+9C,YAAY/9C,KAAKu9C,QAG1BQ,YAtCK,SAsCO/+C,GAERgB,KAAKgG,MAAM,cAAehG,KAAK09C,SAAW1+C,GAE1CgB,KAAK49C,kBAGTO,aA7CK,SA6CQn/C,GAEJgB,KAAKw9C,YAAcx+C,GACpBgB,KAAKgG,MAAM,cAAehG,KAAK09C,SAAW,GAG9C19C,KAAKgG,MAAM,eAAgBhG,KAAKw9C,UAAYx+C,GAE5CgB,KAAK49C,mBAKbhyC,MAAO,CAEHsxC,KAFG,SAEEl+C,GAEIA,IAAUgB,KAAK09C,WAChB19C,KAAK09C,SAAW1+C,IAIxBm+C,MATG,SASGn+C,GAEGA,IAAUgB,KAAKw9C,YAChBx9C,KAAKw9C,UAAYx+C,KAM7Bo/C,YA5KW,WA6KX,WACQj1C,EAAQ,CACR6B,WAAgBhL,KAAKw9C,UACrBhtC,KAAgBxQ,KAAKwQ,KACrB7F,KAAgB3K,KAAK2K,KACrB8c,aAAe,eACf7W,aAAe,gBAWnB,OARAzH,EAAMsH,QAAUlP,MAAI0D,KAAKjF,KAAKo9C,cAAc,SAACD,GACzC,MAAO,CACHn+C,MAAOm+C,EAAO55B,MAAO,EAAKriB,OAAO,eAAgBi8C,OAIzDh0C,EAAM,uBAAyBnJ,KAAKm+C,aAGhC,mCAAW,sBAAX,CACI,4DAAah1C,EAAb,SAKZk1C,YArMW,WAuMP,OACI,mCAAW,sBAAX,CACMr+C,KAAKkB,OAAO,gDAAiDlB,KAAKiV,UAKhF0I,aA9MW,WAgNP,OACI,mCAAW,uBAAX,OAMR2gC,WAvNW,WAyNP,GAAKt+C,KAAKy9C,YAAYh5C,OAAS,IAC3B,OAAO,KAGX,IAAI0E,EAAQ,CACR6B,WAAgBhL,KAAK09C,SACrBltC,KAAgBxQ,KAAKwQ,KACrB7F,KAAgB3K,KAAK2K,KACrBod,cAAgB,IAChBN,aAAgB,eAChB7W,aAAgB,gBAWpB,OARAzH,EAAMsH,QAAUlP,MAAI6H,OAAOpJ,KAAKy9C,aAAa,SAACp0C,EAAON,GACjD,OAAOxH,MAAIE,KAAK4H,EAAO,CACnBrK,MAAO+J,EAAOwa,MAAOxa,MAE1B,IAEHI,EAAM,uBAAyBnJ,KAAK+9C,YAGhC,mCAAW,qBAAX,CACI,4DAAa50C,EAAb,SAKZitC,WArPW,WAuPP,IAAIjtC,EAAQ,CACRwB,KAAM3K,KAAK2K,KACXuY,QAAQ,EACR1S,KAAMxQ,KAAKwQ,KACX4S,KAAMxF,KAAKC,MAAMmE,UACjBvE,QAASzd,KAAK89C,YAOlB,OAJK99C,KAAK09C,SAAW,EAAI,IACrBv0C,EAAMga,UAAW,GAIjB,4DAAaha,EAAb,OAIRktC,WAxQW,WA0QP,IAAIltC,EAAQ,CACRwB,KAAM3K,KAAK2K,KACXuY,QAAQ,EACR1S,KAAMxQ,KAAKwQ,KACX4S,KAAMxF,KAAKC,MAAMG,WACjBP,QAASzd,KAAKg+C,YAOlB,OAJKh+C,KAAK09C,SAAW,EAAI19C,KAAKu9C,QAC1Bp0C,EAAMga,UAAW,GAIjB,4DAAaha,EAAb,OAIRo1C,YA3RW,WA6RP,GAAKv+C,KAAKu9C,MAAQv9C,KAAKq9C,SACnB,OAAO,KAGX,IAAIl0C,EAAQ,CACRwB,KAAM3K,KAAK2K,KACXuY,QAAQ,EACR1S,KAAMxQ,KAAKwQ,KACX4S,KAAMxF,KAAKC,MAAMoE,gBACjBxE,QAASzd,KAAKi+C,aAOlB,OAJKj+C,KAAK09C,SAAW,EAAI,IACrBv0C,EAAMga,UAAW,GAIjB,4DAAaha,EAAb,OAIRq1C,WAlTW,WAoTP,GAAKx+C,KAAKu9C,MAAQv9C,KAAKq9C,SACnB,OAAO,KAGX,IAAIl0C,EAAQ,CACRwB,KAAM3K,KAAK2K,KACXuY,QAAQ,EACR1S,KAAMxQ,KAAKwQ,KACX4S,KAAMxF,KAAKC,MAAMqE,iBACjBzE,QAASzd,KAAKk+C,YAOlB,OAJKl+C,KAAK09C,SAAW,EAAI19C,KAAKu9C,QAC1Bp0C,EAAMga,UAAW,GAIjB,4DAAaha,EAAb,OAIRs1C,WAzUW,SAyUA11C,GACX,WACQm0C,EAAOl9C,KAAK09C,SAEZH,EAAQhuC,KAAKuoC,IAAI93C,KAAKq9C,SAAW,GAEhCH,EAAOK,IACRL,EAAOK,GAGX,IAAIp9C,EAAS0X,MAAM7X,KAAKu9C,OAAO94C,OAE1By4C,EAAO/8C,EAASo9C,IACjBL,EAAO/8C,EAASo9C,GAGpB,IAAI7lC,EAAUnO,MAAG,IAAKR,GAEtB,GAAK2O,EAAUwlC,EAAOK,EAClB,OAAO,KAGX,GAAK7lC,EAAUnI,KAAKC,IAAI,EAAG0tC,EAAOK,GAC9B,OAAO,KAGX,I,EAAIp0C,EAAQ,CACRwB,KAAM3K,KAAK2K,KACX6F,KAAMxQ,KAAKwQ,MAWf,OARKkH,IAAY1X,KAAK09C,WAClBv0C,EAAMga,UAAW,GAGrBha,EAAMsU,QAAU,WACZ,EAAKsgC,YAAYrmC,IAIjB,4DAAavO,E,qBAASuO,I,6EAAAA,EAAtB,2BAAsBA,OAI9BgnC,YArXW,WAsXX,WACQnB,EAAQh8C,MAAI0D,KAAKjF,KAAKy9C,aAAa,SAAC10C,GACpC,OAAO,EAAKiB,KAAK,aAAV,CAAwBjB,MAGnC,OACI,mCAAW,sBAAX,CACM/I,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,IAFN,SAGSu9C,GAHT,CAIMv9C,KAAKgK,KAAK,aAAVhK,GACAA,KAAKgK,KAAK,aAAVhK,OAKd2+C,WAtYW,SAsYAC,GAEP,IAAIxsC,EAAiBpS,KAAKgK,KAAK,SAC3B8T,MAAIC,QAAQ6gC,IAEhB,OAAK95C,MAAIC,WAAWqN,GACTA,IAGJpS,KAAKqS,OAAOusC,IAAS5+C,KAAKqS,OAAOusC,MAG5CtsC,OAlZW,WAmZX,WACQusC,EAAY,CACZ,cACA,gBAAkB7+C,KAAKwQ,KACvB,gBAAkBxQ,KAAK2K,MAG3B,OAAO,mCAAYk0C,GAAZ,CAECt9C,MAAI0D,KAAKjF,KAAKs9C,QAAQ,SAACsB,GACnB,OAAO,EAAK50C,KAAK,aAAV,CAAwB40C,UC7ZpC,mBAAUp8B,GACrBA,EAAI6B,UAAUy6B,EAAUxgD,KAAMwgD,K,gyBCDnB,OAEXxgD,KAAM,QAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,OAIfsuB,SAAU,oBAGF,OAAO,GAEX3uB,KAAM,CAACS,UAGXgY,KAAM,oBAGE,MAAO,IAEXzY,KAAM,CAAC8M,SAGXjH,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,UAGXoY,YAAa,oBAGL,MAAO,IAEX7Y,KAAM,CAAC8M,SAGXmM,UAAW,oBAGH,OAAO,GAEXjZ,KAAM,CAACS,UAGX2zC,cAAe,oBAGP,OAAOnhC,KAAKC,MAAM2D,OAEtB7W,KAAM,CAAC8M,SAGXunC,WAAY,oBAGJ,OAAO/9C,SAAOsJ,MAAM,gBAExBI,KAAM,CAAC8M,UAKfnM,KA/EW,WAiFP,MAAO,CACH0hB,UAAWhtB,KAAKgL,aAIxBY,MAAO,CAEHZ,WAFG,WAIMhL,KAAKgL,aAAehL,KAAKgtB,YAC1BhtB,KAAKgtB,UAAYhtB,KAAKgL,aAI9BgiB,UATG,WAWMloB,MAAIgF,QAAQ9J,KAAKgtB,aAClBhtB,KAAK2U,MAAMwU,MAAMnqB,MAAQ,QAMrC8M,QAAS,CAELmzC,YAFK,WAIDj/C,KAAK2U,MAAMwU,MAAM7F,SAGrB47B,WAPK,WASD,IAAIlyB,EAAY,EACThtB,KAAK2U,MAAMwU,MAAMg2B,OAGjBn/C,KAAKs5B,WACRtM,EAAYA,EAAU,IAG1BhtB,KAAKgG,MAAM,oBAAqBhG,KAAKgtB,UAAYA,IAGrDoyB,UApBK,WAsBDp/C,KAAKgG,MAAM,oBAAqB,QAKxCssB,YAnIW,WAqIP,IAAInpB,EAAQ,CACRqH,KAAMxQ,KAAKwQ,KACX2S,UAAU,EACVM,cAAc,GAkBlB,OAfAta,EAAK,YAAkBnJ,KAAKo/C,UAErBp/C,KAAKs5B,WACRnwB,EAAM6B,WAAajI,MAAInE,IAAIoB,KAAKgtB,UAAW,SAG1ChtB,KAAKs5B,WACNnwB,EAAM6B,WAAa/J,SAAOC,OAAO,2BAC7BlB,KAAKgtB,UAAUvoB,SAGlBzE,KAAK4jB,YAAc9e,MAAIgF,QAAQ9J,KAAKgtB,aACrC7jB,EAAMia,KAAOpjB,KAAK++C,eAIlB,2DAAY51C,EAAZ,OAMRk2C,aAjKW,WAkKX,WACQl2C,EAAQ,CACRqH,KAAMxQ,KAAKwQ,KACX2S,SAAUnjB,KAAKmjB,SACfC,KAAMpjB,KAAKojB,KACX3F,QAASzd,KAAKi/C,aAGlB,OACI,4DAAa91C,EAAb,2BAAqB,EAAK61C,gBAIlCM,aA/KW,WAiLP,IAAIn2C,EAAQ,CACR,QAAWnJ,KAAKk/C,YAGpB,OACI,mCAAW,iBAAX,CACI,wDAAW,QAAX,KAAwB,OAAxB,SAAyCl/C,KAAKs5B,UAAcnwB,GAA5D,SAKZmJ,OA5LW,WA8LP,IAAI7R,EAAY,CACZ,UAOJ,OAJKT,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACMT,KAAKgK,KAAK,cAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,GACAA,KAAKgK,KAAK,eAAVhK,OC1MH,mBAAUwiB,GACrBA,EAAI6B,UAAUk7B,EAAKjhD,KAAMihD,K,sDCDd,GAEXjhD,KAAM,UAEN6K,MAAO,CAEH6B,WAAY,oBAGJ,OAAO,GAEXL,KAAM,CAACyE,SAGX0nC,MAAO,oBAGC,MAAO,IAEXnsC,KAAM,CAACyE,SAGXkoC,MAAO,oBAGC,OAAO,GAEX3sC,KAAM,CAACyE,SAGXI,IAAK,oBAGG,OAAO,GAEX7E,KAAM,CAACyE,SAGXoB,KAAM,oBAGE,MAAO,MAEX7F,KAAM,CAAC8M,SAGXvW,OAAQ,oBAGA,MAAO,UAEXyJ,KAAM,CAAC8M,SAGX9M,KAAM,oBAGE,MAAO,WAEXA,KAAM,CAAC8M,SAGX0L,SAAU,oBAGF,OAAO,GAEXxY,KAAM,CAACS,WAKf2R,SAAU,CAENyiC,aAFM,WAIF,OAAOj2C,MAAI+tC,MAAM,EAAIt3C,KAAKwP,IAAMxP,KAAKgL,WAAa,EAAGhL,KAAKs3C,SAKlEmI,YAjFW,WAkFX,WAKI,OAAOl+C,MAAI0D,KAJC,CACR,EAAG,EAAG,EAAG,EAAG,IAGQ,SAACy6C,GAErB,IAAIb,EAAY,UAUhB,OARK,EAAKW,cAAgBE,EAAO,KAC7Bb,EAAY,WAGX,EAAKW,cAAgBE,IACtBb,EAAY,WAIZ,oCAAaA,GAAb,UAKZc,YAzGW,WA2GP,IAAIC,EAAO,CACP5gD,MAAOuK,MAAIwa,OAAO/jB,KAAKgL,WAAY,IAAK,GAAIhL,KAAKs3C,QAGrD,OAAKt3C,KAAKqS,OAAL,QACMrS,KAAKqS,OAAL,QAAoButC,GAGxB3+C,SAAOC,OAAOlB,KAAKkB,OAAQlB,KAAKgL,WAAY40C,IAGvDttC,OAtHW,WAwHP,IAAI7R,EAAY,CACZ,WACA,aAAeT,KAAKwQ,KACpB,aAAexQ,KAAK2K,MAOxB,OAJK3K,KAAKmjB,UACN1iB,EAAUgB,KAAK,cAIf,mCAAYhB,GAAZ,CACI,mCAAW,mBAAX,CACKT,KAAKgK,KAAK,cAAVhK,KAEL,mCAAW,mBAAX,CACKA,KAAKgK,KAAK,cAAVhK,SCxIN,mBAAUwiB,GACrBA,EAAI6B,UAAUw7B,EAAOvhD,KAAMuhD","file":"nano-ui.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@kizmann/pico-js\", \"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Nano\"] = factory(require(\"@kizmann/pico-js\"), require(\"vue\"));\n\telse\n\t\troot[\"Nano\"] = factory(root[\"pi\"], root[\"Vue\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__1__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { Arr, Obj, Num, Any, Dom, Event, Locale, UUID } from \"@kizmann/pico-js\";\n\nglobal.dragMods = [];\n\nclass NDragCounter\n{\n\n $el = null;\n\n constructor()\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__counter']\n });\n\n this.$el.appendTo(document.body);\n }\n\n get(event, count)\n {\n // Update dragover color/type\n this.update();\n\n this.$el.html(\n `<span>${Locale.choice(':count Item|:count Items', count)}</span>`\n );\n\n // Fix data transfer\n event.dataTransfer.setData('text/plain', '');\n\n if ( typeof event.dataTransfer.setDragImage !== 'function' ) {\n return;\n }\n\n // Set finally the drop image\n event.dataTransfer.setDragImage(this.$el.get(0), 0, 0);\n }\n\n update()\n {\n global.dragMods = global.keyMods;\n\n let classList = [\n 'n-draggable__counter'\n ];\n\n if ( Arr.has(global.dragMods, 18) ) {\n classList.push('n-modify--alt');\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n classList.push('n-modify--ctrl');\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n classList.push('n-modify--meta');\n }\n\n this.$el.attr('class', classList.join(' '));\n }\n\n}\n\nglobal.DragCounter = new NDragCounter;\n\nclass NDragIndicator\n{\n\n $el = null;\n\n parent = null;\n\n constructor(parent)\n {\n this.$el = Dom.make('div', {\n classList: ['n-draggable__indicator']\n });\n\n this.$el.appendTo(this.parent = parent);\n }\n\n resolve(event, safezone, el, strategy = 'inner')\n {\n let rect = el.getBoundingClientRect();\n\n if ( event.clientY < rect.y + safezone ) {\n strategy = 'before';\n }\n\n if ( event.clientY > rect.y + rect.height - safezone ) {\n strategy = 'after';\n }\n\n if ( Dom.find(el).hasClass('n-expanded') ) {\n strategy = strategy === 'after' ? 'inner' : strategy;\n }\n\n Arr.has(['before', 'after'], strategy) ?\n this.show(el, strategy) : this.hide();\n\n\n return strategy;\n }\n\n show(el, strategy)\n {\n let offsetTop = Dom.find(el).offsetTop(this.parent);\n\n let style = {\n top: offsetTop || 1\n };\n\n if ( strategy === 'after' ) {\n style.top = offsetTop + Dom.find(el).height();\n }\n\n this.$el.css(Obj.map(style, (item) => item + 'px'));\n }\n\n hide()\n {\n this.$el.css(null);\n }\n\n destroy()\n {\n this.$el.get(0).remove();\n }\n\n}\n\nclass NDraghandler\n{\n\n uid = null;\n\n rootNode = null;\n childNodes = {};\n\n dropNodes = [];\n cacheNodes = [];\n\n strategy = 'nodrop';\n frames = 0;\n timeout = 0;\n dragcount = {};\n\n constructor(rootNode)\n {\n this.rootNode = rootNode;\n }\n\n bindRoot(frame = null)\n {\n this.DragIndicator = new NDragIndicator(frame || this.rootNode.$el);\n\n if ( global.DragCache ) {\n this.bindDragstart.call(this, ...global.DragCache);\n }\n\n Dom.find(this.rootNode.$el).on('dragenter', (event) => {\n this.onDragenterRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragover', (event) => {\n this.onDragoverRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragleave', (event) => {\n this.onDragleaveRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragend', (event) => {\n this.onDragendRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('drop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Dom.find(this.rootNode.$el).on('dragdrop', (event) => {\n this.onDragdropRoot(event);\n });\n\n Event.bind('NDrag:start', this.bindDragstart.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:end', this.bindDragend.bind(this),\n this.rootNode.uid);\n\n Event.bind('NDrag:drop', this.bindDragdrop.bind(this),\n this.rootNode.uid);\n }\n\n unbindRoot()\n {\n let events = [\n 'dragstart',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ];\n\n Dom.find(this.rootNode.$el).off(events);\n\n Event.unbind('NDrag:start', this.rootNode.uid);\n Event.unbind('NDrag:end', this.rootNode.uid);\n Event.unbind('NDrag:drop', this.rootNode.uid);\n }\n\n onDragenterRoot(event)\n {\n event.preventDefault();\n }\n\n onDragoverRoot(event)\n {\n let isNode = Dom.find(event.target)\n .closest('.n-draglist-item');\n\n if ( isNode || !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 135 ) {\n return;\n }\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, null, this.strategy);\n });\n\n this.strategy = 'root';\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n this.DragIndicator.hide();\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-dragover');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-dragover');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(this.rootNode.$el).addClass('n-nodrop');\n } else {\n Dom.find(this.rootNode.$el).removeClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveRoot(event)\n {\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n }\n\n onDragendRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n Event.fire('NDrag:end');\n }\n\n onDragdropRoot(event)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(this.rootNode.$el)\n .removeClass('n-dragover n-nodrop');\n\n if ( this.strategy !== 'root' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(null, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindDragstart(group, cache)\n {\n if ( Arr.has(this.rootNode.allowGroups, group) ) {\n this.cacheNodes = JSON.parse(JSON.stringify(cache));\n }\n }\n\n bindDragend()\n {\n this.dragcount = {};\n\n this.cacheNodes = this.dropNodes = [];\n }\n\n bindDragdrop(...args)\n {\n if ( !this.dropNodes.length ) {\n return;\n }\n\n this.rootNode.tempSelected = [];\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n if ( !this.rootNode.removeNode ) {\n return;\n }\n\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n this.unlinkNodes(clone);\n this.removeNodes(clone);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n onDragstartNode(event, node)\n {\n if ( !this.rootNode.isSelected(node) ) {\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected = [node.uid]);\n }\n\n let cache = Arr.each(this.rootNode.tempSelected, (id) => {\n return Arr.find(this.rootNode.virtuals, { [this.rootNode.uniqueProp]: id });\n });\n\n global.DragCounter.get(event, cache.length);\n\n Arr.map(cache, (value) => {\n return { value, item: Obj.get(this.rootNode, value.route) };\n });\n\n Event.fire('NDrag:start', this.rootNode.group,\n this.dropNodes = cache);\n\n global.DragCache = [\n this.rootNode.group, this.dropNodes\n ];\n\n this.dragcount[node.uid] = 0;\n }\n\n onDragenterNode(event, node)\n {\n event.preventDefault();\n\n if ( !this.dragcount[node.uid] ) {\n this.dragcount[node.uid] = 0;\n }\n\n this.dragcount[node.uid] ++;\n }\n\n onDragoverNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n event.preventDefault();\n\n if ( this.frames && Date.now() - this.frames < 45 ) {\n return;\n }\n\n let safezone = this.rootNode\n .safezone(node.$el.clientHeight);\n\n this.strategy = this.DragIndicator\n .resolve(event, safezone, node.$el);\n\n let targetNode = {\n value: node.value, item: node.item\n };\n\n let allowDrop = this.rootNode.allowDrop;\n\n if ( !Any.isFunction(allowDrop) ) {\n allowDrop = () => this.rootNode.allowDrop;\n }\n\n let rainbow = Arr.each(this.cacheNodes, (node) => {\n return !!allowDrop(node, targetNode, this.strategy);\n });\n\n let isInSelf = Arr.has(node.value.cascade,\n this.rootNode.tempSelected);\n\n rainbow.push(!isInSelf);\n\n if ( Arr.has(rainbow, false) ) {\n this.strategy = 'nodrop';\n }\n\n if ( this.strategy === 'nodrop' ) {\n this.DragIndicator.hide();\n }\n\n if ( this.strategy !== 'nodrop' ) {\n Dom.find(node.$el).addClass('n-dragover');\n Dom.find(node.$el).removeClass('n-nodrop');\n }\n\n if ( this.strategy === 'nodrop' ) {\n Dom.find(node.$el).removeClass('n-dragover');\n Dom.find(node.$el).addClass('n-nodrop');\n }\n\n this.frames = Date.now();\n }\n\n onDragleaveNode(event, node)\n {\n this.dragcount[node.uid] --;\n\n if ( this.dragcount[node.uid] !== 0 ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n }\n\n onDragendNode(event, node)\n {\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n Event.fire('NDrag:end');\n\n global.DragCache = null;\n }\n\n onDragdropNode(event, node)\n {\n if ( !this.cacheNodes.length ) {\n return;\n }\n\n Dom.find(node.$el).removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n if ( this.strategy === 'nodrop' ) {\n return;\n }\n\n event.preventDefault();\n\n this.moveNodes(node, this.strategy);\n\n Event.fire('NDrag:drop');\n }\n\n bindNode(node)\n {\n if ( this.childNodes[node.uid] ) {\n this.unbindNode(node);\n }\n\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n let $el = Dom.find(node.$el);\n\n $handle.on('dragstart', (event) => {\n this.onDragstartNode(event, node);\n });\n\n $el.on('dragenter', (event) => {\n this.onDragenterNode(event, node);\n });\n\n $el.on('dragover', (event) => {\n this.onDragoverNode(event, node);\n });\n\n $el.on('dragleave', (event) => {\n this.onDragleaveNode(event, node);\n });\n\n $el.on('dragend', (event) => {\n this.onDragendNode(event, node);\n });\n\n $el.on('drop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n $el.on('dragdrop', (event) => {\n this.onDragdropNode(event, node);\n });\n\n this.childNodes[node.uid] = node;\n }\n\n unbindNode(node)\n {\n let $handle = Dom.find(node.$el);\n\n if ( this.rootNode.handle ) {\n $handle = $handle.find('[draggable]');\n }\n\n $handle.off('dragstart');\n\n let $el = Dom.find(node.$el);\n\n $el.off([\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'dragend',\n 'drop',\n 'dragdrop',\n ]);\n\n $el.removeClass('n-dragover n-nodrop');\n\n this.DragIndicator.hide();\n\n delete this.childNodes[node.uid];\n }\n\n moveNodes(target, strategy) {\n\n if ( this.rootNode.items !== undefined ) {\n return this.moveNodesMany(target, strategy);\n }\n\n if ( this.rootNode.item !== undefined ) {\n return this.moveNodesOne(target, strategy);\n }\n\n return null;\n }\n\n moveNodesOne(target, strategy)\n {\n let clone = {\n items: [Obj.clone(this.rootNode.item)]\n };\n\n if ( this.rootNode.insertNode ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n let source = Arr.first(this.cacheNodes);\n\n this.rootNode.$emit('move', Obj.get(source, 'value.id'),\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit('moveRaw',\n source, target, strategy);\n\n this.rootNode.$emit('update:item',\n Obj.get(source, 'item'));\n }\n\n moveNodesMany(target, strategy)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n if ( this.rootNode.removeNode ) {\n this.unlinkNodes(clone);\n }\n\n if ( !this.dropNodes.length ) {\n Arr.each(this.cacheNodes, (value, key) => {\n this.cacheNodes[key]['item'] = this.rootNode.transformDrop(value.item);\n });\n }\n\n if ( this.rootNode.insertNode && strategy === 'root' ) {\n clone = this.moveNodesRoot(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'inner' ) {\n clone = this.moveNodesInto(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'before' ) {\n clone = this.moveNodesBefore(clone, target);\n }\n\n if ( this.rootNode.insertNode && strategy === 'after' ) {\n clone = this.moveNodesAfter(clone, target);\n }\n\n if ( this.rootNode.removeNode ) {\n clone = this.removeNodes(clone);\n }\n\n let sources = Arr.each(this.cacheNodes, (node) => {\n return node.item[this.rootNode.uniqueProp];\n });\n\n this.dropNodes = this.rootNode.tempSelected = [];\n\n let eventName = 'move';\n\n if ( Arr.has(global.dragMods, 18) ) {\n eventName = 'moveAlt';\n }\n\n if ( Arr.has(global.dragMods, 17) ) {\n eventName = 'moveCtrl';\n }\n\n if ( Arr.has(global.dragMods, 91) ) {\n eventName = 'moveMeta';\n }\n\n this.rootNode.$emit(eventName, sources,\n Obj.get(target, 'uid'), strategy);\n\n this.rootNode.$emit(eventName + 'Raw',\n this.cacheNodes, target, strategy);\n\n this.rootNode.$emit('update:selected',\n this.rootNode.tempSelected);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n unlinkNodes(clone)\n {\n Arr.each(this.dropNodes, (node) => {\n Obj.set(clone, node.value.route, null);\n });\n }\n\n removeNodes(clone, prop = 'items')\n {\n clone[prop] = Arr.filter(clone[prop], (node) => {\n return !!node;\n });\n\n Arr.map(clone[prop], (node) => {\n\n if ( !node[this.rootNode.childProp] ) {\n return node;\n }\n\n return this.removeNodes(node,\n this.rootNode.childProp);\n });\n\n return clone;\n }\n\n moveNodesRoot(clone)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n Arr.each(this.cacheNodes, (node) => {\n clone.items.push(node.item);\n });\n\n return clone;\n }\n\n moveNodesInto(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = [\n target.value.route,\n this.rootNode.childProp\n ].join('.');\n\n let children = Obj.get(clone,\n targetRoute, []);\n\n Arr.each(this.cacheNodes, (node) => {\n children.push(node.item);\n });\n\n Obj.set(clone, targetRoute, children);\n\n return clone;\n }\n\n moveNodesBefore(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n moveNodesAfter(clone, target)\n {\n if ( this.rootNode.disableMove ) {\n return clone;\n }\n\n let targetRoute = target.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n Arr.each(this.cacheNodes, (node, index) => {\n items.splice(target.value.index + index + 1, 0, node.item);\n });\n\n Obj.set(clone, targetRoute, items);\n\n return clone;\n }\n\n copyNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n let target = Obj.except(node.item, [], {\n [this.rootNode.uniqueProp]: UUID()\n });\n\n items.splice(node.value.index + 1,\n 0, target);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n removeNode(node)\n {\n let clone = {\n items: Obj.clone(this.rootNode.items)\n };\n\n let targetRoute = node.value.route\n .replace(/\\.[0-9]+$/, '');\n\n let items = Obj.get(clone, targetRoute);\n\n items.splice(node.value.index, 1);\n\n Obj.set(clone, targetRoute, items);\n\n this.rootNode.$emit('update:items', clone.items);\n }\n\n reduce(items, ...props)\n {\n return Arr.reduce(items, (merge, item, index) =>\n this.reduceItem(merge, item, Num.int(index), ...props), []);\n }\n\n reduceItem(merge, item, index, depth = 0, route = 'items', cascades = [])\n {\n // Get a unique id\n let unique = Obj.get(item,\n this.rootNode.uniqueProp, UUID());\n\n // Add unique to cascader\n let tempCascade = Arr.merge(cascades,\n [unique]);\n\n let virtual = {\n index: index,\n depth: depth,\n route: [route, index].join('.'),\n parent: Arr.last(cascades),\n cascade: tempCascade,\n };\n\n virtual[this.rootNode.uniqueProp] = unique;\n\n let children = Obj.get(item,\n this.rootNode.childProp, []);\n\n if ( Any.isEmpty(children) ) {\n return Arr.merge(merge, [virtual]);\n }\n\n let childRoute = [\n route, index,\n this.rootNode.childProp\n ].join('.');\n\n let props = [\n depth + 1, childRoute, tempCascade\n ]\n\n return Arr.merge(merge, [virtual],\n this.reduce(children, ...props));\n }\n\n}\n\nexport default NDraghandler;","import { Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n ctor(key, fallback = null)\n {\n let ctor = Obj.get(this.$options, key.split('.'), -1);\n\n // if ( ctor === -1 ) {\n // ctor = Obj.get(this.$vnode.componentOptions.Ctor,\n // Arr.merge(['options'], key.split('.')), -1);\n // }\n\n if ( ctor === -1 ) {\n ctor = fallback;\n }\n\n if ( typeof ctor !== 'function' ) {\n return ctor;\n }\n\n return (...args) => ctor.apply(this, args);\n }\n\n}\n","import { Arr, Dom, Any, Locale, Obj, UUID, Num } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderPropType = {\n 'root': Locale.trans('Root'),\n 'binds': Locale.trans('Bind'),\n 'props': Locale.trans('Property'),\n 'attrs': Locale.trans('Attribute'),\n 'on': Locale.trans('Event'),\n};\n\nglobal.NanoBuilderPropCode = {\n 'string': Locale.trans('String'),\n 'number': Locale.trans('Number'),\n 'boolean': Locale.trans('Boolean'),\n 'object': Locale.trans('Object'),\n 'function': Locale.trans('Function'),\n};\n\nglobal.NanoBuilderProps = {\n classList: {\n for: ['root', 'attrs', 'props'], type: 'String'\n },\n vIf: {\n for: ['root'], type: 'String'\n },\n vShow: {\n for: ['root'], type: 'String'\n },\n};\n\nglobal.NanoBuilderTypes = {\n //\n};\n\nglobal.NanoBuilderIndexies = {\n //\n};\n\n// DOM elements\nrequire('./prototypes/html/nano');\nrequire('./prototypes/html/div');\nrequire('./prototypes/html/span');\n\n// Nano elements\nrequire('./prototypes/button/n-button');\nrequire('./prototypes/button/n-button-group');\nrequire('./prototypes/cascader/n-cascader');\nrequire('./prototypes/checkbox/n-checkbox');\nrequire('./prototypes/checkbox/n-checkbox-group');\nrequire('./prototypes/confirm/n-confirm');\nrequire('./prototypes/datepicker/n-datepicker');\nrequire('./prototypes/datetimepicker/n-datetimepicker');\nrequire('./prototypes/durationpicker/n-durationpicker');\nrequire('./prototypes/empty/n-empty');\nrequire('./prototypes/form/n-form');\nrequire('./prototypes/form/n-form-group');\nrequire('./prototypes/form/n-form-item');\nrequire('./prototypes/input/n-input');\nrequire('./prototypes/input-number/n-input-number');\nrequire('./prototypes/loader/n-loader');\nrequire('./prototypes/modal/n-modal');\nrequire('./prototypes/radio/n-radio');\nrequire('./prototypes/radio/n-radio-group');\nrequire('./prototypes/rating/n-rating');\nrequire('./prototypes/select/n-select');\nrequire('./prototypes/slider/n-slider');\nrequire('./prototypes/switch/n-switch');\nrequire('./prototypes/table/n-table');\nrequire('./prototypes/table/n-table-column');\nrequire('./prototypes/tabs/n-tabs');\nrequire('./prototypes/tabs/n-tabs-item');\nrequire('./prototypes/tags/n-tags');\nrequire('./prototypes/tags/n-tags-item');\nrequire('./prototypes/timepicker/n-timepicker');\nrequire('./prototypes/transfer/n-transfer');\n\nexport default {\n\n name: 'NBuilder',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n model: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n renderDemo: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderExport: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n init: false, demo: false, collapse: [], safevar: this.normalizeModel(this.modelValue)\n };\n },\n\n watch: {\n modelValue: function () {\n this.safevar = this.normalizeModel(this.modelValue)\n }\n },\n\n mounted()\n {\n this.init = true;\n },\n\n methods: {\n\n exportJson(value)\n {\n return JSON.stringify(Obj.clone(value), null, 4).replace(/\"!FUNC:(.*?):FUNC!\"/g, (matches) => {\n return matches.replace(/^\"!FUNC:/, '').replace(/:FUNC!\"$/, '').replace(/\\\\\"/, '\"').replace(/\\\\n/g, \"\\n\");\n });\n },\n\n exportExecutable(value)\n {\n return new Function(`return ${this.exportJson(value)};`)();\n },\n\n normalizeModel(model)\n {\n let result = {};\n\n Obj.each(model, (value, key) => {\n result[key] = Obj.assign(this.normalizeChild(value), {\n order: (Any.vals(result).length + 1) * 100\n });\n });\n\n return result;\n },\n\n normalizeChild(child)\n {\n let result = this.applyProps(null, {\n ...Obj.except(child, ['content']), content: {}, builder: this.buildProps(child),\n });\n\n if ( Any.isArray(child.content) ) {\n child.content = Arr.first(child.content);\n }\n\n if ( ! Any.isPlain(child.content) && ! Any.isString(child.content) ) {\n child.content = {};\n }\n\n result.builder[\"null\"] = {\n type: typeof child.content\n }\n\n if (Any.isPlain(child.content)) {\n Obj.each(child.content || {}, (value, key) => {\n\n if ( ! key.match(':') ) {\n key += ':' + UUID();\n }\n\n result['content'][key] = Obj.assign(this.normalizeChild(value), {\n order: (Any.vals(result['content']).length + 1) * 100\n });\n });\n } else {\n result.content = child.content;\n }\n\n return result;\n },\n\n getOriginalValue(prop)\n {\n let safevalue = prop.value;\n\n if ( typeof prop.value === 'function' ) {\n safevalue = btoa(\"!FUNC:\" + prop.value.toString() + \":FUNC!\");\n }\n\n return safevalue;\n },\n\n getSafeValue(prop)\n {\n let safevalue = '';\n\n if ( typeof prop.value === 'string' ) {\n safevalue = Any.string(prop.value);\n }\n\n if ( typeof prop.value === 'boolean' ) {\n safevalue = Any.string(prop.value);\n }\n\n if ( typeof prop.value === 'number' ) {\n safevalue = Any.string(prop.value);\n }\n\n if ( typeof prop.value === 'object' ) {\n safevalue = JSON.stringify(prop.value);\n }\n\n if ( typeof prop.value === 'function' ) {\n safevalue = btoa(\"!FUNC:\" + prop.value.toString() + \":FUNC!\");\n }\n\n return safevalue;\n },\n\n getRealValue(prop)\n {\n let realvalue = '';\n\n if ( prop.code === 'string' ) {\n realvalue = Any.string(prop.value);\n }\n\n if ( prop.code === 'boolean' ) {\n realvalue = Any.boolean(prop.value);\n }\n\n if ( prop.code === 'number' ) {\n realvalue = Any.number(prop.value, 0);\n }\n\n if ( prop.code === 'object' ) {\n realvalue = JSON.parse(prop.value);\n }\n\n if ( prop.code === 'function' ) {\n realvalue = atob(prop.original);\n }\n\n return realvalue;\n },\n\n changeElement(key, update)\n {\n if ( Any.isEmpty(update) ) {\n return;\n }\n\n let newKey = key.replace(/^(.*?)([^\\.]+):([^\\.]+)$/, `$1${update}:$3`);\n\n let value = Obj.get(this, key, {});\n\n Obj.unset(this, key);\n Obj.set(this, newKey, value);\n\n this.collapse = Arr.each(this.collapse, (k) => {\n return k.replace(key, newKey);\n });\n },\n\n changeAlias(key, update)\n {\n if ( Any.isEmpty(update) ) {\n return;\n }\n\n let newKey = key.replace(/^(.*?)([^\\.]+):([^\\.]+)$/, `$1$2:${update}`);\n\n let value = Obj.get(this, key, {});\n\n Obj.unset(this, key);\n Obj.set(this, newKey, value);\n\n this.collapse = Arr.each(this.collapse, (k) => {\n return k.replace(key, newKey);\n });\n },\n\n changeType(key, type)\n {\n let value = Obj.get(this, key, {});\n\n let original = Obj.get(value, 'builder.null.type');\n\n if ( type === 'object' ) {\n value.content = {};\n }\n\n if ( type === 'string' ) {\n value.content = '';\n }\n\n Obj.set(value, 'builder.null.type', typeof value.content);\n },\n\n applyProps(key = null, value = {})\n {\n if ( ! Any.isEmpty(key) ) {\n value = Obj.get(this, key, {});\n }\n\n let reset = [\n 'vIf', 'vShow', 'classList', 'vLocale', 'binds', 'attrs', 'props', 'on',\n ];\n\n Obj.each(reset, (prop) => {\n Obj.unset(value, prop);\n });\n\n Obj.each(value.builder || {}, (val) => {\n\n if ( Any.isEmpty(val.key) ) {\n return;\n }\n\n let bindValue = {\n value: val.value, fallback: null\n };\n\n if ( val.code === 'string' ) {\n bindValue.fallback = Any.string(val.fallback || '');\n }\n\n if ( val.code === 'boolean' ) {\n bindValue.fallback = Any.boolean(val.fallback || 'false');\n }\n\n if ( val.code === 'object' ) {\n bindValue.fallback = JSON.parse(val.fallback || '{}');\n }\n\n if ( val.type === 'binds' ) {\n return Obj.set(value, [val.type, val.key], bindValue);\n }\n\n let realvalue = '';\n\n try {\n realvalue = this.getRealValue(val);\n } catch (e) {\n if ( ! Any.isEmpty(val.value) ) {\n console.error('Invalid JSON: ' + val.value);\n }\n }\n\n if ( val.type === 'root' ) {\n return Obj.set(value, val.key, realvalue);\n }\n\n if ( val.type === 'attrs' ) {\n return Obj.set(value, [val.type, val.key], realvalue);\n }\n\n if ( val.type === 'props' ) {\n return Obj.set(value, [val.type, val.key], realvalue);\n }\n\n if ( val.type === 'on' ) {\n return Obj.set(value, [val.type, val.key], realvalue);\n }\n\n });\n\n if ( Any.isEmpty(key) ) {\n return value;\n }\n\n return Obj.set(this, key, value);\n },\n\n buildProps(el, key = null)\n {\n let builder = {};\n\n Obj.each(Obj.only(el, ['vIf', 'vShow', 'classList']), (value, sey) => {\n builder[UUID()] = {\n type: 'root', code: typeof value, key: sey, value: this.getSafeValue({ value }), fallback: null, original: this.getOriginalValue({ value })\n };\n });\n\n Obj.each(Obj.get(el, `binds`, {}), (value, sey) => {\n\n let result = {\n type: 'binds', code: typeof value, key: sey, fallback: null, original: this.getOriginalValue({ value })\n }\n\n if ( Any.isString(value) ) {\n result.value = this.getSafeValue({ value });\n }\n\n if ( Any.isObject(value) ) {\n Obj.assign(result, { value: this.getSafeValue(value), fallback: Obj.get(value, 'fallback', null) })\n }\n\n builder[UUID()] = result;\n });\n\n Obj.each(Obj.get(el, `props`, {}), (value, sey) => {\n builder[UUID()] = { type: 'props', code: typeof value, key: sey, value: this.getSafeValue({ value }), fallback: null, original: this.getOriginalValue({ value }) };\n });\n\n Obj.each(Obj.get(el, `attrs`, {}), (value, sey) => {\n builder[UUID()] = { type: 'attrs', code: typeof value, key: sey, value: this.getSafeValue({ value }), fallback: null, original: this.getOriginalValue({ value }) };\n });\n\n Obj.each(Obj.get(el, `on`, {}), (value, sey) => {\n builder[UUID()] = { type: 'on', code: typeof value, key: sey, value: this.getSafeValue({ value }), fallback: null, original: this.getOriginalValue({ value }) };\n });\n\n if ( Any.isEmpty(key) ) {\n return builder;\n }\n\n this.$nextTick(() => {\n Obj.set(this, `${key}.builder`, builder);\n });\n\n return builder;\n },\n\n addProp(key)\n {\n let value = Obj.get(this, `${key}.builder`, {});\n\n Obj.set(value, UUID(), {\n type: 'props', code: 'string', key: '', value: '', fallback: null\n });\n\n Obj.set(this, `${key}.builder`, value);\n },\n\n removeProp(key, prop)\n {\n Obj.unset(this, `${key}.builder.${prop}`);\n\n this.applyProps(key);\n },\n\n collapseElement(key)\n {\n Arr.toggle(this.collapse, key);\n },\n\n addElement(key)\n {\n let value = Obj.get(this, key, {});\n\n Obj.set(value, 'div:' + UUID(), {\n order: (Any.vals(value).length + 1) * 100, props: { modelValue: '$scope.list' }, content: {}\n });\n\n Obj.assign(this, key, value);\n },\n\n removeElement(key)\n {\n Obj.unset(this, key);\n },\n\n moveupElement(key)\n {\n let [el, childs] = [\n Obj.get(this, key), Obj.get(this, key.replace(/\\.[^.]+$/, ''))\n ];\n\n let close = Number.MIN_VALUE;\n\n Arr.each(childs, (sub) => {\n if ( sub.order < el.order ) close = Math.max(close, sub.order);\n });\n\n if ( close === Number.MIN_VALUE ) {\n return;\n }\n\n let replacement = Arr.find(childs, {\n order: close\n });\n\n Obj.assign(replacement, {\n order: el.order\n });\n\n Obj.assign(el, { order: close });\n },\n\n movedownElement(key)\n {\n let [el, childs] = [\n Obj.get(this, key), Obj.get(this, key.replace(/\\.[^.]+$/, ''))\n ];\n\n let close = Number.MAX_VALUE;\n\n Arr.each(childs, (sub) => {\n if ( sub.order > el.order ) close = Math.min(close, sub.order);\n });\n\n if ( close === Number.MAX_VALUE ) {\n return;\n }\n\n let replacement = Arr.find(childs, {\n order: close\n });\n\n Obj.assign(replacement, {\n order: el.order\n });\n\n Obj.assign(el, { order: close });\n },\n\n },\n\n renderTools(el, value, key)\n {\n let rootProps = {\n //\n };\n\n rootProps['onDblclick'] = () => {\n this.collapseElement(key);\n };\n\n let collapseProps = {\n href: 'javascript:void(0)',\n };\n\n collapseProps['onClick'] = () => {\n this.collapseElement(key);\n };\n\n let addProps = {\n href: 'javascript:void(0)',\n };\n\n addProps['onClick'] = () => {\n this.addElement(`${key}.content`);\n };\n\n let removeProps = {\n href: 'javascript:void(0)',\n };\n\n removeProps['onClick'] = () => {\n this.removeElement(key);\n };\n\n let moveupProps = {\n href: 'javascript:void(0)',\n };\n\n moveupProps['onClick'] = () => {\n this.moveupElement(key);\n };\n\n let movedownProps = {\n href: 'javascript:void(0)',\n };\n\n movedownProps['onClick'] = () => {\n this.movedownElement(key);\n };\n\n\n return (\n <div class=\"n-builder__tools\" {...rootProps}>\n <div class=\"n-builder__collapse\">\n <a {...collapseProps}><i class=\"fa fa-bars\"></i></a>\n </div>\n <div class=\"n-builder__name\">\n {key.replace(/^.*?([^\\.:]+):([^\\.:]+)$/, '$1')}<span>{key.replace(/^.*?([^\\.:]+):([^\\.:]+)$/, '$2')}</span>\n </div>\n <div class=\"n-builder__move\">\n <a {...moveupProps}><i class=\"fa fa-angle-up\"></i></a>\n <a {...movedownProps}><i class=\"fa fa-angle-down\"></i></a>\n </div>\n <div class=\"n-builder__add\">\n <a {...addProps}><i class=\"fa fa-plus\"></i></a>\n </div>\n <div class=\"n-builder__remove\">\n <a {...removeProps}><i class=\"fa fa-trash\"></i></a>\n </div>\n </div>\n );\n },\n\n renderProp(el, sub, key)\n {\n if ( sub === \"null\" ) {\n return null;\n }\n\n let group = key.replace(/^.*?([^\\.]+):([^\\.]+)$/, '$1')\n let value = Obj.get(this.$data, `${key}.builder.${sub}`, {});\n\n let props = Obj.clone(Obj.get(global.NanoBuilderIndexies, `${group}.props`, {}));\n\n props = Obj.assign({}, global.NanoBuilderProps, props);\n\n Obj.each(props, (prop, index) => {\n if ( ! Any.isEmpty(prop.for) && ! Arr.has(prop.for, value.type) ) {\n props = Obj.unset(props, index);\n }\n });\n\n let typeProps = {\n size: 'sm', options: global.NanoBuilderPropType\n };\n\n typeProps['onUpdate:modelValue'] = () => {\n this.$nextTick(() => this.applyProps(key));\n };\n\n let keyProps = {\n size: 'sm', allowCreate: true, options: props, optionsLabel: '$index'\n };\n\n keyProps['onUpdate:modelValue'] = () => {\n this.$nextTick(() => this.applyProps(key));\n };\n\n let codeProps = {\n size: 'sm', options: global.NanoBuilderPropCode\n };\n\n codeProps['onUpdate:modelValue'] = () => {\n this.$nextTick(() => this.applyProps(key));\n };\n\n let values = Obj.get(props, `${value.key}.options`, []);\n\n let valueInputProps = {\n size: 'sm', model: this.model, scope: this.scope\n };\n\n valueInputProps['onUpdate:modelValue'] = () => {\n this.$nextTick(() => this.applyProps(key));\n };\n\n let valueHtml = (\n <NReferencePicker vModel={value.value} {...valueInputProps} />\n );\n\n let fallbackProps = {\n size: 'sm', minRows: 1, autoRows: true\n };\n\n fallbackProps['onUpdate:modelValue'] = () => {\n this.$nextTick(() => this.applyProps(key));\n };\n\n let tooltipHtml = (\n <div class=\"n-builder_prop-text\">\n <p>{Obj.get(props, `${value.key}.desc`, '')}</p>\n </div>\n );\n\n return (\n <div class=\"n-builder_prop\">\n <div class=\"n-builder_prop-type\">\n <NSelect vModel={value.type} {...typeProps} />\n </div>\n <div class=\"n-builder_prop-key\">\n <NSelect vModel={value.key} {...keyProps} />\n </div>\n <div class=\"n-builder_prop-func\">\n <NSelect vModel={value.code} {...codeProps} />\n </div>\n <div class=\"n-builder_prop-value\">\n {valueHtml}\n </div>\n <div class=\"n-builder_prop-fallback\">\n <NInput vModel={value.fallback} {...fallbackProps} />\n </div>\n <div class=\"n-builder_prop-button\">\n <NButton size=\"sm\" type=\"danger\" onClick={() => this.removeProp(key, sub)}>Remove</NButton>\n </div>\n </div>\n );\n },\n\n renderProps(el, value, key)\n {\n if ( !Arr.has(this.collapse, key) ) {\n return null;\n }\n\n let elementProps = {\n options: global.NanoBuilderTypes, allowCreate: true, modelValue: key.replace(/^.*?([^\\.]+):([^\\.]+)$/, '$1'),\n };\n\n elementProps['onUpdate:modelValue'] = (value) => {\n this.changeElement(key, value);\n };\n\n let aliasProps = {\n modelValue: key.replace(/^.*?([^\\.]+):([^\\.]+)$/, '$2'),\n };\n\n aliasProps['onUpdate:modelValue'] = (value) => {\n this.changeAlias(key, value);\n };\n\n let plainProps = {\n modelValue: Obj.get(value, 'builder.null.type'),\n options: {\n 'object': this.trans('Object'),\n 'string': this.trans('String'),\n }\n };\n\n plainProps['onUpdate:modelValue'] = (value) => {\n this.changeType(key, value);\n };\n\n let addProps = {\n type: 'primary', size: 'sm', link: true\n };\n\n addProps['onClick'] = () => {\n this.addProp(key, value);\n };\n\n let props = Obj.get(value, `builder`);\n\n if ( ! Obj.has(value, 'builder') ) {\n props = this.buildProps(el, key, value);\n }\n\n return (\n <NForm class=\"n-builder__props\">\n <NFormItem class=\"n-builder__element-type\" label={this.trans('Type')}>\n <NSelect {...elementProps} />\n </NFormItem>\n <NFormItem class=\"n-builder__element-alias\" label={this.trans('Alias')}>\n <NInput {...aliasProps} />\n </NFormItem>\n <NFormItem class=\"n-builder__element-plain\" label={this.trans('Content')}>\n <NSelect {...plainProps}>{this.trans('Enable plain')}</NSelect>\n </NFormItem>\n <div class=\"n-builder__element-prop\">\n <NButton {...addProps}>Add property</NButton>\n </div>\n <div class=\"n-builder__element-list\">\n {Arr.each(props, (prop, sub) => this.ctor('renderProp')(el, sub, key))}\n </div>\n </NForm>\n );\n },\n\n renderElement(el, value, key)\n {\n let classList = [\n 'n-builder__element'\n ];\n\n if ( Arr.has(this.collapse, key) ) {\n classList.push('is-open');\n }\n\n let builderHtml = () => {\n return this.ctor('renderBuilder')(value.content || {}, `${key}.content`);\n };\n\n if ( value.builder[\"null\"][\"type\"] === 'string' ) {\n builderHtml = () => {\n return (<div><NInput vModel={value.content} /></div>);\n };\n }\n\n return (\n <div class={classList}>\n {this.ctor('renderTools')(el, value, key)}\n {this.ctor('renderProps')(el, value, key)}\n {builderHtml()}\n </div>\n );\n },\n\n renderBuilder(el, key)\n {\n if ( Any.isEmpty(el) ) {\n return null;\n }\n\n let items = Arr.each(Obj.sort(Obj.clone(el), 'order'), (v) => {\n\n let args = [\n Obj.get(this.$data, key, {}),\n Obj.get(this.$data, [key, v._key], {}),\n `${key}.${v._key}`\n ];\n\n return this.ctor('renderElement')(...args);\n });\n\n return (\n <div class=\"n-builder__frame\">\n {items}\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-builder__body\">\n {this.ctor('renderBuilder')(this.safevar, 'safevar')}\n </div>\n );\n },\n\n renderHead()\n {\n let addProps = {\n type: 'primary'\n };\n\n addProps['onClick'] = () => {\n this.addElement('safevar');\n };\n\n let addHtml = (\n <div class=\"n-builder__head-add\">\n <NButton {...addProps}>{this.trans('Add root element')}</NButton>\n </div>\n );\n\n let demoProps = {\n type: 'primary'\n };\n\n demoProps['onClick'] = () => {\n this.demo = true;\n };\n\n let demoHtml = (\n <div class=\"n-builder__head-demo\">\n <NButton {...demoProps}>{this.trans('Render demo')}</NButton>\n </div>\n );\n\n return (\n <div class=\"n-builder__head\">\n {[addHtml, demoHtml]}\n </div>\n );\n },\n\n renderOutput()\n {\n return (\n <div class=\"n-builder__output\">\n <pre>{this.exportJson(this.safevar)}</pre>\n </div>\n );\n },\n\n renderDemo()\n {\n if ( ! this.renderDemo || ! this.demo ) {\n return null;\n }\n\n let renderFunction = this.$slots.default;\n\n if ( Any.isEmpty(renderFunction) ) {\n renderFunction = ({ render }) => render();\n }\n\n let modalProps = {\n width: '100%',\n height: '100%'\n };\n\n let configProps = {\n modelValue: this.model, scope: this.scope, config: this.exportExecutable(this.safevar)\n };\n\n let renderContent = () => {\n return ( <NConfigNext {...configProps} />);\n };\n\n return (\n <NModal vModel={this.demo} {...modalProps}>\n {renderFunction({ render: renderContent })}\n </NModal>\n );\n },\n\n render()\n {\n let classList = [\n 'n-builder',\n ];\n\n return (\n <div class={classList}>\n {[\n this.ctor('renderBody')(), this.ctor('renderHead')(), this.ctor('renderOutput')(), this.ctor('renderDemo')(),\n ]}\n </div>\n );\n }\n}\n","import { Arr, Obj, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.DEBUG_NVSCROLL = false;\n\nexport default {\n\n name: 'NVirtualscroller',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n itemHeight: {\n default()\n {\n return 34;\n }\n },\n\n itemWidth: {\n default()\n {\n return 0;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 65;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n let state = {\n start: 0, end: 0, grid: 1\n };\n\n return {\n state, buffer: [], width: 0, height: 0, load: true\n };\n },\n\n watch: {\n\n 'items': function () {\n this.updateRender();\n }\n\n },\n\n beforeMount()\n {\n this.scrollTop = 0;\n },\n\n mounted()\n {\n\n this.bindAdaptScroll()\n },\n\n\n beforeUnmount()\n {\n this.unbindAdaptScroll()\n },\n\n methods: {\n\n bindAdaptScroll()\n {\n this.refreshScroll = setInterval(this.onScrollupdate,\n 1000 / this.framerate);\n },\n\n unbindAdaptScroll()\n {\n clearInterval(this.refreshScroll);\n },\n\n isIndexRendered(index)\n {\n if ( ! this.itemHeight ) {\n return true;\n }\n\n return this.state.start < index &&\n this.state.end > index;\n },\n\n scrollIntoView(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n if ( index === -1 || index >= this.items.length ) {\n index = this.items.length;\n }\n\n if ( ! this.isIndexRendered(index) ) {\n return this.scrollToIndex(index);\n }\n\n let selector = `[data-index=\"${index}\"]`;\n\n this.$refs.scrollbar.scrollIntoView(selector);\n },\n\n scrollToIndex(index, delay = 0)\n {\n Any.delay(() => this.onScrollToIndex(index), delay);\n },\n\n onScrollToIndex(index)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n let total = Math.ceil(this.items.length /\n this.state.grid);\n\n index = Math.floor(index / this.state.grid);\n\n if ( index === -1 || index >= total ) {\n index = total;\n }\n\n let targetTop = index * this.itemHeight;\n\n if ( this.scrollTop > targetTop ) {\n return this.scrollTo(0, targetTop);\n }\n\n targetTop = targetTop - this.height +\n this.itemHeight;\n\n this.scrollTo(0, targetTop);\n },\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.scrollbar ) {\n return;\n }\n\n this.$refs.scrollbar.scrollTo(x, y);\n },\n\n clearState()\n {\n this.state = { start: 0, end: 0 };\n },\n\n updateRender()\n {\n if ( ! this.$refs.scrollbar ) {\n return Any.delay(this.updateRender);\n }\n\n this.scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n Any.async(this.refreshDriver);\n },\n\n onScrollupdate()\n {\n if ( ! this.threshold ) {\n return;\n }\n\n let scrollTop = this.$refs.scrollbar.\n $refs.content.scrollTop;\n\n if ( scrollTop === this.scrollTop ) {\n return;\n }\n\n this.scrollTop = scrollTop;\n\n let offset = this.$refs.scrollbar.$el.offsetHeight -\n this.$refs.scrollbar.$el.clientHeight;\n\n let isOutOfRange = scrollTop < 0 || scrollTop + this.height\n > this.$refs.inner.scrollHeight + offset;\n\n if ( isOutOfRange ) {\n return;\n }\n\n Any.async(this.refreshDriver);\n },\n\n onSizechange(height, width, el)\n {\n this.width = width;\n this.height = height;\n\n Any.async(this.refreshDriver);\n },\n\n\n refreshDriver(queue = true)\n {\n if ( Any.isEmpty(this.timer) ) {\n this.timer = Date.now();\n }\n\n if ( Date.now() - this.timer > 20 ) {\n queue = false;\n }\n\n clearTimeout(this.to);\n\n this.to = setTimeout(() => {\n this.refreshDriver(false);\n }, 25);\n\n if ( queue ) {\n return;\n }\n\n clearTimeout(this.to);\n\n let grid = 1;\n\n if ( this.itemWidth ) {\n grid = Math.floor((this.width - this.deathzone) /\n this.itemWidth) || 1;\n }\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n return this.state = { start: 0, end: 0, grid };\n }\n\n let total = Math.ceil(this.items.length\n / grid);\n\n let bufferItems = Math.round((this.height /\n this.itemHeight) * 0.6);\n\n let startItem = Math.round(this.scrollTop /\n this.itemHeight);\n\n let endItem = Math.round((this.scrollTop +\n this.height) / this.itemHeight);\n\n let start = (startItem - bufferItems);\n\n if ( start < 0 ) {\n start = 0;\n }\n\n let end = endItem + bufferItems;\n\n if ( end > total ) {\n end = total;\n }\n\n let state = { start, end, grid };\n\n if ( Any.isEqual(this.state, state) ) {\n return;\n }\n\n this.state = state;\n },\n\n },\n\n renderItem(passed)\n {\n passed.index = (passed.index +\n this.state.start);\n\n let topOffset = Math.round(this.itemHeight *\n passed.index);\n\n let renderFunction = this.$slots.default;\n\n if ( this.renderNode ) {\n renderFunction = this.renderNode;\n }\n\n let props = {\n 'data-index': passed.index\n };\n\n if ( this.NDraggable && this.useKeys ) {\n props.key = passed.value[this.NDraggable.uniqueProp];\n }\n\n let style = {};\n\n let isLazy = this.threshold && this.threshold <=\n this.items.length;\n\n if ( isLazy && this.state.grid === 1 ) {\n style.top = topOffset + 'px';\n }\n\n if ( this.itemHeight ) {\n style.height = this.itemHeight + 'px';\n }\n\n if ( this.state.grid !== 1 ) {\n style.width = this.itemWidth + 'px';\n }\n\n return (\n <div class=\"n-virtualscroller__item\" style={style} {...props}>\n { renderFunction(passed) }\n </div>\n );\n },\n\n renderRows()\n {\n let items = Arr.slice(this.items, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = this.items;\n }\n\n return Arr.each(items, (value, index) => {\n return this.ctor('renderItem')({ value, index });\n });\n },\n\n renderGridRows(passed)\n {\n let topOffset = Math.round(this.itemHeight *\n (passed.index + this.state.start));\n\n let style = {};\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n style.top = topOffset + 'px';\n }\n\n let counter = passed.index * this.state.start;\n\n return (\n <div data-row={passed.index} class=\"n-virtualscroller__row\" style={style}>\n {\n Arr.each(passed.chunk, (value, index) => {\n return this.ctor('renderItem')({\n value, index: index + counter\n });\n })\n }\n </div>\n );\n },\n\n renderGrid()\n {\n let chunks = Arr.chunk(this.items,\n this.state.grid);\n\n let items = Arr.slice(chunks, this.state.start,\n this.state.end);\n\n if ( ! this.threshold || this.threshold > this.items.length ) {\n items = chunks;\n }\n\n return Arr.each(items, (chunk, index) => {\n return this.ctor('renderGridRows')({ chunk, index });\n });\n },\n\n renderItems()\n {\n if ( ! this.items.length ) {\n return this.$slots.empty && this.$slots.empty() || null;\n }\n\n if ( this.state.grid === 1 ) {\n return this.ctor('renderRows')();\n }\n\n return this.ctor('renderGrid')();\n },\n\n render()\n {\n let classList = [\n 'n-virtualscroller'\n ];\n\n if ( this.threshold && this.threshold <= this.items.length ) {\n classList.push('n-virtualscroller--absolute');\n }\n\n let props = {\n overflowY: this.overflowY,\n overflowX: this.overflowX,\n offsetY: this.offsetY,\n offsetX: this.offsetX,\n onSizechange: this.onSizechange,\n };\n\n let style = {\n 'overflow-y': 'hidden'\n };\n\n let totalHeight = Math.ceil(this.items.length / this.state.grid) *\n this.itemHeight;\n\n if ( this.threshold && this.items.length ) {\n style.height = Math.ceil(totalHeight + this.offsetY) + 'px';\n }\n\n return (\n <NScrollbar class={classList} ref=\"scrollbar\" {...props}>\n <div ref=\"inner\" class=\"n-virtualscroller__inner\" style={style}>\n { this.ctor('renderItems')() }\n </div>\n </NScrollbar>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraglist',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n expanded: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.265;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 34;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n modifier: [],\n virtuals: [], \n visible: [], \n childNodes: {}, \n highlight: [],\n firstSelected: null,\n lastSelected: null,\n tempCurrent: this.current, \n tempExpanded: this.expanded, \n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n\n Dom.find(window).on('keydown',\n this.watchModifierDown, this._.uid);\n\n Dom.find(window).on('keyup',\n this.watchModifierUp, this._.uid);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected, \n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n Dom.find(document).off('keyup', null, this.uid);\n },\n\n watch: {\n \n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n expanded(value)\n {\n this.tempExpanded = value;\n\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchModifierDown(e)\n {\n Arr.add(this.modifier, e.which);\n },\n\n watchModifierUp(e)\n {\n Arr.remove(this.modifier, e.which);\n },\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n updateNode(node)\n {\n Obj.set(this, node.value.route, node.item);\n\n this.$emit('update:items', this.items);\n },\n\n findVirtual(unique)\n {\n let value = Arr.find(this.virtuals, (item) => {\n return item[this.uniqueProp] === unique;\n });\n\n if ( ! value ) {\n return null;\n }\n\n return {\n value, item: Obj.get(this, value.route, null)\n };\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return Arr.contains(this.tempExpanded, node.cascade.slice(0, -1));\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollTo(x, y));\n }\n\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n if ( ! this.$refs.virtualscroller ) {\n return Any.delay(() => this.scrollToIndex(index));\n }\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n let val = node;\n\n if ( !Any.isEmpty(key) ) {\n val = Obj.get(val, key);\n }\n\n if ( ! Any.isFunction(value) ) {\n value = (val) => val === value;\n }\n\n if ( ! value(val) ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n \n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n \n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent && \n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent && \n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current', \n this.tempCurrent = node.item);\n \n Event.fire('NDraglist:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible, \n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current', \n this.tempCurrent = item);\n \n Event.fire('NDraglist:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n \n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraglist:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n hasChildren(node)\n {\n return !! this.getChildren(node).length;\n },\n\n getChildren(node)\n {\n return Obj.get(node.item, this.childProp, []);\n },\n\n isExpanded(node)\n {\n return Arr.has(this.tempExpanded, node.value[this.uniqueProp]);\n },\n\n expandItem(node)\n {\n if ( ! this.hasChildren(node) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, node.value[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n expandCurrent()\n {\n if ( ! this.tempCurrent ) {\n return;\n }\n\n let children = Obj.get(this.tempCurrent, \n this.childProp);\n\n if ( Any.isEmpty(children) ) {\n return;\n }\n\n Arr.toggle(this.tempExpanded, \n this.tempCurrent[this.uniqueProp]);\n\n this.filterVirtuals();\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n toggleSingleNode(node)\n {\n Arr.toggle(this.tempSelected, this.lastSelected =\n node.value[this.uniqueProp]);\n },\n\n toggleRangeNode(node)\n {\n let indexies = [0, -1], reversed = false;\n\n if ( ! Any.isEmpty(this.lastSelected) ) {\n indexies[1] = this.getIndex(this.lastSelected);\n }\n\n indexies[0] = this.getIndex(node.value[this.uniqueProp]);\n\n if ( indexies[1] > indexies[0] ) {\n reversed = true;\n }\n\n if ( ! reversed ) {\n indexies = [indexies[1]+1, indexies[0]+1];\n }\n\n Arr.each(this.items.slice(indexies[0], indexies[1]), (item, index) => {\n Arr.toggle(this.tempSelected, item[this.uniqueProp]);\n });\n\n this.lastSelected = node.value[this.uniqueProp];\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n ! Arr.has(this.modifier, 16) || this.renderExpand ?\n this.toggleSingleNode(node) : this.toggleRangeNode(node);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let result = Arr.filter(this.visible, (item) => {\n\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n let row = {\n value: item, item: Obj.get(this, item.route)\n };\n\n return ! item.depth && canSelect(row);\n });\n\n let indexies = Arr.each(result, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.lastSelected = null;\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown', \n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown', \n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 32 ) {\n event.preventDefault();\n event.stopPropagation();\n this.expandCurrent();\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draglist__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraglistItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraglistItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist',\n 'n-draglist--' + this.size,\n 'n-draglist--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'bufferItems', 'itemHeight', \n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Obj, Arr, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraglistItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n \n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n },\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 10);\n }\n\n this.init = true;\n }, 5);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n hasChildren()\n {\n return this.NDraggable.hasChildren(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isExpanded()\n {\n return this.NDraggable.isExpanded(this);\n },\n\n expandItem()\n {\n this.NDraggable.expandItem(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick(event)\n {\n let isExpand = Dom.find(event.target)\n .closest('.n-draglist-item__expand');\n\n if ( isExpand ) {\n return;\n }\n\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n { renderFunction(props) }\n </div>\n );\n },\n\n renderSpacer()\n {\n let width = this.value.depth * \n this.NDraggable.itemOffset;\n\n if ( ! width ) {\n return null;\n }\n\n let style = {\n width: width + 'px'\n };\n\n return (\n <div class=\"n-draglist-item__spacer\" style={style}>\n { /* SPACER */ }\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draglist-item__handle\" {...props}>\n <div class=\"n-draglist-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderExpand()\n {\n if ( ! this.NDraggable.renderExpand ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.expandItem\n };\n\n return (\n <div class=\"n-draglist-item__expand\" {...props}>\n <div class=\"n-draglist-item__angle\">\n <i class={ nano.Icons.angleRight }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draglist-item__select\" {...props}>\n <div class=\"n-draglist-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draglist-item'\n ];\n\n if ( this.hasChildren() ) {\n classList.push('n-children');\n }\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isExpanded() ) {\n classList.push('n-expanded');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSpacer')() }\n { this.ctor('renderExpand')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDraggrid',\n\n model: {\n prop: 'items'\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n }\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n safezone: {\n default()\n {\n return (height) => -1;\n }\n },\n\n lazyload: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 200;\n },\n type: [Number]\n },\n\n itemWidth: {\n default()\n {\n return 150;\n },\n type: [Number]\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n deathzone: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderSelect: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NDraggable: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n virtuals: [],\n visible: [],\n childNodes: {},\n highlight: [],\n firstSelected: null,\n tempCurrent: this.current,\n tempExpanded: this.expanded,\n tempSelected: this.selected\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n let frame = this.$refs.virtualscroller.\n $refs.inner;\n\n this.drag.bindRoot(frame);\n\n this.$watch('tempSelected', this.watchSelected,\n { deep: true });\n\n this.refreshVirtuals();\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n\n Dom.find(document).off('keydown', null, this.uid);\n },\n\n watch: {\n\n items()\n {\n if ( this.scrollTopOnChange ) {\n this.scrollTo();\n }\n\n this.refreshVirtuals();\n },\n\n virtuals()\n {\n this.filterVirtuals();\n },\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n current(value)\n {\n this.tempCurrent = value;\n }\n\n },\n\n methods: {\n\n watchSelected()\n {\n if ( ! this.tempSelected.length ) {\n return this.firstSelected = null;\n }\n\n this.firstSelected = Arr.find(this.virtuals, {\n [this.uniqueProp]: this.tempSelected[0]\n });\n },\n\n refreshVirtuals()\n {\n this.virtuals = this.drag.reduce(this.items);\n\n if ( global.DEBUG_NDLIST ) {\n console.log('Total virtual items mounted: ' + this.virtuals.length);\n }\n },\n\n filterVirtuals()\n {\n this.visible = Arr.filter(this.virtuals, (node) => {\n return node.depth === 0;\n });\n },\n\n getIndex(unique)\n {\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: unique\n });\n },\n\n getCurrentIndex()\n {\n if ( ! this.tempCurrent ) {\n return -1;\n }\n\n return Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n },\n\n scrollTo(x = 0, y = 0)\n {\n this.$refs.virtualscroller.scrollTo(x, y);\n },\n\n scrollToIndex(index)\n {\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isDraggable(node)\n {\n let canDrag = this.allowDrag;\n\n if ( ! Any.isFunction(canDrag) ) {\n canDrag = () => this.allowDrag;\n }\n\n return canDrag(node);\n },\n\n isHighlight(node)\n {\n return Arr.has(this.highlight, node.value[this.uniqueProp]);\n },\n\n highlightNode(value, key = null)\n {\n clearTimeout(this.refresh);\n\n // Clear highlight items\n this.highlight = [];\n\n Arr.recursive(this.items, this.childProp, (node, cascade) => {\n\n if ( Obj.get(node, key || this.uniqueProp) !== value ) {\n return;\n }\n\n Arr.each(cascade, (item) => {\n Arr.add(this.tempExpanded, item[this.uniqueProp]);\n });\n\n Arr.add(this.highlight, node[this.uniqueProp]);\n });\n\n if ( ! this.highlight.length ) {\n return;\n }\n\n this.$nextTick(this.scrollToHighlight);\n\n this.refresh = setTimeout(() =>\n this.highlight = [], this.highlightTimeout);\n\n this.filterVirtuals();\n },\n\n scrollToHighlight()\n {\n if ( ! this.highlight.length ) {\n return;\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: Arr.first(this.highlight)\n });\n\n this.$refs.virtualscroller.scrollIntoView(index);\n },\n\n isCurrent(node)\n {\n return this.renderCurrent && this.tempCurrent &&\n node.value[this.uniqueProp] === this.tempCurrent[this.uniqueProp] ;\n },\n\n setCurrent(node)\n {\n let isSameNode = this.tempCurrent &&\n this.tempCurrent[this.uniqueProp] === node.value[this.uniqueProp];\n\n if ( isSameNode ) {\n return;\n }\n\n this.$emit('update:current',\n this.tempCurrent = node.item);\n\n Event.fire('NDraggrid:syncCurrent', node.item, this.uid);\n },\n\n setRawCurrent(index)\n {\n let route = Obj.get(this.visible,\n [index, 'route']);\n\n if ( ! route ) {\n return this.setRawCurrent(0);\n }\n\n let item = Obj.get(this, route);\n\n this.$refs.virtualscroller\n .scrollIntoView(index);\n\n this.$emit('update:current',\n this.tempCurrent = item);\n\n Event.fire('NDraggrid:syncCurrent', item, this.uid);\n },\n\n setNextCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = 0;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index++;\n }\n\n if ( index >= this.visible.length ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n setPrevCurrent()\n {\n if ( ! this.visible.length ) {\n return;\n }\n\n let reset = this.visible.length - 1;\n\n if ( ! this.tempCurrent ) {\n return this.setRawCurrent(reset);\n }\n\n let index = Arr.findIndex(this.visible, {\n [this.uniqueProp]: this.tempCurrent[this.uniqueProp]\n });\n\n if ( index !== -1 ) {\n index--;\n }\n\n if ( index < 0 ) {\n index = reset;\n }\n\n this.setRawCurrent(index);\n },\n\n syncCurrent()\n {\n return ['NDraggrid:syncCurrent', this.uid];\n },\n\n isDisabled(node)\n {\n let canSelect = this.allowSelect;\n\n if ( ! Any.isFunction(canSelect) ) {\n canSelect = () => this.allowSelect;\n }\n\n return ! canSelect(node) || (this.firstSelected &&\n node.value.depth !== this.firstSelected.depth);\n },\n\n isSelected(node)\n {\n return Arr.has(this.tempSelected, node.value[this.uniqueProp]);\n },\n\n isTotalSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length === this.tempSelected;\n },\n\n isInterSelected()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n return visible.length !== this.tempSelected &&\n this.tempSelected;\n },\n\n selectItem(node)\n {\n if ( this.isDisabled(node) ) {\n return;\n }\n\n Arr.toggle(this.tempSelected, node.value[this.uniqueProp]);\n\n this.$emit('update:selected', this.tempSelected);\n },\n\n selectAll()\n {\n let visible = Arr.filter(this.visible, (item) => {\n return ! item.depth;\n });\n\n let indexies = Arr.each(visible, (item) => {\n return item[this.uniqueProp];\n });\n\n if ( indexies.length === this.tempSelected.length ) {\n return this.$emit('update:selected', this.tempSelected = []);\n }\n\n this.$emit('update:selected', this.tempSelected = indexies);\n },\n\n unselectAll()\n {\n if ( this.tempSelected.length ) {\n this.$emit('update:selected', this.tempSelected = []);\n }\n },\n\n bindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).on('keydown',\n this.onKeydown, this.uid)\n },\n\n unbindKeydown()\n {\n if ( ! this.keyEvents ) {\n return;\n }\n\n Dom.find(document).off('keydown',\n null, this.uid)\n },\n\n onKeydown(event, el)\n {\n if ( Dom.find(el).closest('input') ) {\n return;\n }\n\n if ( event.which === 38 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setPrevCurrent();\n }\n\n if ( event.which === 40 ) {\n event.preventDefault();\n event.stopPropagation();\n // this.setNextCurrent();\n }\n }\n\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-draggrid__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entries') }\n </NEmptyIcon>\n );\n },\n\n renderItem(props)\n {\n return (\n <NDraggridItem {...Obj.except(props, ['index'])}>\n { { default: this.$slots.default } }\n </NDraggridItem>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid',\n 'n-draggrid--' + this.size,\n 'n-draggrid--' + this.type\n ];\n\n if ( ! this.items.length ) {\n classList.push('n-empty');\n }\n\n let passed = [\n 'threshold', 'deathzone', 'itemHeight', 'itemWidth',\n 'overflowX', 'overflowY', 'offsetX', 'offsetY', 'useKeys'\n ];\n\n let props = Obj.only(this.$props, passed, {\n items: this.visible,\n onMouseenter: this.bindKeydown,\n onMouseleave: this.unbindKeydown\n });\n\n return (\n <NVirtualscroller ref=\"virtualscroller\" class={classList} {...props}>\n { { default: this.ctor('renderItem'), empty: this.ctor('renderEmpty') } }\n </NVirtualscroller>\n );\n }\n\n}\n","import { Str, Arr, Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDraggridItem',\n\n inject: {\n\n NDraggable: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NDraggableItem: this\n };\n },\n\n props: {\n\n value: {\n required: true\n }\n\n },\n\n computed: {\n\n uid()\n {\n return Obj.get(this.value, this.NDraggable.uniqueProp);\n },\n\n item()\n {\n return Obj.get(this.NDraggable, this.value.route);\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n init: ! this.NDraggable.lazyload\n };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => {\n\n if ( this.NDraggable.draggable ) {\n this.timer = setTimeout(() => {\n this.NDraggable.drag.bindNode(this);\n }, 50);\n }\n\n this.init = true;\n }, 40);\n },\n\n beforeUnmount()\n {\n if ( ! this.init ) {\n clearTimeout(this.timer);\n }\n\n this.NDraggable.drag.unbindNode(this);\n },\n\n methods: {\n\n copy()\n {\n return this.NDraggable.drag.copyNode(this);\n },\n\n remove()\n {\n return this.NDraggable.drag.removeNode(this);\n },\n\n isDisabled()\n {\n return this.NDraggable.isDisabled(this);\n },\n\n isHighlight()\n {\n return this.NDraggable.isHighlight(this);\n },\n\n isCurrent()\n {\n return this.NDraggable.isCurrent(this);\n },\n\n isDraggable()\n {\n return this.NDraggable.isDraggable(this);\n },\n\n isSelected()\n {\n return this.NDraggable.isSelected(this);\n },\n\n selectItem()\n {\n this.NDraggable.selectItem(this);\n },\n\n onClick()\n {\n this.NDraggable.setCurrent(this);\n\n if ( Arr.has(global.keyMods, 91) ) {\n this.NDraggable.selectItem(this);\n }\n\n this.NDraggable.$emit('row-click', this);\n },\n\n onDblclick()\n {\n this.NDraggable.setCurrent(this);\n\n this.NDraggable.$emit('row-dblclick', this);\n }\n\n },\n\n renderElement()\n {\n let classList = [\n 'n-draglist-item__element'\n ];\n\n if ( ! this.init ) {\n return (<div class={classList} />);\n }\n\n let props = {\n value: this.value,\n item: this.item,\n copy: this.copy,\n remove: this.remove,\n };\n\n let renderFunction = this.$slots.default;\n\n if ( this.NDraggable.renderNode ) {\n renderFunction = this.NDraggable.renderNode;\n }\n\n return (\n <div class={classList}>\n {renderFunction(props)}\n </div>\n );\n },\n\n renderHandle()\n {\n if ( ! this.NDraggable.renderHandle ) {\n return null;\n }\n\n let props = {};\n\n if ( this.NDraggable.draggable && this.isDraggable() ) {\n props.draggable = true;\n }\n\n return (\n <div class=\"n-draggrid-item__handle\" {...props}>\n <div class=\"n-draggrid-item__ellipsis\">\n <i class={ nano.Icons.handle }></i>\n </div>\n </div>\n );\n },\n\n renderSelect()\n {\n if ( ! this.NDraggable.renderSelect ) {\n return null;\n }\n\n let props = {\n ['on' + Str.ucfirst(this.mousedown)]: this.selectItem\n };\n\n return (\n <div class=\"n-draggrid-item__select\" {...props}>\n <div class=\"n-draggrid-item__checkbox\">\n <i class={ nano.Icons.checked }></i>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-draggrid-item'\n ];\n\n if ( this.isDisabled() ) {\n classList.push('n-disabled');\n }\n\n if ( this.isSelected() ) {\n classList.push('n-selected');\n }\n\n if ( this.isCurrent() ) {\n classList.push('n-current');\n }\n\n if ( this.isHighlight() ) {\n classList.push('n-highlight');\n }\n\n let props = {\n onClick: this.onClick,\n onDblclick: this.onDblclick,\n };\n\n if ( this.NDraggable.draggable && ! this.NDraggable.handle && this.isDraggable() ) {\n props.draggable = true;\n }\n\n props['data-unique'] = this.value[this.NDraggable.uniqueProp];\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHandle')() }\n { this.ctor('renderSelect')() }\n { this.ctor('renderElement')() }\n </div>\n );\n }\n\n}\n","import { UUID, Num, Arr, Obj, Dom, Any, Event, Locale } from \"@kizmann/pico-js\";\nimport NDraghandler from \"../draghandler/draghandler\";\n\nglobal.DEBUG_NDLIST = false;\n\nexport default {\n\n name: 'NDropzone',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n renderNode: {\n default()\n {\n return null;\n }\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return true;\n }\n },\n\n removeNode: {\n default()\n {\n return true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n },\n\n provide()\n {\n return {\n NDropzone: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(),\n };\n },\n\n beforeMount()\n {\n this.drag = new NDraghandler(this);\n },\n\n mounted()\n {\n this.drag.bindRoot(this.$el);\n },\n\n beforeUnmount()\n {\n this.drag.unbindRoot();\n },\n\n renderItem()\n {\n if ( Any.isEmpty(this.item) ) {\n return null;\n }\n\n return this.$slots.default && this.$slots.default(this.item)\n },\n\n renderEmpty()\n {\n if ( ! Any.isEmpty(this.item) ) {\n return null;\n }\n\n return (\n <NEmptyIcon disabled={! this.showEmptyIcon} class=\"n-dropzone__empty\">\n { this.$slots.empty && this.$slots.empty() || this.trans('No entry') }\n </NEmptyIcon>\n );\n },\n\n render()\n {\n let classList = [\n 'n-dropzone',\n 'n-dropzone--' + this.size,\n 'n-dropzone--' + this.type\n ];\n\n if ( Any.isEmpty(this.item) ) {\n classList.push('n-empty');\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderItem')(), this.ctor('renderEmpty')()]}\n </div>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nconst fileMap = {\n image: [\n 'jpg', 'jpeg', 'gif', 'svg', 'png'\n ],\n video: [\n 'mp4', 'webm', 'mov'\n ],\n font: [\n 'woff', 'ttf', 'otf'\n ],\n text: [\n 'csv', 'txt', 'html'\n ],\n application: [\n 'pdf', 'doc', 'xls'\n ]\n}\n\nexport default {\n\n name: 'NPreview',\n\n props: {\n\n file: {\n default()\n {\n return null;\n }\n },\n\n thumb: {\n default()\n {\n return null;\n }\n },\n\n fit: {\n default()\n {\n return 'cover';\n },\n type: [String]\n },\n\n mime: {\n default()\n {\n return null;\n },\n typre: [String]\n },\n\n preview: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n showSrc: {\n default()\n {\n return true;\n },\n typre: [Boolean]\n },\n\n map: {\n default()\n {\n return fileMap;\n },\n type: [Object]\n }\n\n },\n\n computed: {\n\n tempFile()\n {\n return this.file || this.thumb;\n },\n\n tempThumb()\n {\n return this.thumb || this.file;\n },\n\n fileMime()\n {\n return this.getFileMime();\n },\n\n thumbMime()\n {\n return this.getThumbMime();\n },\n\n },\n\n data()\n {\n return {\n lightbox: false, load: false\n };\n },\n\n methods: {\n\n getFileMime(fallback = null)\n {\n let file = Obj.get(this.tempFile, 'name',\n this.tempFile);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n if ( global.resolveVimeo(file) ) {\n fallback = 'video';\n }\n\n if ( global.resolveYoutube(file) ) {\n fallback = 'video';\n }\n\n if ( Any.isString(this.mime) ) {\n fallback = this.mime;\n }\n\n return fallback;\n },\n\n getThumbMime(fallback = null)\n {\n if ( Any.isString(this.mime) ) {\n return this.mime;\n }\n\n let file = Obj.get(this.tempThumb, 'name',\n this.tempThumb);\n\n if ( Any.isEmpty(file) ) {\n return fallback;\n }\n\n let extension = file.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n Obj.each(this.map, (exts, key) => {\n if ( Arr.has(exts, extension) ) fallback = key;\n });\n\n return fallback;\n },\n\n showLightbox()\n {\n this.lightbox = true;\n },\n\n },\n\n renderPreview()\n {\n if ( ! this.preview ) {\n return this.ctor('renderFull')();\n }\n\n if ( this.thumbMime === 'image' ) {\n return (<NPreviewImage src={this.tempThumb} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: false,\n }\n\n return (<NPreviewPlain src={this.tempThumb} {...props} />);\n },\n\n renderFull()\n {\n let isObject = Any.isObject(this.tempFile);\n\n if ( this.fileMime === 'image' ) {\n return (<NPreviewImage src={this.tempFile} />);\n }\n\n if ( this.fileMime === 'video' && ! isObject ) {\n return (<NPreviewVideo src={this.tempFile} />);\n }\n\n let props = {\n type: this.thumbMime,\n showSrc: this.showSrc,\n }\n\n return (<NPreviewPlain src={this.tempFile} {...props} />);\n },\n\n renderLightbox()\n {\n if ( ! this.lightbox || ! this.preview ) {\n return null;\n }\n\n let slots = {\n raw: this.ctor('renderFull')\n }\n\n let props = {\n type: 'preview',\n width: '80%',\n height: '90%',\n }\n\n return (<NModal vModel={this.lightbox} {...props} v-slots={slots} />);\n },\n\n render()\n {\n let classList = [\n 'n-preview',\n 'n-preview--' + this.fit\n ];\n\n if ( this.preview ) {\n classList.push('n-clickable');\n }\n\n if ( this.fileMime ) {\n classList.push('n-mime-' + this.fileMime);\n }\n\n let props = {};\n\n if ( this.preview ) {\n props.onClick = this.showLightbox;\n }\n\n let key = btoa(this.tempThumb);\n\n return (\n <div key={key} class={classList} {...props}>\n { [this.ctor('renderPreview')(), this.ctor('renderLightbox')()] }\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nglobal.resolveYoutube = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let id = url.match(/(\\?v=.*?)(?=&|$)/);\n\n if ( id && id.length === 2 ) {\n return id[0].replace(/^\\?v=/, '');\n }\n\n let path = url.match(/(\\.be\\/.*?)(?=\\?|$)/);\n\n if ( path && path.length === 2 ) {\n return path[0].replace(/^\\.be\\//, '');\n }\n\n let frame = url.match(/(\\/embed\\/)(.*?$)/);\n\n if ( frame && frame.length === 3 ) {\n return frame[0].replace(/^\\/embed\\//, '');\n }\n\n return fallback;\n}\n\nglobal.resolveVimeo = function(url, fallback = null) {\n\n if ( ! Any.isString(url) ) {\n return fallback;\n }\n\n let host = url.match(/^https?:\\/\\/(www\\.|player\\.)?vimeo\\.com/);\n\n if ( ! host ) {\n return fallback;\n }\n\n let path = url.match(/(\\/[0-9]+)(&|$)/);\n\n if ( path && path.length === 3 ) {\n return path[0].replace(/(^\\/|&$)/, '');\n }\n\n return fallback;\n}\n\nexport default {\n\n name: 'NPreviewVideo',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n provider: 'plain', unique: null, tempSrc: null\n };\n },\n\n mounted()\n {\n this.resolveType();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveType();\n }\n\n },\n\n methods: {\n\n resolveType()\n {\n this.tempSrc = null;\n\n if ( this.resolveYoutube() ) {\n return;\n }\n\n if ( this.resolveVimeo() ) {\n return;\n }\n\n if ( Any.isObject(this.src) ) {\n this.resolveData();\n }\n\n this.provider = 'plain';\n },\n\n resolveData()\n {\n console.log('Coming at some point (blob stream)....');\n },\n\n resolveYoutube()\n {\n let youtube = global.resolveYoutube(this.src);\n\n if ( ! youtube ) {\n return false;\n }\n\n this.provider = 'youtube';\n\n this.$emit('resolve:youtube', this.unique = youtube);\n\n return true;\n },\n\n resolveVimeo()\n {\n let vimeo = global.resolveVimeo(this.src);\n\n if ( ! vimeo ) {\n return false;\n }\n\n this.provider = 'vimeo';\n\n this.$emit('resolve:vimeo', this.unique = vimeo);\n\n return true;\n }\n\n },\n\n renderYoutube()\n {\n let props = {\n src: `https://www.youtube.com/embed/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderVimeo()\n {\n let props = {\n src: `https://player.vimeo.com/video/${this.unique}`\n };\n\n return (\n <iframe {...props}></iframe>\n );\n },\n\n renderPlain()\n {\n let src = Obj.get(this.src, 'name', this.src);\n\n let extension = src.replace(/^.*?\\.([^.?]+)(\\?.*?)?$/,\n '$1');\n\n return (\n <video width=\"320\" height=\"240\" controls>\n <source src={this.tempSrc || this.src} type={`video/${extension}`} />\n </video>\n );\n },\n\n render()\n {\n let classList = [\n 'n-preview-video'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.provider))() }\n </div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n cmer(classList)\n {\n let attrsList = {};\n\n if ( Any.isString(classList) ) {\n attrsList[classList] = true;\n }\n\n if ( Any.isArray(classList) ) {\n Arr.each(classList, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(classList) ) {\n Obj.assign(attrsList, classList);\n }\n\n if ( Any.isString(this.$attrs.class) ) {\n attrsList[this.$attrs.class] = true;\n }\n\n if ( Any.isArray(this.$attrs.class) ) {\n Arr.each(this.$attrs.class, (value) => attrsList[value] = true);\n }\n\n if ( Any.isPlain(this.$attrs.class) ) {\n Obj.assign(attrsList, this.$attrs.class);\n }\n\n return attrsList;\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { Comment } from 'vue';\n\nexport default {\n\n cslo(slot = 'default', props = {})\n {\n if ( ! this.$slots[slot] ) {\n return false;\n }\n\n return this.$slots[slot](props).findIndex((o) => {\n return o.type !== Comment;\n }) !== -1;\n }\n\n}\n","import { Arr, Obj, Dom, Locale } from \"@kizmann/pico-js\";\n\nimport CtorMixin from \"./mixins/src/ctor\";\nimport CmerMixin from \"./mixins/src/cmer\";\nimport CsloMixin from \"./mixins/src/cslo\";\n\nexport const Icons = {\n handle: 'fa fa-ellipsis-v',\n checked: 'fa fa-check',\n circle: 'fa fa-circle',\n intermediate: 'fa fa-minus',\n clock: 'fa fa-clock',\n calendar: 'fa fa-calendar',\n times: 'fa fa-times',\n primary: 'fa fa-info-circle',\n success: 'fa fa-check-circle',\n warning: 'fa fa-exclamation-circle',\n danger: 'fa fa-times-circle',\n info: 'fa fa-info-circle',\n angleUp: 'fa fa-angle-up',\n angleRight: 'fa fa-angle-right',\n angleDown: 'fa fa-angle-down',\n angleLeft: 'fa fa-angle-left',\n angleDoubleLeft: 'fa fa-angle-double-left',\n angleDoubleRight: 'fa fa-angle-double-right'\n};\n\nexport const Settings = {\n iconPosition: 'before',\n notifySize: 'md',\n notifyPosition: 'bottom-start'\n};\n\nexport function Install(App, Icons = {}, Styles = {})\n{\n /**\n * @const global.pi\n */\n\n if ( typeof global.pi === 'undefined' ) {\n return console.error('pico-js is not available.');\n }\n\n Obj.each(global.pi, (value, key) => {\n App.config.globalProperties[key] = value;\n });\n\n App.config.globalProperties.ctor = CtorMixin.ctor;\n App.config.globalProperties.cmer = CmerMixin.cmer;\n App.config.globalProperties.cslo = CsloMixin.cslo;\n\n App.config.globalProperties.trans = Locale.trans;\n App.config.globalProperties.choice = Locale.choice;\n\n global.nano.Icons = Obj.assign(Icons, global.nano.Icons);\n global.nano.Settings = Obj.assign(Settings, global.nano.Settings);\n\n require('./alert/index').default(App);\n require('./notification/index').default(App);\n require('./empty/index').default(App);\n require('./config/index').default(App); //!complex 17.1\n require('./scrollbar/index').default(App);\n require('./virtualscroller/index').default(App);\n require('./draggable/index').default(App);\n require('./loader/index').default(App);\n require('./resizer/index').default(App);\n require('./popover/index').default(App);\n require('./modal/index').default(App);\n require('./button/index').default(App);\n require('./input/index').default(App);\n require('./input-number/index').default(App);\n require('./textarea/index').default(App);\n require('./select/index').default(App);\n require('./checkbox/index').default(App);\n require('./radio/index').default(App);\n require('./slider/index').default(App);\n require('./switch/index').default(App);\n require('./confirm/index').default(App);\n require('./cascader/index').default(App);\n require('./datepicker/index').default(App);\n require('./timepicker/index').default(App);\n require('./datetimepicker/index').default(App);\n require('./durationpicker/index').default(App);\n require('./transfer/index').default(App);\n require('./form/index').default(App); // check\n require('./tabs/index').default(App);\n require('./tags/index').default(App);\n require('./collapse/index').default(App);\n require('./table/index').default(App); // 18.1 options\n require('./paginator/index').default(App);\n require('./info/index').default(App); //!complex 16.1\n require('./preview/index').default(App);\n require('./map/index').default(App);\n require('./file/index').default(App);\n require('./rating/index').default(App);\n\n // require('./chart/index'); // Ignore\n // require('./wysiwyg/index'); // Ignore\n}\n\nexport const Nano = {\n Icons: Icons, Settings: Settings, Install: Install\n};\n\nglobal.keyMods = [];\n\nDom.find(document).on('keydown', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('keyup', (event) => {\n Arr.remove(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragstart', (event) => {\n Arr.add(global.keyMods, event.which);\n});\n\nDom.find(document).on('dragend', (event) => {\n global.keyMods = [];\n});\n\nif ( typeof global.nano === 'undefined' ) {\n global.nano = Nano;\n}\n\nexport default Nano;\n","global.NanoPrototypeSizes = [\n 'xs', 'sm', 'md', 'lg'\n];\n\nglobal.NanoPrototypeTypes = [\n 'primary', 'secondary', 'success', 'warning', 'danger', 'info'\n];\n\nglobal.NanoPrototypeBools = [\n 'true', 'false'\n];","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['div'] = Locale.trans('div');\n\nglobal.NanoBuilderIndexies['div'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['div']['props'] = {\n classList: {\n type: 'String'\n },\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['span'] = Locale.trans('span');\n\nglobal.NanoBuilderIndexies['span'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['span']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NButton'] = Locale.trans('NButton');\n\nglobal.NanoBuilderIndexies['NButton'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NButton']['props'] = {\n size: {\n for: ['binds', 'props'], type: 'String', options: global.NanoPrototypeSizes\n },\n type: {\n for: ['binds', 'props'], type: 'String', options: global.NanoPrototypeTypes\n },\n link: {\n for: ['binds', 'props'], type: 'Boolean', options: global.NanoPrototypeBools\n },\n square: {\n for: ['binds', 'props'], type: 'Boolean', options: global.NanoPrototypeBools\n },\n disabled: {\n for: ['binds', 'props'], type: 'Boolean', options: global.NanoPrototypeBools\n },\n icon: {\n for: ['binds', 'props'], type: 'String'\n },\n iconPosition: {\n for: ['binds', 'props'], type: 'String', options: ['before', 'after']\n },\n nativeType: {\n for: ['binds', 'props'], type: 'String', options: ['button', 'a', 'div']\n },\n click: {\n for: ['on'], type: 'String'\n }\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NButtonGroup'] = Locale.trans('n-button-group');\n\nglobal.NanoBuilderIndexies['NButtonGroup'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NButtonGroup']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NCascader'] = Locale.trans('n-cascader');\n\nglobal.NanoBuilderIndexies['NCascader'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NCascader']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NCheckbox'] = Locale.trans('n-checkbox');\n\nglobal.NanoBuilderIndexies['NCheckbox'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NCheckbox']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NCheckboxGroup'] = Locale.trans('NCheckboxGroup');\n\nglobal.NanoBuilderIndexies['NCheckboxGroup'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NCheckboxGroup']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NConfirm'] = Locale.trans('n-confirm');\n\nglobal.NanoBuilderIndexies['NConfirm'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NConfirm']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NDatepicker'] = Locale.trans('NDatepicker');\n\nglobal.NanoBuilderIndexies['NDatepicker'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NDatepicker']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NDatetimepicker'] = Locale.trans('NDatetimepicker');\n\nglobal.NanoBuilderIndexies['NDatetimepicker'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NDatetimepicker']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NDurationpicker'] = Locale.trans('NDurationpicker');\n\nglobal.NanoBuilderIndexies['NDurationpicker'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NDurationpicker']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NEmpty'] = Locale.trans('NEmpty');\n\nglobal.NanoBuilderIndexies['NEmpty'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NEmpty']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NForm'] = Locale.trans('NForm');\n\nglobal.NanoBuilderIndexies['NForm'] = {\n childs: true, props: {}\n};\n\nglobal.NanoBuilderIndexies['NForm']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NFormGroup'] = Locale.trans('NFormGroup');\n\nglobal.NanoBuilderIndexies['NFormGroup'] = {\n childs: true, props: {}\n};\n\nglobal.NanoBuilderIndexies['NFormGroup']['props'] = {\n label: {\n for: ['binds', 'props'], type: 'String'\n }\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NFormItem'] = Locale.trans('NFormItem');\n\nglobal.NanoBuilderIndexies['NFormItem'] = {\n childs: true, props: {}\n};\n\nglobal.NanoBuilderIndexies['NFormItem']['props'] = {\n label: {\n for: ['binds', 'props'], type: 'String'\n }\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NInput'] = Locale.trans('NInput');\n\nglobal.NanoBuilderIndexies['NInput'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NInput']['props'] = {\n modelValue: {\n for: ['binds', 'props'], default: null, type: 'String'\n },\n size: {\n for: ['binds', 'props'], default: 'md', type: 'String', options: global.NanoPrototypeSizes\n },\n type: {\n for: ['binds', 'props'], default: 'primary', type: 'String', options: global.NanoPrototypeTypes\n },\n disabled: {\n for: ['binds', 'props'], default: false, type: 'Boolean', options: global.NanoPrototypeBools\n },\n placeholder: {\n for: ['binds', 'props'], default: '', type: 'String'\n },\n nativeType: {\n for: ['binds', 'props'], default: 'text', type: 'String', options: ['text', 'password', 'email']\n },\n icon: {\n for: ['binds', 'props'], default: '', type: 'String'\n },\n iconPosition: {\n for: ['binds', 'props'], default: 'before', type: 'String', options: ['before', 'after']\n },\n iconDisabled: {\n for: ['binds', 'props'], default: null, type: 'Boolean', options: global.NanoPrototypeBools\n },\n iconClick: {\n for: ['on'], type: 'String'\n },\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NInputNumber'] = Locale.trans('NInputNumber');\n\nglobal.NanoBuilderIndexies['NInputNumber'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NInputNumber']['props'] = {\n modelValue: {\n for: ['binds', 'props'], default: null, type: 'Number'\n },\n clearValue: {\n for: ['binds', 'props'], default: null, type: 'Number'\n },\n clearable: {\n for: ['binds', 'props'], default: false, type: 'Boolean', options: global.NanoPrototypeBools\n },\n min: {\n for: ['binds', 'props'], default: 0, type: 'Number'\n },\n max: {\n for: ['binds', 'props'], default: Number.MAX_VALUE, type: 'Number'\n },\n stepSize: {\n for: ['binds', 'props'], default: 1, type: 'Number'\n },\n precision: {\n for: ['binds', 'props'], default: 0, type: 'Number'\n },\n size: {\n for: ['binds', 'props'], default: 'md', type: 'String', options: global.NanoPrototypeSizes\n },\n type: {\n for: ['binds', 'props'], default: 'primary', type: 'String', options: global.NanoPrototypeTypes\n },\n disabled: {\n for: ['binds', 'props'], default: false, type: 'Boolean', options: global.NanoPrototypeBools\n },\n placeholder: {\n for: ['binds', 'props'], default: '', type: 'String'\n },\n format: {\n for: ['binds', 'props'], default: ':count', type: 'String'\n },\n decimals: {\n for: ['binds', 'props'], default: '.', type: 'String'\n },\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NLoader'] = Locale.trans('NLoader');\n\nglobal.NanoBuilderIndexies['NLoader'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NLoader']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NModal'] = Locale.trans('NModal');\n\nglobal.NanoBuilderIndexies['NModal'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NModal']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NRadio'] = Locale.trans('NRadio');\n\nglobal.NanoBuilderIndexies['NRadio'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NRadio']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NRadioGroup'] = Locale.trans('NRadioGroup');\n\nglobal.NanoBuilderIndexies['NRadioGroup'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NRadioGroup']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NRating'] = Locale.trans('NRating');\n\nglobal.NanoBuilderIndexies['NRating'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NRating']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NSelect'] = Locale.trans('NSelect');\n\nglobal.NanoBuilderIndexies['NSelect'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NSelect']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NSlider'] = Locale.trans('NSlider');\n\nglobal.NanoBuilderIndexies['NSlider'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NSlider']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NSwitch'] = Locale.trans('NSwitch');\n\nglobal.NanoBuilderIndexies['NSwitch'] = {\n childs: true, props: {}\n};\n\nglobal.NanoBuilderIndexies['NSwitch']['props'] = {\n modelValue: {\n for: ['binds', 'props'], type: 'Any'\n },\n onValue: {\n for: ['binds', 'props'], type: 'Any'\n },\n offValue: {\n for: ['binds', 'props'], type: 'Any'\n },\n onType: {\n for: ['binds', 'props'], type: 'String', options: global.NanoPrototypeTypes\n },\n offType: {\n for: ['binds', 'props'], type: 'String', options: global.NanoPrototypeTypes\n },\n size: {\n for: ['binds', 'props'], type: 'String', options: global.NanoPrototypeSizes\n },\n disabled: {\n for: ['binds', 'props'], type: 'Boolean', options: global.NanoPrototypeBools\n },\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTable'] = Locale.trans('NTable');\n\nglobal.NanoBuilderIndexies['NTable'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTable']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTableColumn'] = Locale.trans('NTableColumn');\n\nglobal.NanoBuilderIndexies['NTableColumn'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTableColumn']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTabs'] = Locale.trans('NTabs');\n\nglobal.NanoBuilderIndexies['NTabs'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTabs']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTabsItem'] = Locale.trans('NTabsItem');\n\nglobal.NanoBuilderIndexies['NTabsItem'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTabsItem']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTags'] = Locale.trans('NTags');\n\nglobal.NanoBuilderIndexies['NTags'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTags']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTagsItem'] = Locale.trans('NTagsItem');\n\nglobal.NanoBuilderIndexies['NTagsItem'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTagsItem']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTimepicker'] = Locale.trans('NTimepicker');\n\nglobal.NanoBuilderIndexies['NTimepicker'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTimepicker']['props'] = {\n //\n};","import { Locale } from \"@kizmann/pico-js\";\n\nglobal.NanoBuilderTypes['NTransfer'] = Locale.trans('NTransfer');\n\nglobal.NanoBuilderIndexies['NTransfer'] = {\n childs: false, props: {}\n};\n\nglobal.NanoBuilderIndexies['NTransfer']['props'] = {\n //\n};","import Virtualscroller from './src/virtualscroller/virtualscroller.beta';\n\nexport default function (App) {\n App.component(Virtualscroller.name, Virtualscroller);\n}","import Draglist from './src/draglist/draglist';\nimport DraglistItem from './src/draglist-item/draglist-item';\nimport Draggrid from './src/draggrid/draggrid';\nimport DraggridItem from './src/draggrid-item/draggrid-item';\nimport Dropzone from './src/dropzone/dropzone';\n\nexport default function (App) {\n App.component(Draglist.name, Draglist);\n App.component(DraglistItem.name, DraglistItem);\n App.component(Draggrid.name, Draggrid);\n App.component(DraggridItem.name, DraggridItem);\n App.component(Dropzone.name, Dropzone);\n}","import { Any, Arr, Obj, Dom, Event, UUID } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTable',\n\n provide()\n {\n return {\n NTable: this\n };\n },\n\n props: {\n\n items: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n draggable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n selected: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n expanded: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n filter: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sortProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n sortDir: {\n default()\n {\n return 'desc';\n },\n type: [String]\n },\n\n closeFilterOnEnter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n group: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n allowGroups: {\n default()\n {\n return ['default'];\n },\n type: [Array]\n },\n\n handle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n safezone: {\n default()\n {\n return (height) => height * 0.51;\n }\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n itemHeight: {\n default()\n {\n return 38;\n },\n type: [Number]\n },\n\n itemOffset: {\n default()\n {\n return 30;\n },\n type: [Number]\n },\n\n scrollTopOnChange: {\n default()\n {\n return false;\n }\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n renderSelect: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderHandle: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderExpand: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n renderCurrent: {\n default()\n {\n return true;\n }\n },\n\n transformDrop: {\n default()\n {\n return (node) => node;\n }\n },\n\n disableMove: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n insertNode: {\n default()\n {\n return () => true;\n }\n },\n\n removeNode: {\n default()\n {\n return () => true;\n }\n },\n\n allowSelect: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrag: {\n default()\n {\n return () => true;\n }\n },\n\n allowDrop: {\n default()\n {\n return () => true;\n }\n },\n\n threshold: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n useKeys: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keyEvents: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n highlightTimeout: {\n default()\n {\n return 7000;\n },\n type: [Number]\n },\n\n },\n\n computed: {\n\n checked()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length === this.items.length;\n },\n\n intermediate()\n {\n return !!this.tempSelected.length &&\n this.tempSelected.length !== this.items.length\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n tempVisible: this.visible,\n tempVisibleProps: [],\n tempSelected: this.selected,\n tempSortProp: this.sortProp,\n tempSortDir: this.sortDir,\n tempFilter: this.filter,\n tempFilterProps: [],\n }\n },\n\n mounted()\n {\n this.$watch('tempVisible',\n this.makeVisibleProps, { deep: true });\n\n if ( !this.tempVisible.length ) {\n Arr.each(this.elements, this.detectVisible);\n }\n },\n\n watch: {\n\n selected(value)\n {\n this.tempSelected = value;\n },\n\n },\n\n methods: {\n\n addColumn(column)\n {\n Arr.add(this.elements, column,\n { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n getColumnIndex(column)\n {\n if ( !Any.isString(column) ) {\n column = column['prop'];\n }\n\n return Arr.findIndex(this.tempVisibleProps,\n column);\n },\n\n getColumnVisiblity(column)\n {\n if ( !Any.isString(column) ) {\n column = column.prop;\n }\n\n return Arr.has(this.tempVisible, column);\n },\n\n getColumnSorted(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n if ( this.tempSortProp !== prop ) {\n return null;\n }\n\n return this.tempSortDir;\n },\n\n getColumnFilter(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.find(this.tempFilter, {\n property: prop\n });\n },\n\n getColumnFiltered(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.filterProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n return Arr.has(this.tempFilterProps, prop);\n },\n\n detectVisible(column)\n {\n if ( column.detectVisibity() ) {\n Arr.add(this.tempVisible, column.prop);\n }\n },\n\n makeVisibleProps()\n {\n this.tempVisibleProps = Arr.intersect(\n Arr.extract(this.elements, 'prop'), this.tempVisible);\n\n this.$nextTick(this.$refs.scrollbar.onResize);\n },\n\n sortByColumn(column)\n {\n let prop = column;\n\n if ( !Any.isString(prop) ) {\n prop = column.sortProp;\n }\n\n if ( Any.isEmpty(prop) ) {\n prop = column.prop;\n }\n\n\n let dir = this.tempSortDir;\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'desc' ) {\n dir = 'asc';\n }\n\n if ( prop === this.tempSortProp && this.tempSortDir === 'asc' ) {\n dir = 'desc';\n }\n\n if ( this.tempSortDir !== dir ) {\n this.$emit('update:sortDir', this.tempSortDir = dir);\n }\n\n if ( this.tempSortProp !== prop ) {\n this.$emit('update:sortProp', this.tempSortProp = prop);\n }\n\n this.$emit('sort', this.tempSortProp, this.tempSortDir);\n },\n\n replaceFilter(filter, search)\n {\n Arr.replace(this.tempFilter, filter, search);\n\n let filters = Arr.filter(this.tempFilter, (filter) => {\n return Arr.has(this.tempFilterProps, filter.property);\n });\n\n this.$emit('update:filter', filters);\n\n this.$emit('filter', filters, this.tempFilterProps);\n },\n\n resetFilter()\n {\n this.tempFilter = this.tempFilterProps = [];\n\n Event.fire('NTable:reset', this.uid);\n\n this.$emit('update:filter', this.tempFilter);\n\n this.$emit('filter', this.tempFilter, this.tempFilterProps);\n },\n\n selectAll()\n {\n this.$refs.draggable.selectAll();\n },\n\n highlightNode(value, key = null)\n {\n this.$refs.draggable.highlightNode(value, key);\n },\n\n syncCurrent()\n {\n return this.$refs.draggable.syncCurrent();\n },\n\n refreshCurrent()\n {\n this.$refs.draggable.refreshCurrent();\n },\n\n },\n\n renderHandle()\n {\n if ( !this.renderHandle ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__handle\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderExpand()\n {\n if ( !this.renderExpand ) {\n return null;\n }\n\n return (\n <div class=\"n-draglist-item__expand\">\n { /* Only used in row */}\n </div>\n )\n },\n\n renderSelect()\n {\n if ( !this.renderSelect ) {\n return null;\n }\n\n let props = {\n modelValue: this.checked,\n intermediate: this.intermediate,\n disabled: !this.items.length,\n onClick: this.selectAll\n };\n\n return (\n <div class=\"n-draglist-item__select\">\n <NCheckbox {...props}></NCheckbox>\n </div>\n );\n },\n\n renderBody(props)\n {\n let columns = Obj.each(this.elements, (column) => {\n return column.disabled ? null : column.ctor('renderBody')(props);\n });\n\n return Obj.values(columns);\n },\n\n renderContext()\n {\n let columns = Obj.each(this.elements, (column) => {\n\n if ( column.disabled ) {\n return null;\n }\n\n return (\n <NCheckbox class=\"n-table__checkbox\" value={column.prop}>\n {column.label}\n </NCheckbox>\n );\n });\n\n return (\n <NPopover trigger=\"context\" width={220}>\n <NCheckboxGroup vModel={this.tempVisible} align=\"vertical\">\n {Obj.values(columns)}\n </NCheckboxGroup>\n </NPopover>\n );\n },\n\n renderHead()\n {\n let defaultRender = [\n this.ctor('renderHandle')(),\n this.ctor('renderExpand')(),\n this.ctor('renderSelect')(),\n this.ctor('renderContext')()\n ];\n\n let columns = Obj.each(this.elements, (column) => {\n return column.disabled ? null : column.ctor('renderHead')();\n });\n\n return (\n <div class=\"n-table__header\">\n {defaultRender} {Obj.values(columns)}\n </div>\n );\n },\n\n render()\n {\n let except = [\n 'visible', 'filter', 'sortProp',\n 'sortDir', 'closeFilterOnEnter'\n ];\n\n let props = Obj.except(this.$props, except, {\n items: this.items,\n selected: this.tempSelected,\n overflowX: false,\n useKeys: this.useKeys,\n // renderNode: this.ctor('renderBody')\n });\n\n props['onRowClick'] = (...args) => {\n this.$emit('row-click', ...args);\n }\n\n props['onRowDblclick'] = (...args) => {\n this.$emit('row-dblclick', ...args);\n }\n\n props['onUpdate:items'] = (value) => {\n this.$emit('update:items', value);\n }\n\n props['onUpdate:current'] = (value) => {\n this.$emit('update:current', value);\n }\n\n props['onUpdate:expanded'] = (value) => {\n this.$emit('update:expanded', value);\n }\n\n props['onUpdate:selected'] = (value) => {\n this.$emit('update:selected', this.tempSelected = value);\n }\n\n let draggableHtml = (\n <div class=\"n-table__body\">\n <NDraglist ref=\"draggable\" {...props} offsetX={25}>\n {{ default: this.ctor('renderBody') }}\n </NDraglist>\n </div>\n );\n\n return (\n <div class=\"n-table\">\n <NScrollbar ref=\"scrollbar\" class=\"n-table__wrap\" fixture={true} overflowY={false}>\n <div class=\"n-table__inner\">\n {[this.ctor('renderHead')(), draggableHtml]}\n </div>\n </NScrollbar>\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n}","import { Any, Arr, Obj, Str, Dom, UUID, Num, Locale } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTableColumn',\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return UUID();\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'left';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n filter: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n visible: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean, Function]\n },\n\n matrixDisabled: {\n default()\n {\n return false;\n },\n type: [Boolean, Function]\n },\n\n breakpoint: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n matrix: {\n default()\n {\n return - 1;\n },\n type: [Number, String]\n },\n\n matrixProp: {\n default()\n {\n return 'matrix';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n sortProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n filterProp: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n fluid: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixedWidth: {\n default()\n {\n return 0;\n }\n },\n\n width: {\n default()\n {\n return 0;\n }\n },\n\n minWidth: {\n default()\n {\n return 120;\n }\n },\n\n maxWidth: {\n default()\n {\n return 0;\n }\n },\n\n emptyText: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n },\n\n allowUncheck: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n matrixValues()\n {\n if ( this.type !== 'matrix' ) {\n return;\n }\n\n let values = {};\n\n if ( Any.isEmpty(this.modelValue) ) {\n return values;\n }\n\n Arr.each(this.modelValue, (item) => {\n Obj.set(values, item[this.NTable.uniqueProp],\n Num.matrix(item[this.matrixProp]));\n });\n\n return values;\n }\n\n },\n\n provide()\n {\n return {\n NTableColumn: this\n };\n },\n\n data()\n {\n return {\n uid: UUID(), tempWidth: 0\n };\n },\n\n methods: {\n\n detectVisibity()\n {\n let visible = this.visible;\n\n if ( this.breakpoint ) {\n visible &= Dom.find(this.NTable.$el).width() > this.breakpoint;\n }\n\n return visible;\n },\n\n sortByColumn(event)\n {\n if ( !Arr.has([0, 1], event.which) ) {\n return;\n }\n\n if ( !Dom.find(event.target).closest('.n-table-column__filter') ) {\n this.NTable.sortByColumn(this);\n }\n },\n\n },\n\n beforeMount()\n {\n this.changedStates = {};\n this.NTable.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NTable.removeColumn(this);\n },\n\n renderHead()\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let classList = [\n 'n-table-column',\n 'n-table-column--' + this.align,\n 'n-table-column--' + this.type,\n ];\n\n let sortDirection = this.NTable.getColumnSorted(this);\n\n if ( sortDirection ) {\n classList.push('n-sorted', 'n-' + sortDirection);\n }\n\n if ( this.fluid || !this.width ) {\n classList.push('n-fluid');\n }\n\n if ( this.fixedWidth ) {\n classList.push('n-fixed');\n }\n\n if ( this.NTable.getColumnFiltered(this) ) {\n classList.push('n-filtered');\n }\n\n let style = {};\n\n if ( this.fixedWidth ) {\n style.width = this.fixedWidth + 'px';\n }\n\n if ( this.width ) {\n style.flexBasis = this.width + 'px';\n }\n\n let props = {\n modelValue: this.tempWidth,\n width: this.width,\n minWidth: this.minWidth,\n maxWidth: this.maxWidth,\n disabled: !!this.fixedWidth,\n group: [this.NTable.uid],\n };\n\n props['onUpdate:modelValue'] = (value) => {\n this.tempWidth = value;\n }\n\n if ( this.sort ) {\n props.onMousedown = this.sortByColumn;\n }\n\n return (\n <NResizer ref=\"column\" class={classList} style={style} {...props}>\n {this.ctor('renderHeadSort')()}\n {this.ctor('renderHeadLabel')()}\n {this.ctor('renderHeadFilter')()}\n </NResizer>\n );\n },\n\n renderHeadLabel()\n {\n let classList = [\n 'n-table-column__label'\n ];\n\n let labelHtml = (\n <div class={classList}>\n <span>{this.label}</span>\n </div>\n );\n\n if ( Any.isEmpty(this.tooltip) ) {\n return labelHtml;\n }\n\n let tooltipHtml = (\n <NPopover type=\"tooltip\">{this.tooltip}</NPopover>\n );\n\n return [labelHtml, tooltipHtml];\n },\n\n renderHeadSort()\n {\n if ( !this.sort ) {\n return null;\n }\n\n return (\n <div class=\"n-table-column__sort\">\n <i>{ /* Sorting angles */}</i>\n </div>\n )\n },\n\n renderHeadFilter()\n {\n if ( !this.filter ) {\n return null;\n }\n\n let angleHtml = (\n <div class=\"n-table-column__filter\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n\n let component = resolveComponent('NTableFilter' +\n Str.ucfirst(this.type));\n\n return [\n angleHtml, h(component, { column: this })\n ];\n },\n\n renderBody(props)\n {\n if ( !this.NTable.getColumnVisiblity(this) ) {\n return null;\n }\n\n let uid = props.value[this.NTable.uniqueProp]\n + this.uid;\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.align,\n 'n-table-cell--' + this.type,\n ];\n\n if ( this.fluid ) {\n classList.push('n-fluid');\n }\n\n if ( this.tempWidth ) {\n classList.push('n-fixed');\n }\n\n let index = this.NTable.getColumnIndex(this);\n\n let offset = 0;\n\n if ( index === 0 ) {\n offset = props.value.depth * this.NTable.itemOffset;\n }\n\n let style = {\n width: (this.tempWidth - offset) + 'px'\n };\n\n if ( this.minWidth ) {\n style.minWidth = (this.minWidth - offset) + 'px';\n }\n\n if ( this.maxWidth ) {\n style.maxWidth = (this.maxWidth - offset) + 'px';\n }\n\n let passed = Obj.except(this.$attrs, [], {\n ...props, uid: uid, class: classList, style: style, column: this\n });\n\n let component = resolveComponent('NTableCell' +\n Str.ucfirst(this.type));\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}","import { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n },\n\n NDraggableItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n uid: {\n required: true\n },\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n value: {\n required: true\n },\n\n copy: {\n required: true\n },\n\n remove: {\n required: true\n },\n\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n data()\n {\n return { init: false };\n },\n\n mounted()\n {\n this.timer = setTimeout(() => this.init = true, 20);\n },\n\n beforeUnmount()\n {\n clearTimeout(this.timer);\n },\n\n methods: {\n\n setFirstState(state)\n {\n Obj.set(this.column.changedStates,\n this.uid, this.firstState = state);\n }\n\n },\n\n render()\n {\n if ( this.column.$slots.default ) {\n return this.column.$slots.default(this);\n }\n \n return (\n <div>{ this.input }</div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellString',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellBoolean',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellDatetime',\n\n extends: TableCell,\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellOption',\n\n extends: TableCell,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let prop = this.column.optionsValue;\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellImage',\n\n extends: TableCell,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( ! this.init ) {\n return null;\n }\n\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div> \n );\n }\n\n let classList = [\n 'n-table-cell',\n 'n-table-cell--' + this.column.type\n ];\n\n let props = {\n fit: 'contain',\n }\n\n return (\n <div class={classList}>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellMatrix',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleMatrix()\n {\n if ( this.column.matrix === -1 ) {\n return this.toggleSelect();\n }\n\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let item = Arr.find(itemList, {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp]\n });\n\n if ( ! item ) {\n item = Obj.assign({}, this.item, { [this.column.matrixProp]: 0 });\n }\n\n let currentMatrix = Num.int(item[this.column.matrixProp]);\n\n let matrix = Arr.toggle(Num.matrix(currentMatrix),\n Num.int(this.column.matrix));\n\n item[this.column.matrixProp] = Num.combine(matrix);\n\n Arr.replace(itemList, item, {\n [this.NTable.uniqueProp]: item[this.NTable.uniqueProp]\n });\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n toggleSelect()\n {\n let itemList = this.column.modelValue;\n\n if ( itemList === null ) {\n itemList = [];\n }\n\n let fallback = Obj.assign({}, this.item, {\n [this.column.matrixProp]: this.column.matrix\n });\n\n let finder = {\n [this.NTable.uniqueProp]: this.value[this.NTable.uniqueProp],\n };\n\n let item = Arr.find(itemList, finder);\n\n if ( ! item ) {\n Arr.add(itemList, fallback);\n } else {\n Arr.remove(itemList, finder);\n }\n\n this.column.$emit('update:modelValue', itemList);\n },\n\n isChecked()\n {\n let matrix = Obj.get(this.column.matrixValues,\n this.item[this.NTable.uniqueProp]);\n\n if ( ! matrix ) {\n return false;\n }\n\n let value = Num.int(this.column.matrix);\n\n if ( value === -1 ) {\n return true;\n }\n\n return Arr.has(matrix, value);\n },\n\n isDisabled()\n {\n if ( ! Any.isFunction(this.column.matrixDisabled) ) {\n return this.column.matrixDisabled;\n }\n\n return this.column.matrixDisabled(this);\n }\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleMatrix;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import TableCell from \"../table-cell\";\nimport { Num, Any, Obj, Arr } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableCellSelect',\n\n extends: TableCell,\n\n beforeMount()\n {\n this.firstState = Obj.get(this.column.changedStates,\n this.uid);\n },\n\n methods: {\n\n toggleSelect()\n {\n let item = null;\n\n if ( ! this.isChecked() ) {\n item = Obj.assign({}, this.item);\n }\n\n this.column.$emit('update:modelValue', item);\n },\n\n isChecked()\n {\n if ( Any.isEmpty(this.column.modelValue) ) {\n return false;\n }\n\n return Obj.get(this.column.modelValue, this.NTable.uniqueProp) ===\n this.value[this.NTable.uniqueProp];\n },\n\n isDisabled()\n {\n if ( ! Any.isEmpty(this.column.modelValue) ) {\n return true;\n }\n\n if ( ! Any.isFunction(this.column.disabled) ) {\n return this.column.disabled;\n }\n\n return this.column.disabled(this);\n },\n\n },\n\n render()\n {\n let checked = this.isChecked();\n\n if ( this.firstState === null ) {\n this.setFirstState(checked);\n }\n\n if ( ! this.init ) {\n return null;\n }\n\n let classList = [\n 'n-table-cell--checkbox'\n ];\n\n if ( this.firstState !== checked ) {\n classList.push('n-changed');\n }\n\n if ( checked ) {\n classList.push('n-checked');\n }\n\n let isDisabled = this.isDisabled();\n\n if ( this.column.allowUncheck ) {\n isDisabled = isDisabled && ! checked;\n }\n\n if ( isDisabled ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( ! isDisabled ) {\n props.onClick = this.toggleSelect;\n }\n\n return (\n <div class={classList} {...props}>\n <i class={nano.Icons.checked}></i>\n </div>\n );\n }\n\n}\n","import {Arr, Obj, Any, Dom, Event, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n inject: {\n\n NTable: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n }\n\n },\n\n computed: {\n\n tempFilter()\n {\n return this.NTable.getColumnFilter(this.column);\n },\n\n canReset()\n {\n return ! this.NTable.getColumnFiltered(this.column);\n },\n\n canApply()\n {\n return ! Any.isEmpty(this.filter.value);\n }\n\n },\n\n data()\n {\n return {\n filter: this.getFilterClone(), visible: false\n };\n },\n\n beforeMount()\n {\n this.mountFilter();\n },\n\n mounted()\n {\n Event.bind('NTable:reset', \n this.resetFilter, this._.uid);\n\n Dom.find(document).on('keydown', \n this.onKeydown, this._.uid);\n },\n\n beforeUnmount()\n {\n Event.unbind('NTable:reset', \n this._.uid);\n\n Dom.find(document).off('keydown', \n null, this._.uid);\n },\n\n methods: {\n\n getFilterClone()\n {\n let tempFilter = this.NTable.getColumnFilter(this.column);\n\n if ( Any.isEmpty(tempFilter) ) {\n return null;\n }\n\n return Obj.clone(tempFilter);\n },\n\n getFilterProp()\n {\n return this.column.filterProp || \n this.column.prop;\n },\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null,\n property: this.getFilterProp(), \n };\n },\n\n mountFilter()\n {\n if ( this.filter ) {\n return this.applyFilter();\n }\n\n this.filter = this.getDefaultFilter();\n\n if ( ! this.canApply ) {\n return;\n }\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n resetFilter(uid)\n {\n if ( this.NTable.uid !== uid ) {\n return;\n }\n\n this.filter = this.getDefaultFilter();\n\n Arr.add(this.NTable.tempFilter, this.filter, {\n property: this.getFilterProp()\n });\n },\n\n onKeydown(event)\n {\n if ( ! this.visible ) {\n return;\n }\n\n if ( event.which === 13 && this.canApply ) {\n this.applyFilter();\n }\n\n if ( event.which === 13 && ! this.canApply ) {\n this.clearFilter();\n }\n\n let closeAnyway = event.which === 13 &&\n this.NTable.closeFilterOnEnter;\n\n if ( closeAnyway || event.which === 27 ) {\n this.$refs.popover.close();\n }\n },\n\n applyFilter()\n {\n let filter = Obj.clone(this.filter);\n\n Arr.add(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n },\n\n clearFilter()\n {\n let filter = this.getDefaultFilter();\n\n Arr.remove(this.NTable.tempFilterProps, \n this.getFilterProp());\n\n this.NTable.replaceFilter(filter, {\n property: this.getFilterProp()\n });\n\n this.filter = filter;\n }\n\n },\n\n renderForm()\n {\n return null;\n },\n\n renderApply()\n {\n let props = {\n type: 'primary',\n link: true,\n size: 'xs',\n disabled: ! this.canApply\n };\n\n return (\n <NButton {...props} onClick={this.applyFilter}>\n { this.trans('Apply') }\n </NButton>\n );\n },\n\n renderReset()\n {\n let props = {\n type: 'danger',\n link: true,\n size: 'xs',\n disabled: this.canReset,\n };\n\n return (\n <NButton {...props} onClick={this.clearFilter}>\n { this.trans('Reset') }\n </NButton>\n );\n },\n\n renderFooter()\n {\n return (\n <div class=\"n-table-filter__footer\">\n { this.ctor('renderReset')() }\n { this.ctor('renderApply')() }\n </div>\n )\n },\n\n render()\n {\n let props = {\n class: 'n-table-filter__popover',\n trigger: 'click',\n size: 'sm',\n width: 220,\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.visible} {...props}>\n {\n { default: this.ctor('renderForm'), footer: this.ctor('renderFooter') }\n }\n </NPopover>\n );\n }\n}\n","import TableFilter from \"../table-filter\";\nimport { Dom, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterString',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'li',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n li: this.trans('Includes value'),\n nl: this.trans('Excludes value'),\n eq: this.trans('Equal value'),\n ne: this.trans('Except value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NInput size=\"sm\" vModel={this.filter.value} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterBoolean',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'in',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n 1: this.trans(this.column.trueText),\n 0: this.trans(this.column.falseText),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.value} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\n\nexport default {\n\n name: 'NTableFilterDatetime',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type, \n value: null, \n operator: 'eq',\n property: this.getFilterProp(), \n };\n }\n\n },\n\n renderForm()\n {\n let options = {\n eq: this.trans('Exact date'),\n lt: this.trans('Before date'),\n gt: this.trans('After date'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NDatepicker size=\"sm\" vModel={this.filter.value} format={this.column.datetimeFormat} />\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import TableFilter from \"../table-filter\";\nimport { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTableFilterOption',\n\n extends: TableFilter,\n\n methods: {\n\n getDefaultFilter()\n {\n return {\n type: this.column.type,\n value: [],\n operator: 'in',\n property: this.getFilterProp(),\n };\n }\n\n },\n\n renderOption(value)\n {\n let props = {\n value: Obj.get(value, this.column.optionsValue)\n };\n\n return (\n <NCheckbox {...props}>{ Obj.get(value, this.column.optionsLabel) }</NCheckbox>\n );\n },\n\n renderForm()\n {\n let items = this.column.options;\n\n if ( Any.isFunction(items) ) {\n items = this.column.options(this);\n }\n\n items = Arr.each(items, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let options = {\n in: this.trans('Includes value'),\n ni: this.trans('Excludes value'),\n };\n\n return (\n <NForm>\n <NFormItem>\n <NCheckboxGroup size=\"sm\" align=\"vertical\" vModel={this.filter.value}>\n { Arr.each(items, this.ctor('renderOption')) }\n </NCheckboxGroup>\n </NFormItem>\n <NFormItem>\n <NSelect size=\"sm\" vModel={this.filter.operator} options={options} />\n </NFormItem>\n </NForm>\n );\n }\n\n}\n","import Table from './src/table/table';\nimport TableColumn from './src/table-column/table-column';\nimport TableCellString from './src/table-cell/types/table-cell-string';\nimport TableCellBoolean from './src/table-cell/types/table-cell-boolean';\nimport TableCellDatetime from './src/table-cell/types/table-cell-datetime';\nimport TableCellOption from './src/table-cell/types/table-cell-option';\nimport TableCellImage from './src/table-cell/types/table-cell-image';\nimport TableCellMatrix from './src/table-cell/types/table-cell-matrix';\nimport TableCellSelect from './src/table-cell/types/table-cell-select';\nimport TableFilterString from './src/table-filter/types/table-filter-string';\nimport TableFilterBoolean from './src/table-filter/types/table-filter-boolean';\nimport TableFilterDatetime from './src/table-filter/types/table-filter-datetime';\nimport TableFilterOption from './src/table-filter/types/table-filter-option';\n\n\nexport default function (App) {\n App.component(Table.name, Table);\n App.component(TableColumn.name, TableColumn);\n App.component(TableCellString.name, TableCellString);\n App.component(TableCellBoolean.name, TableCellBoolean);\n App.component(TableCellDatetime.name, TableCellDatetime);\n App.component(TableCellOption.name, TableCellOption);\n App.component(TableCellImage.name, TableCellImage);\n App.component(TableCellMatrix.name, TableCellMatrix);\n App.component(TableCellSelect.name, TableCellSelect);\n App.component(TableFilterString.name, TableFilterString);\n App.component(TableFilterBoolean.name, TableFilterBoolean);\n App.component(TableFilterDatetime.name, TableFilterDatetime);\n App.component(TableFilterOption.name, TableFilterOption);\n}","import { Arr, Any, Obj, Event, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfo',\n\n model: {\n prop: 'item'\n },\n\n props: {\n\n item: {\n default()\n {\n return null;\n }\n },\n\n syncEvent: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n showEmptyIcon: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n uid: UUID(),\n elements: [],\n options: [],\n tempValue: this.item,\n };\n },\n\n watch: {\n\n item(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.bindSyncEvent();\n },\n\n beforeUnmount()\n {\n this.unbindSyncEvent();\n },\n\n updated()\n {\n Any.delay(() => {\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.adaptHeight();\n }\n }, 500);\n },\n\n methods: {\n\n bindSyncEvent()\n {\n if ( !this.syncEvent ) {\n return;\n }\n\n this.options = this.syncEvent;\n\n if ( Any.isFunction(this.options) ) {\n this.options = this.options(this);\n }\n\n let syncFunction = (value, uid = null) => {\n if ( uid === this.options[1] ) {\n this.setValue(value);\n }\n };\n\n Event.bind(this.options[0], syncFunction,\n this.uid);\n },\n\n unbindSyncEvent()\n {\n Event.unbind(this.options[0], this.uid);\n },\n\n setValue(value)\n {\n this.$emit('update:modelValue',\n this.tempValue = value);\n },\n\n addColumn(column)\n {\n Arr.add(this.elements,\n column, { uid: column.uid });\n },\n\n removeColumn(column)\n {\n Arr.remove(this.elements,\n { uid: column.uid });\n },\n\n },\n\n provide()\n {\n return {\n NInfo: this\n };\n },\n\n renderEmpty()\n {\n return (\n <NEmptyIcon disabled={!this.showEmptyIcon} class=\"n-info__empty\">\n {this.$slots.empty && this.$slots.empty() || this.trans('No entry')}\n </NEmptyIcon>\n );\n },\n\n renderBody()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n return this.ctor('renderEmpty')();\n }\n\n let elements = Obj.each(this.elements, (column) => {\n return (\n <div class=\"n-info__column\">\n {column.ctor('renderLabel')({ item: this.tempValue })}\n {column.ctor('renderBody')({ item: this.tempValue })}\n </div>\n );\n });\n\n return (\n <div class=\"n-info__body\">\n {Any.vals(elements)}\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-info',\n 'n-info--' + this.type,\n 'n-info--' + this.size,\n ];\n\n let infoHtml = (\n <NScrollbar ref=\"scrollbar\" relative={this.relative}>\n {this.ctor('renderBody')()}\n </NScrollbar>\n );\n\n return (\n <div class={classList}>\n {[infoHtml, this.$slots.default()]}\n </div>\n );\n }\n}\n","import { UUID, Obj, Locale, Str } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NInfoColumn',\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'string';\n },\n type: [String]\n },\n\n previewProp: {\n default()\n {\n return 'preview';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Object, Array, Function]\n },\n\n optionsValue: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return Locale.trans('-');\n },\n type: [String]\n },\n\n trueText: {\n default()\n {\n return Locale.trans('Yes');\n },\n type: [String]\n },\n\n falseText: {\n default()\n {\n return Locale.trans('No');\n },\n type: [String]\n },\n\n datetimeFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n this.NInfo.addColumn(this);\n },\n\n beforeUnmount()\n {\n this.NInfo.removeColumn(this);\n },\n\n renderLabel()\n {\n if ( this.$slots.label ) {\n return this.$slots.label();\n }\n \n return (\n <div class=\"n-info-column\">\n <span>{this.label}</span>\n </div>\n );\n },\n\n renderBody(props)\n {\n let passed = Obj.except(props, [], {\n column: this\n });\n\n let component = resolveComponent('NInfoField' + \n Str.ucfirst(this.type));\n\n if ( ! component ) {\n return null;\n }\n\n passed.class = [\n 'n-info-field',\n 'n-info-field--' + this.type\n ];\n\n return h(component, passed);\n },\n\n render()\n {\n return null;\n }\n\n}\n","import { Obj } from \"@kizmann/pico-js\";\nimport CtorMixin from \"../../../mixins/src/ctor\";\n\nexport default {\n\n inject: {\n\n NInfo: {\n default: undefined\n }\n\n },\n\n props: {\n\n column: {\n required: true\n },\n\n item: {\n required: true\n },\n\n },\n\n computed: {\n\n input()\n {\n return Obj.get(this.item, this.column.prop);\n }\n\n },\n\n render()\n {\n return (\n <div>\n <span>{ this.input }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldString',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertString(this.input, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldBoolean',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertBoolean(this.input, this.column.trueText, this.column.falseText) }</span>\n </div>\n );\n }\n\n}\n","import { Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldDatetime',\n\n extends: InfoField,\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n return (\n <div>\n <span>{ Any.convertDatetime(this.input, this.column.datetimeFormat, this.column.emptyText) }</span>\n </div>\n );\n }\n\n}\n","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport InfoField from \"../info-field\";\n\nexport default {\n\n name: 'NInfoFieldOption',\n\n extends: InfoField,\n\n renderOption(value)\n {\n let options = this.column.options;\n\n if ( Any.isFunction(options) ) {\n options = this.column.options(this);\n }\n\n let prop = this.column.optionsValue;\n\n options = Arr.each(options, (value, index) => {\n return { $value: value, $index: index };\n });\n\n let option = Arr.find(options, (item) => {\n return Obj.get(item, prop) == value;\n });\n\n if ( ! option ) {\n return [this.column.emptyText];\n }\n\n return Obj.get(option, this.column.optionsLabel,\n this.column.undefinedText);\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let input = ! Any.isObject(this.input) ?\n [this.input] : this.input;\n\n return (\n <div>\n <span>{ Arr.each(input, this.ctor('renderOption')) }</span>\n </div>\n );\n }\n\n}\n","import InfoField from \"../info-field\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInfoFieldImage',\n\n extends: InfoField,\n\n computed: {\n\n preview()\n {\n return Obj.get(this.item, this.column.previewProp);\n }\n\n },\n\n render()\n {\n if ( this.column.cslo('default', this) ) {\n return (\n <div>{ this.column.$slots.default(this) }</div>\n );\n }\n\n let props = {\n fit: 'contain',\n };\n\n return (\n <div>\n <NPreview file={this.preview || this.input} thumb={this.input} {...props} />\n </div>\n );\n }\n\n}\n","import Info from './src/info/info';\nimport InfoColumn from './src/info-column/info-column';\nimport InfoFieldString from './src/info-field/types/info-field-string';\nimport InfoFieldBoolean from './src/info-field/types/info-field-boolean';\nimport InfoFieldDatetime from './src/info-field/types/info-field-datetime';\nimport InfoFieldOption from './src/info-field/types/info-field-option';\nimport InfoFieldImage from './src/info-field/types/info-field-image';\n\nexport default function (App) {\n App.component(Info.name, Info);\n App.component(InfoColumn.name, InfoColumn);\n App.component(InfoFieldString.name, InfoFieldString);\n App.component(InfoFieldBoolean.name, InfoFieldBoolean);\n App.component(InfoFieldDatetime.name, InfoFieldDatetime);\n App.component(InfoFieldOption.name, InfoFieldOption);\n App.component(InfoFieldImage.name, InfoFieldImage);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfig',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return this;\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n solveAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$scope/) ) {\n return Obj.has({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/\\$\\$value/) ) {\n return Obj.has({ $$value: this.tempValue }, value);\n }\n\n return false;\n },\n\n solveValue(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.tempValue, ...args]);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$scope/) ) {\n return Obj.get({ $$scope: this.scope }, value);\n }\n\n if ( Any.isString(value) && value.match(/^\\$\\$value/) ) {\n return Obj.get({ $$value: this.tempValue }, value);\n }\n\n return value;\n },\n\n solveEvent(value)\n {\n let scope = Obj.assign(this.scope, {\n $configRefs: this.$refs\n });\n\n if ( Any.isFunction(value) ) {\n return (...args) => value.apply(scope, args);\n }\n\n return value;\n },\n\n solveContent(value, ...args)\n {\n if ( Any.isFunction(value) ) {\n return value.apply(this.scope, [this.$render, this.tempValue, ...args]);\n }\n\n return value;\n },\n\n prepareValue(veModel)\n {\n if ( ! veModel.path ) {\n return veModel.fallback;\n }\n\n if ( ! Obj.has(this.tempValue, veModel.path) ) {\n this.deepSet(this.tempValue, veModel.path, veModel.fallback);\n }\n\n return Obj.get(this.tempValue, veModel.path);\n },\n\n inputClosure(veModel, closure = null)\n {\n if ( ! veModel.path ) {\n return () => null;\n }\n\n return (value) => {\n\n if ( closure ) {\n closure(value, this.tempValue);\n }\n\n this.deepSet(this.tempValue, veModel.path, value);\n };\n },\n\n deepSet(obj, keys, val)\n {\n keys = (typeof keys === 'string') ?\n keys.split('.') : keys;\n\n let key = keys.shift();\n\n if ( obj[key] === undefined || obj[key] === null ) {\n Obj.set(obj, key, {});\n }\n\n if ( keys.length === 0 ) {\n return Obj.set(obj, key, val);\n }\n\n return this.deepSet(obj[key], keys, val);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLayer(source)\n {\n if ( ! Any.isPlain(source) ) {\n return source;\n }\n\n return Arr.each(source, (setup, component) => {\n\n component = component.replace(/:.*?$/, '');\n\n // Set setup defaults\n setup = Obj.assign({\n vIf: true, vShow: true, vAwait: null, class: null, $on: {}, $props: {}, $attrs: {}\n }, setup);\n\n if ( ! this.solveAwait(setup.vAwait) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vIf) ) {\n return null;\n }\n\n if ( ! this.solveValue(setup.vShow) ) {\n setup.style = { display: 'none' };\n }\n\n // Build default model\n let veModel = Obj.assign({\n prop: 'modelValue', fallback: null\n }, setup.model);\n\n // Delete model from setup\n delete setup.model;\n\n // Normalize props\n setup.$props = this.solveValue(setup.$props);\n\n // Normalize class\n setup.class = this.solveValue(setup.class);\n\n // Solve props\n Obj.map(setup.$props, (value) => this.solveValue(value));\n\n // Normalize attrs\n setup.$attrs = this.solveValue(setup.$attrs);\n\n // Solve attrs\n Obj.map(setup.$attrs, (value) => this.solveValue(value));\n\n // Solve events\n Obj.map(setup.$on, (value) => this.solveEvent(value));\n\n if ( veModel.path ) {\n\n // Override input event\n setup['onUpdate:modelValue'] = this.inputClosure(veModel, setup.$on.input);\n\n // Set prop in value or get fallback\n setup.$props[veModel.prop] = this.prepareValue(veModel);\n }\n\n Obj.assign(setup, setup.$props);\n delete setup.$props;\n\n Obj.assign(setup, setup.$attrs);\n delete setup.$attrs;\n\n Obj.assign(setup, setup.$on);\n delete setup.$on;\n\n let content = setup.content;\n delete setup.content;\n\n delete setup.vIf;\n delete setup.vShow;\n delete setup.vAwait;\n\n // Solve content if is functional\n let slots = this.solveContent(content, setup);\n\n let domtypes = [\n 'div', 'span', 'a'\n ];\n\n let resolved = component;\n\n if ( ! Arr.has(domtypes, resolved) ) {\n resolved = resolveComponent(component);\n }\n\n return h(resolved, setup, this.ctor('renderLayer')(slots));\n });\n },\n\n render()\n {\n return this.ctor('renderLayer')(this.config)[0];\n }\n\n}","import { Arr, Obj, Str, Any } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NConfigNext',\n\n props: {\n\n modelValue: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n extraValue: {\n default()\n {\n return null;\n },\n type: [Object]\n },\n\n config: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue, sempValue: this.extraValue || this.modelValue\n };\n },\n\n watch: {\n\n modelValue: function (value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n extraValue: function (value) {\n if ( value !== this.sempValue ) {\n this.sempValue = value;\n }\n }\n\n },\n\n methods: {\n\n getString(value)\n {\n let final = value.replace(/^@/, '')\n .replace(/^\\\\@/, '@');\n\n\n\n if ( value.match(/^@/) ) {\n return this.trans(final);\n }\n\n return final;\n },\n\n propAwait(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, true);\n });\n\n return ! Arr.has(result, false);\n },\n\n propExists(value)\n {\n if ( Any.isEmpty(value) ) {\n return true;\n }\n\n if ( ! Any.isArray(value) ) {\n value = [value];\n }\n\n let result = Arr.each(value, (state) => {\n return this.getState(state, false);\n });\n\n return ! Arr.has(result, false);\n },\n\n getState(value, exists = true)\n {\n if ( Any.isFunction(value) ) {\n return !! this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return !! value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return !! value;\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( exists ) {\n return Obj.get(sources, value, undefined) === undefined;\n }\n\n return !! Obj.get(sources, value);\n },\n\n toPropKey(value)\n {\n let splits = value.replace(/^!/, '').split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n toEventKey(value)\n {\n if ( ! value.match(/^on/) ) {\n value = 'on-' + value;\n }\n\n let splits = value.split('-');\n\n value = Arr.each(splits, (split) => {\n return Str.ucfirst(split);\n });\n\n return Str.lcfirst(value.join(''));\n },\n\n solveInput(cb, fallback)\n {\n return cb.call(this.scope, this.tempValue, fallback);\n },\n\n solveContext(cb)\n {\n if ( ! Any.isFunction(cb) ) {\n return () => console.error('Raw suffix (!) only allowed on functions');\n }\n\n return (...args) => cb.call(this.scope, ...args);\n },\n\n getProp(key, value)\n {\n if ( key.match(/^!/) ) {\n return this.solveContext(value);\n }\n\n if ( Any.isFunction(value) ) {\n return this.solveInput(value);\n }\n\n if ( ! Any.isString(value) ) {\n return value;\n }\n\n if ( ! value.match(/(\\$scope|\\$model|\\$global)/) ) {\n return this.getString(value);\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n let result = Obj.get(sources, value.replace(/^!+/, ''));\n\n if ( value.match(/^!!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n if ( value.match(/^!\\$/) ) {\n result = Any.isEmpty(result);\n }\n\n return result;\n },\n\n getInput(prop, fallback)\n {\n if ( Any.isFunction(prop) ) {\n return this.solveInput(prop, fallback);\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n if ( ! Any.isNull(fallback) && Obj.get(sources, prop, -1337) === -1337 ) {\n Obj.set(sources, prop, fallback);\n }\n\n return Obj.get(sources, prop);\n },\n\n setInput(prop, value)\n {\n if ( Any.isFunction(prop) ) {\n return console.error('NConfigNew: Bind with function is not allowed!');\n }\n\n let sources = {\n $scope: this.scope, $model: this.tempValue, $extra: this.sempValue, $global: window\n };\n\n Obj.set(sources, prop, value);\n }\n\n },\n\n renderSetup(setup, alias)\n {\n if ( ! Any.isPlain(setup) ) {\n return setup;\n }\n\n if ( ! this.propExists(setup['vIf']) ) {\n return null;\n }\n\n if ( ! this.propAwait(setup['vAwait']) ) {\n return null;\n }\n\n let defaults = {\n binds: {}, props: {}, events: {}, content: {}\n };\n\n let defaultsBind = {\n value: '', fallback: null\n };\n\n setup = Obj.assign(defaults, setup);\n\n let binds = {};\n\n Obj.each(setup['binds'], (value, key) => {\n\n if ( Any.isString(value) ) {\n value = { value: value };\n }\n\n binds[key] = Obj.assign(defaultsBind, value);\n });\n\n let events = {};\n\n Obj.each(setup['events'], (value, key) => {\n events[this.toEventKey(key)] = this.solveContext(value);\n });\n\n let props = {};\n\n Obj.each(setup['props'], (value, key) => {\n props[this.toPropKey(key)] = this.getProp(key, value);\n });\n\n props = Obj.assign(props, events);\n\n Obj.each(binds, (value, key) => {\n\n let updateKey = 'onUpdate:' + key;\n\n props[this.toEventKey(updateKey)] = (input) => {\n this.setInput(value.value, input);\n };\n\n props[this.toPropKey(key)] = this.getInput(value.value,\n value.fallback);\n });\n\n let component = alias.replace(/:.*?$/, '');\n\n if ( !Arr.has(['div', 'p'], component) ) {\n component = resolveComponent(component);\n }\n\n if ( Any.isEmpty(component) ) {\n return null;\n }\n\n if ( !this.propExists(setup['vShow']) ) {\n props.style = \"display: none;\";\n }\n\n let render = () => Arr.each(setup.content, (value, key) => {\n return this.ctor('renderSetup')(value, key);\n });\n\n if ( Any.isFunction(setup.content) ) {\n render = () => setup.content.apply(this.scope);\n }\n\n if ( Any.isString(setup.content) ) {\n render = () => this.getString(setup.content);\n }\n\n return h(component, props, { default: render });\n },\n\n render()\n {\n return Arr.each(this.config, (value, key) => this.ctor('renderSetup')(value, key));\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NReferencePanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return \"\";\n },\n type: [String]\n },\n\n model: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n },\n\n data()\n {\n return {\n expanded: [], selected: null, modelTree: this.buildTree(this.model, '$model'), scopeTree: this.buildTree(this.scope, '$scope')\n };\n },\n\n methods: {\n\n buildTree(value, path = '')\n {\n let result = {};\n\n if ( ! Any.isPlain(value) && ! Obj.get(value, '__v_skip') ) {\n return result;\n }\n\n for(var key in value) {\n\n let [ref, val] = [\n `${path}.${key}`, value[key]\n ];\n\n if ( Any.isPlain(val) ) {\n val = this.buildTree(val, ref);\n }\n\n let type = typeof val;\n\n if ( Any.isArray(val) ) {\n type = 'array';\n }\n\n result[key] = {\n path: ref, value: val, type: type\n };\n\n }\n\n return result;\n },\n\n submitItem(value)\n {\n this.$emit('update:modelValue', value.path);\n },\n\n selectItem(value)\n {\n this.selected = value;\n },\n\n expandItem(value)\n {\n if ( value.type === 'object' ) {\n Arr.toggle(this.expanded, value.path);\n }\n }\n\n },\n\n renderLeaf(value, key)\n {\n let classList = [\n 'n-reference-panel__item',\n 'n-reference-panel__item--' + value.type,\n ];\n\n if ( Obj.get(this.selected, 'path') === value.path) {\n classList.push('is-selected');\n }\n\n if ( value.type === 'object' ) {\n classList.push('has-childs');\n }\n\n if ( Arr.has(this.expanded, value.path) ) {\n classList.push('is-expanded');\n }\n\n return (\n <div class={classList} onDblclick={() => this.submitItem(value)}>\n <div class=\"n-reference-panel__expand\" onClick={() => this.expandItem(value)}>\n <i class=\"fa fa-angle-right\"></i>\n </div>\n <div class=\"n-reference-panel__name\" onClick={() => this.selectItem(value)}>\n {key}\n </div>\n <div class=\"n-reference-panel__type\" onClick={() => this.selectItem(value)}>\n {value.type}\n </div>\n <div class=\"n-reference-panel__pick\" onClick={() => this.submitItem(value)}>\n <i class=\"fa fa-expand\"></i>\n </div>\n </div>\n );\n },\n\n renderTree(value, key)\n {\n let childItems = Arr.each(value.value, (value, key) => {\n return this.ctor('renderItem')(value, key);\n });\n\n let childHtml = (\n <div class=\"n-reference-panel__childs\">\n {childItems}\n </div>\n );\n\n if ( ! Arr.has(this.expanded, value.path) ) {\n childHtml = null;\n }\n\n return [this.ctor('renderLeaf')(value, key), childHtml];\n },\n\n renderItem(value, key)\n {\n if ( value.type === 'object' ) {\n return this.ctor('renderTree')(value, key);\n }\n\n return this.ctor('renderLeaf')(value, key);\n },\n\n renderModel()\n {\n let modelHtml = Arr.each(this.modelTree, (value, key) => {\n return this.ctor('renderItem')(value, key);\n });\n\n return (\n <div class=\"n-reference-panel__model\">\n {modelHtml}\n </div>\n );\n },\n\n renderScope()\n {\n let scopeHtml = Arr.each(this.scopeTree, (value, key) => {\n return this.ctor('renderItem')(value, key);\n });\n\n return (\n <div class=\"n-reference-panel__scope\">\n {scopeHtml}\n </div>\n );\n },\n\n render()\n {\n return (\n <div class=\"n-reference-panel\">\n {[this.ctor('renderModel')(), this.ctor('renderScope')()]}\n </div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NReferencePicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n model: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n scope: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n width: {\n default()\n {\n return '100%';\n },\n type: [String]\n },\n\n height: {\n default()\n {\n return '100%';\n },\n type: [String]\n },\n\n },\n\n data()\n {\n return {\n modal: false, tempValue: this.modelValue\n };\n },\n\n methods: {\n\n updateValue(value)\n {\n this.$emit('update:modelValue', this.tempValue = value);\n }\n\n },\n\n renderModal()\n {\n if ( ! this.modal ) {\n return null;\n }\n\n let modalProps = {\n modelValue: true,\n width: this.width,\n height: this.height,\n };\n\n modalProps['onClose'] = () => {\n this.modal = false;\n };\n\n let panelProps = {\n model: this.model, scope: this.scope,\n };\n\n panelProps['onUpdate:modelValue'] = (value) => {\n this.updateValue(value); this.modal = false;\n };\n\n let slots = {\n //\n };\n\n slots['body'] = () => (\n <NReferencePanel class=\"in-modal\" {...panelProps} />\n );\n\n return (\n <NModal {...modalProps} v-slots={slots} />\n );\n },\n\n renderInput()\n {\n let inputProps = {\n modelValue: this.tempValue,\n icon: 'fa fa-expand',\n size: this.size,\n };\n\n inputProps['onUpdate:modelValue'] = (value) => {\n this.updateValue(value);\n };\n\n inputProps['onBlur'] = (e) => {\n this.$emit('onBlur', e);\n };\n\n inputProps['onIconClick'] = () => {\n this.modal = true;\n };\n\n return (\n <NInput {...inputProps} />\n );\n },\n\n render()\n {\n return (\n <div class=\"n-reference-picker\">\n {[this.ctor('renderInput')(), this.ctor('renderModal')()]}\n </div>\n );\n }\n\n}","import NConfig from \"./src/config/config\";\nimport NConfigNext from \"./src/config/config-next\";\nimport NBuilder from \"./src/builder/builder\";\nimport NRefrencePanel from \"./src/reference-panel/reference-panel\";\nimport NRefrencePicker from \"./src/reference-picker/reference-picker\";\n\nexport default function(App) {\n App.component(NConfig.name, NConfig);\n App.component(NConfigNext.name, NConfigNext);\n App.component(NBuilder.name, NBuilder);\n App.component(NRefrencePanel.name, NRefrencePanel);\n App.component(NRefrencePicker.name, NRefrencePicker);\n}\n","import { Arr, Any, Dom, Event, UUID } from \"@kizmann/pico-js\";\n\n\nexport default {\n\n name: 'NPopover',\n\n provide()\n {\n return {\n NPopover: this\n };\n },\n\n inject: {\n\n NPopover: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n window: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n scrollClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n multiClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n framerate: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: false,\n clientX: 0,\n clientY: 0,\n target: null,\n prevent: false,\n };\n },\n\n watch: {\n\n modelValue()\n {\n this.tempValue = this.modelValue;\n },\n\n tempValue()\n {\n Any.delay(this.refreshVisible, 50);\n }\n\n },\n\n beforeMount()\n {\n this.tempValue = this.modelValue;\n },\n\n mounted()\n {\n this.target = Dom.find(this.$el).previous().get(0);\n\n if ( this.trigger === 'context' ) {\n this.target = Dom.find(this.$el).parent().get(0);\n }\n\n if ( this.window ) {\n Dom.find(document.body).append(this.$el);\n }\n\n if ( this.listen && this.trigger === 'hover' ) {\n Dom.find(document.body).on('mousemove', \n Any.framerate(this.onHover, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'click' ) {\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onClick, 30), this._.uid);\n }\n\n if ( this.listen && this.trigger === 'context' ) {\n Dom.find(document.body).on('contextmenu', \n Any.framerate(this.onContext, 30), this._.uid);\n }\n\n Dom.find(document.body).on(this.mousedown, \n Any.framerate(this.onExit, 30), this._.uid);\n\n Event.bind('NPopover:close', this.onCloseEvent, this._.uid);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n\n Dom.find(document).off('mousemove', null, this._.uid);\n Dom.find(document).off('mousedown', null, this._.uid);\n Dom.find(document).off('contextmenu', null, this._.uid);\n\n Event.unbind('NPopover:close', this._.uid);\n \n },\n\n methods: {\n\n active()\n {\n return this.tempValue;\n },\n\n open()\n {\n this.$emit('update:modelValue', \n this.tempValue = true);\n },\n\n close(type = null)\n {\n if ( this.prevent ) {\n return;\n }\n\n delete this.timer;\n\n if ( ! type ) {\n this.$emit('close');\n }\n\n if ( type === 'scroll' ) {\n this.$emit('scrollClose');\n }\n\n if ( type === 'multi' ) {\n this.$emit('multiClose');\n }\n\n this.$emit('update:modelValue', \n this.tempValue = false);\n },\n\n pause()\n {\n this.prevent = true;\n },\n\n unpause()\n {\n this.prevent = false;\n },\n\n onCloseEvent(uid)\n {\n if ( this.multiClose && this.tempValue && this._.uid !== uid ) {\n this.close('multi');\n }\n },\n\n refreshVisible()\n {\n Dom.find(this.$el).css(null);\n\n if ( ! this.tempValue ) {\n return this.stopRefreshInterval();\n }\n\n this.startRefreshInterval();\n\n delete this.passedOffset;\n },\n\n startRefreshInterval()\n {\n this.refresh = setInterval(this.updatePosition, \n 1000 / this.framerate);\n\n let onReady = () => {\n\n if ( this.listen ) {\n Dom.find(this.target).addClass('n-open');\n }\n\n Dom.find(this.$el).addClass('n-ready');\n\n if ( this.NPopover ) {\n this.NPopover.pause();\n }\n\n Event.fire('NPopover:close', this._.uid);\n }\n\n Any.delay(onReady, 100);\n },\n\n stopRefreshInterval()\n {\n clearInterval(this.refresh);\n\n if ( this.NPopover ) {\n this.NPopover.unpause();\n }\n\n if ( this.listen ) {\n Dom.find(this.target).removeClass('n-open');\n }\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n isSameOffset(offset)\n {\n if ( ! this.passedOffset ) {\n return false;\n }\n\n let rainbow = Arr.each(['x', 'y'], (key) => {\n return offset[key] === this.passedOffset[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n isSameSize(size)\n {\n if ( ! this.passedSize ) {\n return false;\n }\n\n let rainbow = Arr.each(['width', 'height'], (key) => {\n return size[key] === this.passedSize[key];\n });\n\n return ! Arr.has(rainbow, false);\n },\n\n getTargetHorizontal(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n\n let posY = {\n\n // Set above the tagret element\n start: targetRect.top - windowRect.height,\n \n // Set at bottom of target element\n end: targetRect.top + targetRect.height,\n\n };\n\n let posX = {\n\n // Set on the left of target element\n start: targetRect.left,\n\n // Set into the center of the target element\n center: targetRect.left + (targetRect.width * 0.5) - \n (windowRect.width * 0.5),\n\n // Set on the right of the target element\n end: targetRect.left + targetRect.width - \n windowRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'top-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'top-center' ) {\n offset = { x: posX.center, y: posY.start };\n }\n\n if ( position === 'top-end' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'bottom-start' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'bottom-center' ) {\n offset = { x: posX.center, y: posY.end };\n }\n\n if ( position === 'bottom-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(top)\\-/) ) {\n inverse = inverse.replace(/^(top)\\-/, 'bottom-');\n }\n\n if ( position.match(/^(bottom)\\-/) ) {\n inverse = inverse.replace(/^(bottom)\\-/, 'top-');\n }\n\n let broken = offset.y + windowRect.height > \n window.innerHeight || offset.y < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetHorizontal(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetVertical(position, fallback = null)\n {\n let targetRect = this.target.getBoundingClientRect();\n\n if ( this.trigger === 'context' ) {\n targetRect = {\n top: this.clientY, left: this.clientX, width: 2, height: 2\n };\n }\n\n let windowRect = this.$el.getBoundingClientRect();\n\n if ( this.width === -1 ) {\n windowRect.width = targetRect.width;\n }\n \n let posY = {\n\n // Set at top edge of the target element\n start: targetRect.top,\n\n // Set at the middle of the target element\n center: targetRect.top + (targetRect.height * 0.5) - \n (windowRect.height * 0.5),\n\n // Ste at the bottom of the target elemnent\n end: targetRect.top + targetRect.height - \n windowRect.height,\n\n };\n\n let posX = {\n\n // Set to the left of the target element\n start: targetRect.left - windowRect.width,\n\n // Set to the right of the target element\n end: targetRect.left + targetRect.width,\n\n };\n\n let offset = { x: 0, y: 0 };\n\n if ( position === 'left-start' ) {\n offset = { x: posX.start, y: posY.start };\n }\n\n if ( position === 'left-center' ) {\n offset = { x: posX.start, y: posY.center };\n }\n\n if ( position === 'left-end' ) {\n offset = { x: posX.start, y: posY.end };\n }\n\n if ( position === 'right-start' ) {\n offset = { x: posX.end, y: posY.start };\n }\n\n if ( position === 'right-center' ) {\n offset = { x: posX.end, y: posY.center };\n }\n\n if ( position === 'right-end' ) {\n offset = { x: posX.end, y: posY.end };\n }\n\n let inverse = this.position;\n\n if ( position.match(/^(left)\\-/) ) {\n inverse = inverse.replace(/^(left)\\-/, 'right-');\n }\n\n if ( position.match(/^(right)\\-/) ) {\n inverse = inverse.replace(/^(right)\\-/, 'left-');\n }\n\n let broken = offset.x + windowRect.width > \n window.innerWidth || offset.x < 0;\n\n if ( this.scrollClose && broken && ! fallback ) {\n return this.getTargetVertical(inverse, offset);\n }\n\n if ( fallback && broken ) {\n offset = fallback;\n }\n\n if ( offset.y < 0 ) {\n offset.y = 0;\n }\n \n if ( offset.y + windowRect.height > window.innerHeight ) {\n offset.y = window.innerHeight - windowRect.height;\n }\n\n if ( offset.x < 0 ) {\n offset.x = 0;\n }\n \n if ( offset.x + windowRect.width > window.innerWidth ) {\n offset.x = window.innerWidth - windowRect.width -\n (window.innerWidth - document.body.clientWidth);\n }\n\n return offset;\n },\n\n getTargetOffset()\n {\n let position = this.position;\n\n if ( position.match(/^(top|bottom)\\-/) ) {\n return this.getTargetHorizontal(position);\n }\n\n if ( position.match(/^(left|right)\\-/) ) {\n return this.getTargetVertical(position);\n }\n\n return targetRect;\n },\n\n updatePosition()\n {\n let size = this.$el.getBoundingClientRect(),\n rect = this.target.getBoundingClientRect();\n\n let isSameSize = this.isSameSize(size);\n\n if ( isSameSize && this.isSameOffset(rect) ) {\n return;\n }\n\n if ( ! this.timer ) {\n this.timer = Date.now();\n }\n\n this.passedSize = size;\n\n if ( this.width ) {\n Dom.find(this.$el).css({ width: this.width + 'px' });\n }\n\n let offset = this.getTargetOffset();\n\n let scroll = Dom.find(document.body)\n .scroll();\n\n let style = {\n 'z-index': window.zIndex++,\n 'top': Math.round(offset.y + scroll.top) + 'px', \n 'left': Math.round(offset.x + scroll.left) + 'px', \n };\n\n if ( this.width === -1 ) {\n style.width = rect.width + 'px';\n }\n\n Dom.find(this.$el).css(style);\n\n let isScrollClose = this.passedOffset && isSameSize &&\n (Date.now() - this.timer) > 500;\n\n if ( this.scrollClose && isScrollClose ) {\n this.close('scroll');\n }\n\n this.passedOffset = rect;\n },\n\n onHover(event, el)\n {\n if ( this.disabled ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n if ( ! result ) {\n return this.$nextTick(this.close);\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onClick(event, el)\n {\n let keyCode = event.which === 1 ||\n event.which === 0;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n let result = (!! target || !! source);\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onContext(event, el)\n {\n let keyCode = event.which === 3;\n\n if ( this.disabled || this.tempValue || ! keyCode ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target),\n source = Dom.find(el).closest(this.$el);\n\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n\n let result = (!! target || !! source);\n\n if ( result ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( this.tempValue === result ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = result);\n },\n\n onExit(event, el)\n {\n if ( this.disabled || ! this.tempValue ) {\n return;\n }\n\n if ( !! Dom.find(el).closest(this.$el) ) {\n return;\n }\n\n let target = Dom.find(el).closest(this.target);\n\n if ( this.trigger !== 'context' && !! target ) {\n return;\n }\n\n this.close();\n }\n\n },\n\n renderBody()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <div class=\"n-popover__frame\">\n { this.$slots.header &&\n <div class=\"n-popover__header\">\n { this.$slots.header() }\n </div>\n }\n <div class=\"n-popover__body\">\n { this.$slots.default() }\n </div>\n { this.$slots.footer &&\n <div class=\"n-popover__footer\">\n { this.$slots.footer() }\n </div>\n }\n </div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-popover',\n 'n-popover--' + this.type,\n 'n-popover--' + this.size,\n 'n-popover--' + this.position,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let viewBody = this.modelValue;\n\n if ( Any.isNull(this.modelValue) ) {\n viewBody = this.tempValue;\n }\n\n return (\n <div class={classList}>\n { viewBody && this.ctor('renderBody')() }\n </div>\n );\n }\n\n}\n","export default {\n\n name: 'NPopoverGroup',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-popover-group',\n 'n-popover-group--' + this.tempSize,\n ];\n\n return (\n <label class={classList}>\n <span>{ this.$slots.default() }</span>\n </label>\n );\n }\n\n}\n","import { Obj, Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPopoverOption',\n\n inject: {\n NPopover: {\n default: undefined\n }\n },\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n focus: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n active: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n image: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n imagePosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n clickClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n\n },\n\n computed: {\n\n tempSize()\n {\n if ( this.NPopover ) {\n return this.NPopover.size;\n }\n\n return this.size;\n }\n\n },\n\n methods: {\n\n onClick(event)\n {\n if ( this.NPopover && this.clickClose ) {\n this.NPopover.close();\n }\n\n this.$emit('fakeclick', event);\n }\n\n },\n\n renderImage()\n {\n if ( ! this.image ) {\n return null;\n }\n\n let classList = [\n 'n-image',\n 'n-image--' + this.imagePosition,\n ];\n\n return (<img class={classList} src={this.image} />);\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n renderContent()\n {\n if ( this.$slots.raw ) {\n return this.$slots.raw();\n }\n\n return (\n <span>{ this.$slots.default() }</span>\n );\n },\n\n render()\n {\n let classList = [\n 'n-popover-option',\n 'n-popover-option--' + this.type,\n 'n-popover-option--' + this.tempSize,\n ];\n\n if ( this.active ) {\n classList.push('n-active');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onClick = this.onClick;\n }\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n return (\n <a class={classList} href=\"javascript:void(0)\" {...props}>\n { this.ctor('renderImage')() }\n { this.ctor('renderContent')() }\n { this.ctor('renderIcon')() }\n </a>\n );\n }\n\n}\n","import Popover from './src/popover/popover';\nimport PopoverGroup from './src/popover-group/popover-group';\nimport PopoverOption from './src/popover-option/popover-option';\n\nexport default function (App) {\n App.component(Popover.name, Popover);\n App.component(PopoverGroup.name, PopoverGroup);\n App.component(PopoverOption.name, PopoverOption);\n}","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NForm',\n\n inheritAttrs: false,\n\n model: {\n prop: 'form'\n },\n\n props: {\n\n dom: {\n default()\n {\n return 'div';\n },\n type: [String]\n },\n\n form: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n errors: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n prevent: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n ignore: {\n default()\n {\n return ['modified', 'dragid'];\n },\n type: [Array]\n },\n\n forceChange: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n forceErrors: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n classList()\n {\n if ( ! this.$attrs.class ) {\n return [];\n }\n\n return Any.isArray(this.$attrs) ? this.$attrs.class :\n [this.$attrs.class];\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), elements: [], blocked: true,\n };\n },\n\n provide()\n {\n return {\n NForm: this\n };\n },\n\n mounted()\n {\n Any.delay(this.ctor('ready'), 500);\n },\n\n ready()\n {\n this.$watch('form', this.emitChange,\n { deep: true });\n\n this.resetChange();\n },\n\n methods: {\n\n onSubmit(event)\n {\n if ( this.prevent ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if ( Dom.find(event.target).is('input') ) {\n this.$emit('submit', event);\n }\n\n return this.prevent;\n },\n\n addItem(item)\n {\n Arr.add(this.elements, item, {\n uid: item.uid\n });\n },\n\n removeItem(item)\n {\n Arr.remove(this.elements,{\n uid: item.uid\n });\n },\n\n resetChange(timeout = 500)\n {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n this.blocked = false;\n }, timeout);\n\n this.blocked = true;\n\n let value = Obj.except(this.form,\n this.ignore);\n\n this.prevState = JSON.stringify(value);\n },\n\n emitChange()\n {\n if ( this.blocked ) {\n return;\n }\n\n let value = Obj.except(this.form,\n this.ignore);\n\n let nextState = JSON.stringify(value);\n\n if ( this.prevState == nextState ) {\n return;\n }\n\n this.prevState = nextState;\n\n this.$emit('change');\n },\n\n },\n\n render()\n {\n let classList = [\n 'n-form',\n 'n-form--' + this.align,\n ];\n\n let attrs = Obj.except(this.$attrs, ['class', 'onChange', 'onSubmit'], {\n class: this.cmer(classList)\n });\n\n attrs['onSubmit'] = (e) => {\n return false;\n }\n\n return h(this.dom, { ...attrs }, [\n this.$slots.default && this.$slots.default()\n ]);\n }\n\n}\n","export default {\n\n name: 'NFormGroup',\n\n inject: {\n\n NForm: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n }\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'vertical';\n },\n type: [String]\n },\n\n collapse: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n collapseGroup()\n {\n this.$emit('update:modelValue', this.tempValue = ! this.tempValue);\n }\n\n },\n\n renderCollapse()\n {\n if ( ! this.collapse ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__collapse\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__icon\">\n <i class={['n-icon', this.icon]}></i>\n </div>\n );\n },\n\n renderText()\n {\n let textHtml = (\n <div class=\"n-form-group__text\">\n <span>{ this.label }</span>\n </div>\n );\n\n return (\n <div class=\"n-form-group__label\">\n { [this.ctor('renderIcon')(), textHtml] } \n </div>\n );\n },\n\n renderAction()\n {\n if ( ! this.$slots.action ) {\n return null;\n }\n\n return (\n <div class=\"n-form-group__action\">\n { this.$slots.action() }\n </div>\n );\n },\n\n renderLabel()\n {\n return (\n <div class=\"n-form-group__legend\" onClick={this.collapseGroup}>\n { this.ctor('renderCollapse')() }\n { this.ctor('renderText')() }\n { this.ctor('renderAction')() }\n </div>\n );\n },\n\n renderTooltip()\n {\n if ( ! this.tooltip ) {\n return null;\n }\n\n return (\n <NPopover type=\"tooltip\" size=\"sm\" position={this.tooltipPosition}>\n {this.tooltip}\n </NPopover>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-form-group__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size ;\n\n if ( this.NForm ) {\n size = size || this.NForm.size;\n }\n\n let classList = [\n 'n-form-group', \n 'n-form-group--' + size,\n 'n-form-group--' + this.type,\n 'n-form-group--' + this.align, \n ];\n\n if ( this.collapse ) {\n classList.push('n-form-group--collapse');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n if ( this.$slots.action ) {\n classList.push('n-action');\n }\n\n return (\n <fieldset class={classList}>\n { this.ctor('renderLabel')() }\n { this.ctor('renderTooltip')() }\n { this.ctor('renderBody')() }\n </fieldset>\n );\n }\n}\n","import { Arr, Obj, Any, Dom, UUID, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFormItem',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NTabs: {\n default: undefined\n },\n\n NTabsItem: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return { NFormItem: this };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n prop: {\n default()\n {\n return 'id';\n },\n type: [String]\n },\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltip: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n tooltipPosition: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n tooltipWindow: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditional: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n conditionOn: {\n default()\n {\n return Locale.trans('Enable field');\n },\n type: [String]\n },\n\n conditionOff: {\n default()\n {\n return Locale.trans('Disable field');\n },\n type: [String]\n }\n\n },\n\n methods: {\n\n enabled(component = false)\n {\n return (! this.conditional || this.modelValue) && ! component;\n },\n\n disabled(component)\n {\n return (this.conditional && ! this.modelValue) || component;\n },\n\n toggleCondition()\n {\n this.$emit('update:modelValue', !this.modelValue);\n },\n\n focusInput()\n {\n let $input = Dom.find(this.$el).find('input');\n\n if ( !$input.empty() ) {\n return $input.get(0).focus();\n }\n\n $input = Dom.find(this.$refs.input).childs();\n\n if ( !$input.empty() ) {\n return $input.get(0).click();\n }\n\n console.log('I dont belong here :o');\n },\n\n gotoInput()\n {\n let errors = this.NForm.errors;\n\n if ( Any.isEmpty(errors) ) {\n return;\n }\n\n if ( !this.NTabs || !this.NTabsItem ) {\n return;\n }\n\n let keys = Any.keys(errors);\n\n if ( Arr.first(keys) !== this.prop ) {\n return;\n }\n\n this.NTabs.changeTab(this.NTabsItem.name);\n }\n\n },\n\n data()\n {\n return {\n uid: UUID()\n };\n },\n\n beforeMount()\n {\n if ( this.NForm ) {\n this.NForm.addItem(this);\n }\n },\n\n mounted()\n {\n if ( this.NForm ) {\n this.NForm.$watch('errors', this.gotoInput, { deep: true });\n }\n },\n\n beforeUnmount()\n {\n if ( this.NForm ) {\n this.NForm.removeItem(this);\n }\n },\n\n renderTooltip()\n {\n if ( !this.tooltip && !this.$slots.tooltip ) {\n return null;\n }\n\n let props = {\n size: 'sm',\n position: this.tooltipPosition,\n };\n\n return (\n <NPopover type=\"tooltip\" {...props}>\n {this.$slots.tooltip && this.$slots.tooltip() || this.tooltip}\n </NPopover>\n );\n },\n\n renderCondition()\n {\n if ( ! this.conditional ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__condition\" onClick={this.toggleCondition}>\n <span>{ this.modelValue ? this.conditionOff : this.conditionOn }</span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let labelHtml = (\n <div class=\"n-form-item__label\">\n <label onClick={this.focusInput}>\n {this.$slots.label && this.$slots.label() || this.label}\n </label>\n </div>\n );\n\n return [\n labelHtml, this.ctor('renderTooltip')()\n ]\n },\n\n renderError()\n {\n if ( !this.NForm || !Obj.has(this.NForm.errors, this.prop) ) {\n return null;\n }\n\n return (\n <div class=\"n-form-item__error\">\n {Obj.get(this.NForm.errors, this.prop)}\n </div>\n );\n },\n\n renderInput()\n {\n return (\n <div ref=\"input\" class=\"n-form-item__input\">\n {this.$slots.default && this.$slots.default()}\n </div>\n );\n },\n\n render()\n {\n let size = this.size || Obj.get(this.NForm, 'size', 'md');\n\n\n let classList = [\n 'n-form-item',\n 'n-form-item--' + size,\n ];\n\n if ( this.disabled() ) {\n classList.push('is-disabled');\n }\n\n return <div class={classList}>\n {this.ctor('renderCondition')()}\n {this.ctor('renderLabel')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderError')()}\n </div>;\n }\n}\n","import Form from './src/form/form';\nimport FormGroup from './src/form-group/form-group';\nimport FormItem from './src/form-item/form-item';\n\nexport default function (App) {\n App.component(Form.name, Form);\n App.component(FormGroup.name, FormGroup);\n App.component(FormItem.name, FormItem);\n}","import { Obj } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NButton',\n\n props: {\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n link: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n square: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return null;\n }\n },\n\n iconPosition: {\n default()\n {\n return 'before';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'button';\n },\n type: [String]\n }\n\n },\n\n renderIcon()\n {\n if ( ! this.icon ) {\n return null;\n }\n\n let classList = [\n 'n-icon', \n 'n-icon--' + this.iconPosition,\n ];\n\n classList.push(this.icon);\n\n return (<i class={classList}></i>);\n },\n\n render()\n {\n let classList = [\n 'n-button',\n 'n-button--' + this.size,\n 'n-button--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-button--icon');\n }\n\n if ( this.link ) {\n classList.push('n-button--link');\n }\n\n if ( this.square ) {\n classList.push('n-button--square');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n class: classList\n };\n\n if ( this.disabled ) {\n props.disabled = true;\n }\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n if ( this.$slots.default && ! this.square ) {\n innerHtml.push(<span>{ this.$slots.default && this.$slots.default() }</span>);\n }\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h(this.nativeType, props, innerHtml);\n }\n\n}\n","export default {\n\n name: 'NButtonGroup',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-button-group',\n 'n-button-group--' + this.size\n ]\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import Button from './src/button/button';\nimport ButtonGroup from './src/button-group/button-group';\n\nexport default function (App) {\n App.component(Button.name, Button);\n App.component(ButtonGroup.name, ButtonGroup);\n}\n","import { Str, Arr, Obj, Any, Locale, Dom, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelect',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n },\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n lazy: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-center';\n },\n type: [String]\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n collapse: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Please select');\n },\n type: [String]\n },\n\n emptyText: {\n default()\n {\n return 'No items';\n },\n type: [String]\n },\n\n undefinedText: {\n default()\n {\n return 'Undefined item';\n },\n type: [String]\n },\n\n collapseText: {\n default()\n {\n return '+:count item|+:count items';\n },\n type: [String]\n },\n\n allowCreate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array, Object]\n },\n\n optionsValue: {\n default()\n {\n return '$index';\n },\n type: [String]\n },\n\n optionsLabel: {\n default()\n {\n return '$value';\n },\n type: [String]\n },\n\n optionsDisabled: {\n default()\n {\n return 'null';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled()\n {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n },\n\n empty()\n {\n return Any.isEmpty(this.tempValue);\n },\n\n custom()\n {\n let result = Arr.filter(this.elements, (element) => {\n\n if ( Any.isArray(this.tempValue) ) {\n return Arr.has(this.tempValue, element.value);\n }\n\n return element.value === this.tempValue;\n });\n\n return result.length === 0;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempClear: this.clearValue,\n focus: false,\n search: '',\n index: - 1,\n elements: [],\n searched: []\n };\n },\n\n\n beforeMount()\n {\n if ( this.lazy ) {\n this.generateOptions();\n }\n\n if ( this.multiple && !Any.isArray(this.tempValue) ) {\n this.tempValue = [];\n }\n\n if ( this.multiple && !Any.isArray(this.clearValue) ) {\n this.tempClear = [];\n }\n\n this.searchOptions();\n },\n\n provide()\n {\n return {\n NSelect: this\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( !this.multiple && Any.isArray(value) ) {\n value = null;\n }\n\n if ( this.multiple && !Any.isArray(value) ) {\n value = [];\n }\n\n this.tempValue = value;\n },\n\n search()\n {\n this.searchOptions();\n },\n\n focus()\n {\n this.$nextTick(this.scrollToClosest);\n },\n\n },\n\n methods: {\n\n clear(event = null)\n {\n if ( event ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.focusInput();\n\n this.$emit('update:modelValue',\n this.tempValue = Arr.clone(this.tempClear));\n },\n\n generateOptions()\n {\n this.elements = Arr.each(this.options, (value, index) => {\n\n let data = {\n $value: value, $index: index\n };\n\n let option = {\n label: Obj.get(data, this.optionsLabel),\n value: Obj.get(data, this.optionsValue)\n };\n\n return Obj.assign(option, {\n tempLabel: option.label, tempValue: option.value\n });\n });\n },\n\n addOption(option)\n {\n Arr.add(this.elements, option,\n { tempValue: option.tempValue });\n },\n\n removeOption(option)\n {\n Arr.remove(this.elements,\n { tempValue: option.tempValue });\n },\n\n resetInput()\n {\n this.index = - 1;\n this.search = '';\n },\n\n focusInput(event = null)\n {\n if ( event ) {\n event.preventDefault();\n }\n\n this.$refs.input.focus();\n },\n\n onFocusInput()\n {\n if ( !this.focus ) {\n this.$refs.popover.open();\n }\n\n clearInterval(this.refresh);\n },\n\n onInputInput(event)\n {\n this.search = event.target.value;\n },\n\n onKeydownInput(event)\n {\n if ( !this.focus ) {\n return this.onFocusInput();\n }\n\n if ( event.which === 13 ) {\n this.createOrToggle();\n }\n\n if ( event.which === 38 ) {\n this.selectPrev();\n }\n\n if ( event.which === 40 ) {\n this.selectNext();\n }\n },\n\n searchOptions()\n {\n this.index = - 1;\n\n if ( Any.isEmpty(this.search) ) {\n return this.searched = this.elements;\n }\n\n let searchRegex = new RegExp(this.search, 'i');\n\n let searched = Arr.filter(this.elements, (option) => {\n return option.label.match(searchRegex);\n });\n\n this.searched = searched;\n },\n\n toggleOption(value, event = null)\n {\n if ( Any.isEmpty(value) ) {\n return;\n }\n\n if ( event && event.which !== 1 ) {\n return;\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n let tempValue = this.tempValue;\n\n if ( this.multiple ) {\n this.focusInput();\n }\n\n if ( !this.multiple ) {\n tempValue = value;\n }\n\n if ( this.multiple ) {\n Arr.toggle(tempValue, value);\n }\n\n this.$refs.popover.close();\n\n let denyUpdate = this.tempValue === tempValue;\n\n if ( this.multiple && !Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( !this.multiple && Any.isArray(this.modelValue) ) {\n denyUpdate = false;\n }\n\n if ( denyUpdate ) {\n return;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = tempValue);\n },\n\n getOptionLabel(value)\n {\n let option = Arr.find(this.elements,\n { tempValue: value });\n\n if ( !option && this.allowCreate ) {\n return value;\n }\n\n if ( !option && !this.allowCreate ) {\n return this.trans(this.undefinedText);\n }\n\n return option.tempLabel;\n },\n\n selectPrev()\n {\n let newIndex = this.index - 1;\n\n if ( newIndex < 0 ) {\n newIndex = this.searched.length - 1;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n selectNext()\n {\n let newIndex = this.index + 1;\n\n if ( newIndex > this.searched.length - 1 ) {\n newIndex = 0;\n }\n\n this.index = newIndex;\n\n this.scrollToCurrent();\n },\n\n createOrToggle()\n {\n if ( this.allowCreate && this.search ) {\n return this.createOption();\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( this.searched.length === 1 ) {\n selected = Arr.first(this.searched);\n }\n\n if ( !selected || selected.disabled ) {\n return;\n }\n\n this.toggleOption(selected.tempValue);\n },\n\n createOption()\n {\n this.toggleOption(this.search);\n\n this.search = '';\n },\n\n scrollToCurrent()\n {\n if ( !this.focus ) {\n return;\n }\n\n let selected = Arr.get(this.searched,\n this.index);\n\n if ( !selected ) {\n return;\n }\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(`[data-option=\"${selected._.uid}\"]`);\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(this.index);\n }\n },\n\n scrollToClosest()\n {\n if ( !this.focus ) {\n return;\n }\n\n let value = this.tempValue;\n\n if ( Any.isArray(this.tempValue) ) {\n value = Arr.first(this.tempValue);\n }\n\n if ( !value ) {\n return;\n }\n\n let index = Arr.findIndex(this.elements, {\n tempValue: value\n });\n\n if ( !index ) {\n return;\n }\n\n if ( this.$refs.virtualbar ) {\n this.$refs.virtualbar.scrollToIndex(index, 250);\n }\n\n let select = `[data-option=\"${Obj.get(this.elements[index], '_.uid', 0)}\"]`;\n\n if ( this.$refs.scrollbar ) {\n this.$refs.scrollbar.scrollIntoView(select, 250);\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-select__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-select__angle\">\n <i class={nano.Icons.angleDown}></i>\n </div>\n );\n },\n\n renderLabelItem(value)\n {\n let classList = [\n 'n-select__item'\n ];\n\n let props = {\n class: nano.Icons.times,\n };\n\n if ( !this.deepDisabled ) {\n props.onMousedown = (event) => this.toggleOption(value, event);\n }\n\n let labelHtml = (\n <span>{this.getOptionLabel(value)}</span>\n );\n\n return (\n <div class={classList}>\n {[labelHtml, <i {...props}></i>]}\n </div>\n );\n },\n\n renderLabelCollapse()\n {\n let first = Arr.first(this.tempValue);\n\n if ( !first ) {\n return null;\n }\n\n let firstHtml = this.ctor('renderLabelItem')(first);\n\n if ( this.tempValue.length === 1 ) {\n return firstHtml;\n }\n\n let count = this.tempValue.length - 1;\n\n let collapseHtml = (\n <div class=\"n-select__item\">\n <span>{this.choice(this.collapseText, count)}</span>\n </div>\n );\n\n return [\n firstHtml, collapseHtml\n ];\n },\n\n renderLabelItems()\n {\n if ( !Any.isArray(this.tempValue) ) {\n return null;\n }\n\n if ( this.collapse ) {\n return this.ctor('renderLabelCollapse')();\n }\n\n return Arr.each(this.tempValue, (value) => {\n return this.ctor('renderLabelItem')(value);\n });\n },\n\n renderMultiple()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.focus ) {\n props.value = null;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = null;\n }\n\n let inputHtml = (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n );\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__items\">\n {[this.ctor('renderLabelItems')(), inputHtml]}\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderSingle()\n {\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n let modelLabel = this.getOptionLabel(\n this.tempValue);\n\n if ( isEmptyValue ) {\n modelLabel = null;\n }\n\n let props = {\n value: this.search,\n placeholder: this.placeholder,\n disabled: this.deepDisabled,\n onFocus: this.onFocusInput,\n onInput: this.onInputInput,\n onKeydown: this.onKeydownInput\n };\n\n if ( !this.search && this.custom ) {\n props.value = this.tempValue;\n }\n\n if ( !this.focus ) {\n props.value = modelLabel;\n }\n\n if ( !isEmptyValue ) {\n props.placeholder = modelLabel;\n }\n\n return [\n this.ctor('renderLabelClear')(),\n (\n <div class=\"n-select__input\">\n <input ref=\"input\" {...props} />\n </div>\n ),\n this.ctor('renderLabelAngle')()\n ];\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-select__display'\n ];\n\n if ( this.multiple ) {\n classList.push('n-multiple');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.multiple ) {\n displayHtml = this.ctor('renderMultiple');\n }\n\n return (\n <div class={classList}>{displayHtml()}</div>\n );\n },\n\n renderItems()\n {\n let emptyHtml = (\n <div class=\"n-select__empty\">\n <NEmptyIcon inline={true}>{this.trans(this.emptyText)}</NEmptyIcon>\n </div>\n );\n\n if ( !this.searched.length ) {\n return emptyHtml;\n }\n\n if ( this.lazy ) {\n return this.ctor('renderLazyItems')();\n }\n\n let options = Obj.each(this.searched, (option, index) => {\n return option.ctor('renderOption')(index);\n });\n\n let props = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-select__body\" {...props}>\n {Obj.values(options)}\n </NScrollbar>\n );\n },\n\n renderLazyOption(value, index)\n {\n let classList = [];\n\n let isMultipleActive = this.multiple &&\n Arr.has(this.tempValue, value.value);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.multiple &&\n this.tempValue === value.value;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'type': this.type,\n 'clickClose': ! this.multiple,\n };\n\n props['onMousedown'] = (e) => {\n this.toggleOption(value.value, e);\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n {value.label}\n </NPopoverOption>\n );\n },\n\n renderLazyItems()\n {\n let props = {\n items: this.searched\n };\n\n props.renderNode = ({ value, index }) => {\n return this.ctor('renderLazyOption')(value, index);\n };\n\n return (\n <NVirtualscroller ref=\"virtualbar\" class=\"n-select__body n-virtual\" {...props} />\n );\n },\n\n renderPopover()\n {\n let classList = [\n 'n-popover--select'\n ];\n\n if ( this.lazy ) {\n classList.push('n-virtual');\n }\n\n let props = {\n class: classList,\n trigger: 'click',\n width: - 1,\n listen: true,\n size: this.size,\n scrollClose: true,\n disabled: this.deepDisabled,\n onClose: this.resetInput\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n {{ raw: this.ctor('renderItems') }}\n </NPopover>\n );\n },\n\n renderOptions()\n {\n if ( this.lazy ) {\n return null;\n }\n\n if ( Any.isEmpty(this.options) ) {\n return this.$slots.default && this.$slots.default();\n }\n\n let optionRender = ($value, $index) => {\n\n let props = {\n label: Obj.get({ $value, $index }, this.optionsLabel, null),\n value: Obj.get({ $value, $index }, this.optionsValue, null),\n };\n\n return (<NSelectOption {...props}></NSelectOption>);\n };\n\n return Obj.values(Obj.each(this.options, optionRender));\n },\n\n render()\n {\n let classList = [\n 'n-select',\n 'n-select--' + this.type,\n 'n-select--' + this.size,\n ];\n\n let isEmptyValue = Any.isEmpty(this.tempValue) &&\n !Any.isNumber(this.tempValue);\n\n if ( isEmptyValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList} onClick={this.focusInput}>\n {this.ctor('renderDisplay')()}\n {this.ctor('renderPopover')()}\n {this.ctor('renderOptions')()}\n </div>\n );\n }\n\n}\n","import { Num, Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSelectOption',\n\n inheritAttrs: false,\n\n inject: {\n\n NSelect: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return '';\n }\n },\n\n label: {\n default()\n {\n return null;\n }\n },\n\n valueProp: {\n default()\n {\n return null;\n }\n },\n\n labelProp: {\n default()\n {\n return null;\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n tempValue()\n {\n if ( Any.isEmpty(this.valueProp) ) {\n return this.value;\n }\n\n return Obj.get(this.value, this.valueProp);\n },\n\n tempLabel()\n {\n if ( Any.isEmpty(this.labelProp) ) {\n return this.label;\n }\n\n return Obj.get(this.value, this.labelProp);\n }\n\n },\n\n mounted()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.addOption(this);\n }\n },\n\n beforeUnmount()\n {\n if ( ! this.NSelect.lazy ) {\n this.NSelect.removeOption(this);\n }\n },\n\n methods: {\n\n toggleItem(event) \n {\n event.preventDefault();\n\n if ( event.which !== 1 ) {\n return;\n }\n\n if ( this.disabled ) {\n return;\n }\n\n this.NSelect.toggleOption(this.tempValue, \n event);\n },\n\n },\n\n renderOption(index)\n {\n\n let classList = [];\n\n let isMultipleActive = this.NSelect.multiple && \n Arr.has(this.NSelect.tempValue, this.tempValue);\n\n if ( isMultipleActive ) {\n classList.push('n-active');\n }\n\n let isSingleActive = ! this.NSelect.multiple && \n this.NSelect.tempValue === this.tempValue;\n\n if ( isSingleActive ) {\n classList.push('n-active');\n }\n\n if ( this.NSelect.index === Num.int(index) ) {\n classList.push('n-focus');\n }\n\n let props = {\n 'disabled': this.disabled,\n 'onMousedown': this.toggleItem,\n 'type': this.NSelect.type,\n 'clickClose': ! this.NSelect.multiple,\n };\n\n if ( isSingleActive || isMultipleActive ) {\n props.icon = nano.Icons.checked;\n }\n\n // Required for scrolldown\n props['data-option'] = this._.uid;\n\n return (\n <NPopoverOption class={classList} {...props}>\n { this.$slots.default && this.$slots.default() || this.tempLabel }\n </NPopoverOption>\n );\n },\n\n render()\n {\n return null;\n }\n\n}\n","import Vue from \"vue\";\n\nimport Select from './src/select/select';\nimport SelectOption from './src/select-option/select-option';\n\nexport default function (App) {\n App.component(Select.name, Select);\n App.component(SelectOption.name, SelectOption);\n}\n","import { Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckbox',\n\n inject: {\n\n NCheckboxGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n value: {\n default()\n {\n return null;\n }\n },\n\n allowUncheck: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n intermediate: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n global: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n tempComputed()\n {\n return ! this.global ? this.tempChecked :\n this.NCheckboxGroup.globalChecked;\n },\n\n tempIntermediate()\n {\n return ! this.global ? this.intermediate :\n this.NCheckboxGroup.globalIntermediate;\n },\n\n tempDisabled()\n {\n return ! this.global ? this.disabled :\n this.NCheckboxGroup.globalDisabled;\n }\n\n },\n\n data()\n {\n return {\n uid: UUID(), tempChecked: this.modelValue\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempChecked ) {\n this.tempChecked = value;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NCheckboxGroup ) {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( ! this.NCheckboxGroup || this.global ) {\n return;\n }\n\n this.$watch('NCheckboxGroup.tempValue', () => {\n this.tempChecked = this.NCheckboxGroup.isChecked(this.value);\n });\n\n this.NCheckboxGroup.addCheckbox(this);\n },\n\n beforeUnmount()\n {\n if ( this.NCheckboxGroup && ! this.global ) {\n this.NCheckboxGroup.removeCheckbox(this);\n }\n },\n\n methods: {\n\n toggle()\n {\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n check()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.checkCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n uncheck()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.uncheckCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = false);\n },\n\n eventShiftClick()\n {\n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.shiftCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n eventLocalClick(event)\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n event.preventDefault();\n\n if ( event.shiftKey ) {\n return this.eventShiftClick();\n }\n \n if ( this.NCheckboxGroup ) {\n this.NCheckboxGroup.toggleCheckbox(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = ! this.tempChecked);\n },\n\n eventGlobalClick()\n {\n let canClick = ! this.tempDisabled || (this.allowUncheck &&\n this.tempChecked);\n\n if ( ! canClick ) {\n return;\n }\n\n this.NCheckboxGroup.toggleAll();\n },\n\n updateFromGroup()\n {\n let checked = this.NCheckboxGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderCheckbox()\n {\n let interHtml = this.$slots.intermediate &&\n this.$slots.intermediate();\n\n if ( ! interHtml ) {\n interHtml = (<i class={nano.Icons.intermediate}></i>);\n }\n\n let checkHtml = this.$slots.checked &&\n this.$slots.checked();\n\n if ( ! checkHtml ) {\n checkHtml = (<i class={nano.Icons.checked}></i>);\n }\n\n return (\n <div class=\"n-checkbox__checkbox\">\n { this.tempIntermediate ? interHtml : checkHtml }\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.cslo('default') && ! this.cslo('label') ) {\n return null;\n }\n\n return (\n <div class=\"n-checkbox__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NCheckboxGroup ) {\n size = this.NCheckboxGroup.size;\n }\n\n let classList = [\n 'n-checkbox',\n 'n-checkbox--' + size,\n 'n-checkbox--' + this.type,\n ];\n\n if ( this.allowUncheck ) {\n classList.push('n-uncheck');\n }\n\n if ( this.tempComputed ) {\n classList.push('n-checked');\n }\n\n if ( this.tempIntermediate ) {\n classList.push('n-intermediate');\n }\n\n if ( this.tempDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.tempComputed && this.allowUncheck ) {\n Arr.remove(classList, 'n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( this.global ) {\n props.onMousedown = this.eventGlobalClick;\n }\n\n if ( ! this.global ) {\n props.onMousedown = this.eventLocalClick;\n }\n\n return (\n <div class={classList} {...props}>\n { [this.ctor('renderCheckbox')(), this.ctor('renderLabel')()] }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCheckboxGroup',\n\n provide()\n {\n return {\n NCheckboxGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n globalChecked()\n {\n let checked = Arr.filter(this.elements, (checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length === this.elements.length &&\n this.elements.length !== 0;\n },\n\n globalIntermediate()\n {\n let checked = this.elements.filter((checkbox) => {\n return checkbox.tempChecked;\n });\n\n return checked.length !== this.elements.length &&\n checked.length !== 0 ;\n },\n\n globalDisabled()\n {\n return this.elements.length === 0;\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n index: -1,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.tempValue = this.modelValue ) {\n this.tempValue = this.modelValue;\n }\n \n },\n\n },\n\n methods: {\n\n addCheckbox(checkbox)\n {\n this.index = -1;\n\n Arr.add(this.elements, checkbox, {\n uid: checkbox.uid\n });\n\n this.elements = Arr.sort(this.elements, 'sort');\n },\n\n removeCheckbox(checkbox)\n {\n this.index = -1;\n \n Arr.remove(this.elements, {\n uid: checkbox.uid\n });\n },\n\n toggleCheckbox(checkbox, emit = true)\n {\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n if ( ! checkbox.tempChecked ) {\n this.index = index;\n }\n\n Arr.toggle(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n checkCheckbox(checkbox, emit = true)\n {\n Arr.add(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckCheckbox(checkbox, emit = true)\n {\n Arr.remove(this.tempValue, checkbox.value);\n\n if ( ! emit ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n shiftCheckbox(checkbox)\n {\n if ( this.index === -1 ) {\n return this.toggleCheckbox(checkbox, false);\n }\n\n let index = Arr.findIndex(this.elements, {\n uid: checkbox.uid\n });\n\n let checkboxes = this.elements.slice(this.index, index + 1);\n\n if ( index < this.index ) {\n checkboxes = this.elements.slice(index, this.index + 1);\n }\n\n this.index = -1;\n\n Arr.each(checkboxes, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(checkboxes, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleAll()\n {\n this.globalChecked ? this.uncheckAll() : this.checkAll();\n },\n\n checkAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.checkCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n uncheckAll()\n {\n Arr.each(this.elements, (checkbox) => {\n this.uncheckCheckbox(checkbox, false);\n });\n\n Arr.each(this.elements, (checkbox) => {\n checkbox.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return Arr.has(this.tempValue, value);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-checkbox-group',\n 'n-checkbox-group--' + this.size,\n 'n-checkbox-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n {this.$slots.default()}\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Checkbox from './src/checkbox/checkbox';\nimport CheckboxGroup from './src/checkbox-group/checkbox-group';\n\nexport default function (App) {\n App.component(Checkbox.name, Checkbox);\n App.component(CheckboxGroup.name, CheckboxGroup);\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadio',\n\n model: {\n prop: 'checked'\n },\n\n inject: {\n\n NRadioGroup: {\n default: undefined\n }\n\n },\n\n props: {\n\n value: {\n default()\n {\n return null;\n }\n },\n\n checked: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n uid()\n {\n return this._.uid;\n }\n\n },\n\n data()\n {\n return {\n tempChecked: this.checked\n };\n },\n\n watch: {\n\n checked()\n {\n if ( this.checked !== this.tempChecked ) {\n this.tempChecked = this.checked;\n }\n }\n\n },\n\n beforeMount()\n {\n if ( this.NRadioGroup ) {\n this.tempChecked = this.NRadioGroup.isChecked(this.value);\n }\n },\n\n mounted()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.addRadio(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.removeRadio(this);\n }\n },\n\n methods: {\n\n check()\n {\n if ( this.NRadioGroup ) {\n this.NRadioGroup.checkRadio(this);\n }\n\n this.$emit('update:modelValue', this.tempChecked = true);\n },\n\n updateFromGroup()\n {\n let checked = this.NRadioGroup.isChecked(this.value);\n\n if ( this.tempChecked === checked ) {\n return;\n }\n \n this.$emit('update:modelValue', this.tempChecked = checked);\n }\n\n },\n\n renderRadio()\n {\n return (\n <div class=\"n-radio__radio\">\n <span></span>\n </div>\n );\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default && ! this.$slots.label ) {\n return null;\n }\n\n return (\n <div class=\"n-radio__label\">\n { this.$slots.default() || this.$slots.label() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-radio',\n 'n-radio--' + this.size,\n 'n-radio--' + this.type,\n ];\n\n if ( this.tempChecked ) {\n classList.push('n-checked');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.clone(this.$attrs);\n\n if ( ! this.disabled ) {\n props.onMousedown = this.check;\n }\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderRadio')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import { Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRadioGroup',\n\n provide()\n {\n return {\n NRadioGroup: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n align: {\n default()\n {\n return 'horizontal';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n elements: []\n }\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n },\n\n methods: {\n\n addRadio(radio)\n {\n Arr.add(this.elements, radio, {\n uid: radio.uid\n });\n },\n\n removeRadio(radio)\n {\n Arr.remove(this.elements, {\n uid: radio.uid\n });\n },\n\n checkRadio(radio)\n {\n this.tempValue = radio.value;\n \n Arr.each(this.elements, (radio) => {\n radio.updateFromGroup();\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n isChecked(value)\n {\n return this.tempValue === value;\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-radio-group',\n 'n-radio-group--' + this.size,\n 'n-radio-group--' + this.align,\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n\n}\n","import NRadio from './src/radio/radio';\nimport NRadioGroup from './src/radio-group/radio-group';\n\nexport default function (App) {\n App.component(NRadio.name, NRadio);\n App.component(NRadioGroup.name, NRadioGroup);\n}\n","import { Arr, Obj, Any, Str } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascaderPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n hover: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.hover,\n };\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n hover(value) {\n if ( value !== this.tempHover ) {\n this.tempHover = value;\n }\n }\n\n },\n\n methods: {\n\n clearCascader()\n {\n this.$emit('update:modelValue', this.tempHover = \n this.tempValue = this.clearValue);\n },\n\n onHover(cascade)\n {\n return (event) => this.hoverItem(cascade, event)\n },\n\n onSelect(cascade)\n {\n return (event) => this.selectItem(cascade, event)\n },\n\n hoverItem(cascade, event = null)\n {\n // Hover intend emulation\n clearTimeout(this.delay);\n\n let updateHover = () => {\n this.$emit('update:hover', \n this.tempHover = cascade);\n };\n\n this.delay = setTimeout(updateHover, 130);\n },\n\n selectItem(cascade, event = null)\n {\n clearTimeout(this.clickTimer);\n\n if ( ! this.lastclick ) {\n this.lastclick = 0;\n }\n\n this.lastclick++;\n\n let trigger = this.touch ? 'click' : \n this.trigger ;\n \n this.clickTimer = setTimeout(() => \n this.lastclick = 0, 240);\n\n this.hoverTimer = setTimeout(() => \n this.hoverItem(cascade), 240);\n\n if ( this.lastclick === 1 && trigger === 'click' ) {\n return this.hoverItem(cascade, event);\n }\n\n if ( event ) {\n event.preventDefault();\n }\n\n this.clickTimer = setTimeout(() => \n this.fireSelectItem(cascade), 50);\n },\n\n fireSelectItem(cascade)\n {\n clearTimeout(this.hoverTimer);\n\n this.lastclick = 0;\n\n this.$emit('update:modelValue', \n this.tempValue = cascade);\n }\n\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabel')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n )\n },\n\n renderOption(item, cascade = [])\n {\n let value = Obj.get(item, this.valueProp);\n\n let classList = [\n 'n-popover-option'\n ];\n\n if ( Arr.has(this.tempValue, item[this.valueProp]) ) {\n classList.push('n-active');\n }\n\n let disabled = Obj.get(item, this.disabledProp, false);\n\n if ( disabled ) {\n classList.push('n-disabled');\n }\n\n let props = {\n size: this.size,\n type: this.type,\n clickClose: false\n };\n\n if ( Arr.last(this.tempValue) === value ) {\n props.icon = nano.Icons.checked;\n }\n\n let tempCascade = Arr.merge(Arr.clone(cascade), [value]);\n\n if ( this.trigger === 'hover' ) {\n props.onMousemove = Any.framerate(this.onHover(tempCascade), 30);\n }\n\n if ( ! disabled ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onSelect(tempCascade);\n }\n\n let children = Obj.get(item, this.childProp);\n\n if ( ! props.icon && ! Any.isEmpty(children) ) {\n props.icon = nano.Icons.angleRight;\n }\n\n return (\n <NPopoverOption class={classList} {...props}>\n { Obj.get(item, this.labelProp) }\n </NPopoverOption>\n );\n },\n\n renderOptions(items, cascade = [])\n {\n if ( Any.isEmpty(items) ) {\n return null;\n }\n\n return (\n <div class=\"n-cascader-panel__items\">\n <NScrollbar relative={true}>\n {\n Arr.each(items, (item) => {\n return this.ctor('renderOption')(item, cascade);\n })\n }\n </NScrollbar>\n </div>\n )\n },\n\n renderCascade()\n {\n let renderList = [\n this.ctor('renderOptions')(this.options)\n ];\n\n let items = this.options, cascade = [];\n\n Arr.each(this.tempHover, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n cascade.push(value);\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let options = this.ctor('renderOptions')\n (items, cascade);\n\n renderList.push(options);\n });\n\n return renderList;\n },\n\n render()\n {\n let classList = [\n 'n-cascader-panel',\n 'n-cascader-panel--' + this.size\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>{ this.ctor('renderCascade')() }</div>\n );\n }\n\n}","import { Arr, Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCascader',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n clearValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n current: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Please select';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n trigger: {\n default()\n {\n return 'hover';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n valueProp: {\n default()\n {\n return 'value';\n },\n type: [String]\n },\n\n childProp: {\n default()\n {\n return 'children';\n },\n type: [String]\n },\n\n disabledProp: {\n default()\n {\n return 'disabled';\n },\n type: [String]\n },\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue,\n tempHover: this.modelValue,\n focus: false,\n };\n },\n\n methods: {\n\n clearCascader()\n {\n this.focus = true;\n\n this.$emit('update:modelValue', \n this.tempValue = this.tempHover = this.clearValue);\n },\n\n onCascaderInput(value)\n {\n this.focus = false;\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n },\n\n onCascaderHover(value)\n {\n this.$emit('update:hover', \n this.tempHover = value);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n },\n\n watch: {\n\n modelValue(value) {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearCascader;\n }\n\n return (\n <div class=\"n-cascader__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-cascader__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderLabelItems()\n {\n let items = this.options, renderList = [];\n\n if ( Any.isEmpty(this.tempValue) ) {\n return (\n <div class=\"n-cascader__placeholder\">\n { this.trans(this.placeholder) }\n </div>\n );\n }\n\n Arr.each(this.tempValue, (value) => {\n\n if ( ! items ) {\n return;\n }\n\n let item = Arr.find(items, {\n [this.valueProp]: value\n });\n\n items = Obj.get(item, this.childProp);\n\n let itemLabel = (\n <div class=\"n-cascader__item\">\n <span>{ Obj.get(item, this.labelProp) }</span>\n </div>\n );\n\n renderList.push(itemLabel);\n });\n\n return (\n <div class=\"n-cascader__items\">\n { renderList }\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-cascader__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderLabelItems')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n let props = Obj.except(this.$props, ['modelValue'], {\n hover: this.tempHover,\n modelValue: this.tempValue,\n });\n\n props['onUpdate:hover'] = this.onCascaderHover;\n props['onUpdate:modelValue'] = this.onCascaderInput;\n\n return (\n <NCascaderPanel class=\"n-cascader__body\" {...props}></NCascaderPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled,\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-cascader',\n 'n-cascader--' + this.type,\n 'n-cascader--' + this.size,\n ];\n\n if ( Any.isEmpty(this.tempValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import CascaderPanel from './src/cascader-panel/cascader-panel';\nimport Cascader from './src/cascader/cascader';\n\nexport default function (App) {\n App.component(CascaderPanel.name, CascaderPanel);\n App.component(Cascader.name, Cascader);\n}","import { Arr, Str, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su',\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n yearsGrid()\n {\n return this.tempCache.getYears();\n },\n\n monthsGrid()\n {\n return this.tempCache.getMonths();\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n tempView: 'date',\n tempRanger: null,\n cacheArrive: null,\n cacheDepart: null,\n tempValue: Now.make(this.modelValue, this.format),\n tempCache: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive),\n tempDepart: Now.make(this.depart),\n }\n },\n\n methods: {\n\n gotoDate()\n {\n this.tempView = 'date';\n },\n\n gotoMonth()\n {\n this.tempView = 'month';\n },\n\n gotoYear()\n {\n this.tempView = 'year';\n },\n\n patchDate(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n if ( Any.isEmpty(this.modelValue) ) {\n now.resetTime();\n } else {\n now.applyTime(this.tempValue);\n }\n\n // Copy now to cache\n this.tempCache = now.clone();\n\n // Copy now to value\n this.tempValue = now.clone();\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n patchMonth(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoDate();\n },\n\n printRange(now)\n {\n this.tempRanger = now.clone();\n },\n\n patchYear(now)\n {\n if ( Any.isString(now) ) {\n now = Now.make(now);\n }\n\n this.tempCache = now.clone();\n\n this.gotoMonth();\n },\n\n patchRange(now)\n {\n if ( this.cacheArrive && ! this.cacheDepart ) {\n this.cacheDepart = now.clone();\n }\n\n if ( ! this.cacheArrive && ! this.cacheDepart ) {\n this.cacheArrive = now.clone();\n }\n\n if ( ! this.cacheArrive || ! this.cacheDepart ) {\n return;\n }\n\n this.tempArrive = this.cacheArrive.clone();\n this.tempDepart = this.cacheDepart.clone();\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n\n this.cacheArrive = null;\n this.cacheDepart = null;\n\n this.$emit('rangeSelected', [\n this.tempArrive.format(this.format),\n this.tempDepart.format(this.format)\n ]);\n },\n\n },\n\n renderToolbarPrev(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleLeft,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarNext(closure)\n {\n let props = {\n type: this.type,\n link: true,\n icon: nano.Icons.angleRight,\n onClick: closure\n };\n\n return (<NButton {...props}></NButton>);\n },\n\n renderToolbarMonth()\n {\n let props = {\n onClick: this.gotoMonth\n };\n\n let monthsHtml = [\n this.months[this.tempCache.month()]\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.month() !== this.tempCache.month() ) {\n monthsHtml.push(this.months[month.month()]);\n }\n\n return (\n <span class=\"n-datepicker-panel__month\" {...props}>\n { monthsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbarYear()\n {\n let props = {\n onClick: this.gotoYear\n };\n\n let yearsHtml = [\n this.tempCache.year()\n ];\n\n let month = this.tempCache.clone()\n .addMonths(this.monthPanels - 1);\n\n if ( month.year() !== this.tempCache.year() ) {\n yearsHtml.push(month.year());\n }\n\n return (\n <span class=\"n-datepicker-panel__year\" {...props}>\n { yearsHtml.join(' - ') }\n </span>\n );\n },\n\n renderToolbar({ prev, next })\n {\n return (\n <div class=\"n-datepicker-panel__toolbar\">\n <div class=\"n-datepicker-panel__display\">\n { this.ctor('renderToolbarMonth')() }\n { this.ctor('renderToolbarYear')() }\n </div>\n <div class=\"n-datepicker-panel__prev\">\n { this.ctor('renderToolbarPrev')(prev) }\n </div>\n <div class=\"n-datepicker-panel__next\">\n { this.ctor('renderToolbarNext')(next) }\n </div>\n </div>\n );\n },\n\n renderDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate() ) {\n classList.push('n-today');\n }\n\n let isSelected = this.tempValue.valid() && \n now.equalDate(this.tempValue);\n\n if ( isSelected ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {};\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchDate(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderRangeDateItem(now, month)\n {\n let classList = [\n 'n-datepicker-panel__day'\n ];\n\n if ( now.equalDate('now') ) {\n classList.push('n-today');\n }\n\n if ( now.month() === month.month() ) {\n classList.push('n-current');\n }\n\n let viewMode = 0;\n\n if ( !! this.cacheArrive ) {\n viewMode++;\n }\n\n if ( !! this.cacheDepart ) {\n viewMode++;\n }\n\n let isTempValid = this.tempArrive.valid() && \n this.tempDepart.valid();\n\n if ( viewMode === 0 && isTempValid ) {\n\n if ( now.between(this.tempArrive, this.tempDepart) ) {\n classList.push('n-between');\n classList.push('n-selected');\n }\n\n let arriveFirst = this.tempArrive.before(this.tempDepart);\n\n if ( now.equalDate(this.tempArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n classList.push('n-selected');\n }\n\n if ( now.equalDate(this.tempDepart) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n classList.push('n-selected');\n }\n\n }\n\n if ( viewMode === 1 && this.cacheArrive ) {\n\n if ( now.between(this.cacheArrive, this.tempRanger) ) {\n classList.push('n-between');\n }\n\n let arriveFirst = this.cacheArrive.before(this.tempRanger);\n\n if ( now.equalDate(this.cacheArrive) ) {\n classList.push(arriveFirst ? 'n-arrive' : 'n-depart');\n }\n\n if ( now.equalDate(this.tempRanger) ) {\n classList.push(arriveFirst ? 'n-depart' : 'n-arrive');\n }\n\n }\n\n let isNotBeforeMin = ! this.minDate || \n now.after(this.minDate) || now.equalDate(this.minDate);\n\n let isNotAfterMax = ! this.maxDate || \n now.before(this.maxDate) || now.equalDate(this.maxDate);\n\n if ( ! isNotBeforeMin || ! isNotAfterMax ) {\n classList.push('n-disabled');\n }\n\n let props = {\n onMouseenter: () => this.printRange(now)\n };\n\n if ( isNotBeforeMin && isNotAfterMax ) {\n props.onClick = () => this.patchRange(now);\n }\n\n return (\n <div class={classList} {...props}>\n <span>{ now.format('DD') }</span>\n </div>\n );\n },\n\n renderDate()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevMonth();\n };\n let next = () => {\n this.tempCache = this.tempCache.nextMonth();\n };\n\n let legendHtml = (\n Arr.each(this.weekdays, (day) => {\n return (\n <div class=\"n-datepicker-panel__day\">\n <span>{ this.trans(day) }</span>\n </div>\n );\n })\n );\n\n let renderItem = this.ctor('renderDateItem');\n\n if ( this.range ) {\n renderItem = this.ctor('renderRangeDateItem');\n }\n\n let bodyHtml = (month) => (\n Arr.each(Arr.chunk(month.getDatesGrid(), 7), (chunks) => {\n return (\n <div class=\"n-datepicker-panel__week\">\n { Arr.each(chunks, (chunk) => renderItem(chunk, month)) }\n </div>\n );\n })\n );\n\n let panelHtml = (\n Arr.each(Arr.make(this.monthPanels), (offset) => {\n\n let month = this.tempCache.clone()\n .addMonths(offset - 1);\n\n return (\n <div class=\"n-datepicker-panel__panel\">\n <div class=\"n-datepicker-panel__legend\">\n { legendHtml }\n </div>\n <div class=\"n-datepicker-panel__body\">\n { bodyHtml(month) }\n </div>\n </div>\n );\n })\n );\n\n return (\n <div class=\"n-datepicker-panel__dateview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__panels\">\n { panelHtml }\n </div>\n </div>\n );\n },\n\n renderMonthItem(now)\n {\n let classList = [\n 'n-datepicker-panel__month'\n ];\n\n if ( now.equal(this.tempCache, 'YYYYMM') ) {\n classList.push('n-selected');\n }\n\n if ( now.month() === Now.make('now').month() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchMonth(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ this.trans(this.months[now.month()]) }</span>\n </div>\n )\n },\n\n renderMonth()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevYear();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextYear();\n };\n\n return (\n <div class=\"n-datepicker-panel__monthview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__year\">\n { Arr.each(this.monthsGrid, this.ctor('renderMonthItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n renderYearItem(now)\n {\n let classList = [\n 'n-datepicker-panel__year'\n ];\n\n if ( now.equal(this.tempCache, 'YYYY') ) {\n classList.push('n-selected');\n }\n\n if ( now.year() === Now.make('now').year() ) {\n classList.push('n-current');\n }\n\n let props = {\n onClick: () => this.patchYear(now)\n };\n\n return (\n <div class={classList} {...props}>\n <span>{ now.year() }</span>\n </div>\n )\n },\n\n renderYear()\n {\n let prev = () => {\n this.tempCache = this.tempCache.prevDecade();\n };\n\n let next = () => {\n this.tempCache = this.tempCache.nextDecade();\n };\n\n return (\n <div class=\"n-datepicker-panel__yearview\">\n <div class=\"n-datepicker-panel__header\">\n { this.ctor('renderToolbar')({ prev, next }) }\n </div>\n <div class=\"n-datepicker-panel__body\">\n <div class=\"n-datepicker-panel__decade\">\n { Arr.each(this.yearsGrid, this.ctor('renderYearItem')) }\n </div>\n </div>\n <div class=\"n-datepicker-panel__footer\">\n <NButton size={this.type} size={this.size} link={true} onClick={this.gotoDate}>\n { this.trans('Go back') }\n </NButton>\n </div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker-panel',\n 'n-datepicker-panel--' + this.size,\n 'n-datepicker-panel--' + this.type\n ]\n\n return (\n <div class={classList}>\n { this.ctor('render' + Str.ucfirst(this.tempView))() }\n </div>\n );\n }\n\n}","import { Obj, Now, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n arrive: {\n default()\n {\n return null;\n }\n },\n\n clearArrive: {\n default()\n {\n return null;\n }\n },\n\n depart: {\n default()\n {\n return null;\n }\n },\n\n clearDepart: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select date');\n },\n type: [String]\n },\n\n placeholderArrive: {\n default()\n {\n return Locale.trans('Start date');\n },\n type: [String]\n },\n\n placeholderDepart: {\n default()\n {\n return Locale.trans('End date');\n },\n type: [String]\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n rangeSeparator: {\n default()\n {\n return '-';\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n arrive(value)\n {\n if ( value !== this.tempArrive.format(this.format) ) {\n this.tempArrive = Now.make(value);\n }\n },\n\n depart(value)\n {\n if ( value !== this.tempDepart.format(this.format) ) {\n this.tempDepart = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue, this.format),\n tempArrive: Now.make(this.arrive, this.format),\n tempDepart: Now.make(this.depart, this.format),\n };\n },\n\n methods: {\n\n clearDatepicker()\n {\n this.range ? this.clearRangeDatepicker() :\n this.clearSingleDatepicker();\n },\n\n clearSingleDatepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n\n clearRangeDatepicker()\n {\n this.tempArrive = Now.make(this.clearArrive, \n this.format);\n\n this.$emit('update:arrive', this.clearValue);\n\n this.tempDepart = Now.make(this.clearDepart, \n this.format);\n\n this.$emit('update:depart', this.clearDepart);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onArriveInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempArrive = Now.make(moment);\n\n this.$emit('update:arrive', \n this.tempArrive.format(this.format));\n },\n\n onDepartInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n });\n\n this.tempDepart = Now.make(moment);\n\n this.$emit('update:depart', \n this.tempDepart.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.focus = false;\n\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onDatepickerDepart(value)\n {\n this.focus = false;\n\n this.tempDepart = Now.make(value, \n this.format);\n\n this.$emit('update:depart', value);\n },\n\n onDatepickerArrive(value)\n {\n this.focus = false;\n\n this.tempArrive = Now.make(value, \n this.format);\n\n this.$emit('update:arrive', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDatepicker;\n }\n\n return (\n <div class=\"n-datepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderRange()\n {\n let arriveProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderArrive,\n onInput: this.onArriveInput,\n };\n\n if ( this.tempArrive.valid() ) {\n arriveProps.value = this.tempArrive.format(\n this.displayFormat, true);\n }\n\n let departProps = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholderDepart,\n onInput: this.onDepartInput,\n };\n\n if ( this.tempDepart.valid() ) {\n departProps.value = this.tempDepart.format(\n this.displayFormat, true);\n }\n\n return [\n (\n <div class=\"n-datepicker__input\">\n <input {...arriveProps}/>\n </div>\n ),\n (\n <div class=\"n-datepicker__seperator\">\n <span>{ this.rangeSeparator }</span>\n </div>\n ),\n (\n <div class=\"n-datepicker__input\">\n <input {...departProps}/>\n </div>\n )\n ];\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n let displayHtml = this.ctor('renderSingle');\n\n if ( this.range ) {\n displayHtml = this.ctor('renderRange');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { displayHtml() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n arrive: this.tempArrive.format(this.format) || null,\n depart: this.tempDepart.format(this.format) || null,\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:arrive'] = this.onDatepickerArrive;\n props['onUpdate:depart'] = this.onDatepickerDepart;\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datepicker__body\" {...props}></NDatepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderItems') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-datepicker',\n 'n-datepicker--' + this.type,\n 'n-datepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempArrive.initialDate &&\n ! this.tempDepart.initialDate;\n\n if ( ! this.range ) {\n isEmpty = ! this.tempValue.initialDate;\n }\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import DatepickerPanel from \"./src/datepicker-panel/datepicker-panel\";\nimport Datepicker from \"./src/datepicker/datepicker\";\n\nexport default function (App) {\n App.component(DatepickerPanel.name, DatepickerPanel);\n App.component(Datepicker.name, Datepicker);\n}","import { Arr, Obj, Now, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepickerPanel',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return 'HH:mm:ss';\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n let modelValue = Now.make(this.modelValue);\n\n if ( Any.isEmpty(this.modelValue) ) {\n modelValue = modelValue.resetTime();\n }\n\n return {\n tempValue: modelValue,\n }\n },\n\n mounted()\n {\n this.scrollTo();\n },\n\n methods: {\n\n eventSelect(now)\n {\n this.$emit('update:modelValue',\n (this.tempValue = now.clone()).format(this.format));\n },\n\n scrollTo()\n {\n let scrollbars = Obj.only(this.$refs, [\n 'hour', 'minute', 'second'\n ]);\n\n Arr.each(scrollbars, (ref, key) => {\n ref.scrollIntoView(`[data-index=\"${this.tempValue[key]()}\"]`);\n });\n }\n\n },\n\n renderToolbar()\n {\n return (\n <div class=\"n-timepicker-panel__toolbar\">\n <div class=\"n-timepicker-panel__display\">\n <span class=\"n-timepicker-panel__time\">\n {this.tempValue.format(this.displayFormat) || this.placeholder}\n </span>\n </div>\n </div>\n )\n },\n\n renderHourItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.hour() === this.tempValue.hour() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.hour()}>\n <span>{now.format('HH')}</span>\n </div>\n );\n },\n\n renderHourPanel()\n {\n if ( !this.displayFormat.match('HH') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"hour\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.hoursGrid, this.ctor('renderHourItem'))}\n </NScrollbar>\n );\n },\n\n renderMinuteItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.minute() === this.tempValue.minute() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.minute()}>\n <span>{now.format('mm')}</span>\n </div>\n );\n },\n\n renderMinutePanel()\n {\n if ( !this.displayFormat.match('mm') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"minute\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.minutesGrid, this.ctor('renderMinuteItem'))}\n </NScrollbar>\n );\n },\n\n renderSecondItem(now)\n {\n let classList = [\n 'n-timepicker-panel__item'\n ];\n\n if ( this.tempValue.valid() && now.second() === this.tempValue.second() ) {\n classList.push('n-selected');\n }\n\n let props = {\n onMousedown: () => this.eventSelect(now)\n };\n\n return (\n <div class={classList} {...props} data-index={now.second()}>\n <span>{now.format('ss')}</span>\n </div>\n );\n },\n\n renderSecondPanel()\n {\n if ( !this.displayFormat.match('ss') ) {\n return null;\n }\n\n return (\n <NScrollbar ref=\"second\" class=\"n-timepicker-panel__panel\" wrapClass=\"n-timepicker-panel__wrap\">\n {Arr.each(this.secondsGrid, this.ctor('renderSecondItem'))}\n </NScrollbar>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker-panel',\n 'n-timepicker-panel--' + this.size,\n 'n-timepicker-panel--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-timepicker-panel__header\">\n {this.ctor('renderToolbar')()}\n </div>\n <div class=\"n-timepicker-panel__body\">\n {this.ctor('renderHourPanel')()}\n {this.ctor('renderMinutePanel')()}\n {this.ctor('renderSecondPanel')()}\n </div>\n </div>\n );\n }\n\n}","import { Arr, Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTimepicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n placeholder: {\n default()\n {\n return 'Select time';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('HH:mm:ss');\n },\n type: [String]\n },\n\n hoursInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n minutesInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n secondsInterval: {\n default()\n {\n return 1;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n hoursGrid()\n {\n return this.tempValue.getHours(this.hoursInterval);\n },\n\n minutesGrid()\n {\n return this.tempValue.getMinutes(this.minutesInterval);\n },\n\n secondsGrid()\n {\n return this.tempValue.getSeconds(this.secondsInterval);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false,\n tempValue: Now.make(this.modelValue),\n }\n },\n\n methods: {\n\n clearTimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n hour: value.moment.hour(), \n minute: value.moment.minute(), \n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue.valid() ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearTimepicker;\n }\n\n return (\n <div class=\"n-timepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-timepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.disabled,\n placeholder: this.trans(this.placeholder),\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-timepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-timepicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanel()\n {\n \n let props = Obj.except(this.$props, ['modelValue'], {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-timepicker__body\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props}>\n { { raw: this.ctor('renderPanel') } }\n </NPopover>\n );\n },\n\n render()\n {\n let classList = [\n 'n-timepicker',\n 'n-timepicker--' + this.type,\n 'n-timepicker--' + this.size,\n ];\n\n if ( ! this.tempValue.valid() ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import TimepickerPanel from \"./src/timepicker-panel/timepicker-panel\";\nimport Timepicker from \"./src/timepicker/timepicker\";\n\nexport default function (App) {\n App.component(TimepickerPanel.name, TimepickerPanel);\n App.component(Timepicker.name, Timepicker);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTabs',\n\n provide()\n {\n return {\n NTabs: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n float: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n data()\n {\n return {\n init: false,\n elements: [], \n width: 0, \n offset: 0, \n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements, \n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n getTab(updateEvent = true)\n {\n let currentTab = Arr.find(this.elements, {\n name: this.modelValue\n });\n\n let sorted = Arr.sort(this.elements, 'sort');\n\n if ( ! currentTab ) {\n currentTab = Arr.first(sorted);\n }\n\n let repeatNext = () => this.getTab(updateEvent);\n\n if ( ! currentTab ) {\n return Any.delay(repeatNext, 250);\n }\n\n if ( currentTab.name === this.tempValue || ! updateEvent ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = currentTab.name);\n },\n\n changeTab(value)\n {\n if ( this.tempValue === value ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = value);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n this.getTab(false);\n },\n\n updated()\n {\n let width = Dom.find(this.$el).find('.n-active')\n .width();\n\n this.width = width < 0 ? 0 : width;\n\n let offset = Dom.find(this.$el).find('.n-active')\n .offset('left', this.$el);\n\n this.offset = offset < 0 ? 0 : offset;\n },\n\n renderHeaderIndicator()\n {\n let transform = `scaleX(${this.width / 100}) ` + \n `translateX(${this.offset / (this.width / 100)}px)`;\n\n return (\n <div class=\"n-tabs__indicator\" style={{ transform }}>\n { /* Indicator bar */ }\n </div>\n );\n },\n\n renderHeader()\n {\n if ( this.elements.length <= 1 ) {\n return null;\n }\n\n // FIXME: As soon vue doesnt bug\n let sorted = Arr.sort(this.elements, 'sort');\n \n let tabs = Arr.each(Arr.make(sorted.length), (tab, index) => {\n return sorted[index].ctor('renderHeader')();\n });\n\n return (\n <div class=\"n-tabs__header\">\n {[tabs, this.ctor('renderHeaderIndicator')()]}\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-tabs__body\">\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-tabs', \n 'n-tabs--' + this.size, \n 'n-tabs--' + this.type\n ];\n\n if ( this.float ) {\n classList.push('n-float');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderHeader')() }\n { this.ctor('renderBody')() }\n </div>\n );\n }\n}\n","import { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NTabsItem',\n\n inject: {\n\n NTabs: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NTabsItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n\n },\n\n methods: {\n\n changeTab()\n {\n this.NTabs.changeTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false\n }\n },\n\n beforeMount()\n {\n this.NTabs.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NTabs.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( ! this.$slots.icon && ! this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-tabs__tab-icon\">\n { this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i> }\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-tabs__tab-label\">\n { this.$slots.label && this.$slots.label () || <span>{this.label}</span> }\n </div>\n );\n },\n\n renderHeader()\n {\n let classList = [\n 'n-tabs__tab'\n ];\n\n if ( this.NTabs.tempValue === this.name ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.changeTab(this.name)\n };\n\n return (\n <div class={classList} {...props}>\n { this.ctor('renderHeaderIcon')() }\n { this.ctor('renderHeaderLabel')() }\n </div>\n );\n },\n\n render()\n {\n let renderBody = this.NTabs.tempValue === this.name;\n\n if ( this.NTabs.tempValue !== this.name && this.keep ) {\n renderBody = this.init;\n }\n\n if ( this.NTabs.tempValue !== this.name && this.preload ) {\n renderBody = true;\n }\n\n if ( ! renderBody ) {\n return null;\n }\n\n this.init = true;\n\n let classList = [\n 'n-tabs-item'\n ];\n\n let style = {};\n\n if ( this.NTabs.tempValue !== this.name ) {\n style.display = 'none';\n }\n\n if ( this.$slots.raw ) {\n return this.$slots.raw({ style });\n }\n\n let element = 'div';\n\n if ( ! this.relative && ! this.NTabs.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style }, this.$slots);\n }\n}\n","import Tabs from './src/tabs/tabs';\nimport TabsItem from './src/tabs-item/tabs-item';\n\nexport default function (App) {\n App.component(Tabs.name, Tabs);\n App.component(TabsItem.name, TabsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTags',\n\n provide()\n {\n return {\n NTags: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n tags: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTag(tab)\n {\n Arr.add(this.elements, tab,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTag(tab)\n {\n Arr.remove(this.elements,\n { label: tab.label });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-tags',\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTagsItem',\n\n inject: {\n\n NTags: {\n default: undefined\n }\n\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return -1;\n },\n type: [String, Number]\n },\n\n color: {\n default()\n {\n return 0;\n },\n type: [String, Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n beforeMount()\n {\n if ( this.NTags ) {\n this.NTags.addTag(this);\n }\n },\n\n beforeUnmount()\n {\n if ( this.NTags ) {\n this.NTags.removeTag(this);\n }\n },\n\n renderIcon()\n {\n if ( Any.isEmpty(this.icon) ) {\n return null;\n }\n\n return (\n <i class={this.icon}></i>\n );\n },\n\n renderLabel()\n {\n return (\n <span>{this.$slots.default ? this.$slots.default() : this.label}</span>\n );\n },\n\n render()\n {\n let size = this.size;\n\n if ( this.NTags ) {\n size = this.NTags.size;\n }\n\n let classList = [\n 'n-tags-item',\n 'n-tags-item--' + size,\n ,\n ];\n\n if ( this.type === -1 ) {\n classList.push('n-tags-item--color-' + this.color);\n }\n\n if ( this.type !== -1 ) {\n classList.push('n-tags-item--color-' + this.type);\n }\n\n return (\n <div class={classList}>\n {[this.ctor('renderIcon')(), this.ctor('renderLabel')()]}\n </div>\n );\n }\n\n}\n","import Tags from './src/tags/tags';\nimport TagsItem from './src/tags-item/tags-item';\n\nexport default function (App) {\n App.component(Tags.name, Tags);\n App.component(TagsItem.name, TagsItem);\n}","import { Arr, Dom, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NCollapse',\n\n provide()\n {\n return {\n NCollapse: this\n };\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n relative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n init: false, elements: [], tempValue: this.modelValue\n };\n },\n\n methods: {\n\n addTab(tab)\n {\n Arr.add(this.elements, tab,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n removeTab(tab)\n {\n Arr.remove(this.elements,\n { name: tab.name });\n\n if ( this.init) {\n this.$nextTick(this.$forceUpdate);\n }\n },\n\n showTab(value)\n {\n if ( Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.add(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n hideTab(value)\n {\n if ( ! Arr.has(this.tempValue, value) ) {\n return;\n }\n\n Arr.remove(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n toggleTab(value)\n {\n Arr.toggle(this.tempValue, value);\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n mounted()\n {\n this.init = true;\n },\n\n render()\n {\n let classList = [\n 'n-collapse',\n 'n-collapse--' + this.size,\n 'n-collapse--' + this.type\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { Arr, Any, Dom } from \"@kizmann/pico-js\";\nimport { h, resolveComponent } from \"vue\";\n\nexport default {\n\n name: 'NCollapseItem',\n\n inject: {\n\n NCollapse: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NCollapseItem: this\n };\n },\n\n props: {\n\n label: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n name: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n sort: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n preload: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n keep: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n methods: {\n\n showTab()\n {\n this.NCollapse.showTab(this.name);\n },\n\n hideTab()\n {\n this.NCollapse.hideTab(this.name);\n },\n\n toggleTab()\n {\n this.NCollapse.toggleTab(this.name);\n }\n\n },\n\n data()\n {\n return {\n _key: null, init: false, dragger: 0\n }\n },\n\n beforeMount()\n {\n this.NCollapse.addTab(this);\n },\n\n beforeUnmount()\n {\n this.NCollapse.removeTab(this);\n },\n\n renderHeaderIcon()\n {\n if ( !this.$slots.icon && !this.icon ) {\n return null;\n }\n\n return (\n <div class=\"n-collapse__header-icon\">\n {this.$slots.icon && this.$slots.icon() || <i class={this.icon}></i>}\n </div>\n );\n },\n\n renderHeaderLabel()\n {\n return (\n <div class=\"n-collapse__header-label\">\n {this.$slots.label && this.$slots.label() || <span>{this.label}</span>}\n </div>\n );\n },\n\n renderHeaderAngle()\n {\n return (\n <div class=\"n-collapse__header-angle\">\n {this.$slots.angle && this.$slots.angle() || <i class={nano.Icons.angleRight}></i>}\n </div>\n );\n },\n\n renderHeader()\n {\n if ( !this.label && !this.$slots.label ) {\n return null;\n }\n\n let classList = [\n 'n-collapse__header'\n ];\n\n if ( Arr.has(this.NCollapse.tempValue, this.name) ) {\n classList.push('n-active');\n }\n\n let props = {\n onClick: () => this.toggleTab(this.name)\n };\n\n props['onDragenter'] = (event) => {\n\n this.dragger ++;\n\n if ( this.dragger !== 1 ) {\n return;\n }\n\n this.showDelay = setTimeout(() => {\n this.showTab(this.name);\n }, 350);\n };\n\n props['onDragleave'] = (event) => {\n\n this.dragger --;\n\n if ( this.dragger !== 0 ) {\n return;\n }\n\n clearTimeout(this.showDelay);\n };\n\n props.style = {\n order: this.sort + 1,\n };\n\n return (\n <div ref=\"header\" class={classList} {...props}>\n {this.ctor('renderHeaderIcon')()}\n {this.ctor('renderHeaderLabel')()}\n {this.ctor('renderHeaderAngle')()}\n </div>\n );\n },\n\n renderBody()\n {\n let classList = [\n 'n-collapse__body'\n ];\n\n let tempValue = Arr.clone(this.NCollapse.tempValue);\n\n if ( !this.label && !this.$slots.label ) {\n tempValue.push(this.name);\n }\n\n let renderBody = Arr.has(tempValue, this.name);\n\n if ( !Arr.has(tempValue, this.name) && this.keep ) {\n renderBody = this.init;\n }\n\n if ( !Arr.has(tempValue, this.name) && this.preload ) {\n renderBody = true;\n }\n\n if ( !renderBody && this.label ) {\n return null;\n }\n\n this.init = true;\n\n let style = {\n order: this.sort + 2\n };\n\n if ( !Arr.has(tempValue, this.name) ) {\n style.display = 'none';\n }\n\n let element = 'div';\n\n if ( !this.relative && !this.NCollapse.relative ) {\n element = resolveComponent('NScrollbar');\n }\n\n return h(element, { class: classList, style, }, this.$slots);\n },\n\n render()\n {\n return [\n this.ctor('renderHeader')(), this.ctor('renderBody')()\n ];\n }\n}\n","import Collapse from './src/collapse/collapse';\nimport CollapseItem from './src/collapse-item/collapse-item';\n\nexport default function (App) {\n App.component(Collapse.name, Collapse);\n App.component(CollapseItem.name, CollapseItem);\n}","import { Any, Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewPlain',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return null;\n }\n },\n\n showSrc: {\n default()\n {\n return true;\n }\n }\n\n },\n\n computed: {\n\n tempSrc()\n {\n return Obj.get(this.src, 'name', this.src);\n },\n\n tempExt()\n {\n let regex = /^.*?\\.([^.?]+)(\\?.*?)?$/;\n\n if ( Any.isEmpty(this.tempSrc) ) {\n return null;\n }\n\n return this.tempSrc.replace(regex, '$1');\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-plain'\n ];\n\n let slots = [];\n\n slots[0] = (\n <li>{ this.type || Locale.trans('plain') }/{ this.tempExt || Locale.trans('none') }</li>\n );\n\n if ( this.showSrc ) {\n slots[1] = (<li>{ this.tempSrc }</li>);\n }\n\n return (\n <div class={classList}>\n <ul>{ slots }</ul>\n </div>\n );\n }\n\n}","import { Obj, Arr, Str, Any, Dom } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPreviewImage',\n\n props: {\n\n src: {\n default()\n {\n return null;\n }\n },\n\n },\n\n data()\n {\n return {\n load: false, tempSrc: null\n };\n },\n\n beforeMount()\n {\n if ( ! window.ImageCache ) {\n window.ImageCache = [];\n }\n\n\n if ( ! Arr.has(window.ImageCache, this.src) ) {\n this.tempSrc = this.src;\n }\n\n },\n\n mounted()\n {\n this.resolveLoad();\n },\n\n watch: {\n\n 'src': function () {\n this.resolveLoad();\n }\n\n },\n\n methods: {\n\n resolveLoad()\n {\n if ( Arr.has(window.ImageCache, this.src) ) {\n return;\n }\n\n this.tempSrc = null;\n\n if ( Any.isObject(this.src) ) {\n return this.resolveData();\n }\n\n Dom.find(this.$refs.image).loaded(() => {\n\n /**\n * Add image to cache\n */\n Arr.add(window.ImageCache, this.src);\n\n /**\n * Mark image as loaded\n */\n Any.delay(() => this.load = false, 200);\n });\n\n this.laod = true;\n },\n\n resolveData()\n {\n let reader = new FileReader();\n\n reader.onload = () => {\n this.tempSrc = reader.result;\n };\n\n reader.readAsDataURL(this.src);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-preview-image'\n ];\n\n if ( Arr.has(window.ImageCache, this.src) ) {\n classList.push('n-cached');\n }\n\n if ( ! this.load ) {\n classList.push('n-ready');\n }\n\n return (\n <div class={classList}>\n <img ref=\"image\" src={this.tempSrc || this.src} />\n </div>\n );\n }\n\n}","import Preview from './src/preview/preview';\nimport PreviewPlain from './src/preview-plain/preview-plain';\nimport PreviewImage from './src/preview-image/preview-image';\nimport PreviewVideo from './src/preview-video/preview-video';\n\nexport default function (App) {\n App.component(Preview.name, Preview);\n App.component(PreviewPlain.name, PreviewPlain);\n App.component(PreviewImage.name, PreviewImage);\n App.component(PreviewVideo.name, PreviewVideo);\n}\n\n","import { Arr, Map, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMap',\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n zoom: {\n default()\n {\n return 15;\n },\n type: [Number]\n }\n\n },\n\n provide()\n {\n return {\n NMap: this\n };\n },\n\n data()\n {\n return { init: false, callbacks: [], tempMap: null };\n },\n\n watch: {\n\n lat()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n },\n\n lng()\n {\n Any.delay(() => this.tempMap.focusMarkers(), 100);\n }\n\n },\n\n mounted()\n {\n this.tempMap = new Map(this.$el, {\n lat: this.lat, lng: this.lng, zoom: this.zoom\n });\n\n this.init = true;\n\n Arr.each(this.callbacks, (callback) => callback())\n },\n\n methods: {\n\n getMap()\n {\n return this.tempMap;\n },\n\n onMount(callback)\n {\n this.init ? callback() : this.callbacks.push(callback);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-map'\n ];\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import { UUID, Obj, Num, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NMapMarker',\n\n inject: {\n\n NMap: {\n default: undefined\n }\n\n },\n\n props: {\n\n lat: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n lng: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n drag: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n options: {\n default()\n {\n return { style: 'default' };\n },\n type: [Object]\n },\n\n },\n\n data()\n {\n return {\n id: UUID(), tempMarker: null\n };\n },\n\n methods: {\n\n importMarkerPosition()\n {\n this.tempMarker.marker.setPosition({\n lat: this.lat, lng: this.lng\n });\n },\n\n updateMarkerPosition()\n {\n this.$emit('update:lat', this.tempMarker.marker.getPosition().lat());\n this.$emit('update:lng', this.tempMarker.marker.getPosition().lng());\n },\n\n initializeMarker()\n {\n let options = Obj.assign({\n lat: Num.float(this.lat), lng: Num.float(this.lng), draggable: this.drag\n }, this.options);\n\n if ( ! Any.isEmpty(this.$slots.default) ) {\n options.html = this.$el.innerHTML;\n }\n\n this.tempMarker = this.NMap.getMap().createMarker(this.id, options);\n\n this.tempMarker.marker.addListener('position_changed',\n Any.debounce(this.updateMarkerPosition));\n\n this.tempMarker.marker.addListener('dragstart',\n () => this.$emit('dragstart', this.tempMarker));\n\n this.tempMarker.marker.addListener('dragend',\n () => this.$emit('dragend', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseover',\n () => this.$emit('mouseenter', this.tempMarker));\n\n this.tempMarker.marker.addListener('mouseout',\n () => this.$emit('mouseleave', this.tempMarker));\n },\n\n setMarkerByAddress(address)\n {\n let successClosure = () => {\n this.NMap.getMap().focusMarkers(null, this.NMap.zoom);\n };\n\n let errorClosure = () => {\n this.Notify(this.trans('Address not found.'), 'danger');\n };\n\n this.NMap.getMap().setMarkerByAddress(this.id, address)\n .then(successClosure, errorClosure);\n }\n\n },\n\n watch: {\n\n lat()\n {\n this.importMarkerPosition();\n },\n\n lng()\n {\n this.importMarkerPosition();\n }\n\n },\n\n beforeMount()\n {\n this.NMap.onMount(this.initializeMarker);\n },\n\n render()\n {\n return (\n <div style=\"display: none;\">\n { this.$slots.default }\n </div>\n );\n }\n\n}\n","import Map from './src/map/map';\nimport MapMarker from './src/map-marker/map-marker';\n\nexport default function (App) {\n App.component(Map.name, Map);\n App.component(MapMarker.name, MapMarker);\n}\n\n","import { Any, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass AlertFrame {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n Dom.find(document.body).on('keydown', (event) => {\n if ( event.which === 27 ) {\n this.remove();\n }\n }, 'n-alert');\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n }\n\n remove()\n {\n Dom.find(document.body).off('keydown', null, 'n-alert');\n\n this.el.get(0).remove();\n }\n\n render()\n {\n let classList = [\n 'n-alert-frame',\n 'n-alert-frame--' + this.type,\n 'n-alert-frame--' + Alert.size\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' ')\n });\n\n let backdrop = Dom.make('div', {\n classList: 'n-alert-backdrop', onclick: () => this.remove()\n });\n\n backdrop.onClick = () => {\n this.remove();\n };\n\n backdrop.appendTo(this.el);\n\n let frame = Dom.make('div', {\n classList: 'n-alert'\n });\n\n frame.appendTo(this.el);\n\n let icon = Dom.make('div', {\n classList: 'n-alert__icon'\n });\n\n icon.appendTo(frame);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-alert__text'\n });\n\n text.html(this.text).appendTo(frame);\n }\n\n}\n\nexport default class Alert {\n\n static alias = 'Alert';\n\n static size = nano.Settings.notifySize;\n\n static alert = null;\n\n static handle(...args)\n {\n if ( ! Any.isEmpty(Alert.alert) ) {\n Alert.alert.remove();\n }\n\n Alert.alert = new AlertFrame(...args);\n\n Alert.alert.append();\n\n return Alert;\n }\n\n}\n","import Alert from './src/alert/alert';\n\nexport default function (App) {\n App.config.globalProperties[Alert.alias] = window[Alert.alias] = Alert.handle;\n}\n","import { UUID, Str, Obj, Dom } from \"@kizmann/pico-js\";\n\nclass Notification {\n\n el = null;\n\n text = '';\n\n icon = '';\n\n type = '';\n\n options = {\n duration: 4500,\n iconPrimary: nano.Icons.info,\n iconSecondary: nano.Icons.info,\n iconSuccess: nano.Icons.success,\n iconWarning: nano.Icons.warning,\n iconDanger: nano.Icons.danger,\n iconInfo: nano.Icons.info\n };\n\n constructor(text, type = 'primary', options = {})\n {\n this.text = text;\n this.type = type;\n\n this.options = Obj.assign(this.options, options);\n\n this.render();\n }\n\n getIcon()\n {\n return Obj.get(this.options,\n 'icon' + Str.ucfirst(this.type));\n }\n\n append(el = document.body)\n {\n this.el.appendTo(el);\n\n setTimeout(() => this.el.addClass('n-active'), 100);\n\n return this;\n }\n\n remove()\n {\n this.el.get(0).remove();\n\n return this;\n }\n\n render()\n {\n let classList = [\n 'n-notification',\n 'n-notification--' + this.type\n ];\n\n this.el = Dom.make('div', {\n classList: classList.join(' '), onclick: () => this.remove()\n });\n \n\n let icon = Dom.make('div', {\n classList: 'n-notification__icon'\n });\n\n icon.appendTo(this.el);\n\n let iconSpan = Dom.make('span', {\n classList: this.getIcon()\n });\n\n iconSpan.appendTo(icon);\n\n let text = Dom.make('div', {\n classList: 'n-notification__text'\n });\n\n text.html(this.text).appendTo(this.el);\n }\n\n}\n\nexport default class Notify {\n\n static alias = 'Notify';\n\n static size = nano.Settings.notifySize;\n\n static position = nano.Settings.notifyPosition;\n\n static notifications = {};\n\n static handle(...args)\n {\n let uid = Notify.create(undefined, ...args);\n\n let wrapper = Notify.getWrapper();\n\n // Append element to dom\n Notify.notifications[uid].append(wrapper);\n\n // Queue remove\n setTimeout(() => Notify.remove(uid),\n Notify.notifications[uid].options.duration);\n\n return uid;\n }\n\n static create(uid = UUID(), ...args)\n {\n Notify.notifications[uid] = new Notification(...args);\n\n return uid;\n }\n\n static remove(uid)\n {\n if ( Notify.notifications[uid] === undefined ) {\n return;\n }\n\n // Remove dom element\n Notify.notifications[uid].remove();\n\n // Remove from list\n delete Notify.notifications[uid];\n }\n\n static getWrapper()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let style = {\n 'z-index': window.zIndex + 100\n };\n\n let classList = [\n 'n-notification-frame',\n 'n-notification-frame--' + this.size,\n 'n-notification-frame--' + this.position\n ];\n\n if ( Dom.find('.n-notification-frame').empty() === true ) {\n Dom.make('div', { classList: classList.join(' ') }).appendTo(document.body);\n }\n\n Dom.find('.n-notification-frame').css(style);\n\n return Dom.find('.n-notification-frame');\n }\n\n}\n","import Notifcation from './src/notification/notification';\n\nexport default function (App) {\n App.config.globalProperties[Notifcation.alias] = window[Notifcation.alias] = Notifcation.handle;\n}\n","export default {\n\n name: 'NEmptyIcon',\n\n props: {\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n inline: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-empty-icon',\n 'n-empty-icon--' + this.size,\n 'n-empty-icon--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.inline ) {\n classList.push('n-inline');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-empty-icon__frame\">\n { /* Icon */ }\n </div>\n <div class=\"n-empty-icon__text\">\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n );\n }\n\n}\n","import EmptyIcon from './src/empty-icon/empty-icon';\n\nexport default function (App) {\n App.component(EmptyIcon.name, EmptyIcon);\n}\n","import { Arr, Obj, Dom, Any, Str, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NScrollbar',\n\n provide()\n {\n return {\n NScrollbar: this\n };\n },\n\n props: {\n\n options: {\n default()\n {\n return {};\n },\n type: [Object]\n },\n\n relative: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n fixture: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n allowNative: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowY: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n overflowX: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n offsetY: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n offsetX: {\n default()\n {\n return 10;\n },\n type: [Number]\n },\n\n framerate: {\n default()\n {\n return 24;\n },\n type: [Number]\n },\n\n wrapClass: {\n default()\n {\n return 'n-scrollbar__wrap';\n }\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n native: false\n };\n },\n\n beforeMount()\n {\n this.adaptScrollBehavior();\n },\n\n mounted()\n {\n this.bindAdaptHeight();\n this.bindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.bind('NScrollbar:resize',\n this.onResize, this._.uid);\n\n Event.bind('NResizer:moved',\n this.onUpdate, this._.uid);\n\n Dom.find(window).on('resize',\n this.onResize, passive);\n\n Dom.find(this.$refs.content).on('scroll',\n this.onScroll, passive);\n },\n\n updated()\n {\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('n-ready');\n }\n },\n\n beforeUnmount()\n {\n this.unbindAdaptHeight();\n this.unbindAdaptWidth();\n\n let passive = {\n passive: true, uid: this._.uid\n };\n\n Event.unbind('NScrollbar:resize',\n this._.uid);\n\n Event.unbind('NResizer:moved',\n this._.uid);\n\n Dom.find(window).off('resize',\n null, passive);\n\n Dom.find(this.$el).off('scroll',\n null, passive);\n },\n\n methods: {\n\n scrollTo(x = 0, y = 0, delay = 0)\n {\n Any.delay(() => this.onScrollTo(x, y), delay);\n },\n\n onScrollTo(x = 0, y = 0)\n {\n if ( this.$refs.content ) {\n this.$refs.content.scrollTop = y;\n this.$refs.content.scrollLeft = x;\n }\n },\n\n scrollIntoView(selector, delay = 0)\n {\n Any.delay(() => this.onScrollIntoView(selector), delay);\n },\n\n onScrollIntoView(selector)\n {\n let $el = Dom.find(this.$el).find(selector);\n\n let scrollTop = this.$refs.content\n .scrollTop;\n\n let outerHeight = this.$refs.content.\n clientHeight;\n\n let offsetTop = $el.offsetTop(this.$el);\n\n if ( offsetTop < scrollTop ) {\n this.$refs.content.scrollTop = offsetTop;\n }\n\n if ( offsetTop + $el.height() >= scrollTop + outerHeight ) {\n this.$refs.content.scrollTop = offsetTop - outerHeight + $el.height();\n }\n\n let scrollLeft = this.$refs.content\n .scrollLeft;\n\n let outerWidth = this.$refs.content.\n clientWidth;\n\n let offsetLeft = $el.offsetLeft(this.$el);\n\n if ( offsetLeft < scrollLeft ) {\n this.$refs.content.scrollLeft = offsetLeft;\n }\n\n if ( offsetLeft + $el.width() >= scrollLeft + outerWidth ) {\n this.$refs.content.scrollLeft = offsetLeft - outerWidth + $el.width();\n }\n },\n\n adaptScrollBehavior()\n {\n let $dom = Dom.make('div', { classList: ['n-scrollbar-test'] })\n .appendTo(document.body).get(0);\n\n Dom.make('div').appendTo($dom);\n\n this.native = $dom.clientWidth === $dom.offsetWidth ||\n $dom.clientHeight === $dom.offsetHeight;\n\n $dom.remove();\n },\n\n adaptScrollHeight()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n //\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n\n let outerHeight = this.$refs.content.\n clientHeight || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerHeight -= 16;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // outerHeight -= 15;\n // }\n\n let innerHeight = this.$refs.content\n .scrollHeight || 0;\n\n let virtualHeight = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualHeight += Dom.find(el).height() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerHeight -= 16;\n }\n\n if ( virtualHeight > innerHeight ) {\n innerHeight = virtualHeight;\n }\n\n // if ( offsetHeight === 0 && this.overflowX ) {\n // innerHeight -= 15;\n // }\n\n let isSameOld = outerHeight === this.outerHeight &&\n innerHeight === this.innerHeight;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerHeight = outerHeight;\n this.innerHeight = innerHeight;\n\n let height = (outerHeight / innerHeight)\n * outerHeight;\n\n let barHeight = Math.max(height, 50);\n\n let maxHeight = Math.ceil((outerHeight / innerHeight) *\n (innerHeight - outerHeight));\n\n this.heightRatio = (maxHeight - (barHeight - height)\n - this.offsetY) / maxHeight;\n\n Dom.find(this.$refs.vbar).css({\n height: (this.barHeight = Math.ceil(barHeight)) + 'px'\n });\n\n // let hasNativeBar = offsetWidth !== 0 && this.overflowY;\n //\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n //\n // if ( hasNativeBar && this.overflowX ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n\n let hasVtrack = outerHeight && outerHeight < innerHeight;\n\n if ( hasVtrack ) {\n Dom.find(this.$el).addClass('has-vtrack');\n }\n\n if ( ! hasVtrack ) {\n Dom.find(this.$el).removeClass('has-vtrack');\n }\n\n // if ( hasVtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollWidth()\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n // let offsetWidth = this.$refs.content.clientWidth -\n // this.$refs.content.offsetWidth;\n //\n // let offsetHeight = this.$refs.content.clientHeight -\n // this.$refs.content.offsetHeight;\n\n let outerWidth = this.$refs.content.\n clientWidth || 0;\n\n if ( this.native && ! this.allowNative ) {\n outerWidth -= 16;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // outerWidth -= 15;\n // }\n\n let innerWidth = this.$refs.content\n .scrollWidth || 0;\n\n let virtualWidth = 0;\n\n Dom.find(this.$refs.content).childs().each((el) => {\n virtualWidth += Dom.find(el).width() || 0;\n });\n\n if ( this.native && ! this.allowNative ) {\n innerWidth -= 16;\n }\n\n if ( virtualWidth > innerWidth ) {\n innerWidth = virtualWidth;\n }\n\n // if ( offsetWidth === 0 && this.overflowY ) {\n // innerWidth -= 15;\n // }\n\n let isSameOld = outerWidth === this.outerWidth &&\n innerWidth === this.innerWidth;\n\n if ( isSameOld ) {\n return;\n }\n\n this.outerWidth = outerWidth;\n this.innerWidth = innerWidth;\n\n let width = (outerWidth / innerWidth)\n * outerWidth;\n\n let barWidth = Math.max(width, 50);\n\n let maxWidth = Math.ceil((outerWidth / innerWidth) *\n (innerWidth - outerWidth));\n\n this.widthRatio = (maxWidth - (barWidth - width)\n - this.offsetX) / maxWidth;\n\n Dom.find(this.$refs.hbar).css({\n width: (this.barWidth = Math.ceil(barWidth)) + 'px'\n });\n\n // let hasNativeBar = offsetHeight && this.overflowX;\n\n // if ( hasNativeBar ) {\n // Dom.find(this.$el).addClass('has-native-hbar');\n // }\n //\n // if ( hasNativeBar && this.overflowY ) {\n // Dom.find(this.$el).addClass('has-native-vbar');\n // }\n\n let hasHtrack = outerWidth && outerWidth < innerWidth;\n\n if ( hasHtrack ) {\n Dom.find(this.$el).addClass('has-htrack');\n }\n\n if ( ! hasHtrack ) {\n Dom.find(this.$el).removeClass('has-htrack');\n }\n\n // if ( hasHtrack && ! hasNativeBar ) {\n // Event.fire('NScrollbar:native');\n // }\n\n this.adaptScrollPosition();\n },\n\n adaptScrollPosition(scroll = {})\n {\n if ( this.native && this.allowNative ) {\n return;\n }\n\n if ( ! scroll.top ) {\n scroll.top = this.$refs.content.scrollTop;\n }\n\n if ( ! scroll.left ) {\n scroll.left = this.$refs.content.scrollLeft;\n }\n\n let vbarTop = Math.ceil((this.outerHeight / this.innerHeight) *\n scroll.top * this.heightRatio) || 0;\n\n if ( ! this.vbarTop || vbarTop !== this.vbarTop ) {\n\n Dom.find(this.$refs.vbar).css({\n transform: `translateY(${vbarTop}px) translateZ(0)`\n });\n\n this.vbarTop = vbarTop;\n }\n\n let hbarLeft = Math.ceil((this.outerWidth / this.innerWidth) *\n scroll.left * this.widthRatio) || 0;\n\n if ( ! this.hbarLeft || hbarLeft !== this.hbarLeft ) {\n\n Dom.find(this.$refs.hbar).css({\n transform: `translateX(${hbarLeft}px) translateZ(0)`\n });\n\n this.hbarLeft = hbarLeft;\n }\n },\n\n adaptHeight()\n {\n if ( ! this.cacheChildEl ) {\n this.cacheChildEl = Dom.find(this.$refs.content).child();\n }\n\n let height = this.cacheChildEl\n .height();\n\n if ( ! this.cacheWindwoEl ) {\n this.cacheWindwoEl = Dom.find(this.$el);\n }\n\n let window = this.cacheWindwoEl\n .innerHeight();\n\n if ( height === this.passedHeight && window === this.windowCache ) {\n return;\n }\n\n this.windowCache = window;\n\n if ( this.overflowY ) {\n this.adaptScrollHeight();\n }\n\n if ( window ) {\n this.passedHeight = height;\n }\n\n let style = {\n height: (height + 1) + 'px'\n };\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptHeight()\n {\n this.refreshHeight = setInterval(this.adaptHeight,\n 1000 / this.framerate);\n },\n\n unbindAdaptHeight()\n {\n clearInterval(this.refreshHeight);\n },\n\n adaptWidth()\n {\n if ( this.resizeTimer ) {\n return;\n }\n\n let width = Dom.find(this.$refs.content)\n .child().width();\n\n let window = Dom.find(this.$el)\n .innerWidth();\n\n if ( width === this.passedWidth ) {\n return;\n }\n\n if ( this.overflowX ) {\n this.adaptScrollWidth();\n }\n\n if ( window ) {\n this.passedWidth = width;\n }\n\n let style = {\n width: width + 'px'\n };\n\n if ( this.fixture ) {\n this.onUpdate();\n }\n\n if ( ! this.relative ) {\n return Any.delay(this.onSizechange, 100);\n }\n\n Dom.find(this.$refs.spacer).child().css(style);\n },\n\n bindAdaptWidth()\n {\n this.refreshWidth = setInterval(this.adaptWidth,\n 1000 / this.framerate);\n },\n\n unbindAdaptWidth()\n {\n clearInterval(this.refreshWidth);\n },\n\n onScroll(event)\n {\n let scroll = {\n top: this.$refs.content.scrollTop,\n left: this.$refs.content.scrollLeft\n };\n\n let scrollUpdate = () => {\n this.$emit('scrollupdate', scroll.top, scroll.left);\n }\n\n this.$nextTick(scrollUpdate);\n this.adaptScrollPosition(scroll);\n },\n\n onSizechange(event)\n {\n let height = Dom.find(this.$el).height();\n let width = Dom.find(this.$el).width();\n\n if ( ! height || ! width ) {\n return;\n }\n\n if ( this.passedHeight || this.passedWidth ) {\n Dom.find(this.$el).addClass('is-ready');\n }\n\n this.$emit('sizechange', height, width, this.$el);\n },\n\n onResize()\n {\n if ( ! this.fixture ) {\n return;\n }\n\n Dom.find(this.$refs.content)\n .child().css(null);\n\n clearTimeout(this.resizeTimer);\n\n this.resizeTimer = setTimeout(\n this.onUpdate, 500);\n\n Dom.find(this.$el).fire('resized');\n },\n\n onUpdate()\n {\n if ( ! this.fixture || ! this.$refs.content ) {\n return;\n }\n\n let $inner = Dom.find(this.$refs.content)\n .child();\n\n let height = $inner.actual(() => {\n return $inner.scrollHeight();\n });\n\n if ( height !== this.passedHeight ) {\n $inner.css({ height: height + 'px' });\n }\n\n let width = $inner.actual(() => {\n return $inner.scrollWidth();\n });\n\n if ( width !== this.passedWidth ) {\n $inner.css({ width: width + 'px' });\n }\n\n delete this.resizeTimer;\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onVbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onVbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onVbarMouseup, this._.uid);\n\n this.scrollTop = this.$refs.content\n .scrollTop;\n\n this.clientY = this.getTouchEvent(event)\n .clientY;\n },\n\n onVbarMousemove(event)\n {\n let clientY = this.getTouchEvent(event)\n .clientY;\n\n let top = (this.outerHeight / this.innerHeight) *\n this.scrollTop * this.heightRatio;\n\n let offset = (clientY - this.clientY) + top;\n\n let height = (this.outerHeight -\n this.barHeight - this.offsetY);\n\n this.$refs.content.scrollTop = offset / height *\n (this.innerHeight - this.outerHeight);\n },\n\n onVbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n },\n\n onHbarMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.stopPropagation();\n\n Dom.find(document).on(this.mousemove,\n this.onHbarMousemove, this._.uid);\n\n Dom.find(document).on(this.mouseup,\n this.onHbarMouseup, this._.uid);\n\n this.scrollLeft = this.$refs.content\n .scrollLeft;\n\n this.clientX = event.clientX;\n },\n\n onHbarMousemove(event)\n {\n let top = (this.outerWidth / this.innerWidth) *\n this.scrollLeft * this.widthRatio;\n\n let offset = (event.clientX - this.clientX) + top;\n\n let width = (this.outerWidth -\n this.barWidth - this.offsetX);\n\n this.$refs.content.scrollLeft = offset / width *\n (this.innerWidth - this.outerWidth);\n },\n\n onHbarMouseup(event)\n {\n Dom.find(document).off(this.mousemove,\n null, this._.uid);\n\n Dom.find(document).off(this.mouseup,\n null, this._.uid);\n }\n\n },\n\n render()\n {\n let classList = [\n 'n-scrollbar'\n ];\n\n if ( this.native ) {\n classList.push('n-scrollbar--native');\n }\n\n if ( ! this.allowNative ) {\n classList.push('n-scrollbar--forced');\n }\n\n if ( this.touch ) {\n classList.push('n-scrollbar--touch');\n }\n\n if ( window.WIN ) {\n classList.push('n-windows');\n }\n\n if ( this.overflowY ) {\n classList.push('n-overflow-y');\n }\n\n if ( this.overflowX ) {\n classList.push('n-overflow-x');\n }\n\n let vbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onVbarMousedown\n };\n\n let hbarProps = {\n ['on' + Str.ucfirst(this.mousedown)]: this.onHbarMousedown\n };\n\n return (\n <div class={classList} {...Obj.except(this.$attrs, ['class'])}>\n <div class=\"n-scrollbar-content\" ref=\"content\">\n <div class={this.wrapClass}>\n { this.$slots.default && this.$slots.default() }\n </div>\n </div>\n <div class=\"n-scrollbar-spacer\" ref=\"spacer\">\n <div class={this.wrapClass}>\n { /* Adapt inner height */ }\n </div>\n </div>\n <div ref=\"hbar\" class=\"n-scrollbar-h\" {...hbarProps}></div>\n <div ref=\"vbar\" class=\"n-scrollbar-v\" {...vbarProps}></div>\n </div>\n );\n }\n\n}\n","import Scrollbar from './src/scrollbar/scrollbar.next';\n\nexport default function (App) {\n App.component(Scrollbar.name, Scrollbar);\n}","import { UUID, Num, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NLoader',\n\n inject: {\n\n NLoader: {\n default: undefined\n }\n\n },\n\n provide()\n {\n return {\n NLoader: this\n };\n },\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n minimum: {\n default()\n {\n return 120;\n },\n type: [Number]\n },\n\n debounce: {\n default()\n {\n return 120;\n },\n type: [Number]\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n applyTimer()\n {\n this.timing = Date.now();\n\n if ( this.visible) {\n return this.tempVisible = this.visible;\n }\n\n this.startTimer();\n },\n\n startTimer()\n {\n let timing = Date.now() - this.timing;\n\n if ( timing < this.minimum ) {\n return this.restartTimer(timing);\n }\n\n this.timeout = setTimeout(() => this.tempVisible = false, \n this.debounce);\n },\n\n restartTimer(timing = 0) {\n Any.delay(this.startTimer, this.minimum - timing + 10);\n }\n\n },\n\n watch: {\n\n visible()\n {\n this.applyTimer();\n }\n\n },\n\n mounted()\n {\n this.applyTimer();\n },\n\n render()\n {\n let classList = [\n 'n-loader', \n 'n-loader--' + this.size, \n 'n-loader--' + this.type\n ];\n\n if ( this.tempVisible ) {\n classList.push('n-load');\n }\n\n return (\n <div class={classList}>\n { this.$slots.default && this.$slots.default() }\n </div>\n );\n }\n}\n","import Loader from './src/loader/loader';\n\nexport default function (App) {\n App.component(Loader.name, Loader);\n}\n","import { UUID, Arr, Obj, Dom, Any, Str, Locale, Event, Num } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NResizer',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n width: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n minWidth: {\n default()\n {\n return 60;\n },\n type: [Number]\n },\n\n maxWidth: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n group: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n position: {\n default()\n {\n return 'right';\n },\n type: [String]\n },\n\n resizerWidth: {\n default()\n {\n return 6;\n },\n type: [Number]\n }\n\n },\n\n computed: {\n\n touch() {\n return !! ('ontouchstart' in window || \n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n\n },\n\n data()\n {\n return {\n sizeFixed: false,\n tempValue: this.modelValue,\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n mounted()\n {\n if ( ! this.modelValue ) {\n this.updateWidth();\n }\n\n if ( this.NScrollbar ) {\n this.bindSizechange();\n }\n\n Event.bind('NResizer:move', \n this.forceWidth, this._.uid);\n\n Dom.find(window).on('resize', \n Any.debounce(this.onResize, 500), this._.uid);\n },\n\n updated()\n {\n this.updateWidth();\n },\n\n unmounted()\n {\n if ( this.NScrollbar ) {\n this.unbindSizechange();\n }\n\n Event.unbind('NResizer:move', \n this._.uid);\n \n Dom.find(window).off('resize', \n null, this._.uid);\n },\n\n methods: {\n\n forceWidth(group)\n {\n if ( ! Arr.has(group, this.group) ) {\n return;\n }\n \n if ( ! this.tempValue || ! this.group.length ) {\n return;\n }\n\n this.sizeFixed = true;\n\n let style = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(style);\n },\n\n updateWidth()\n {\n let width = Dom.find(this.$el)\n .width();\n\n if ( width === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', \n this.tempValue = width);\n \n this.updateHandle();\n },\n\n updateHandle()\n {\n let style = {};\n\n if ( this.position === 'left' ) {\n style.transform =`translateX(-${this.tempValue - this.resizerWidth}px)`\n }\n \n if ( this.position === 'right' ) {\n style.transform = `translateX(${this.tempValue - this.resizerWidth}px)`\n }\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n bindSizechange()\n {\n Dom.find(this.NScrollbar.$el).on('resized', \n Any.debounce(this.updateWidth, 50), this._.uid);\n },\n\n unbindSizechange()\n {\n Dom.find(this.NScrollbar.$el)\n .off('resized', null, this._.uid);\n },\n\n\n onResize()\n {\n if ( this.NScrollbar ) {\n return;\n }\n\n this.updateWidth();\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onLeftMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onLeftMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onLeftMousemove, 60), this._.uid);\n },\n\n onLeftMousemove(event)\n {\n this.clientX = (window.innerWidth - \n this.getTouchEvent(event).clientX);\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(-${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onLeftMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('right');\n\n let scrollX = Dom.find(this.$el)\n .scroll('right');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(-${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n onRightMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if ( this.group.length ) {\n Event.fire('NResizer:move', this.group);\n }\n\n Dom.find(this.$el).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onRightMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onRightMousemove, 60), this._.uid);\n },\n\n onRightMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = (this.clientX + scrollX - offsetX) -\n (this.resizerWidth / 2);\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth,\n this.minWidth - this.resizerWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth,\n this.maxWidth - this.resizerWidth);\n }\n\n let style = {\n transform: `translateX(${targetWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n },\n\n onRightMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mousemove, null, this._.uid);\n Dom.find(document).off(this.mouseup, null, this._.uid);\n\n if ( ! this.clientX ) {\n return;\n }\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let scrollX = Dom.find(this.$el)\n .scroll('left');\n\n let targetWidth = this.clientX + scrollX - offsetX;\n\n if ( this.minWidth ) {\n targetWidth = Math.max(targetWidth, this.minWidth);\n }\n\n if ( this.maxWidth ) {\n targetWidth = Math.min(targetWidth, this.maxWidth);\n }\n\n this.tempValue = Math.round(targetWidth);\n\n Dom.find(this.$el).removeClass('n-move');\n\n let style = {\n transform: `translateX(${targetWidth - this.resizerWidth}px)`\n };\n\n Dom.find(this.$refs.handle).css(style);\n\n let frameStyle = {\n width: this.tempValue + 'px', flex: '0 0 auto'\n };\n\n Dom.find(this.$el).css(frameStyle);\n\n delete this.clientX;\n\n if ( this.group.length ) {\n Event.fire('NResizer:moved', this.group);\n }\n\n this.$emit('update:modelValue', this.tempValue);\n }\n\n },\n\n renderHandle()\n {\n if ( this.disabled ) {\n return null;\n }\n \n let classList = [\n 'n-resizer__handle',\n ];\n\n let props = {};\n\n if ( this.position === 'right' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onRightMousedown;\n }\n\n if ( this.position === 'left' ) {\n props['on' + Str.ucfirst(this.mousedown)] = this.onLeftMousedown;\n }\n\n if ( this.resizerWidth ) {\n props.width = this.resizerWidth + 'px';\n }\n\n return (\n <div ref=\"handle\" class={classList} {...props}/>\n );\n },\n\n render()\n {\n let classList = [\n 'n-resizer',\n 'n-resizer--' + this.position,\n ];\n\n let style = {};\n\n if ( this.width && ! this.tempValue ) {\n style['width'] = this.width + 'px';\n }\n\n if ( this.width ) {\n style['flex-basis'] = this.width + 'px';\n }\n\n if ( this.minWidth ) {\n style['min-width'] = this.minWidth + 'px';\n }\n\n if ( this.maxWidth ) {\n style['max-width'] = this.maxWidth + 'px';\n }\n\n return (\n <div class={classList} style={style}>\n { [this.$slots.default(), this.ctor('renderHandle')()] }\n </div>\n );\n }\n\n}\n","import Resizer from './src/resizer/resizer';\n\nexport default function (App) {\n App.component(Resizer.name, Resizer);\n}\n","import { UUID, Num, Arr, Obj, Any, Dom, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NModal',\n\n inject: {\n\n NScrollbar: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n width: {\n default()\n {\n return '50%';\n },\n type: [String]\n },\n\n height: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n title: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n renderClose: {\n default()\n {\n return true;\n },\n type: [Boolean]\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n tempValue()\n {\n this.startRefreshTimeout();\n }\n\n },\n\n provide()\n {\n return {\n NModal: this\n };\n },\n\n data()\n {\n return {\n target: null, tempValue: false\n };\n },\n\n mounted()\n {\n this.target = Dom.find(this.selector || this.$el)\n .previous().get(0);\n\n Dom.find(document.body).on('mousedown',\n this.eventClick, this._.uid);\n\n Dom.find(document.body).on('keydown',\n this.eventKeydown, this._.uid);\n\n let showModal = () => {\n this.tempValue = true;\n };\n\n if ( this.modelValue ) {\n Any.delay(showModal, 100);\n }\n\n Dom.find(document.body).append(this.$el);\n },\n\n beforeUnmount()\n {\n this.$el.remove();\n },\n\n unmounted()\n {\n Dom.find(document.body).off('mousedown',\n null, this._.uid);\n\n Dom.find(document.body).off('keydown',\n null, this._.uid);\n },\n\n methods: {\n\n openModal(force = false, source = null)\n {\n if ( this.tempValue ) {\n return;\n }\n\n if ( this.closable || force ) {\n this.tempValue = true;\n }\n\n this.$emit('update:modelValue', true, source);\n },\n\n closeModal(force = false, source = null)\n {\n if ( ! this.tempValue ) {\n return;\n }\n\n if ( ! this.update ) {\n return this.$emit('close', source);\n }\n\n if ( this.closable || force ) {\n this.tempValue = false;\n }\n\n this.$emit('update:modelValue', false, source);\n },\n\n stopRefreshTimeout()\n {\n clearTimeout(this.refresh);\n\n Dom.find(this.$el).removeClass('n-ready');\n },\n\n startRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n window.zIndex += 1;\n\n Dom.find(this.$el).attr('data-modal',\n window.zIndex);\n\n Dom.find(this.$el).css({\n 'z-index': window.zIndex\n });\n\n this.queueRefreshTimeout();\n },\n\n queueRefreshTimeout()\n {\n if ( ! this.tempValue ) {\n return this.stopRefreshTimeout();\n }\n\n this.refresh = setTimeout(() => {\n Dom.find(this.$el).addClass('n-ready');\n }, 100);\n },\n\n eventClick(event, el)\n {\n if ( this.disabled || event.which !== 1 ) {\n return;\n }\n\n let result = !! Dom.find(el).closest(this.target);\n\n if ( ! result && ! this.tempValue ) {\n return;\n }\n\n if ( this.tempValue && this.closable ) {\n result = ! Dom.find(el).closest(this.$refs.backdrop);\n }\n\n if ( result === this.tempValue ) {\n return;\n }\n\n if ( ! result ) {\n return this.closeModal(false, 'escape');\n }\n\n if ( this.listen ) {\n this.openModal(true, 'selector');\n }\n },\n\n eventKeydown(event, el)\n {\n if ( ! this.tempValue || event.which !== 27 ) {\n return;\n }\n\n let extractIndex = (modal) => {\n return Dom.find(modal).attr('data-modal');\n };\n\n let indexes = Dom.find('.n-modal:not(.n-hidden)')\n .each(extractIndex);\n\n let index = Dom.find(this.$el).attr('data-modal');\n\n if ( Arr.last(indexes.sort()) !== index ) {\n return;\n }\n\n this.closeModal(false, 'escape');\n },\n\n },\n\n renderClose()\n {\n if ( ! this.renderClose || ! this.closable ) {\n return null;\n }\n\n let props = {\n onClick: () => this.closeModal(false, 'escape')\n };\n\n return (\n <div class=\"n-modal__close\" {...props}>\n <span class={nano.Icons.times}></span>\n </div>\n );\n },\n\n renderHeader()\n {\n if ( ! this.$slots.header && ! this.title ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__header\">\n { [this.$slots.header && this.$slots.header({ closeModal: this.closeModal }) || this.title, this.ctor('renderClose')()] }\n </div>\n );\n },\n\n renderFooter()\n {\n if ( ! this.$slots.footer ) {\n return null;\n }\n\n return (\n <div class=\"n-modal__footer\">\n { this.$slots.footer({ closeModal: this.closeModal }) }\n </div>\n );\n },\n\n renderBody()\n {\n let bodyHtml = (\n <NScrollbar ref=\"scrollbar\" relative={true} wrapClass=\"n-modal__wrap\">\n { this.$slots.default && this.$slots.default({ closeModal: this.closeModal }) }\n </NScrollbar>\n );\n\n if ( this.$slots.body ) {\n bodyHtml = this.$slots.body({ closeModal: this.closeModal });\n }\n\n return (\n <div class=\"n-modal__body\">\n { bodyHtml }\n </div>\n );\n },\n\n renderFrame()\n {\n if ( ! this.tempValue ) {\n return null;\n }\n\n let style = {\n width: this.width, height: this.height\n };\n\n let innerHtml = [\n this.ctor('renderHeader')(),\n this.ctor('renderBody')(),\n this.ctor('renderFooter')(),\n ]\n\n return (\n <div class=\"n-modal__frame\" style={style}>\n { this.$slots.raw ? this.$slots.raw() : innerHtml }\n </div>\n );\n },\n\n renderBackdrop()\n {\n return (\n <div ref=\"backdrop\" class=\"n-modal__backdrop\"></div>\n );\n },\n\n render()\n {\n if ( ! window.zIndex ) {\n window.zIndex = 9000;\n }\n\n let classList = [\n 'n-modal',\n 'n-modal--' + this.size,\n 'n-modal--' + this.type,\n 'n-modal--' + this.position\n ];\n\n if ( this.tempValue ) {\n this.queueRefreshTimeout();\n }\n\n if ( this.renderClose ) {\n classList.push('n-closable');\n }\n\n if ( ! this.tempValue ) {\n classList.push('n-hidden');\n }\n\n let innerHtml = null;\n\n if ( this.tempValue ) {\n innerHtml = this.ctor('renderFrame')();\n }\n\n return (\n <div class={classList}>\n { [innerHtml, this.ctor('renderBackdrop')()] }\n </div>\n );\n }\n\n}\n","import Modal from './src/modal/modal';\n\nexport default function (App) {\n App.component(Modal.name, Modal);\n}\n","import { h } from \"vue\";\nimport { Obj } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NInput',\n\n inject: {\n\n NForm: {\n default: undefined\n },\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n inheritAttrs: false,\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n iconPosition: {\n default()\n {\n return 'after';\n },\n type: [String]\n },\n\n iconDisabled: {\n default()\n {\n return null;\n },\n type: [Boolean]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n nativeType: {\n default()\n {\n return 'text';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue || ''\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n onIconClick(event)\n {\n if ( event.clientX || event.clientY ) {\n this.$emit('icon-click', event);\n }\n },\n\n onInput(event)\n {\n this.$emit('update:modelValue',\n this.tempValue = event.target.value);\n },\n\n onKeydown(event)\n {\n this.$emit('keydown', event);\n\n if ( event.which !== 13 ) {\n return;\n }\n\n event.preventDefault();\n\n if ( ! this.NForm ) {\n return;\n }\n\n this.NForm.onSubmit(event);\n },\n\n onFocus(event)\n {\n this.focus = true;\n this.$emit('focus', event);\n },\n\n onBlur(event)\n {\n this.focus = false;\n this.$emit('blur', event);\n }\n\n },\n\n renderIcon()\n {\n if ( !this.icon ) {\n return null;\n }\n\n let disabled = this.deepDisabled;\n\n if ( this.iconDisabled !== null ) {\n disabled = this.iconDisabled;\n }\n\n let props = {\n type: 'input',\n icon: this.icon,\n size: this.size,\n square: true,\n disabled: disabled,\n };\n\n if ( !disabled ) {\n props.onClick = this.onIconClick;\n }\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, [\n 'class', 'style'\n ]);\n\n Obj.assign(props, {\n value: this.tempValue,\n type: this.nativeType,\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onInput,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeydown: this.onKeydown\n });\n\n return h('input', props);\n },\n\n render()\n {\n let classList = [\n 'n-input',\n 'n-input--' + this.size,\n 'n-input--' + this.type,\n ];\n\n if ( this.icon ) {\n classList.push('n-input--icon');\n classList.push('n-input--icon-' + this.iconPosition);\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n let innerHtml = [];\n\n if ( this.iconPosition === 'before' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n innerHtml.push(this.ctor('renderInput')());\n\n if ( this.iconPosition === 'after' ) {\n innerHtml.push(this.ctor('renderIcon')());\n }\n\n return h('div', props, innerHtml);\n }\n\n}\n","import Input from './src/input/input';\n\nexport default function (App) {\n App.component(Input.name, Input);\n}\n","import { Arr, Obj, Num, Now, Any, Dom, Locale } from \"@kizmann/pico-js\";\nimport { h } from \"vue\";\n\nexport default {\n\n name: 'NInputNumber',\n\n inheritAttrs: false,\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n \n },\n\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return Number.MAX_VALUE;\n },\n type: [Number]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n stepSize: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n precision: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n format: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n decimals: {\n default()\n {\n return Locale.trans('.');\n },\n type: [String]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = this.getValue(value);\n }\n }\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.getValue(),\n }\n },\n\n methods: {\n\n clear()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n getValue(value = null)\n {\n if ( Any.isNull(value) ) {\n value = this.modelValue;\n }\n\n if ( Any.isEmpty(value) ) {\n return this.min;\n }\n\n return Num.float(value);\n },\n\n getDisplayValue()\n {\n\n if ( Any.isEmpty(this.modelValue) ) {\n return null;\n }\n\n let value = Num.format(this.tempValue,\n this.decimals, ' ', this.precision);\n\n return Locale.trans(this.format, { count: value });\n },\n\n nextStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue + this.stepSize;\n\n if ( this.max < value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onNextDown()\n {\n this.nextStep();\n\n this.nextTimeout = setTimeout(() => {\n this.nextInterval = setInterval(this.nextStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onNextUp,\n this._.uid);\n },\n\n onNextUp()\n {\n clearTimeout(this.nextTimeout);\n clearInterval(this.nextInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n prevStep()\n {\n if ( isNaN(this.tempValue) ) {\n this.tempValue = 0;\n }\n\n let value = this.tempValue - this.stepSize;\n\n if ( this.min > value ) {\n return;\n }\n\n value = Num.float(value).toFixed(this.precision);\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n },\n\n onPrevDown()\n {\n this.prevStep();\n\n this.prevTimeout = setTimeout(() => {\n this.prevInterval = setInterval(this.prevStep, 100);\n }, 400);\n\n Dom.find(document).on('mouseup', this.onPrevUp,\n this._.uid);\n },\n\n onPrevUp()\n {\n clearTimeout(this.prevTimeout);\n clearInterval(this.prevInterval);\n\n Dom.find(document).off('mouseup', null,\n this._.uid);\n },\n\n onKeydown(event)\n {\n if ( event.which === 13 ) {\n this.onInput(event);\n }\n },\n\n onFocus(event)\n {\n this.focus = true;\n },\n\n onBlur(event)\n {\n this.onInput(event);\n\n this.focus = false;\n },\n\n onInput(event)\n {\n let value = event.target.value;\n\n if ( value.match(/^[0-9]+((.|,)[0-9]+)?$/) ) {\n value = this.format.replace(':count', value);\n }\n\n let format = this.format.replace(':count',\n `([0-9\\\\,\\\\.\\\\-\\\\s]+)`);\n\n let regex = new RegExp(`^${format}$`);\n\n let match = value.match(regex);\n\n if ( !match ) {\n return event.target.value = this.getDisplayValue();\n }\n\n value = match[1].replace(',', '.')\n .replace(/\\s/, '');\n\n value = Num.float(value).toFixed(this.precision);\n\n if ( value < this.min ) {\n value = this.min;\n }\n\n if ( value > this.max ) {\n value = this.max;\n }\n\n this.$emit('update:modelValue',\n this.tempValue = Num.float(value));\n\n event.target.value = this.getDisplayValue();\n }\n\n },\n\n renderPrev()\n {\n let disabled = this.deepDisabled ||\n this.tempValue <= this.min;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-minus',\n square: true,\n disabled: disabled,\n onMousedown: this.onPrevDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderNext()\n {\n let disabled = this.deepDisabled ||\n this.tempValue >= this.max;\n\n let props = {\n type: 'input-number',\n size: this.size,\n icon: 'fa fa-plus',\n square: true,\n disabled: disabled,\n onMousedown: this.onNextDown,\n };\n\n return (<NButton {...props} />);\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs,\n ['class', 'style']);\n\n Obj.assign(props, {\n value: this.getDisplayValue(),\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onKeydown: this.onKeydown,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n return h('input', props);\n },\n\n renderClear()\n {\n if ( !this.clearable || Any.isEmpty(this.tempValue) ) {\n return null;\n }\n\n let props = {};\n\n if ( !this.deepDisabled ) {\n props.onMousedown = this.clear;\n }\n\n return (\n <div class=\"n-input-number__clear\" {...props}>\n <i class={nano.Icons.times}></i>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-input-number',\n 'n-input-number--' + this.type,\n 'n-input-number--' + this.size,\n ];\n\n if ( Any.isEmpty(this.modelValue) ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n {this.ctor('renderPrev')()}\n {this.ctor('renderInput')()}\n {this.ctor('renderClear')()}\n {this.ctor('renderNext')()}\n </div>\n );\n }\n\n}","import InputNumber from \"./src/input-number/input-number\";\n\nexport default function (App) {\n App.component(InputNumber.name, InputNumber);\n}","import { h } from \"vue\";\nimport {Obj, Any, UUID} from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTextarea',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n autoRows: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n maxRows: {\n default()\n {\n return 12;\n },\n type: [Number]\n },\n\n minRows: {\n default()\n {\n return 4;\n },\n type: [Number]\n },\n\n maxLength: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n eventInput(event)\n {\n this.$emit('update:modelValue', \n this.tempValue = event.target.value);\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue || ''\n };\n },\n\n renderInput()\n {\n let props = Obj.except(this.$attrs, ['class', 'style']);\n\n Obj.assign(props, {\n value: this.tempValue,\n rows: this.minRows,\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.eventInput,\n });\n\n if ( this.maxLength !== 0 ) {\n props.maxLength = this.maxLength;\n }\n\n let currentRows = (this.tempValue.match(/\\n/g) || []).length + 1;\n\n if ( this.autoRows && props.rows < currentRows ) {\n props.rows = currentRows <= this.maxRows ? currentRows : this.maxRows;\n }\n\n return h('textarea', props);\n },\n\n render()\n {\n let classList = [\n 'n-textarea',\n 'n-textarea--' + this.size,\n 'n-textarea--' + this.type,\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n let props = Obj.only(this.$attrs, ['style'], {\n class: this.cmer(classList)\n });\n\n return h('div', props, [this.ctor('renderInput')()]);\n }\n\n}\n","import Textarea from './src/textarea/textarea';\n\nexport default function (App) {\n App.component(Textarea.name, Textarea);\n}","import { Obj, Arr, Any, Num, Dom, Event } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSlider',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n range: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n steps: {\n default()\n {\n return 1;\n }\n },\n\n labels: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n min: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n data()\n {\n return {\n index: 0, width: null, tempValue: [null, null]\n };\n },\n\n computed: {\n\n selector()\n {\n return `[data-index=\"${this.index}\"]`;\n },\n\n fixmin()\n {\n return Any.isArray(this.steps) ? Arr.first(this.steps) : this.min;\n },\n\n fixmax()\n {\n return Any.isArray(this.steps) ? Arr.last(this.steps) : this.max;\n },\n\n minmax()\n {\n return this.fixmax - this.fixmin;\n },\n\n touch() {\n return !! ('ontouchstart' in window ||\n navigator.msMaxTouchPoints);\n },\n\n mousedown() {\n return this.touch ? 'touchstart' :\n 'mousedown';\n },\n\n mousemove() {\n return this.touch ? 'touchmove' :\n 'mousemove';\n },\n\n mouseup() {\n return this.touch ? 'touchend' :\n 'mouseup';\n }\n },\n\n watch: {\n\n modelValue()\n {\n this.getPseudoValue();\n }\n\n },\n\n mounted()\n {\n Dom.find(window).on('resize',\n Any.debounce(this.onResize, 500), this._.uid);\n\n this.onResize();\n this.getPseudoValue();\n },\n\n unmounted()\n {\n Dom.find(window).off('resize',\n null, this._.uid);\n },\n\n methods: {\n\n onResize()\n {\n this.width = Dom.find(this.$el).width();\n },\n\n getPseudoValue()\n {\n let value = this.modelValue;\n\n if ( Any.isNull(value) ) {\n value = this.fixmax;\n }\n if ( ! Any.isArray(value) ) {\n value = [this.fixmin, value];\n }\n\n return this.tempValue = value;\n },\n\n setModelValue()\n {\n let value = this.tempValue;\n\n if ( ! this.range ) {\n value = this.tempValue[1];\n }\n\n this.$emit('update:modelValue', value);\n },\n\n getValPos(value)\n {\n return Num.fixed(this.width / this.minmax * (value - this.fixmin), 2) + 'px';\n },\n\n getValStyle(value)\n {\n return 'transform: translateX(' + this.getValPos(value) + ');';\n },\n\n getBarPos()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[0] - this.fixmin), 2) + 'px';\n },\n\n getBarWidth()\n {\n return Num.fixed(this.width / this.minmax * (this.tempValue[1] - this.tempValue[0]), 2) + 'px';\n },\n\n getBarStyle()\n {\n return 'max-width: ' + this.getBarWidth() + '; ' +\n 'transform: translateX(' + this.getBarPos() + ');';\n },\n\n getClosestValue(width)\n {\n if ( Any.isNumber(this.steps) ) {\n return Num.round(width / this.steps) * this.steps;\n }\n\n let range = Arr.last(this.steps) -\n Arr.first(this.steps);\n\n let diff = Arr.each(this.steps, (step) => {\n return Math.abs((range / 100 * width) - step + this.fixmin);\n });\n\n let index = Arr.findIndex(diff, Math.min(...diff));\n\n return this.steps[index];\n },\n\n getTouchEvent(event)\n {\n if ( ! this.touch ) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n onMousedown(event)\n {\n if ( ! Arr.has([0, 1], event.which) ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(this.$el).find(this.selector).addClass('n-move');\n Dom.find(document.body).addClass('n-move');\n\n Dom.find(document).on(this.mouseup,\n Any.framerate(this.onMouseup, 60), this._.uid);\n\n Dom.find(document).on(this.mousemove,\n Any.framerate(this.onMousemove, 60), this._.uid);\n },\n\n onMousemove(event)\n {\n this.clientX = this.getTouchEvent(event).clientX;\n\n let offsetX = Dom.find(this.$el)\n .offset('left');\n\n let relativeWidth = (this.clientX - offsetX) / this.width * 100;\n\n let closestValue = this.getClosestValue(relativeWidth);\n\n if ( closestValue < this.fixmin ) {\n closestValue = this.fixmin;\n }\n\n if ( closestValue > this.fixmax ) {\n closestValue = this.fixmax;\n }\n\n let stepMin = this.tempValue[0] + this.steps;\n\n if ( this.index === 1 && closestValue < stepMin ) {\n closestValue = stepMin;\n }\n\n let stepMax = this.tempValue[1] - this.steps;\n\n if ( this.index === 0 && closestValue > stepMax ) {\n closestValue = stepMax;\n }\n\n this.tempValue[this.index] = closestValue;\n },\n\n onMouseup(event)\n {\n event.preventDefault();\n event.stopPropagation();\n\n Dom.find(document).off(this.mouseup, null, this._.uid);\n Dom.find(document).off(this.mousemove, null, this._.uid);\n\n Dom.find(this.$el).find(this.selector).removeClass('n-move');\n Dom.find(document.body).removeClass('n-move');\n\n this.setModelValue();\n },\n\n },\n\n renderHandle(value, index)\n {\n let handleProps = {\n 'data-value': value,\n 'data-index': index,\n style: this.getValStyle(value)\n };\n\n handleProps['onMousedown'] = (event) => {\n this.onMousedown(event, this.index = index);\n };\n\n let key = Arr.findIndex(this.steps, value);\n\n return (\n <div class=\"n-slider__handle\" {...handleProps}>\n <span>{ Obj.get(this.labels, key, value) }</span>\n </div>\n );\n },\n\n renderHandles()\n {\n let values = Arr.clone(this.tempValue);\n\n if ( ! this.range ) {\n delete values[0];\n }\n\n return Arr.each(values, (value, index) => {\n return this.ctor('renderHandle')(value, index);\n });\n },\n\n renderBar()\n {\n let barProps = {\n style: this.getBarStyle()\n };\n\n return (\n <div class=\"n-slider__bar\">\n <div class=\"n-slider__range\" {...barProps}></div>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-slider',\n 'n-slider--' + this.size\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderBar')() }\n { this.ctor('renderHandles')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Slider from './src/slider/slider';\n\nexport default function (App) {\n App.component(Slider.name, Slider);\n}","import { Obj, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NSwitch',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return false;\n }\n },\n\n onValue: {\n default()\n {\n return true;\n }\n },\n\n offValue: {\n default()\n {\n return false;\n }\n },\n\n onType: {\n default()\n {\n return 'primary';\n }\n },\n\n offType: {\n default()\n {\n return 'default';\n }\n },\n\n size: {\n default()\n {\n return 'md';\n }\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n methods: {\n\n eventClick()\n {\n let tempValue = this.onValue;\n\n if ( this.tempValue === this.onValue ) {\n tempValue = this.offValue;\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n }\n\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n }\n\n },\n\n renderSwitch()\n {\n let classList = [\n 'n-switch__switch'\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n <span></span>\n </div>\n )\n },\n\n renderLabel()\n {\n if ( ! this.$slots.default ) {\n return null;\n }\n\n let classList = [\n 'n-switch__label',\n ];\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.eventClick;\n }\n\n return (\n <div class={classList} {...props}>\n { this.$slots.default() }\n </div>\n )\n },\n\n render()\n {\n let classList = [\n 'n-switch',\n 'n-switch--' + this.size\n ];\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-switch--' + this.onType);\n }\n\n if ( this.tempValue === this.offValue) {\n classList.push('n-switch--' + this.offType);\n }\n\n if ( this.tempValue === this.onValue ) {\n classList.push('n-on');\n }\n\n if ( this.tempValue === this.offValue ) {\n classList.push('n-off');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderSwitch')() }\n { this.ctor('renderLabel')() }\n </div>\n );\n }\n\n}\n","import Vue from \"vue\";\n\nimport Switch from './src/switch/switch';\n\nexport default function (App) {\n App.component(Switch.name, Switch);\n}","import { Obj, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NConfirm',\n\n props: {\n\n visible: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n listen: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n update: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n selector: {\n default()\n {\n return null;\n },\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n width: {\n default()\n {\n return 'auto';\n },\n type: [String]\n },\n\n position: {\n default()\n {\n return 'center-center';\n },\n type: [String]\n },\n\n closable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n confirmText: {\n default()\n {\n return Locale.trans('Confirm');\n },\n type: [String]\n },\n\n abortText: {\n default()\n {\n return Locale.trans('Abort');\n },\n type: [String]\n },\n\n buttonSize: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n },\n\n watch: {\n\n visible()\n {\n if ( this.visible !== this.tempVisible ) {\n this.tempVisible = this.visible;\n }\n }\n\n },\n\n data()\n {\n return {\n tempVisible: this.visible\n };\n },\n\n methods: {\n\n abort(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('abort');\n },\n\n confirm(event)\n {\n this.$refs.modal.closeModal(true, 'self');\n this.$emit('confirm');\n },\n\n eventInput(value, source)\n {\n if ( ! value && source !== 'self' ) {\n this.$emit('abort');\n }\n\n this.$emit('update:visible', this.tempVisible = value);\n }\n\n },\n\n renderIcon()\n {\n return (\n <div class=\"n-confirm__icon\">\n <span class={nano.Icons[this.type]}></span>\n </div>\n );\n },\n\n renderBody()\n {\n return (\n <div class=\"n-confirm__body\">\n { this.$slots.default && this.$slots.default() || this.trans('Are you sure?') }\n </div>\n );\n },\n\n renderAction()\n {\n let classList = [\n 'n-confirm__action'\n ];\n\n if ( window.WIN ) {\n classList.push('n-reverse');\n }\n\n return (\n <div class={classList}>\n <NButton size={this.buttonSize} type={this.type} link={true} onClick={this.abort}>\n { this.abortText }\n </NButton>\n <NButton size={this.buttonSize} type={this.type} link={false} onClick={this.confirm}>\n { this.confirmText }\n </NButton>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-confirm',\n 'n-confirm--' + this.type,\n 'n-confirm--' + this.size\n ];\n\n let props = {\n type: 'default',\n selector: this.selector,\n listen: this.listen,\n update: this.update,\n width: this.width,\n position: this.position,\n closable: this.closable,\n modelValue: this.tempVisible,\n };\n\n // Override input listener\n props['onUpdate:modelValue'] = this.eventInput;\n\n let innerHtml = {\n raw: () => (\n <div class={classList}>\n { this.ctor('renderIcon')() }\n { this.ctor('renderBody')() }\n { this.ctor('renderAction')() }\n </div>\n )\n };\n\n return (\n <NModal ref=\"modal\" {...props}>\n { innerHtml }\n </NModal>\n );\n }\n\n}\n","import Confirm from './src/confirm/confirm';\n\nexport default function (App) {\n App.component(Confirm.name, Confirm);\n}\n","import { Obj, Now, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDatetimepicker',\n\n inject: {\n\n NFormItem: {\n default: undefined\n }\n\n },\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n minDate: {\n default()\n {\n return null;\n }\n },\n\n maxDate: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select datetime');\n },\n type: [String]\n },\n\n monthPanels: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n format: {\n default()\n {\n return 'YYYY-MM-DD HH:mm:ss';\n },\n type: [String]\n },\n\n displayFormat: {\n default()\n {\n return Locale.trans('YYYY-MM-DD HH:mm:ss');\n },\n type: [String]\n },\n\n weekdays: {\n default()\n {\n return [\n Locale.trans('Mo'),\n Locale.trans('Tu'),\n Locale.trans('We'),\n Locale.trans('Th'),\n Locale.trans('Fr'),\n Locale.trans('Sa'),\n Locale.trans('Su'),\n ];\n },\n type: [Array]\n },\n\n months: {\n default()\n {\n return [\n Locale.trans('Jan'),\n Locale.trans('Feb'),\n Locale.trans('Mar'),\n Locale.trans('Apr'),\n Locale.trans('May'),\n Locale.trans('Jun'),\n Locale.trans('Jul'),\n Locale.trans('Aug'),\n Locale.trans('Sep'),\n Locale.trans('Oct'),\n Locale.trans('Nov'),\n Locale.trans('Dec'),\n ];\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n deepDisabled() {\n return this.NFormItem ? this.NFormItem.disabled(this.disabled) :\n this.disabled;\n }\n\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue.format(this.format) ) {\n this.tempValue = Now.make(value);\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: Now.make(this.modelValue, this.format),\n };\n },\n\n methods: {\n\n clearDatetimepicker()\n {\n this.tempValue = Now.make(this.clearValue, \n this.format);\n\n this.$emit('update:modelValue', this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(event)\n {\n let isNotSameLength = this.displayFormat.length !==\n event.target.value.length;\n\n if ( isNotSameLength ) {\n return;\n }\n\n let value = Now.make(event.target.value, \n this.displayFormat);\n\n if ( ! value.moment.isValid() ) {\n return;\n }\n\n let moment = this.tempValue.moment.set({\n year: value.moment.year(),\n month: value.moment.month(),\n date: value.moment.date(),\n hour: value.moment.hour(),\n minute: value.moment.minute(),\n second: value.moment.second(),\n });\n\n this.tempValue = Now.make(moment);\n\n this.$emit('update:modelValue', \n this.tempValue.format(this.format));\n },\n\n onDatepickerInput(value)\n {\n this.tempValue = Now.make(value, \n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n onTimepickerInput(value)\n {\n this.tempValue = Now.make(value,\n this.format);\n\n this.$emit('update:modelValue', value);\n },\n\n },\n\n\n renderLabelClear()\n {\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( ! this.clearable || isEmpty ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.deepDisabled ) {\n props.onMousedown = this.clearDatetimepicker;\n }\n\n return (\n <div class=\"n-datetimepicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-datetimepicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderSingle()\n {\n let props = {\n value: '',\n disabled: this.deepDisabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n };\n\n if ( this.tempValue.valid() ) {\n props.value = this.tempValue.format(\n this.displayFormat, true);\n }\n\n return (\n <div class=\"n-datetimepicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-datetimepicker__display'\n ];\n\n if ( this.range ) {\n classList.push('n-range');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderSingle')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderPanels()\n {\n return (\n <div class=\"n-datetimepicker__body\">\n {[this.ctor('renderDatePanel')(), this.ctor('renderTimePanel')()]}\n </div>\n );\n },\n\n renderDatePanel()\n {\n let props = Obj.only(this.$props, [\n 'minDate', 'maxDate', 'size', 'type', 'format', 'monthPanels', 'disabled', 'weekdays', 'months'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onDatepickerInput;\n\n return (\n <NDatepickerPanel class=\"n-datetimepicker__date-panel\" {...props}></NDatepickerPanel>\n );\n },\n\n renderTimePanel()\n {\n let props = Obj.only(this.$props, [\n 'size', 'type', 'format', 'disabled', 'hoursInterval', 'minutesInterval', 'secondsInterval'\n ]);\n\n props = Obj.assign(props, {\n modelValue: this.tempValue.format(this.format) || null,\n });\n\n props['onUpdate:modelValue'] = this.onTimepickerInput;\n\n return (\n <NTimepickerPanel class=\"n-datetimepicker__time-panel\" {...props}></NTimepickerPanel>\n );\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: 0,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.deepDisabled\n };\n\n let slots = {\n raw: this.ctor('renderPanels')\n };\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-datetimepicker',\n 'n-datetimepicker--' + this.type,\n 'n-datetimepicker--' + this.size,\n ];\n\n let isEmpty = ! this.tempValue.initialDate;\n\n if ( isEmpty ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.deepDisabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Datetimepicker from \"./src/datetimepicker/datetimepicker\";\n\nexport default function (App) {\n App.component(Datetimepicker.name, Datetimepicker);\n}","import { Any, Obj, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NDurationpicker',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n clearValue: {\n default()\n {\n return null;\n }\n },\n\n options: {\n default()\n {\n return [\n 60 * 5,\n 60 * 10,\n 60 * 15,\n 60 * 30,\n 60 * 45,\n 60 * 60,\n 60 * 90,\n 60 * 120,\n 60 * 150,\n 60 * 60 * 3,\n 60 * 60 * 4,\n 60 * 60 * 5,\n 60 * 60 * 6,\n 60 * 60 * 12,\n 60 * 60 * 24,\n 60 * 60 * 24 * 2,\n 60 * 60 * 24 * 3,\n 60 * 60 * 24 * 4,\n 60 * 60 * 24 * 5,\n 60 * 60 * 24 * 6,\n 60 * 60 * 24 * 7,\n ];\n },\n type: [Array]\n },\n\n minDuration: {\n default()\n {\n return null;\n }\n },\n\n maxDuration: {\n default()\n {\n return null;\n }\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n placeholder: {\n default()\n {\n return Locale.trans('Select duration');\n },\n type: [String]\n },\n\n negativeText: {\n default()\n {\n return Locale.trans('Negative duration');\n },\n type: [String]\n },\n\n boundary: {\n default()\n {\n return null;\n }\n },\n\n position: {\n default()\n {\n return 'bottom-start';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n clearable: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n days: {\n default()\n {\n return Locale.trans(':count Day|:count Days');\n },\n type: [String]\n },\n\n hours: {\n default()\n {\n return Locale.trans(':count Hour|:count Hours');\n },\n type: [String]\n },\n\n minutes: {\n default()\n {\n return Locale.trans(':count Minute|:count Minutes');\n },\n type: [String]\n },\n\n seconds: {\n default()\n {\n return Locale.trans(':count Second|:count Seconds');\n },\n type: [String]\n }\n\n },\n\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n },\n\n },\n\n data()\n {\n return {\n focus: false, tempValue: this.modelValue, editValue: null\n };\n },\n\n methods: {\n\n findPattern(text, pattern)\n {\n pattern = pattern.replaceAll(':count', '([0-9\\.\\,]+)')\n .replaceAll(' ', '\\\\s*');\n\n return text.match(new RegExp(pattern, 'i'));\n },\n\n humanizeValue(value)\n {\n if ( Any.isEmpty(value) ) {\n return '';\n }\n\n if ( value < 0 ) {\n return this.negativeText;\n }\n\n let seconds = value;\n\n // Extract minutes\n let minutes = Math.floor(seconds/60);\n seconds -= minutes * 60;\n\n // Extract hours\n let hours = Math.floor(minutes/60);\n minutes -= hours * 60;\n\n\n // Extract days\n let days = Math.floor(hours/24);\n hours -= days * 24;\n\n let text = [];\n\n if ( days ) {\n text.push(Locale.choice(this.days, days));\n }\n\n if ( hours ) {\n text.push(Locale.choice(this.hours, hours));\n }\n\n if ( minutes ) {\n text.push(Locale.choice(this.minutes, minutes));\n }\n\n if ( seconds ) {\n text.push(Locale.choice(this.seconds, seconds));\n }\n\n return text.join(' ');\n },\n\n digitizeValue(text)\n {\n if ( Any.isEmpty(text) ) {\n return this.clearValue;\n }\n\n let value = 0;\n\n let dmatch = this.findPattern(text, this.days);\n\n if ( dmatch && dmatch.length === 3 ) {\n value += Any.float(dmatch[1].replace(',', '.')) * 24 * 60 * 60;\n }\n\n let hmatch = this.findPattern(text, this.hours);\n\n if ( hmatch && hmatch.length === 3 ) {\n value += Any.float(hmatch[1].replace(',', '.')) * 60 * 60;\n }\n\n let mmatch = this.findPattern(text, this.minutes);\n\n if ( mmatch && mmatch.length === 3 ) {\n value += Any.float(mmatch[1].replace(',', '.')) * 60;\n }\n\n let smatch = this.findPattern(text, this.seconds);\n\n if ( smatch && smatch.length === 3 ) {\n value += Any.float(smatch[1].replace(',', '.'));\n }\n\n return value;\n },\n\n clearDurationpicker()\n {\n this.$emit('update:modelValue', this.tempValue = this.clearValue);\n },\n\n onPopoverInput(value)\n {\n this.focus = value;\n },\n\n onValueInput(e)\n {\n let value = this.digitizeValue(e.target.value);\n\n if ( value === this.tempValue ) {\n return;\n }\n\n this.editValue = value;\n },\n\n onValueChange(e)\n {\n let value = this.editValue;\n\n // Clear edit value\n this.editValue = null;\n\n if ( ! value || value === this.tempValue ) {\n return;\n }\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n onDurationpickerInput(value)\n {\n this.focus = false;\n\n // Clear edit value\n this.editValue = null;\n\n this.$emit('update:modelValue', this.tempValue = value);\n },\n\n },\n\n renderLabelClear()\n {\n if ( ! this.clearable || ! this.tempValue ) {\n return null;\n }\n\n let props = {};\n\n if ( ! this.disabled ) {\n props.onMousedown = this.clearDurationpicker;\n }\n\n return (\n <div class=\"n-durationpicker__clear\" {...props}>\n <i class={ nano.Icons.times }></i>\n </div>\n );\n },\n\n renderLabelAngle()\n {\n return (\n <div class=\"n-durationpicker__angle\">\n <i class={ nano.Icons.angleDown }></i>\n </div>\n );\n },\n\n renderInput()\n {\n let props = {\n value: this.humanizeValue(this.tempValue),\n disabled: this.disabled,\n placeholder: this.placeholder,\n onInput: this.onValueInput,\n onBlur: this.onValueChange,\n onChange: this.onValueChange,\n };\n\n return (\n <div class=\"n-durationpicker__input\">\n <input {...props}/>\n </div>\n );\n },\n\n renderDisplay()\n {\n let classList = [\n 'n-durationpicker__display'\n ];\n\n return (\n <div class={classList}>\n { this.ctor('renderLabelClear')() }\n { this.ctor('renderInput')() }\n { this.ctor('renderLabelAngle')() }\n </div>\n );\n },\n\n renderItems()\n {\n return Arr.each(this.options, (value) => {\n\n let text = this.humanizeValue(value);\n\n let optionProps = {\n //\n };\n\n optionProps['onClick'] = () => {\n this.onDurationpickerInput(value);\n }\n\n return (<NPopoverOption {...optionProps}>{text}</NPopoverOption>)\n });\n },\n\n renderPopover()\n {\n let props = {\n trigger: 'click',\n width: -1,\n size: this.size,\n position: this.position,\n scrollClose: true,\n disabled: this.disabled\n };\n\n let slots = {};\n\n slots.raw = () => {\n\n let scrollProps = {\n relative: true, size: this.size\n }\n\n return (\n <NScrollbar ref=\"scrollbar\" class=\"n-durationpicker__body\" {...scrollProps}>\n {this.ctor('renderItems')()}\n </NScrollbar>\n )\n }\n\n return (\n <NPopover ref=\"popover\" vModel={this.focus} {...props} v-slots={slots} />\n );\n },\n\n render()\n {\n let classList = [\n 'n-durationpicker',\n 'n-durationpicker--' + this.type,\n 'n-durationpicker--' + this.size,\n ];\n\n if ( ! this.tempValue ) {\n classList.push('n-empty');\n }\n\n if ( this.clearable ) {\n classList.push('n-clearable');\n }\n\n if ( this.focus ) {\n classList.push('n-focus');\n }\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderDisplay')() }\n { this.ctor('renderPopover')() }\n </div>\n );\n }\n\n}","import Durationpicker from \"./src/durationpicker/durationpicker\";\n\nexport default function (App) {\n App.component(Durationpicker.name, Durationpicker);\n}","import { Str, Arr, Obj, Any, UUID } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NTransfer',\n\n props: {\n\n modelValue: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n options: {\n default()\n {\n return [];\n },\n type: [Array]\n },\n\n sourceLabel: {\n default()\n {\n return 'Source';\n },\n type: [String]\n },\n\n targetLabel: {\n default()\n {\n return 'Target';\n },\n type: [String]\n },\n\n labelProp: {\n default()\n {\n return 'label';\n },\n type: [String]\n },\n\n uniqueProp: {\n default()\n {\n return 'id';\n },\n type: [String]\n }\n\n },\n\n computed: {\n\n sourceChecked()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length === this.tempSource.length;\n },\n\n sourceIntermediate()\n {\n return !! this.selectedSource.length && \n this.selectedSource.length !== this.tempSource.length;\n },\n\n targetChecked()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length === this.tempTarget.length;\n },\n\n targetIntermediate()\n {\n return !! this.selectedTarget.length && \n this.selectedTarget.length !== this.tempTarget.length;\n },\n\n tempSource()\n {\n let source = Arr.filter(this.options, (item) => {\n return ! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.sourceSearch) ) {\n return Arr.clone(source);\n }\n\n let searchPattern = new RegExp(this.sourceSearch, 'i');\n\n source = Arr.filter(source, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(source);\n },\n\n tempTarget()\n {\n let target = Arr.filter(this.options, (item) => {\n return !! Arr.find(this.tempValue, { [this.uniqueProp]: item[this.uniqueProp] });\n });\n\n if ( Any.isEmpty(this.targetSearch) ) {\n return Arr.clone(target);\n }\n\n let searchPattern = new RegExp(this.targetSearch, 'i');\n\n target = Arr.filter(target, (item) => {\n return item[this.labelProp].match(searchPattern);\n });\n\n return Arr.clone(target);\n }\n\n },\n data()\n {\n return {\n uid: UUID(),\n tempValue: this.modelValue,\n sourceSearch: '',\n targetSearch: '',\n selectedSource: [],\n selectedTarget: []\n };\n },\n\n watch: {\n\n modelValue(value)\n {\n if ( value !== this.tempValue ) {\n this.tempValue = value;\n }\n }\n\n },\n\n methods: {\n\n moveItemsTarget(options)\n {\n Arr.each(options, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveItemsSource(options)\n {\n Arr.each(options, (source) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.$emit('input', this.tempValue);\n },\n\n moveRowTarget(node)\n {\n // Get node unique\n let target = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedTarget, target);\n\n this.tempValue = Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveRowSource(node)\n {\n // Get node unique\n let source = node.value[this.uniqueProp];\n\n // Remove item from selected list\n Arr.remove(this.selectedSource, source);\n\n Arr.add(this.tempValue, node.item, source, {\n [this.uniqueProp]: source\n });\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToSource()\n {\n Arr.each(this.selectedTarget, (target) => {\n\n Arr.remove(this.tempValue, {\n [this.uniqueProp]: target\n });\n\n });\n\n this.selectedTarget = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n moveToTarget()\n {\n Arr.each(this.selectedSource, (source) => {\n\n let item = Arr.find(this.options, {\n [this.uniqueProp]: source\n });\n\n Arr.add(this.tempValue, item, {\n [this.uniqueProp]: source\n });\n\n });\n\n this.selectedSource = [];\n\n this.$emit('update:modelValue', this.tempValue);\n },\n\n updateSelectedSource(selected)\n {\n this.selectedSource = selected;\n },\n\n updateSelectedTarget(selected)\n {\n this.selectedTarget = selected;\n }\n\n },\n\n renderSourceSelect()\n {\n let props = {\n modelValue: this.sourceChecked,\n size: this.size,\n type: this.type,\n intermediate: this.sourceIntermediate,\n disabled: ! this.tempSource.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.source.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderSourceTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.sourceLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempSource.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderSourceHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderSourceSelect')() }\n { this.ctor('renderSourceTitle')() }\n </div>\n );\n },\n\n renderSourceSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.sourceSearch\n };\n\n props['onIconClick'] = () => {\n this.sourceSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedSource = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.sourceSearch} {...props} />\n </div>\n )\n },\n\n renderSourceBody()\n {\n let props = {\n group: [this.uid + 'source'],\n allowGroups: [this.uid + 'target'],\n items: this.tempSource,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedSource,\n safezone: () => -10,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsSource,\n 'onRowDblclick': this.moveRowSource,\n 'onUpdate:selected': this.updateSelectedSource\n };\n\n return (\n <NDraglist ref=\"source\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderTargetSelect()\n {\n let props = {\n modelValue: this.targetChecked,\n size: this.size,\n type: this.type,\n intermediate: this.targetIntermediate,\n disabled: ! this.tempTarget.length\n };\n\n props['onUpdate:modelValue'] = () => {\n this.$refs.target.selectAll();\n };\n\n return (\n <div class=\"n-transfer__select\">\n <NCheckbox {...props} />\n </div>\n );\n },\n\n renderTargetTitle()\n {\n let labelHtml = (\n <span class=\"n-transfer__item-title\">\n { this.targetLabel }\n </span>\n );\n\n let counterHtml = (\n <span class=\"n-transfer__item-count\">\n { this.tempTarget.length }\n </span>\n );\n\n return (\n <div class=\"n-transfer__title\">\n { [labelHtml, counterHtml] }\n </div>\n );\n },\n\n renderTargetHeader()\n {\n return (\n <div class=\"n-transfer__header\">\n { this.ctor('renderTargetSelect')() }\n { this.ctor('renderTargetTitle')() }\n </div>\n );\n },\n\n renderTargetSearch()\n {\n let props = {\n placeholder: this.trans('Search item'),\n size: this.size,\n type: this.type,\n icon: nano.Icons.times,\n iconDisabled: ! this.targetSearch\n };\n\n props['onIconClick'] = () => {\n this.targetSearch = '';\n };\n\n props['onUpdate:modelValue'] = () => {\n this.selectedTarget = [];\n };\n\n return (\n <div class=\"n-transfer__search\">\n <NInput vModel={this.targetSearch} {...props} />\n </div>\n )\n },\n\n renderTargetBody()\n {\n let props = {\n group: [this.uid + 'target'],\n allowGroups: [this.uid + 'source'],\n items: this.tempTarget,\n size: this.size,\n type: this.type,\n renderSelect: true,\n selected: this.selectedTarget,\n safezone: () => -1,\n disableMove: true,\n renderNode: this.ctor('renderNode'),\n onMove: this.moveItemsTarget,\n 'onRowDblclick': this.moveRowTarget,\n 'onUpdate:selected': this.updateSelectedTarget\n };\n\n return (\n <NDraglist ref=\"target\" class=\"n-transfer__body\" {...props} />\n );\n },\n\n renderNode(props)\n {\n if ( this.$slots.default ) {\n return this.$slots.default(props);\n }\n\n return (\n <div class=\"n-transfer__item\">\n { Obj.get(props.item, this.labelProp) }\n </div>\n );\n },\n\n renderMoveSource()\n {\n let props = {\n disabled: ! this.selectedSource.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleRight,\n onClick: this.moveToTarget\n };\n\n return (\n <NButton {...props} />\n );\n },\n\n renderMoveTarget()\n {\n let props = {\n disabled: ! this.selectedTarget.length,\n size: this.size,\n type: this.type,\n square: true, \n icon: nano.Icons.angleLeft,\n onClick: this.moveToSource\n };\n return (\n <NButton {...props} />\n );\n },\n\n render($render)\n {\n let classList = [\n 'n-transfer',\n 'n-transfer--' + this.size,\n 'n-transfer--' + this.type,\n ]\n\n return (\n <div class={classList}>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderSourceHeader')() }\n { this.ctor('renderSourceSearch')() }\n { this.ctor('renderSourceBody')() }\n </div>\n <div class=\"n-transfer__controls\">\n { this.ctor('renderMoveSource')() }\n { this.ctor('renderMoveTarget')() }\n </div>\n <div class=\"n-transfer__panel\">\n { this.ctor('renderTargetHeader')() }\n { this.ctor('renderTargetSearch')() }\n { this.ctor('renderTargetBody')() }\n </div>\n </div>\n );\n }\n\n}","import Transfer from \"./src/transfer/transfer\";\n\nexport default function (App) {\n App.component(Transfer.name, Transfer);\n}","import { Str, Num, Arr, Any } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NPaginator',\n\n props: {\n\n page: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n limit: {\n default()\n {\n return 100;\n },\n type: [Number]\n },\n\n limitOptions: {\n default()\n {\n return [25, 50, 100, 500, 1000, 2500];\n },\n },\n\n total: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'primary';\n },\n type: [String]\n },\n\n maxPages: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n layout: {\n default()\n {\n return [\n 'limit', 'count', 'spacer', 'goto', 'pages'\n ]\n },\n type: [Array]\n }\n\n },\n\n computed: {\n\n pages()\n {\n return Num.ceil(this.total / this.tempLimit);\n },\n\n pageOptions()\n {\n return Arr.make(this.pages || 1);\n }\n\n },\n\n data()\n {\n return {\n tempPage: this.page, tempLimit: this.limit,\n };\n },\n\n\n\n methods: {\n\n forcePage(page)\n {\n if ( page !== this.tempPage ) {\n this.tempPage = page;\n }\n },\n\n updatePaginate()\n {\n let paginate = {\n page: this.tempPage, limit: this.tempLimit\n };\n\n this.$emit('paginate', paginate);\n },\n\n onPrevPage()\n {\n this.onPageInput(this.tempPage - 1);\n },\n\n onNextPage()\n {\n this.onPageInput(this.tempPage + 1);\n },\n\n onFirstPage()\n {\n this.onPageInput(1);\n },\n\n onLastPage()\n {\n this.onPageInput(this.pages);\n },\n\n onPageInput(value)\n {\n this.$emit('update:page', this.tempPage = value);\n\n this.updatePaginate();\n },\n\n onLimitInput(value)\n {\n if ( this.tempLimit !== value ) {\n this.$emit('update:page', this.tempPage = 1);\n }\n\n this.$emit('update:limit', this.tempLimit = value);\n\n this.updatePaginate();\n },\n\n },\n\n watch: {\n\n page(value)\n {\n if ( value !== this.tempPage ) {\n this.tempPage = value;\n }\n },\n\n limit(value)\n {\n if ( value !== this.tempLimit ) {\n this.tempLimit = value;\n }\n }\n\n },\n\n renderLimit()\n {\n let props = {\n modelValue: this.tempLimit,\n size: this.size,\n type: this.type,\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.each(this.limitOptions, (limit) => {\n return {\n value: limit, label: this.choice(':count items', limit)\n };\n });\n\n props['onUpdate:modelValue'] = this.onLimitInput;\n\n return (\n <div class=\"n-paginator__limit\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderCount()\n {\n return (\n <div class=\"n-paginator__count\">\n { this.choice('No items|Total :count item|Total :count items', this.total) }\n </div>\n );\n },\n\n renderSpacer()\n {\n return (\n <div class=\"n-paginator__spacer\">\n { /* Nothing :( */ }\n </div>\n );\n },\n\n renderGoto()\n {\n if ( this.pageOptions.length > 500 ) {\n return null;\n }\n\n let props = {\n modelValue: this.tempPage,\n size: this.size,\n type: this.type,\n undefinedText: '?',\n optionsValue: '$value.value',\n optionsLabel: '$value.label',\n };\n\n props.options = Arr.reduce(this.pageOptions, (merge, index) => {\n return Arr.push(merge, {\n value: index, label: index\n });\n }, []);\n\n props['onUpdate:modelValue'] = this.onPageInput;\n\n return (\n <div class=\"n-paginator__goto\">\n <NSelect {...props} />\n </div>\n );\n },\n\n renderPrev()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleLeft,\n onClick: this.onPrevPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderNext()\n {\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleRight,\n onClick: this.onNextPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderFirst()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleLeft,\n onClick: this.onFirstPage\n };\n\n if ( this.tempPage - 1 < 1 ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderLast()\n {\n if ( this.pages < this.maxPages ) {\n return null;\n }\n\n let props = {\n type: this.type,\n square: true,\n size: this.size,\n icon: nano.Icons.angleDoubleRight,\n onClick: this.onLastPage\n };\n\n if ( this.tempPage + 1 > this.pages ) {\n props.disabled = true;\n }\n\n return (\n <NButton {...props} />\n );\n },\n\n renderPage(index)\n {\n let page = this.tempPage;\n\n let pages = Math.abs(this.maxPages / 2);\n\n if ( page < pages ) {\n page = pages;\n }\n\n let global = Array(this.pages).length;\n\n if ( page > global - pages ) {\n page = global - pages;\n }\n\n let current = Num.int(index);\n\n if ( current < page - pages ) {\n return null;\n }\n\n if ( current > Math.max(1, page + pages) ) {\n return null;\n }\n\n let props = {\n type: this.type,\n size: this.size,\n };\n\n if ( current === this.tempPage ) {\n props.disabled = true;\n }\n\n props.onClick = () => {\n this.onPageInput(current);\n };\n\n return (\n <NButton {...props}>{ current }</NButton>\n );\n },\n\n renderPages()\n {\n let pages = Arr.each(this.pageOptions, (index) => {\n return this.ctor('renderPage')(index);\n });\n\n return (\n <div class=\"n-paginator__pages\">\n { this.ctor('renderFirst')() }\n { this.ctor('renderPrev')() }\n { ...pages }\n { this.ctor('renderNext')() }\n { this.ctor('renderLast')() }\n </div>\n );\n },\n\n renderSlot(view)\n {\n let renderFunction = this.ctor('render' + \n Str.ucfirst(view));\n\n if ( Any.isFunction(renderFunction) ) {\n return renderFunction();\n }\n\n return this.$slots[view] && this.$slots[view]();\n },\n\n render()\n {\n let className = [\n 'n-paginator',\n 'n-paginator--' + this.size,\n 'n-paginator--' + this.type\n ];\n\n return <div class={className}>\n {\n Arr.each(this.layout, (view) => {\n return this.ctor('renderSlot')(view);\n })\n }\n </div>;\n }\n}\n","import Paginator from './src/paginator/paginator';\n\nexport default function (App) {\n App.component(Paginator.name, Paginator);\n}","import { Arr, Obj, Any, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NFile',\n\n props: {\n\n modelValue: {\n default()\n {\n return null;\n }\n },\n\n multiple: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n icon: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n },\n\n placeholder: {\n default()\n {\n return '';\n },\n type: [String]\n },\n\n clearable: {\n default()\n {\n return true;\n },\n type: [Boolean]\n },\n\n clearableIcon: {\n default()\n {\n return nano.Icons.times;\n },\n type: [String]\n },\n\n buttonText: {\n default()\n {\n return Locale.trans('Select file');\n },\n type: [String]\n }\n\n },\n\n data()\n {\n return {\n tempValue: this.modelValue\n };\n },\n\n watch: {\n\n modelValue()\n {\n if ( this.modelValue !== this.tempValue ) {\n this.tempValue = this.modelValue;\n }\n },\n\n tempValue()\n {\n if ( Any.isEmpty(this.tempValue) ) {\n this.$refs.input.value = null;\n }\n }\n\n },\n\n methods: {\n\n openContext()\n {\n this.$refs.input.click();\n },\n\n updateFile()\n {\n let tempValue = [\n ...this.$refs.input.files\n ];\n\n if ( ! this.multiple ) {\n tempValue = tempValue[0];\n }\n\n this.$emit('update:modelValue', this.tempValue = tempValue);\n },\n\n clearFile()\n {\n this.$emit('update:modelValue', null);\n }\n\n },\n\n renderInput()\n {\n let props = {\n size: this.size,\n disabled: true,\n iconDisabled: false,\n };\n\n props['onIconClick'] = this.clearFile;\n\n if ( ! this.multiple ) {\n props.modelValue = Obj.get(this.tempValue, 'name');\n }\n\n if ( this.multiple ) {\n props.modelValue = Locale.choice(':count File|:count Files',\n this.tempValue.length);\n }\n\n if ( this.clearable && !Any.isEmpty(this.tempValue) ) {\n props.icon = this.clearableIcon;\n }\n\n return (\n <NInput {...props}>\n { /* Input field for text */ }\n </NInput>\n );\n },\n\n renderButton()\n {\n let props = {\n size: this.size,\n disabled: this.disabled,\n icon: this.icon,\n onClick: this.openContext\n };\n\n return (\n <NButton {...props}>{this.buttonText}</NButton>\n );\n },\n\n renderHidden()\n {\n let props = {\n 'onInput': this.updateFile\n };\n\n return (\n <div class=\"n-file__input\">\n <input ref=\"input\" type=\"file\" multiple={this.multiple} {...props}></input>\n </div>\n );\n },\n\n render()\n {\n let classList = [\n 'n-file'\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n { this.ctor('renderInput')() }\n { this.ctor('renderButton')() }\n { this.ctor('renderHidden')() }\n </div>\n )\n }\n\n}\n","import File from './src/file/file';\n\nexport default function (App) {\n App.component(File.name, File);\n}\n\n","import { Num, Arr, Locale } from \"@kizmann/pico-js\";\n\nexport default {\n\n name: 'NRating',\n\n props: {\n\n modelValue: {\n default()\n {\n return 0;\n },\n type: [Number]\n },\n\n steps: {\n default()\n {\n return 0.5;\n },\n type: [Number]\n },\n\n fixed: {\n default()\n {\n return 1;\n },\n type: [Number]\n },\n\n max: {\n default()\n {\n return 5;\n },\n type: [Number]\n },\n\n size: {\n default()\n {\n return 'md';\n },\n type: [String]\n },\n\n choice: {\n default()\n {\n return ':count';\n },\n type: [String]\n },\n\n type: {\n default()\n {\n return 'default';\n },\n type: [String]\n },\n\n disabled: {\n default()\n {\n return false;\n },\n type: [Boolean]\n }\n\n },\n\n computed: {\n\n virtualValue()\n {\n return Num.fixed(1 / this.max * this.modelValue * 5, this.fixed);\n },\n\n },\n\n renderStars()\n {\n let stars = [\n 1, 2, 3, 4, 5\n ];\n\n return Arr.each (stars, (rate) => {\n\n let className = 'is-null';\n\n if ( this.virtualValue >= rate - 0.5 ) {\n className = 'is-half';\n }\n\n if ( this.virtualValue >= rate ) {\n className = 'is-full';\n }\n\n return (\n <span class={className}></span>\n );\n });\n },\n\n renderValue()\n {\n let vars = {\n value: Num.format(this.modelValue, '.', '', this.fixed)\n };\n\n if ( this.$slots.default ) {\n return this.$slots.default(vars);\n }\n\n return Locale.choice(this.choice, this.modelValue, vars);\n },\n\n render()\n {\n let classList = [\n 'n-rating',\n 'n-rating--' + this.size,\n 'n-rating--' + this.type\n ];\n\n if ( this.disabled ) {\n classList.push('n-disabled');\n }\n\n return (\n <div class={classList}>\n <div class=\"n-rating__stars\">\n {this.ctor('renderStars')()}\n </div>\n <div class=\"n-rating__value\">\n {this.ctor('renderValue')()}\n </div>\n </div>\n );\n }\n\n}\n","import Rating from './src/rating/rating';\n\nexport default function (App) {\n App.component(Rating.name, Rating);\n}\n"],"sourceRoot":""}