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>
368 lines • 71.8 kB
JavaScript
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 = ["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 _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; }
import React, { forwardRef, useContext, useImperativeHandle, useRef, useState, useLayoutEffect } from "react";
import PropTypes from "prop-types";
import classNames from "classnames";
import Cleave from "cleave.js/react";
import warning from "../_util/warning";
import { ConfigContext, getComputedSize } from "../config-provider";
import Textarea from "./Textarea";
import "./style";
var prefix = "adui-input";
var Input = 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 = useState(null),
_useState2 = _slicedToArray(_useState, 2),
leftElementWidth = _useState2[0],
setLeftElementWidth = _useState2[1];
var _useState3 = useState(null),
_useState4 = _slicedToArray(_useState3, 2),
rightElementWidth = _useState4[0],
setRightElementWidth = _useState4[1];
var inputRef = useRef(null);
var wrapperElementRef = useRef(null);
var leftElementRef = useRef(null);
var rightElementRef = useRef(null);
var justifyElementRef = useRef(null);
var cleaveRef = 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 = useContext(ConfigContext),
sizeContext = _useContext.size;
var size = 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);
};
useLayoutEffect(function () {
updateElementsWidth();
syncCleave();
});
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: classNames("".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.createElement("input", inputProps) : React.createElement(Cleave, _extends({
options: cleaveOptions
}, cleaveInputProps, {
ref: cleaveRef
}));
var length;
if (limit) {
warning(!rightElement, "Input", "不允许同时使用 prop `limit` 与 prop `rightElement`");
if (value) {
length = countHanzi ? getFormatStrLeng(value) : value.length;
} else {
warning(value !== null, "Input", "如果要使用 limit Prop,必须从外部控制 value。");
length = 0;
}
}
if (contentJustify) {
warning(value !== null, "Input", "如果使用 contentJusfity Prop,必须从外部控制 value。");
}
var classSet = classNames(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.createElement("div", _extends({
ref: wrapperElementRef,
className: classSet,
style: style
}, otherProps), !!leftElement && React.createElement("div", {
ref: leftElementRef,
onClick: function onClick() {
return handleAttachedElementClick("left");
},
role: "none",
className: classNames("".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.createElement("div", {
ref: rightElementRef,
onClick: function onClick() {
return handleAttachedElementClick("right");
},
role: "none",
className: classNames("".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.createElement("div", {
className: "".concat(prefix, "-limit")
}, React.createElement("span", null, "".concat(length, "/").concat(limit))), contentJustify && React.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;
Input.displayName = "Input";
Input.propTypes = {
autoComplete: PropTypes.oneOf(["on", "off"]),
autoFocus: PropTypes.bool,
className: PropTypes.string,
cleaveOptions: PropTypes.object,
contentJustify: PropTypes.bool,
countHanzi: PropTypes.bool,
defaultValue: PropTypes.string,
disabled: PropTypes.bool,
id: PropTypes.string,
inputClassName: PropTypes.string,
inputStyle: PropTypes.object,
intent: PropTypes.oneOf(["normal", "primary", "success", "warning", "danger"]),
leftElement: PropTypes.any,
limit: PropTypes.number,
name: PropTypes.string,
onBlur: PropTypes.func,
onChange: PropTypes.func,
onFocus: PropTypes.func,
onKeyDown: PropTypes.func,
onPressEnter: PropTypes.func,
placeholder: PropTypes.string,
required: PropTypes.bool,
rightElement: PropTypes.any,
size: PropTypes.oneOf(["mini", "small", "medium", "large"]),
style: PropTypes.object,
theme: PropTypes.oneOf([null, "light"]),
type: PropTypes.string,
value: PropTypes.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
};
export default Input;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VDb250ZXh0IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlTGF5b3V0RWZmZWN0IiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsIkNsZWF2ZSIsIndhcm5pbmciLCJDb25maWdDb250ZXh0IiwiZ2V0Q29tcHV0ZWRTaXplIiwiVGV4dGFyZWEiLCJwcmVmaXgiLCJJbnB1dCIsIl9yZWYiLCJyZWYiLCJfY2xlYXZlUmVmJGN1cnJlbnQiLCJhdXRvQ29tcGxldGUiLCJhdXRvRm9jdXMiLCJjbGFzc05hbWUiLCJjbGVhdmVPcHRpb25zIiwiY29udGVudEp1c3RpZnkiLCJjb3VudEhhbnppIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJpZCIsImlucHV0Q2xhc3NOYW1lIiwiaW5wdXRTdHlsZSIsImludGVudCIsImxlZnRFbGVtZW50IiwibGltaXQiLCJuYW1lIiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwib25LZXlEb3duIiwib25QcmVzc0VudGVyIiwicGxhY2Vob2xkZXIiLCJyZXF1aXJlZCIsInJpZ2h0RWxlbWVudCIsInNpemVQcm9wIiwic2l6ZSIsInN0eWxlIiwidGhlbWUiLCJ0eXBlIiwidmFsdWUiLCJvdGhlclByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibGVmdEVsZW1lbnRXaWR0aCIsInNldExlZnRFbGVtZW50V2lkdGgiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInJpZ2h0RWxlbWVudFdpZHRoIiwic2V0UmlnaHRFbGVtZW50V2lkdGgiLCJpbnB1dFJlZiIsIndyYXBwZXJFbGVtZW50UmVmIiwibGVmdEVsZW1lbnRSZWYiLCJyaWdodEVsZW1lbnRSZWYiLCJqdXN0aWZ5RWxlbWVudFJlZiIsImNsZWF2ZVJlZiIsImlucHV0RWxlbWVudCIsImN1cnJlbnQiLCJlbGVtZW50IiwiX3VzZUNvbnRleHQiLCJzaXplQ29udGV4dCIsInN5bmNDbGVhdmUiLCJfY2xlYXZlUmVmJGN1cnJlbnQyIiwic3RhdGUiLCJwcm9wZXJ0aWVzIiwibGFzdElucHV0VmFsdWUiLCJyZXN1bHQiLCJwb3MiLCJzZWxlY3Rpb25TdGFydCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInNldFNlbGVjdGlvblJhbmdlIiwiaGFuZGxlQ2hhbmdlIiwiZSIsInZhbCIsInRhcmdldCIsInJlcGxhY2UiLCJoYW5kbGVLZXlEb3duIiwia2V5IiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2siLCJwb3NpdGlvbiIsImZvY3VzIiwic2VsZWN0IiwiZml4Q29udHJvbGxlZFZhbHVlIiwidXBkYXRlRWxlbWVudHNXaWR0aCIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjbGllbnRXaWR0aCIsIl9jbGllbnRXaWR0aCIsInNjcm9sbFdpZHRoIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInNldFRpbWVvdXQiLCJNYXRoIiwiYWJzIiwiY2VpbCIsIndpZHRoIiwiY29uY2F0Iiwic3RvcCIsImFwcGx5IiwiYXJndW1lbnRzIiwiZ2V0Rm9ybWF0U3RyTGVuZyIsInN0ciIsImxlbiIsImxlbmd0aCIsInJlYWxMZW5ndGgiLCJjaGFyQ29kZSIsImkiLCJjaGFyQ29kZUF0IiwiX2NsZWF2ZVJlZiRjdXJyZW50MyIsInJlYWxSZWYiLCJjbGVhdmUiLCJpbnB1dCIsImJsdXIiLCJpbnB1dFByb3BzIiwiX29iamVjdFNwcmVhZCIsInBhZGRpbmdMZWZ0IiwidW5kZWZpbmVkIiwicGFkZGluZ1JpZ2h0IiwiY2xlYXZlSW5wdXRQcm9wcyIsIk9iamVjdCIsImtleXMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJvcHRpb25zIiwiY2xhc3NTZXQiLCJfZGVmaW5lUHJvcGVydHkiLCJ0b1N0cmluZyIsImxlZnRUeXBlIiwicmlnaHRUeXBlIiwib25DbGljayIsInJvbGUiLCJtaW5XaWR0aCIsImRpc3BsYXlOYW1lIiwicHJvcFR5cGVzIiwib25lT2YiLCJib29sIiwic3RyaW5nIiwib2JqZWN0IiwiYW55IiwibnVtYmVyIiwiZnVuYyIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvaW5wdXQvSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBmb3J3YXJkUmVmLFxuICB1c2VDb250ZXh0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VMYXlvdXRFZmZlY3QsXG59IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDbGVhdmUgZnJvbSBcImNsZWF2ZS5qcy9yZWFjdFwiXG5pbXBvcnQgd2FybmluZyBmcm9tIFwiLi4vX3V0aWwvd2FybmluZ1wiXG5pbXBvcnQgeyBDb25maWdDb250ZXh0LCBnZXRDb21wdXRlZFNpemUgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcbmltcG9ydCBUZXh0YXJlYSBmcm9tIFwiLi9UZXh0YXJlYVwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWlucHV0XCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gYXV0b0NvbXBsZXRlXG4gICAqL1xuICBhdXRvQ29tcGxldGU/OiBcIm9uXCIgfCBcIm9mZlwiXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlrp7njrDmiYvmnLrlj7fjgIHml6XmnJ/jgIHmlbDlrZflj4roh6rlrprkuYnmoLzlvI/vvIzlj6/mn6XnnItb56S65L6LXShodHRwOi8vd3hhZC5kZXNpZ24vYWR1aS9jb21wb25lbnRzL2lucHV0KeOAglxuICAgKi9cbiAgY2xlYXZlT3B0aW9ucz86IG9iamVjdFxuICAvKipcbiAgICog5a695bqm5piv5ZCm5LiO5YaF5a655a695bqm5a+56b2QXG4gICAqL1xuICBjb250ZW50SnVzdGlmeT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpuaMieeFp+S4gOS4quaxieWtl+eulyAyIOWtl+aVsOeahOaWueW8j+mZkOWItumVv+W6plxuICAgKi9cbiAgY291bnRIYW56aT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOS9nOeUqOWIsCBpbnB1dCDlhYPntKDnmoTnsbvlkI1cbiAgICovXG4gIGlucHV0Q2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDkvZznlKjliLAgaW5wdXQg5YWD57Sg55qE5qC35byPXG4gICAqL1xuICBpbnB1dFN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuICAvKipcbiAgICog6L6T5YWl5qGG55qEIGlkXG4gICAqL1xuICBpZD86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIOexu+Wei1xuICAgKi9cbiAgaW50ZW50PzogXCJub3JtYWxcIiB8IFwicHJpbWFyeVwiIHwgXCJzdWNjZXNzXCIgfCBcIndhcm5pbmdcIiB8IFwiZGFuZ2VyXCJcbiAgLyoqXG4gICAqIOWJjee9ruWFg+e0oFxuICAgKi9cbiAgbGVmdEVsZW1lbnQ/OiBKU1guRWxlbWVudFxuICAvKipcbiAgICog6ZmQ5Yi26ZW/5bqmXG4gICAqL1xuICBsaW1pdD86IG51bWJlciB8IG51bGxcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIG5hbWVcbiAgICovXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiBibHVyIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkJsdXI/OiAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICog5YC85pS55Y+Y5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlPzogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LCB2YWx1ZT86IHN0cmluZykgPT4gdm9pZFxuICAvKipcbiAgICogZm9jdXMg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uRm9jdXM/OiAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICoga2V5ZG93biDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25LZXlEb3duPzogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIGVudGVyIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvblByZXNzRW50ZXI/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICogcGxhY2Vob2xkZXJcbiAgICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSByZXF1aXJlZFxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlkI7nva7lhYPntKBcbiAgICovXG4gIHJpZ2h0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOmZhOWKoOagt+W8j1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gdHlwZVxuICAgKi9cbiAgdHlwZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIOWAvCAtIOWklumDqOaOp+WItlxuICAgKi9cbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0UmVmIHtcbiAgY2xlYXZlOiBhbnlcbiAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnRcbiAgbGVmdEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbFxuICByaWdodEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbFxuICB1cGRhdGVFbGVtZW50c1dpZHRoOiAoKSA9PiB2b2lkXG4gIGhhbmRsZUNoYW5nZTogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUtleURvd246IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUJsdXI6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUZvY3VzOiAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICBoYW5kbGVBdHRhY2hlZEVsZW1lbnRDbGljazogKHBvc2l0aW9uOiBcImxlZnRcIiB8IFwicmlnaHRcIikgPT4gdm9pZFxuICBmb2N1czogKCkgPT4gdm9pZFxuICBibHVyOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0XG4gIGV4dGVuZHMgUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgICBJSW5wdXRQcm9wcyAmIFJlYWN0LlJlZkF0dHJpYnV0ZXM8SUlucHV0UmVmPlxuICA+IHtcbiAgVGV4dGFyZWE6IHR5cGVvZiBUZXh0YXJlYVxufVxuXG4vKipcbiAqIOi+k+WFpeahhueUqOS6juaWh+acrOi+k+WFpeeahOWMuuWfn++8jOWPr+e7k+WQiOWbvuagh+OAgeaMiemSruOAgemAieaLqeWZqOetiee7hOS7tuS9v+eUqOOAglxuICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBJbnB1dDogSUlucHV0ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGF1dG9Db21wbGV0ZSxcbiAgICAgIGF1dG9Gb2N1cyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsZWF2ZU9wdGlvbnMsXG4gICAgICBjb250ZW50SnVzdGlmeSxcbiAgICAgIGNvdW50SGFuemksXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGlkLFxuICAgICAgaW5wdXRDbGFzc05hbWUsXG4gICAgICBpbnB1dFN0eWxlLFxuICAgICAgaW50ZW50LFxuICAgICAgbGVmdEVsZW1lbnQsXG4gICAgICBsaW1pdCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblByZXNzRW50ZXIsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgcmlnaHRFbGVtZW50LFxuICAgICAgc2l6ZTogc2l6ZVByb3AsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoZW1lLFxuICAgICAgdHlwZSxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH06IElJbnB1dFByb3BzLFxuICAgIHJlZlxuICApID0+IHtcbiAgICBjb25zdCBbbGVmdEVsZW1lbnRXaWR0aCwgc2V0TGVmdEVsZW1lbnRXaWR0aF0gPSB1c2VTdGF0ZTxudWxsIHwgbnVtYmVyPihcbiAgICAgIG51bGxcbiAgICApXG4gICAgY29uc3QgW3JpZ2h0RWxlbWVudFdpZHRoLCBzZXRSaWdodEVsZW1lbnRXaWR0aF0gPSB1c2VTdGF0ZTxudWxsIHwgbnVtYmVyPihcbiAgICAgIG51bGxcbiAgICApXG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuICAgIGNvbnN0IHdyYXBwZXJFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IGxlZnRFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IHJpZ2h0RWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICBjb25zdCBqdXN0aWZ5RWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICBjb25zdCBjbGVhdmVSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gaW5wdXRSZWY/LmN1cnJlbnQgfHwgY2xlYXZlUmVmPy5jdXJyZW50Py5lbGVtZW50XG5cbiAgICBjb25zdCB7IHNpemU6IHNpemVDb250ZXh0IH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG5cbiAgICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dClcblxuICAgIGNvbnN0IHN5bmNDbGVhdmUgPSAoKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIOS/ruWkjSBjbGVhdmUuMS40LjcgYnVnOlxuICAgICAgICovXG4gICAgICBpZiAoY2xlYXZlUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHsgZWxlbWVudCwgc3RhdGUsIHByb3BlcnRpZXMgfSA9IGNsZWF2ZVJlZi5jdXJyZW50XG4gICAgICAgIGxldCB7IGxhc3RJbnB1dFZhbHVlIH0gPSBjbGVhdmVSZWYuY3VycmVudFxuICAgICAgICBpZiAobGFzdElucHV0VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgbGFzdElucHV0VmFsdWUgPSB2YWx1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICBzdGF0ZS52YWx1ZSA9IHZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BlcnRpZXMucmVzdWx0ICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHByb3BlcnRpZXMucmVzdWx0ID0gdmFsdWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LnZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSkge1xuICAgICAgICAgIC8vIOS/neWtmOWFieagh+S9jee9ruetieWQjue7reaBouWkjVxuICAgICAgICAgIGNvbnN0IHBvcyA9IGVsZW1lbnQuc2VsZWN0aW9uU3RhcnRcblxuICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB2YWx1ZVxuXG4gICAgICAgICAgLy8g566A5Y2V562J5b6F5LiA5LiqbWljcm90YXNr77yM5ZCm5YiZ5peg5rOV6K6+572u5YWJ5qCH5L2N572uXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2NvcmUtanMvaW50ZXJuYWxzL21pY3JvdGFzay5qcyNMTDQ2QzYxLUw0NkM2MVxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcylcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWRpc2FibGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXgsIG1heC1sZW4gKi9cbiAgICAgICAgLy8gMDggQmFja3NwYWNlLCAwOSBUYWIsIDBBIOaNouihjOespiwgMEIg5Z6C55u05Yi26KGo56ymLCAwQyDmjaLpobUsIDBEIOWbnui9piwgQTAg5LiN6Ze05pat56m65qC8LFxuICAgICAgICAvLyAyMDI4LzIwMjkg5YiG6ZqU56ymLCBGRWZmIOWtl+iKgumhuuW6j+agh+iusOOAglxuICAgICAgICBjb25zdCB2YWwgPSBlLnRhcmdldC52YWx1ZS5yZXBsYWNlKFxuICAgICAgICAgIC9cXHUwMDA4fFxcdTAwMDl8XFx1MDAwQXxcXHUwMDBCfFxcdTAwMEN8XFx1MDAwRHxcXHUwMEEwfFxcdTIwMjh8XFx1MjAyOXxcXHVGRUZGL2csXG4gICAgICAgICAgXCJcIlxuICAgICAgICApXG4gICAgICAgIG9uQ2hhbmdlKGUsIHZhbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiICYmIG9uUHJlc3NFbnRlcikge1xuICAgICAgICBvblByZXNzRW50ZXIoZSlcbiAgICAgIH1cbiAgICAgIGlmIChvbktleURvd24pIHtcbiAgICAgICAgb25LZXlEb3duKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzeW5jQ2xlYXZlKClcbiAgICAgIGlmIChvbkJsdXIpIHtcbiAgICAgICAgb25CbHVyKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKG9uRm9jdXMpIHtcbiAgICAgICAgb25Gb2N1cyhlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrID0gKHBvc2l0aW9uOiBcImxlZnRcIiB8IFwicmlnaHRcIikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJsZWZ0XCIgJiZcbiAgICAgICAgbGVmdEVsZW1lbnQgJiZcbiAgICAgICAgbGVmdEVsZW1lbnQudHlwZSAmJlxuICAgICAgICBsZWZ0RWxlbWVudC50eXBlLm5hbWUgPT09IFwiSWNvblwiXG4gICAgICApIHtcbiAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKClcbiAgICAgICAgaW5wdXRFbGVtZW50LnNlbGVjdCgpXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHBvc2l0aW9uID09PSBcInJpZ2h0XCIgJiZcbiAgICAgICAgcmlnaHRFbGVtZW50ICYmXG4gICAgICAgIHJpZ2h0RWxlbWVudC50eXBlICYmXG4gICAgICAgIHJpZ2h0RWxlbWVudC50eXBlLm5hbWUgPT09IFwiSWNvblwiXG4gICAgICApIHtcbiAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKClcbiAgICAgICAgaW5wdXRFbGVtZW50LnNlbGVjdCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZml4Q29udHJvbGxlZFZhbHVlID0gKHZhbD86IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZUVsZW1lbnRzV2lkdGggPSBhc3luYyAoKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIOi/meS4quaWueazleS8muWcqCBkaWRVcGRhdGUg5ZKMIGRpZE1vdW50IOaXtuWOuyBzZXRTdGF0ZVxuICAgICAgICog5LiA5a6a6KaB6YG/5YWN6YCg5oiQ5b6q546v44CCXG4gICAgICAgKi9cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKVxuICAgICAgaWYgKGxlZnRFbGVtZW50UmVmPy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IGxlZnRFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgLy8g6Ziy5q2i5b6q546vXG4gICAgICAgIGlmIChNYXRoLmFicyhjbGllbnRXaWR0aCAtIChsZWZ0RWxlbWVudFdpZHRoIHx8IDApKSA+IDIpIHtcbiAgICAgICAgICBzZXRMZWZ0RWxlbWVudFdpZHRoKGNsaWVudFdpZHRoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxlZnRFbGVtZW50V2lkdGgpIHtcbiAgICAgICAgc2V0TGVmdEVsZW1lbnRXaWR0aChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAocmlnaHRFbGVtZW50UmVmPy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IHJpZ2h0RWxlbWVudFJlZi5jdXJyZW50XG5cbiAgICAgICAgLy8g6Ziy5q2i5b6q546vXG4gICAgICAgIGlmIChNYXRoLmFicyhjbGllbnRXaWR0aCAtIChyaWdodEVsZW1lbnRXaWR0aCB8fCAwKSkgPiAyKSB7XG4gICAgICAgICAgc2V0UmlnaHRFbGVtZW50V2lkdGgoY2xpZW50V2lkdGgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmlnaHRFbGVtZW50V2lkdGgpIHtcbiAgICAgICAgc2V0UmlnaHRFbGVtZW50V2lkdGgobnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGp1c3RpZnlFbGVtZW50UmVmPy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsV2lkdGggfSA9IGp1c3RpZnlFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHdyYXBwZXJFbGVtZW50UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICBNYXRoLmNlaWwoc2Nyb2xsV2lkdGgpICE9PSB3cmFwcGVyRWxlbWVudFJlZi5jdXJyZW50LmNsaWVudFdpZHRoXG4gICAgICAgICkge1xuICAgICAgICAgIHdyYXBwZXJFbGVtZW50UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSBgJHtNYXRoLmNlaWwoc2Nyb2xsV2lkdGgpfXB4YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Rm9ybWF0U3RyTGVuZyA9IChzdHI6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbGVuID0gc3RyLmxlbmd0aFxuICAgICAgbGV0IHJlYWxMZW5ndGggPSAwXG4gICAgICBsZXQgY2hhckNvZGUgPSAtMVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICBjaGFyQ29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgICAgIGlmIChjaGFyQ29kZSA+PSAwICYmIGNoYXJDb2RlIDw9IDEyOCkge1xuICAgICAgICAgIHJlYWxMZW5ndGggKz0gMC41XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVhbExlbmd0aCArPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLmNlaWwocmVhbExlbmd0aClcbiAgICB9XG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdXBkYXRlRWxlbWVudHNXaWR0aCgpXG4gICAgICBzeW5jQ2xlYXZlKClcbiAgICB9KVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlYWxSZWYgPSBpbnB1dFJlZj8uY3VycmVudCB8fCBjbGVhdmVSZWY/LmN1cnJlbnQ/LmVsZW1lbnRcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNsZWF2ZTogY2xlYXZlUmVmPy5jdXJyZW50LFxuICAgICAgICBpbnB1dDogcmVhbFJlZixcbiAgICAgICAgbGVmdEVsZW1lbnQ6IGxlZnRFbGVtZW50UmVmPy5jdXJyZW50LFxuICAgICAgICByaWdodEVsZW1lbnQ6IHJpZ2h0RWxlbWVudFJlZj8uY3VycmVudCxcbiAgICAgICAgdXBkYXRlRWxlbWVudHNXaWR0aCxcbiAgICAgICAgaGFuZGxlQ2hhbmdlLFxuICAgICAgICBoYW5kbGVLZXlEb3duLFxuICAgICAgICBoYW5kbGVCbHVyLFxuICAgICAgICBoYW5kbGVGb2N1cyxcbiAgICAgICAgaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2ssXG4gICAgICAgIGZvY3VzOiAoKSA9PiByZWFsUmVmLmZvY3VzKCksXG4gICAgICAgIGJsdXI6ICgpID0+IHJlYWxSZWYuYmx1cigpLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBpbnB1dFByb3BzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgYXV0b0NvbXBsZXRlLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGAke3ByZWZpeH0tYmFzZWAsIGlucHV0Q2xhc3NOYW1lKSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgb25CbHVyOiBoYW5kbGVCbHVyLFxuICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByZWY6IGlucHV0UmVmLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBzdHlsZToge1xuICAgICAgICBwYWRkaW5nTGVmdDogbGVmdEVsZW1lbnRXaWR0aCA/IGAke2xlZnRFbGVtZW50V2lkdGh9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IHJpZ2h0RWxlbWVudFdpZHRoID8gYCR7cmlnaHRFbGVtZW50V2lkdGh9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgICAuLi5pbnB1dFN0eWxlLFxuICAgICAgfSxcbiAgICAgIHR5cGUsXG4gICAgfVxuXG4gICAgY29uc3QgY2xlYXZlSW5wdXRQcm9wcyA9IHsgLi4uaW5wdXRQcm9wcyB9XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlucHV0UHJvcHMudmFsdWUgPSBmaXhDb250cm9sbGVkVmFsdWUodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0UHJvcHMuZGVmYXVsdFZhbHVlID0gZml4Q29udHJvbGxlZFZhbHVlKGRlZmF1bHRWYWx1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbGVhdmUg5LiN5o6l5pS25Y6f55Sf55qEIGRlZmF1bHRWYWx1Ze+8jOW/hemhu+S8oOWFpSB2YWx1ZSBwcm9wIOadpeWunueOsCBkZWZhdWx0VmFsdWUg55qE5L2c55SoXG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL25vc2lyL2NsZWF2ZS5qcy9ibG9iL21hc3Rlci9kb2MvcmVhY3Rqcy1jb21wb25lbnQtdXNhZ2UubWQjaG93LXRvLXBhc3MtZGVmYXVsdC12YWx1ZVxuICAgICAqL1xuICAgIGNsZWF2ZUlucHV0UHJvcHMudmFsdWUgPSB2YWx1ZSB8fCBkZWZhdWx0VmFsdWUgfHwgXCJcIlxuXG4gICAgY29uc3QgaW5wdXQgPVxuICAgICAgIWNsZWF2ZU9wdGlvbnMgfHwgT2JqZWN0LmtleXMoY2xlYXZlT3B0aW9ucykubGVuZ3RoID09PSAwID8gKFxuICAgICAgICA8aW5wdXQgey4uLmlucHV0UHJvcHN9IC8+XG4gICAgICApIDogKFxuICAgICAgICA8Q2xlYXZlIG9wdGlvbnM9e2NsZWF2ZU9wdGlvbnN9IHsuLi5jbGVhdmVJbnB1dFByb3BzfSByZWY9e2NsZWF2ZVJlZn0gLz5cbiAgICAgIClcblxuICAgIGxldCBsZW5ndGhcbiAgICBpZiAobGltaXQpIHtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFyaWdodEVsZW1lbnQsXG4gICAgICAgIFwiSW5wdXRcIixcbiAgICAgICAgXCLkuI3lhYHorrjlkIzml7bkvb/nlKggcHJvcCBgbGltaXRgIOS4jiBwcm9wIGByaWdodEVsZW1lbnRgXCJcbiAgICAgIClcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsZW5ndGggPSBjb3VudEhhbnppID8gZ2V0Rm9ybWF0U3RyTGVuZyh2YWx1ZSkgOiB2YWx1ZS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdmFsdWUgIT09IG51bGwsXG4gICAgICAgICAgXCJJbnB1dFwiLFxuICAgICAgICAgIFwi5aaC5p6c6KaB5L2/55SoIGxpbWl0IFByb3DvvIzlv4Xpobvku47lpJbpg6jmjqfliLYgdmFsdWXjgIJcIlxuICAgICAgICApXG4gICAgICAgIGxlbmd0aCA9IDBcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbnRlbnRKdXN0aWZ5KSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICB2YWx1ZSAhPT0gbnVsbCxcbiAgICAgICAgXCJJbnB1dFwiLFxuICAgICAgICBcIuWmguaenOS9v+eUqCBjb250ZW50SnVzZml0eSBQcm9w77yM5b+F6aG75LuO5aSW6YOo5o6n5Yi2IHZhbHVl44CCXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJgLFxuICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tJHt0aGVtZX1gXTogdGhlbWUsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICBbYCR7cHJlZml4fS1saW1pdGVkYF06IGxpbWl0LFxuICAgICAgICBbYCR7cHJlZml4fS1saW1pdGVkX2RpZ2l0LW92ZXItMmBdOlxuICAgICAgICAgIGxpbWl0ICYmIGxpbWl0LnRvU3RyaW5nKCkubGVuZ3RoID4gMixcbiAgICAgICAgW2Ake3ByZWZpeH0tbm9ybWFsYF06IGludGVudCA9PT0gXCJub3JtYWxcIixcbiAgICAgICAgW2Ake3ByZWZpeH0tcHJpbWFyeWBdOiBpbnRlbnQgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICBbYCR7cHJlZml4fS1zdWNjZXNzYF06IGludGVudCA9PT0gXCJzdWNjZXNzXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LXdhcm5pbmdgXTogaW50ZW50ID09PSBcIndhcm5pbmdcIixcbiAgICAgICAgW2Ake3ByZWZpeH0tZGFuZ2VyYF06XG4gICAgICAgICAgaW50ZW50ID09PSBcImRhbmdlclwiIHx8IChsZW5ndGggJiYgbGltaXQgJiYgbGVuZ3RoID4gbGltaXQpLFxuICAgICAgfVxuICAgIClcblxuICAgIGNvbnN0IGxlZnRUeXBlID1cbiAgICAgIGxlZnRFbGVtZW50ICYmIGxlZnRFbGVtZW50LnR5cGUgPyBsZWZ0RWxlbWVudC50eXBlLnR5cGUgOiBcIlwiXG4gICAgY29uc3QgcmlnaHRUeXBlID1cbiAgICAgIHJpZ2h0RWxlbWVudCAmJiByaWdodEVsZW1lbnQudHlwZSA/IHJpZ2h0RWxlbWVudC50eXBlLnR5cGUgOiBcIlwiXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3dyYXBwZXJFbGVtZW50UmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzU2V0fVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgPlxuICAgICAgICB7ISFsZWZ0RWxlbWVudCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXtsZWZ0RWxlbWVudFJlZn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaGVkRWxlbWVudENsaWNrKFwibGVmdFwiKX1cbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhgJHtwcmVmaXh9LWxlZnRgLCB7XG4gICAgICAgICAgICAgIFtgJHtwcmVmaXh9LWxlZnRfYnV0dG9uYF06IGxlZnRUeXBlID09PSBcIkJ1dHRvblwiLFxuICAgICAgICAgICAgICBbYCR7cHJlZml4fS1sZWZ0X2ljb25gXTogbGVmdFR5cGUgPT09IFwiSWNvblwiLFxuICAgICAgICAgICAgICBbYCR7cHJlZml4fS1sZWZ0X3NlbGVjdGBdOiBsZWZ0VHlwZSA9PT0gXCJTZWxlY3RcIixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsZWZ0RWxlbWVudH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2lucHV0fVxuICAgICAgICB7ISFyaWdodEVsZW1lbnQgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17cmlnaHRFbGVtZW50UmVmfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNoZWRFbGVtZW50Q2xpY2soXCJyaWdodFwiKX1cbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhgJHtwcmVmaXh9LXJpZ2h0YCwge1xuICAgICAgICAgICAgICBbYCR7cHJlZml4fS1yaWdodF9idXR0b25gXTogcmlnaHRUeXBlID09PSBcIkJ1dHRvblwiLFxuICAgICAgICAgICAgICBbYCR7cHJlZml4fS1yaWdodF9pY29uYF06IHJpZ2h0VHlwZSA9PT0gXCJJY29uXCIsXG4gICAgICAgICAgICAgIFtgJHtwcmVmaXh9LXJpZ2h0X3NlbGVjdGBdOiByaWdodFR5cGUgPT09IFwiU2VsZWN0XCIsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmlnaHRFbGVtZW50fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7bGltaXQgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWxpbWl0YH0+XG4gICAgICAgICAgICA8c3Bhbj57YCR7bGVuZ3RofS8ke2xpbWl0fWB9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7Y29udGVudEp1c3RpZnkgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1qdXN0aWZ5YH1cbiAgICAgICAgICAgIHJlZj17anVzdGlmeUVsZW1lbnRSZWZ9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogbGVmdEVsZW1lbnRXaWR0aFxuICAgICAgICAgICAgICAgID8gYCR7bGVmdEVsZW1lbnRXaWR0aH1weGBcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiByaWdodEVsZW1lbnRXaWR0aFxuICAgICAgICAgICAgICAgID8gYCR7cmlnaHRFbGVtZW50V2lkdGh9cHhgXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIG1pbldpZHRoOiBzdHlsZT8ubWluV2lkdGgsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtmaXhDb250cm9sbGVkVmFsdWUodmFsdWUpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9ka