nsc-react-component 2.12.2 → 2.13.1

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 (311) hide show
  1. package/lib/Interface.js +1 -1
  2. package/lib/Interface.js.map +1 -0
  3. package/lib/base/affix/index.js +5 -46
  4. package/lib/base/affix/index.js.map +1 -0
  5. package/lib/base/alert/index.js +5 -46
  6. package/lib/base/alert/index.js.map +1 -0
  7. package/lib/base/anchor/index.js +8 -49
  8. package/lib/base/anchor/index.js.map +1 -0
  9. package/lib/base/avatar/index.js +8 -49
  10. package/lib/base/avatar/index.js.map +1 -0
  11. package/lib/base/backTop/index.js +5 -46
  12. package/lib/base/backTop/index.js.map +1 -0
  13. package/lib/base/badge/index.js +8 -49
  14. package/lib/base/badge/index.js.map +1 -0
  15. package/lib/base/breadcrumb/index.js +5 -46
  16. package/lib/base/breadcrumb/index.js.map +1 -0
  17. package/lib/base/button/index.d.ts +1 -1
  18. package/lib/base/button/index.js +93 -134
  19. package/lib/base/button/index.js.map +1 -0
  20. package/lib/base/calendar/index.js +5 -46
  21. package/lib/base/calendar/index.js.map +1 -0
  22. package/lib/base/card/index.js +8 -50
  23. package/lib/base/card/index.js.map +1 -0
  24. package/lib/base/carousel/index.js +5 -46
  25. package/lib/base/carousel/index.js.map +1 -0
  26. package/lib/base/cascader/index.d.ts +3 -3
  27. package/lib/base/cascader/index.js +150 -221
  28. package/lib/base/cascader/index.js.map +1 -0
  29. package/lib/base/chart/index.d.ts +2 -2
  30. package/lib/base/chart/index.js +178 -287
  31. package/lib/base/chart/index.js.map +1 -0
  32. package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
  33. package/lib/base/checkbox/CheckboxGroup.js +165 -258
  34. package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
  35. package/lib/base/checkbox/index.d.ts +2 -2
  36. package/lib/base/checkbox/index.js +8 -48
  37. package/lib/base/checkbox/index.js.map +1 -0
  38. package/lib/base/collapse/index.js +8 -49
  39. package/lib/base/collapse/index.js.map +1 -0
  40. package/lib/base/comment/index.js +5 -46
  41. package/lib/base/comment/index.js.map +1 -0
  42. package/lib/base/common/BodyRow/index.js +48 -102
  43. package/lib/base/common/BodyRow/index.js.map +1 -0
  44. package/lib/base/common/EllipseCell/index.d.ts +1 -1
  45. package/lib/base/common/EllipseCell/index.js +16 -57
  46. package/lib/base/common/EllipseCell/index.js.map +1 -0
  47. package/lib/base/common/FileIcon.d.ts +2 -2
  48. package/lib/base/common/FileIcon.js +86 -132
  49. package/lib/base/common/FileIcon.js.map +1 -0
  50. package/lib/base/common/Icon.d.ts +2 -2
  51. package/lib/base/common/Icon.js +42 -96
  52. package/lib/base/common/Icon.js.map +1 -0
  53. package/lib/base/common/IconData.js +2 -2
  54. package/lib/base/common/IconData.js.map +1 -0
  55. package/lib/base/common/IconFont.d.ts +2 -2
  56. package/lib/base/common/IconFont.js +6 -8
  57. package/lib/base/common/IconFont.js.map +1 -0
  58. package/lib/base/common/NoAuthority.d.ts +2 -2
  59. package/lib/base/common/NoAuthority.js +13 -53
  60. package/lib/base/common/NoAuthority.js.map +1 -0
  61. package/lib/base/common/NoData.d.ts +2 -2
  62. package/lib/base/common/NoData.js +34 -74
  63. package/lib/base/common/NoData.js.map +1 -0
  64. package/lib/base/common/NoMessage.d.ts +2 -2
  65. package/lib/base/common/NoMessage.js +30 -70
  66. package/lib/base/common/NoMessage.js.map +1 -0
  67. package/lib/base/common/NoNetWork.d.ts +2 -2
  68. package/lib/base/common/NoNetWork.js +30 -70
  69. package/lib/base/common/NoNetWork.js.map +1 -0
  70. package/lib/base/common/Page404.d.ts +2 -2
  71. package/lib/base/common/Page404.js +30 -70
  72. package/lib/base/common/Page404.js.map +1 -0
  73. package/lib/base/common/PageRequest.js +91 -154
  74. package/lib/base/common/PageRequest.js.map +1 -0
  75. package/lib/base/common/TreePanel.d.ts +1 -1
  76. package/lib/base/common/TreePanel.js +133 -212
  77. package/lib/base/common/TreePanel.js.map +1 -0
  78. package/lib/base/common/iconfontalibaba.js +15 -22
  79. package/lib/base/common/iconfontalibaba.js.map +1 -0
  80. package/lib/base/common/withZhLocale.d.ts +1 -1
  81. package/lib/base/common/withZhLocale.js +3 -7
  82. package/lib/base/common/withZhLocale.js.map +1 -0
  83. package/lib/base/configProvider/index.js +8 -49
  84. package/lib/base/configProvider/index.js.map +1 -0
  85. package/lib/base/datepick/Rangepicker.d.ts +3 -3
  86. package/lib/base/datepick/Rangepicker.js +229 -325
  87. package/lib/base/datepick/Rangepicker.js.map +1 -0
  88. package/lib/base/datepick/index.d.ts +2 -2
  89. package/lib/base/datepick/index.js +56 -113
  90. package/lib/base/datepick/index.js.map +1 -0
  91. package/lib/base/descriptions/index.js +8 -49
  92. package/lib/base/descriptions/index.js.map +1 -0
  93. package/lib/base/divider/index.js +5 -46
  94. package/lib/base/divider/index.js.map +1 -0
  95. package/lib/base/download/index.js +42 -84
  96. package/lib/base/download/index.js.map +1 -0
  97. package/lib/base/drawer/index.js +14 -57
  98. package/lib/base/drawer/index.js.map +1 -0
  99. package/lib/base/dropdown/index.js +19 -65
  100. package/lib/base/dropdown/index.js.map +1 -0
  101. package/lib/base/editor/index.d.ts +1 -1
  102. package/lib/base/editor/index.js +83 -128
  103. package/lib/base/editor/index.js.map +1 -0
  104. package/lib/base/errorboundary/index.js +19 -63
  105. package/lib/base/errorboundary/index.js.map +1 -0
  106. package/lib/base/form/Form.d.ts +2 -2
  107. package/lib/base/form/Form.js +314 -427
  108. package/lib/base/form/Form.js.map +1 -0
  109. package/lib/base/form/filed/Cascader.d.ts +2 -2
  110. package/lib/base/form/filed/Cascader.js +6 -45
  111. package/lib/base/form/filed/Cascader.js.map +1 -0
  112. package/lib/base/form/filed/Checkbox.d.ts +2 -2
  113. package/lib/base/form/filed/Checkbox.js +6 -45
  114. package/lib/base/form/filed/Checkbox.js.map +1 -0
  115. package/lib/base/form/filed/DatePicker.d.ts +2 -2
  116. package/lib/base/form/filed/DatePicker.js +6 -45
  117. package/lib/base/form/filed/DatePicker.js.map +1 -0
  118. package/lib/base/form/filed/FormItem.d.ts +2 -2
  119. package/lib/base/form/filed/FormItem.js +65 -127
  120. package/lib/base/form/filed/FormItem.js.map +1 -0
  121. package/lib/base/form/filed/Input.d.ts +2 -2
  122. package/lib/base/form/filed/Input.js +14 -51
  123. package/lib/base/form/filed/Input.js.map +1 -0
  124. package/lib/base/form/filed/InputEamil.d.ts +2 -2
  125. package/lib/base/form/filed/InputEamil.js +5 -44
  126. package/lib/base/form/filed/InputEamil.js.map +1 -0
  127. package/lib/base/form/filed/InputNumber.d.ts +2 -2
  128. package/lib/base/form/filed/InputNumber.js +5 -44
  129. package/lib/base/form/filed/InputNumber.js.map +1 -0
  130. package/lib/base/form/filed/InputPassword.d.ts +2 -2
  131. package/lib/base/form/filed/InputPassword.js +5 -44
  132. package/lib/base/form/filed/InputPassword.js.map +1 -0
  133. package/lib/base/form/filed/Item.d.ts +3 -3
  134. package/lib/base/form/filed/Item.js +91 -163
  135. package/lib/base/form/filed/Item.js.map +1 -0
  136. package/lib/base/form/filed/Radio.d.ts +2 -2
  137. package/lib/base/form/filed/Radio.js +7 -45
  138. package/lib/base/form/filed/Radio.js.map +1 -0
  139. package/lib/base/form/filed/RangerPicker.d.ts +2 -2
  140. package/lib/base/form/filed/RangerPicker.js +6 -45
  141. package/lib/base/form/filed/RangerPicker.js.map +1 -0
  142. package/lib/base/form/filed/Rate.d.ts +2 -2
  143. package/lib/base/form/filed/Rate.js +6 -46
  144. package/lib/base/form/filed/Rate.js.map +1 -0
  145. package/lib/base/form/filed/Select.d.ts +2 -2
  146. package/lib/base/form/filed/Select.js +9 -49
  147. package/lib/base/form/filed/Select.js.map +1 -0
  148. package/lib/base/form/filed/Slider.d.ts +2 -2
  149. package/lib/base/form/filed/Slider.js +6 -46
  150. package/lib/base/form/filed/Slider.js.map +1 -0
  151. package/lib/base/form/filed/Switch.d.ts +2 -2
  152. package/lib/base/form/filed/Switch.js +6 -46
  153. package/lib/base/form/filed/Switch.js.map +1 -0
  154. package/lib/base/form/filed/TagSelect.d.ts +2 -2
  155. package/lib/base/form/filed/TagSelect.js +6 -45
  156. package/lib/base/form/filed/TagSelect.js.map +1 -0
  157. package/lib/base/form/filed/TextArea.d.ts +2 -2
  158. package/lib/base/form/filed/TextArea.js +5 -44
  159. package/lib/base/form/filed/TextArea.js.map +1 -0
  160. package/lib/base/form/filed/Upload.d.ts +2 -2
  161. package/lib/base/form/filed/Upload.js +9 -45
  162. package/lib/base/form/filed/Upload.js.map +1 -0
  163. package/lib/base/form/index.js +17 -58
  164. package/lib/base/form/index.js.map +1 -0
  165. package/lib/base/grid/Col.js +5 -46
  166. package/lib/base/grid/Col.js.map +1 -0
  167. package/lib/base/grid/Row.js +5 -46
  168. package/lib/base/grid/Row.js.map +1 -0
  169. package/lib/base/grid/index.js +1 -1
  170. package/lib/base/grid/index.js.map +1 -0
  171. package/lib/base/iframe/index.d.ts +1 -1
  172. package/lib/base/iframe/index.js +44 -93
  173. package/lib/base/iframe/index.js.map +1 -0
  174. package/lib/base/image/index.js +163 -261
  175. package/lib/base/image/index.js.map +1 -0
  176. package/lib/base/input/Email.d.ts +2 -2
  177. package/lib/base/input/Email.js +55 -103
  178. package/lib/base/input/Email.js.map +1 -0
  179. package/lib/base/input/Number.d.ts +1 -1
  180. package/lib/base/input/Number.js +48 -104
  181. package/lib/base/input/Number.js.map +1 -0
  182. package/lib/base/input/Password.d.ts +1 -1
  183. package/lib/base/input/Password.js +48 -104
  184. package/lib/base/input/Password.js.map +1 -0
  185. package/lib/base/input/Search.d.ts +1 -1
  186. package/lib/base/input/Search.js +46 -102
  187. package/lib/base/input/Search.js.map +1 -0
  188. package/lib/base/input/TextArea.d.ts +1 -1
  189. package/lib/base/input/TextArea.js +64 -123
  190. package/lib/base/input/TextArea.js.map +1 -0
  191. package/lib/base/input/index.d.ts +2 -2
  192. package/lib/base/input/index.js +121 -195
  193. package/lib/base/input/index.js.map +1 -0
  194. package/lib/base/layout/index.js +14 -56
  195. package/lib/base/layout/index.js.map +1 -0
  196. package/lib/base/list/index.js +8 -49
  197. package/lib/base/list/index.js.map +1 -0
  198. package/lib/base/menu/index.d.ts +5 -5
  199. package/lib/base/menu/index.js +100 -164
  200. package/lib/base/menu/index.js.map +1 -0
  201. package/lib/base/message/index.js +5 -47
  202. package/lib/base/message/index.js.map +1 -0
  203. package/lib/base/modal/Confirm.js +14 -18
  204. package/lib/base/modal/Confirm.js.map +1 -0
  205. package/lib/base/modal/index.d.ts +1 -1
  206. package/lib/base/modal/index.js +274 -359
  207. package/lib/base/modal/index.js.map +1 -0
  208. package/lib/base/notification/index.js +5 -47
  209. package/lib/base/notification/index.js.map +1 -0
  210. package/lib/base/pageHeader/index.js +5 -46
  211. package/lib/base/pageHeader/index.js.map +1 -0
  212. package/lib/base/pagination/index.js +5 -46
  213. package/lib/base/pagination/index.js.map +1 -0
  214. package/lib/base/pdfviwer/index.d.ts +1 -1
  215. package/lib/base/pdfviwer/index.js +67 -92
  216. package/lib/base/pdfviwer/index.js.map +1 -0
  217. package/lib/base/popconfirm/index.js +5 -46
  218. package/lib/base/popconfirm/index.js.map +1 -0
  219. package/lib/base/popover/index.js +19 -65
  220. package/lib/base/popover/index.js.map +1 -0
  221. package/lib/base/progress/index.js +5 -46
  222. package/lib/base/progress/index.js.map +1 -0
  223. package/lib/base/radio/RadioGroup.d.ts +1 -1
  224. package/lib/base/radio/RadioGroup.js +198 -295
  225. package/lib/base/radio/RadioGroup.js.map +1 -0
  226. package/lib/base/radio/index.d.ts +1 -1
  227. package/lib/base/radio/index.js +8 -50
  228. package/lib/base/radio/index.js.map +1 -0
  229. package/lib/base/result/index.js +5 -46
  230. package/lib/base/result/index.js.map +1 -0
  231. package/lib/base/select/index.d.ts +4 -4
  232. package/lib/base/select/index.js +358 -475
  233. package/lib/base/select/index.js.map +1 -0
  234. package/lib/base/skeleton/index.js +5 -46
  235. package/lib/base/skeleton/index.js.map +1 -0
  236. package/lib/base/space/index.js +5 -46
  237. package/lib/base/space/index.js.map +1 -0
  238. package/lib/base/spin/index.js +5 -46
  239. package/lib/base/spin/index.js.map +1 -0
  240. package/lib/base/statistic/index.js +8 -49
  241. package/lib/base/statistic/index.js.map +1 -0
  242. package/lib/base/steps/index.js +8 -49
  243. package/lib/base/steps/index.js.map +1 -0
  244. package/lib/base/switch/index.js +5 -46
  245. package/lib/base/switch/index.js.map +1 -0
  246. package/lib/base/table/index.d.ts +8 -8
  247. package/lib/base/table/index.js +743 -927
  248. package/lib/base/table/index.js.map +1 -0
  249. package/lib/base/tabs/Tabpane.d.ts +1 -1
  250. package/lib/base/tabs/Tabpane.js +22 -58
  251. package/lib/base/tabs/Tabpane.js.map +1 -0
  252. package/lib/base/tabs/index.d.ts +1 -1
  253. package/lib/base/tabs/index.js +110 -156
  254. package/lib/base/tabs/index.js.map +1 -0
  255. package/lib/base/tagSelect/TagSelect.d.ts +3 -3
  256. package/lib/base/tagSelect/TagSelect.js +124 -213
  257. package/lib/base/tagSelect/TagSelect.js.map +1 -0
  258. package/lib/base/tagSelect/index.d.ts +3 -3
  259. package/lib/base/tagSelect/index.js +90 -145
  260. package/lib/base/tagSelect/index.js.map +1 -0
  261. package/lib/base/timeline/index.js +8 -49
  262. package/lib/base/timeline/index.js.map +1 -0
  263. package/lib/base/tooltip/index.js +19 -65
  264. package/lib/base/tooltip/index.js.map +1 -0
  265. package/lib/base/transfer/index.js +5 -46
  266. package/lib/base/transfer/index.js.map +1 -0
  267. package/lib/base/tree/TreeSearch.d.ts +3 -3
  268. package/lib/base/tree/TreeSearch.js +119 -186
  269. package/lib/base/tree/TreeSearch.js.map +1 -0
  270. package/lib/base/tree/index.d.ts +2 -2
  271. package/lib/base/tree/index.js +169 -241
  272. package/lib/base/tree/index.js.map +1 -0
  273. package/lib/base/treeselect/index.js +5 -46
  274. package/lib/base/treeselect/index.js.map +1 -0
  275. package/lib/base/typography/index.js +5 -46
  276. package/lib/base/typography/index.js.map +1 -0
  277. package/lib/base/upload/Dragger.js +370 -605
  278. package/lib/base/upload/Dragger.js.map +1 -0
  279. package/lib/base/upload/Upload.js +352 -529
  280. package/lib/base/upload/Upload.js.map +1 -0
  281. package/lib/base/upload/index copy.d.ts +1 -1
  282. package/lib/base/upload/index copy.js +315 -431
  283. package/lib/base/upload/index copy.js.map +1 -0
  284. package/lib/base/upload/index.js +366 -640
  285. package/lib/base/upload/index.js.map +1 -0
  286. package/lib/config.d.ts +2 -0
  287. package/lib/config.js +7 -9
  288. package/lib/config.js.map +1 -0
  289. package/lib/constants.js +2 -2
  290. package/lib/constants.js.map +1 -0
  291. package/lib/index.js +2 -1
  292. package/lib/index.js.map +1 -0
  293. package/lib/page/BasePage/Form.d.ts +1 -1
  294. package/lib/page/BasePage/Form.js +253 -360
  295. package/lib/page/BasePage/Form.js.map +1 -0
  296. package/lib/page/BasePage/index.d.ts +3 -3
  297. package/lib/page/BasePage/index.js +777 -959
  298. package/lib/page/BasePage/index.js.map +1 -0
  299. package/lib/page/BasePage/index.module.less +0 -6
  300. package/lib/page/HeaderSearch/index.d.ts +1 -1
  301. package/lib/page/HeaderSearch/index.js +196 -272
  302. package/lib/page/HeaderSearch/index.js.map +1 -0
  303. package/lib/page/PasswordCheck/index.d.ts +1 -1
  304. package/lib/page/PasswordCheck/index.js +53 -109
  305. package/lib/page/PasswordCheck/index.js.map +1 -0
  306. package/lib/treeUtils.js +45 -58
  307. package/lib/treeUtils.js.map +1 -0
  308. package/lib/utils.d.ts +2 -2
  309. package/lib/utils.js +48 -61
  310. package/lib/utils.js.map +1 -0
  311. package/package.json +1 -1
