nsc-react-component 2.10.30 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/.babelrc +2 -2
  2. package/lib/Interface.js +1 -1
  3. package/lib/Interface.js.map +1 -0
  4. package/lib/base/affix/index.js +5 -47
  5. package/lib/base/affix/index.js.map +1 -0
  6. package/lib/base/alert/index.js +5 -47
  7. package/lib/base/alert/index.js.map +1 -0
  8. package/lib/base/anchor/index.d.ts +1 -1
  9. package/lib/base/anchor/index.js +8 -50
  10. package/lib/base/anchor/index.js.map +1 -0
  11. package/lib/base/avatar/index.d.ts +1 -1
  12. package/lib/base/avatar/index.js +8 -50
  13. package/lib/base/avatar/index.js.map +1 -0
  14. package/lib/base/backTop/index.js +5 -47
  15. package/lib/base/backTop/index.js.map +1 -0
  16. package/lib/base/badge/index.d.ts +1 -1
  17. package/lib/base/badge/index.js +8 -50
  18. package/lib/base/badge/index.js.map +1 -0
  19. package/lib/base/breadcrumb/index.js +5 -47
  20. package/lib/base/breadcrumb/index.js.map +1 -0
  21. package/lib/base/button/index.d.ts +1 -1
  22. package/lib/base/button/index.js +93 -135
  23. package/lib/base/button/index.js.map +1 -0
  24. package/lib/base/calendar/index.js +5 -47
  25. package/lib/base/calendar/index.js.map +1 -0
  26. package/lib/base/card/index.d.ts +2 -2
  27. package/lib/base/card/index.js +8 -51
  28. package/lib/base/card/index.js.map +1 -0
  29. package/lib/base/carousel/index.js +5 -47
  30. package/lib/base/carousel/index.js.map +1 -0
  31. package/lib/base/cascader/index.d.ts +3 -3
  32. package/lib/base/cascader/index.js +156 -224
  33. package/lib/base/cascader/index.js.map +1 -0
  34. package/lib/base/chart/index.d.ts +2 -2
  35. package/lib/base/chart/index.js +177 -287
  36. package/lib/base/chart/index.js.map +1 -0
  37. package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
  38. package/lib/base/checkbox/CheckboxGroup.js +165 -259
  39. package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
  40. package/lib/base/checkbox/index.d.ts +2 -2
  41. package/lib/base/checkbox/index.js +8 -49
  42. package/lib/base/checkbox/index.js.map +1 -0
  43. package/lib/base/collapse/index.d.ts +1 -1
  44. package/lib/base/collapse/index.js +8 -50
  45. package/lib/base/collapse/index.js.map +1 -0
  46. package/lib/base/colorpicker/index.d.ts +5 -0
  47. package/lib/base/colorpicker/index.js +8 -0
  48. package/lib/base/colorpicker/index.js.map +1 -0
  49. package/lib/base/common/BodyRow/index.js +48 -102
  50. package/lib/base/common/BodyRow/index.js.map +1 -0
  51. package/lib/base/common/EllipseCell/index.d.ts +1 -1
  52. package/lib/base/common/EllipseCell/index.js +16 -58
  53. package/lib/base/common/EllipseCell/index.js.map +1 -0
  54. package/lib/base/common/FileIcon.d.ts +2 -2
  55. package/lib/base/common/FileIcon.js +86 -132
  56. package/lib/base/common/FileIcon.js.map +1 -0
  57. package/lib/base/common/Icon.d.ts +2 -2
  58. package/lib/base/common/Icon.js +42 -96
  59. package/lib/base/common/Icon.js.map +1 -0
  60. package/lib/base/common/IconData.js +2 -2
  61. package/lib/base/common/IconData.js.map +1 -0
  62. package/lib/base/common/IconFont.d.ts +2 -2
  63. package/lib/base/common/IconFont.js +7 -8
  64. package/lib/base/common/IconFont.js.map +1 -0
  65. package/lib/base/common/NoAuthority.d.ts +2 -2
  66. package/lib/base/common/NoAuthority.js +13 -53
  67. package/lib/base/common/NoAuthority.js.map +1 -0
  68. package/lib/base/common/NoData.d.ts +2 -2
  69. package/lib/base/common/NoData.js +29 -74
  70. package/lib/base/common/NoData.js.map +1 -0
  71. package/lib/base/common/NoData.less +8 -2
  72. package/lib/base/common/NoMessage.d.ts +2 -2
  73. package/lib/base/common/NoMessage.js +30 -70
  74. package/lib/base/common/NoMessage.js.map +1 -0
  75. package/lib/base/common/NoNetWork.d.ts +2 -2
  76. package/lib/base/common/NoNetWork.js +30 -70
  77. package/lib/base/common/NoNetWork.js.map +1 -0
  78. package/lib/base/common/Page404.d.ts +2 -2
  79. package/lib/base/common/Page404.js +30 -70
  80. package/lib/base/common/Page404.js.map +1 -0
  81. package/lib/base/common/PageRequest.js +91 -154
  82. package/lib/base/common/PageRequest.js.map +1 -0
  83. package/lib/base/common/TreePanel.d.ts +1 -1
  84. package/lib/base/common/TreePanel.js +133 -212
  85. package/lib/base/common/TreePanel.js.map +1 -0
  86. package/lib/base/common/iconfontalibaba.js +15 -22
  87. package/lib/base/common/iconfontalibaba.js.map +1 -0
  88. package/lib/base/common/withZhLocale.d.ts +1 -1
  89. package/lib/base/common/withZhLocale.js +3 -8
  90. package/lib/base/common/withZhLocale.js.map +1 -0
  91. package/lib/base/configProvider/index.js +8 -50
  92. package/lib/base/configProvider/index.js.map +1 -0
  93. package/lib/base/datepick/Rangepicker.d.ts +4 -4
  94. package/lib/base/datepick/Rangepicker.js +231 -330
  95. package/lib/base/datepick/Rangepicker.js.map +1 -0
  96. package/lib/base/datepick/index.d.ts +2 -2
  97. package/lib/base/datepick/index.js +56 -115
  98. package/lib/base/datepick/index.js.map +1 -0
  99. package/lib/base/datepick/index.less +5 -5
  100. package/lib/base/descriptions/index.d.ts +1 -1
  101. package/lib/base/descriptions/index.js +8 -50
  102. package/lib/base/descriptions/index.js.map +1 -0
  103. package/lib/base/divider/index.js +5 -47
  104. package/lib/base/divider/index.js.map +1 -0
  105. package/lib/base/download/index.js +42 -84
  106. package/lib/base/download/index.js.map +1 -0
  107. package/lib/base/drawer/index.d.ts +2 -11
  108. package/lib/base/drawer/index.js +8 -57
  109. package/lib/base/drawer/index.js.map +1 -0
  110. package/lib/base/dropdown/index.js +19 -66
  111. package/lib/base/dropdown/index.js.map +1 -0
  112. package/lib/base/editor/index.d.ts +1 -1
  113. package/lib/base/editor/index.js +83 -128
  114. package/lib/base/editor/index.js.map +1 -0
  115. package/lib/base/errorboundary/index.js +19 -63
  116. package/lib/base/errorboundary/index.js.map +1 -0
  117. package/lib/base/form/Form.d.ts +2 -2
  118. package/lib/base/form/Form.js +302 -429
  119. package/lib/base/form/Form.js.map +1 -0
  120. package/lib/base/form/filed/Cascader.d.ts +2 -2
  121. package/lib/base/form/filed/Cascader.js +6 -45
  122. package/lib/base/form/filed/Cascader.js.map +1 -0
  123. package/lib/base/form/filed/Checkbox.d.ts +2 -2
  124. package/lib/base/form/filed/Checkbox.js +6 -45
  125. package/lib/base/form/filed/Checkbox.js.map +1 -0
  126. package/lib/base/form/filed/DatePicker.d.ts +2 -2
  127. package/lib/base/form/filed/DatePicker.js +6 -45
  128. package/lib/base/form/filed/DatePicker.js.map +1 -0
  129. package/lib/base/form/filed/FormItem.d.ts +2 -2
  130. package/lib/base/form/filed/FormItem.js +64 -128
  131. package/lib/base/form/filed/FormItem.js.map +1 -0
  132. package/lib/base/form/filed/Input.d.ts +2 -2
  133. package/lib/base/form/filed/Input.js +14 -51
  134. package/lib/base/form/filed/Input.js.map +1 -0
  135. package/lib/base/form/filed/InputEamil.d.ts +2 -2
  136. package/lib/base/form/filed/InputEamil.js +5 -44
  137. package/lib/base/form/filed/InputEamil.js.map +1 -0
  138. package/lib/base/form/filed/InputNumber.d.ts +2 -2
  139. package/lib/base/form/filed/InputNumber.js +5 -44
  140. package/lib/base/form/filed/InputNumber.js.map +1 -0
  141. package/lib/base/form/filed/InputPassword.d.ts +2 -2
  142. package/lib/base/form/filed/InputPassword.js +5 -44
  143. package/lib/base/form/filed/InputPassword.js.map +1 -0
  144. package/lib/base/form/filed/Item.d.ts +3 -3
  145. package/lib/base/form/filed/Item.js +90 -164
  146. package/lib/base/form/filed/Item.js.map +1 -0
  147. package/lib/base/form/filed/Radio.d.ts +2 -2
  148. package/lib/base/form/filed/Radio.js +7 -45
  149. package/lib/base/form/filed/Radio.js.map +1 -0
  150. package/lib/base/form/filed/RangerPicker.d.ts +2 -2
  151. package/lib/base/form/filed/RangerPicker.js +6 -45
  152. package/lib/base/form/filed/RangerPicker.js.map +1 -0
  153. package/lib/base/form/filed/Rate.d.ts +2 -2
  154. package/lib/base/form/filed/Rate.js +6 -47
  155. package/lib/base/form/filed/Rate.js.map +1 -0
  156. package/lib/base/form/filed/Select.d.ts +2 -2
  157. package/lib/base/form/filed/Select.js +9 -49
  158. package/lib/base/form/filed/Select.js.map +1 -0
  159. package/lib/base/form/filed/Slider.d.ts +2 -2
  160. package/lib/base/form/filed/Slider.js +6 -47
  161. package/lib/base/form/filed/Slider.js.map +1 -0
  162. package/lib/base/form/filed/Switch.d.ts +2 -2
  163. package/lib/base/form/filed/Switch.js +6 -47
  164. package/lib/base/form/filed/Switch.js.map +1 -0
  165. package/lib/base/form/filed/TagSelect.d.ts +2 -2
  166. package/lib/base/form/filed/TagSelect.js +6 -45
  167. package/lib/base/form/filed/TagSelect.js.map +1 -0
  168. package/lib/base/form/filed/TextArea.d.ts +2 -2
  169. package/lib/base/form/filed/TextArea.js +5 -44
  170. package/lib/base/form/filed/TextArea.js.map +1 -0
  171. package/lib/base/form/filed/Upload.d.ts +2 -2
  172. package/lib/base/form/filed/Upload.js +9 -45
  173. package/lib/base/form/filed/Upload.js.map +1 -0
  174. package/lib/base/form/index.d.ts +2 -2
  175. package/lib/base/form/index.js +17 -59
  176. package/lib/base/form/index.js.map +1 -0
  177. package/lib/base/grid/Col.js +5 -47
  178. package/lib/base/grid/Col.js.map +1 -0
  179. package/lib/base/grid/Row.js +5 -47
  180. package/lib/base/grid/Row.js.map +1 -0
  181. package/lib/base/grid/index.js +1 -1
  182. package/lib/base/grid/index.js.map +1 -0
  183. package/lib/base/iframe/index.d.ts +1 -1
  184. package/lib/base/iframe/index.js +44 -94
  185. package/lib/base/iframe/index.js.map +1 -0
  186. package/lib/base/image/index.js +159 -260
  187. package/lib/base/image/index.js.map +1 -0
  188. package/lib/base/input/Email.d.ts +2 -2
  189. package/lib/base/input/Email.js +55 -104
  190. package/lib/base/input/Email.js.map +1 -0
  191. package/lib/base/input/Number.d.ts +1 -1
  192. package/lib/base/input/Number.js +46 -105
  193. package/lib/base/input/Number.js.map +1 -0
  194. package/lib/base/input/Password.d.ts +1 -1
  195. package/lib/base/input/Password.js +46 -105
  196. package/lib/base/input/Password.js.map +1 -0
  197. package/lib/base/input/Search.d.ts +1 -1
  198. package/lib/base/input/Search.js +44 -103
  199. package/lib/base/input/Search.js.map +1 -0
  200. package/lib/base/input/TextArea.d.ts +1 -1
  201. package/lib/base/input/TextArea.js +62 -124
  202. package/lib/base/input/TextArea.js.map +1 -0
  203. package/lib/base/input/index.d.ts +3 -3
  204. package/lib/base/input/index.js +119 -196
  205. package/lib/base/input/index.js.map +1 -0
  206. package/lib/base/layout/index.d.ts +3 -3
  207. package/lib/base/layout/index.js +14 -57
  208. package/lib/base/layout/index.js.map +1 -0
  209. package/lib/base/list/index.d.ts +1 -1
  210. package/lib/base/list/index.js +8 -50
  211. package/lib/base/list/index.js.map +1 -0
  212. package/lib/base/menu/index.d.ts +7 -7
  213. package/lib/base/menu/index.js +100 -166
  214. package/lib/base/menu/index.js.map +1 -0
  215. package/lib/base/message/index.d.ts +8 -9
  216. package/lib/base/message/index.js +5 -49
  217. package/lib/base/message/index.js.map +1 -0
  218. package/lib/base/modal/Confirm.d.ts +1 -1
  219. package/lib/base/modal/Confirm.js +15 -23
  220. package/lib/base/modal/Confirm.js.map +1 -0
  221. package/lib/base/modal/index.d.ts +8 -8
  222. package/lib/base/modal/index.js +275 -363
  223. package/lib/base/modal/index.js.map +1 -0
  224. package/lib/base/modal/index.less +8 -8
  225. package/lib/base/notification/index.d.ts +8 -10
  226. package/lib/base/notification/index.js +12 -57
  227. package/lib/base/notification/index.js.map +1 -0
  228. package/lib/base/pagination/index.js +5 -47
  229. package/lib/base/pagination/index.js.map +1 -0
  230. package/lib/base/pdfviwer/index.d.ts +1 -1
  231. package/lib/base/pdfviwer/index.js +68 -93
  232. package/lib/base/pdfviwer/index.js.map +1 -0
  233. package/lib/base/popconfirm/index.js +5 -47
  234. package/lib/base/popconfirm/index.js.map +1 -0
  235. package/lib/base/popover/index.js +19 -66
  236. package/lib/base/popover/index.js.map +1 -0
  237. package/lib/base/progress/index.js +5 -47
  238. package/lib/base/progress/index.js.map +1 -0
  239. package/lib/base/qecode/index.d.ts +5 -0
  240. package/lib/base/qecode/index.js +8 -0
  241. package/lib/base/qecode/index.js.map +1 -0
  242. package/lib/base/radio/RadioGroup.d.ts +1 -1
  243. package/lib/base/radio/RadioGroup.js +198 -296
  244. package/lib/base/radio/RadioGroup.js.map +1 -0
  245. package/lib/base/radio/index.d.ts +2 -2
  246. package/lib/base/radio/index.js +8 -51
  247. package/lib/base/radio/index.js.map +1 -0
  248. package/lib/base/result/index.js +5 -47
  249. package/lib/base/result/index.js.map +1 -0
  250. package/lib/base/select/index.d.ts +4 -4
  251. package/lib/base/select/index.js +351 -468
  252. package/lib/base/select/index.js.map +1 -0
  253. package/lib/base/skeleton/index.js +5 -47
  254. package/lib/base/skeleton/index.js.map +1 -0
  255. package/lib/base/space/index.js +5 -47
  256. package/lib/base/space/index.js.map +1 -0
  257. package/lib/base/spin/index.js +5 -47
  258. package/lib/base/spin/index.js.map +1 -0
  259. package/lib/base/statistic/index.d.ts +1 -1
  260. package/lib/base/statistic/index.js +8 -50
  261. package/lib/base/statistic/index.js.map +1 -0
  262. package/lib/base/steps/index.d.ts +1 -1
  263. package/lib/base/steps/index.js +8 -50
  264. package/lib/base/steps/index.js.map +1 -0
  265. package/lib/base/switch/index.js +5 -47
  266. package/lib/base/switch/index.js.map +1 -0
  267. package/lib/base/table/index.d.ts +9 -8
  268. package/lib/base/table/index.js +747 -934
  269. package/lib/base/table/index.js.map +1 -0
  270. package/lib/base/table/index.module.less +14 -12
  271. package/lib/base/tabs/Tabpane.d.ts +1 -1
  272. package/lib/base/tabs/Tabpane.js +22 -59
  273. package/lib/base/tabs/Tabpane.js.map +1 -0
  274. package/lib/base/tabs/index.d.ts +1 -1
  275. package/lib/base/tabs/index.js +110 -158
  276. package/lib/base/tabs/index.js.map +1 -0
  277. package/lib/base/tabs/index.less +4 -4
  278. package/lib/base/tagSelect/TagSelect.d.ts +3 -3
  279. package/lib/base/tagSelect/TagSelect.js +124 -214
  280. package/lib/base/tagSelect/TagSelect.js.map +1 -0
  281. package/lib/base/tagSelect/index.d.ts +3 -3
  282. package/lib/base/tagSelect/index.js +90 -145
  283. package/lib/base/tagSelect/index.js.map +1 -0
  284. package/lib/base/tagSelect/index.less +4 -4
  285. package/lib/base/timeline/index.js +8 -50
  286. package/lib/base/timeline/index.js.map +1 -0
  287. package/lib/base/tooltip/index.js +19 -66
  288. package/lib/base/tooltip/index.js.map +1 -0
  289. package/lib/base/tour/index.d.ts +5 -0
  290. package/lib/base/tour/index.js +8 -0
  291. package/lib/base/tour/index.js.map +1 -0
  292. package/lib/base/transfer/index.js +5 -47
  293. package/lib/base/transfer/index.js.map +1 -0
  294. package/lib/base/tree/TreeSearch.d.ts +3 -3
  295. package/lib/base/tree/TreeSearch.js +121 -194
  296. package/lib/base/tree/TreeSearch.js.map +1 -0
  297. package/lib/base/tree/index.d.ts +7 -7
  298. package/lib/base/tree/index.js +169 -243
  299. package/lib/base/tree/index.js.map +1 -0
  300. package/lib/base/treeselect/index.js +5 -47
  301. package/lib/base/treeselect/index.js.map +1 -0
  302. package/lib/base/typography/index.js +5 -47
  303. package/lib/base/typography/index.js.map +1 -0
  304. package/lib/base/upload/Dragger.js +363 -542
  305. package/lib/base/upload/Dragger.js.map +1 -0
  306. package/lib/base/upload/Upload.d.ts +3 -1
  307. package/lib/base/upload/Upload.js +352 -530
  308. package/lib/base/upload/Upload.js.map +1 -0
  309. package/lib/base/upload/index copy.d.ts +1 -1
  310. package/lib/base/upload/index copy.js +315 -432
  311. package/lib/base/upload/index copy.js.map +1 -0
  312. package/lib/base/upload/index.js +365 -591
  313. package/lib/base/upload/index.js.map +1 -0
  314. package/lib/base/upload/index.less +12 -12
  315. package/lib/base/watermark/index.d.ts +5 -0
  316. package/lib/base/watermark/index.js +8 -0
  317. package/lib/base/watermark/index.js.map +1 -0
  318. package/lib/config.js +5 -8
  319. package/lib/config.js.map +1 -0
  320. package/lib/constants.js +2 -2
  321. package/lib/constants.js.map +1 -0
  322. package/lib/index.d.ts +4 -2
  323. package/lib/index.js +6 -3
  324. package/lib/index.js.map +1 -0
  325. package/lib/page/BasePage/Form.d.ts +1 -1
  326. package/lib/page/BasePage/Form.js +253 -360
  327. package/lib/page/BasePage/Form.js.map +1 -0
  328. package/lib/page/BasePage/index copy.d.ts +107 -0
  329. package/lib/page/BasePage/index copy.js +857 -0
  330. package/lib/page/BasePage/index copy.js.map +1 -0
  331. package/lib/page/BasePage/index.d.ts +4 -3
  332. package/lib/page/BasePage/index.js +767 -935
  333. package/lib/page/BasePage/index.js.map +1 -0
  334. package/lib/page/BasePage/index.module copy.less +143 -0
  335. package/lib/page/BasePage/index.module.less +55 -45
  336. package/lib/page/HeaderSearch/index.d.ts +2 -1
  337. package/lib/page/HeaderSearch/index.js +198 -273
  338. package/lib/page/HeaderSearch/index.js.map +1 -0
  339. package/lib/page/HeaderSearch/index.less +7 -7
  340. package/lib/page/PasswordCheck/index.d.ts +1 -1
  341. package/lib/page/PasswordCheck/index.js +50 -109
  342. package/lib/page/PasswordCheck/index.js.map +1 -0
  343. package/lib/page/PasswordCheck/index.less +2 -2
  344. package/lib/treeUtils.js +45 -58
  345. package/lib/treeUtils.js.map +1 -0
  346. package/lib/utils.d.ts +2 -2
  347. package/lib/utils.js +48 -61
  348. package/lib/utils.js.map +1 -0
  349. package/package.json +102 -98
  350. package/.vscode/settings.json +0 -3
  351. package/lib/base/comment/index.d.ts +0 -5
  352. package/lib/base/comment/index.js +0 -50
  353. package/lib/base/form/index.less +0 -41
  354. package/lib/base/pageHeader/index.d.ts +0 -5
  355. package/lib/base/pageHeader/index.js +0 -50
