UNPKG

adui

Version:

<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>

230 lines 34.7 kB
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var _excluded = ["autoHidePopup", "dataSource", "defaultValue", "filterOption", "getPopupContainer", "inputProps", "intent", "leftElement", "placeholder", "rightElement", "size", "theme", "value"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 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); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } import * as React from "react"; import PropTypes from "prop-types"; import RcSelect, { Option, OptGroup } from "rc-select"; import { ConfigContext } from "../config-provider"; import Input from "../input"; import omit from "../_util/omit"; import "./style"; var noop = function noop() {}; var Suggest = function (_React$Component) { function Suggest(props) { var _this; _classCallCheck(this, Suggest); _this = _callSuper(this, Suggest, [props]); _this.locked = false; _this.suggest = void 0; _this.saveSuggest = function (node) { if (node) { _this.suggest = node; } }; _this.onDropdownVisibleChange = function (open) { var _this$props = _this.props, onDropdownVisibleChange = _this$props.onDropdownVisibleChange, openProp = _this$props.open; if (openProp === null) { _this.setState({ open: open }); } if (onDropdownVisibleChange) onDropdownVisibleChange(open); }; _this.onSearch = function (val) { var onSearch = _this.props.onSearch; var open = _this.state.open; _this.setState({ searchValue: val }); if (!open) { _this.setState({ open: true }); } if (onSearch) { onSearch(val); } }; var defaultOpen = props.defaultOpen, defaultValue = props.defaultValue, _open = props.open, value = props.value; var openState; if (_open !== null) { openState = _open; } else if (defaultOpen !== null) { openState = defaultOpen; } _this.state = { open: openState, searchValue: (value || defaultValue || "").toString() }; return _this; } _inherits(Suggest, _React$Component); return _createClass(Suggest, [{ key: "render", value: function render() { var _this2 = this; var _this$props2 = this.props, autoHidePopup = _this$props2.autoHidePopup, dataSource = _this$props2.dataSource, defaultValue = _this$props2.defaultValue, filterOptionProp = _this$props2.filterOption, getPopupContainer = _this$props2.getPopupContainer, inputProps = _this$props2.inputProps, intent = _this$props2.intent, leftElement = _this$props2.leftElement, placeholder = _this$props2.placeholder, rightElement = _this$props2.rightElement, size = _this$props2.size, theme = _this$props2.theme, value = _this$props2.value, otherProps = _objectWithoutProperties(_this$props2, _excluded); var _this$state = this.state, openState = _this$state.open, searchValue = _this$state.searchValue; var restProps = omit(otherProps, ["defaultOpen", "onSearch", "onDropdownVisibleChange", "open"]); var selectProps = {}; if (typeof openState === "boolean") { selectProps.open = openState; } if (value !== null) { selectProps.value = value; } else { selectProps.defaultValue = defaultValue; } var filterOption = filterOptionProp || function (inputValue, o) { if (typeof o !== "string") { return o.props.title.toUpperCase().includes(inputValue.toUpperCase()); } return o.toUpperCase().includes(inputValue.toUpperCase()); }; var options = dataSource ? dataSource.filter(function (o) { if (searchValue) { return filterOption(searchValue, o); } return true; }).map(function (item) { if (React.isValidElement(item)) { return item; } return React.createElement(Option, { key: item, value: item }, item); }) : []; if (autoHidePopup && !searchValue) { options = []; } return React.createElement(ConfigContext.Consumer, null, function (_ref) { var getPopupContainerContext = _ref.getPopupContainer; return React.createElement(RcSelect, _extends({ mode: "combobox", menuItemSelectedIcon: null, dropdownMatchSelectWidth: true, dropdownClassName: "adui-suggest-dropdown", defaultActiveFirstOption: true, getPopupContainer: getPopupContainer || getPopupContainerContext, onDropdownVisibleChange: _this2.onDropdownVisibleChange, onSearch: _this2.onSearch, optionFilterProp: "children", prefixCls: "adui-suggest", showSearch: true, ref: _this2.saveSuggest, transitionName: "slide-up", getInputElement: function getInputElement() { return React.createElement(Input, _extends({ intent: intent, leftElement: leftElement, placeholder: placeholder, rightElement: rightElement, size: size, theme: theme }, inputProps)); } }, selectProps, restProps), options); }); } }]); }(React.Component); Suggest.Option = Option; Suggest.OptGroup = OptGroup; Suggest.propTypes = { autoHidePopup: PropTypes.bool, autoFocus: PropTypes.bool, children: PropTypes.node, dataSource: PropTypes.array, defaultOpen: PropTypes.bool, defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), filterOption: PropTypes.func, getPopupContainer: PropTypes.func, inputProps: PropTypes.object, intent: PropTypes.oneOf(["normal", "primary", "success", "warning", "danger"]), leftElement: PropTypes.node, notFoundContent: PropTypes.string, onDropdownVisibleChange: PropTypes.func, onInputKeyDown: PropTypes.func, onSearch: PropTypes.func, onSelect: PropTypes.func, open: PropTypes.bool, placeholder: PropTypes.string, rightElement: PropTypes.node, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), theme: PropTypes.oneOf([null, "light"]), value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) }; Suggest.defaultProps = { autoHidePopup: true, autoFocus: false, children: null, dataSource: [], defaultOpen: null, defaultValue: "", filterOption: undefined, getPopupContainer: null, inputProps: {}, intent: "normal", leftElement: undefined, notFoundContent: null, onDropdownVisibleChange: noop, onInputKeyDown: noop, onSearch: noop, onSelect: noop, open: null, placeholder: "请选择", rightElement: undefined, size: "small", theme: null, value: null }; Suggest.getDerivedStateFromProps = function (_ref2) { var open = _ref2.open, value = _ref2.value; var newState = {}; if (open !== null) { newState.open = open; } if (value !== null) { newState.searchValue = (value || "").toString(); } return Object.keys(newState).length > 0 ? newState : null; }; export default Suggest; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BUeXBlcyIsIlJjU2VsZWN0IiwiT3B0aW9uIiwiT3B0R3JvdXAiLCJDb25maWdDb250ZXh0IiwiSW5wdXQiLCJvbWl0Iiwibm9vcCIsIlN1Z2dlc3QiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJsb2NrZWQiLCJzdWdnZXN0Iiwic2F2ZVN1Z2dlc3QiLCJub2RlIiwib25Ecm9wZG93blZpc2libGVDaGFuZ2UiLCJvcGVuIiwiX3RoaXMkcHJvcHMiLCJvcGVuUHJvcCIsInNldFN0YXRlIiwib25TZWFyY2giLCJ2YWwiLCJzdGF0ZSIsInNlYXJjaFZhbHVlIiwiZGVmYXVsdE9wZW4iLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZSIsIm9wZW5TdGF0ZSIsInRvU3RyaW5nIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwiYXV0b0hpZGVQb3B1cCIsImRhdGFTb3VyY2UiLCJmaWx0ZXJPcHRpb25Qcm9wIiwiZmlsdGVyT3B0aW9uIiwiZ2V0UG9wdXBDb250YWluZXIiLCJpbnB1dFByb3BzIiwiaW50ZW50IiwibGVmdEVsZW1lbnQiLCJwbGFjZWhvbGRlciIsInJpZ2h0RWxlbWVudCIsInNpemUiLCJ0aGVtZSIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfdGhpcyRzdGF0ZSIsInJlc3RQcm9wcyIsInNlbGVjdFByb3BzIiwiaW5wdXRWYWx1ZSIsIm8iLCJ0aXRsZSIsInRvVXBwZXJDYXNlIiwiaW5jbHVkZXMiLCJvcHRpb25zIiwiZmlsdGVyIiwibWFwIiwiaXRlbSIsImlzVmFsaWRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkNvbnN1bWVyIiwiX3JlZiIsImdldFBvcHVwQ29udGFpbmVyQ29udGV4dCIsIl9leHRlbmRzIiwibW9kZSIsIm1lbnVJdGVtU2VsZWN0ZWRJY29uIiwiZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoIiwiZHJvcGRvd25DbGFzc05hbWUiLCJkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb24iLCJvcHRpb25GaWx0ZXJQcm9wIiwicHJlZml4Q2xzIiwic2hvd1NlYXJjaCIsInJlZiIsInRyYW5zaXRpb25OYW1lIiwiZ2V0SW5wdXRFbGVtZW50IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYm9vbCIsImF1dG9Gb2N1cyIsImNoaWxkcmVuIiwiYXJyYXkiLCJvbmVPZlR5cGUiLCJzdHJpbmciLCJudW1iZXIiLCJmdW5jIiwib2JqZWN0Iiwib25lT2YiLCJub3RGb3VuZENvbnRlbnQiLCJvbklucHV0S2V5RG93biIsIm9uU2VsZWN0IiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZjIiLCJuZXdTdGF0ZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL3N1Z2dlc3QvU3VnZ2VzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFJjU2VsZWN0LCB7IE9wdGlvbiwgT3B0R3JvdXAgfSBmcm9tIFwicmMtc2VsZWN0XCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcbmltcG9ydCBJbnB1dCwgeyBJSW5wdXRQcm9wcyB9IGZyb20gXCIuLi9pbnB1dFwiXG5pbXBvcnQgb21pdCBmcm9tIFwiLi4vX3V0aWwvb21pdFwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Z2dlc3Qge1xuICBnZXRQb3B1cERPTU5vZGU6ICgpID0+IEhUTUxFbGVtZW50XG4gIGdldElucHV0RE9NTm9kZTogKCkgPT4gSFRNTElucHV0RWxlbWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElPcHRpb24ge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAga2V5OiBzdHJpbmdcbiAgdmFsdWU6IHN0cmluZ1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Z2dlc3RQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5piv5ZCm5Zyo5pCc57Si5qGG5Li656m65pe277yM6Ieq5Yqo6ZqQ6JePIHBvcHVwXG4gICAqL1xuICBhdXRvSGlkZVBvcHVwPzogYm9vbGVhblxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gYXV0b0ZvY3VzXG4gICAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIGRlZmF1bHRPcGVuPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICBkYXRhU291cmNlPzogYW55W11cbiAgLyoqXG4gICAqIOaOpeaUtiBpbnB1dFZhbHVlIG9wdGlvbiDkuKTkuKrlj4LmlbDvvIzlvZMgb3B0aW9uIOespuWQiOetm+mAieadoeS7tuaXtu+8jOW6lOi/lOWbniB0cnVl77yM5Y+N5LmL5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuICBmaWx0ZXJPcHRpb24/OiAoaW5wdXRWYWx1ZTogc3RyaW5nLCBvcHRpb246IGFueSkgPT4gYm9vbGVhblxuICAvKipcbiAgICog5oyH5a6a5by55Ye65bGC55qE54i257qn77yM6buY6K6k5Li6IGRvY3VtZW50LmJvZHlcbiAgICovXG4gIGdldFBvcHVwQ29udGFpbmVyPzogbnVsbCB8ICgobm9kZTogSFRNTEVsZW1lbnQpID0+IEhUTUxFbGVtZW50KVxuICBpbnB1dFByb3BzPzogSUlucHV0UHJvcHNcbiAgLyoqXG4gICAqIOexu+Wei1xuICAgKi9cbiAgaW50ZW50PzogXCJub3JtYWxcIiB8IFwicHJpbWFyeVwiIHwgXCJzdWNjZXNzXCIgfCBcIndhcm5pbmdcIiB8IFwiZGFuZ2VyXCJcbiAgbGVmdEVsZW1lbnQ/OiBKU1guRWxlbWVudFxuICBub3RGb3VuZENvbnRlbnQ/OiBzdHJpbmcgfCBudWxsXG4gIG9uSW5wdXRLZXlEb3duPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxuICBvblNlYXJjaD86ICh2YWw6IHN0cmluZykgPT4gdm9pZFxuICBvblNlbGVjdD86ICh2YWx1ZTogc3RyaW5nLCBvcHRpb246IElPcHRpb24pID0+IHZvaWRcbiAgb3Blbj86IG51bGwgfCBib29sZWFuXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIHJpZ2h0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU/OiBudWxsIHwgXCJsaWdodFwiXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWdnZXN0U3RhdGUge1xuICBvcGVuPzogYm9vbGVhblxuICBzZWFyY2hWYWx1ZT86IHN0cmluZ1xufVxuLyoqXG4gKiDkuIvmi4npgInmi6nlmajjgIJcbiAqL1xuY2xhc3MgU3VnZ2VzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJU3VnZ2VzdFByb3BzLCBJU3VnZ2VzdFN0YXRlPiB7XG4gIHB1YmxpYyBzdGF0aWMgT3B0aW9uOiB0eXBlb2YgT3B0aW9uID0gT3B0aW9uXG5cbiAgcHVibGljIHN0YXRpYyBPcHRHcm91cDogdHlwZW9mIE9wdEdyb3VwID0gT3B0R3JvdXBcblxuICBwdWJsaWMgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblnKjmkJzntKLmoYbkuLrnqbrml7bvvIzoh6rliqjpmpDol48gcG9wdXBcbiAgICAgKi9cbiAgICBhdXRvSGlkZVBvcHVwOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvKipcbiAgICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICAgKi9cbiAgICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOWtkOiKgueCuVxuICAgICAqL1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDkuIvmi4nliJfooahcbiAgICAgKi9cbiAgICBkYXRhU291cmNlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgLyoqXG4gICAgICog5YaF6YOo6amx5Yqo77ya5piv5ZCm5bGV5byAXG4gICAgICovXG4gICAgZGVmYXVsdE9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgICAqL1xuICAgIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgIC8qKlxuICAgICAqIOaOpeaUtiBpbnB1dFZhbHVlIG9wdGlvbiDkuKTkuKrlj4LmlbDvvIzlvZMgb3B0aW9uIOespuWQiOetm+mAieadoeS7tuaXtu+8jOW6lOi/lOWbniB0cnVl77yM5Y+N5LmL5YiZ6L+U5ZueIGZhbHNlXG4gICAgICovXG4gICAgZmlsdGVyT3B0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDmjIflrprlvLnlh7rlsYLnmoTniLbnuqfvvIzpu5jorqTkuLogZG9jdW1lbnQuYm9keVxuICAgICAqL1xuICAgIGdldFBvcHVwQ29udGFpbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDkvKDpgJLnu5kgPElucHV0IC8+IOeahCBQcm9wc1xuICAgICAqL1xuICAgIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgLyoqXG4gICAgICog57G75Z6LXG4gICAgICovXG4gICAgaW50ZW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgICAgXCJub3JtYWxcIixcbiAgICAgIFwicHJpbWFyeVwiLFxuICAgICAgXCJzdWNjZXNzXCIsXG4gICAgICBcIndhcm5pbmdcIixcbiAgICAgIFwiZGFuZ2VyXCIsXG4gICAgXSksXG4gICAgLyoqXG4gICAgICog5YmN572u5YWD57SgXG4gICAgICovXG4gICAgbGVmdEVsZW1lbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAgIC8qKlxuICAgICAqIOaXoOWMuemFjee7k+aenOaXtueahOaYvuekuuaWh+Wtl1xuICAgICAqL1xuICAgIG5vdEZvdW5kQ29udGVudDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKipcbiAgICAgKiDkuIvmi4nlsZXnpLrlj5HnlJ/lj5jljJbml7bnmoQgaGFuZGxlcu+8jOWPguaVsO+8mmJvb2xcbiAgICAgKi9cbiAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICogaW5wdXQga2V5IHByZXNzIOaXtueahCBoYW5kbGVyLOWmguaenOaDs+emgeeUqOWbnui9pumAieaLqe+8jOWPr+S7peWwneivle+8mlxuICAgICAgb25JbnB1dEtleURvd249eyhlKSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICB9XG4gICAgICB9fVxuICAgICAqL1xuICAgIG9uSW5wdXRLZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiDmkJzntKLml7bnmoQgaGFuZGxlcu+8jOWPguaVsO+8mnZhbHVlXG4gICAgICovXG4gICAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOmAieaLqeaXtueahCBoYW5kbGVy77yM5Y+C5pWw77yaKHZhbHVlLCBvcHRpb24pXG4gICAgICovXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOS7juWklumDqOaMh+WumuS4i+aLieaYr+WQpuWxleW8gFxuICAgICAqL1xuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIOmAieaLqeahhum7mOiupOaWh+Wtl1xuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOWQjue9ruWFg+e0oFxuICAgICAqL1xuICAgIHJpZ2h0RWxlbWVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqXG4gICAgICog6K6+572u5bC65a+4XG4gICAgICovXG4gICAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgICAvKipcbiAgICAgKiDorr7nva7kuLvpophcbiAgICAgKi9cbiAgICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mKFtudWxsLCBcImxpZ2h0XCJdKSxcbiAgICAvKipcbiAgICAgKiDku47lpJbpg6jmjIflrprlvZPliY3pgInkuK3pobnnmoTlgLxcbiAgICAgKi9cbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UHJvcHM6IElTdWdnZXN0UHJvcHMgPSB7XG4gICAgYXV0b0hpZGVQb3B1cDogdHJ1ZSxcbiAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgIGNoaWxkcmVuOiBudWxsLFxuICAgIGRhdGFTb3VyY2U6IFtdLFxuICAgIGRlZmF1bHRPcGVuOiBudWxsLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgICBmaWx0ZXJPcHRpb246IHVuZGVmaW5lZCxcbiAgICBnZXRQb3B1cENvbnRhaW5lcjogbnVsbCxcbiAgICBpbnB1dFByb3BzOiB7fSxcbiAgICBpbnRlbnQ6IFwibm9ybWFsXCIsXG4gICAgbGVmdEVsZW1lbnQ6IHVuZGVmaW5lZCxcbiAgICBub3RGb3VuZENvbnRlbnQ6IG51bGwsXG4gICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U6IG5vb3AsXG4gICAgb25JbnB1dEtleURvd246IG5vb3AsXG4gICAgb25TZWFyY2g6IG5vb3AsXG4gICAgb25TZWxlY3Q6IG5vb3AsXG4gICAgb3BlbjogbnVsbCxcbiAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcbiAgICByaWdodEVsZW1lbnQ6IHVuZGVmaW5lZCxcbiAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgdGhlbWU6IG51bGwsXG4gICAgdmFsdWU6IG51bGwsXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9ICh7IG9wZW4sIHZhbHVlIH06IElTdWdnZXN0UHJvcHMpID0+IHtcbiAgICBjb25zdCBuZXdTdGF0ZTogSVN1Z2dlc3RTdGF0ZSA9IHt9XG4gICAgaWYgKG9wZW4gIT09IG51bGwpIHtcbiAgICAgIG5ld1N0YXRlLm9wZW4gPSBvcGVuXG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgbmV3U3RhdGUuc2VhcmNoVmFsdWUgPSAodmFsdWUgfHwgXCJcIikudG9TdHJpbmcoKVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCA+IDAgPyBuZXdTdGF0ZSA6IG51bGxcbiAgfVxuXG4gIHB1YmxpYyBsb2NrZWQgPSBmYWxzZVxuXG4gIHB1YmxpYyBzdWdnZXN0OiBJU3VnZ2VzdFxuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBJU3VnZ2VzdFByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgY29uc3QgeyBkZWZhdWx0T3BlbiwgZGVmYXVsdFZhbHVlLCBvcGVuLCB2YWx1ZSB9ID0gcHJvcHNcblxuICAgIGxldCBvcGVuU3RhdGU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICBpZiAob3BlbiAhPT0gbnVsbCkge1xuICAgICAgb3BlblN0YXRlID0gb3BlblxuICAgIH0gZWxzZSBpZiAoZGVmYXVsdE9wZW4gIT09IG51bGwpIHtcbiAgICAgIG9wZW5TdGF0ZSA9IGRlZmF1bHRPcGVuXG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG9wZW46IG9wZW5TdGF0ZSxcbiAgICAgIHNlYXJjaFZhbHVlOiAodmFsdWUgfHwgZGVmYXVsdFZhbHVlIHx8IFwiXCIpLnRvU3RyaW5nKCksXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmVTdWdnZXN0ID0gKG5vZGU6IElTdWdnZXN0KSA9PiB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMuc3VnZ2VzdCA9IG5vZGVcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ecm9wZG93blZpc2libGVDaGFuZ2UgPSAob3BlbjogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHsgb25Ecm9wZG93blZpc2libGVDaGFuZ2UsIG9wZW46IG9wZW5Qcm9wIH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAob3BlblByb3AgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuIH0pXG4gICAgfVxuICAgIGlmIChvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSkgb25Ecm9wZG93blZpc2libGVDaGFuZ2Uob3BlbilcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaCA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHsgb25TZWFyY2ggfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IG9wZW4gfSA9IHRoaXMuc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoVmFsdWU6IHZhbCB9KVxuXG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbjogdHJ1ZSB9KVxuICAgIH1cbiAgICBpZiAob25TZWFyY2gpIHtcbiAgICAgIG9uU2VhcmNoKHZhbClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9IaWRlUG9wdXAsXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZmlsdGVyT3B0aW9uOiBmaWx0ZXJPcHRpb25Qcm9wLFxuICAgICAgZ2V0UG9wdXBDb250YWluZXIsXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgaW50ZW50LFxuICAgICAgbGVmdEVsZW1lbnQsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJpZ2h0RWxlbWVudCxcbiAgICAgIHNpemUsXG4gICAgICB0aGVtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCB7IG9wZW46IG9wZW5TdGF0ZSwgc2VhcmNoVmFsdWUgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0IHJlc3RQcm9wcyA9IG9taXQob3RoZXJQcm9wcywgW1xuICAgICAgXCJkZWZhdWx0T3BlblwiLFxuICAgICAgXCJvblNlYXJjaFwiLFxuICAgICAgXCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZVwiLFxuICAgICAgXCJvcGVuXCIsXG4gICAgXSlcblxuICAgIC8vIG9wZW5TdGF0ZSDlj6/og73mmK8gdW5kZWZpbmVkIG9yIG51bGxcbiAgICBjb25zdCBzZWxlY3RQcm9wczoge1xuICAgICAgZGVmYXVsdFZhbHVlPzogUmVhY3QuUmVhY3RUZXh0IHwgbnVsbFxuICAgICAgb3Blbj86IGJvb2xlYW5cbiAgICAgIHZhbHVlPzogUmVhY3QuUmVhY3RUZXh0IHwgbnVsbFxuICAgIH0gPSB7fVxuICAgIGlmICh0eXBlb2Ygb3BlblN0YXRlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgc2VsZWN0UHJvcHMub3BlbiA9IG9wZW5TdGF0ZVxuICAgIH1cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHNlbGVjdFByb3BzLnZhbHVlID0gdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0UHJvcHMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlXG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyT3B0aW9uID1cbiAgICAgIGZpbHRlck9wdGlvblByb3AgfHxcbiAgICAgICgoaW5wdXRWYWx1ZTogc3RyaW5nLCBvOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBvICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG8ucHJvcHMudGl0bGUudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhpbnB1dFZhbHVlLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG8udG9VcHBlckNhc2UoKS5pbmNsdWRlcyhpbnB1dFZhbHVlLnRvVXBwZXJDYXNlKCkpXG4gICAgICB9KVxuXG4gICAgbGV0IG9wdGlvbnMgPSBkYXRhU291cmNlXG4gICAgICA/IGRhdGFTb3VyY2VcbiAgICAgICAgICAuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VhcmNoVmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlck9wdGlvbihzZWFyY2hWYWx1ZSwgbylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxPcHRpb24ga2V5PXtpdGVtfSB2YWx1ZT17aXRlbX0+XG4gICAgICAgICAgICAgICAge2l0ZW19XG4gICAgICAgICAgICAgIDwvT3B0aW9uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICA6IFtdXG5cbiAgICBpZiAoYXV0b0hpZGVQb3B1cCAmJiAhc2VhcmNoVmFsdWUpIHtcbiAgICAgIG9wdGlvbnMgPSBbXVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q29uZmlnQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IGdldFBvcHVwQ29udGFpbmVyOiBnZXRQb3B1cENvbnRhaW5lckNvbnRleHQgfSkgPT4gKFxuICAgICAgICAgIDxSY1NlbGVjdFxuICAgICAgICAgICAgbW9kZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgIG1lbnVJdGVtU2VsZWN0ZWRJY29uPXtudWxsfVxuICAgICAgICAgICAgZHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoXG4gICAgICAgICAgICBkcm9wZG93bkNsYXNzTmFtZT1cImFkdWktc3VnZ2VzdC1kcm9wZG93blwiXG4gICAgICAgICAgICBkZWZhdWx0QWN0aXZlRmlyc3RPcHRpb25cbiAgICAgICAgICAgIGdldFBvcHVwQ29udGFpbmVyPXtnZXRQb3B1cENvbnRhaW5lciB8fCBnZXRQb3B1cENvbnRhaW5lckNvbnRleHR9XG4gICAgICAgICAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZT17dGhpcy5vbkRyb3Bkb3duVmlzaWJsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNofVxuICAgICAgICAgICAgb3B0aW9uRmlsdGVyUHJvcD1cImNoaWxkcmVuXCJcbiAgICAgICAgICAgIHByZWZpeENscz1cImFkdWktc3VnZ2VzdFwiXG4gICAgICAgICAgICBzaG93U2VhcmNoXG4gICAgICAgICAgICByZWY9e3RoaXMuc2F2ZVN1Z2dlc3R9XG4gICAgICAgICAgICB0cmFuc2l0aW9uTmFtZT1cInNsaWRlLXVwXCJcbiAgICAgICAgICAgIGdldElucHV0RWxlbWVudD17KCkgPT4gKFxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICBpbnRlbnQ9e2ludGVudH1cbiAgICAgICAgICAgICAgICBsZWZ0RWxlbWVudD17bGVmdEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgIHJpZ2h0RWxlbWVudD17cmlnaHRFbGVtZW50fVxuICAgICAgICAgICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgICAgIHsuLi5pbnB1dFByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHsuLi5zZWxlY3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbnN9XG4gICAgICAgICAgPC9SY1NlbGVjdD5cbiAgICAgICAgKX1cbiAgICAgIDwvQ29uZmlnQ29udGV4dC5Db25zdW1lcj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3VnZ2VzdFxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsUUFBUSxJQUFJQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxXQUFXO0FBQ3RELFNBQVNDLGFBQWEsUUFBUSxvQkFBb0I7QUFDbEQsT0FBT0MsS0FBSyxNQUF1QixVQUFVO0FBQzdDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLE9BQU8sU0FBUztBQUVoQixJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBQSxFQUFTLENBQUMsQ0FBQztBQUFBLElBdUVmQyxPQUFPLGFBQUFDLGdCQUFBO0VBbUpYLFNBQUFELFFBQVlFLEtBQW9CLEVBQUU7SUFBQSxJQUFBQyxLQUFBO0lBQUFDLGVBQUEsT0FBQUosT0FBQTtJQUNoQ0csS0FBQSxHQUFBRSxVQUFBLE9BQUFMLE9B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