@@ -1,33 +1,9 @@
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
- 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); }
4
-
5
- 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; }
6
-
7
- 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; }
8
-
9
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
-
11
- 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); } }
12
-
13
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
14
-
15
- 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); }
16
-
17
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
18
-
19
- 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); }; }
20
-
21
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
22
-
23
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
24
-
25
- 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; } }
26
-
27
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
28
-
29
- 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; }
30
-
1
+ 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); }
2
+ 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; }
3
+ 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; }
4
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ 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); }
31
7
  import React, { PureComponent } from "react";
32
8
  import Form from "../../base/form";
33
9
  import { getLess, getNode } from "../../utils";
@@ -38,359 +14,276 @@ import { isEmptyObj } from "@bj-nsc/functions";
38
14
  import moment from "moment";
39
15
  import styles from "./index.module.less";
40
16
  import lodash from "lodash";
41
-
42
- var EditorForm = /*#__PURE__*/function (_PureComponent) {
43
- _inherits(EditorForm, _PureComponent);
44
-
45
- var _super = _createSuper(EditorForm);
46
-
47
- function EditorForm() {
48
- var _this;
49
-
50
- _classCallCheck(this, EditorForm);
51
-
52
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
- args[_key] = arguments[_key];
54
- }
55
-
56
- _this = _super.call.apply(_super, [this].concat(args));
57
-
58
- _defineProperty(_assertThisInitialized(_this), "formRef", /*#__PURE__*/React.createRef());
59
-
60
- _defineProperty(_assertThisInitialized(_this), "state", {
17
+ class EditorForm extends PureComponent {
18
+ constructor() {
19
+ super(...arguments);
20
+ _defineProperty(this, "formRef", /*#__PURE__*/React.createRef());
21
+ _defineProperty(this, "state", {
61
22
  loading: false,
62
23
  label: "",
63
24
  editorFlag: true,
64
25
  value: {},
65
26
  dictNames: {}
66
27
  });
67
-
68
- _defineProperty(_assertThisInitialized(_this), "valid", []);
69
-
70
- _defineProperty(_assertThisInitialized(_this), "dateValueFormat", {});
71
-
72
- _defineProperty(_assertThisInitialized(_this), "dateFormat", {});
73
-
74
- return _this;
28
+ _defineProperty(this, "valid", []);
29
+ _defineProperty(this, "dateValueFormat", {});
30
+ _defineProperty(this, "dateFormat", {});
75
31
  }
76
-
77
- _createClass(EditorForm, [{
78
- key: "show",
79
- value: //表单显示
80
- function show(orgValue) {
81
- var _this2 = this;
82
-
83
- var editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
84
- var label = "新增";
85
-
86
- if (orgValue && editorflag == "editor") {
87
- label = "编辑";
88
- } else if (orgValue && editorflag == "detail") {
89
- label = "查看";
90
- }
91
-
92
- if (orgValue) {
93
- this.setState({
94
- label: label,
95
- value: orgValue
96
- }, function () {
97
- var _this2$formRef$curren;
98
-
99
- var value = lodash.cloneDeep(orgValue);
100
-
101
- if (!isEmptyObj(_this2.dateFormat)) {
102
- for (var key in _this2.dateFormat) {
103
- var olddata = value[key];
104
-
105
- if (Array.isArray(olddata)) {
106
- value[key] = [moment(olddata[0], _this2.dateFormat[key]), moment(olddata[1], _this2.dateFormat[key])];
107
- } else {
108
- value[key] = moment(olddata, _this2.dateFormat[key]);
109
- }
110
- }
111
- }
112
-
113
- (_this2$formRef$curren = _this2.formRef.current) === null || _this2$formRef$curren === void 0 ? void 0 : _this2$formRef$curren.showForm(value);
114
- });
115
- } else {
116
- this.setState({
117
- label: label
118
- }, function () {
119
- var _this2$formRef$curren2;
120
-
121
- (_this2$formRef$curren2 = _this2.formRef.current) === null || _this2$formRef$curren2 === void 0 ? void 0 : _this2$formRef$curren2.showForm(_this2.props.defaultValue);
122
- });
123
- }
32
+ //表单显示
33
+ show(orgValue) {
34
+ let editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
35
+ let label = "新增";
36
+ if (orgValue && editorflag == "editor") {
37
+ label = "编辑";
38
+ } else if (orgValue && editorflag == "detail") {
39
+ label = "查看";
124
40
  }
125
- }, {
126
- key: "hide",
127
- value: function hide() {
128
- var _this$formRef$current;
129
-
130
- var _hide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
131
-
132
- var onHideForm = this.props.onHideForm;
133
-
134
- if (onHideForm) {
135
- onHideForm && onHideForm();
136
- return;
137
- }
138
-
41
+ if (orgValue) {
139
42
  this.setState({
140
- loading: false
43
+ label: label,
44
+ value: orgValue
45
+ }, () => {
46
+ var _this$formRef$current;
47
+ let value = lodash.cloneDeep(orgValue);
48
+ if (!isEmptyObj(this.dateFormat)) {
49
+ for (let key in this.dateFormat) {
50
+ let olddata = value[key];
51
+ if (Array.isArray(olddata)) {
52
+ value[key] = [moment(olddata[0], this.dateFormat[key]), moment(olddata[1], this.dateFormat[key])];
53
+ } else {
54
+ value[key] = moment(olddata, this.dateFormat[key]);
55
+ }
56
+ }
57
+ }
58
+ (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 || _this$formRef$current.showForm(value);
141
59
  });
142
- _hide && ((_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 ? void 0 : _this$formRef$current.hideForm());
143
- }
144
- }, {
145
- key: "hideForm",
146
- value: function hideForm() {
147
- var _this$formRef$current2;
148
-
60
+ } else {
149
61
  this.setState({
150
- loading: false
62
+ label: label
63
+ }, () => {
64
+ var _this$formRef$current2;
65
+ (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 || _this$formRef$current2.showForm(this.props.defaultValue);
151
66
  });
152
- (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 ? void 0 : _this$formRef$current2.hideForm();
153
67
  }
154
- }, {
155
- key: "setLoading",
156
- value: function setLoading(loading) {
68
+ }
69
+ hide() {
70
+ var _this$formRef$current3;
71
+ let hide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
72
+ const {
73
+ onHideForm
74
+ } = this.props;
75
+ if (onHideForm) {
76
+ onHideForm && onHideForm();
77
+ return;
78
+ }
79
+ this.setState({
80
+ loading: false
81
+ });
82
+ hide && ((_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.hideForm());
83
+ }
84
+ hideForm() {
85
+ var _this$formRef$current4;
86
+ this.setState({
87
+ loading: false
88
+ });
89
+ (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 || _this$formRef$current4.hideForm();
90
+ }
91
+ setLoading(loading) {
92
+ this.setState({
93
+ loading: loading
94
+ });
95
+ }
96
+ setFieldsValue(values) {
97
+ var _this$formRef$current5;
98
+ (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 || _this$formRef$current5.setFieldsValue(values);
99
+ }
100
+ getFieldsValue() {
101
+ var _this$formRef$current6;
102
+ return (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.getFieldsValue();
103
+ }
104
+ onSubmit() {
105
+ var _this$formRef$current7, _this$formRef$current8;
106
+ const {
107
+ submitUrl = "",
108
+ submitParams = {},
109
+ onSubmit,
110
+ callBack
111
+ } = this.props;
112
+ const {
113
+ label,
114
+ value,
115
+ dictNames
116
+ } = this.state;
117
+ const formValue = (_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 ? void 0 : _this$formRef$current7.getFieldsValue();
118
+ let valid = this.valid;
119
+ (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 || _this$formRef$current8.validateFields(valid).then(() => {
120
+ var _this$formRef$current9;
157
121
  this.setState({
158
- loading: loading
122
+ loading: true
159
123
  });
160
- }
161
- }, {
162
- key: "setFieldsValue",
163
- value: function setFieldsValue(values) {
164
- var _this$formRef$current3;
165
-
166
- (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.setFieldsValue(values);
167
- }
168
- }, {
169
- key: "getFieldsValue",
170
- value: function getFieldsValue() {
171
- var _this$formRef$current4;
172
-
173
- return (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.getFieldsValue();
174
- }
175
- }, {
176
- key: "onSubmit",
177
- value: function onSubmit() {
178
- var _this$formRef$current5,
179
- _this$formRef$current6,
180
- _this3 = this;
181
-
182
- var _this$props = this.props,
183
- _this$props$submitUrl = _this$props.submitUrl,
184
- submitUrl = _this$props$submitUrl === void 0 ? "" : _this$props$submitUrl,
185
- _this$props$submitPar = _this$props.submitParams,
186
- submitParams = _this$props$submitPar === void 0 ? {} : _this$props$submitPar,
187
- onSubmit = _this$props.onSubmit,
188
- callBack = _this$props.callBack;
189
- var _this$state = this.state,
190
- label = _this$state.label,
191
- value = _this$state.value,
192
- dictNames = _this$state.dictNames;
193
- var formValue = (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldsValue();
194
- var valid = this.valid;
195
- (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.validateFields(valid).then(function () {
196
- var _this3$formRef$curren;
197
-
198
- _this3.setState({
199
- loading: true
200
- });
201
-
202
- var data = _objectSpread(_objectSpread({}, formValue), dictNames);
203
-
204
- if (!isEmptyObj(_this3.dateValueFormat)) {
205
- for (var key in _this3.dateValueFormat) {
206
- var olddata = data[key];
207
-
208
- if (Array.isArray(olddata)) {
209
- data[key] = [moment(olddata[0]).format(_this3.dateValueFormat[key]), moment(olddata[1]).format(_this3.dateValueFormat[key])];
210
- } else {
211
- data[key] = moment(olddata).format(_this3.dateValueFormat[key]);
212
- }
124
+ let data = _objectSpread(_objectSpread({}, formValue), dictNames);
125
+ if (!isEmptyObj(this.dateValueFormat)) {
126
+ for (let key in this.dateValueFormat) {
127
+ let olddata = data[key];
128
+ if (Array.isArray(olddata)) {
129
+ data[key] = [moment(olddata[0]).format(this.dateValueFormat[key]), moment(olddata[1]).format(this.dateValueFormat[key])];
130
+ } else {
131
+ data[key] = moment(olddata).format(this.dateValueFormat[key]);
213
132
  }
214
133
  }
215
-
216
- if (label == "编辑") {
217
- data = _objectSpread(_objectSpread({}, data), {}, {
218
- id: value === null || value === void 0 ? void 0 : value.id
219
- });
220
- }
221
-
222
- if (onSubmit) {
223
- onSubmit && onSubmit(data, label);
134
+ }
135
+ if (label == "编辑") {
136
+ data = _objectSpread(_objectSpread({}, data), {}, {
137
+ id: value === null || value === void 0 ? void 0 : value.id
138
+ });
139
+ }
140
+ if (onSubmit) {
141
+ onSubmit && onSubmit(data, label);
142
+ return;
143
+ }
144
+ if (!submitUrl) {
145
+ throw new Error("url不能为空!");
146
+ }
147
+ (_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 || _this$formRef$current9.onSubmit(submitUrl, {
148
+ data: _objectSpread({}, data),
149
+ noUndefined: label == "编辑",
150
+ submitParams
151
+ }, res => {
152
+ const {
153
+ code
154
+ } = res;
155
+ this.setState({
156
+ loading: false
157
+ });
158
+ if (code === 200) {
159
+ message.success(label + "成功");
160
+ this.hide(true);
161
+ callBack && callBack();
224
162
  return;
225
163
  }
226
-
227
- if (!submitUrl) {
228
- throw new Error("url不能为空!");
229
- }
230
-
231
- (_this3$formRef$curren = _this3.formRef.current) === null || _this3$formRef$curren === void 0 ? void 0 : _this3$formRef$curren.onSubmit(submitUrl, {
232
- data: _objectSpread({}, data),
233
- noUndefined: label == "编辑",
234
- submitParams: submitParams
235
- }, function (res) {
236
- var code = res.code;
237
-
238
- _this3.setState({
239
- loading: false
240
- });
241
-
242
- if (code === 200) {
243
- message.success(label + "成功");
244
-
245
- _this3.hide(true);
246
-
247
- callBack && callBack();
248
- return;
249
- }
250
-
251
- _this3.hide(false);
164
+ this.hide(false);
165
+ });
166
+ }).catch(errorInfo => {});
167
+ }
168
+ valueChange(_ref, props, value, valueOption, data) {
169
+ let {
170
+ type,
171
+ dictName
172
+ } = _ref;
173
+ if (valueOption) {
174
+ if (dictName) {
175
+ const {
176
+ dictNames
177
+ } = this.state;
178
+ const newNames = _objectSpread({}, dictNames);
179
+ newNames[dictName] = valueOption.label;
180
+ this.setState({
181
+ dictNames: newNames
252
182
  });
253
- }).catch(function (errorInfo) {});
183
+ }
254
184
  }
255
- }, {
256
- key: "valueChange",
257
- value: function valueChange(_ref, props, value, valueOption, data) {
258
- var type = _ref.type,
259
- dictName = _ref.dictName;
260
-
261
- if (valueOption) {
262
- if (dictName) {
263
- var dictNames = this.state.dictNames;
264
-
265
- var newNames = _objectSpread({}, dictNames);
266
-
267
- newNames[dictName] = valueOption.label;
268
- this.setState({
269
- dictNames: newNames
270
- });
271
- }
185
+ if (props.onChange) {
186
+ props.onChange(value, valueOption, data);
187
+ }
188
+ }
189
+ render() {
190
+ const {
191
+ formProps = [],
192
+ otherProps = {}
193
+ } = this.props;
194
+ const {
195
+ loading,
196
+ label
197
+ } = this.state;
198
+ let modalProps = {
199
+ title: label,
200
+ onOk: this.onSubmit.bind(this),
201
+ onCancel: this.hide.bind(this),
202
+ okButtonProps: {
203
+ loading: loading
204
+ },
205
+ centered: true,
206
+ width: "50vw"
207
+ };
208
+ const newValid = [];
209
+ let drawerProps = {
210
+ title: label,
211
+ onOk: this.onSubmit.bind(this),
212
+ onClose: this.hide.bind(this),
213
+ width: "50vw"
214
+ };
215
+ if (label == "查看") {
216
+ modalProps.footer = null;
217
+ drawerProps.footer = null;
218
+ }
219
+ this.dateValueFormat = {};
220
+ this.dateFormat = {};
221
+ return /*#__PURE__*/React.createElement(Form, _extends({
222
+ ref: this.formRef,
223
+ showModel: this.props.formType,
224
+ modalProps: _objectSpread({}, modalProps),
225
+ drawerProps: _objectSpread({}, drawerProps),
226
+ labelCol: {
227
+ flex: "100px"
228
+ },
229
+ wrapperCol: {
230
+ flex: "15vw"
231
+ },
232
+ onValuesChange: (changedValues, allValues) => {
233
+ const {
234
+ onFormChange
235
+ } = this.props;
236
+ onFormChange && onFormChange(changedValues, allValues);
237
+ },
238
+ changeValid: this.props.changeValid
239
+ }, otherProps), /*#__PURE__*/React.createElement("div", {
240
+ className: getLess(styles, "form")
241
+ }, /*#__PURE__*/React.createElement(Row, {
242
+ gutter: 24
243
+ }, formProps.map((item, index) => {
244
+ const itemProps = item.props || {};
245
+ if (itemProps.valueFormat) {
246
+ this.dateValueFormat[item.name] = itemProps.valueFormat;
272
247
  }
273
-
274
- if (props.onChange) {
275
- props.onChange(value, valueOption, data);
248
+ if (itemProps.format) {
249
+ this.dateFormat[item.name] = itemProps.format;
276
250
  }
277
- }
278
- }, {
279
- key: "render",
280
- value: function render() {
281
- var _this4 = this;
282
-
283
- var _this$props2 = this.props,
284
- _this$props2$formProp = _this$props2.formProps,
285
- formProps = _this$props2$formProp === void 0 ? [] : _this$props2$formProp,
286
- _this$props2$otherPro = _this$props2.otherProps,
287
- otherProps = _this$props2$otherPro === void 0 ? {} : _this$props2$otherPro;
288
- var _this$state2 = this.state,
289
- loading = _this$state2.loading,
290
- label = _this$state2.label;
291
- var modalProps = {
292
- title: label,
293
- onOk: this.onSubmit.bind(this),
294
- onCancel: this.hide.bind(this),
295
- okButtonProps: {
296
- loading: loading
297
- },
298
- centered: true,
299
- width: "50vw"
300
- };
301
- var newValid = [];
302
- var drawerProps = {
303
- title: label,
304
- onOk: this.onSubmit.bind(this),
305
- onClose: this.hide.bind(this),
306
- width: "50vw"
307
- };
308
-
251
+ let allowChars = item.props.allowChars || false;
252
+ let props = _objectSpread(_objectSpread({
253
+ placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
254
+ }, item.props), {}, {
255
+ onChange: this.valueChange.bind(this, {
256
+ type: item.type,
257
+ dictName: item.dictName
258
+ }, _objectSpread({}, item.props))
259
+ });
260
+ if (!item.type || item.type == "Input") {
261
+ props.allowChars = true;
262
+ props.showCount = true;
263
+ }
264
+ delete props.valueFormat;
265
+ delete props.format;
309
266
  if (label == "查看") {
310
- modalProps.footer = null;
311
- drawerProps.footer = null;
267
+ props.disabled = true;
312
268
  }
313
-
314
- this.dateValueFormat = {};
315
- this.dateFormat = {};
316
- return /*#__PURE__*/React.createElement(Form, _extends({
317
- ref: this.formRef,
318
- showModel: this.props.formType,
319
- modalProps: _objectSpread({}, modalProps),
320
- drawerProps: _objectSpread({}, drawerProps),
321
- labelCol: {
322
- flex: "100px"
323
- },
324
- wrapperCol: {
325
- flex: "15vw"
326
- },
327
- onValuesChange: function onValuesChange(changedValues, allValues) {
328
- var onFormChange = _this4.props.onFormChange;
329
- onFormChange && onFormChange(changedValues, allValues);
330
- },
331
- changeValid: this.props.changeValid
332
- }, otherProps), /*#__PURE__*/React.createElement("div", {
333
- className: getLess(styles, "form")
334
- }, /*#__PURE__*/React.createElement(Row, {
335
- gutter: 24
336
- }, formProps.map(function (item, index) {
337
- var itemProps = item.props || {};
338
-
339
- if (itemProps.valueFormat) {
340
- _this4.dateValueFormat[item.name] = itemProps.valueFormat;
341
- }
342
-
343
- if (itemProps.format) {
344
- _this4.dateFormat[item.name] = itemProps.format;
345
- }
346
-
347
- var allowChars = item.props.allowChars || false;
348
-
349
- var props = _objectSpread(_objectSpread({
350
- placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
351
- }, item.props), {}, {
352
- onChange: _this4.valueChange.bind(_this4, {
353
- type: item.type,
354
- dictName: item.dictName
355
- }, _objectSpread({}, item.props))
356
- });
357
-
358
- if (!item.type || item.type == "Input") {
359
- props.allowChars = true;
360
- props.showCount = true;
361
- }
362
-
363
- delete props.valueFormat;
364
- delete props.format;
365
-
366
- if (label == "查看") {
367
- props.disabled = true;
368
- }
369
-
370
- if (item.rules && item.rules.length > 0) {
371
- newValid.push(item.name);
372
- }
373
-
374
- if (index + 1 === formProps.length) {
375
- _this4.valid = newValid;
376
- }
377
-
378
- return /*#__PURE__*/React.createElement(Col, {
379
- span: item.span || 12,
380
- key: index
381
- }, /*#__PURE__*/React.createElement(Form.Item, {
382
- label: item.label,
383
- name: item.name,
384
- rules: item.rules,
385
- allowChars: allowChars,
386
- componentName: item.type ? item.type : "Input"
387
- }, getNode(item.type, _objectSpread({}, props))));
388
- }))));
389
- }
390
- }]);
391
-
392
- return EditorForm;
393
- }(PureComponent);
394
-
269
+ if (item.rules && item.rules.length > 0) {
270
+ newValid.push(item.name);
271
+ }
272
+ if (index + 1 === formProps.length) {
273
+ this.valid = newValid;
274
+ }
275
+ return /*#__PURE__*/React.createElement(Col, {
276
+ span: item.span || 12,
277
+ key: index
278
+ }, /*#__PURE__*/React.createElement(Form.Item, {
279
+ label: item.label,
280
+ name: item.name,
281
+ rules: item.rules,
282
+ allowChars: allowChars,
283
+ componentName: item.type ? item.type : "Input"
284
+ }, getNode(item.type, _objectSpread({}, props))));
285
+ }))));
286
+ }
287
+ }
395
288
  export default EditorForm;
396
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvRm9ybS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRm9ybSIsImdldExlc3MiLCJnZXROb2RlIiwibWVzc2FnZSIsIkNvbCIsIlJvdyIsImlzRW1wdHlPYmoiLCJtb21lbnQiLCJzdHlsZXMiLCJsb2Rhc2giLCJFZGl0b3JGb3JtIiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwic2V0U3RhdGUiLCJjbG9uZURlZXAiLCJkYXRlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJ2YWx1ZXMiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwib25TdWJtaXQiLCJjYWxsQmFjayIsInN0YXRlIiwiZm9ybVZhbHVlIiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJkYXRhIiwiZGF0ZVZhbHVlRm9ybWF0IiwiZm9ybWF0IiwiaWQiLCJFcnJvciIsIm5vVW5kZWZpbmVkIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlT3B0aW9uIiwidHlwZSIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsImZvcm1Qcm9wcyIsIm90aGVyUHJvcHMiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwiYmluZCIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJuZXdWYWxpZCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsImZvb3RlciIsImZvcm1UeXBlIiwiZmxleCIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsInZhbHVlQ2hhbmdlIiwic2hvd0NvdW50IiwiZGlzYWJsZWQiLCJydWxlcyIsImxlbmd0aCIsInB1c2giLCJzcGFuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQUNBLE9BQU9DLElBQVAsTUFBaUIsaUJBQWpCO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsT0FBbEIsUUFBaUMsYUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IscUJBQWhCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixxQkFBaEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsUUFBbkI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLHFCQUFuQjtBQUVBLE9BQU9DLE1BQVAsTUFBbUIsUUFBbkI7O0lBQ01DLFU7Ozs7Ozs7Ozs7Ozs7Ozs7MkVBQ01aLEtBQUssQ0FBQ2EsU0FBTixFOzs0REFDRjtBQUNOQyxNQUFBQSxPQUFPLEVBQUUsS0FESDtBQUVOQyxNQUFBQSxLQUFLLEVBQUUsRUFGRDtBQUdOQyxNQUFBQSxVQUFVLEVBQUUsSUFITjtBQUlOQyxNQUFBQSxLQUFLLEVBQUUsRUFKRDtBQUtOQyxNQUFBQSxTQUFTLEVBQUU7QUFMTCxLOzs0REFPSyxFOztzRUFDSyxFOztpRUFDTCxFOzs7Ozs7O1dBQ2I7QUFDQSxrQkFBS0MsUUFBTCxFQUF5QztBQUFBOztBQUFBLFVBQXBCQyxVQUFvQix1RUFBUCxLQUFPO0FBQ3ZDLFVBQUlMLEtBQUssR0FBRyxJQUFaOztB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QixRQUFiO0FBQ0Q7O0FBQ0QsNEJBQ0Usb0JBQUMsR0FBRDtBQUFLLFVBQUEsSUFBSSxFQUFFVyxJQUFJLENBQUNhLElBQUwsSUFBYSxFQUF4QjtBQUE0QixVQUFBLEdBQUcsRUFBRVo7QUFBakMsd0JBQ0Usb0JBQUMsSUFBRCxDQUFNLElBQU47QUFDRSxVQUFBLEtBQUssRUFBRUQsSUFBSSxDQUFDdEUsS0FEZDtBQUVFLFVBQUEsSUFBSSxFQUFFc0UsSUFBSSxDQUFDSSxJQUZiO0FBR0UsVUFBQSxLQUFLLEVBQUVKLElBQUksQ0FBQ1UsS0FIZDtBQUlFLFVBQUEsVUFBVSxFQUFFTCxVQUpkO0FBS0UsVUFBQSxhQUFhLEVBQUVMLElBQUksQ0FBQ3pCLElBQUwsR0FBWXlCLElBQUksQ0FBQ3pCLElBQWpCLEdBQXdCO0FBTHpDLFdBT0d4RCxPQUFPLENBQUNpRixJQUFJLENBQUN6QixJQUFOLG9CQUNIN0IsS0FERyxFQVBWLENBREYsQ0FERjtBQWVELE9BckRBLENBREgsQ0FERixDQWZGLENBREY7QUE0RUQ7Ozs7RUEvUHNCOUIsYTs7QUFrUXpCLGVBQWVXLFVBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBsb2Rhc2ggZnJvbSBcImxvZGFzaFwiO1xyXG5jbGFzcyBFZGl0b3JGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxhbnk+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgbGFiZWw6IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IGxvZGFzaC5jbG9uZURlZXAob3JnVmFsdWUpO1xyXG4gICAgICAgICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVba2V5XTtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgaGlkZSAmJiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgc2V0RmllbGRzVmFsdWUodmFsdWVzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWVzKTtcclxuICB9XHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgb25TdWJtaXQsXHJcbiAgICAgIGNhbGxCYWNrLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcyh2YWxpZClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGFba2V5XSA9IG1vbWVudChvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghc3VibWl0VXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgICAgIHN1Ym1pdFVybCxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZGF0YTogeyAuLi5kYXRhIH0sXHJcbiAgICAgICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgICAgICBzdWJtaXRQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MobGFiZWwgKyBcIuaIkOWKn1wiKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybVByb3BzID0gW10sIG90aGVyUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbG9hZGluZywgbGFiZWwgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbW9kYWxQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgb2tCdXR0b25Qcm9wczogeyBsb2FkaW5nOiBsb2FkaW5nIH0sXHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuXHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZX1cclxuICAgICAgICBtb2RhbFByb3BzPXt7IC4uLm1vZGFsUHJvcHMgfX1cclxuICAgICAgICBkcmF3ZXJQcm9wcz17eyAuLi5kcmF3ZXJQcm9wcyB9fVxyXG4gICAgICAgIGxhYmVsQ29sPXt7IGZsZXg6IFwiMTAwcHhcIiB9fVxyXG4gICAgICAgIHdyYXBwZXJDb2w9e3sgZmxleDogXCIxNXZ3XCIgfX1cclxuICAgICAgICBvblZhbHVlc0NoYW5nZT17KGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcykgPT4ge1xyXG4gICAgICAgICAgY29uc3QgeyBvbkZvcm1DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICBvbkZvcm1DaGFuZ2UgJiYgb25Gb3JtQ2hhbmdlKGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcyk7XHJcbiAgICAgICAgfX1cclxuICAgICAgICBjaGFuZ2VWYWxpZD17dGhpcy5wcm9wcy5jaGFuZ2VWYWxpZH1cclxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIHsvKiA8ZGl2PiAqL31cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZm9ybVwiKX0+XHJcbiAgICAgICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgICAgICB7Zm9ybVByb3BzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHMuYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG5cclxuICAgICAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuc2hvd0NvdW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3JtUHJvcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lPXtpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCJ9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7Z2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC9Sb3c+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFZGl0b3JGb3JtO1xyXG4iXX0=
289
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJtZXNzYWdlIiwiQ29sIiwiUm93IiwiaXNFbXB0eU9iaiIsIm1vbWVudCIsInN0eWxlcyIsImxvZGFzaCIsIkVkaXRvckZvcm0iLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImRpY3ROYW1lcyIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJzZXRGaWVsZHNWYWx1ZSIsInZhbHVlcyIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJnZXRGaWVsZHNWYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJvblN1Ym1pdCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDciLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ4Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwiY2FsbEJhY2siLCJzdGF0ZSIsImZvcm1WYWx1ZSIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZGF0ZVZhbHVlRm9ybWF0IiwiZm9ybWF0IiwiaWQiLCJFcnJvciIsIm5vVW5kZWZpbmVkIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwidHlwZSIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsInJlbmRlciIsImZvcm1Qcm9wcyIsIm90aGVyUHJvcHMiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwiYmluZCIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJuZXdWYWxpZCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsImZvb3RlciIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJlZiIsInNob3dNb2RlbCIsImZvcm1UeXBlIiwibGFiZWxDb2wiLCJmbGV4Iiwid3JhcHBlckNvbCIsIm9uVmFsdWVzQ2hhbmdlIiwiY2hhbmdlZFZhbHVlcyIsImFsbFZhbHVlcyIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwiY2xhc3NOYW1lIiwiZ3V0dGVyIiwibWFwIiwiaXRlbSIsImluZGV4IiwiaXRlbVByb3BzIiwidmFsdWVGb3JtYXQiLCJuYW1lIiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0Iiwic2hvd0NvdW50IiwiZGlzYWJsZWQiLCJydWxlcyIsInB1c2giLCJzcGFuIiwiSXRlbSIsImNvbXBvbmVudE5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL0Zvcm0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmNsYXNzIEVkaXRvckZvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gbG9kYXNoLmNsb25lRGVlcChvcmdWYWx1ZSk7XHJcbiAgICAgICAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IG1vbWVudChvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBvblN1Ym1pdCxcclxuICAgICAgY2FsbEJhY2ssXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB7IC4uLmZvcm1WYWx1ZSwgLi4uZGljdE5hbWVzIH07XHJcbiAgICAgICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSkge1xyXG4gICAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZGF0YVtrZXldID0gbW9tZW50KG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25TdWJtaXQpIHtcclxuICAgICAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFzdWJtaXRVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICAgICAgc3VibWl0VXJsLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBkYXRhOiB7IC4uLmRhdGEgfSxcclxuICAgICAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgICAgIHN1Ym1pdFBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3JJbmZvOiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBmb3JtUHJvcHMgPSBbXSwgb3RoZXJQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IGRyYXdlclByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DbG9zZTogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG4gICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgbW9kYWxQcm9wcy5mb290ZXIgPSBudWxsO1xyXG4gICAgICBkcmF3ZXJQcm9wcy5mb290ZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlVmFsdWVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IHt9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5vdGhlclByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgey8qIDxkaXY+ICovfVxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJmb3JtXCIpfT5cclxuICAgICAgICAgIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgICAgICAgIHtmb3JtUHJvcHMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcblxyXG4gICAgICAgICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5zaG93Q291bnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdWYWxpZC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1Qcm9wcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8L1Jvdz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEVkaXRvckZvcm07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQVEsT0FBTztBQUM1QyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQVNDLE9BQU8sRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxNQUFNLE1BQU0scUJBQXFCO0FBRXhDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE1BQU1DLFVBQVUsU0FBU1gsYUFBYSxDQUFNO0VBQUFZLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsK0JBQ2hDZixLQUFLLENBQUNn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