@@ -1,52 +1,10 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- import "antd/es/upload/style/css";
4
1
  import _Upload from "antd/es/upload";
5
-
6
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
7
-
8
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
-
10
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
-
12
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
-
14
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
15
-
16
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
-
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
-
24
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
25
-
26
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
27
-
28
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29
-
30
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
31
-
32
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
33
-
34
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
35
-
36
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
37
-
38
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
39
-
40
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
41
-
42
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
43
-
44
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
45
-
46
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
47
-
48
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
-
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
50
8
  import * as React from "react";
51
9
  import file from "nsc-file";
52
10
  import message from "../message";
@@ -58,410 +16,335 @@ import cls from "classnames";
58
16
  import FileIcon from "../common/FileIcon";
59
17
  import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
60
18
  import PdfViewer from "../pdfviwer";
61
- var upload = file.upload,
62
- download = file.download;
63
-
64
- var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
65
- _inherits(NscUpload, _React$PureComponent);
66
-
67
- var _super = _createSuper(NscUpload);
68
-
69
- function NscUpload() {
70
- var _this;
71
-
72
- _classCallCheck(this, NscUpload);
73
-
74
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
75
- args[_key] = arguments[_key];
76
- }
77
-
78
- _this = _super.call.apply(_super, [this].concat(args));
79
-
80
- _defineProperty(_assertThisInitialized(_this), "state", {
19
+ const {
20
+ upload,
21
+ download
22
+ } = file;
23
+ class NscUpload extends React.PureComponent {
24
+ constructor() {
25
+ super(...arguments);
26
+ _defineProperty(this, "state", {
81
27
  fileList: [],
82
28
  viewId: ""
83
29
  });
84
-
85
- _defineProperty(_assertThisInitialized(_this), "customRequest", /*#__PURE__*/function () {
86
- var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) {
87
- var file, _this$props, onComplete, onProcess, sliceSize, _this$props2, maxSize, allowFileSuffix, size, onProgress, res, fileId;
88
-
89
- return regeneratorRuntime.wrap(function _callee$(_context) {
90
- while (1) {
91
- switch (_context.prev = _context.next) {
92
- case 0:
93
- file = options.file;
94
- _this$props = _this.props, onComplete = _this$props.onComplete, onProcess = _this$props.onProcess, sliceSize = _this$props.sliceSize;
95
- _this$props2 = _this.props, maxSize = _this$props2.maxSize, allowFileSuffix = _this$props2.allowFileSuffix;
96
-
97
- if (!(allowFileSuffix && !_this.checkFileType(file))) {
98
- _context.next = 8;
99
- break;
100
- }
101
-
102
- message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
103
- onComplete && onComplete({
104
- file: options.file,
105
- fileId: "",
106
- status: "error"
107
- });
108
- options.onError();
109
- return _context.abrupt("return", false);
110
-
111
- case 8:
112
- if (!maxSize) {
113
- _context.next = 15;
114
- break;
115
- }
116
-
117
- size = maxSize * 1024 * 1024;
118
-
119
- if (!(size < file.size)) {
120
- _context.next = 15;
121
- break;
122
- }
123
-
124
- message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
125
- onComplete && onComplete({
126
- file: options.file,
127
- fileId: "",
128
- status: "error"
129
- });
130
- options.onError();
131
- return _context.abrupt("return", false);
132
-
133
- case 15:
134
- onProgress = function onProgress(totalProgress) {
135
- options.onProgress({
136
- percent: totalProgress
137
- }, file);
138
-
139
- _this.onProcess({
140
- percent: totalProgress,
141
- file: file
142
- });
143
-
144
- onProcess && onProcess({
145
- percent: totalProgress,
146
- file: file
147
- });
148
- };
149
-
150
- _context.prev = 16;
151
- _context.next = 19;
152
- return upload({
153
- file: file,
154
- onProgress: onProgress,
155
- partSize: sliceSize
156
- });
157
-
158
- case 19:
159
- res = _context.sent;
160
- fileId = null;
161
-
162
- if (res.code == 200) {
163
- fileId = res.data.attachId;
164
- options.onSuccess();
165
- } else {
166
- options.onError();
167
- }
168
-
169
- _this.onComplete({
170
- file: options.file,
171
- fileId: fileId,
172
- status: res.code == 200 ? "success" : "error"
173
- });
174
-
175
- onComplete && onComplete({
176
- file: options.file,
177
- fileId: fileId,
178
- status: res.code == 200 ? "success" : "error"
179
- });
180
- _context.next = 31;
181
- break;
182
-
183
- case 26:
184
- _context.prev = 26;
185
- _context.t0 = _context["catch"](16);
186
-
187
- _this.onComplete({
188
- file: options.file,
189
- fileId: "",
190
- status: "error"
191
- });
192
-
193
- onComplete && onComplete({
194
- file: options.file,
195
- fileId: "",
196
- status: "error"
197
- });
198
- options.onError();
199
-
200
- case 31:
201
- case "end":
202
- return _context.stop();
203
- }
204
- }
205
- }, _callee, null, [[16, 26]]);
206
- }));
207
-
208
- return function (_x) {
209
- return _ref.apply(this, arguments);
210
- };
211
- }());
212
-
213
- return _this;
214
- }
215
-
216
- _createClass(NscUpload, [{
217
- key: "componentDidMount",
218
- value: function componentDidMount() {
219
- if (this.props.fileList) {
220
- this.convertFileList();
30
+ _defineProperty(this, "customRequest", async options => {
31
+ const file = options.file;
32
+ const {
33
+ onComplete,
34
+ onProcess,
35
+ sliceSize
36
+ } = this.props;
37
+ const {
38
+ maxSize,
39
+ allowFileSuffix
40
+ } = this.props;
41
+ if (allowFileSuffix && !this.checkFileType(file)) {
42
+ message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
43
+ onComplete && onComplete({
44
+ file: options.file,
45
+ fileId: "",
46
+ status: "error"
47
+ });
48
+ options.onError();
49
+ return false;
221
50
  }
222
- }
223
- }, {
224
- key: "convertFileList",
225
- value: function convertFileList(list) {
226
- var fileList = this.props.fileList;
227
- var newFileList = [];
228
- var oldList = list ? list : fileList;
229
- oldList.map(function (item) {
230
- var temp = _objectSpread({}, item);
231
-
232
- if (!item.name) {
233
- temp.name = item.fileName;
51
+ if (maxSize) {
52
+ const size = maxSize * 1024 * 1024;
53
+ if (size < file.size) {
54
+ message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
55
+ onComplete && onComplete({
56
+ file: options.file,
57
+ fileId: "",
58
+ status: "error"
59
+ });
60
+ options.onError();
61
+ return false;
234
62
  }
235
-
236
- newFileList.push(temp);
237
- });
238
- this.setState({
239
- fileList: newFileList
240
- });
241
- }
242
- }, {
243
- key: "componentDidUpdate",
244
- value: function componentDidUpdate(preProps, preState) {
245
- if (this.props.fileList) {
246
- if (JSON.stringify(preState.fileList) !== JSON.stringify(this.props.fileList)) {
247
- this.convertFileList();
63
+ }
64
+ const onProgress = totalProgress => {
65
+ options.onProgress({
66
+ percent: totalProgress
67
+ }, file);
68
+ this.onProcess({
69
+ percent: totalProgress,
70
+ file: file
71
+ });
72
+ onProcess && onProcess({
73
+ percent: totalProgress,
74
+ file: file
75
+ });
76
+ };
77
+ try {
78
+ const res = await upload({
79
+ file: file,
80
+ onProgress: onProgress,
81
+ partSize: sliceSize
82
+ });
83
+ let fileId = null;
84
+ if (res.code == 200) {
85
+ fileId = res.data.attachId;
86
+ options.onSuccess();
87
+ } else {
88
+ options.onError();
248
89
  }
90
+ this.onComplete({
91
+ file: options.file,
92
+ fileId: fileId,
93
+ status: res.code == 200 ? "success" : "error"
94
+ });
95
+ onComplete && onComplete({
96
+ file: options.file,
97
+ fileId: fileId,
98
+ status: res.code == 200 ? "success" : "error"
99
+ });
100
+ } catch (e) {
101
+ this.onComplete({
102
+ file: options.file,
103
+ fileId: "",
104
+ status: "error"
105
+ });
106
+ onComplete && onComplete({
107
+ file: options.file,
108
+ fileId: "",
109
+ status: "error"
110
+ });
111
+ options.onError();
249
112
  }
113
+ });
114
+ }
115
+ componentDidMount() {
116
+ if (this.props.fileList) {
117
+ this.convertFileList();
250
118
  }
251
- }, {
252
- key: "getFileList",
253
- value: function getFileList() {
254
- return this.state.fileList;
255
- }
256
- }, {
257
- key: "setFileList",
258
- value: function setFileList(fileList) {
259
- this.convertFileList(fileList);
260
- }
261
- }, {
262
- key: "beforeUpload",
263
- value: function beforeUpload(file) {
264
- var fileList = this.state.fileList;
265
- var onListChange = this.props.onListChange;
266
- var newList = [].concat(_toConsumableArray(fileList), [{
267
- fileName: file.name,
268
- percent: 0,
269
- status: "uploading",
270
- uid: file.uid,
271
- name: file.name
272
- }]);
273
- this.setState({
274
- fileList: newList
275
- });
276
- onListChange && onListChange(newList);
277
- }
278
- }, {
279
- key: "checkFileType",
280
- value: function checkFileType(file) {
281
- var allowFileSuffix = this.props.allowFileSuffix;
282
- var names = file.name.split(".");
283
- var suffix = names[names.length - 1];
284
-
285
- if (allowFileSuffix.indexOf(suffix) > -1) {
286
- return true;
119
+ }
120
+ convertFileList(list) {
121
+ const {
122
+ fileList
123
+ } = this.props;
124
+ const newFileList = [];
125
+ let oldList = list ? list : fileList;
126
+ oldList.map(item => {
127
+ let temp = _objectSpread({}, item);
128
+ if (!item.name) {
129
+ temp.name = item.fileName;
130
+ }
131
+ newFileList.push(temp);
132
+ });
133
+ this.setState({
134
+ fileList: newFileList
135
+ });
136
+ }
137
+ componentDidUpdate(preProps, preState) {
138
+ if (this.props.fileList) {
139
+ if (JSON.stringify(preState.fileList) !== JSON.stringify(this.props.fileList)) {
140
+ this.convertFileList();
287
141
  }
288
-
289
- return false;
290
- }
291
- }, {
292
- key: "onProcess",
293
- value: function onProcess(_ref2) {
294
- var percent = _ref2.percent,
295
- file = _ref2.file;
296
- var fileList = this.state.fileList;
297
- var onListChange = this.props.onListChange;
298
- var newList = [];
299
- fileList.map(function (item) {
300
- var newFile = _objectSpread({}, item);
301
-
302
- if (file.uid == item.uid) {
303
- newFile.percent = percent;
304
- }
305
-
306
- newList.push(newFile);
307
- });
308
- this.setState({
309
- fileList: newList
310
- });
311
- onListChange && onListChange(newList);
312
- }
313
- }, {
314
- key: "onComplete",
315
- value: function onComplete(file) {
316
- var fileList = this.state.fileList;
317
- var onListChange = this.props.onListChange;
318
- var newList = [];
319
- fileList.map(function (item) {
320
- var newFile = _objectSpread({}, item);
321
-
322
- if (file.file.uid == item.uid) {
323
- newFile.status = file.status == "success" ? "done" : file.status;
324
- newFile.fileId = file.fileId;
325
- }
326
-
327
- newList.push(newFile);
328
- });
329
- this.setState({
330
- fileList: newList
331
- });
332
- onListChange && onListChange(newList);
333
142
  }
334
- }, {
335
- key: "onDelete",
336
- value: function onDelete(file) {
337
- var fileList = this.state.fileList;
338
- var onListChange = this.props.onListChange;
339
- var newList = [];
340
- fileList.map(function (item) {
341
- if (item.fileId !== file.fileId || item.uid !== file.uid) {
342
- newList.push(item);
343
- }
344
- });
345
- this.setState({
346
- fileList: newList
347
- });
348
- onListChange && onListChange(newList);
143
+ }
144
+ getFileList() {
145
+ return this.state.fileList;
146
+ }
147
+ setFileList(fileList) {
148
+ this.convertFileList(fileList);
149
+ }
150
+ beforeUpload(file) {
151
+ const {
152
+ fileList
153
+ } = this.state;
154
+ const {
155
+ onListChange
156
+ } = this.props;
157
+ const newList = [...fileList, {
158
+ fileName: file.name,
159
+ percent: 0,
160
+ status: "uploading",
161
+ uid: file.uid,
162
+ name: file.name
163
+ }];
164
+ this.setState({
165
+ fileList: newList
166
+ });
167
+ onListChange && onListChange(newList);
168
+ }
169
+ checkFileType(file) {
170
+ const {
171
+ allowFileSuffix
172
+ } = this.props;
173
+ const names = file.name.split(".");
174
+ const suffix = names[names.length - 1];
175
+ if (allowFileSuffix.indexOf(suffix) > -1) {
176
+ return true;
349
177
  }
350
- }, {
351
- key: "render",
352
- value: function render() {
353
- var _this2 = this;
354
-
355
- var _this$props3 = this.props,
356
- useDefaultList = _this$props3.useDefaultList,
357
- fileList = _this$props3.fileList,
358
- fileCard = _this$props3.fileCard,
359
- _this$props3$showUplo = _this$props3.showUploadList,
360
- showUploadList = _this$props3$showUplo === void 0 ? {
178
+ return false;
179
+ }
180
+ onProcess(_ref) {
181
+ let {
182
+ percent,
183
+ file
184
+ } = _ref;
185
+ const {
186
+ fileList
187
+ } = this.state;
188
+ const {
189
+ onListChange
190
+ } = this.props;
191
+ const newList = [];
192
+ fileList.map(item => {
193
+ const newFile = _objectSpread({}, item);
194
+ if (file.uid == item.uid) {
195
+ newFile.percent = percent;
196
+ }
197
+ newList.push(newFile);
198
+ });
199
+ this.setState({
200
+ fileList: newList
201
+ });
202
+ onListChange && onListChange(newList);
203
+ }
204
+ onComplete(file) {
205
+ const {
206
+ fileList
207
+ } = this.state;
208
+ const {
209
+ onListChange
210
+ } = this.props;
211
+ const newList = [];
212
+ fileList.map(item => {
213
+ const newFile = _objectSpread({}, item);
214
+ if (file.file.uid == item.uid) {
215
+ newFile.status = file.status == "success" ? "done" : file.status;
216
+ newFile.fileId = file.fileId;
217
+ }
218
+ newList.push(newFile);
219
+ });
220
+ this.setState({
221
+ fileList: newList
222
+ });
223
+ onListChange && onListChange(newList);
224
+ }
225
+ onDelete(file) {
226
+ const {
227
+ fileList
228
+ } = this.state;
229
+ const {
230
+ onListChange
231
+ } = this.props;
232
+ const newList = [];
233
+ fileList.map(item => {
234
+ if (item.fileId !== file.fileId || item.uid !== file.uid) {
235
+ newList.push(item);
236
+ }
237
+ });
238
+ this.setState({
239
+ fileList: newList
240
+ });
241
+ onListChange && onListChange(newList);
242
+ }
243
+ render() {
244
+ let {
245
+ useDefaultList,
246
+ fileList,
247
+ fileCard,
248
+ showUploadList = {
361
249
  showDownloadIcon: true,
362
250
  showPreviewIcon: false,
363
251
  showRemoveIcon: true,
364
252
  downloadIcon: null,
365
253
  removeIcon: null,
366
254
  previewIcon: null
367
- } : _this$props3$showUplo;
368
- var newFileList = this.state.fileList;
369
-
370
- if (useDefaultList && fileList) {
371
- newFileList = fileList;
372
255
  }
373
-
374
- var newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
375
- var defaultProps = {
376
- customRequest: this.customRequest.bind(this),
377
- multiple: true,
378
- beforeUpload: this.beforeUpload.bind(this)
379
- };
380
-
381
- if (fileCard) {
382
- defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
383
- itemRender: function itemRender(originNode, file, currFileList) {
384
- var name = file.name || file.fileName;
385
- var names = name === null || name === void 0 ? void 0 : name.split(".");
386
- var suffix = names ? names[names.length - 1] : "";
387
- return /*#__PURE__*/React.createElement("div", {
388
- className: getLess(styles, "file-item")
389
- }, /*#__PURE__*/React.createElement("div", {
390
- className: cls(getLess(styles, "content"), _defineProperty({}, getLess(styles, "content_error"), file.status == "error"))
391
- }, /*#__PURE__*/React.createElement("div", {
392
- className: getLess(styles, "mark-picture")
393
- }, /*#__PURE__*/React.createElement(FileIcon, {
394
- suffix: suffix,
395
- fileId: file.fileId
396
- })), /*#__PURE__*/React.createElement("div", {
397
- className: getLess(styles, "name")
398
- }, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
399
- className: getLess(styles, "icon")
400
- }, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
401
- onClick: function onClick() {
402
- if (_this2.props.onDownload) {
403
- _this2.props.onDownload(file);
404
- } else {
405
- download(file.fileId);
406
- }
407
- },
408
- style: {
409
- cursor: "pointer"
410
- }
411
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
412
- onClick: function onClick() {
413
- if (_this2.props.onDownload) {
414
- _this2.props.onDownload(file);
415
- } else {
416
- download(file.fileId);
417
- }
418
- },
419
- style: {
420
- cursor: "pointer"
256
+ } = this.props;
257
+ let newFileList = this.state.fileList;
258
+ if (useDefaultList && fileList) {
259
+ newFileList = fileList;
260
+ }
261
+ const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
262
+ let defaultProps = {
263
+ customRequest: this.customRequest.bind(this),
264
+ multiple: true,
265
+ beforeUpload: this.beforeUpload.bind(this)
266
+ };
267
+ if (fileCard) {
268
+ defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
269
+ itemRender: (originNode, file, currFileList) => {
270
+ const name = file.name || file.fileName;
271
+ const names = name.split(".");
272
+ const suffix = names ? names[names.length - 1] : "";
273
+ return /*#__PURE__*/React.createElement("div", {
274
+ className: getLess(styles, "file-item")
275
+ }, /*#__PURE__*/React.createElement("div", {
276
+ className: cls(getLess(styles, "content"), {
277
+ [getLess(styles, "content_error")]: file.status == "error"
278
+ })
279
+ }, /*#__PURE__*/React.createElement("div", {
280
+ className: getLess(styles, "mark-picture")
281
+ }, /*#__PURE__*/React.createElement(FileIcon, {
282
+ suffix: suffix,
283
+ fileId: file.fileId
284
+ })), /*#__PURE__*/React.createElement("div", {
285
+ className: getLess(styles, "name")
286
+ }, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
287
+ className: getLess(styles, "icon")
288
+ }, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
289
+ onClick: () => {
290
+ if (this.props.onDownload) {
291
+ this.props.onDownload(file);
292
+ } else {
293
+ download(file.fileId);
421
294
  }
422
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
423
- onClick: function onClick() {
424
- if (_this2.props.onRemove) {
425
- _this2.props.onRemove(file);
426
- } else {
427
- _this2.onDelete(file);
428
- }
429
- },
430
- style: {
431
- cursor: "pointer"
295
+ },
296
+ style: {
297
+ cursor: "pointer"
298
+ }
299
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
300
+ onClick: () => {
301
+ if (this.props.onDownload) {
302
+ this.props.onDownload(file);
303
+ } else {
304
+ download(file.fileId);
432
305
  }
433
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
434
- className: getLess(styles, "process")
435
- }, /*#__PURE__*/React.createElement("div", {
436
- className: getLess(styles, "percent"),
437
- style: {
438
- width: file.percent + "%"
306
+ },
307
+ style: {
308
+ cursor: "pointer"
309
+ }
310
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
311
+ onClick: () => {
312
+ if (this.props.onRemove) {
313
+ this.props.onRemove(file);
314
+ } else {
315
+ this.onDelete(file);
439
316
  }
440
- })));
441
- }
442
- });
443
- } else {
444
- defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
445
- onDownload: function onDownload(file) {
446
- download(file.fileId);
447
- },
448
- onRemove: function onRemove(file) {
449
- _this2.onDelete(file);
450
- },
451
- showUploadList: _objectSpread({}, showUploadList)
452
- });
453
- }
454
-
455
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({
456
- fileList: this.state.fileList
457
- }, defaultProps, newprops)), /*#__PURE__*/React.createElement(PdfViewer, {
458
- fileId: this.state.viewId
459
- }));
317
+ },
318
+ style: {
319
+ cursor: "pointer"
320
+ }
321
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
322
+ className: getLess(styles, "process")
323
+ }, /*#__PURE__*/React.createElement("div", {
324
+ className: getLess(styles, "percent"),
325
+ style: {
326
+ width: file.percent + "%"
327
+ }
328
+ })));
329
+ }
330
+ });
331
+ } else {
332
+ defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
333
+ onDownload: file => {
334
+ download(file.fileId);
335
+ },
336
+ onRemove: file => {
337
+ this.onDelete(file);
338
+ },
339
+ showUploadList: _objectSpread({}, showUploadList)
340
+ });
460
341
  }
461
- }]);
462
-
463
- return NscUpload;
464
- }(React.PureComponent);
465
-
342
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({
343
+ fileList: this.state.fileList
344
+ }, defaultProps, newprops)), /*#__PURE__*/React.createElement(PdfViewer, {
345
+ fileId: this.state.viewId
346
+ }));
347
+ }
348
+ }
466
349
  export default withZhLocale(NscUpload);
