nsc-react-component 2.12.2 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Interface.js +1 -1
- package/lib/Interface.js.map +1 -0
- package/lib/base/affix/index.js +5 -46
- package/lib/base/affix/index.js.map +1 -0
- package/lib/base/alert/index.js +5 -46
- package/lib/base/alert/index.js.map +1 -0
- package/lib/base/anchor/index.js +8 -49
- package/lib/base/anchor/index.js.map +1 -0
- package/lib/base/avatar/index.js +8 -49
- package/lib/base/avatar/index.js.map +1 -0
- package/lib/base/backTop/index.js +5 -46
- package/lib/base/backTop/index.js.map +1 -0
- package/lib/base/badge/index.js +8 -49
- package/lib/base/badge/index.js.map +1 -0
- package/lib/base/breadcrumb/index.js +5 -46
- package/lib/base/breadcrumb/index.js.map +1 -0
- package/lib/base/button/index.d.ts +1 -1
- package/lib/base/button/index.js +93 -134
- package/lib/base/button/index.js.map +1 -0
- package/lib/base/calendar/index.js +5 -46
- package/lib/base/calendar/index.js.map +1 -0
- package/lib/base/card/index.js +8 -50
- package/lib/base/card/index.js.map +1 -0
- package/lib/base/carousel/index.js +5 -46
- package/lib/base/carousel/index.js.map +1 -0
- package/lib/base/cascader/index.d.ts +3 -3
- package/lib/base/cascader/index.js +150 -221
- package/lib/base/cascader/index.js.map +1 -0
- package/lib/base/chart/index.d.ts +2 -2
- package/lib/base/chart/index.js +178 -287
- package/lib/base/chart/index.js.map +1 -0
- package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
- package/lib/base/checkbox/CheckboxGroup.js +165 -258
- package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
- package/lib/base/checkbox/index.d.ts +2 -2
- package/lib/base/checkbox/index.js +8 -48
- package/lib/base/checkbox/index.js.map +1 -0
- package/lib/base/collapse/index.js +8 -49
- package/lib/base/collapse/index.js.map +1 -0
- package/lib/base/comment/index.js +5 -46
- package/lib/base/comment/index.js.map +1 -0
- package/lib/base/common/BodyRow/index.js +48 -102
- package/lib/base/common/BodyRow/index.js.map +1 -0
- package/lib/base/common/EllipseCell/index.d.ts +1 -1
- package/lib/base/common/EllipseCell/index.js +16 -57
- package/lib/base/common/EllipseCell/index.js.map +1 -0
- package/lib/base/common/FileIcon.d.ts +2 -2
- package/lib/base/common/FileIcon.js +86 -132
- package/lib/base/common/FileIcon.js.map +1 -0
- package/lib/base/common/Icon.d.ts +2 -2
- package/lib/base/common/Icon.js +42 -96
- package/lib/base/common/Icon.js.map +1 -0
- package/lib/base/common/IconData.js +2 -2
- package/lib/base/common/IconData.js.map +1 -0
- package/lib/base/common/IconFont.d.ts +2 -2
- package/lib/base/common/IconFont.js +6 -8
- package/lib/base/common/IconFont.js.map +1 -0
- package/lib/base/common/NoAuthority.d.ts +2 -2
- package/lib/base/common/NoAuthority.js +13 -53
- package/lib/base/common/NoAuthority.js.map +1 -0
- package/lib/base/common/NoData.d.ts +2 -2
- package/lib/base/common/NoData.js +34 -74
- package/lib/base/common/NoData.js.map +1 -0
- package/lib/base/common/NoMessage.d.ts +2 -2
- package/lib/base/common/NoMessage.js +30 -70
- package/lib/base/common/NoMessage.js.map +1 -0
- package/lib/base/common/NoNetWork.d.ts +2 -2
- package/lib/base/common/NoNetWork.js +30 -70
- package/lib/base/common/NoNetWork.js.map +1 -0
- package/lib/base/common/Page404.d.ts +2 -2
- package/lib/base/common/Page404.js +30 -70
- package/lib/base/common/Page404.js.map +1 -0
- package/lib/base/common/PageRequest.js +91 -154
- package/lib/base/common/PageRequest.js.map +1 -0
- package/lib/base/common/TreePanel.d.ts +1 -1
- package/lib/base/common/TreePanel.js +133 -212
- package/lib/base/common/TreePanel.js.map +1 -0
- package/lib/base/common/iconfontalibaba.js +15 -22
- package/lib/base/common/iconfontalibaba.js.map +1 -0
- package/lib/base/common/withZhLocale.d.ts +1 -1
- package/lib/base/common/withZhLocale.js +3 -7
- package/lib/base/common/withZhLocale.js.map +1 -0
- package/lib/base/configProvider/index.js +8 -49
- package/lib/base/configProvider/index.js.map +1 -0
- package/lib/base/datepick/Rangepicker.d.ts +3 -3
- package/lib/base/datepick/Rangepicker.js +229 -325
- package/lib/base/datepick/Rangepicker.js.map +1 -0
- package/lib/base/datepick/index.d.ts +2 -2
- package/lib/base/datepick/index.js +56 -113
- package/lib/base/datepick/index.js.map +1 -0
- package/lib/base/descriptions/index.js +8 -49
- package/lib/base/descriptions/index.js.map +1 -0
- package/lib/base/divider/index.js +5 -46
- package/lib/base/divider/index.js.map +1 -0
- package/lib/base/download/index.js +42 -84
- package/lib/base/download/index.js.map +1 -0
- package/lib/base/drawer/index.js +14 -57
- package/lib/base/drawer/index.js.map +1 -0
- package/lib/base/dropdown/index.js +19 -65
- package/lib/base/dropdown/index.js.map +1 -0
- package/lib/base/editor/index.d.ts +1 -1
- package/lib/base/editor/index.js +83 -128
- package/lib/base/editor/index.js.map +1 -0
- package/lib/base/errorboundary/index.js +19 -63
- package/lib/base/errorboundary/index.js.map +1 -0
- package/lib/base/form/Form.d.ts +2 -2
- package/lib/base/form/Form.js +314 -427
- package/lib/base/form/Form.js.map +1 -0
- package/lib/base/form/filed/Cascader.d.ts +2 -2
- package/lib/base/form/filed/Cascader.js +6 -45
- package/lib/base/form/filed/Cascader.js.map +1 -0
- package/lib/base/form/filed/Checkbox.d.ts +2 -2
- package/lib/base/form/filed/Checkbox.js +6 -45
- package/lib/base/form/filed/Checkbox.js.map +1 -0
- package/lib/base/form/filed/DatePicker.d.ts +2 -2
- package/lib/base/form/filed/DatePicker.js +6 -45
- package/lib/base/form/filed/DatePicker.js.map +1 -0
- package/lib/base/form/filed/FormItem.d.ts +2 -2
- package/lib/base/form/filed/FormItem.js +65 -127
- package/lib/base/form/filed/FormItem.js.map +1 -0
- package/lib/base/form/filed/Input.d.ts +2 -2
- package/lib/base/form/filed/Input.js +14 -51
- package/lib/base/form/filed/Input.js.map +1 -0
- package/lib/base/form/filed/InputEamil.d.ts +2 -2
- package/lib/base/form/filed/InputEamil.js +5 -44
- package/lib/base/form/filed/InputEamil.js.map +1 -0
- package/lib/base/form/filed/InputNumber.d.ts +2 -2
- package/lib/base/form/filed/InputNumber.js +5 -44
- package/lib/base/form/filed/InputNumber.js.map +1 -0
- package/lib/base/form/filed/InputPassword.d.ts +2 -2
- package/lib/base/form/filed/InputPassword.js +5 -44
- package/lib/base/form/filed/InputPassword.js.map +1 -0
- package/lib/base/form/filed/Item.d.ts +3 -3
- package/lib/base/form/filed/Item.js +91 -163
- package/lib/base/form/filed/Item.js.map +1 -0
- package/lib/base/form/filed/Radio.d.ts +2 -2
- package/lib/base/form/filed/Radio.js +7 -45
- package/lib/base/form/filed/Radio.js.map +1 -0
- package/lib/base/form/filed/RangerPicker.d.ts +2 -2
- package/lib/base/form/filed/RangerPicker.js +6 -45
- package/lib/base/form/filed/RangerPicker.js.map +1 -0
- package/lib/base/form/filed/Rate.d.ts +2 -2
- package/lib/base/form/filed/Rate.js +6 -46
- package/lib/base/form/filed/Rate.js.map +1 -0
- package/lib/base/form/filed/Select.d.ts +2 -2
- package/lib/base/form/filed/Select.js +9 -49
- package/lib/base/form/filed/Select.js.map +1 -0
- package/lib/base/form/filed/Slider.d.ts +2 -2
- package/lib/base/form/filed/Slider.js +6 -46
- package/lib/base/form/filed/Slider.js.map +1 -0
- package/lib/base/form/filed/Switch.d.ts +2 -2
- package/lib/base/form/filed/Switch.js +6 -46
- package/lib/base/form/filed/Switch.js.map +1 -0
- package/lib/base/form/filed/TagSelect.d.ts +2 -2
- package/lib/base/form/filed/TagSelect.js +6 -45
- package/lib/base/form/filed/TagSelect.js.map +1 -0
- package/lib/base/form/filed/TextArea.d.ts +2 -2
- package/lib/base/form/filed/TextArea.js +5 -44
- package/lib/base/form/filed/TextArea.js.map +1 -0
- package/lib/base/form/filed/Upload.d.ts +2 -2
- package/lib/base/form/filed/Upload.js +9 -45
- package/lib/base/form/filed/Upload.js.map +1 -0
- package/lib/base/form/index.js +17 -58
- package/lib/base/form/index.js.map +1 -0
- package/lib/base/grid/Col.js +5 -46
- package/lib/base/grid/Col.js.map +1 -0
- package/lib/base/grid/Row.js +5 -46
- package/lib/base/grid/Row.js.map +1 -0
- package/lib/base/grid/index.js +1 -1
- package/lib/base/grid/index.js.map +1 -0
- package/lib/base/iframe/index.d.ts +1 -1
- package/lib/base/iframe/index.js +44 -93
- package/lib/base/iframe/index.js.map +1 -0
- package/lib/base/image/index.js +163 -261
- package/lib/base/image/index.js.map +1 -0
- package/lib/base/input/Email.d.ts +2 -2
- package/lib/base/input/Email.js +55 -103
- package/lib/base/input/Email.js.map +1 -0
- package/lib/base/input/Number.d.ts +1 -1
- package/lib/base/input/Number.js +48 -104
- package/lib/base/input/Number.js.map +1 -0
- package/lib/base/input/Password.d.ts +1 -1
- package/lib/base/input/Password.js +48 -104
- package/lib/base/input/Password.js.map +1 -0
- package/lib/base/input/Search.d.ts +1 -1
- package/lib/base/input/Search.js +46 -102
- package/lib/base/input/Search.js.map +1 -0
- package/lib/base/input/TextArea.d.ts +1 -1
- package/lib/base/input/TextArea.js +64 -123
- package/lib/base/input/TextArea.js.map +1 -0
- package/lib/base/input/index.d.ts +2 -2
- package/lib/base/input/index.js +121 -195
- package/lib/base/input/index.js.map +1 -0
- package/lib/base/layout/index.js +14 -56
- package/lib/base/layout/index.js.map +1 -0
- package/lib/base/list/index.js +8 -49
- package/lib/base/list/index.js.map +1 -0
- package/lib/base/menu/index.d.ts +5 -5
- package/lib/base/menu/index.js +100 -164
- package/lib/base/menu/index.js.map +1 -0
- package/lib/base/message/index.js +5 -47
- package/lib/base/message/index.js.map +1 -0
- package/lib/base/modal/Confirm.js +14 -18
- package/lib/base/modal/Confirm.js.map +1 -0
- package/lib/base/modal/index.d.ts +1 -1
- package/lib/base/modal/index.js +274 -359
- package/lib/base/modal/index.js.map +1 -0
- package/lib/base/notification/index.js +5 -47
- package/lib/base/notification/index.js.map +1 -0
- package/lib/base/pageHeader/index.js +5 -46
- package/lib/base/pageHeader/index.js.map +1 -0
- package/lib/base/pagination/index.js +5 -46
- package/lib/base/pagination/index.js.map +1 -0
- package/lib/base/pdfviwer/index.d.ts +1 -1
- package/lib/base/pdfviwer/index.js +67 -92
- package/lib/base/pdfviwer/index.js.map +1 -0
- package/lib/base/popconfirm/index.js +5 -46
- package/lib/base/popconfirm/index.js.map +1 -0
- package/lib/base/popover/index.js +19 -65
- package/lib/base/popover/index.js.map +1 -0
- package/lib/base/progress/index.js +5 -46
- package/lib/base/progress/index.js.map +1 -0
- package/lib/base/radio/RadioGroup.d.ts +1 -1
- package/lib/base/radio/RadioGroup.js +198 -295
- package/lib/base/radio/RadioGroup.js.map +1 -0
- package/lib/base/radio/index.d.ts +1 -1
- package/lib/base/radio/index.js +8 -50
- package/lib/base/radio/index.js.map +1 -0
- package/lib/base/result/index.js +5 -46
- package/lib/base/result/index.js.map +1 -0
- package/lib/base/select/index.d.ts +4 -4
- package/lib/base/select/index.js +358 -475
- package/lib/base/select/index.js.map +1 -0
- package/lib/base/skeleton/index.js +5 -46
- package/lib/base/skeleton/index.js.map +1 -0
- package/lib/base/space/index.js +5 -46
- package/lib/base/space/index.js.map +1 -0
- package/lib/base/spin/index.js +5 -46
- package/lib/base/spin/index.js.map +1 -0
- package/lib/base/statistic/index.js +8 -49
- package/lib/base/statistic/index.js.map +1 -0
- package/lib/base/steps/index.js +8 -49
- package/lib/base/steps/index.js.map +1 -0
- package/lib/base/switch/index.js +5 -46
- package/lib/base/switch/index.js.map +1 -0
- package/lib/base/table/index.d.ts +8 -8
- package/lib/base/table/index.js +743 -927
- package/lib/base/table/index.js.map +1 -0
- package/lib/base/tabs/Tabpane.d.ts +1 -1
- package/lib/base/tabs/Tabpane.js +22 -58
- package/lib/base/tabs/Tabpane.js.map +1 -0
- package/lib/base/tabs/index.d.ts +1 -1
- package/lib/base/tabs/index.js +110 -156
- package/lib/base/tabs/index.js.map +1 -0
- package/lib/base/tagSelect/TagSelect.d.ts +3 -3
- package/lib/base/tagSelect/TagSelect.js +124 -213
- package/lib/base/tagSelect/TagSelect.js.map +1 -0
- package/lib/base/tagSelect/index.d.ts +3 -3
- package/lib/base/tagSelect/index.js +90 -145
- package/lib/base/tagSelect/index.js.map +1 -0
- package/lib/base/timeline/index.js +8 -49
- package/lib/base/timeline/index.js.map +1 -0
- package/lib/base/tooltip/index.js +19 -65
- package/lib/base/tooltip/index.js.map +1 -0
- package/lib/base/transfer/index.js +5 -46
- package/lib/base/transfer/index.js.map +1 -0
- package/lib/base/tree/TreeSearch.d.ts +3 -3
- package/lib/base/tree/TreeSearch.js +119 -186
- package/lib/base/tree/TreeSearch.js.map +1 -0
- package/lib/base/tree/index.d.ts +2 -2
- package/lib/base/tree/index.js +169 -241
- package/lib/base/tree/index.js.map +1 -0
- package/lib/base/treeselect/index.js +5 -46
- package/lib/base/treeselect/index.js.map +1 -0
- package/lib/base/typography/index.js +5 -46
- package/lib/base/typography/index.js.map +1 -0
- package/lib/base/upload/Dragger.js +370 -605
- package/lib/base/upload/Dragger.js.map +1 -0
- package/lib/base/upload/Upload.js +352 -529
- package/lib/base/upload/Upload.js.map +1 -0
- package/lib/base/upload/index copy.d.ts +1 -1
- package/lib/base/upload/index copy.js +315 -431
- package/lib/base/upload/index copy.js.map +1 -0
- package/lib/base/upload/index.js +367 -640
- package/lib/base/upload/index.js.map +1 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.js +7 -9
- package/lib/config.js.map +1 -0
- package/lib/constants.js +2 -2
- package/lib/constants.js.map +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -0
- package/lib/page/BasePage/Form.d.ts +1 -1
- package/lib/page/BasePage/Form.js +253 -360
- package/lib/page/BasePage/Form.js.map +1 -0
- package/lib/page/BasePage/index.d.ts +9 -4
- package/lib/page/BasePage/index.js +864 -962
- package/lib/page/BasePage/index.js.map +1 -0
- package/lib/page/BasePage/index.module copy.less +144 -0
- package/lib/page/BasePage/index.module.less +92 -58
- package/lib/page/HeaderSearch/index.d.ts +1 -1
- package/lib/page/HeaderSearch/index.js +196 -272
- package/lib/page/HeaderSearch/index.js.map +1 -0
- package/lib/page/PasswordCheck/index.d.ts +1 -1
- package/lib/page/PasswordCheck/index.js +53 -109
- package/lib/page/PasswordCheck/index.js.map +1 -0
- package/lib/treeUtils.js +45 -58
- package/lib/treeUtils.js.map +1 -0
- package/lib/utils.d.ts +2 -2
- package/lib/utils.js +48 -61
- package/lib/utils.js.map +1 -0
- package/package.json +1 -1
package/lib/base/select/index.js
CHANGED
|
@@ -1,54 +1,15 @@
|
|
|
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
1
|
import "antd/es/select/style/css";
|
|
4
2
|
import _Select from "antd/es/select";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
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; }
|
|
11
|
-
|
|
12
|
-
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; }
|
|
13
|
-
|
|
14
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
-
|
|
16
|
-
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."); }
|
|
17
|
-
|
|
18
|
-
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); }
|
|
19
|
-
|
|
20
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
21
|
-
|
|
22
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
|
-
|
|
24
|
-
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; }
|
|
25
|
-
|
|
3
|
+
const _excluded = ["url", "listeners", "viewname", "cached", "cacheKey", "viewtype"],
|
|
4
|
+
_excluded2 = ["children", "store", "data", "onChange", "onSelect", "options", "labelField", "valueField", "defaultStyle", "showGroup", "addData", "deleteData", "valueType"];
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
26
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
27
|
-
|
|
28
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
29
|
-
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
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); } }
|
|
33
|
-
|
|
34
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
35
|
-
|
|
36
|
-
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); }
|
|
37
|
-
|
|
38
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
39
|
-
|
|
40
|
-
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); }; }
|
|
41
|
-
|
|
42
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
43
|
-
|
|
44
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
45
|
-
|
|
46
|
-
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; } }
|
|
47
|
-
|
|
48
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
49
|
-
|
|
50
|
-
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; }
|
|
51
|
-
|
|
10
|
+
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; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
12
|
+
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); }
|
|
52
13
|
import React, { PureComponent } from "react";
|
|
53
14
|
import Store from "@bj-nsc/msn";
|
|
54
15
|
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
@@ -57,79 +18,60 @@ import styles from "./index.less";
|
|
|
57
18
|
import cls from "classnames";
|
|
58
19
|
import PinyinMatch from "pinyin-match";
|
|
59
20
|
import { getFlattenData } from "@bj-nsc/functions";
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
function NSCSelect(props) {
|
|
69
|
-
var _this2;
|
|
70
|
-
|
|
71
|
-
_classCallCheck(this, NSCSelect);
|
|
72
|
-
|
|
73
|
-
_this2 = _super.call(this, props);
|
|
74
|
-
|
|
75
|
-
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
21
|
+
const {
|
|
22
|
+
Option,
|
|
23
|
+
OptGroup
|
|
24
|
+
} = _Select;
|
|
25
|
+
export default class NSCSelect extends PureComponent {
|
|
26
|
+
constructor(props) {
|
|
27
|
+
super(props);
|
|
28
|
+
_defineProperty(this, "state", {
|
|
76
29
|
dataSource: [],
|
|
77
30
|
selectValue: null,
|
|
78
31
|
allDataSource: [],
|
|
79
32
|
children: null,
|
|
80
33
|
allChildren: null
|
|
81
34
|
});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
var _config = config(),
|
|
108
|
-
viewUrl = _config.viewUrl,
|
|
109
|
-
viewBizUrl = _config.viewBizUrl;
|
|
110
|
-
|
|
111
|
-
var requestViewUrl = viewtype == "sys" ? viewUrl : viewBizUrl;
|
|
112
|
-
|
|
113
|
-
var getAllData = function getAllData(data) {
|
|
35
|
+
_defineProperty(this, "store", {});
|
|
36
|
+
const {
|
|
37
|
+
data,
|
|
38
|
+
store = {},
|
|
39
|
+
children,
|
|
40
|
+
options,
|
|
41
|
+
addData = [],
|
|
42
|
+
deleteData = []
|
|
43
|
+
} = props;
|
|
44
|
+
const {
|
|
45
|
+
url,
|
|
46
|
+
listeners: listenersPops = {},
|
|
47
|
+
viewname,
|
|
48
|
+
cached,
|
|
49
|
+
cacheKey,
|
|
50
|
+
viewtype = "sys"
|
|
51
|
+
} = store,
|
|
52
|
+
stores = _objectWithoutProperties(store, _excluded);
|
|
53
|
+
const valueField = viewname ? "dictKey" : "value";
|
|
54
|
+
let {
|
|
55
|
+
viewUrl,
|
|
56
|
+
viewBizUrl
|
|
57
|
+
} = config();
|
|
58
|
+
let requestViewUrl = viewtype == "sys" ? viewUrl : viewBizUrl;
|
|
59
|
+
const getAllData = data => {
|
|
114
60
|
if (!Array.isArray(data)) {
|
|
115
61
|
return [];
|
|
116
62
|
}
|
|
117
|
-
|
|
118
|
-
var newData = _toConsumableArray(data);
|
|
119
|
-
|
|
63
|
+
let newData = [...data];
|
|
120
64
|
if (addData.length > 0) {
|
|
121
|
-
newData = [
|
|
65
|
+
newData = [...addData, ...newData];
|
|
122
66
|
}
|
|
123
|
-
|
|
124
67
|
if (deleteData.length > 0) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
newData.map(
|
|
128
|
-
|
|
129
|
-
valueFields.map(
|
|
68
|
+
let spliceData = [];
|
|
69
|
+
const valueFields = valueField.split(",");
|
|
70
|
+
newData.map((item, i) => {
|
|
71
|
+
let value = "";
|
|
72
|
+
valueFields.map((v, index) => {
|
|
130
73
|
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
131
74
|
});
|
|
132
|
-
|
|
133
75
|
if (deleteData.indexOf(value) == -1) {
|
|
134
76
|
spliceData.push(item);
|
|
135
77
|
}
|
|
@@ -139,55 +81,45 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
139
81
|
return newData;
|
|
140
82
|
}
|
|
141
83
|
};
|
|
142
|
-
|
|
143
84
|
if (!children) {
|
|
144
85
|
if (!(data || viewname || url || options)) {
|
|
145
86
|
throw new Error("url、viewname、data、options不能都为空!");
|
|
146
87
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
var storeProps = _objectSpread({
|
|
88
|
+
let _this = this;
|
|
89
|
+
let storeProps = _objectSpread({
|
|
151
90
|
model: "model",
|
|
152
|
-
component:
|
|
91
|
+
component: this,
|
|
153
92
|
listeners: {
|
|
154
|
-
onBeforeLoad: function
|
|
93
|
+
onBeforeLoad: function (store, options) {
|
|
155
94
|
utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);
|
|
156
95
|
},
|
|
157
|
-
load: function
|
|
158
|
-
|
|
159
|
-
|
|
96
|
+
load: function (data, modelData, store) {
|
|
97
|
+
const newData = getAllData(data);
|
|
160
98
|
_this.setState({
|
|
161
99
|
dataSource: newData,
|
|
162
100
|
allDataSource: newData
|
|
163
101
|
});
|
|
164
|
-
|
|
165
102
|
utils.callback(listenersPops.load, _this, [data, modelData, store]);
|
|
166
103
|
},
|
|
167
|
-
dataChanged: function
|
|
168
|
-
|
|
169
|
-
|
|
104
|
+
dataChanged: function (data, modelData, store) {
|
|
105
|
+
const newData = getAllData(data);
|
|
170
106
|
_this.setState({
|
|
171
107
|
dataSource: newData,
|
|
172
108
|
allDataSource: newData
|
|
173
109
|
});
|
|
174
|
-
|
|
175
110
|
utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
|
|
176
111
|
}
|
|
177
112
|
}
|
|
178
113
|
}, stores);
|
|
179
|
-
|
|
180
114
|
if ((viewname || url) && data == null && options == null) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
115
|
+
let isCached = cached;
|
|
116
|
+
let isCacheKey = cacheKey;
|
|
184
117
|
if (viewname) {
|
|
185
118
|
if (typeof cached !== "boolean") {
|
|
186
119
|
isCached = true;
|
|
187
120
|
isCacheKey = isCacheKey ? isCacheKey : viewname;
|
|
188
121
|
}
|
|
189
122
|
}
|
|
190
|
-
|
|
191
123
|
storeProps = _objectSpread(_objectSpread({}, {
|
|
192
124
|
autoLoad: true,
|
|
193
125
|
url: url || requestViewUrl + viewname,
|
|
@@ -196,393 +128,344 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
196
128
|
cacheKey: isCacheKey
|
|
197
129
|
}), storeProps);
|
|
198
130
|
}
|
|
199
|
-
|
|
200
|
-
_this2.store = new Store(storeProps);
|
|
131
|
+
this.store = new Store(storeProps);
|
|
201
132
|
}
|
|
202
|
-
|
|
203
|
-
return _this2;
|
|
204
133
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}, {
|
|
225
|
-
key: "getData",
|
|
226
|
-
value: function getData() {
|
|
227
|
-
return this.state.allDataSource;
|
|
134
|
+
resetData() {
|
|
135
|
+
const {
|
|
136
|
+
children
|
|
137
|
+
} = this.props;
|
|
138
|
+
const {
|
|
139
|
+
allDataSource,
|
|
140
|
+
allChildren
|
|
141
|
+
} = this.state;
|
|
142
|
+
if (children) {
|
|
143
|
+
this.setState({
|
|
144
|
+
children: allChildren
|
|
145
|
+
});
|
|
146
|
+
} else {
|
|
147
|
+
this.setState({
|
|
148
|
+
dataSource: allDataSource
|
|
149
|
+
});
|
|
228
150
|
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
151
|
+
}
|
|
152
|
+
getData() {
|
|
153
|
+
return this.state.allDataSource;
|
|
154
|
+
}
|
|
155
|
+
getValue() {
|
|
156
|
+
return this.state.selectValue;
|
|
157
|
+
}
|
|
158
|
+
setValue(value) {
|
|
159
|
+
this.setState({
|
|
160
|
+
selectValue: value
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
getSelectData(value) {
|
|
164
|
+
const {
|
|
165
|
+
dataSource
|
|
166
|
+
} = this.state;
|
|
167
|
+
let {
|
|
168
|
+
store = {},
|
|
169
|
+
valueField
|
|
170
|
+
} = this.props;
|
|
171
|
+
const {
|
|
172
|
+
viewname
|
|
173
|
+
} = store;
|
|
174
|
+
valueField = valueField ? valueField : viewname ? "dictKey" : "value";
|
|
175
|
+
const newData = getFlattenData(dataSource, {
|
|
176
|
+
keyField: valueField
|
|
177
|
+
});
|
|
178
|
+
if (Array.isArray(value)) {
|
|
179
|
+
let res = [];
|
|
180
|
+
value.map(val => {
|
|
181
|
+
res.push(newData[val] || {});
|
|
182
|
+
});
|
|
183
|
+
return res;
|
|
184
|
+
} else {
|
|
185
|
+
return newData[value] || {};
|
|
233
186
|
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
|
|
187
|
+
}
|
|
188
|
+
componentDidMount() {
|
|
189
|
+
const {
|
|
190
|
+
data,
|
|
191
|
+
options,
|
|
192
|
+
children
|
|
193
|
+
} = this.props;
|
|
194
|
+
if (!children && (data || options)) {
|
|
237
195
|
this.setState({
|
|
238
|
-
|
|
196
|
+
dataSource: data ? data : options,
|
|
197
|
+
allDataSource: data ? data : options
|
|
239
198
|
});
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
var dataSource = this.state.dataSource;
|
|
245
|
-
var _this$props = this.props,
|
|
246
|
-
_this$props$store = _this$props.store,
|
|
247
|
-
store = _this$props$store === void 0 ? {} : _this$props$store,
|
|
248
|
-
valueField = _this$props.valueField;
|
|
249
|
-
var viewname = store.viewname;
|
|
250
|
-
valueField = valueField ? valueField : viewname ? "dictKey" : "value";
|
|
251
|
-
var newData = getFlattenData(dataSource, {
|
|
252
|
-
keyField: valueField
|
|
199
|
+
} else if (children) {
|
|
200
|
+
this.setState({
|
|
201
|
+
children: children,
|
|
202
|
+
allChildren: children
|
|
253
203
|
});
|
|
254
|
-
|
|
255
|
-
if (Array.isArray(value)) {
|
|
256
|
-
var res = [];
|
|
257
|
-
value.map(function (val) {
|
|
258
|
-
res.push(newData[val] || {});
|
|
259
|
-
});
|
|
260
|
-
return res;
|
|
261
|
-
} else {
|
|
262
|
-
return newData[value] || {};
|
|
263
|
-
}
|
|
264
204
|
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
205
|
+
}
|
|
206
|
+
componentDidUpdate(newProps, newState, Snapshot) {
|
|
207
|
+
const {
|
|
208
|
+
data,
|
|
209
|
+
options,
|
|
210
|
+
children
|
|
211
|
+
} = this.props;
|
|
212
|
+
const {
|
|
213
|
+
allDataSource,
|
|
214
|
+
allChildren
|
|
215
|
+
} = this.state;
|
|
216
|
+
if (!children && (data || options)) {
|
|
217
|
+
const newData = data ? data : options;
|
|
218
|
+
if (JSON.stringify(allDataSource) !== JSON.stringify(newData)) {
|
|
274
219
|
this.setState({
|
|
275
|
-
dataSource:
|
|
276
|
-
allDataSource:
|
|
220
|
+
dataSource: newData,
|
|
221
|
+
allDataSource: newData
|
|
277
222
|
});
|
|
278
|
-
}
|
|
223
|
+
}
|
|
224
|
+
} else if (children && Array.isArray(children)) {
|
|
225
|
+
const stateChildrenProps = [];
|
|
226
|
+
allChildren.map(s => {
|
|
227
|
+
stateChildrenProps.push(s.props);
|
|
228
|
+
});
|
|
229
|
+
const childrenProps = [];
|
|
230
|
+
children.map(c => {
|
|
231
|
+
childrenProps.push(c.props);
|
|
232
|
+
});
|
|
233
|
+
if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
|
|
279
234
|
this.setState({
|
|
280
235
|
children: children,
|
|
281
236
|
allChildren: children
|
|
282
237
|
});
|
|
283
238
|
}
|
|
284
239
|
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
240
|
+
}
|
|
241
|
+
componentWillUnmount() {
|
|
242
|
+
this.setState = (state, callback) => {
|
|
243
|
+
return;
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
onSearch(value) {
|
|
247
|
+
const {
|
|
248
|
+
allDataSource,
|
|
249
|
+
allChildren
|
|
250
|
+
} = this.state;
|
|
251
|
+
const {
|
|
252
|
+
filterOption = true,
|
|
253
|
+
onSearch,
|
|
254
|
+
children,
|
|
255
|
+
store = {}
|
|
256
|
+
} = this.props;
|
|
257
|
+
let {
|
|
258
|
+
labelField
|
|
259
|
+
} = this.props;
|
|
260
|
+
const {
|
|
261
|
+
viewname
|
|
262
|
+
} = store;
|
|
263
|
+
labelField = labelField ? labelField : viewname ? "dictValue" : "label";
|
|
264
|
+
if (filterOption) {
|
|
265
|
+
let result = [];
|
|
266
|
+
if (!children) {
|
|
267
|
+
if (value) {
|
|
268
|
+
allDataSource.forEach(item => {
|
|
269
|
+
let label = "";
|
|
270
|
+
if (labelField.split(",").length == 1) {
|
|
271
|
+
label = item[labelField];
|
|
272
|
+
} else {
|
|
273
|
+
const labelFields = labelField.split(",");
|
|
274
|
+
labelFields.map((l, index) => {
|
|
275
|
+
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
let flag = PinyinMatch.match(label, value);
|
|
279
|
+
if (flag) {
|
|
280
|
+
result.push(item);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
300
283
|
this.setState({
|
|
301
|
-
dataSource:
|
|
302
|
-
allDataSource: newData
|
|
284
|
+
dataSource: result
|
|
303
285
|
});
|
|
304
|
-
}
|
|
305
|
-
} else if (children && Array.isArray(children)) {
|
|
306
|
-
var stateChildrenProps = [];
|
|
307
|
-
allChildren.map(function (s) {
|
|
308
|
-
stateChildrenProps.push(s.props);
|
|
309
|
-
});
|
|
310
|
-
var childrenProps = [];
|
|
311
|
-
children.map(function (c) {
|
|
312
|
-
childrenProps.push(c.props);
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
|
|
286
|
+
} else {
|
|
316
287
|
this.setState({
|
|
317
|
-
|
|
318
|
-
allChildren: children
|
|
288
|
+
dataSource: allDataSource
|
|
319
289
|
});
|
|
320
290
|
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
}, {
|
|
331
|
-
key: "onSearch",
|
|
332
|
-
value: function onSearch(value) {
|
|
333
|
-
var _this$state3 = this.state,
|
|
334
|
-
allDataSource = _this$state3.allDataSource,
|
|
335
|
-
allChildren = _this$state3.allChildren;
|
|
336
|
-
var _this$props4 = this.props,
|
|
337
|
-
_this$props4$filterOp = _this$props4.filterOption,
|
|
338
|
-
filterOption = _this$props4$filterOp === void 0 ? true : _this$props4$filterOp,
|
|
339
|
-
onSearch = _this$props4.onSearch,
|
|
340
|
-
children = _this$props4.children,
|
|
341
|
-
_this$props4$store = _this$props4.store,
|
|
342
|
-
store = _this$props4$store === void 0 ? {} : _this$props4$store;
|
|
343
|
-
var labelField = this.props.labelField;
|
|
344
|
-
var viewname = store.viewname;
|
|
345
|
-
labelField = labelField ? labelField : viewname ? "dictValue" : "label";
|
|
346
|
-
|
|
347
|
-
if (filterOption) {
|
|
348
|
-
var result = [];
|
|
349
|
-
|
|
350
|
-
if (!children) {
|
|
351
|
-
if (value) {
|
|
352
|
-
allDataSource.forEach(function (item) {
|
|
353
|
-
var label = "";
|
|
354
|
-
|
|
355
|
-
if (labelField.split(",").length == 1) {
|
|
356
|
-
label = item[labelField];
|
|
357
|
-
} else {
|
|
358
|
-
var labelFields = labelField.split(",");
|
|
359
|
-
labelFields.map(function (l, index) {
|
|
360
|
-
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
var flag = PinyinMatch.match(label, value);
|
|
365
|
-
|
|
291
|
+
} else {
|
|
292
|
+
if (value) {
|
|
293
|
+
if (Array.isArray(allChildren)) {
|
|
294
|
+
allChildren.map((child, index) => {
|
|
295
|
+
var _child$props;
|
|
296
|
+
let label = child === null || child === void 0 || (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
|
|
297
|
+
let flag = PinyinMatch.match(label, value);
|
|
366
298
|
if (flag) {
|
|
367
|
-
result.push(
|
|
299
|
+
result.push(child);
|
|
368
300
|
}
|
|
369
301
|
});
|
|
370
|
-
this.setState({
|
|
371
|
-
dataSource: result
|
|
372
|
-
});
|
|
373
|
-
} else {
|
|
374
|
-
this.setState({
|
|
375
|
-
dataSource: allDataSource
|
|
376
|
-
});
|
|
377
302
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
if (Array.isArray(allChildren)) {
|
|
381
|
-
allChildren.map(function (child, index) {
|
|
382
|
-
var _child$props;
|
|
383
|
-
|
|
384
|
-
var label = child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
|
|
385
|
-
var flag = PinyinMatch.match(label, value);
|
|
386
|
-
|
|
387
|
-
if (flag) {
|
|
388
|
-
result.push(child);
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
this.setState({
|
|
394
|
-
children: result
|
|
395
|
-
});
|
|
396
|
-
} else {
|
|
397
|
-
this.setState({
|
|
398
|
-
children: children
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
onSearch && onSearch(value);
|
|
405
|
-
}
|
|
406
|
-
}, {
|
|
407
|
-
key: "renderOption",
|
|
408
|
-
value: function renderOption(optionData) {
|
|
409
|
-
var _this$props5 = this.props,
|
|
410
|
-
_this$props5$store = _this$props5.store,
|
|
411
|
-
store = _this$props5$store === void 0 ? {} : _this$props5$store,
|
|
412
|
-
_this$props5$valueTyp = _this$props5.valueType,
|
|
413
|
-
valueType = _this$props5$valueTyp === void 0 ? "string" : _this$props5$valueTyp,
|
|
414
|
-
labelField = _this$props5.labelField,
|
|
415
|
-
valueField = _this$props5.valueField;
|
|
416
|
-
var viewname = store.viewname;
|
|
417
|
-
valueField = valueField ? valueField : viewname ? "dictKey" : "value";
|
|
418
|
-
labelField = labelField ? labelField : viewname ? "dictValue" : "label";
|
|
419
|
-
return optionData.map(function (item) {
|
|
420
|
-
var value;
|
|
421
|
-
|
|
422
|
-
if (valueField.split(",").length == 1) {
|
|
423
|
-
value = valueType === "number" ? Number(item[valueField]) : item[valueField];
|
|
424
|
-
} else {
|
|
425
|
-
var valueFields = valueField.split(",");
|
|
426
|
-
value = "";
|
|
427
|
-
valueFields.map(function (v, index) {
|
|
428
|
-
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
303
|
+
this.setState({
|
|
304
|
+
children: result
|
|
429
305
|
});
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
var key = item.id ? item.id !== "undefined" ? item.id : value : value;
|
|
433
|
-
var label = "";
|
|
434
|
-
|
|
435
|
-
if (labelField.split(",").length == 1) {
|
|
436
|
-
label = item[labelField];
|
|
437
306
|
} else {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
307
|
+
this.setState({
|
|
308
|
+
children: children
|
|
441
309
|
});
|
|
442
310
|
}
|
|
443
|
-
|
|
444
|
-
return /*#__PURE__*/React.createElement(Option, {
|
|
445
|
-
key: key,
|
|
446
|
-
value: value,
|
|
447
|
-
label: label,
|
|
448
|
-
disabled: item.disabled ? true : false
|
|
449
|
-
}, label);
|
|
450
|
-
});
|
|
311
|
+
}
|
|
451
312
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
313
|
+
onSearch && onSearch(value);
|
|
314
|
+
}
|
|
315
|
+
renderOption(optionData) {
|
|
316
|
+
let {
|
|
317
|
+
store = {},
|
|
318
|
+
valueType = "string",
|
|
319
|
+
labelField,
|
|
320
|
+
valueField
|
|
321
|
+
} = this.props;
|
|
322
|
+
const {
|
|
323
|
+
viewname
|
|
324
|
+
} = store;
|
|
325
|
+
valueField = valueField ? valueField : viewname ? "dictKey" : "value";
|
|
326
|
+
labelField = labelField ? labelField : viewname ? "dictValue" : "label";
|
|
327
|
+
return optionData.map(item => {
|
|
328
|
+
let value;
|
|
329
|
+
if (valueField.split(",").length == 1) {
|
|
330
|
+
value = valueType === "number" ? Number(item[valueField]) : item[valueField];
|
|
465
331
|
} else {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
if (label && showGroup) {
|
|
472
|
-
if (!optGroupData[label]) optGroupData[label] = [];
|
|
473
|
-
optGroupData[label].push(item);
|
|
474
|
-
} else {
|
|
475
|
-
optionData.push(item);
|
|
476
|
-
}
|
|
332
|
+
const valueFields = valueField.split(",");
|
|
333
|
+
value = "";
|
|
334
|
+
valueFields.map((v, index) => {
|
|
335
|
+
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
477
336
|
});
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
337
|
+
}
|
|
338
|
+
let key = item.id ? item.id !== "undefined" ? item.id : value : value;
|
|
339
|
+
let label = "";
|
|
340
|
+
if (labelField.split(",").length == 1) {
|
|
341
|
+
label = item[labelField];
|
|
342
|
+
} else {
|
|
343
|
+
const labelFields = labelField.split(",");
|
|
344
|
+
labelFields.map((l, index) => {
|
|
345
|
+
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
484
346
|
});
|
|
485
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, option, optGroup);
|
|
486
347
|
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
348
|
+
return /*#__PURE__*/React.createElement(Option, {
|
|
349
|
+
key: key,
|
|
350
|
+
value: value,
|
|
351
|
+
label: label,
|
|
352
|
+
disabled: item.disabled ? true : false
|
|
353
|
+
}, label);
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
renderChildren() {
|
|
357
|
+
const {
|
|
358
|
+
showGroup = true
|
|
359
|
+
} = this.props;
|
|
360
|
+
const {
|
|
361
|
+
dataSource,
|
|
362
|
+
children
|
|
363
|
+
} = this.state;
|
|
364
|
+
if (children) {
|
|
365
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
366
|
+
} else {
|
|
367
|
+
let optGroupData = {},
|
|
368
|
+
optionData = [];
|
|
369
|
+
dataSource.forEach(item => {
|
|
370
|
+
let label = item.groupName;
|
|
371
|
+
if (label && showGroup) {
|
|
372
|
+
if (!optGroupData[label]) optGroupData[label] = [];
|
|
373
|
+
optGroupData[label].push(item);
|
|
374
|
+
} else {
|
|
375
|
+
optionData.push(item);
|
|
376
|
+
}
|
|
494
377
|
});
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
378
|
+
let option = this.renderOption(optionData);
|
|
379
|
+
let optGroup = Object.keys(optGroupData).map(key => {
|
|
380
|
+
return /*#__PURE__*/React.createElement(OptGroup, {
|
|
381
|
+
key: key,
|
|
382
|
+
label: key
|
|
383
|
+
}, this.renderOption(optGroupData[key]));
|
|
384
|
+
});
|
|
385
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, option, optGroup);
|
|
500
386
|
}
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
387
|
+
}
|
|
388
|
+
onChange(value, options) {
|
|
389
|
+
const {
|
|
390
|
+
onChange
|
|
391
|
+
} = this.props;
|
|
392
|
+
this.setState({
|
|
393
|
+
selectValue: value
|
|
394
|
+
});
|
|
395
|
+
if (onChange) {
|
|
396
|
+
const data = this.getSelectData(value);
|
|
397
|
+
onChange(value, options, data);
|
|
510
398
|
}
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
399
|
+
}
|
|
400
|
+
onSelect(value, options) {
|
|
401
|
+
const {
|
|
402
|
+
onSelect
|
|
403
|
+
} = this.props;
|
|
404
|
+
if (onSelect) {
|
|
405
|
+
const data = this.getSelectData(value);
|
|
406
|
+
onSelect(value, options, data);
|
|
517
407
|
}
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
children = _this$props6.children,
|
|
523
|
-
store = _this$props6.store,
|
|
524
|
-
data = _this$props6.data,
|
|
525
|
-
onChange = _this$props6.onChange,
|
|
526
|
-
onSelect = _this$props6.onSelect,
|
|
527
|
-
options = _this$props6.options,
|
|
528
|
-
labelField = _this$props6.labelField,
|
|
529
|
-
valueField = _this$props6.valueField,
|
|
530
|
-
defaultStyle = _this$props6.defaultStyle,
|
|
531
|
-
_this$props6$showGrou = _this$props6.showGroup,
|
|
532
|
-
showGroup = _this$props6$showGrou === void 0 ? true : _this$props6$showGrou,
|
|
533
|
-
addData = _this$props6.addData,
|
|
534
|
-
deleteData = _this$props6.deleteData,
|
|
535
|
-
valueType = _this$props6.valueType,
|
|
536
|
-
params = _objectWithoutProperties(_this$props6, _excluded2);
|
|
537
|
-
|
|
538
|
-
var props = {
|
|
539
|
-
filterOption: false,
|
|
540
|
-
showSearch: true,
|
|
541
|
-
optionFilterProp: "label",
|
|
542
|
-
placeholder: "请选择",
|
|
543
|
-
allowClear: true
|
|
544
|
-
};
|
|
545
|
-
|
|
546
|
-
var _config2 = config(),
|
|
547
|
-
antdStyle = _config2.antdStyle,
|
|
548
|
-
mountElementId = _config2.mountElementId;
|
|
549
|
-
|
|
550
|
-
if (mountElementId) {
|
|
551
|
-
props = _objectSpread({
|
|
552
|
-
getPopupContainer: function getPopupContainer() {
|
|
553
|
-
return document.getElementById(mountElementId);
|
|
554
|
-
}
|
|
555
|
-
}, props);
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
if ((defaultStyle || antdStyle) && defaultStyle === true) {
|
|
559
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
560
|
-
className: cls(styles["nsc_select"], this.props.className)
|
|
561
|
-
}, /*#__PURE__*/React.createElement(_Select, _extends({
|
|
562
|
-
value: this.state.selectValue,
|
|
563
|
-
onChange: this.onChange.bind(this),
|
|
564
|
-
onSearch: this.onSearch.bind(this),
|
|
565
|
-
onSelect: this.onSelect.bind(this),
|
|
566
|
-
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
567
|
-
}, props, params), this.renderChildren()));
|
|
568
|
-
} else {
|
|
569
|
-
return /*#__PURE__*/React.createElement(_Select, _extends({
|
|
570
|
-
value: this.state.selectValue,
|
|
571
|
-
onSearch: this.onSearch.bind(this),
|
|
572
|
-
onChange: this.onChange.bind(this),
|
|
573
|
-
onSelect: this.onSelect.bind(this),
|
|
574
|
-
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
575
|
-
}, props, params), this.renderChildren());
|
|
576
|
-
}
|
|
408
|
+
}
|
|
409
|
+
onDropdownVisibleChange(open) {
|
|
410
|
+
if (!open) {
|
|
411
|
+
this.resetData();
|
|
577
412
|
}
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
413
|
+
}
|
|
414
|
+
render() {
|
|
415
|
+
const _this$props = this.props,
|
|
416
|
+
{
|
|
417
|
+
children,
|
|
418
|
+
store,
|
|
419
|
+
data,
|
|
420
|
+
onChange,
|
|
421
|
+
onSelect,
|
|
422
|
+
options,
|
|
423
|
+
labelField,
|
|
424
|
+
valueField,
|
|
425
|
+
defaultStyle,
|
|
426
|
+
showGroup = true,
|
|
427
|
+
addData,
|
|
428
|
+
deleteData,
|
|
429
|
+
valueType
|
|
430
|
+
} = _this$props,
|
|
431
|
+
params = _objectWithoutProperties(_this$props, _excluded2);
|
|
432
|
+
let props = {
|
|
433
|
+
filterOption: false,
|
|
434
|
+
showSearch: true,
|
|
435
|
+
optionFilterProp: "label",
|
|
436
|
+
placeholder: "请选择",
|
|
437
|
+
allowClear: true
|
|
438
|
+
};
|
|
439
|
+
let {
|
|
440
|
+
antdStyle,
|
|
441
|
+
mountElementId
|
|
442
|
+
} = config();
|
|
443
|
+
if (mountElementId) {
|
|
444
|
+
props = _objectSpread({
|
|
445
|
+
getPopupContainer: () => document.getElementById(mountElementId)
|
|
446
|
+
}, props);
|
|
447
|
+
}
|
|
448
|
+
if ((defaultStyle || antdStyle) && defaultStyle === true) {
|
|
449
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
450
|
+
className: cls(styles["nsc_select"], this.props.className)
|
|
451
|
+
}, /*#__PURE__*/React.createElement(_Select, _extends({
|
|
452
|
+
value: this.state.selectValue,
|
|
453
|
+
onChange: this.onChange.bind(this),
|
|
454
|
+
onSearch: this.onSearch.bind(this),
|
|
455
|
+
onSelect: this.onSelect.bind(this),
|
|
456
|
+
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
457
|
+
}, props, params), this.renderChildren()));
|
|
458
|
+
} else {
|
|
459
|
+
return /*#__PURE__*/React.createElement(_Select, _extends({
|
|
460
|
+
value: this.state.selectValue,
|
|
461
|
+
onSearch: this.onSearch.bind(this),
|
|
462
|
+
onChange: this.onChange.bind(this),
|
|
463
|
+
onSelect: this.onSelect.bind(this),
|
|
464
|
+
onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
|
|
465
|
+
}, props, params), this.renderChildren());
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
583
469
|
_defineProperty(NSCSelect, "Option", Option);
|
|
584
|
-
|
|
585
470
|
_defineProperty(NSCSelect, "OptGroup", OptGroup);
|
|
586
|
-
|
|
587
|
-
export { NSCSelect as default };
|
|
588
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2Uvc2VsZWN0L2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiTlNDU2VsZWN0IiwicHJvcHMiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGEiLCJzdG9yZSIsIm9wdGlvbnMiLCJhZGREYXRhIiwiZGVsZXRlRGF0YSIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJ2aWV3bmFtZSIsImNhY2hlZCIsImNhY2hlS2V5Iiwidmlld3R5cGUiLCJzdG9yZXMiLCJ2YWx1ZUZpZWxkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwic3BsaWNlRGF0YSIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInZhbHVlIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInB1c2giLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJkYXRhQ2hhbmdlZCIsImlzQ2FjaGVkIiwiaXNDYWNoZUtleSIsImF1dG9Mb2FkIiwic3RhdGUiLCJrZXlGaWVsZCIsInJlcyIsInZhbCIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJmaWx0ZXJPcHRpb24iLCJvblNlYXJjaCIsImxhYmVsRmllbGQiLCJyZXN1bHQiLCJmb3JFYWNoIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJmbGFnIiwibWF0Y2giLCJjaGlsZCIsIm9wdGlvbkRhdGEiLCJ2YWx1ZVR5cGUiLCJOdW1iZXIiLCJrZXkiLCJpZCIsImRpc2FibGVkIiwic2hvd0dyb3VwIiwib3B0R3JvdXBEYXRhIiwiZ3JvdXBOYW1lIiwib3B0aW9uIiwicmVuZGVyT3B0aW9uIiwib3B0R3JvdXAiLCJPYmplY3QiLCJrZXlzIiwib25DaGFuZ2UiLCJnZXRTZWxlY3REYXRhIiwib25TZWxlY3QiLCJvcGVuIiwicmVzZXREYXRhIiwiZGVmYXVsdFN0eWxlIiwicGFyYW1zIiwic2hvd1NlYXJjaCIsIm9wdGlvbkZpbHRlclByb3AiLCJwbGFjZWhvbGRlciIsImFsbG93Q2xlYXIiLCJhbnRkU3R5bGUiLCJtb3VudEVsZW1lbnRJZCIsImdldFBvcHVwQ29udGFpbmVyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNsYXNzTmFtZSIsImJpbmQiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsInJlbmRlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQUVBLE9BQU9DLEtBQVAsTUFBa0MsYUFBbEM7QUFDQSxTQUFTQyxLQUFULFFBQXNCLHVCQUF0QjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUVBLE9BQU9DLFdBQVAsTUFBd0IsY0FBeEI7QUFDQSxTQUFTQyxjQUFULFFBQStCLG1CQUEvQjtBQUNBLElBQVFDLE1BQVIsV0FBUUEsTUFBUjtBQUFBLElBQWdCQyxRQUFoQixXQUFnQkEsUUFBaEI7O0lBaUJxQkMsUzs7Ozs7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VzJHLFNBQWxDO0FBQW5CLHdCQUNFO0FBQ0UsVUFBQSxLQUFLLEVBQUUsS0FBS3RELEtBQUwsQ0FBV25ELFdBRHBCO0FBRUUsVUFBQSxRQUFRLEVBQUUsS0FBS3lGLFFBQUwsQ0FBY2lCLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWjtBQUdFLFVBQUEsUUFBUSxFQUFFLEtBQUt6QyxRQUFMLENBQWN5QyxJQUFkLENBQW1CLElBQW5CLENBSFo7QUFJRSxVQUFBLFFBQVEsRUFBRSxLQUFLZixRQUFMLENBQWNlLElBQWQsQ0FBbUIsSUFBbkIsQ0FKWjtBQUtFLFVBQUEsdUJBQXVCLEVBQUUsS0FBS0MsdUJBQUwsQ0FBNkJELElBQTdCLENBQWtDLElBQWxDO0FBTDNCLFdBTU01RyxLQU5OLEVBT01pRyxNQVBOLEdBU0csS0FBS2EsY0FBTCxFQVRILENBREYsQ0FERjtBQWVELE9BaEJELE1BZ0JPO0FBQ0wsNEJBQ0U7QUFDRSxVQUFBLEtBQUssRUFBRSxLQUFLekQsS0FBTCxDQUFXbkQsV0FEcEI7QUFFRSxVQUFBLFFBQVEsRUFBRSxLQUFLaUUsUUFBTCxDQUFjeUMsSUFBZCxDQUFtQixJQUFuQixDQUZaO0FBR0UsVUFBQSxRQUFRLEVBQUUsS0FBS2pCLFFBQUwsQ0FBY2lCLElBQWQsQ0FBbUIsSUFBbkIsQ0FIWjtBQUlFLFVBQUEsUUFBUSxFQUFFLEtBQUtmLFFBQUwsQ0FBY2UsSUFBZCxDQUFtQixJQUFuQixDQUpaO0FBS0UsVUFBQSx1QkFBdUIsRUFBRSxLQUFLQyx1QkFBTCxDQUE2QkQsSUFBN0IsQ0FBa0MsSUFBbEM7QUFMM0IsV0FNTTVHLEtBTk4sRUFPTWlHLE1BUE4sR0FTRyxLQUFLYSxjQUFMLEVBVEgsQ0FERjtBQWFEO0FBQ0Y7Ozs7RUFwYW9DekgsYTs7Z0JBQWxCVSxTLFlBQ0hGLE07O2dCQURHRSxTLGNBRURELFE7O1NBRkNDLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgUGlueWluTWF0Y2ggZnJvbSBcInBpbnlpbi1tYXRjaFwiO1xyXG5pbXBvcnQgeyBnZXRGbGF0dGVuRGF0YSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5jb25zdCB7IE9wdGlvbiwgT3B0R3JvdXAgfSA9IFNlbGVjdDtcclxuXHJcbmludGVyZmFjZSBJU2VsZWN0UHJvcHMgZXh0ZW5kcyBTZWxlY3RQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD47IC8v6buY6K6k5pWw5o2uXHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRTdHlsZT86IGJvb2xlYW47XHJcbiAgc2hvd0dyb3VwPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliIbnu4RcclxuICBhZGREYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/phY3lkIhzdG9yZeS9v+eUqO+8jOS7juWinuWKoOmineWklueahOaVsOaNrlxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxTdHJpbmc+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5Yig6Zmk5LuO5pWw5o2u5bqT5Lit6I635Y+W5Yiw55qE5oyH5a6a5pWw5o2uXHJcbiAgdmFsdWVCcmVhaz86IHN0cmluZzsgLy/lpJrkuKp2YWx1ZeS9v+eUqOeahOWIhumalOesplxyXG4gIHZhbHVlVHlwZT86IFwic3RyaW5nXCIgfCBcIm51bWJlclwiO1xyXG4gIFtwcm9OYW1lOiBzdHJpbmddOiBhbnk7XHJcbiAgb25DaGFuZ2U/OiBhbnk7XHJcbiAgb25TZWxlY3Q/OiBhbnk7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTlNDU2VsZWN0IGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJU2VsZWN0UHJvcHM+IHtcclxuICBzdGF0aWMgT3B0aW9uID0gT3B0aW9uO1xyXG4gIHN0YXRpYyBPcHRHcm91cCA9IE9wdEdyb3VwO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICBzZWxlY3RWYWx1ZTogbnVsbCxcclxuICAgIGFsbERhdGFTb3VyY2U6IFtdLFxyXG4gICAgY2hpbGRyZW46IG51bGwsXHJcbiAgICBhbGxDaGlsZHJlbjogbnVsbCxcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHVybCxcclxuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgIHZpZXduYW1lLFxyXG4gICAgICBjYWNoZWQsXHJcbiAgICAgIGNhY2hlS2V5LFxyXG4gICAgICB2aWV3dHlwZSA9IFwic3lzXCIsXHJcbiAgICAgIC4uLnN0b3Jlc1xyXG4gICAgfSA9IHN0b3JlO1xyXG4gICAgY29uc3QgdmFsdWVGaWVsZCA9IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsZXQgeyB2aWV3VXJsLCB2aWV3Qml6VXJsIH0gPSBjb25maWcoKTtcclxuICAgIGxldCByZXF1ZXN0Vmlld1VybCA9IHZpZXd0eXBlID09IFwic3lzXCIgPyB2aWV3VXJsIDogdmlld0JpelVybDtcclxuICAgIGNvbnN0IGdldEFsbERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld0RhdGEgPSBbLi4uZGF0YV07XHJcbiAgICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgc3BsaWNlRGF0YSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICBuZXdEYXRhLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YodmFsdWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgIHNwbGljZURhdGEucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc3BsaWNlRGF0YTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbmV3RGF0YTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKCEoZGF0YSB8fCB2aWV3bmFtZSB8fCB1cmwgfHwgb3B0aW9ucykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHjgIFvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNoaWxkcmVuOiBhbGxDaGlsZHJlbiB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGFsbERhdGFTb3VyY2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmFsbERhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0RGF0YSh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgc3RvcmUgPSB7fSwgdmFsdWVGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgdmFsdWVGaWVsZCA9IHZhbHVlRmllbGQgPyB2YWx1ZUZpZWxkIDogdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRGbGF0dGVuRGF0YShkYXRhU291cmNlLCB7IGtleUZpZWxkOiB2YWx1ZUZpZWxkIH0pO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XHJcbiAgICAgIHZhbHVlLm1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgcmVzLnB1c2gobmV3RGF0YVt2YWxdIHx8IHt9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3RGF0YVt2YWx1ZV0gfHwge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgICBhbGxEYXRhU291cmNlOiBkYXRhID8gZGF0YSA6IG9wdGlvbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKG5ld1Byb3BzLCBuZXdTdGF0ZSwgU25hcHNob3QpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKCFjaGlsZHJlbiAmJiAoZGF0YSB8fCBvcHRpb25zKSkge1xyXG4gICAgICBjb25zdCBuZXdEYXRhID0gZGF0YSA/IGRhdGEgOiBvcHRpb25zO1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYWxsRGF0YVNvdXJjZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgICAgYWxsRGF0YVNvdXJjZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBzdGF0ZUNoaWxkcmVuUHJvcHM6IGFueSA9IFtdO1xyXG4gICAgICBhbGxDaGlsZHJlbi5tYXAoKHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXRlQ2hpbGRyZW5Qcm9wcy5wdXNoKHMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgY2hpbGRyZW5Qcm9wcy5wdXNoKGMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlQ2hpbGRyZW5Qcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuUHJvcHMpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSA9IChzdGF0ZSwgY2FsbGJhY2spID0+IHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfTtcclxuICB9XHJcbiAgb25TZWFyY2godmFsdWUpIHtcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IGZpbHRlck9wdGlvbiA9IHRydWUsIG9uU2VhcmNoLCBjaGlsZHJlbiwgc3RvcmUgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCB7IGxhYmVsRmllbGQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIGxhYmVsRmllbGQgPSBsYWJlbEZpZWxkID8gbGFiZWxGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0VmFsdWVcIiA6IFwibGFiZWxcIjtcclxuICAgIGlmIChmaWx0ZXJPcHRpb24pIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgbGFiZWwgPSBpdGVtW2xhYmVsRmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGl0ZW1bbF0gOiBsYWJlbCArIFwiLVwiICsgaXRlbVtsXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsbENoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBhbGxDaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGxhYmVsID0gY2hpbGQ/LnByb3BzPy5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiByZXN1bHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25TZWFyY2ggJiYgb25TZWFyY2godmFsdWUpO1xyXG4gIH1cclxuICByZW5kZXJPcHRpb24ob3B0aW9uRGF0YSkge1xyXG4gICAgbGV0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgdmFsdWVUeXBlID0gXCJzdHJpbmdcIixcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgcmV0dXJuIG9wdGlvbkRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgICBpZiAodmFsdWVGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB2YWx1ZSA9XHJcbiAgICAgICAgICB2YWx1ZVR5cGUgPT09IFwibnVtYmVyXCIgPyBOdW1iZXIoaXRlbVt2YWx1ZUZpZWxkXSkgOiBpdGVtW3ZhbHVlRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGtleSA9IGl0ZW0uaWQgPyAoaXRlbS5pZCAhPT0gXCJ1bmRlZmluZWRcIiA/IGl0ZW0uaWQgOiB2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgbGFiZWwgPSBpdGVtW2xhYmVsRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGl0ZW1bbF0gOiBsYWJlbCArIFwiLVwiICsgaXRlbVtsXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxPcHRpb25cclxuICAgICAgICAgIGtleT17a2V5fVxyXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxyXG4gICAgICAgICAgbGFiZWw9e2xhYmVsfVxyXG4gICAgICAgICAgZGlzYWJsZWQ9e2l0ZW0uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2V9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2xhYmVsfVxyXG4gICAgICAgIDwvT3B0aW9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlckNoaWxkcmVuKCkge1xyXG4gICAgY29uc3QgeyBzaG93R3JvdXAgPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlLCBjaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wdEdyb3VwRGF0YSA9IHt9LFxyXG4gICAgICAgIG9wdGlvbkRhdGEgPSBbXTtcclxuICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsID0gaXRlbS5ncm91cE5hbWU7XHJcbiAgICAgICAgaWYgKGxhYmVsICYmIHNob3dHcm91cCkge1xyXG4gICAgICAgICAgaWYgKCFvcHRHcm91cERhdGFbbGFiZWxdKSBvcHRHcm91cERhdGFbbGFiZWxdID0gW107XHJcbiAgICAgICAgICBvcHRHcm91cERhdGFbbGFiZWxdLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdGlvbkRhdGEucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgb3B0aW9uID0gdGhpcy5yZW5kZXJPcHRpb24ob3B0aW9uRGF0YSk7XHJcbiAgICAgIGxldCBvcHRHcm91cCA9IE9iamVjdC5rZXlzKG9wdEdyb3VwRGF0YSkubWFwKChrZXkpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPE9wdEdyb3VwIGtleT17a2V5fSBsYWJlbD17a2V5fT5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyT3B0aW9uKG9wdEdyb3VwRGF0YVtrZXldKX1cclxuICAgICAgICAgIDwvT3B0R3JvdXA+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtvcHRpb259XHJcbiAgICAgICAgICB7b3B0R3JvdXB9XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gICAgaWYgKG9uQ2hhbmdlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU2VsZWN0KHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGlmIChvblNlbGVjdCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRTZWxlY3REYXRhKHZhbHVlKTtcclxuICAgICAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMsIGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKSB7XHJcbiAgICBpZiAoIW9wZW4pIHtcclxuICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIG9uQ2hhbmdlLFxyXG4gICAgICBvblNlbGVjdCxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgICAgZGVmYXVsdFN0eWxlLFxyXG4gICAgICBzaG93R3JvdXAgPSB0cnVlLFxyXG4gICAgICBhZGREYXRhLFxyXG4gICAgICBkZWxldGVEYXRhLFxyXG4gICAgICB2YWx1ZVR5cGUsXHJcbiAgICAgIC4uLnBhcmFtc1xyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgIGZpbHRlck9wdGlvbjogZmFsc2UsXHJcbiAgICAgIHNob3dTZWFyY2g6IHRydWUsXHJcbiAgICAgIG9wdGlvbkZpbHRlclByb3A6IFwibGFiZWxcIixcclxuICAgICAgcGxhY2Vob2xkZXI6IFwi6K+36YCJ5oupXCIsXHJcbiAgICAgIGFsbG93Q2xlYXI6IHRydWUsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGxldCB7IGFudGRTdHlsZSwgbW91bnRFbGVtZW50SWQgfSA9IGNvbmZpZygpO1xyXG4gICAgaWYgKG1vdW50RWxlbWVudElkKSB7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIGdldFBvcHVwQ29udGFpbmVyOiAoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb3VudEVsZW1lbnRJZCksXHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoKGRlZmF1bHRTdHlsZSB8fCBhbnRkU3R5bGUpICYmIGRlZmF1bHRTdHlsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoc3R5bGVzW1wibnNjX3NlbGVjdFwiXSwgdGhpcy5wcm9wcy5jbGFzc05hbWUpfT5cclxuICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VsZWN0VmFsdWV9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLm9uU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XHJcbiAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
471
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiX1NlbGVjdCIsIk5TQ1NlbGVjdCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGEiLCJzdG9yZSIsIm9wdGlvbnMiLCJhZGREYXRhIiwiZGVsZXRlRGF0YSIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJ2aWV3bmFtZSIsImNhY2hlZCIsImNhY2hlS2V5Iiwidmlld3R5cGUiLCJzdG9yZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJ2YWx1ZUZpZWxkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwic3BsaWNlRGF0YSIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInZhbHVlIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInB1c2giLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsInJlc2V0RGF0YSIsInN0YXRlIiwiZ2V0RGF0YSIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJnZXRTZWxlY3REYXRhIiwia2V5RmllbGQiLCJyZXMiLCJ2YWwiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU2VhcmNoIiwiZmlsdGVyT3B0aW9uIiwibGFiZWxGaWVsZCIsInJlc3VsdCIsImZvckVhY2giLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImZsYWciLCJtYXRjaCIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uRGF0YSIsInZhbHVlVHlwZSIsIk51bWJlciIsImtleSIsImlkIiwiY3JlYXRlRWxlbWVudCIsImRpc2FibGVkIiwicmVuZGVyQ2hpbGRyZW4iLCJzaG93R3JvdXAiLCJGcmFnbWVudCIsIm9wdEdyb3VwRGF0YSIsImdyb3VwTmFtZSIsIm9wdGlvbiIsIm9wdEdyb3VwIiwiT2JqZWN0Iiwia2V5cyIsIm9uQ2hhbmdlIiwib25TZWxlY3QiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImRlZmF1bHRTdHlsZSIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJzaG93U2VhcmNoIiwib3B0aW9uRmlsdGVyUHJvcCIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImFudGRTdHlsZSIsIm1vdW50RWxlbWVudElkIiwiZ2V0UG9wdXBDb250YWluZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJiaW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9zZWxlY3QvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBQaW55aW5NYXRjaCBmcm9tIFwicGlueWluLW1hdGNoXCI7XHJcbmltcG9ydCB7IGdldEZsYXR0ZW5EYXRhIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG4gIGFkZERhdGE/OiBBcnJheTxPYmplY3Q+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5LuO5aKe5Yqg6aKd5aSW55qE5pWw5o2uXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PFN0cmluZz47IC8v6YWN5ZCIc3RvcmXkvb/nlKjvvIzliKDpmaTku47mlbDmja7lupPkuK3ojrflj5bliLDnmoTmjIflrprmlbDmja5cclxuICB2YWx1ZUJyZWFrPzogc3RyaW5nOyAvL+WkmuS4qnZhbHVl5L2/55So55qE5YiG6ZqU56ymXHJcbiAgdmFsdWVUeXBlPzogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCI7XHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxuICBvbkNoYW5nZT86IGFueTtcclxuICBvblNlbGVjdD86IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdXJsLFxyXG4gICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgdmlld25hbWUsXHJcbiAgICAgIGNhY2hlZCxcclxuICAgICAgY2FjaGVLZXksXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXNcIixcclxuICAgICAgLi4uc3RvcmVzXHJcbiAgICB9ID0gc3RvcmU7XHJcbiAgICBjb25zdCB2YWx1ZUZpZWxkID0gdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGxldCB7IHZpZXdVcmwsIHZpZXdCaXpVcmwgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHJlcXVlc3RWaWV3VXJsID0gdmlld3R5cGUgPT0gXCJzeXNcIiA/IHZpZXdVcmwgOiB2aWV3Qml6VXJsO1xyXG4gICAgY29uc3QgZ2V0QWxsRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0RhdGEgPSBbLi4uYWRkRGF0YSwgLi4ubmV3RGF0YV07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBzcGxpY2VEYXRhID0gW107XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgc3BsaWNlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzcGxpY2VEYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHZpZXduYW1lIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeOAgW9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKCh2aWV3bmFtZSB8fCB1cmwpICYmIGRhdGEgPT0gbnVsbCAmJiBvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgICBsZXQgaXNDYWNoZWQgPSBjYWNoZWQ7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVLZXkgPSBjYWNoZUtleTtcclxuICAgICAgICBpZiAodmlld25hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkICE9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBpc0NhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVLZXkgPSBpc0NhY2hlS2V5ID8gaXNDYWNoZUtleSA6IHZpZXduYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsIHx8IHJlcXVlc3RWaWV3VXJsICsgdmlld25hbWUsIC8v6K+75a2X5YW477yMdXJs5Zu65a6a77yMdmlld25hbWVcclxuICAgICAgICAgICAgY2FjaGVkOiBpc0NhY2hlZCxcclxuICAgICAgICAgICAgY2FjaGVLZXk6IGlzQ2FjaGVLZXksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldERhdGEoKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY2hpbGRyZW46IGFsbENoaWxkcmVuIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuYWxsRGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhKHZhbHVlKSB7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9LCB2YWx1ZUZpZWxkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGdldEZsYXR0ZW5EYXRhKGRhdGFTb3VyY2UsIHsga2V5RmllbGQ6IHZhbHVlRmllbGQgfSk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgbGV0IHJlcyA9IFtdIGFzIGFueTtcclxuICAgICAgdmFsdWUubWFwKCh2YWwpID0+IHtcclxuICAgICAgICByZXMucHVzaChuZXdEYXRhW3ZhbF0gfHwge30pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXdEYXRhW3ZhbHVlXSB8fCB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICAgIGFsbERhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUobmV3UHJvcHMsIG5ld1N0YXRlLCBTbmFwc2hvdCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhbGxEYXRhU291cmNlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IG5ld0RhdGEsXHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHN0YXRlQ2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGFsbENoaWxkcmVuLm1hcCgoczogYW55KSA9PiB7XHJcbiAgICAgICAgc3RhdGVDaGlsZHJlblByb3BzLnB1c2gocy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBjaGlsZHJlblByb3BzOiBhbnkgPSBbXTtcclxuICAgICAgY2hpbGRyZW4ubWFwKChjOiBhbnkpID0+IHtcclxuICAgICAgICBjaGlsZHJlblByb3BzLnB1c2goYy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoc3RhdGVDaGlsZHJlblByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hpbGRyZW5Qcm9wcylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlID0gKHN0YXRlLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9O1xyXG4gIH1cclxuICBvblNlYXJjaCh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZmlsdGVyT3B0aW9uID0gdHJ1ZSwgb25TZWFyY2gsIGNoaWxkcmVuLCBzdG9yZSA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGFsbENoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8ucHJvcHM/LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCAmJiBvblNlYXJjaCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlbmRlck9wdGlvbihvcHRpb25EYXRhKSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICB2YWx1ZVR5cGUgPSBcInN0cmluZ1wiLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsYWJlbEZpZWxkID0gbGFiZWxGaWVsZCA/IGxhYmVsRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICByZXR1cm4gb3B0aW9uRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHZhbHVlID1cclxuICAgICAgICAgIHZhbHVlVHlwZSA9PT0gXCJudW1iZXJcIiA/IE51bWJlcihpdGVtW3ZhbHVlRmllbGRdKSA6IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQga2V5ID0gaXRlbS5pZCA/IChpdGVtLmlkICE9PSBcInVuZGVmaW5lZFwiID8gaXRlbS5pZCA6IHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE9wdGlvblxyXG4gICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZCA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bGFiZWx9XHJcbiAgICAgICAgPC9PcHRpb24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XHJcbiAgICBjb25zdCB7IHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UsIGNoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3B0R3JvdXBEYXRhID0ge30sXHJcbiAgICAgICAgb3B0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBkYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBpdGVtLmdyb3VwTmFtZTtcclxuICAgICAgICBpZiAobGFiZWwgJiYgc2hvd0dyb3VwKSB7XHJcbiAgICAgICAgICBpZiAoIW9wdEdyb3VwRGF0YVtsYWJlbF0pIG9wdEdyb3VwRGF0YVtsYWJlbF0gPSBbXTtcclxuICAgICAgICAgIG9wdEdyb3VwRGF0YVtsYWJlbF0ucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9uRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb24gPSB0aGlzLnJlbmRlck9wdGlvbihvcHRpb25EYXRhKTtcclxuICAgICAgbGV0IG9wdEdyb3VwID0gT2JqZWN0LmtleXMob3B0R3JvdXBEYXRhKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8T3B0R3JvdXAga2V5PXtrZXl9IGxhYmVsPXtrZXl9PlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJPcHRpb24ob3B0R3JvdXBEYXRhW2tleV0pfVxyXG4gICAgICAgICAgPC9PcHRHcm91cD5cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgIHtvcHRHcm91cH1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAob25DaGFuZ2UpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0U2VsZWN0RGF0YSh2YWx1ZSk7XHJcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zLCBkYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgaWYgKG9uU2VsZWN0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvblNlbGVjdCh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKG9wZW4pIHtcclxuICAgIGlmICghb3Blbikge1xyXG4gICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdG9yZSxcclxuICAgICAgZGF0YSxcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIG9uU2VsZWN0LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgICBkZWZhdWx0U3R5bGUsXHJcbiAgICAgIHNob3dHcm91cCA9IHRydWUsXHJcbiAgICAgIGFkZERhdGEsXHJcbiAgICAgIGRlbGV0ZURhdGEsXHJcbiAgICAgIHZhbHVlVHlwZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgZmlsdGVyT3B0aW9uOiBmYWxzZSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJ1ZSxcclxuICAgICAgb3B0aW9uRmlsdGVyUHJvcDogXCJsYWJlbFwiLFxyXG4gICAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcclxuICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgbGV0IHsgYW50ZFN0eWxlLCBtb3VudEVsZW1lbnRJZCB9ID0gY29uZmlnKCk7XHJcbiAgICBpZiAobW91bnRFbGVtZW50SWQpIHtcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6ICgpID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vdW50RWxlbWVudElkKSxcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmICgoZGVmYXVsdFN0eWxlIHx8IGFudGRTdHlsZSkgJiYgZGVmYXVsdFN0eWxlID09PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhzdHlsZXNbXCJuc2Nfc2VsZWN0XCJdLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxyXG4gICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxyXG4gICAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBc0IsYUFBYTtBQUMvQyxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBRTVCLE9BQU9DLFdBQVcsTUFBTSxjQUFjO0FBQ3RDLFNBQVNDLGNBQWMsUUFBUSxtQkFBbUI7QUFDbEQsTUFBTTtFQUFFQyxNQUFNO0VBQUVDO0FBQVMsQ0FBQyxHQUFBQyxPQUFTO0FBaUJuQyxlQUFlLE1BQU1DLFNBQVMsU0FBU1gsYUFBYSxDQUFlO0VBV2pFWSxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQ0Ms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
|