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>
377 lines (376 loc) • 97.8 kB
JavaScript
"use strict";
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); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _react2 = _interopRequireDefault(require("cleave.js/react"));
var _warning = _interopRequireDefault(require("../_util/warning"));
var _configProvider = require("../config-provider");
var _Textarea = _interopRequireDefault(require("./Textarea"));
require("./style");
var _excluded = ["autoComplete", "autoFocus", "className", "cleaveOptions", "contentJustify", "countHanzi", "defaultValue", "disabled", "id", "inputClassName", "inputStyle", "intent", "leftElement", "limit", "name", "onBlur", "onChange", "onFocus", "onKeyDown", "onPressEnter", "placeholder", "required", "rightElement", "size", "style", "theme", "type", "value"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
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 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; }
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; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, 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 _regeneratorRuntime() { "use strict"; _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
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; }
var prefix = "adui-input";
var Input = (0, _react.forwardRef)(function (_ref, ref) {
var _cleaveRef$current;
var autoComplete = _ref.autoComplete,
autoFocus = _ref.autoFocus,
className = _ref.className,
cleaveOptions = _ref.cleaveOptions,
contentJustify = _ref.contentJustify,
countHanzi = _ref.countHanzi,
defaultValue = _ref.defaultValue,
disabled = _ref.disabled,
id = _ref.id,
inputClassName = _ref.inputClassName,
inputStyle = _ref.inputStyle,
intent = _ref.intent,
leftElement = _ref.leftElement,
limit = _ref.limit,
name = _ref.name,
onBlur = _ref.onBlur,
onChange = _ref.onChange,
onFocus = _ref.onFocus,
onKeyDown = _ref.onKeyDown,
onPressEnter = _ref.onPressEnter,
placeholder = _ref.placeholder,
required = _ref.required,
rightElement = _ref.rightElement,
sizeProp = _ref.size,
style = _ref.style,
theme = _ref.theme,
type = _ref.type,
value = _ref.value,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = (0, _react.useState)(null),
_useState2 = _slicedToArray(_useState, 2),
leftElementWidth = _useState2[0],
setLeftElementWidth = _useState2[1];
var _useState3 = (0, _react.useState)(null),
_useState4 = _slicedToArray(_useState3, 2),
rightElementWidth = _useState4[0],
setRightElementWidth = _useState4[1];
var inputRef = (0, _react.useRef)(null);
var wrapperElementRef = (0, _react.useRef)(null);
var leftElementRef = (0, _react.useRef)(null);
var rightElementRef = (0, _react.useRef)(null);
var justifyElementRef = (0, _react.useRef)(null);
var cleaveRef = (0, _react.useRef)(null);
var inputElement = (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) || (cleaveRef === null || cleaveRef === void 0 || (_cleaveRef$current = cleaveRef.current) === null || _cleaveRef$current === void 0 ? void 0 : _cleaveRef$current.element);
var _useContext = (0, _react.useContext)(_configProvider.ConfigContext),
sizeContext = _useContext.size;
var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext);
var syncCleave = function syncCleave() {
if (cleaveRef !== null && cleaveRef !== void 0 && cleaveRef.current) {
var _cleaveRef$current2 = cleaveRef.current,
element = _cleaveRef$current2.element,
state = _cleaveRef$current2.state,
properties = _cleaveRef$current2.properties;
var lastInputValue = cleaveRef.current.lastInputValue;
if (lastInputValue !== value) {
lastInputValue = value;
}
if (state.value !== value) {
state.value = value;
}
if (properties.result !== value) {
properties.result = value;
}
if (element && element.value !== value && value) {
var pos = element.selectionStart;
element.value = value;
Promise.resolve().then(function () {
element.setSelectionRange(pos, pos);
});
}
}
};
var handleChange = function handleChange(e) {
if (!disabled && onChange) {
var val = e.target.value.replace(/\u0008|\u0009|\u000A|\u000B|\u000C|\u000D|\u00A0|\u2028|\u2029|\uFEFF/g, "");
onChange(e, val);
}
};
var handleKeyDown = function handleKeyDown(e) {
if (e.key === "Enter" && onPressEnter) {
onPressEnter(e);
}
if (onKeyDown) {
onKeyDown(e);
}
};
var handleBlur = function handleBlur(e) {
syncCleave();
if (onBlur) {
onBlur(e);
}
};
var handleFocus = function handleFocus(e) {
if (onFocus) {
onFocus(e);
}
};
var handleAttachedElementClick = function handleAttachedElementClick(position) {
if (position === "left" && leftElement && leftElement.type && leftElement.type.name === "Icon") {
inputElement.focus();
inputElement.select();
}
if (position === "right" && rightElement && rightElement.type && rightElement.type.name === "Icon") {
inputElement.focus();
inputElement.select();
}
};
var fixControlledValue = function fixControlledValue(val) {
if (typeof val === "undefined" || val === null) {
return "";
}
return val;
};
var updateElementsWidth = function () {
var _ref2 = _asyncToGenerator(_regeneratorRuntime().mark(function _callee() {
var clientWidth, _clientWidth, scrollWidth;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return new Promise(function (resolve) {
return setTimeout(resolve, 0);
});
case 2:
if (leftElementRef !== null && leftElementRef !== void 0 && leftElementRef.current) {
clientWidth = leftElementRef.current.clientWidth;
if (Math.abs(clientWidth - (leftElementWidth || 0)) > 2) {
setLeftElementWidth(clientWidth);
}
} else if (leftElementWidth) {
setLeftElementWidth(null);
}
if (rightElementRef !== null && rightElementRef !== void 0 && rightElementRef.current) {
_clientWidth = rightElementRef.current.clientWidth;
if (Math.abs(_clientWidth - (rightElementWidth || 0)) > 2) {
setRightElementWidth(_clientWidth);
}
} else if (rightElementWidth) {
setRightElementWidth(null);
}
if (justifyElementRef !== null && justifyElementRef !== void 0 && justifyElementRef.current) {
scrollWidth = justifyElementRef.current.scrollWidth;
if (wrapperElementRef.current && Math.ceil(scrollWidth) !== wrapperElementRef.current.clientWidth) {
wrapperElementRef.current.style.width = "".concat(Math.ceil(scrollWidth), "px");
}
}
case 5:
case "end":
return _context.stop();
}
}, _callee);
}));
return function updateElementsWidth() {
return _ref2.apply(this, arguments);
};
}();
var getFormatStrLeng = function getFormatStrLeng(str) {
var len = str.length;
var realLength = 0;
var charCode = -1;
for (var i = 0; i < len; i += 1) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) {
realLength += 0.5;
} else {
realLength += 1;
}
}
return Math.ceil(realLength);
};
(0, _react.useLayoutEffect)(function () {
updateElementsWidth();
syncCleave();
});
(0, _react.useImperativeHandle)(ref, function () {
var _cleaveRef$current3;
var realRef = (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) || (cleaveRef === null || cleaveRef === void 0 || (_cleaveRef$current3 = cleaveRef.current) === null || _cleaveRef$current3 === void 0 ? void 0 : _cleaveRef$current3.element);
return {
cleave: cleaveRef === null || cleaveRef === void 0 ? void 0 : cleaveRef.current,
input: realRef,
leftElement: leftElementRef === null || leftElementRef === void 0 ? void 0 : leftElementRef.current,
rightElement: rightElementRef === null || rightElementRef === void 0 ? void 0 : rightElementRef.current,
updateElementsWidth: updateElementsWidth,
handleChange: handleChange,
handleKeyDown: handleKeyDown,
handleBlur: handleBlur,
handleFocus: handleFocus,
handleAttachedElementClick: handleAttachedElementClick,
focus: function focus() {
return realRef.focus();
},
blur: function blur() {
return realRef.blur();
}
};
});
var inputProps = {
autoComplete: autoComplete,
autoFocus: autoFocus,
className: (0, _classnames["default"])("".concat(prefix, "-base"), inputClassName),
disabled: disabled,
id: id,
name: name,
onBlur: handleBlur,
onChange: handleChange,
onFocus: handleFocus,
onKeyDown: handleKeyDown,
placeholder: placeholder,
ref: inputRef,
required: required,
style: _objectSpread({
paddingLeft: leftElementWidth ? "".concat(leftElementWidth, "px") : undefined,
paddingRight: rightElementWidth ? "".concat(rightElementWidth, "px") : undefined
}, inputStyle),
type: type
};
var cleaveInputProps = _objectSpread({}, inputProps);
if (value !== null) {
inputProps.value = fixControlledValue(value);
} else {
inputProps.defaultValue = fixControlledValue(defaultValue);
}
cleaveInputProps.value = value || defaultValue || "";
var input = !cleaveOptions || Object.keys(cleaveOptions).length === 0 ? _react["default"].createElement("input", inputProps) : _react["default"].createElement(_react2["default"], _extends({
options: cleaveOptions
}, cleaveInputProps, {
ref: cleaveRef
}));
var length;
if (limit) {
(0, _warning["default"])(!rightElement, "Input", "不允许同时使用 prop `limit` 与 prop `rightElement`");
if (value) {
length = countHanzi ? getFormatStrLeng(value) : value.length;
} else {
(0, _warning["default"])(value !== null, "Input", "如果要使用 limit Prop,必须从外部控制 value。");
length = 0;
}
}
if (contentJustify) {
(0, _warning["default"])(value !== null, "Input", "如果使用 contentJusfity Prop,必须从外部控制 value。");
}
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-wrapper"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-").concat(theme), theme), "".concat(prefix, "-disabled"), disabled), "".concat(prefix, "-limited"), limit), "".concat(prefix, "-limited_digit-over-2"), limit && limit.toString().length > 2), "".concat(prefix, "-normal"), intent === "normal"), "".concat(prefix, "-primary"), intent === "primary"), "".concat(prefix, "-success"), intent === "success"), "".concat(prefix, "-warning"), intent === "warning"), "".concat(prefix, "-danger"), intent === "danger" || length && limit && length > limit));
var leftType = leftElement && leftElement.type ? leftElement.type.type : "";
var rightType = rightElement && rightElement.type ? rightElement.type.type : "";
return _react["default"].createElement("div", _extends({
ref: wrapperElementRef,
className: classSet,
style: style
}, otherProps), !!leftElement && _react["default"].createElement("div", {
ref: leftElementRef,
onClick: function onClick() {
return handleAttachedElementClick("left");
},
role: "none",
className: (0, _classnames["default"])("".concat(prefix, "-left"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-left_button"), leftType === "Button"), "".concat(prefix, "-left_icon"), leftType === "Icon"), "".concat(prefix, "-left_select"), leftType === "Select"))
}, leftElement), input, !!rightElement && _react["default"].createElement("div", {
ref: rightElementRef,
onClick: function onClick() {
return handleAttachedElementClick("right");
},
role: "none",
className: (0, _classnames["default"])("".concat(prefix, "-right"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-right_button"), rightType === "Button"), "".concat(prefix, "-right_icon"), rightType === "Icon"), "".concat(prefix, "-right_select"), rightType === "Select"))
}, rightElement), limit && _react["default"].createElement("div", {
className: "".concat(prefix, "-limit")
}, _react["default"].createElement("span", null, "".concat(length, "/").concat(limit))), contentJustify && _react["default"].createElement("div", {
className: "".concat(prefix, "-justify"),
ref: justifyElementRef,
style: {
paddingLeft: leftElementWidth ? "".concat(leftElementWidth, "px") : undefined,
paddingRight: rightElementWidth ? "".concat(rightElementWidth, "px") : undefined,
minWidth: style === null || style === void 0 ? void 0 : style.minWidth
}
}, fixControlledValue(value)));
});
Input.Textarea = _Textarea["default"];
Input.displayName = "Input";
Input.propTypes = {
autoComplete: _propTypes["default"].oneOf(["on", "off"]),
autoFocus: _propTypes["default"].bool,
className: _propTypes["default"].string,
cleaveOptions: _propTypes["default"].object,
contentJustify: _propTypes["default"].bool,
countHanzi: _propTypes["default"].bool,
defaultValue: _propTypes["default"].string,
disabled: _propTypes["default"].bool,
id: _propTypes["default"].string,
inputClassName: _propTypes["default"].string,
inputStyle: _propTypes["default"].object,
intent: _propTypes["default"].oneOf(["normal", "primary", "success", "warning", "danger"]),
leftElement: _propTypes["default"].any,
limit: _propTypes["default"].number,
name: _propTypes["default"].string,
onBlur: _propTypes["default"].func,
onChange: _propTypes["default"].func,
onFocus: _propTypes["default"].func,
onKeyDown: _propTypes["default"].func,
onPressEnter: _propTypes["default"].func,
placeholder: _propTypes["default"].string,
required: _propTypes["default"].bool,
rightElement: _propTypes["default"].any,
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
style: _propTypes["default"].object,
theme: _propTypes["default"].oneOf([null, "light"]),
type: _propTypes["default"].string,
value: _propTypes["default"].string
};
Input.defaultProps = {
autoComplete: "off",
autoFocus: false,
className: undefined,
cleaveOptions: {},
contentJustify: false,
countHanzi: true,
defaultValue: null,
disabled: false,
id: null,
intent: "normal",
inputClassName: undefined,
inputStyle: {},
leftElement: undefined,
limit: null,
name: null,
onBlur: function onBlur() {},
onChange: function onChange() {},
onFocus: function onFocus() {},
onKeyDown: function onKeyDown() {},
onPressEnter: function onPressEnter() {},
placeholder: "请输入",
required: false,
rightElement: undefined,
size: "small",
style: {},
theme: null,
type: null,
value: null
};
var _default = exports["default"] = Input;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3JlYWN0MiIsIl93YXJuaW5nIiwiX2NvbmZpZ1Byb3ZpZGVyIiwiX1RleHRhcmVhIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJwcm90b3R5cGUiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX25leHQiLCJfdGhyb3ciLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImluY2x1ZGVzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJwcmVmaXgiLCJJbnB1dCIsImZvcndhcmRSZWYiLCJfcmVmIiwicmVmIiwiX2NsZWF2ZVJlZiRjdXJyZW50IiwiYXV0b0NvbXBsZXRlIiwiYXV0b0ZvY3VzIiwiY2xhc3NOYW1lIiwiY2xlYXZlT3B0aW9ucyIsImNvbnRlbnRKdXN0aWZ5IiwiY291bnRIYW56aSIsImRlZmF1bHRWYWx1ZSIsImRpc2FibGVkIiwiaWQiLCJpbnB1dENsYXNzTmFtZSIsImlucHV0U3R5bGUiLCJpbnRlbnQiLCJsZWZ0RWxlbWVudCIsImxpbWl0Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwib25LZXlEb3duIiwib25QcmVzc0VudGVyIiwicGxhY2Vob2xkZXIiLCJyZXF1aXJlZCIsInJpZ2h0RWxlbWVudCIsInNpemVQcm9wIiwic2l6ZSIsInN0eWxlIiwidGhlbWUiLCJvdGhlclByb3BzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwibGVmdEVsZW1lbnRXaWR0aCIsInNldExlZnRFbGVtZW50V2lkdGgiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInJpZ2h0RWxlbWVudFdpZHRoIiwic2V0UmlnaHRFbGVtZW50V2lkdGgiLCJpbnB1dFJlZiIsInVzZVJlZiIsIndyYXBwZXJFbGVtZW50UmVmIiwibGVmdEVsZW1lbnRSZWYiLCJyaWdodEVsZW1lbnRSZWYiLCJqdXN0aWZ5RWxlbWVudFJlZiIsImNsZWF2ZVJlZiIsImlucHV0RWxlbWVudCIsImN1cnJlbnQiLCJlbGVtZW50IiwiX3VzZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiQ29uZmlnQ29udGV4dCIsInNpemVDb250ZXh0IiwiZ2V0Q29tcHV0ZWRTaXplIiwic3luY0NsZWF2ZSIsIl9jbGVhdmVSZWYkY3VycmVudDIiLCJzdGF0ZSIsInByb3BlcnRpZXMiLCJsYXN0SW5wdXRWYWx1ZSIsInJlc3VsdCIsInBvcyIsInNlbGVjdGlvblN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJ0YXJnZXQiLCJyZXBsYWNlIiwiaGFuZGxlS2V5RG93biIsImtleSIsImhhbmRsZUJsdXIiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrIiwicG9zaXRpb24iLCJmb2N1cyIsInNlbGVjdCIsImZpeENvbnRyb2xsZWRWYWx1ZSIsInVwZGF0ZUVsZW1lbnRzV2lkdGgiLCJfcmVmMiIsIl9jYWxsZWUiLCJjbGllbnRXaWR0aCIsIl9jbGllbnRXaWR0aCIsInNjcm9sbFdpZHRoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInNldFRpbWVvdXQiLCJNYXRoIiwiYWJzIiwiY2VpbCIsIndpZHRoIiwiY29uY2F0IiwiZ2V0Rm9ybWF0U3RyTGVuZyIsInN0ciIsImxlbiIsInJlYWxMZW5ndGgiLCJjaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiX2NsZWF2ZVJlZiRjdXJyZW50MyIsInJlYWxSZWYiLCJjbGVhdmUiLCJpbnB1dCIsImJsdXIiLCJpbnB1dFByb3BzIiwiY2xhc3NOYW1lcyIsInBhZGRpbmdMZWZ0IiwidW5kZWZpbmVkIiwicGFkZGluZ1JpZ2h0IiwiY2xlYXZlSW5wdXRQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJvcHRpb25zIiwid2FybmluZyIsImNsYXNzU2V0IiwibGVmdFR5cGUiLCJyaWdodFR5cGUiLCJvbkNsaWNrIiwicm9sZSIsIm1pbldpZHRoIiwiVGV4dGFyZWEiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZiIsImJvb2wiLCJzdHJpbmciLCJvYmplY3QiLCJhbnkiLCJudW1iZXIiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9pbnB1dC9JbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIGZvcndhcmRSZWYsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHVzZUxheW91dEVmZmVjdCxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENsZWF2ZSBmcm9tIFwiY2xlYXZlLmpzL3JlYWN0XCJcbmltcG9ydCB3YXJuaW5nIGZyb20gXCIuLi9fdXRpbC93YXJuaW5nXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IFRleHRhcmVhIGZyb20gXCIuL1RleHRhcmVhXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktaW5wdXRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvQ29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZT86IFwib25cIiB8IFwib2ZmXCJcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhblxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOWunueOsOaJi+acuuWPt+OAgeaXpeacn+OAgeaVsOWtl+WPiuiHquWumuS5ieagvOW8j++8jOWPr+afpeeci1vnpLrkvotdKGh0dHA6Ly93eGFkLmRlc2lnbi9hZHVpL2NvbXBvbmVudHMvaW5wdXQp44CCXG4gICAqL1xuICBjbGVhdmVPcHRpb25zPzogb2JqZWN0XG4gIC8qKlxuICAgKiDlrr3luqbmmK/lkKbkuI7lhoXlrrnlrr3luqblr7npvZBcbiAgICovXG4gIGNvbnRlbnRKdXN0aWZ5PzogYm9vbGVhblxuICAvKipcbiAgICog5piv5ZCm5oyJ54Wn5LiA5Liq5rGJ5a2X566XIDIg5a2X5pWw55qE5pa55byP6ZmQ5Yi26ZW/5bqmXG4gICAqL1xuICBjb3VudEhhbnppPzogYm9vbGVhblxuICAvKipcbiAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5L2c55So5YiwIGlucHV0IOWFg+e0oOeahOexu+WQjVxuICAgKi9cbiAgaW5wdXRDbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOS9nOeUqOWIsCBpbnB1dCDlhYPntKDnmoTmoLflvI9cbiAgICovXG4gIGlucHV0U3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiDovpPlhaXmoYbnmoQgaWRcbiAgICovXG4gIGlkPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog57G75Z6LXG4gICAqL1xuICBpbnRlbnQ/OiBcIm5vcm1hbFwiIHwgXCJwcmltYXJ5XCIgfCBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJkYW5nZXJcIlxuICAvKipcbiAgICog5YmN572u5YWD57SgXG4gICAqL1xuICBsZWZ0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIC8qKlxuICAgKiDpmZDliLbplb/luqZcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gbmFtZVxuICAgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIGJsdXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQmx1cj86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDlgLzmlLnlj5jml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4sIHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkXG4gIC8qKlxuICAgKiBmb2N1cyDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25Gb2N1cz86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbktleURvd24/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICogZW50ZXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uUHJlc3NFbnRlcj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBwbGFjZWhvbGRlclxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIHJlcXVpcmVkXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWQjue9ruWFg+e0oFxuICAgKi9cbiAgcmlnaHRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6ZmE5Yqg5qC35byPXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIOiuvue9ruS4u+mimFxuICAgKi9cbiAgdGhlbWU/OiBudWxsIHwgXCJsaWdodFwiXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSB0eXBlXG4gICAqL1xuICB0eXBlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5YC8IC0g5aSW6YOo5o6n5Yi2XG4gICAqL1xuICB2YWx1ZT86IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRSZWYge1xuICBjbGVhdmU6IGFueVxuICBpbnB1dDogSFRNTElucHV0RWxlbWVudFxuICBsZWZ0RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsXG4gIHJpZ2h0RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsXG4gIHVwZGF0ZUVsZW1lbnRzV2lkdGg6ICgpID0+IHZvaWRcbiAgaGFuZGxlQ2hhbmdlOiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlS2V5RG93bjogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlQmx1cjogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrOiAocG9zaXRpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSA9PiB2b2lkXG4gIGZvY3VzOiAoKSA9PiB2b2lkXG4gIGJsdXI6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRcbiAgZXh0ZW5kcyBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICAgIElJbnB1dFByb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxJSW5wdXRSZWY+XG4gID4ge1xuICBUZXh0YXJlYTogdHlwZW9mIFRleHRhcmVhXG59XG5cbi8qKlxuICog6L6T5YWl5qGG55So5LqO5paH5pys6L6T5YWl55qE5Yy65Z+f77yM5Y+v57uT5ZCI5Zu+5qCH44CB5oyJ6ZKu44CB6YCJ5oup5Zmo562J57uE5Lu25L2/55So44CCXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IElucHV0OiBJSW5wdXQgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgYXV0b0NvbXBsZXRlLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2xlYXZlT3B0aW9ucyxcbiAgICAgIGNvbnRlbnRKdXN0aWZ5LFxuICAgICAgY291bnRIYW56aSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBpbnB1dENsYXNzTmFtZSxcbiAgICAgIGlucHV0U3R5bGUsXG4gICAgICBpbnRlbnQsXG4gICAgICBsZWZ0RWxlbWVudCxcbiAgICAgIGxpbWl0LFxuICAgICAgbmFtZSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uUHJlc3NFbnRlcixcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICByaWdodEVsZW1lbnQsXG4gICAgICBzaXplOiBzaXplUHJvcCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhlbWUsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSUlucHV0UHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IFtsZWZ0RWxlbWVudFdpZHRoLCBzZXRMZWZ0RWxlbWVudFdpZHRoXSA9IHVzZVN0YXRlPG51bGwgfCBudW1iZXI+KFxuICAgICAgbnVsbFxuICAgIClcbiAgICBjb25zdCBbcmlnaHRFbGVtZW50V2lkdGgsIHNldFJpZ2h0RWxlbWVudFdpZHRoXSA9IHVzZVN0YXRlPG51bGwgfCBudW1iZXI+KFxuICAgICAgbnVsbFxuICAgIClcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gICAgY29uc3Qgd3JhcHBlckVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgbGVmdEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgcmlnaHRFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IGp1c3RpZnlFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IGNsZWF2ZVJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG5cbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBpbnB1dFJlZj8uY3VycmVudCB8fCBjbGVhdmVSZWY/LmN1cnJlbnQ/LmVsZW1lbnRcblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IHNpemUgPSBnZXRDb21wdXRlZFNpemUoc2l6ZVByb3AsIHNpemVDb250ZXh0KVxuXG4gICAgY29uc3Qgc3luY0NsZWF2ZSA9ICgpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICog5L+u5aSNIGNsZWF2ZS4xLjQuNyBidWc6XG4gICAgICAgKi9cbiAgICAgIGlmIChjbGVhdmVSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBlbGVtZW50LCBzdGF0ZSwgcHJvcGVydGllcyB9ID0gY2xlYXZlUmVmLmN1cnJlbnRcbiAgICAgICAgbGV0IHsgbGFzdElucHV0VmFsdWUgfSA9IGNsZWF2ZVJlZi5jdXJyZW50XG4gICAgICAgIGlmIChsYXN0SW5wdXRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICBsYXN0SW5wdXRWYWx1ZSA9IHZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHN0YXRlLnZhbHVlID0gdmFsdWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydGllcy5yZXN1bHQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgcHJvcGVydGllcy5yZXN1bHQgPSB2YWx1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQudmFsdWUgIT09IHZhbHVlICYmIHZhbHVlKSB7XG4gICAgICAgICAgLy8g5L+d5a2Y5YWJ5qCH5L2N572u562J5ZCO57ut5oGi5aSNXG4gICAgICAgICAgY29uc3QgcG9zID0gZWxlbWVudC5zZWxlY3Rpb25TdGFydFxuXG4gICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHZhbHVlXG5cbiAgICAgICAgICAvLyDnroDljZXnrYnlvoXkuIDkuKptaWNyb3Rhc2vvvIzlkKbliJnml6Dms5Xorr7nva7lhYnmoIfkvY3nva5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvY29yZS1qcy9pbnRlcm5hbHMvbWljcm90YXNrLmpzI0xMNDZDNjEtTDQ2QzYxXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCwgbWF4LWxlbiAqL1xuICAgICAgICAvLyAwOCBCYWNrc3BhY2UsIDA5IFRhYiwgMEEg5o2i6KGM56ymLCAwQiDlnoLnm7TliLbooajnrKYsIDBDIOaNoumhtSwgMEQg5Zue6L2mLCBBMCDkuI3pl7Tmlq3nqbrmoLwsXG4gICAgICAgIC8vIDIwMjgvMjAyOSDliIbpmpTnrKYsIEZFZmYg5a2X6IqC6aG65bqP5qCH6K6w44CCXG4gICAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgL1xcdTAwMDh8XFx1MDAwOXxcXHUwMDBBfFxcdTAwMEJ8XFx1MDAwQ3xcXHUwMDBEfFxcdTAwQTB8XFx1MjAyOHxcXHUyMDI5fFxcdUZFRkYvZyxcbiAgICAgICAgICBcIlwiXG4gICAgICAgIClcbiAgICAgICAgb25DaGFuZ2UoZSwgdmFsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgJiYgb25QcmVzc0VudGVyKSB7XG4gICAgICAgIG9uUHJlc3NFbnRlcihlKVxuICAgICAgfVxuICAgICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgICBvbktleURvd24oZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHN5bmNDbGVhdmUoKVxuICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICBvbkJsdXIoZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAob25Gb2N1cykge1xuICAgICAgICBvbkZvY3VzKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2sgPSAocG9zaXRpb246IFwibGVmdFwiIHwgXCJyaWdodFwiKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHBvc2l0aW9uID09PSBcImxlZnRcIiAmJlxuICAgICAgICBsZWZ0RWxlbWVudCAmJlxuICAgICAgICBsZWZ0RWxlbWVudC50eXBlICYmXG4gICAgICAgIGxlZnRFbGVtZW50LnR5cGUubmFtZSA9PT0gXCJJY29uXCJcbiAgICAgICkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKVxuICAgICAgICBpbnB1dEVsZW1lbnQuc2VsZWN0KClcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgcG9zaXRpb24gPT09IFwicmlnaHRcIiAmJlxuICAgICAgICByaWdodEVsZW1lbnQgJiZcbiAgICAgICAgcmlnaHRFbGVtZW50LnR5cGUgJiZcbiAgICAgICAgcmlnaHRFbGVtZW50LnR5cGUubmFtZSA9PT0gXCJJY29uXCJcbiAgICAgICkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKVxuICAgICAgICBpbnB1dEVsZW1lbnQuc2VsZWN0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaXhDb250cm9sbGVkVmFsdWUgPSAodmFsPzogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBcIlwiXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlRWxlbWVudHNXaWR0aCA9IGFzeW5jICgpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICog6L+Z5Liq5pa55rOV5Lya5ZyoIGRpZFVwZGF0ZSDlkowgZGlkTW91bnQg5pe25Y67IHNldFN0YXRlXG4gICAgICAgKiDkuIDlrpropoHpgb/lhY3pgKDmiJDlvqrnjq/jgIJcbiAgICAgICAqL1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpXG4gICAgICBpZiAobGVmdEVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gbGVmdEVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgICAgaWYgKE1hdGguYWJzKGNsaWVudFdpZHRoIC0gKGxlZnRFbGVtZW50V2lkdGggfHwgMCkpID4gMikge1xuICAgICAgICAgIHNldExlZnRFbGVtZW50V2lkdGgoY2xpZW50V2lkdGgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGVmdEVsZW1lbnRXaWR0aCkge1xuICAgICAgICBzZXRMZWZ0RWxlbWVudFdpZHRoKG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodEVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gcmlnaHRFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgICAgICAvLyDpmLLmraLlvqrnjq9cbiAgICAgICAgaWYgKE1hdGguYWJzKGNsaWVudFdpZHRoIC0gKHJpZ2h0RWxlbWVudFdpZHRoIHx8IDApKSA+IDIpIHtcbiAgICAgICAgICBzZXRSaWdodEVsZW1lbnRXaWR0aChjbGllbnRXaWR0aClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodEVsZW1lbnRXaWR0aCkge1xuICAgICAgICBzZXRSaWdodEVsZW1lbnRXaWR0aChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoanVzdGlmeUVsZW1lbnRSZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxXaWR0aCB9ID0ganVzdGlmeUVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICBpZiAoXG4gICAgICAgICAgd3JhcHBlckVsZW1lbnRSZWYuY3VycmVudCAmJlxuICAgICAgICAgIE1hdGguY2VpbChzY3JvbGxXaWR0aCkgIT09IHdyYXBwZXJFbGVtZW50UmVmLmN1cnJlbnQuY2xpZW50V2lkdGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgd3JhcHBlckVsZW1lbnRSZWYuY3VycmVudC5zdHlsZS53aWR0aCA9IGAke01hdGguY2VpbChzY3JvbGxXaWR0aCl9cHhgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRGb3JtYXRTdHJMZW5nID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgICBsZXQgcmVhbExlbmd0aCA9IDBcbiAgICAgIGxldCBjaGFyQ29kZSA9IC0xXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICAgICAgaWYgKGNoYXJDb2RlID49IDAgJiYgY2hhckNvZGUgPD0gMTI4KSB7XG4gICAgICAgICAgcmVhbExlbmd0aCArPSAwLjVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWFsTGVuZ3RoICs9IDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguY2VpbChyZWFsTGVuZ3RoKVxuICAgIH1cblxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICB1cGRhdGVFbGVtZW50c1dpZHRoKClcbiAgICAgIHN5bmNDbGVhdmUoKVxuICAgIH0pXG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVhbFJlZiA9IGlucHV0UmVmPy5jdXJyZW50IHx8IGNsZWF2ZVJlZj8uY3VycmVudD8uZWxlbWVudFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXZlOiBjbGVhdmVSZWY/LmN1cnJlbnQsXG4gICAgICAgIGlucHV0OiByZWFsUmVmLFxuICAgICAgICBsZWZ0RWxlbWVudDogbGVmdEVsZW1lbnRSZWY/LmN1cnJlbnQsXG4gICAgICAgIHJpZ2h0RWxlbWVudDogcmlnaHRFbGVtZW50UmVmPy5jdXJyZW50LFxuICAgICAgICB1cGRhdGVFbGVtZW50c1dpZHRoLFxuICAgICAgICBoYW5kbGVDaGFuZ2UsXG4gICAgICAgIGhhbmRsZUtleURvd24sXG4gICAgICAgIGhhbmRsZUJsdXIsXG4gICAgICAgIGhhbmRsZUZvY3VzLFxuICAgICAgICBoYW5kbGVBdHRhY2hlZEVsZW1lbnRDbGljayxcbiAgICAgICAgZm9jdXM6ICgpID0+IHJlYWxSZWYuZm9jdXMoKSxcbiAgICAgICAgYmx1cjogKCkgPT4gcmVhbFJlZi5ibHVyKCksXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IGlucHV0UHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgICBhdXRvQ29tcGxldGUsXG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoYCR7cHJlZml4fS1iYXNlYCwgaW5wdXRDbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLFxuICAgICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHBhZGRpbmdMZWZ0OiBsZWZ0RWxlbWVudFdpZHRoID8gYCR7bGVmdEVsZW1lbnRXaWR0aH1weGAgOiB1bmRlZmluZWQsXG4gICAgICAgIHBhZGRpbmdSaWdodDogcmlnaHRFbGVtZW50V2lkdGggPyBgJHtyaWdodEVsZW1lbnRXaWR0aH1weGAgOiB1bmRlZmluZWQsXG4gICAgICAgIC4uLmlucHV0U3R5bGUsXG4gICAgICB9LFxuICAgICAgdHlwZSxcbiAgICB9XG5cbiAgICBjb25zdCBjbGVhdmVJbnB1dFByb3BzID0geyAuLi5pbnB1dFByb3BzIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaW5wdXRQcm9wcy52YWx1ZSA9IGZpeENvbnRyb2xsZWRWYWx1ZSh2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRQcm9wcy5kZWZhdWx0VmFsdWUgPSBmaXhDb250cm9sbGVkVmFsdWUoZGVmYXVsdFZhbHVlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsZWF2ZSDkuI3mjqXmlLbljp/nlJ/nmoQgZGVmYXVsdFZhbHVl77yM5b+F6aG75Lyg5YWlIHZhbHVlIHByb3Ag5p2l5a6e546wIGRlZmF1bHRWYWx1ZSDnmoTkvZznlKhcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vbm9zaXIvY2xlYXZlLmpzL2Jsb2IvbWFzdGVyL2RvYy9yZWFjdGpzLWNvbXBvbmVudC11c2FnZS5tZCNob3ctdG8tcGFzcy1kZWZhdWx0LXZhbHVlXG4gICAgICovXG4gICAgY2xlYXZlSW5wdXRQcm9wcy52YWx1ZSA9IHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSB8fCBcIlwiXG5cbiAgICBjb25zdCBpbnB1dCA9XG4gICAgICAhY2xlYXZlT3B0aW9ucyB8fCBPYmplY3Qua2V5cyhjbGVhdmVPcHRpb25zKS5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgIDxpbnB1dCB7Li4uaW5wdXRQcm9wc30gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxDbGVhdmUgb3B0aW9ucz17Y2xlYXZlT3B0aW9uc30gey4uLmNsZWF2ZUlucHV0UHJvcHN9IHJlZj17Y2xlYXZlUmVmfSAvPlxuICAgICAgKVxuXG4gICAgbGV0IGxlbmd0aFxuICAgIGlmIChsaW1pdCkge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIXJpZ2h0RWxlbWVudCxcbiAgICAgICAgXCJJbnB1dFwiLFxuICAgICAgICBcIuS4jeWFgeiuuOWQjOaXtuS9v+eUqCBwcm9wIGBsaW1pdGAg5LiOIHByb3AgYHJpZ2h0RWxlbWVudGBcIlxuICAgICAgKVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGxlbmd0aCA9IGNvdW50SGFuemkgPyBnZXRGb3JtYXRTdHJMZW5nKHZhbHVlKSA6IHZhbHVlLmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB2YWx1ZSAhPT0gbnVsbCxcbiAgICAgICAgICBcIklucHV0XCIsXG4gICAgICAgICAgXCLlpoLmnpzopoHkvb/nlKggbGltaXQgUHJvcO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiXG4gICAgI