467
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4IGNvcHkudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiZmlsZSIsIm1lc3NhZ2UiLCJ3aXRoWmhMb2NhbGUiLCJvbWl0IiwiZ2V0TGVzcyIsInN0eWxlcyIsImNscyIsIkZpbGVJY29uIiwiRGVsZXRlT3V0bGluZWQiLCJEb3dubG9hZE91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJQZGZWaWV3ZXIiLCJ1cGxvYWQiLCJkb3dubG9hZCIsIk5zY1VwbG9hZCIsImZpbGVMaXN0Iiwidmlld0lkIiwib3B0aW9ucyIsInByb3BzIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJuYW1lIiwiZmlsZUlkIiwic3RhdHVzIiwib25FcnJvciIsInNpemUiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJwYXJ0U2l6ZSIsInJlcyIsImNvZGUiLCJkYXRhIiwiYXR0YWNoSWQiLCJvblN1Y2Nlc3MiLCJjb252ZXJ0RmlsZUxpc3QiLCJsaXN0IiwibmV3RmlsZUxpc3QiLCJvbGRMaXN0IiwibWFwIiwiaXRlbSIsInRlbXAiLCJmaWxlTmFtZSIsInB1c2giLCJzZXRTdGF0ZSIsInByZVByb3BzIiwicHJlU3RhdGUiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdGUiLCJvbkxpc3RDaGFuZ2UiLCJuZXdMaXN0IiwidWlkIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsImxlbmd0aCIsImluZGV4T2YiLCJuZXdGaWxlIiwidXNlRGVmYXVsdExpc3QiLCJmaWxlQ2FyZCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dQcmV2aWV3SWNvbiIsInNob3dSZW1vdmVJY29uIiwiZG93bmxvYWRJY29uIiwicmVtb3ZlSWNvbiIsInByZXZpZXdJY29uIiwibmV3cHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJjdXN0b21SZXF1ZXN0IiwiYmluZCIsIm11bHRpcGxlIiwiYmVmb3JlVXBsb2FkIiwiaXRlbVJlbmRlciIsIm9yaWdpbk5vZGUiLCJjdXJyRmlsZUxpc3QiLCJvbkRvd25sb2FkIiwiY3Vyc29yIiwib25SZW1vdmUiLCJvbkRlbGV0ZSIsIndpZHRoIiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUVBLE9BQU9DLElBQVAsTUFBaUIsVUFBakI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLFlBQXBCO0FBQ0EsT0FBT0MsWUFBUCxNQUF5Qix3QkFBekI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixhQUF4QjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLFlBQWhCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixvQkFBckI7QUFDQSxTQUNFQyxjQURGLEVBRUVDLGdCQUZGLEVBR0VDLFdBSEYsUUFJTyxtQkFKUDtBQUtBLE9BQU9DLFNBQVAsTUFBc0IsYUFBdEI7QUFDQSxJQUFRQyxNQUFSLEdBQTZCWixJQUE3QixDQUFRWSxNQUFSO0FBQUEsSUFBZ0JDLFFBQWhCLEdBQTZCYixJQUE3QixDQUFnQmEsUUFBaEI7O0lBWU1DLFM7Ozs7Ozs7Ozs7Ozs7Ozs7NERBQ0k7QUFBRUMsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLE1BQU0sRUFBRTtBQUF4QixLOzs7eUVBK0ZRLGlCQUFPQyxPQUFQO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDUmpCLGdCQUFBQSxJQURRLEdBQ0RpQixPQUFPLENBQUNqQixJQURQO0FBQUEsOEJBRStCLE1BQUtrQixLQUZwQyxFQUVOQyxVQUZNLGVBRU5BLFVBRk0sRUFFTUMsU0FG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Q0QsV0FQUztBQVFWa0UsVUFBQUEsY0FBYyxvQkFBT0EsY0FBUDtBQVJKLFVBQVo7QUFVRDs7QUFDRCwwQkFDRSx1REFDRTtBQUNFLFFBQUEsUUFBUSxFQUFFLEtBQUtaLEtBQUwsQ0FBV3ZDO0FBRHZCLFNBRU0yRCxZQUZOLEVBR01ELFFBSE4sRUFERixlQU1FLG9CQUFDLFNBQUQ7QUFBVyxRQUFBLE1BQU0sRUFBRSxLQUFLbkIsS0FBTCxDQUFXdEM7QUFBOUIsUUFORixDQURGO0FBVUQ7Ozs7RUE3VHFCakIsS0FBSyxDQUFDd0YsYTs7QUErVDlCLGVBQWVyRixZQUFZLENBQUNZLFNBQUQsQ0FBM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBEZWxldGVPdXRsaW5lZCxcclxuICBEb3dubG9hZE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgUGRmVmlld2VyIGZyb20gXCIuLi9wZGZ2aXdlclwiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyO1xyXG4gIG9uUHJvY2Vzcz86IChwcm9jZXNzKSA9PiB2b2lkO1xyXG4gIG9uQ29tcGxldGU/OiAoeyBmaWxlLCBmaWxlSWQsIHN0YXR1cyB9KSA9PiB2b2lkO1xyXG4gIGFsbG93RmlsZVN1ZmZpeD86IEFycmF5PFN0cmluZz47IC8v5YWB6K645LiK5Lyg5omp5bGV5ZCNLOS4jeW4pi5cclxuICB1c2VEZWZhdWx0TGlzdD86IGJvb2xlYW47IC8v5piv5ZCm5L2/55So6buY6K6k55qEZmlsZUxpc3RcclxuICBmaWxlQ2FyZD86IGJvb2xlYW47XHJcbiAgb25MaXN0Q2hhbmdlPzogYW55O1xyXG59XHJcbmNsYXNzIE5zY1VwbG9hZCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHsgZmlsZUxpc3Q6IFtdLCB2aWV3SWQ6IFwiXCIgfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICghaXRlbS5uYW1lKSB7XHJcbiAgICAgICAgdGVtcC5uYW1lID0gaXRlbS5maWxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0ZpbGVMaXN0LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmVQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShwcmVTdGF0ZS5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBiZWZvcmVVcGxvYWQoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdCA9IFtcclxuICAgICAgLi4uZmlsZUxpc3QsXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgc3RhdHVzOiBcInVwbG9hZGluZ1wiLFxyXG4gICAgICAgIHVpZDogZmlsZS51aWQsXHJcbiAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogbmV3TGlzdCB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuYW1lcyA9IGZpbGUubmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICBjb25zdCBzdWZmaXggPSBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXTtcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIG9uUHJvY2Vzcyh7IHBlcmNlbnQsIGZpbGUgfTogYW55KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgb25Db21wbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBtYXhTaXplLCBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChtYXhTaXplKSB7XHJcbiAgICAgIGNvbnN0IHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZCh7XHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBcIlwiLFxyXG4gICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8IGl0ZW0udWlkICE9PSBmaWxlLnVpZCkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgdXNlRGVmYXVsdExpc3QsXHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld0ZpbGVMaXN0ID0gdGhpcy5zdGF0ZS5maWxlTGlzdDtcclxuICAgIGlmICh1c2VEZWZhdWx0TGlzdCAmJiBmaWxlTGlzdCkge1xyXG4gICAgICBuZXdGaWxlTGlzdCA9IGZpbGVMaXN0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICBiZWZvcmVVcGxvYWQ6IHRoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyksXHJcbiAgICB9IGFzIElVcGxvYWRQcm9wcztcclxuICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgY29uc3QgbmFtZXMgPSBuYW1lPy5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJmaWxlLWl0ZW1cIil9PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnRfZXJyb3JcIildOiBmaWxlLnN0YXR1cyA9PSBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibWFyay1waWN0dXJlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibmFtZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdDogeyAuLi5zaG93VXBsb2FkTGlzdCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPD5cclxuICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgLz5cclxuICAgICAgICA8UGRmVmlld2VyIGZpbGVJZD17dGhpcy5zdGF0ZS52aWV3SWR9IC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5zY1VwbG9hZCk7XHJcbiJdfQ==
350
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiUGRmVmlld2VyIiwidXBsb2FkIiwiZG93bmxvYWQiLCJOc2NVcGxvYWQiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJmaWxlTGlzdCIsInZpZXdJZCIsIm9wdGlvbnMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwicHJvcHMiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY29uY2F0IiwibmFtZSIsImZpbGVJZCIsInN0YXR1cyIsIm9uRXJyb3IiLCJzaXplIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicmVzIiwicGFydFNpemUiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsImZpbGVOYW1lIiwicHVzaCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRGaWxlTGlzdCIsInN0YXRlIiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvbkxpc3RDaGFuZ2UiLCJuZXdMaXN0IiwidWlkIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsImxlbmd0aCIsImluZGV4T2YiLCJfcmVmIiwibmV3RmlsZSIsIm9uRGVsZXRlIiwicmVuZGVyIiwidXNlRGVmYXVsdExpc3QiLCJmaWxlQ2FyZCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dQcmV2aWV3SWNvbiIsInNob3dSZW1vdmVJY29uIiwiZG93bmxvYWRJY29uIiwicmVtb3ZlSWNvbiIsInByZXZpZXdJY29uIiwibmV3cHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJjdXN0b21SZXF1ZXN0IiwiYmluZCIsIm11bHRpcGxlIiwiaXRlbVJlbmRlciIsIm9yaWdpbk5vZGUiLCJjdXJyRmlsZUxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwib25DbGljayIsIm9uRG93bmxvYWQiLCJzdHlsZSIsImN1cnNvciIsIm9uUmVtb3ZlIiwid2lkdGgiLCJGcmFnbWVudCIsIl9VcGxvYWQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4IGNvcHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCB9ID0gZmlsZTtcclxuXHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXI7XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiB9O1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKCFpdGVtLm5hbWUpIHtcclxuICAgICAgICB0ZW1wLm5hbWUgPSBpdGVtLmZpbGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3RmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZVN0YXRlLmZpbGVMaXN0KSAhPT1cclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmZpbGVMaXN0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGJlZm9yZVVwbG9hZChmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0ID0gW1xyXG4gICAgICAuLi5maWxlTGlzdCxcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgdWlkOiBmaWxlLnVpZCxcclxuICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgY2hlY2tGaWxlVHlwZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgb25Qcm9jZXNzKHsgcGVyY2VudCwgZmlsZSB9OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAoZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnBlcmNlbnQgPSBwZXJjZW50O1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBvbkNvbXBsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAoZmlsZS5maWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgIG5ld0ZpbGUuZmlsZUlkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IG1heFNpemUsIGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlKSkge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgIGAke2ZpbGUubmFtZX3mlofku7bnsbvlnovkuI3lhYHorrjkuIrkvKDvvIzor7fkuIrkvKDlkI7nvIDkuLoke2FsbG93RmlsZVN1ZmZpeH3nmoTnsbvlnovmlofku7bvvIFgXHJcbiAgICAgICk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1heFNpemUpIHtcclxuICAgICAgY29uc3Qgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgaWYgKHNpemUgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGAke2ZpbGUubmFtZX3mlofku7blpKflsI/otoXov4cke21heFNpemV9Te+8jOivt+mHjeaWsOS4iuS8oO+8gWApO1xyXG4gICAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IFwiXCIsXHJcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmZpbGVJZCAhPT0gZmlsZS5maWxlSWQgfHwgaXRlbS51aWQgIT09IGZpbGUudWlkKSB7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICBsZXQge1xyXG4gICAgICB1c2VEZWZhdWx0TGlzdCxcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3RmlsZUxpc3QgPSB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gICAgaWYgKHVzZURlZmF1bHRMaXN0ICYmIGZpbGVMaXN0KSB7XHJcbiAgICAgIG5ld0ZpbGVMaXN0ID0gZmlsZUxpc3Q7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICBcInNsaWNlU2l6ZVwiLFxyXG4gICAgICBcIm1heFNpemVcIixcclxuICAgICAgXCJvbkNvbXBsZXRlXCIsXHJcbiAgICAgIFwib25Qcm9jZXNzXCIsXHJcbiAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgIFwidXNlRGVmYXVsdExpc3RcIixcclxuICAgICAgXCJmaWxlQ2FyZFwiLFxyXG4gICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgIGJlZm9yZVVwbG9hZDogdGhpcy5iZWZvcmVVcGxvYWQuYmluZCh0aGlzKSxcclxuICAgIH0gYXMgSVVwbG9hZFByb3BzO1xyXG4gICAgaWYgKGZpbGVDYXJkKSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgaXRlbVJlbmRlcjogKG9yaWdpbk5vZGUsIGZpbGU6IGFueSwgY3VyckZpbGVMaXN0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeWVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiYgZmlsZS5zdGF0dXMgPT0gXCJkb25lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25Eb3dubG9hZChmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dSZW1vdmVJY29uICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAge2ZpbGUuc3RhdHVzID09IFwidXBsb2FkaW5nXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInByb2Nlc3NcIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBmaWxlLnBlcmNlbnQgKyBcIiVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3R9XHJcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxyXG4gICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPFBkZlZpZXdlciBmaWxlSWQ9e3RoaXMuc3RhdGUudmlld0lkfSAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOc2NVcGxvYWQpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBRTlCLE9BQU9DLElBQUksTUFBTSxVQUFVO0FBQzNCLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBQ2hDLE9BQU9DLFlBQVksTUFBTSx3QkFBd0I7QUFDakQsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsUUFBUSxNQUFNLG9CQUFvQjtBQUN6QyxTQUNFQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsV0FBVyxRQUNOLG1CQUFtQjtBQUMxQixPQUFPQyxTQUFTLE1BQU0sYUFBYTtBQUNuQyxNQUFNO0VBQUVDLE1BQU07RUFBRUM7QUFBUyxDQUFDLEdBQUdiLElBQUk7QUFZakMsTUFBTWMsU0FBUyxTQUFTZixLQUFLLENBQUNnQixhQUFhLENBQW9CO0VBQUFDLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsZ0JBQ3JEO01BQUVDLFFBQVEsRUFBRSxFQUFFO01BQUVD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