bbj-screen-widget 2.4.61 → 2.4.62

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 (735) hide show
  1. package/core/package.json +2 -10
  2. package/core/src/service/baidu-map.service.ts +107 -0
  3. package/karma.conf.js +32 -0
  4. package/ng-package.json +59 -0
  5. package/package.json +4 -13
  6. package/src/lib/announcement/announcement.component.html +3 -0
  7. package/src/lib/announcement/announcement.component.less +5 -0
  8. package/src/lib/announcement/announcement.component.spec.ts +25 -0
  9. package/src/lib/announcement/announcement.component.ts +55 -0
  10. package/src/lib/announcement/announcement.module.ts +19 -0
  11. package/src/lib/audio/audio.component.html +6 -0
  12. package/src/lib/audio/audio.component.less +12 -0
  13. package/src/lib/audio/audio.component.spec.ts +25 -0
  14. package/src/lib/audio/audio.component.ts +167 -0
  15. package/src/lib/audio/audio.module.ts +15 -0
  16. package/src/lib/background/background.component.html +1 -0
  17. package/src/lib/background/background.component.less +6 -0
  18. package/src/lib/background/background.component.spec.ts +25 -0
  19. package/src/lib/background/background.component.ts +33 -0
  20. package/src/lib/background/background.module.ts +14 -0
  21. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.html +1 -0
  22. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.less +8 -0
  23. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.spec.ts +25 -0
  24. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.ts +271 -0
  25. package/src/lib/bar-chart-three-d/bar-chart-three-d.module.ts +15 -0
  26. package/src/lib/basic-bar-chart/basic-bar-chart.component.html +7 -0
  27. package/src/lib/basic-bar-chart/basic-bar-chart.component.less +5 -0
  28. package/src/lib/basic-bar-chart/basic-bar-chart.component.spec.ts +25 -0
  29. package/src/lib/basic-bar-chart/basic-bar-chart.component.ts +493 -0
  30. package/src/lib/basic-bar-chart/basic-bar-chart.module.ts +21 -0
  31. package/src/lib/basic-line-chart/basic-line-chart.component.html +7 -0
  32. package/src/lib/basic-line-chart/basic-line-chart.component.less +8 -0
  33. package/src/lib/basic-line-chart/basic-line-chart.component.spec.ts +25 -0
  34. package/src/lib/basic-line-chart/basic-line-chart.component.ts +654 -0
  35. package/src/lib/basic-line-chart/basic-line-chart.module.ts +15 -0
  36. package/src/lib/basic-pie-chart/basic-pie-chart.component.html +7 -0
  37. package/src/lib/basic-pie-chart/basic-pie-chart.component.less +8 -0
  38. package/src/lib/basic-pie-chart/basic-pie-chart.component.spec.ts +25 -0
  39. package/src/lib/basic-pie-chart/basic-pie-chart.component.ts +439 -0
  40. package/src/lib/basic-pie-chart/basic-pie-chart.module.ts +15 -0
  41. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.html +2 -0
  42. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.less +9 -0
  43. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.spec.ts +25 -0
  44. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.ts +211 -0
  45. package/src/lib/basic-planimetric-map/basic-planimetric-map.module.ts +16 -0
  46. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.css +0 -0
  47. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.html +1 -0
  48. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.spec.ts +25 -0
  49. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.ts +487 -0
  50. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.module.ts +14 -0
  51. package/src/lib/bubble-chart/bubble-chart.component.html +7 -0
  52. package/src/lib/bubble-chart/bubble-chart.component.less +8 -0
  53. package/src/lib/bubble-chart/bubble-chart.component.spec.ts +25 -0
  54. package/src/lib/bubble-chart/bubble-chart.component.ts +307 -0
  55. package/src/lib/bubble-chart/bubble-chart.module.ts +15 -0
  56. package/src/lib/bulletin-board/bulletin-board.component.html +15 -0
  57. package/src/lib/bulletin-board/bulletin-board.component.less +27 -0
  58. package/src/lib/bulletin-board/bulletin-board.component.spec.ts +25 -0
  59. package/src/lib/bulletin-board/bulletin-board.component.ts +127 -0
  60. package/src/lib/bulletin-board/bulletin-board.module.ts +20 -0
  61. package/src/lib/button/button.component.html +1 -0
  62. package/src/lib/button/button.component.less +17 -0
  63. package/src/lib/button/button.component.spec.ts +25 -0
  64. package/src/lib/button/button.component.ts +137 -0
  65. package/src/lib/button/button.module.ts +16 -0
  66. package/src/lib/calendar/background-events/background-events.component.html +0 -0
  67. package/src/lib/calendar/background-events/background-events.component.less +0 -0
  68. package/src/lib/calendar/background-events/background-events.component.spec.ts +25 -0
  69. package/src/lib/calendar/background-events/background-events.component.ts +51 -0
  70. package/src/lib/calendar/calendar-events-child.ts +27 -0
  71. package/src/lib/calendar/calendar.component.html +2 -0
  72. package/src/lib/calendar/calendar.component.less +14 -0
  73. package/src/lib/calendar/calendar.component.spec.ts +25 -0
  74. package/src/lib/calendar/calendar.component.ts +151 -0
  75. package/src/lib/calendar/calendar.module.ts +27 -0
  76. package/src/lib/calendar/calendar.util.ts +14 -0
  77. package/src/lib/calendar/events/events.component.html +0 -0
  78. package/src/lib/calendar/events/events.component.less +0 -0
  79. package/src/lib/calendar/events/events.component.spec.ts +25 -0
  80. package/src/lib/calendar/events/events.component.ts +61 -0
  81. package/src/lib/checkbox/checkbox.component.html +61 -0
  82. package/src/lib/checkbox/checkbox.component.less +104 -0
  83. package/src/lib/checkbox/checkbox.component.spec.ts +25 -0
  84. package/src/lib/checkbox/checkbox.component.ts +292 -0
  85. package/src/lib/checkbox/checkbox.module.ts +16 -0
  86. package/src/lib/cross-table/cross-table.component.html +16 -0
  87. package/src/lib/cross-table/cross-table.component.less +75 -0
  88. package/src/lib/cross-table/cross-table.component.spec.ts +25 -0
  89. package/src/lib/cross-table/cross-table.component.ts +257 -0
  90. package/src/lib/cross-table/cross-table.module.ts +18 -0
  91. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.html +32 -0
  92. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.less +11 -0
  93. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.spec.ts +25 -0
  94. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.ts +689 -0
  95. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.html +0 -0
  96. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.less +0 -0
  97. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.spec.ts +25 -0
  98. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.ts +248 -0
  99. package/src/lib/custom-baidu-map/base-layer.ts +50 -0
  100. package/src/lib/custom-baidu-map/custom-baidu-map.component.html +15 -0
  101. package/src/lib/custom-baidu-map/custom-baidu-map.component.less +69 -0
  102. package/src/lib/custom-baidu-map/custom-baidu-map.component.spec.ts +25 -0
  103. package/src/lib/custom-baidu-map/custom-baidu-map.component.ts +652 -0
  104. package/src/lib/custom-baidu-map/custom-baidu-map.module.ts +41 -0
  105. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.html +0 -0
  106. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.less +0 -0
  107. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.spec.ts +25 -0
  108. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.ts +99 -0
  109. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.html +0 -0
  110. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.less +0 -0
  111. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.spec.ts +25 -0
  112. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.ts +404 -0
  113. package/src/lib/data-map/data-map.component.html +9 -0
  114. package/src/lib/data-map/data-map.component.less +0 -0
  115. package/src/lib/data-map/data-map.component.spec.ts +25 -0
  116. package/src/lib/data-map/data-map.component.ts +105 -0
  117. package/src/lib/data-map/data-map.module.ts +15 -0
  118. package/src/lib/date-picker/date-picker.component.html +32 -0
  119. package/src/lib/date-picker/date-picker.component.less +20 -0
  120. package/src/lib/date-picker/date-picker.component.spec.ts +25 -0
  121. package/src/lib/date-picker/date-picker.component.ts +389 -0
  122. package/src/lib/date-picker/date-picker.module.ts +18 -0
  123. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.html +25 -0
  124. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.less +35 -0
  125. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.spec.ts +25 -0
  126. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.ts +117 -0
  127. package/src/lib/drop-down-detail-list/drop-down-detail-list.module.ts +15 -0
  128. package/src/lib/dynamic-list/dynamic-list.component.html +15 -0
  129. package/src/lib/dynamic-list/dynamic-list.component.less +31 -0
  130. package/src/lib/dynamic-list/dynamic-list.component.spec.ts +25 -0
  131. package/src/lib/dynamic-list/dynamic-list.component.ts +57 -0
  132. package/src/lib/dynamic-list/dynamic-list.module.ts +15 -0
  133. package/src/lib/funnel-chart/funnel-chart.component.html +7 -0
  134. package/src/lib/funnel-chart/funnel-chart.component.less +8 -0
  135. package/src/lib/funnel-chart/funnel-chart.component.spec.ts +25 -0
  136. package/src/lib/funnel-chart/funnel-chart.component.ts +198 -0
  137. package/src/lib/funnel-chart/funnel-chart.module.ts +15 -0
  138. package/src/lib/gantt/gantt.component.html +10 -0
  139. package/src/lib/gantt/gantt.component.less +76 -0
  140. package/src/lib/gantt/gantt.component.spec.ts +25 -0
  141. package/src/lib/gantt/gantt.component.ts +213 -0
  142. package/src/lib/gantt/gantt.module.ts +37 -0
  143. package/src/lib/gauge/gauge.component.html +1 -0
  144. package/src/lib/gauge/gauge.component.less +8 -0
  145. package/src/lib/gauge/gauge.component.spec.ts +25 -0
  146. package/src/lib/gauge/gauge.component.ts +268 -0
  147. package/src/lib/gauge/gauge.module.ts +15 -0
  148. package/src/lib/gauge-progress/gauge-progress.component.html +29 -0
  149. package/src/lib/gauge-progress/gauge-progress.component.less +51 -0
  150. package/src/lib/gauge-progress/gauge-progress.component.ts +293 -0
  151. package/src/lib/gauge-progress/gauge.module.ts +17 -0
  152. package/src/lib/general-text/general-text.component.html +7 -0
  153. package/src/lib/general-text/general-text.component.less +8 -0
  154. package/src/lib/general-text/general-text.component.spec.ts +25 -0
  155. package/src/lib/general-text/general-text.component.ts +114 -0
  156. package/src/lib/general-text/general-text.module.ts +15 -0
  157. package/src/lib/iconfont/icon.ts +198 -0
  158. package/src/lib/iconfont/iconfont.component.html +4 -0
  159. package/src/lib/iconfont/iconfont.component.less +5 -0
  160. package/src/lib/iconfont/iconfont.component.spec.ts +25 -0
  161. package/src/lib/iconfont/iconfont.component.ts +42 -0
  162. package/src/lib/iconfont/iconfont.module.ts +15 -0
  163. package/src/lib/iframe/iframe.component.html +1 -0
  164. package/src/lib/iframe/iframe.component.less +13 -0
  165. package/src/lib/iframe/iframe.component.spec.ts +25 -0
  166. package/src/lib/iframe/iframe.component.ts +34 -0
  167. package/src/lib/iframe/iframe.module.ts +15 -0
  168. package/src/lib/image/image.component.html +2 -0
  169. package/src/lib/image/image.component.less +13 -0
  170. package/src/lib/image/image.component.spec.ts +25 -0
  171. package/src/lib/image/image.component.ts +79 -0
  172. package/src/lib/image/image.module.ts +14 -0
  173. package/src/lib/item-swiper/item-swiper.component.html +48 -0
  174. package/src/lib/item-swiper/item-swiper.component.less +75 -0
  175. package/src/lib/item-swiper/item-swiper.component.spec.ts +25 -0
  176. package/src/lib/item-swiper/item-swiper.component.ts +277 -0
  177. package/src/lib/item-swiper/item-swiper.module.ts +17 -0
  178. package/src/lib/line-bar-chart/line-bar-chart.component.html +7 -0
  179. package/src/lib/line-bar-chart/line-bar-chart.component.less +3 -0
  180. package/src/lib/line-bar-chart/line-bar-chart.component.spec.ts +25 -0
  181. package/src/lib/line-bar-chart/line-bar-chart.component.ts +346 -0
  182. package/src/lib/line-bar-chart/line-bar-chart.module.ts +15 -0
  183. package/src/lib/line-light-flow/line-light-flow.component.css +0 -0
  184. package/src/lib/line-light-flow/line-light-flow.component.html +3 -0
  185. package/src/lib/line-light-flow/line-light-flow.component.spec.ts +25 -0
  186. package/src/lib/line-light-flow/line-light-flow.component.ts +274 -0
  187. package/src/lib/line-light-flow/line-light-flow.module.ts +21 -0
  188. package/src/lib/liquid-fill/liquid-fill.component.html +1 -0
  189. package/src/lib/liquid-fill/liquid-fill.component.less +8 -0
  190. package/src/lib/liquid-fill/liquid-fill.component.spec.ts +25 -0
  191. package/src/lib/liquid-fill/liquid-fill.component.ts +127 -0
  192. package/src/lib/liquid-fill/liquid-fill.module.ts +15 -0
  193. package/src/lib/marquee/marquee.component.html +5 -0
  194. package/src/lib/marquee/marquee.component.less +9 -0
  195. package/src/lib/marquee/marquee.component.spec.ts +25 -0
  196. package/src/lib/marquee/marquee.component.ts +84 -0
  197. package/src/lib/marquee/marquee.module.ts +14 -0
  198. package/src/lib/mip-anim/mip-anim.component.html +1 -0
  199. package/src/lib/mip-anim/mip-anim.component.less +7 -0
  200. package/src/lib/mip-anim/mip-anim.component.spec.ts +25 -0
  201. package/src/lib/mip-anim/mip-anim.component.ts +18 -0
  202. package/src/lib/mip-anim/mip-anim.module.ts +14 -0
  203. package/src/lib/multi-title-gauge/multi-title-gauge.component.html +1 -0
  204. package/src/lib/multi-title-gauge/multi-title-gauge.component.less +9 -0
  205. package/src/lib/multi-title-gauge/multi-title-gauge.component.spec.ts +25 -0
  206. package/src/lib/multi-title-gauge/multi-title-gauge.component.ts +231 -0
  207. package/src/lib/multi-title-gauge/multi-title-gauge.module.ts +19 -0
  208. package/src/lib/number-flop/number-flop.component.html +31 -0
  209. package/src/lib/number-flop/number-flop.component.less +155 -0
  210. package/src/lib/number-flop/number-flop.component.spec.ts +25 -0
  211. package/src/lib/number-flop/number-flop.component.ts +96 -0
  212. package/src/lib/number-flop/number-flop.module.ts +14 -0
  213. package/src/lib/parent-container/parent-container.component.html +0 -0
  214. package/src/lib/parent-container/parent-container.component.less +0 -0
  215. package/src/lib/parent-container/parent-container.component.spec.ts +25 -0
  216. package/src/lib/parent-container/parent-container.component.ts +21 -0
  217. package/src/lib/parent-container/parent-container.module.ts +14 -0
  218. package/src/lib/percent-pie-chart/percent-pie-chart.component.html +8 -0
  219. package/src/lib/percent-pie-chart/percent-pie-chart.component.less +8 -0
  220. package/src/lib/percent-pie-chart/percent-pie-chart.component.spec.ts +25 -0
  221. package/src/lib/percent-pie-chart/percent-pie-chart.component.ts +213 -0
  222. package/src/lib/percent-pie-chart/percent-pie-chart.module.ts +15 -0
  223. package/src/lib/pie3d-chart/pie3d-chart.component.html +1 -0
  224. package/src/lib/pie3d-chart/pie3d-chart.component.less +9 -0
  225. package/src/lib/pie3d-chart/pie3d-chart.component.spec.ts +25 -0
  226. package/src/lib/pie3d-chart/pie3d-chart.component.ts +278 -0
  227. package/src/lib/pie3d-chart/pie3d-chart.module.ts +16 -0
  228. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.html +0 -0
  229. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.less +0 -0
  230. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.spec.ts +25 -0
  231. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.ts +411 -0
  232. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.ts +13 -0
  233. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.html +1 -0
  234. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.less +0 -0
  235. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.spec.ts +25 -0
  236. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.ts +235 -0
  237. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.ts +16 -0
  238. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.html +0 -0
  239. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.less +0 -0
  240. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.spec.ts +25 -0
  241. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.ts +107 -0
  242. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.ts +17 -0
  243. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.html +0 -0
  244. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.less +0 -0
  245. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.spec.ts +25 -0
  246. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.ts +337 -0
  247. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.ts +18 -0
  248. package/src/lib/planimetric-map2d/planimetric-map2d.component.html +11 -0
  249. package/src/lib/planimetric-map2d/planimetric-map2d.component.less +9 -0
  250. package/src/lib/planimetric-map2d/planimetric-map2d.component.spec.ts +25 -0
  251. package/src/lib/planimetric-map2d/planimetric-map2d.component.ts +690 -0
  252. package/src/lib/planimetric-map2d/planimetric-map2d.module.ts +29 -0
  253. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.html +0 -0
  254. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.less +0 -0
  255. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.spec.ts +25 -0
  256. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.ts +123 -0
  257. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.ts +14 -0
  258. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.html +0 -0
  259. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.less +0 -0
  260. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.spec.ts +25 -0
  261. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.ts +229 -0
  262. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.ts +14 -0
  263. package/src/lib/planimetric-map3d/planimetric-map3d.component.html +2 -0
  264. package/src/lib/planimetric-map3d/planimetric-map3d.component.less +10 -0
  265. package/src/lib/planimetric-map3d/planimetric-map3d.component.spec.ts +25 -0
  266. package/src/lib/planimetric-map3d/planimetric-map3d.component.ts +227 -0
  267. package/src/lib/planimetric-map3d/planimetric-map3d.module.ts +17 -0
  268. package/src/lib/radar-chart/radar-chart.component.html +7 -0
  269. package/src/lib/radar-chart/radar-chart.component.less +8 -0
  270. package/src/lib/radar-chart/radar-chart.component.spec.ts +25 -0
  271. package/src/lib/radar-chart/radar-chart.component.ts +219 -0
  272. package/src/lib/radar-chart/radar-chart.module.ts +15 -0
  273. package/src/lib/radio/radio.component.html +18 -0
  274. package/src/lib/radio/radio.component.less +61 -0
  275. package/src/lib/radio/radio.component.spec.ts +25 -0
  276. package/src/lib/radio/radio.component.ts +116 -0
  277. package/src/lib/radio/radio.module.ts +16 -0
  278. package/src/lib/rate/rate.component.html +16 -0
  279. package/src/lib/rate/rate.component.less +39 -0
  280. package/src/lib/rate/rate.component.spec.ts +25 -0
  281. package/src/lib/rate/rate.component.ts +40 -0
  282. package/src/lib/rate/rate.module.ts +18 -0
  283. package/src/lib/scatter3d/scatter3d.component.html +1 -0
  284. package/src/lib/scatter3d/scatter3d.component.less +8 -0
  285. package/src/lib/scatter3d/scatter3d.component.spec.ts +25 -0
  286. package/src/lib/scatter3d/scatter3d.component.ts +129 -0
  287. package/src/lib/scatter3d/scatter3d.module.ts +15 -0
  288. package/src/lib/screen-widget.module.ts +592 -0
  289. package/src/lib/search/search.component.html +30 -0
  290. package/src/lib/search/search.component.less +30 -0
  291. package/src/lib/search/search.component.spec.ts +25 -0
  292. package/src/lib/search/search.component.ts +103 -0
  293. package/src/lib/search/search.module.ts +22 -0
  294. package/src/lib/select/select.component.html +30 -0
  295. package/src/lib/select/select.component.less +117 -0
  296. package/src/lib/select/select.component.spec.ts +25 -0
  297. package/src/lib/select/select.component.ts +297 -0
  298. package/src/lib/select/select.module.ts +18 -0
  299. package/src/lib/shape/shape.component.html +39 -0
  300. package/src/lib/shape/shape.component.less +8 -0
  301. package/src/lib/shape/shape.component.spec.ts +25 -0
  302. package/src/lib/shape/shape.component.ts +207 -0
  303. package/src/lib/shape/shape.module.ts +14 -0
  304. package/src/lib/shared/component/video-player/video-player.component.html +2 -0
  305. package/src/lib/shared/component/video-player/video-player.component.less +15 -0
  306. package/src/lib/shared/component/video-player/video-player.component.spec.ts +25 -0
  307. package/src/lib/shared/component/video-player/video-player.component.ts +132 -0
  308. package/src/lib/shared/component/video-player/video-player.module.ts +11 -0
  309. package/src/lib/shared/model/scale.token.ts +8 -0
  310. package/src/lib/shared/service/common.service.ts +28 -0
  311. package/src/lib/shared/service/file-url.service.ts +8 -0
  312. package/src/lib/shared/service/gaode-map.service.ts +37 -0
  313. package/src/lib/shared/service/highcharts.service.ts +29 -0
  314. package/src/lib/shared/service/http.service.ts +15 -0
  315. package/src/lib/shared/util/base.util.ts +4 -0
  316. package/src/lib/shared/util/echarts.util.ts +11 -0
  317. package/src/lib/shared/util/style.util.ts +12 -0
  318. package/src/lib/shuffling-list/color.pipe.ts +21 -0
  319. package/src/lib/shuffling-list/shuffling-list.component.html +37 -0
  320. package/src/lib/shuffling-list/shuffling-list.component.less +55 -0
  321. package/src/lib/shuffling-list/shuffling-list.component.spec.ts +25 -0
  322. package/src/lib/shuffling-list/shuffling-list.component.ts +534 -0
  323. package/src/lib/shuffling-list/shuffling-list.module.ts +17 -0
  324. package/src/lib/table/table.component.html +123 -0
  325. package/src/lib/table/table.component.less +76 -0
  326. package/src/lib/table/table.component.spec.ts +25 -0
  327. package/src/lib/table/table.component.ts +608 -0
  328. package/src/lib/table/table.module.ts +33 -0
  329. package/src/lib/tabs/tab/tab.component.html +1 -0
  330. package/src/lib/tabs/tab/tab.component.less +5 -0
  331. package/src/lib/tabs/tab/tab.component.spec.ts +25 -0
  332. package/src/lib/tabs/tab/tab.component.ts +18 -0
  333. package/src/lib/tabs/tabs.component.html +13 -0
  334. package/src/lib/tabs/tabs.component.less +40 -0
  335. package/src/lib/tabs/tabs.component.spec.ts +25 -0
  336. package/src/lib/tabs/tabs.component.ts +68 -0
  337. package/src/lib/tabs/tabs.module.ts +17 -0
  338. package/src/lib/temporary-data/temporary-data.component.html +1 -0
  339. package/src/lib/temporary-data/temporary-data.component.less +4 -0
  340. package/src/lib/temporary-data/temporary-data.component.spec.ts +25 -0
  341. package/src/lib/temporary-data/temporary-data.component.ts +46 -0
  342. package/src/lib/temporary-data/temporary-data.module.ts +15 -0
  343. package/src/lib/text/text.component.css +0 -0
  344. package/src/lib/text/text.component.html +3 -0
  345. package/src/lib/text/text.component.spec.ts +25 -0
  346. package/src/lib/text/text.component.ts +22 -0
  347. package/src/lib/text/text.module.ts +14 -0
  348. package/src/lib/time-picker/time-picker.component.html +1 -0
  349. package/src/lib/time-picker/time-picker.component.less +14 -0
  350. package/src/lib/time-picker/time-picker.component.spec.ts +25 -0
  351. package/src/lib/time-picker/time-picker.component.ts +86 -0
  352. package/src/lib/time-picker/time-picker.module.ts +19 -0
  353. package/src/lib/timer/timer.component.html +7 -0
  354. package/src/lib/timer/timer.component.less +24 -0
  355. package/src/lib/timer/timer.component.spec.ts +25 -0
  356. package/src/lib/timer/timer.component.ts +74 -0
  357. package/src/lib/timer/timer.module.ts +15 -0
  358. package/src/lib/tree-control/tree-control.component.html +97 -0
  359. package/src/lib/tree-control/tree-control.component.less +111 -0
  360. package/src/lib/tree-control/tree-control.component.spec.ts +25 -0
  361. package/src/lib/tree-control/tree-control.component.ts +363 -0
  362. package/src/lib/tree-control/tree-control.module.ts +18 -0
  363. package/src/lib/tree-ring-chart/tree-ring-chart.component.html +7 -0
  364. package/src/lib/tree-ring-chart/tree-ring-chart.component.less +8 -0
  365. package/src/lib/tree-ring-chart/tree-ring-chart.component.spec.ts +25 -0
  366. package/src/lib/tree-ring-chart/tree-ring-chart.component.ts +192 -0
  367. package/src/lib/tree-ring-chart/tree-ring-chart.module.ts +15 -0
  368. package/src/lib/upload/upload.component.html +32 -0
  369. package/src/lib/upload/upload.component.less +14 -0
  370. package/src/lib/upload/upload.component.spec.ts +25 -0
  371. package/src/lib/upload/upload.component.ts +109 -0
  372. package/src/lib/upload/upload.module.ts +19 -0
  373. package/src/lib/video-grid/video-grid.component.html +33 -0
  374. package/src/lib/video-grid/video-grid.component.less +68 -0
  375. package/src/lib/video-grid/video-grid.component.spec.ts +25 -0
  376. package/src/lib/video-grid/video-grid.component.ts +115 -0
  377. package/src/lib/video-grid/video-grid.module.ts +17 -0
  378. package/src/lib/visual-map-chart/visual-map-chart.component.html +8 -0
  379. package/src/lib/visual-map-chart/visual-map-chart.component.less +21 -0
  380. package/src/lib/visual-map-chart/visual-map-chart.component.spec.ts +25 -0
  381. package/src/lib/visual-map-chart/visual-map-chart.component.ts +365 -0
  382. package/src/lib/visual-map-chart/visual-map-chart.module.ts +18 -0
  383. package/src/lib/vote/vote.component.html +6 -0
  384. package/src/lib/vote/vote.component.less +41 -0
  385. package/src/lib/vote/vote.component.spec.ts +25 -0
  386. package/src/lib/vote/vote.component.ts +71 -0
  387. package/src/lib/vote/vote.module.ts +16 -0
  388. package/src/lib/weather/weather.component.html +27 -0
  389. package/src/lib/weather/weather.component.less +67 -0
  390. package/src/lib/weather/weather.component.spec.ts +25 -0
  391. package/src/lib/weather/weather.component.ts +78 -0
  392. package/src/lib/weather/weather.module.ts +16 -0
  393. package/src/lib/wordart/wordart.component.html +2 -0
  394. package/src/lib/wordart/wordart.component.less +12 -0
  395. package/src/lib/wordart/wordart.component.spec.ts +25 -0
  396. package/src/lib/wordart/wordart.component.ts +56 -0
  397. package/src/lib/wordart/wordart.module.ts +14 -0
  398. package/src/lib/workbench-widget.module.ts +675 -0
  399. package/{public-api.d.ts → src/public-api.ts} +46 -35
  400. package/src/test.ts +22 -0
  401. package/tsconfig.lib.json +37 -0
  402. package/tsconfig.lib.prod.json +9 -0
  403. package/tsconfig.spec.json +17 -0
  404. package/tslint.json +17 -0
  405. package/bbj-screen-widget.d.ts +0 -119
  406. package/bbj-screen-widget.metadata.json +0 -1
  407. package/bundles/bbj-screen-widget-core.umd.js +0 -606
  408. package/bundles/bbj-screen-widget-core.umd.js.map +0 -1
  409. package/bundles/bbj-screen-widget-core.umd.min.js +0 -2
  410. package/bundles/bbj-screen-widget-core.umd.min.js.map +0 -1
  411. package/bundles/bbj-screen-widget.umd.js +0 -21735
  412. package/bundles/bbj-screen-widget.umd.js.map +0 -1
  413. package/bundles/bbj-screen-widget.umd.min.js +0 -2
  414. package/bundles/bbj-screen-widget.umd.min.js.map +0 -1
  415. package/core/bbj-screen-widget-core.d.ts +0 -4
  416. package/core/bbj-screen-widget-core.metadata.json +0 -1
  417. package/core/service/baidu-map.service.d.ts +0 -16
  418. package/esm2015/bbj-screen-widget.js +0 -120
  419. package/esm2015/core/bbj-screen-widget-core.js +0 -5
  420. package/esm2015/core/public_api.js +0 -2
  421. package/esm2015/core/service/baidu-map.service.js +0 -101
  422. package/esm2015/lib/announcement/announcement.component.js +0 -80
  423. package/esm2015/lib/announcement/announcement.module.js +0 -25
  424. package/esm2015/lib/audio/audio.component.js +0 -167
  425. package/esm2015/lib/audio/audio.module.js +0 -20
  426. package/esm2015/lib/background/background.component.js +0 -52
  427. package/esm2015/lib/background/background.module.js +0 -19
  428. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.component.js +0 -323
  429. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.module.js +0 -20
  430. package/esm2015/lib/basic-bar-chart/basic-bar-chart.component.js +0 -604
  431. package/esm2015/lib/basic-bar-chart/basic-bar-chart.module.js +0 -27
  432. package/esm2015/lib/basic-line-chart/basic-line-chart.component.js +0 -782
  433. package/esm2015/lib/basic-line-chart/basic-line-chart.module.js +0 -20
  434. package/esm2015/lib/basic-pie-chart/basic-pie-chart.component.js +0 -471
  435. package/esm2015/lib/basic-pie-chart/basic-pie-chart.module.js +0 -20
  436. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.component.js +0 -233
  437. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.module.js +0 -21
  438. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.component.js +0 -503
  439. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.module.js +0 -19
  440. package/esm2015/lib/bubble-chart/bubble-chart.component.js +0 -348
  441. package/esm2015/lib/bubble-chart/bubble-chart.module.js +0 -20
  442. package/esm2015/lib/bulletin-board/bulletin-board.component.js +0 -160
  443. package/esm2015/lib/bulletin-board/bulletin-board.module.js +0 -23
  444. package/esm2015/lib/button/button.component.js +0 -186
  445. package/esm2015/lib/button/button.module.js +0 -21
  446. package/esm2015/lib/calendar/background-events/background-events.component.js +0 -65
  447. package/esm2015/lib/calendar/calendar-events-child.js +0 -28
  448. package/esm2015/lib/calendar/calendar.component.js +0 -168
  449. package/esm2015/lib/calendar/calendar.module.js +0 -32
  450. package/esm2015/lib/calendar/calendar.util.js +0 -12
  451. package/esm2015/lib/calendar/events/events.component.js +0 -75
  452. package/esm2015/lib/checkbox/checkbox.component.js +0 -333
  453. package/esm2015/lib/checkbox/checkbox.module.js +0 -21
  454. package/esm2015/lib/cross-table/cross-table.component.js +0 -291
  455. package/esm2015/lib/cross-table/cross-table.module.js +0 -20
  456. package/esm2015/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.js +0 -747
  457. package/esm2015/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.js +0 -278
  458. package/esm2015/lib/custom-baidu-map/base-layer.js +0 -53
  459. package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +0 -675
  460. package/esm2015/lib/custom-baidu-map/custom-baidu-map.module.js +0 -46
  461. package/esm2015/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.js +0 -116
  462. package/esm2015/lib/custom-baidu-map/wind-layer/wind-layer.component.js +0 -331
  463. package/esm2015/lib/date-picker/date-picker.component.js +0 -447
  464. package/esm2015/lib/date-picker/date-picker.module.js +0 -22
  465. package/esm2015/lib/funnel-chart/funnel-chart.component.js +0 -241
  466. package/esm2015/lib/funnel-chart/funnel-chart.module.js +0 -20
  467. package/esm2015/lib/gantt/gantt.component.js +0 -222
  468. package/esm2015/lib/gantt/gantt.module.js +0 -39
  469. package/esm2015/lib/gauge/gauge.component.js +0 -324
  470. package/esm2015/lib/gauge/gauge.module.js +0 -20
  471. package/esm2015/lib/gauge-progress/gauge-progress.component.js +0 -356
  472. package/esm2015/lib/gauge-progress/gauge.module.js +0 -22
  473. package/esm2015/lib/general-text/general-text.component.js +0 -144
  474. package/esm2015/lib/general-text/general-text.module.js +0 -20
  475. package/esm2015/lib/iconfont/icon.js +0 -199
  476. package/esm2015/lib/iconfont/iconfont.component.js +0 -56
  477. package/esm2015/lib/iconfont/iconfont.module.js +0 -20
  478. package/esm2015/lib/iframe/iframe.component.js +0 -46
  479. package/esm2015/lib/iframe/iframe.module.js +0 -20
  480. package/esm2015/lib/image/image.component.js +0 -98
  481. package/esm2015/lib/image/image.module.js +0 -19
  482. package/esm2015/lib/item-swiper/item-swiper.component.js +0 -343
  483. package/esm2015/lib/item-swiper/item-swiper.module.js +0 -22
  484. package/esm2015/lib/line-bar-chart/line-bar-chart.component.js +0 -398
  485. package/esm2015/lib/line-bar-chart/line-bar-chart.module.js +0 -20
  486. package/esm2015/lib/line-light-flow/line-light-flow.component.js +0 -241
  487. package/esm2015/lib/line-light-flow/line-light-flow.module.js +0 -24
  488. package/esm2015/lib/liquid-fill/liquid-fill.component.js +0 -158
  489. package/esm2015/lib/liquid-fill/liquid-fill.module.js +0 -20
  490. package/esm2015/lib/marquee/marquee.component.js +0 -110
  491. package/esm2015/lib/marquee/marquee.module.js +0 -19
  492. package/esm2015/lib/mip-anim/mip-anim.component.js +0 -26
  493. package/esm2015/lib/mip-anim/mip-anim.module.js +0 -19
  494. package/esm2015/lib/multi-title-gauge/multi-title-gauge.component.js +0 -277
  495. package/esm2015/lib/multi-title-gauge/multi-title-gauge.module.js +0 -22
  496. package/esm2015/lib/number-flop/number-flop.component.js +0 -124
  497. package/esm2015/lib/number-flop/number-flop.module.js +0 -19
  498. package/esm2015/lib/parent-container/parent-container.component.js +0 -21
  499. package/esm2015/lib/parent-container/parent-container.module.js +0 -19
  500. package/esm2015/lib/percent-pie-chart/percent-pie-chart.component.js +0 -248
  501. package/esm2015/lib/percent-pie-chart/percent-pie-chart.module.js +0 -20
  502. package/esm2015/lib/pie3d-chart/pie3d-chart.component.js +0 -303
  503. package/esm2015/lib/pie3d-chart/pie3d-chart.module.js +0 -19
  504. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.js +0 -431
  505. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.js +0 -19
  506. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.js +0 -252
  507. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.js +0 -19
  508. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.js +0 -124
  509. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.js +0 -19
  510. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.js +0 -359
  511. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.js +0 -21
  512. package/esm2015/lib/planimetric-map2d/planimetric-map2d.component.js +0 -753
  513. package/esm2015/lib/planimetric-map2d/planimetric-map2d.module.js +0 -34
  514. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.js +0 -128
  515. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.js +0 -19
  516. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.js +0 -242
  517. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.js +0 -19
  518. package/esm2015/lib/planimetric-map3d/planimetric-map3d.component.js +0 -265
  519. package/esm2015/lib/planimetric-map3d/planimetric-map3d.module.js +0 -22
  520. package/esm2015/lib/radar-chart/radar-chart.component.js +0 -255
  521. package/esm2015/lib/radar-chart/radar-chart.module.js +0 -20
  522. package/esm2015/lib/radio/radio.component.js +0 -148
  523. package/esm2015/lib/radio/radio.module.js +0 -21
  524. package/esm2015/lib/rate/rate.component.js +0 -57
  525. package/esm2015/lib/rate/rate.module.js +0 -23
  526. package/esm2015/lib/scatter3d/scatter3d.component.js +0 -166
  527. package/esm2015/lib/scatter3d/scatter3d.module.js +0 -20
  528. package/esm2015/lib/screen-widget.module.js +0 -536
  529. package/esm2015/lib/search/search.component.js +0 -130
  530. package/esm2015/lib/search/search.module.js +0 -29
  531. package/esm2015/lib/select/select.component.js +0 -359
  532. package/esm2015/lib/select/select.module.js +0 -22
  533. package/esm2015/lib/shape/shape.component.js +0 -248
  534. package/esm2015/lib/shape/shape.module.js +0 -19
  535. package/esm2015/lib/shared/component/video-player/video-player.component.js +0 -114
  536. package/esm2015/lib/shared/component/video-player/video-player.module.js +0 -14
  537. package/esm2015/lib/shared/service/common.service.js +0 -39
  538. package/esm2015/lib/shared/service/file-url.service.js +0 -12
  539. package/esm2015/lib/shared/service/gaode-map.service.js +0 -36
  540. package/esm2015/lib/shared/service/highcharts.service.js +0 -36
  541. package/esm2015/lib/shared/service/http.service.js +0 -20
  542. package/esm2015/lib/shared/util/base.util.js +0 -5
  543. package/esm2015/lib/shared/util/echarts.util.js +0 -12
  544. package/esm2015/lib/shared/util/style.util.js +0 -19
  545. package/esm2015/lib/shuffling-list/color.pipe.js +0 -23
  546. package/esm2015/lib/shuffling-list/shuffling-list.component.js +0 -601
  547. package/esm2015/lib/shuffling-list/shuffling-list.module.js +0 -22
  548. package/esm2015/lib/table/table.component.js +0 -657
  549. package/esm2015/lib/table/table.module.js +0 -38
  550. package/esm2015/lib/tabs/tab/tab.component.js +0 -27
  551. package/esm2015/lib/tabs/tabs.component.js +0 -85
  552. package/esm2015/lib/tabs/tabs.module.js +0 -22
  553. package/esm2015/lib/temporary-data/temporary-data.component.js +0 -49
  554. package/esm2015/lib/temporary-data/temporary-data.module.js +0 -20
  555. package/esm2015/lib/time-picker/time-picker.component.js +0 -112
  556. package/esm2015/lib/time-picker/time-picker.module.js +0 -21
  557. package/esm2015/lib/timer/timer.component.js +0 -108
  558. package/esm2015/lib/timer/timer.module.js +0 -20
  559. package/esm2015/lib/tree-control/tree-control.component.js +0 -435
  560. package/esm2015/lib/tree-control/tree-control.module.js +0 -24
  561. package/esm2015/lib/tree-ring-chart/tree-ring-chart.component.js +0 -215
  562. package/esm2015/lib/tree-ring-chart/tree-ring-chart.module.js +0 -20
  563. package/esm2015/lib/upload/upload.component.js +0 -127
  564. package/esm2015/lib/upload/upload.module.js +0 -22
  565. package/esm2015/lib/video-grid/video-grid.component.js +0 -140
  566. package/esm2015/lib/video-grid/video-grid.module.js +0 -22
  567. package/esm2015/lib/visual-map-chart/visual-map-chart.component.js +0 -395
  568. package/esm2015/lib/visual-map-chart/visual-map-chart.module.js +0 -20
  569. package/esm2015/lib/vote/vote.component.js +0 -100
  570. package/esm2015/lib/vote/vote.module.js +0 -21
  571. package/esm2015/lib/weather/weather.component.js +0 -92
  572. package/esm2015/lib/weather/weather.module.js +0 -21
  573. package/esm2015/lib/wordart/wordart.component.js +0 -84
  574. package/esm2015/lib/wordart/wordart.module.js +0 -19
  575. package/esm2015/lib/workbench-widget.module.js +0 -620
  576. package/esm2015/public-api.js +0 -40
  577. package/fesm2015/bbj-screen-widget-core.js +0 -107
  578. package/fesm2015/bbj-screen-widget-core.js.map +0 -1
  579. package/fesm2015/bbj-screen-widget.js +0 -20633
  580. package/fesm2015/bbj-screen-widget.js.map +0 -1
  581. package/lib/announcement/announcement.component.d.ts +0 -13
  582. package/lib/announcement/announcement.module.d.ts +0 -5
  583. package/lib/audio/audio.component.d.ts +0 -22
  584. package/lib/audio/audio.module.d.ts +0 -4
  585. package/lib/background/background.component.d.ts +0 -12
  586. package/lib/background/background.module.d.ts +0 -4
  587. package/lib/bar-chart-three-d/bar-chart-three-d.component.d.ts +0 -30
  588. package/lib/bar-chart-three-d/bar-chart-three-d.module.d.ts +0 -4
  589. package/lib/basic-bar-chart/basic-bar-chart.component.d.ts +0 -105
  590. package/lib/basic-bar-chart/basic-bar-chart.module.d.ts +0 -5
  591. package/lib/basic-line-chart/basic-line-chart.component.d.ts +0 -102
  592. package/lib/basic-line-chart/basic-line-chart.module.d.ts +0 -4
  593. package/lib/basic-pie-chart/basic-pie-chart.component.d.ts +0 -56
  594. package/lib/basic-pie-chart/basic-pie-chart.module.d.ts +0 -4
  595. package/lib/basic-planimetric-map/basic-planimetric-map.component.d.ts +0 -18
  596. package/lib/basic-planimetric-map/basic-planimetric-map.module.d.ts +0 -4
  597. package/lib/breathing-bubble-layer/breathing-bubble-layer.component.d.ts +0 -210
  598. package/lib/breathing-bubble-layer/breathing-bubble-layer.module.d.ts +0 -4
  599. package/lib/bubble-chart/bubble-chart.component.d.ts +0 -75
  600. package/lib/bubble-chart/bubble-chart.module.d.ts +0 -4
  601. package/lib/bulletin-board/bulletin-board.component.d.ts +0 -25
  602. package/lib/bulletin-board/bulletin-board.module.d.ts +0 -4
  603. package/lib/button/button.component.d.ts +0 -25
  604. package/lib/button/button.module.d.ts +0 -4
  605. package/lib/calendar/background-events/background-events.component.d.ts +0 -10
  606. package/lib/calendar/calendar-events-child.d.ts +0 -12
  607. package/lib/calendar/calendar.component.d.ts +0 -27
  608. package/lib/calendar/calendar.module.d.ts +0 -4
  609. package/lib/calendar/calendar.util.d.ts +0 -6
  610. package/lib/calendar/events/events.component.d.ts +0 -13
  611. package/lib/checkbox/checkbox.component.d.ts +0 -45
  612. package/lib/checkbox/checkbox.module.d.ts +0 -4
  613. package/lib/cross-table/cross-table.component.d.ts +0 -30
  614. package/lib/cross-table/cross-table.module.d.ts +0 -4
  615. package/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.d.ts +0 -72
  616. package/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.d.ts +0 -23
  617. package/lib/custom-baidu-map/base-layer.d.ts +0 -16
  618. package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +0 -93
  619. package/lib/custom-baidu-map/custom-baidu-map.module.d.ts +0 -4
  620. package/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.d.ts +0 -16
  621. package/lib/custom-baidu-map/wind-layer/wind-layer.component.d.ts +0 -28
  622. package/lib/date-picker/date-picker.component.d.ts +0 -63
  623. package/lib/date-picker/date-picker.module.d.ts +0 -4
  624. package/lib/funnel-chart/funnel-chart.component.d.ts +0 -24
  625. package/lib/funnel-chart/funnel-chart.module.d.ts +0 -4
  626. package/lib/gantt/gantt.component.d.ts +0 -25
  627. package/lib/gantt/gantt.module.d.ts +0 -4
  628. package/lib/gauge/gauge.component.d.ts +0 -37
  629. package/lib/gauge/gauge.module.d.ts +0 -4
  630. package/lib/gauge-progress/gauge-progress.component.d.ts +0 -46
  631. package/lib/gauge-progress/gauge.module.d.ts +0 -5
  632. package/lib/general-text/general-text.component.d.ts +0 -21
  633. package/lib/general-text/general-text.module.d.ts +0 -4
  634. package/lib/iconfont/icon.d.ts +0 -1
  635. package/lib/iconfont/iconfont.component.d.ts +0 -11
  636. package/lib/iconfont/iconfont.module.d.ts +0 -4
  637. package/lib/iframe/iframe.component.d.ts +0 -10
  638. package/lib/iframe/iframe.module.d.ts +0 -4
  639. package/lib/image/image.component.d.ts +0 -21
  640. package/lib/image/image.module.d.ts +0 -4
  641. package/lib/item-swiper/item-swiper.component.d.ts +0 -41
  642. package/lib/item-swiper/item-swiper.module.d.ts +0 -5
  643. package/lib/line-bar-chart/line-bar-chart.component.d.ts +0 -63
  644. package/lib/line-bar-chart/line-bar-chart.module.d.ts +0 -4
  645. package/lib/line-light-flow/line-light-flow.component.d.ts +0 -26
  646. package/lib/line-light-flow/line-light-flow.module.d.ts +0 -4
  647. package/lib/liquid-fill/liquid-fill.component.d.ts +0 -18
  648. package/lib/liquid-fill/liquid-fill.module.d.ts +0 -4
  649. package/lib/marquee/marquee.component.d.ts +0 -20
  650. package/lib/marquee/marquee.module.d.ts +0 -4
  651. package/lib/mip-anim/mip-anim.component.d.ts +0 -6
  652. package/lib/mip-anim/mip-anim.module.d.ts +0 -4
  653. package/lib/multi-title-gauge/multi-title-gauge.component.d.ts +0 -26
  654. package/lib/multi-title-gauge/multi-title-gauge.module.d.ts +0 -4
  655. package/lib/number-flop/number-flop.component.d.ts +0 -22
  656. package/lib/number-flop/number-flop.module.d.ts +0 -4
  657. package/lib/parent-container/parent-container.component.d.ts +0 -9
  658. package/lib/parent-container/parent-container.module.d.ts +0 -4
  659. package/lib/percent-pie-chart/percent-pie-chart.component.d.ts +0 -24
  660. package/lib/percent-pie-chart/percent-pie-chart.module.d.ts +0 -4
  661. package/lib/pie3d-chart/pie3d-chart.component.d.ts +0 -30
  662. package/lib/pie3d-chart/pie3d-chart.module.d.ts +0 -4
  663. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.d.ts +0 -206
  664. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.d.ts +0 -4
  665. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.d.ts +0 -15
  666. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.d.ts +0 -4
  667. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.d.ts +0 -15
  668. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.d.ts +0 -4
  669. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.d.ts +0 -49
  670. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.d.ts +0 -4
  671. package/lib/planimetric-map2d/planimetric-map2d.component.d.ts +0 -49
  672. package/lib/planimetric-map2d/planimetric-map2d.module.d.ts +0 -4
  673. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.d.ts +0 -14
  674. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.d.ts +0 -4
  675. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.d.ts +0 -41
  676. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.d.ts +0 -4
  677. package/lib/planimetric-map3d/planimetric-map3d.component.d.ts +0 -29
  678. package/lib/planimetric-map3d/planimetric-map3d.module.d.ts +0 -4
  679. package/lib/radar-chart/radar-chart.component.d.ts +0 -24
  680. package/lib/radar-chart/radar-chart.module.d.ts +0 -4
  681. package/lib/radio/radio.component.d.ts +0 -21
  682. package/lib/radio/radio.module.d.ts +0 -4
  683. package/lib/rate/rate.component.d.ts +0 -13
  684. package/lib/rate/rate.module.d.ts +0 -4
  685. package/lib/scatter3d/scatter3d.component.d.ts +0 -25
  686. package/lib/scatter3d/scatter3d.module.d.ts +0 -4
  687. package/lib/screen-widget.module.d.ts +0 -4
  688. package/lib/search/search.component.d.ts +0 -21
  689. package/lib/search/search.module.d.ts +0 -6
  690. package/lib/select/select.component.d.ts +0 -37
  691. package/lib/select/select.module.d.ts +0 -4
  692. package/lib/shape/shape.component.d.ts +0 -50
  693. package/lib/shape/shape.module.d.ts +0 -4
  694. package/lib/shared/component/video-player/video-player.component.d.ts +0 -28
  695. package/lib/shared/component/video-player/video-player.module.d.ts +0 -2
  696. package/lib/shared/service/common.service.d.ts +0 -21
  697. package/lib/shared/service/file-url.service.d.ts +0 -3
  698. package/lib/shared/service/gaode-map.service.d.ts +0 -10
  699. package/lib/shared/service/highcharts.service.d.ts +0 -9
  700. package/lib/shared/service/http.service.d.ts +0 -7
  701. package/lib/shared/util/base.util.d.ts +0 -1
  702. package/lib/shared/util/echarts.util.d.ts +0 -1
  703. package/lib/shared/util/style.util.d.ts +0 -1
  704. package/lib/shuffling-list/color.pipe.d.ts +0 -4
  705. package/lib/shuffling-list/shuffling-list.component.d.ts +0 -76
  706. package/lib/shuffling-list/shuffling-list.module.d.ts +0 -4
  707. package/lib/table/table.component.d.ts +0 -65
  708. package/lib/table/table.module.d.ts +0 -4
  709. package/lib/tabs/tab/tab.component.d.ts +0 -7
  710. package/lib/tabs/tabs.component.d.ts +0 -13
  711. package/lib/tabs/tabs.module.d.ts +0 -4
  712. package/lib/temporary-data/temporary-data.component.d.ts +0 -13
  713. package/lib/temporary-data/temporary-data.module.d.ts +0 -4
  714. package/lib/time-picker/time-picker.component.d.ts +0 -17
  715. package/lib/time-picker/time-picker.module.d.ts +0 -4
  716. package/lib/timer/timer.component.d.ts +0 -21
  717. package/lib/timer/timer.module.d.ts +0 -4
  718. package/lib/tree-control/tree-control.component.d.ts +0 -62
  719. package/lib/tree-control/tree-control.module.d.ts +0 -4
  720. package/lib/tree-ring-chart/tree-ring-chart.component.d.ts +0 -24
  721. package/lib/tree-ring-chart/tree-ring-chart.module.d.ts +0 -4
  722. package/lib/upload/upload.component.d.ts +0 -21
  723. package/lib/upload/upload.module.d.ts +0 -4
  724. package/lib/video-grid/video-grid.component.d.ts +0 -23
  725. package/lib/video-grid/video-grid.module.d.ts +0 -4
  726. package/lib/visual-map-chart/visual-map-chart.component.d.ts +0 -49
  727. package/lib/visual-map-chart/visual-map-chart.module.d.ts +0 -4
  728. package/lib/vote/vote.component.d.ts +0 -15
  729. package/lib/vote/vote.module.d.ts +0 -4
  730. package/lib/weather/weather.component.d.ts +0 -26
  731. package/lib/weather/weather.module.d.ts +0 -4
  732. package/lib/wordart/wordart.component.d.ts +0 -14
  733. package/lib/wordart/wordart.module.d.ts +0 -4
  734. package/lib/workbench-widget.module.d.ts +0 -4
  735. /package/core/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -1,675 +0,0 @@
1
- import { __awaiter, __decorate, __metadata } from "tslib";
2
- import { HttpClient } from '@angular/common/http';
3
- import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, NgZone, Optional, ViewChild, } from '@angular/core';
4
- import { Subject } from 'rxjs';
5
- import { take, takeUntil } from 'rxjs/operators';
6
- import { ScaleSubject, TemplateUtil, WidgetRef } from 'bbj-widget-base';
7
- import { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';
8
- import { BaiduMapService } from 'bbj-screen-widget/core';
9
- const MapTypeEnum = [
10
- { label: '普通', value: 'normal' },
11
- { label: '深色', value: 'dark' },
12
- { label: '卫星', value: 'satellite' },
13
- { label: '自定义', value: 'custom' },
14
- ];
15
- let CustomBaiduMapComponent = class CustomBaiduMapComponent {
16
- constructor(baiduMapService, http, elementRef, zone, scale$, cd, widgetRef) {
17
- this.baiduMapService = baiduMapService;
18
- this.http = http;
19
- this.elementRef = elementRef;
20
- this.zone = zone;
21
- this.scale$ = scale$;
22
- this.cd = cd;
23
- this.widgetRef = widgetRef;
24
- // @Property('字体', { ui: { widget: 'myFont' } })
25
- // font: any = {
26
- // family: '',
27
- // color: '#000000',
28
- // weight: 'normal',
29
- // size: 16,
30
- // space: 0,
31
- // lineHeight: 0,
32
- // };
33
- this.mapType = 'normal';
34
- this.minMapShow = false;
35
- this.showType = 'click';
36
- this.dragging = true;
37
- this.shadeColor = '#004395';
38
- this.mapCityColor = '#41b7ff';
39
- this.zoom = 12;
40
- // @Property('放大比例', { type: 'number' })
41
- // scale = 1;
42
- this.fillOpacity = 0;
43
- this.strokesize = 2;
44
- this.nightMode = false;
45
- this.tilt = 73;
46
- // @Property('中心经度', {
47
- // ui: {widget: 'myRange', min: -180, max: 180, step: 1},
48
- // })
49
- this.centerLng = 120.7;
50
- // @Property('中心纬度', {
51
- // ui: {widget: 'myRange', min: -90, max: 90, step: 1},
52
- // })
53
- this.centerLat = 28;
54
- this.cityName = null;
55
- // markerTierClick: any;
56
- // pingyang = '';
57
- // ruian = '';
58
- this._data = [{ lng: 120.7, lat: 28 }];
59
- this.dataChange = new EventEmitter();
60
- this.zoomChange = new EventEmitter();
61
- this.mapClick = new EventEmitter();
62
- this.destroy$ = new Subject();
63
- // containerStyle: any = {};
64
- // unloadedChildren = {};
65
- this.overlaysMap = {};
66
- this.init$ = new Promise((resolve) => {
67
- this.inited = resolve;
68
- });
69
- this.mapTypeEnum = MapTypeEnum.slice(0, 3);
70
- }
71
- get element() {
72
- return this.elementRef.nativeElement;
73
- }
74
- addLayer(layer) {
75
- if (this.view) {
76
- this.view.addLayer(layer);
77
- }
78
- }
79
- removeLayer(layer) {
80
- if (this.view) {
81
- this.view.removeLayer(layer);
82
- }
83
- }
84
- ngOnChanges(changes) {
85
- if (changes._data && this._data[0]) {
86
- this.centerLng = +this._data[0].lng;
87
- this.centerLat = +this._data[0].lat;
88
- this.setCenter(this.centerLng, this.centerLat);
89
- }
90
- }
91
- ngOnInit() {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- if (this.scale$) {
94
- // 这是为了解决地图缩放中心不在鼠标所在位置的问题
95
- this.scale$.pipe(takeUntil(this.destroy$)).subscribe((scale) => {
96
- const { x: sx, y: sy, scaleContent } = scale;
97
- const style = this.element.style;
98
- if (scaleContent === false) {
99
- this.zone.onStable.pipe(take(1)).subscribe(() => {
100
- const parent = this.element.parentNode;
101
- if (parent) {
102
- const match = /translate\(([-\d.]+)px, ([-\d.]+)px\)/.exec(parent.style.transform);
103
- if (match) {
104
- const offsetX = parseFloat(match[1]);
105
- const offsetY = parseFloat(match[2]);
106
- style.transform = `translate(${-offsetX}px,${-offsetY}px)`;
107
- style.height = parent.clientHeight + offsetY + 'px';
108
- style.width = parent.clientWidth + offsetX + 'px';
109
- style.padding = `${offsetY}px 0 0 ${offsetX}px`;
110
- // this.containerStyle = {
111
- // transformOrigin: `0 0`,
112
- // transform: `translate(${-offsetX}px,${-offsetY}px)`,
113
- // height: parent.clientHeight + offsetY + 'px',
114
- // width: parent.clientWidth + offsetX + 'px',
115
- // padding: `${offsetY}px 0 0 ${offsetX}px`,
116
- // };
117
- }
118
- }
119
- // this.cd.markForCheck();
120
- });
121
- }
122
- else {
123
- const { position, size } = this.widgetRef.widget;
124
- const { x, y } = position;
125
- const { width, height } = size;
126
- style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;
127
- style.height = (y + height) * sy + 'px';
128
- style.width = (x + width) * sx + 'px';
129
- style.padding = `${y * sy}px 0 0 ${x * sx}px`;
130
- }
131
- // this.cd.markForCheck();
132
- });
133
- }
134
- yield this.initMap();
135
- });
136
- }
137
- initMap() {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- yield this.baiduMapService.loadMapGL();
140
- yield this.baiduMapService.loadMapVGL();
141
- this.mapTypeValue = this.mapType;
142
- // 兼容老的配置
143
- if (this.mapType == null) {
144
- if (this.uploadStyle) {
145
- this.mapTypeValue = 'custom';
146
- }
147
- else if (this.nightMode) {
148
- this.mapTypeValue = 'dark';
149
- }
150
- }
151
- if (!this.destroyed) {
152
- this.zone.runOutsideAngular(() => {
153
- this.map = new BMapGL.Map(this.container.nativeElement, { restrictCenter: false });
154
- this.map.centerAndZoom(new BMapGL.Point(this.centerLng, this.centerLat), this.zoom); // 设置中心点和缩放级别
155
- this.map.enableScrollWheelZoom(); // 启用滚轮进行缩放功能
156
- // var dist = new BMapGL.DistrictLayer({
157
- // name: '(温州市)',
158
- // kind: 1,
159
- // fillColor: '#fff',
160
- // fillOpacity: 0.1,
161
- // strokeColor: '#daeafa',
162
- // viewport: true,
163
- // });
164
- // this.map.addDistrictLayer(dist);
165
- this.mapTypeChange(this.mapTypeValue);
166
- if (this.edit || this.dragging === false) {
167
- this.map.disableDragging();
168
- }
169
- if (this.enable3D) {
170
- this.map.setTilt(this.tilt == null ? 73 : this.tilt, { noAnimation: true });
171
- this.map.setDisplayOptions({ skyColors: ['rgba(0, 0, 0, 0)'] }); // 隐藏天空
172
- // const navi3DCtrl = new BMapGL.NavigationControl3D(); // 添加3D控件
173
- // this.map.addControl(navi3DCtrl);
174
- }
175
- else {
176
- this.map.disableTilt();
177
- this.map.disableRotate();
178
- }
179
- if (this.showLocationControl) {
180
- const options = {
181
- // 控件的停靠位置(可选,默认左上角)
182
- anchor: BMAP_ANCHOR_TOP_LEFT,
183
- // 控件基于停靠位置的偏移量(可选)
184
- offset: new BMapGL.Size(20, 20),
185
- };
186
- let locationControl = new BMapGL.LocationControl(options);
187
- // 将控件添加到地图上
188
- this.map.addControl(locationControl);
189
- }
190
- if (this.minMapShow) {
191
- const stCtrl = new BMapGL.PanoramaControl();
192
- stCtrl.setOffset(new BMapGL.Size(20, 20));
193
- this.map.addControl(stCtrl);
194
- }
195
- if (this.infoWindowBackground) {
196
- this.element.style.setProperty('--info-window-background', this.infoWindowBackground);
197
- }
198
- if (this.infoWindowColor) {
199
- this.element.style.setProperty('--info-window-color', this.infoWindowColor);
200
- }
201
- if (this.infoWindowBorderColor) {
202
- this.element.style.setProperty('--info-window-border-color', this.infoWindowBorderColor);
203
- }
204
- this.map.addEventListener('moveend', (event) => {
205
- const center = this.map.getCenter();
206
- this.dataChange.emit(center);
207
- });
208
- this.map.addEventListener('click', (event) => {
209
- this.mapClick.emit(event.pointer);
210
- });
211
- this.map.addEventListener('zoomend', (event) => {
212
- this.zoomChange.emit(this.map.getZoom());
213
- this.dataChange.emit(this.map.getCenter());
214
- });
215
- this.view = new mapvgl.View({
216
- map: this.map,
217
- });
218
- this.mapLoaded(this.map);
219
- });
220
- this.inited(this.map);
221
- }
222
- });
223
- }
224
- setCenter(lng, lat) {
225
- if (this.map && lng && lat) {
226
- const center = this.map.getCenter();
227
- if (center.lng != lng || center.lat != lat) {
228
- this.setCenterAndZoom(lng, lat, this.map.getZoom());
229
- }
230
- }
231
- }
232
- setCenterAndZoom(lng, lat, zoom) {
233
- const center = this.map.getCenter();
234
- const currentZoom = this.map.getZoom();
235
- // 误差范围内不移动,防止背景抖动
236
- if (zoom != currentZoom || Math.abs(lng - center.lng) > 1e-13 || Math.abs(lat - center.lat) > 1e-7) {
237
- const point = new BMapGL.Point(lng, lat);
238
- this.map.centerAndZoom(point, zoom, { tilt: this.map.getTilt() });
239
- }
240
- }
241
- /**
242
- * 根据经纬度范围设置中心和缩放等级
243
- * @param minLng
244
- * @param maxLng
245
- * @param minLat
246
- * @param maxLat
247
- */
248
- setRectCenterAndZoom(minLng, maxLng, minLat, maxLat) {
249
- this.setCenterAndZoom((maxLng + minLng) / 2, (maxLat + minLat) / 2, this.getZoom(maxLng, minLng, maxLat, minLat));
250
- }
251
- getZoom(maxLng, minLng, maxLat, minLat) {
252
- const zooms = [
253
- 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 25000, 50000, 100000, 200000, 500000, 1000000, 2000000,
254
- ]; //级别18到3。
255
- const pointA = new BMapGL.Point(maxLng, maxLat); // 创建点坐标A
256
- const pointB = new BMapGL.Point(minLng, minLat); // 创建点坐标B
257
- const distance = +this.map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位
258
- const i = zooms.findIndex((zoom) => zoom - distance > 0);
259
- if (i === -1) {
260
- return 5;
261
- }
262
- //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
263
- return 18 - i + 3;
264
- }
265
- openInfoWindow(data, lng, lat) {
266
- if (data.information || this.infoWindowTemplate) {
267
- const point = new BMapGL.Point(+lng, +lat);
268
- // let offsetY = -25;
269
- // if (this.hideInfoWindowTail) {
270
- // offsetY = 0;
271
- // }
272
- let information = data.information;
273
- if (this.infoWindowTemplate) {
274
- information = TemplateUtil.parse(this.infoWindowTemplate, data);
275
- }
276
- const options = {
277
- offset: new BMapGL.Size(0, 0),
278
- width: this.infoWindowWidth || 0,
279
- height: this.infoWindowHeight || 0,
280
- };
281
- const infoWindow = new BMapGL.InfoWindow(information, options);
282
- // 第一次打开信息窗口后在短时间关闭或重新打开会导致click事件失效,临时解决方案是第一次打开后0.5秒内不关闭
283
- if (!this.firstOpen) {
284
- if (this.firstOpenPromise) {
285
- this.firstOpenPromise.then(() => {
286
- this.map.openInfoWindow(infoWindow, point);
287
- });
288
- }
289
- else {
290
- this.firstOpenPromise = new Promise((resolve) => {
291
- setTimeout(() => {
292
- this.firstOpen = true;
293
- this.firstOpenPromise = null;
294
- resolve();
295
- }, 500);
296
- });
297
- this.map.openInfoWindow(infoWindow, point);
298
- }
299
- const rawClose = infoWindow.close;
300
- infoWindow.close = () => {
301
- if (this.firstOpenPromise) {
302
- this.firstOpenPromise.then(() => rawClose.call(infoWindow));
303
- }
304
- else {
305
- rawClose.call(infoWindow);
306
- }
307
- };
308
- }
309
- else {
310
- this.map.openInfoWindow(infoWindow, point);
311
- }
312
- return infoWindow;
313
- }
314
- }
315
- getCanvasOverlay(child) {
316
- let canvasOverlay;
317
- if (this.enable3D) {
318
- const item = child.item;
319
- if (item) {
320
- var pStart = new BMapGL.Point(item.start.lng, item.start.lat);
321
- var pEnd = new BMapGL.Point(item.end.lng, item.end.lat);
322
- var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat), new BMapGL.Point(pEnd.lng, pStart.lat));
323
- canvasOverlay = new BMapGL.GroundOverlay(bounds, {
324
- type: 'canvas',
325
- url: item.canvas,
326
- opacity: 1,
327
- });
328
- }
329
- }
330
- else {
331
- const pointToPixel = (data) => {
332
- const point = new BMapGL.Point(data.lng, data.lat);
333
- return this.map.pointToPixel(point);
334
- };
335
- canvasOverlay = new BMapGL.CanvasLayer({
336
- paneName: 'markerShadow',
337
- update: function () {
338
- var ctx = this.canvas.getContext('2d');
339
- if (!ctx) {
340
- return;
341
- }
342
- ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
343
- child.update(ctx, pointToPixel);
344
- },
345
- });
346
- }
347
- return canvasOverlay;
348
- }
349
- ngOnDestroy() {
350
- this.destroy$.next();
351
- this.destroy$.complete();
352
- this.destroyed = true;
353
- if (this.view) {
354
- try {
355
- this.view.destroy();
356
- }
357
- catch (e) {
358
- console.error(e);
359
- }
360
- }
361
- if (this.map) {
362
- try {
363
- this.map.destroy();
364
- }
365
- catch (e) {
366
- console.error(e);
367
- }
368
- }
369
- }
370
- mapLoaded(map) {
371
- return __awaiter(this, void 0, void 0, function* () {
372
- if (this.cityName) {
373
- if (this.cityName === '温州') {
374
- this.cityName = 'wenzhou';
375
- }
376
- const json = yield this.http.get('assets/echarts/map/json/' + this.cityName + '.json').toPromise();
377
- const polygonData = [];
378
- let encodeScale = json.UTF8Scale || 1024;
379
- json.features.forEach(({ geometry }) => {
380
- geometry.coordinates = geometry.coordinates.forEach((coordinate, i) => {
381
- if (geometry.type === 'MultiPolygon') {
382
- const coordinates = coordinate.map((points, j) => {
383
- if (json.UTF8Encoding) {
384
- points = this.decodePolygon(points, geometry.encodeOffsets[i][j], encodeScale);
385
- }
386
- return points;
387
- });
388
- polygonData.push(coordinates);
389
- }
390
- else {
391
- if (json.UTF8Encoding) {
392
- coordinate = this.decodePolygon(coordinate, geometry.encodeOffsets[i], encodeScale);
393
- }
394
- polygonData.push([coordinate]);
395
- }
396
- });
397
- });
398
- const data = [
399
- {
400
- geometry: {
401
- type: 'MultiPolygon',
402
- coordinates: polygonData,
403
- },
404
- },
405
- ];
406
- var layer = new mapvgl.PolygonLayer({
407
- lineColor: this.mapCityColor,
408
- lineWidth: this.strokesize || 2,
409
- fillColor: this.shadeColor,
410
- data,
411
- renderOrder: -2,
412
- });
413
- this.view.addLayer(layer);
414
- if (this.mapBackColor && !this.mapBackColor.match(/rgba\(\d+,\d+,\d+,0\)/)) {
415
- var maskLayer = new mapvgl.MaskLayer({
416
- color: this.mapBackColor,
417
- data,
418
- renderOrder: -3,
419
- });
420
- this.view.addLayer(maskLayer);
421
- }
422
- }
423
- });
424
- }
425
- decodePolygon(coordinate, encodeOffsets, encodeScale) {
426
- const result = [];
427
- let prevX = encodeOffsets[0];
428
- let prevY = encodeOffsets[1];
429
- for (let i = 0; i < coordinate.length; i += 2) {
430
- var x = coordinate.charCodeAt(i) - 64;
431
- var y = coordinate.charCodeAt(i + 1) - 64;
432
- // ZigZag decoding
433
- x = (x >> 1) ^ -(x & 1);
434
- y = (y >> 1) ^ -(y & 1);
435
- // Delta deocding
436
- x += prevX;
437
- y += prevY;
438
- prevX = x;
439
- prevY = y;
440
- // Dequantize
441
- result.push([x / encodeScale, y / encodeScale]);
442
- }
443
- return result;
444
- }
445
- mapTypeChange(mapType) {
446
- return __awaiter(this, void 0, void 0, function* () {
447
- switch (mapType) {
448
- case 'dark':
449
- if (!this.darkStyle) {
450
- this.darkStyle = yield this.http.get('assets/echarts/map/json/custom_map.json').toPromise();
451
- }
452
- this.map.setMapType(BMAP_NORMAL_MAP);
453
- this.map.setMapStyleV2({ styleJson: this.darkStyle });
454
- break;
455
- case 'satellite':
456
- this.map.setMapType(BMAP_SATELLITE_MAP);
457
- break;
458
- case 'custom':
459
- if (this.uploadStyle) {
460
- const styleJson = yield this.http.get(this.uploadStyle).toPromise();
461
- this.map.setMapType(BMAP_NORMAL_MAP);
462
- this.map.setMapStyleV2({ styleJson });
463
- }
464
- break;
465
- default:
466
- this.map.setMapType(BMAP_NORMAL_MAP);
467
- this.map.setMapStyleV2({ styleJson: null });
468
- }
469
- });
470
- }
471
- };
472
- CustomBaiduMapComponent.decorators = [
473
- { type: Component, args: [{
474
- selector: 'sc-custom-baidu-map',
475
- template: "<ng-template *ngFor=\"let child of children\" widget-host [widget]=\"child\"></ng-template>\n\n<!-- {{children|json}} -->\n<!-- <div class=\"map-container\" [ngStyle]=\"containerStyle\"> -->\n<div #container class=\"map\"></div>\n<nz-radio-group\n *ngIf=\"showMapTypeRadio\"\n class=\"map-type-radio\"\n [(ngModel)]=\"mapTypeValue\"\n (ngModelChange)=\"mapTypeChange($event)\"\n nzButtonStyle=\"solid\"\n>\n <label *ngFor=\"let item of mapTypeEnum\" nz-radio-button [nzValue]=\"item.value\">{{ item.label }}</label>\n</nz-radio-group>\n<!-- </div> -->\n",
476
- styles: [":host{display:block;height:100%;width:100%;overflow:hidden;transform-origin:0 0;z-index:0;pointer-events:none}:host>*{pointer-events:auto}.map{height:100%;width:100%}:host::ng-deep .BMap_bubble_pop{background-color:var(--info-window-background,#fff)!important;border-color:var(--info-window-border-color,#ddd)!important}:host::ng-deep .BMap_bubble_content{color:var(--info-window-color,\"#555555\")!important}:host::ng-deep .BMap_pop div{background-color:var(--info-window-background,#fff)!important}:host::ng-deep .BMap_pop>div:nth-child(8){background-color:transparent!important}:host.hideInfoWindowTail::ng-deep .BMap_bubble_pop>img,:host.hideInfoWindowTail::ng-deep .BMap_pop>div:nth-child(8),:host::ng-deep img[src$=\"/image/api/iws3.png\"]{display:none}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop{transform:translateY(31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop>img{transform:translateY(-31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_top,:host::ng-deep .anchorBL{display:none}.map-type-radio{position:absolute;bottom:20px;right:20px;z-index:10}"]
477
- },] }
478
- ];
479
- CustomBaiduMapComponent.ctorParameters = () => [
480
- { type: BaiduMapService },
481
- { type: HttpClient },
482
- { type: ElementRef },
483
- { type: NgZone },
484
- { type: ScaleSubject, decorators: [{ type: Optional }] },
485
- { type: ChangeDetectorRef },
486
- { type: WidgetRef }
487
- ];
488
- CustomBaiduMapComponent.propDecorators = {
489
- hideInfoWindowTail: [{ type: HostBinding, args: ['class.hideInfoWindowTail',] }],
490
- hideInfoWindowTop: [{ type: HostBinding, args: ['class.hideInfoWindowTop',] }],
491
- container: [{ type: ViewChild, args: ['container', { static: true },] }]
492
- };
493
- __decorate([
494
- Property('地图类型', {
495
- enum: MapTypeEnum,
496
- }),
497
- __metadata("design:type", Object)
498
- ], CustomBaiduMapComponent.prototype, "mapType", void 0);
499
- __decorate([
500
- Property('上传样式', { type: 'string', ui: { widget: 'myUploadAudio', visibleIf: { mapType: ['custom'] } } }),
501
- __metadata("design:type", String)
502
- ], CustomBaiduMapComponent.prototype, "uploadStyle", void 0);
503
- __decorate([
504
- Property('切换按钮'),
505
- __metadata("design:type", Boolean)
506
- ], CustomBaiduMapComponent.prototype, "showMapTypeRadio", void 0);
507
- __decorate([
508
- Property('全景地图', { type: 'boolean' }),
509
- __metadata("design:type", Object)
510
- ], CustomBaiduMapComponent.prototype, "minMapShow", void 0);
511
- __decorate([
512
- Property('显示信息', {
513
- ui: { widget: 'select' },
514
- enum: [
515
- { label: '点击', value: 'click' },
516
- { label: '悬停', value: 'mouseover' },
517
- ],
518
- }),
519
- __metadata("design:type", Object)
520
- ], CustomBaiduMapComponent.prototype, "showType", void 0);
521
- __decorate([
522
- Property('信息窗背景', { ui: { widget: 'myColor' } }),
523
- __metadata("design:type", String)
524
- ], CustomBaiduMapComponent.prototype, "infoWindowBackground", void 0);
525
- __decorate([
526
- Property('信息窗字体', { ui: { widget: 'myColor' } }),
527
- __metadata("design:type", String)
528
- ], CustomBaiduMapComponent.prototype, "infoWindowColor", void 0);
529
- __decorate([
530
- Property('信息窗宽度'),
531
- __metadata("design:type", Number)
532
- ], CustomBaiduMapComponent.prototype, "infoWindowWidth", void 0);
533
- __decorate([
534
- Property('信息窗高度'),
535
- __metadata("design:type", Number)
536
- ], CustomBaiduMapComponent.prototype, "infoWindowHeight", void 0);
537
- __decorate([
538
- Property('信息窗模板', { ui: { widget: 'textarea' } }),
539
- __metadata("design:type", String)
540
- ], CustomBaiduMapComponent.prototype, "infoWindowTemplate", void 0);
541
- __decorate([
542
- Property('信息窗边框', {
543
- ui: { widget: 'myColor' },
544
- example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
545
- }),
546
- __metadata("design:type", String)
547
- ], CustomBaiduMapComponent.prototype, "infoWindowBorderColor", void 0);
548
- __decorate([
549
- Property('隐藏尖角'),
550
- __metadata("design:type", Boolean)
551
- ], CustomBaiduMapComponent.prototype, "hideInfoWindowTail", void 0);
552
- __decorate([
553
- Property('隐藏关闭按钮'),
554
- __metadata("design:type", Boolean)
555
- ], CustomBaiduMapComponent.prototype, "hideInfoWindowTop", void 0);
556
- __decorate([
557
- Property('地图拖动', { type: 'boolean' }),
558
- __metadata("design:type", Object)
559
- ], CustomBaiduMapComponent.prototype, "dragging", void 0);
560
- __decorate([
561
- Property('遮罩颜色', {
562
- ui: { widget: 'myColor' },
563
- example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
564
- }),
565
- __metadata("design:type", Object)
566
- ], CustomBaiduMapComponent.prototype, "shadeColor", void 0);
567
- __decorate([
568
- Property('背景颜色', {
569
- ui: { widget: 'myColor' },
570
- example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
571
- }),
572
- __metadata("design:type", String)
573
- ], CustomBaiduMapComponent.prototype, "mapBackColor", void 0);
574
- __decorate([
575
- Property('多边线色', {
576
- ui: { widget: 'myColor' },
577
- example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
578
- }),
579
- __metadata("design:type", Object)
580
- ], CustomBaiduMapComponent.prototype, "mapCityColor", void 0);
581
- __decorate([
582
- Property('地图缩放', {
583
- ui: { widget: 'myRange', min: 1, max: 40, step: 1 },
584
- }),
585
- __metadata("design:type", Object)
586
- ], CustomBaiduMapComponent.prototype, "zoom", void 0);
587
- __decorate([
588
- Property('遮罩透明', { type: 'number' }),
589
- __metadata("design:type", Object)
590
- ], CustomBaiduMapComponent.prototype, "fillOpacity", void 0);
591
- __decorate([
592
- Property('多边线粗', { type: 'number' }),
593
- __metadata("design:type", Object)
594
- ], CustomBaiduMapComponent.prototype, "strokesize", void 0);
595
- __decorate([
596
- Property('黑夜模式', { type: 'boolean', ui: { hidden: true } }),
597
- __metadata("design:type", Object)
598
- ], CustomBaiduMapComponent.prototype, "nightMode", void 0);
599
- __decorate([
600
- Property('3D视角'),
601
- __metadata("design:type", Boolean)
602
- ], CustomBaiduMapComponent.prototype, "enable3D", void 0);
603
- __decorate([
604
- Property('定位控件'),
605
- __metadata("design:type", Boolean)
606
- ], CustomBaiduMapComponent.prototype, "showLocationControl", void 0);
607
- __decorate([
608
- Property('初始角度', { type: 'number', ui: { visibleIf: { enable3D: [true] } } }),
609
- __metadata("design:type", Object)
610
- ], CustomBaiduMapComponent.prototype, "tilt", void 0);
611
- __decorate([
612
- Property('显示省市', {
613
- ui: {
614
- widget: 'myUrlSelect',
615
- allowClear: true,
616
- url: '/assets/mapListItem.json',
617
- },
618
- }),
619
- __metadata("design:type", Object)
620
- ], CustomBaiduMapComponent.prototype, "cityName", void 0);
621
- __decorate([
622
- Data({
623
- properties: {
624
- lng: { type: 'number', title: '经度' },
625
- lat: { type: 'number', title: '纬度' },
626
- },
627
- }),
628
- __metadata("design:type", Array)
629
- ], CustomBaiduMapComponent.prototype, "_data", void 0);
630
- __decorate([
631
- DataOutput(['lng', 'lat']),
632
- Event('中心点改变', {
633
- params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
634
- }),
635
- __metadata("design:type", Object)
636
- ], CustomBaiduMapComponent.prototype, "dataChange", void 0);
637
- __decorate([
638
- DataOutput('缩放等级'),
639
- Event('缩放', {
640
- params: '缩放等级',
641
- }),
642
- __metadata("design:type", Object)
643
- ], CustomBaiduMapComponent.prototype, "zoomChange", void 0);
644
- __decorate([
645
- Event('地图点击', {
646
- params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
647
- }),
648
- __metadata("design:type", Object)
649
- ], CustomBaiduMapComponent.prototype, "mapClick", void 0);
650
- CustomBaiduMapComponent = __decorate([
651
- Widget('百度地图', {
652
- group: 'component',
653
- image: 'assets/img/screen/my-baidu-map.png',
654
- children: [
655
- {
656
- title: '标记层',
657
- type: 'sc-baidu-marker-layer',
658
- option: {},
659
- hidden: true,
660
- hideChild: true,
661
- },
662
- ],
663
- childTypes: ['sc-baidu-marker-layer', 'sc-baidu-polyline-layer', 'sc-wind-layer', 'sc-typhoon-area-layer'],
664
- description: 'hasChildItem',
665
- }),
666
- __metadata("design:paramtypes", [BaiduMapService,
667
- HttpClient,
668
- ElementRef,
669
- NgZone,
670
- ScaleSubject,
671
- ChangeDetectorRef,
672
- WidgetRef])
673
- ], CustomBaiduMapComponent);
674
- export { CustomBaiduMapComponent };
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY3JlZW4td2lkZ2V0L3NyYy9saWIvY3VzdG9tLWJhaWR1LW1hcC9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosV0FBVyxFQUdYLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVd6RCxNQUFNLFdBQVcsR0FBRztJQUNsQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUNoQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUNuQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtDQUNsQyxDQUFDO0lBcUJXLHVCQUF1QixTQUF2Qix1QkFBdUI7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Q2IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtLQUN2RyxDQUFDOzt5REFDaUM7QUF6SnhCLHVCQUF1QjtJQWZuQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsS0FBSyxFQUFFLG9DQUFvQztRQUMzQyxRQUFRLEVBQUU7WUFDUjtnQkFDRSxLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixNQUFNLEVBQUUsRUFBRTtnQkFDVixNQUFNLEVBQUUsSUFBSTtnQkFDWixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGO1FBQ0QsVUFBVSxFQUFFLENBQUMsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixDQUFDO1FBQzFHLFdBQVcsRUFBRSxjQUFjO0tBQ3JCLENBQUM7cUNBcUxvQixlQUFlO1FBQzFCLFVBQVU7UUFDSixVQUFVO1FBQ2hCLE1BQU07UUFDUSxZQUFZO1FBQzVCLGlCQUFpQjtRQUNWLFNBQVM7R0ExTG5CLHVCQUF1QixDQStrQm5DO1NBL2tCWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2NhbGVTdWJqZWN0LCBUZW1wbGF0ZVV0aWwsIFdpZGdldFJlZiB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XHJcbmltcG9ydCB7IERhdGEsIERhdGFPdXRwdXQsIFByb3BlcnR5LCBXaWRnZXQsIEV2ZW50IH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcclxuaW1wb3J0IHsgQmFpZHVNYXBTZXJ2aWNlIH0gZnJvbSAnYmJqLXNjcmVlbi13aWRnZXQvY29yZSc7XHJcblxyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXA7XHJcbmRlY2xhcmUgY29uc3QgQk1hcEdMOiBhbnk7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1hcEdMTGliO1xyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXBMaWI7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1BUF9BTkNIT1JfQk9UVE9NX0xFRlQ6IG51bWJlcjtcclxuZGVjbGFyZSBjb25zdCBCTUFQX0FOQ0hPUl9UT1BfTEVGVDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IG1hcHZnbDogYW55O1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfU0FURUxMSVRFX01BUDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfTk9STUFMX01BUDogbnVtYmVyO1xyXG5jb25zdCBNYXBUeXBlRW51bSA9IFtcclxuICB7IGxhYmVsOiAn5pmu6YCaJywgdmFsdWU6ICdub3JtYWwnIH0sXHJcbiAgeyBsYWJlbDogJ+a3seiJsicsIHZhbHVlOiAnZGFyaycgfSxcclxuICB7IGxhYmVsOiAn5Y2r5pifJywgdmFsdWU6ICdzYXRlbGxpdGUnIH0sXHJcbiAgeyBsYWJlbDogJ+iHquWumuS5iScsIHZhbHVlOiAnY3VzdG9tJyB9LFxyXG5dO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLWN1c3RvbS1iYWlkdS1tYXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbkBXaWRnZXQoJ+eZvuW6puWcsOWbvicsIHtcclxuICBncm91cDogJ2NvbXBvbmVudCcsXHJcbiAgaW1hZ2U6ICdhc3NldHMvaW1nL3NjcmVlbi9teS1iYWlkdS1tYXAucG5nJyxcclxuICBjaGlsZHJlbjogW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+agh+iusOWxgicsXHJcbiAgICAgIHR5cGU6ICdzYy1iYWlkdS1tYXJrZXItbGF5ZXInLFxyXG4gICAgICBvcHRpb246IHt9LFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIGhpZGVDaGlsZDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBjaGlsZFR5cGVzOiBbJ3NjLWJhaWR1LW1hcmtlci1sYXllcicsICdzYy1iYWlkdS1wb2x5bGluZS1sYXllcicsICdzYy13aW5kLWxheWVyJywgJ3NjLXR5cGhvb24tYXJlYS1sYXllciddLFxyXG4gIGRlc2NyaXB0aW9uOiAnaGFzQ2hpbGRJdGVtJyxcclxufSBhcyBhbnkpXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21CYWlkdU1hcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIC8vIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcclxuICAvLyBmb250OiBhbnkgPSB7XHJcbiAgLy8gICBmYW1pbHk6ICcnLFxyXG4gIC8vICAgY29sb3I6ICcjMDAwMDAwJyxcclxuICAvLyAgIHdlaWdodDogJ25vcm1hbCcsXHJcbiAgLy8gICBzaXplOiAxNixcclxuICAvLyAgIHNwYWNlOiAwLFxyXG4gIC8vICAgbGluZUhlaWdodDogMCxcclxuICAvLyB9O1xyXG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+57G75Z6LJywge1xyXG4gICAgZW51bTogTWFwVHlwZUVudW0sXHJcbiAgfSlcclxuICBtYXBUeXBlID0gJ25vcm1hbCc7XHJcbiAgbWFwVHlwZVZhbHVlOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfkuIrkvKDmoLflvI8nLCB7IHR5cGU6ICdzdHJpbmcnLCB1aTogeyB3aWRnZXQ6ICdteVVwbG9hZEF1ZGlvJywgdmlzaWJsZUlmOiB7IG1hcFR5cGU6IFsnY3VzdG9tJ10gfSB9IH0pXHJcbiAgdXBsb2FkU3R5bGU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+WIh+aNouaMiemSricpXHJcbiAgc2hvd01hcFR5cGVSYWRpbzogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+WFqOaZr+WcsOWbvicsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXHJcbiAgbWluTWFwU2hvdyA9IGZhbHNlO1xyXG4gIEBQcm9wZXJ0eSgn5pi+56S65L+h5oGvJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnc2VsZWN0JyB9LFxyXG4gICAgZW51bTogW1xyXG4gICAgICB7IGxhYmVsOiAn54K55Ye7JywgdmFsdWU6ICdjbGljaycgfSxcclxuICAgICAgeyBsYWJlbDogJ+aCrOWBnCcsIHZhbHVlOiAnbW91c2VvdmVyJyB9LFxyXG4gICAgXSxcclxuICB9KVxyXG4gIHNob3dUeXBlID0gJ2NsaWNrJztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+iDjOaZrycsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxyXG4gIGluZm9XaW5kb3dCYWNrZ3JvdW5kOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfkv6Hmga/nqpflrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0gfSlcclxuICBpbmZvV2luZG93Q29sb3I6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+WuveW6picpXHJcbiAgaW5mb1dpbmRvd1dpZHRoOiBudW1iZXI7XHJcbiAgQFByb3BlcnR5KCfkv6Hmga/nqpfpq5jluqYnKVxyXG4gIGluZm9XaW5kb3dIZWlnaHQ6IG51bWJlcjtcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+aooeadvycsIHsgdWk6IHsgd2lkZ2V0OiAndGV4dGFyZWEnIH0gfSlcclxuICBpbmZvV2luZG93VGVtcGxhdGU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+i+ueahhicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIGluZm9XaW5kb3dCb3JkZXJDb2xvcjogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn6ZqQ6JeP5bCW6KeSJylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZGVJbmZvV2luZG93VGFpbCcpXHJcbiAgaGlkZUluZm9XaW5kb3dUYWlsOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn6ZqQ6JeP5YWz6Zet5oyJ6ZKuJylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZGVJbmZvV2luZG93VG9wJylcclxuICBoaWRlSW5mb1dpbmRvd1RvcDogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+WcsOWbvuaLluWKqCcsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXHJcbiAgZHJhZ2dpbmcgPSB0cnVlO1xyXG5cclxuICBAUHJvcGVydHkoJ+mBrue9qeminOiJsicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIHNoYWRlQ29sb3IgPSAnIzAwNDM5NSc7XHJcbiAgQFByb3BlcnR5KCfog4zmma/popzoibInLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9LFxyXG4gICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXHJcbiAgfSlcclxuICBtYXBCYWNrQ29sb3I6IHN0cmluZztcclxuXHJcbiAgQFByb3BlcnR5KCflpJrovrnnur/oibInLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9LFxyXG4gICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXHJcbiAgfSlcclxuICBtYXBDaXR5Q29sb3IgPSAnIzQxYjdmZic7XHJcbiAgQFByb3BlcnR5KCflnLDlm77nvKnmlL4nLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdteVJhbmdlJywgbWluOiAxLCBtYXg6IDQwLCBzdGVwOiAxIH0sXHJcbiAgfSlcclxuICB6b29tID0gMTI7XHJcbiAgLy8gQFByb3BlcnR5KCfmlL7lpKfmr5TkvosnLCB7IHR5cGU6ICdudW1iZXInIH0pXHJcbiAgLy8gc2NhbGUgPSAxO1xyXG4gIEBQcm9wZXJ0eSgn6YGu572p6YCP5piOJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxyXG4gIGZpbGxPcGFjaXR5ID0gMDtcclxuICBAUHJvcGVydHkoJ+Wkmui+uee6v+eylycsIHsgdHlwZTogJ251bWJlcicgfSlcclxuICBzdHJva2VzaXplID0gMjtcclxuICBAUHJvcGVydHkoJ+m7keWknOaooeW8jycsIHsgdHlwZTogJ2Jvb2xlYW4nLCB1aTogeyBoaWRkZW46IHRydWUgfSB9KVxyXG4gIG5pZ2h0TW9kZSA9IGZhbHNlO1xyXG4gIEBQcm9wZXJ0eSgnM0Top4bop5InKVxyXG4gIGVuYWJsZTNEOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5a6a5L2N5o6n5Lu2JylcclxuICBzaG93TG9jYXRpb25Db250cm9sOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5Yid5aeL6KeS5bqmJywgeyB0eXBlOiAnbnVtYmVyJywgdWk6IHsgdmlzaWJsZUlmOiB7IGVuYWJsZTNEOiBbdHJ1ZV0gfSB9IH0pXHJcbiAgdGlsdCA9IDczO1xyXG4gIC8vIEBQcm9wZXJ0eSgn5Lit5b+D57uP5bqmJywge1xyXG4gIC8vICAgdWk6IHt3aWRnZXQ6ICdteVJhbmdlJywgbWluOiAtMTgwLCBtYXg6IDE4MCwgc3RlcDogMX0sXHJcbiAgLy8gfSlcclxuICBjZW50ZXJMbmcgPSAxMjAuNztcclxuICAvLyBAUHJvcGVydHkoJ+S4reW/g+e6rOW6picsIHtcclxuICAvLyAgIHVpOiB7d2lkZ2V0OiAnbXlSYW5nZScsIG1pbjogLTkwLCBtYXg6IDkwLCBzdGVwOiAxfSxcclxuICAvLyB9KVxyXG4gIGNlbnRlckxhdCA9IDI4O1xyXG4gIEBQcm9wZXJ0eSgn5pi+56S655yB5biCJywge1xyXG4gICAgdWk6IHtcclxuICAgICAgd2lkZ2V0OiAnbXlVcmxTZWxlY3QnLFxyXG4gICAgICBhbGxvd0NsZWFyOiB0cnVlLFxyXG4gICAgICB1cmw6ICcvYXNzZXRzL21hcExpc3RJdGVtLmpzb24nLFxyXG4gICAgfSxcclxuICB9KVxyXG4gIGNpdHlOYW1lID0gbnVsbDtcclxuICBwb2ludDogYW55O1xyXG5cclxuICAvLyBfZGF0YSA9IFtcclxuICAvLyAgIHtcclxuICAvLyAgICAgb3B0aW9uczoge1xyXG4gIC8vICAgICAgIGljb246IHtcclxuICAvLyAgICAgICAgIGltYWdlVXJsOiAnYXNzZXRzL2ltZy9zY3JlZW4vbnVtYmVyLWZsb3AucG5nJyxcclxuICAvLyAgICAgICAgIHNpemU6IHtcclxuICAvLyAgICAgICAgICAgaGVpZ2h0OiAyNjAsXHJcbiAgLy8gICAgICAgICAgIHdpZHRoOiAyNTBcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIHBvaW50OiB7XHJcbiAgLy8gICAgICAgbG5nOiAxMjAuNywgICAvLyDnu4/luqZcclxuICAvLyAgICAgICBsYXQ6IDI4LCAgICAvLyDnuqzluqZcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSxcclxuICAvLyBdO1xyXG4gIC8vIOaWh+Wtl+agh+azqFxyXG5cclxuICBwdWJsaWMgdGV4dDogc3RyaW5nO1xyXG4gIC8vIF9jaGlsZHJlbiA9IFtdO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBtYXA6IGFueTtcclxuICBlZGl0OiBib29sZWFuO1xyXG4gIC8vIG1hcmtlclRpZXJDbGljazogYW55O1xyXG4gIC8vIHBpbmd5YW5nID0gJyc7XHJcbiAgLy8gcnVpYW4gPSAnJztcclxuICBARGF0YSh7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgIGxuZzogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnu4/luqYnIH0sXHJcbiAgICAgIGxhdDogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnuqzluqYnIH0sXHJcbiAgICB9LFxyXG4gIH0pXHJcbiAgX2RhdGE6IGFueVtdID0gW3sgbG5nOiAxMjAuNywgbGF0OiAyOCB9XTtcclxuICBARGF0YU91dHB1dChbJ2xuZycsICdsYXQnXSlcclxuICBARXZlbnQoJ+S4reW/g+eCueaUueWPmCcsIHtcclxuICAgIHBhcmFtczogeyBwcm9wZXJ0aWVzOiB7IGxuZzogeyB0aXRsZTogJ+e7j+W6picsIHR5cGU6ICdudW1iZXInIH0sIGxhdDogeyB0aXRsZTogJ+e6rOW6picsIHR5cGU6ICdudW1iZXInIH0gfSB9LFxyXG4gIH0pXHJcbiAgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBARGF0YU91dHB1dCgn57yp5pS+562J57qnJylcclxuICBARXZlbnQoJ+e8qeaUvicsIHtcclxuICAgIHBhcmFtczogJ+e8qeaUvuetiee6pycsXHJcbiAgfSlcclxuICB6b29tQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQEV2ZW50KCflnLDlm77ngrnlh7snLCB7XHJcbiAgICBwYXJhbXM6IHsgcHJvcGVydGllczogeyBsbmc6IHsgdGl0bGU6ICfnu4/luqYnLCB0eXBlOiAnbnVtYmVyJyB9LCBsYXQ6IHsgdGl0bGU6ICfnuqzluqYnLCB0eXBlOiAnbnVtYmVyJyB9IH0gfSxcclxuICB9KVxyXG4gIG1hcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgY29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gIGNoaWxkcmVuOiBhbnlbXTtcclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZGVzdHJveWVkOiBib29sZWFuO1xyXG4gIC8vIGNvbnRhaW5lclN0eWxlOiBhbnkgPSB7fTtcclxuICAvLyB1bmxvYWRlZENoaWxkcmVuID0ge307XHJcbiAgb3ZlcmxheXNNYXAgPSB7fTtcclxuXHJcbiAgLy8gQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RhaWwnKVxyXG4gIC8vIGhpZGVJbmZvV2luZG93VGFpbDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBpbml0ZWQ6IChtYXA6IGFueSkgPT4gdm9pZDtcclxuICBpbml0JCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICB0aGlzLmluaXRlZCA9IHJlc29sdmU7XHJcbiAgfSk7XHJcbiAgdmlldzogYW55O1xyXG4gIHBpY2tlckV2ZW50OiBhbnk7XHJcbiAgcGlja2VySXRlbTogYW55O1xyXG4gIHBpY2tlclRpbWVvdXQ6IGFueTtcclxuICBtYXBUeXBlRW51bSA9IE1hcFR5cGVFbnVtLnNsaWNlKDAsIDMpO1xyXG4gIGRhcmtTdHlsZTogYW55O1xyXG4gIGZpcnN0T3BlbjogYm9vbGVhbjtcclxuICBmaXJzdE9wZW5Qcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBiYWlkdU1hcFNlcnZpY2U6IEJhaWR1TWFwU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY2FsZSQ6IFNjYWxlU3ViamVjdCxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB3aWRnZXRSZWY6IFdpZGdldFJlZixcclxuICApIHt9XHJcblxyXG4gIGdldCBlbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcclxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIGFkZExheWVyKGxheWVyOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnZpZXcpIHtcclxuICAgICAgdGhpcy52aWV3LmFkZExheWVyKGxheWVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUxheWVyKGxheWVyOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnZpZXcpIHtcclxuICAgICAgdGhpcy52aWV3LnJlbW92ZUxheWVyKGxheWVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLl9kYXRhICYmIHRoaXMuX2RhdGFbMF0pIHtcclxuICAgICAgdGhpcy5jZW50ZXJMbmcgPSArdGhpcy5fZGF0YVswXS5sbmc7XHJcbiAgICAgIHRoaXMuY2VudGVyTGF0ID0gK3RoaXMuX2RhdGFbMF0ubGF0O1xyXG4gICAgICB0aGlzLnNldENlbnRlcih0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zY2FsZSQpIHtcclxuICAgICAgLy8g6L+Z5piv5Li65LqG6Kej5Yaz5Zyw5Zu+57yp5pS+5Lit5b+D5LiN5Zyo6byg5qCH5omA5Zyo5L2N572u55qE6Zeu6aKYXHJcbiAgICAgIHRoaXMuc2NhbGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHNjYWxlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB4OiBzeCwgeTogc3ksIHNjYWxlQ29udGVudCB9ID0gc2NhbGUgYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5lbGVtZW50LnN0eWxlO1xyXG4gICAgICAgIGlmIChzY2FsZUNvbnRlbnQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL3RyYW5zbGF0ZVxcKChbLVxcZC5dKylweCwgKFstXFxkLl0rKXB4XFwpLy5leGVjKHBhcmVudC5zdHlsZS50cmFuc2Zvcm0pO1xyXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IHBhcnNlRmxvYXQobWF0Y2hbMl0pO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgkey1vZmZzZXRYfXB4LCR7LW9mZnNldFl9cHgpYDtcclxuICAgICAgICAgICAgICAgIHN0eWxlLmhlaWdodCA9IHBhcmVudC5jbGllbnRIZWlnaHQgKyBvZmZzZXRZICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIHN0eWxlLndpZHRoID0gcGFyZW50LmNsaWVudFdpZHRoICsgb2Zmc2V0WCArICdweCc7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5wYWRkaW5nID0gYCR7b2Zmc2V0WX1weCAwIDAgJHtvZmZzZXRYfXB4YDtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29udGFpbmVyU3R5bGUgPSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHRyYW5zZm9ybU9yaWdpbjogYDAgMGAsXHJcbiAgICAgICAgICAgICAgICAvLyAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgkey1vZmZzZXRYfXB4LCR7LW9mZnNldFl9cHgpYCxcclxuICAgICAgICAgICAgICAgIC8vICAgaGVpZ2h0OiBwYXJlbnQuY2xpZW50SGVpZ2h0ICsgb2Zmc2V0WSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAvLyAgIHdpZHRoOiBwYXJlbnQuY2xpZW50V2lkdGggKyBvZmZzZXRYICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIC8vICAgcGFkZGluZzogYCR7b2Zmc2V0WX1weCAwIDAgJHtvZmZzZXRYfXB4YCxcclxuICAgICAgICAgICAgICAgIC8vIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9zaXRpb24sIHNpemUgfSA9IHRoaXMud2lkZ2V0UmVmLndpZGdldCBhcyBhbnk7XHJcbiAgICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHBvc2l0aW9uO1xyXG4gICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzaXplO1xyXG4gICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgkey14fXB4LCR7LXl9cHgpIHNjYWxlKCR7MSAvIHN4fSwkezEgLyBzeX0pYDtcclxuICAgICAgICAgIHN0eWxlLmhlaWdodCA9ICh5ICsgaGVpZ2h0KSAqIHN5ICsgJ3B4JztcclxuICAgICAgICAgIHN0eWxlLndpZHRoID0gKHggKyB3aWR0aCkgKiBzeCArICdweCc7XHJcbiAgICAgICAgICBzdHlsZS5wYWRkaW5nID0gYCR7eSAqIHN5fXB4IDAgMCAke3ggKiBzeH1weGA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuaW5pdE1hcCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdE1hcCgpIHtcclxuICAgIGF3YWl0IHRoaXMuYmFpZHVNYXBTZXJ2aWNlLmxvYWRNYXBHTCgpO1xyXG4gICAgYXdhaXQgdGhpcy5iYWlkdU1hcFNlcnZpY2UubG9hZE1hcFZHTCgpO1xyXG4gICAgdGhpcy5tYXBUeXBlVmFsdWUgPSB0aGlzLm1hcFR5cGU7XHJcbiAgICAvLyDlhbzlrrnogIHnmoTphY3nva5cclxuICAgIGlmICh0aGlzLm1hcFR5cGUgPT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy51cGxvYWRTdHlsZSkge1xyXG4gICAgICAgIHRoaXMubWFwVHlwZVZhbHVlID0gJ2N1c3RvbSc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uaWdodE1vZGUpIHtcclxuICAgICAgICB0aGlzLm1hcFR5cGVWYWx1ZSA9ICdkYXJrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubWFwID0gbmV3IEJNYXBHTC5NYXAodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCwgeyByZXN0cmljdENlbnRlcjogZmFsc2UgfSk7XHJcbiAgICAgICAgdGhpcy5tYXAuY2VudGVyQW5kWm9vbShuZXcgQk1hcEdMLlBvaW50KHRoaXMuY2VudGVyTG5nLCB0aGlzLmNlbnRlckxhdCksIHRoaXMuem9vbSk7IC8vIOiuvue9ruS4reW/g+eCueWSjOe8qeaUvue6p+WIq1xyXG4gICAgICAgIHRoaXMubWFwLmVuYWJsZVNjcm9sbFdoZWVsWm9vbSgpOyAvLyDlkK/nlKjmu5rova7ov5vooYznvKnmlL7lip/og71cclxuICAgICAgICAvLyB2YXIgZGlzdCA9IG5ldyBCTWFwR0wuRGlzdHJpY3RMYXllcih7XHJcbiAgICAgICAgLy8gICBuYW1lOiAnKOa4qeW3nuW4giknLFxyXG4gICAgICAgIC8vICAga2luZDogMSxcclxuICAgICAgICAvLyAgICBmaWxsQ29sb3I6ICcjZmZmJyxcclxuICAgICAgICAvLyAgIGZpbGxPcGFjaXR5OiAwLjEsXHJcbiAgICAgICAgLy8gICBzdHJva2VDb2xvcjogJyNkYWVhZmEnLFxyXG4gICAgICAgIC8vICAgdmlld3BvcnQ6IHRydWUsXHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgLy8gdGhpcy5tYXAuYWRkRGlzdHJpY3RMYXllcihkaXN0KTtcclxuICAgICAgICB0aGlzLm1hcFR5cGVDaGFuZ2UodGhpcy5tYXBUeXBlVmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXQgfHwgdGhpcy5kcmFnZ2luZyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHRoaXMubWFwLmRpc2FibGVEcmFnZ2luZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5lbmFibGUzRCkge1xyXG4gICAgICAgICAgdGhpcy5tYXAuc2V0VGlsdCh0aGlzLnRpbHQgPT0gbnVsbCA/IDczIDogdGhpcy50aWx0LCB7IG5vQW5pbWF0aW9uOiB0cnVlIH0pO1xyXG4gICAgICAgICAgdGhpcy5tYXAuc2V0RGlzcGxheU9wdGlvbnMoeyBza3lDb2xvcnM6IFsncmdiYSgwLCAwLCAwLCAwKSddIH0pOyAvLyDpmpDol4/lpKnnqbpcclxuICAgICAgICAgIC8vIGNvbnN0IG5hdmkzREN0cmwgPSBuZXcgQk1hcEdMLk5hdmlnYXRpb25Db250cm9sM0QoKTsgLy8g5re75YqgM0Tmjqfku7ZcclxuICAgICAgICAgIC8vIHRoaXMubWFwLmFkZENvbnRyb2wobmF2aTNEQ3RybCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWFwLmRpc2FibGVUaWx0KCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlUm90YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNob3dMb2NhdGlvbkNvbnRyb2wpIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIC8vIOaOp+S7tueahOWBnOmdoOS9jee9ru+8iOWPr+mAie+8jOm7mOiupOW3puS4iuinku+8iVxyXG4gICAgICAgICAgICBhbmNob3I6IEJNQVBfQU5DSE9SX1RPUF9MRUZULFxyXG4gICAgICAgICAgICAvLyDmjqfku7bln7rkuo7lgZzpnaDkvY3nva7nmoTlgY/np7vph4/vvIjlj6/pgInvvIlcclxuICAgICAgICAgICAgb2Zmc2V0OiBuZXcgQk1hcEdMLlNpemUoMjAsIDIwKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBsZXQgbG9jYXRpb25Db250cm9sID0gbmV3IEJNYXBHTC5Mb2NhdGlvbkNvbnRyb2wob3B0aW9ucyk7XHJcbiAgICAgICAgICAvLyDlsIbmjqfku7bmt7vliqDliLDlnLDlm77kuIpcclxuICAgICAgICAgIHRoaXMubWFwLmFkZENvbnRyb2wobG9jYXRpb25Db250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubWluTWFwU2hvdykge1xyXG4gICAgICAgICAgY29uc3Qgc3RDdHJsID0gbmV3IEJNYXBHTC5QYW5vcmFtYUNvbnRyb2woKTtcclxuICAgICAgICAgIHN0Q3RybC5zZXRPZmZzZXQobmV3IEJNYXBHTC5TaXplKDIwLCAyMCkpO1xyXG4gICAgICAgICAgdGhpcy5tYXAuYWRkQ29udHJvbChzdEN0cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCkge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWJhY2tncm91bmQnLCB0aGlzLmluZm9XaW5kb3dCYWNrZ3JvdW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5mb1dpbmRvd0NvbG9yKSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taW5mby13aW5kb3ctY29sb3InLCB0aGlzLmluZm9XaW5kb3dDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcikge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWJvcmRlci1jb2xvcicsIHRoaXMuaW5mb1dpbmRvd0JvcmRlckNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignbW92ZWVuZCcsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdChjZW50ZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWFwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1hcENsaWNrLmVtaXQoZXZlbnQucG9pbnRlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignem9vbWVuZCcsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy56b29tQ2hhbmdlLmVtaXQodGhpcy5tYXAuZ2V0Wm9vbSgpKTtcclxuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMubWFwLmdldENlbnRlcigpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZpZXcgPSBuZXcgbWFwdmdsLlZpZXcoe1xyXG4gICAgICAgICAgbWFwOiB0aGlzLm1hcCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1hcExvYWRlZCh0aGlzLm1hcCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmluaXRlZCh0aGlzLm1hcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDZW50ZXIobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5tYXAgJiYgbG5nICYmIGxhdCkge1xyXG4gICAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgICAgaWYgKGNlbnRlci5sbmcgIT0gbG5nIHx8IGNlbnRlci5sYXQgIT0gbGF0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRDZW50ZXJBbmRab29tKGxuZywgbGF0LCB0aGlzLm1hcC5nZXRab29tKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDZW50ZXJBbmRab29tKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRab29tID0gdGhpcy5tYXAuZ2V0Wm9vbSgpO1xyXG4gICAgLy8g6K+v5beu6IyD5Zu05YaF5LiN56e75YqoLOmYsuatouiDjOaZr+aKluWKqFxyXG4gICAgaWYgKHpvb20gIT0gY3VycmVudFpvb20gfHwgTWF0aC5hYnMobG5nIC0gY2VudGVyLmxuZykgPiAxZS0xMyB8fCBNYXRoLmFicyhsYXQgLSBjZW50ZXIubGF0KSA+IDFlLTcpIHtcclxuICAgICAgY29uc3QgcG9pbnQgPSBuZXcgQk1hcEdMLlBvaW50KGxuZywgbGF0KTtcclxuICAgICAgdGhpcy5tYXAuY2VudGVyQW5kWm9vbShwb2ludCwgem9vbSwgeyB0aWx0OiB0aGlzLm1hcC5nZXRUaWx0KCkgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja7nu4/nuqzluqbojIPlm7Torr7nva7kuK3lv4PlkoznvKnmlL7nrYnnuqdcclxuICAgKiBAcGFyYW0gbWluTG5nXHJcbiAgICogQHBhcmFtIG1heExuZ1xyXG4gICAqIEBwYXJhbSBtaW5MYXRcclxuICAgKiBAcGFyYW0gbWF4TGF0XHJcbiAgICovXHJcbiAgc2V0UmVjdENlbnRlckFuZFpvb20obWluTG5nOiBudW1iZXIsIG1heExuZzogbnVtYmVyLCBtaW5MYXQ6IG51bWJlciwgbWF4TGF0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2V0Q2VudGVyQW5kWm9vbSgobWF4TG5nICsgbWluTG5nKSAvIDIsIChtYXhMYXQgKyBtaW5MYXQpIC8gMiwgdGhpcy5nZXRab29tKG1heExuZywgbWluTG5nLCBtYXhMYXQsIG1pbkxhdCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Wm9vbShtYXhMbmc6IG51bWJlciwgbWluTG5nOiBudW1iZXIsIG1heExhdDogbnVtYmVyLCBtaW5MYXQ6IG51bWJlcikge1xyXG4gICAgY29uc3Qgem9vbXMgPSBbXHJcbiAgICAgIDUwLCAxMDAsIDIwMCwgNTAwLCAxMDAwLCAyMDAwLCA1MDAwLCAxMDAwMCwgMjAwMDAsIDI1MDAwLCA1MDAwMCwgMTAwMDAwLCAyMDAwMDAsIDUwMDAwMCwgMTAwMDAwMCwgMjAwMDAwMCxcclxuICAgIF07IC8v57qn5YirMTjliLAz44CCXHJcbiAgICBjb25zdCBwb2ludEEgPSBuZXcgQk1hcEdMLlBvaW50KG1heExuZywgbWF4TGF0KTsgLy8g5Yib5bu654K55Z2Q5qCHQVxyXG4gICAgY29uc3QgcG9pbnRCID0gbmV3IEJNYXBHTC5Qb2ludChtaW5MbmcsIG1pbkxhdCk7IC8vIOWIm+W7uueCueWdkOagh0JcclxuICAgIGNvbnN0IGRpc3RhbmNlID0gK3RoaXMubWFwLmdldERpc3RhbmNlKHBvaW50QSwgcG9pbnRCKS50b0ZpeGVkKDEpOyAvL+iOt+WPluS4pOeCuei3neemuyzkv53nlZnlsI/mlbDngrnlkI7kuKTkvY1cclxuICAgIGNvbnN0IGkgPSB6b29tcy5maW5kSW5kZXgoKHpvb20pID0+IHpvb20gLSBkaXN0YW5jZSA+IDApO1xyXG4gICAgaWYgKGkgPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiA1O1xyXG4gICAgfVxyXG4gICAgLy/kuYvmiYDku6XkvJrlpJoz77yM5piv5Zug5Li65Zyw5Zu+6IyD5Zu05bi45bi45piv5q+U5L6L5bC66Led56a755qEMTDlgI3ku6XkuIrjgILmiYDku6XnuqfliKvkvJrlop7liqAz44CCXHJcbiAgICByZXR1cm4gMTggLSBpICsgMztcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvV2luZG93KGRhdGE6IGFueSwgbG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XHJcbiAgICBpZiAoZGF0YS5pbmZvcm1hdGlvbiB8fCB0aGlzLmluZm9XaW5kb3dUZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBwb2ludCA9IG5ldyBCTWFwR0wuUG9pbnQoK2xuZywgK2xhdCk7XHJcbiAgICAgIC8vIGxldCBvZmZzZXRZID0gLTI1O1xyXG4gICAgICAvLyBpZiAodGhpcy5oaWRlSW5mb1dpbmRvd1RhaWwpIHtcclxuICAgICAgLy8gICBvZmZzZXRZID0gMDtcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQgaW5mb3JtYXRpb24gPSBkYXRhLmluZm9ybWF0aW9uO1xyXG4gICAgICBpZiAodGhpcy5pbmZvV2luZG93VGVtcGxhdGUpIHtcclxuICAgICAgICBpbmZvcm1hdGlvbiA9IFRlbXBsYXRlVXRpbC5wYXJzZSh0aGlzLmluZm9XaW5kb3dUZW1wbGF0ZSwgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBvZmZzZXQ6IG5ldyBCTWFwR0wuU2l6ZSgwLCAwKSxcclxuICAgICAgICB3aWR0aDogdGhpcy5pbmZvV2luZG93V2lkdGggfHwgMCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMuaW5mb1dpbmRvd0hlaWdodCB8fCAwLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IEJNYXBHTC5JbmZvV2luZG93KGluZm9ybWF0aW9uLCBvcHRpb25zKTtcclxuICAgICAgLy8g56ys5LiA5qyh5omT5byA5L+h5oGv56qX5Y+j5ZCO5Zyo55+t5pe26Ze05YWz6Zet5oiW6YeN5paw5omT5byA5Lya5a+86Ie0Y2xpY2vkuovku7blpLHmlYjvvIzkuLTml7bop6PlhrPmlrnmoYjmmK/nrKzkuIDmrKHmiZPlvIDlkI4wLjXnp5LlhoXkuI3lhbPpl61cclxuICAgICAgaWYgKCF0aGlzLmZpcnN0T3Blbikge1xyXG4gICAgICAgIGlmICh0aGlzLmZpcnN0T3BlblByb21pc2UpIHtcclxuICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlyc3RPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmZpcnN0T3BlblByb21pc2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByYXdDbG9zZSA9IGluZm9XaW5kb3cuY2xvc2U7XHJcbiAgICAgICAgaW5mb1dpbmRvdy5jbG9zZSA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZpcnN0T3BlblByb21pc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5maXJzdE9wZW5Qcm9taXNlLnRoZW4oKCkgPT4gcmF3Q2xvc2UuY2FsbChpbmZvV2luZG93KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByYXdDbG9zZS5jYWxsKGluZm9XaW5kb3cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbmZvV2luZG93O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2FudmFzT3ZlcmxheShjaGlsZDogYW55KSB7XHJcbiAgICBsZXQgY2FudmFzT3ZlcmxheTtcclxuICAgIGlmICh0aGlzLmVuYWJsZTNEKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSBjaGlsZC5pdGVtO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIHZhciBwU3RhcnQgPSBuZXcgQk1hcEdMLlBvaW50KGl0ZW0uc3RhcnQubG5nLCBpdGVtLnN0YXJ0LmxhdCk7XHJcbiAgICAgICAgdmFyIHBFbmQgPSBuZXcgQk1hcEdMLlBvaW50KGl0ZW0uZW5kLmxuZywgaXRlbS5lbmQubGF0KTtcclxuICAgICAgICB2YXIgYm91bmRzID0gbmV3IEJNYXBHTC5Cb3VuZHMobmV3IEJNYXBHTC5Qb2ludChwU3RhcnQubG5nLCBwRW5kLmxhdCksIG5ldyBCTWFwR0wuUG9pbnQocEVuZC5sbmcsIHBTdGFydC5sYXQpKTtcclxuICAgICAgICBjYW52YXNPdmVybGF5ID0gbmV3IEJNYXBHTC5Hcm91bmRPdmVybGF5KGJvdW5kcywge1xyXG4gICAgICAgICAgdHlwZTogJ2NhbnZhcycsXHJcbiAgICAgICAgICB1cmw6IGl0ZW0uY2FudmFzLFxyXG4gICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcG9pbnRUb1BpeGVsID0gKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBwb2ludCA9IG5ldyBCTWFwR0wuUG9pbnQoZGF0YS5sbmcsIGRhdGEubGF0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5tYXAucG9pbnRUb1BpeGVsKHBvaW50KTtcclxuICAgICAgfTtcclxuICAgICAgY2FudmFzT3ZlcmxheSA9IG5ldyBCTWFwR0wuQ2FudmFzTGF5ZXIoe1xyXG4gICAgICAgIHBhbmVOYW1lOiAnbWFya2VyU2hhZG93JyxcclxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHZhciBjdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7XHJcbiAgICAgICAgICBjaGlsZC51cGRhdGUoY3R4LCBwb2ludFRvUGl4ZWwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbnZhc092ZXJsYXk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXApIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLm1hcC5kZXN0cm95KCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBtYXBMb2FkZWQobWFwOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNpdHlOYW1lKSB7XHJcbiAgICAgIGlmICh0aGlzLmNpdHlOYW1lID09PSAn5rip5beeJykge1xyXG4gICAgICAgIHRoaXMuY2l0eU5hbWUgPSAnd2VuemhvdSc7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QganNvbjogYW55ID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vJyArIHRoaXMuY2l0eU5hbWUgKyAnLmpzb24nKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgcG9seWdvbkRhdGEgPSBbXTtcclxuICAgICAgbGV0IGVuY29kZVNjYWxlID0ganNvbi5VVEY4U2NhbGUgfHwgMTAyNDtcclxuICAgICAganNvbi5mZWF0dXJlcy5mb3JFYWNoKCh7IGdlb21ldHJ5IH0pID0+IHtcclxuICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlcyA9IChnZW9tZXRyeS5jb29yZGluYXRlcyBhcyBhbnlbXSkuZm9yRWFjaCgoY29vcmRpbmF0ZSwgaSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGNvb3JkaW5hdGUgYXMgYW55W10pLm1hcCgocG9pbnRzLCBqKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGpzb24uVVRGOEVuY29kaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBwb2ludHMgPSB0aGlzLmRlY29kZVBvbHlnb24ocG9pbnRzLCBnZW9tZXRyeS5lbmNvZGVPZmZzZXRzW2ldW2pdLCBlbmNvZGVTY2FsZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBwb2ludHM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBwb2x5Z29uRGF0YS5wdXNoKGNvb3JkaW5hdGVzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChqc29uLlVURjhFbmNvZGluZykge1xyXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGUgPSB0aGlzLmRlY29kZVBvbHlnb24oY29vcmRpbmF0ZSwgZ2VvbWV0cnkuZW5jb2RlT2Zmc2V0c1tpXSwgZW5jb2RlU2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBvbHlnb25EYXRhLnB1c2goW2Nvb3JkaW5hdGVdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcclxuICAgICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb2x5Z29uRGF0YSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgdmFyIGxheWVyID0gbmV3IG1hcHZnbC5Qb2x5Z29uTGF5ZXIoe1xyXG4gICAgICAgIGxpbmVDb2xvcjogdGhpcy5tYXBDaXR5Q29sb3IsXHJcbiAgICAgICAgbGluZVdpZHRoOiB0aGlzLnN0cm9rZXNpemUgfHwgMixcclxuICAgICAgICBmaWxsQ29sb3I6IHRoaXMuc2hhZGVDb2xvcixcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHJlbmRlck9yZGVyOiAtMixcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudmlldy5hZGRMYXllcihsYXllcik7XHJcbiAgICAgIGlmICh0aGlzLm1hcEJhY2tDb2xvciAmJiAhdGhpcy5tYXBCYWNrQ29sb3IubWF0Y2goL3JnYmFcXChcXGQrLFxcZCssXFxkKywwXFwpLykpIHtcclxuICAgICAgICB2YXIgbWFza0xheWVyID0gbmV3IG1hcHZnbC5NYXNrTGF5ZXIoe1xyXG4gICAgICAgICAgY29sb3I6IHRoaXMubWFwQmFja0NvbG9yLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHJlbmRlck9yZGVyOiAtMyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZpZXcuYWRkTGF5ZXIobWFza0xheWVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVjb2RlUG9seWdvbihjb29yZGluYXRlOiBzdHJpbmcsIGVuY29kZU9mZnNldHM6IG51bWJlcltdLCBlbmNvZGVTY2FsZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgIGxldCBwcmV2WCA9IGVuY29kZU9mZnNldHNbMF07XHJcbiAgICBsZXQgcHJldlkgPSBlbmNvZGVPZmZzZXRzWzFdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICB2YXIgeCA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpKSAtIDY0O1xyXG4gICAgICB2YXIgeSA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpICsgMSkgLSA2NDtcclxuICAgICAgLy8gWmlnWmFnIGRlY29kaW5nXHJcbiAgICAgIHggPSAoeCA+PiAxKSBeIC0oeCAmIDEpO1xyXG4gICAgICB5ID0gKHkgPj4gMSkgXiAtKHkgJiAxKTtcclxuICAgICAgLy8gRGVsdGEgZGVvY2RpbmdcclxuICAgICAgeCArPSBwcmV2WDtcclxuICAgICAgeSArPSBwcmV2WTtcclxuXHJcbiAgICAgIHByZXZYID0geDtcclxuICAgICAgcHJldlkgPSB5O1xyXG4gICAgICAvLyBEZXF1YW50aXplXHJcbiAgICAgIHJlc3VsdC5wdXNoKFt4IC8gZW5jb2RlU2NhbGUsIHkgLyBlbmNvZGVTY2FsZV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBtYXBUeXBlQ2hhbmdlKG1hcFR5cGU6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChtYXBUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ2RhcmsnOlxyXG4gICAgICAgIGlmICghdGhpcy5kYXJrU3R5bGUpIHtcclxuICAgICAgICAgIHRoaXMuZGFya1N0eWxlID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vY3VzdG9tX21hcC5qc29uJykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBTdHlsZVYyKHsgc3R5bGVKc29uOiB0aGlzLmRhcmtTdHlsZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2F0ZWxsaXRlJzpcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfU0FURUxMSVRFX01BUCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkU3R5bGUpIHtcclxuICAgICAgICAgIGNvbnN0IHN0eWxlSnNvbiA9IGF3YWl0IHRoaXMuaHR0cC5nZXQodGhpcy51cGxvYWRTdHlsZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXRNYXBTdHlsZVYyKHsgc3R5bGVKc29uIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogbnVsbCB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19