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>
226 lines (225 loc) • 38.9 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 _react = _interopRequireWildcard(require("react"));
var _enzyme = require("enzyme");
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _ = _interopRequireDefault(require(".."));
var _core = require("../core");
var _testUtils = require("react-dom/test-utils");
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
var DatePickerMounter = function (_Component) {
function DatePickerMounter() {
var _this;
_classCallCheck(this, DatePickerMounter);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _callSuper(this, DatePickerMounter, [].concat(args));
_this.state = {
component: null,
value: new Date(),
visible: true
};
return _this;
}
_inherits(DatePickerMounter, _Component);
return _createClass(DatePickerMounter, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$state = this.state,
value = _this$state.value,
visible = _this$state.visible;
return _react["default"].createElement(_["default"], _extends({
shortcuts: [{
label: "祖国生日",
value: new Date("2020-10-01")
}],
ref: function ref(component) {
if (!_this2.state.component) {
_this2.setState({
component: component
});
}
},
closeOnSelect: true,
value: value,
visible: visible,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
},
onVisibleChange: function onVisibleChange(bool) {
return _this2.setState({
visible: bool
});
}
}, this.props));
}
}]);
}(_react.Component);
describe("DatePicker", function () {
beforeAll(function () {
jest.useFakeTimers();
});
afterAll(function () {
jest.useRealTimers();
});
it("是否正确渲染", function () {
var wrapper = _reactTestRenderer["default"].create(_react["default"].createElement(_["default"], null));
expect(wrapper).toMatchSnapshot();
});
it("内部驱动", function () {
var val = new Date();
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: val,
defaultVisible: false,
closeOnSelect: true
}));
expect(wrapper.find("input").at(0).props().value).toBe((0, _core.convertDateToString)(val));
wrapper.find("input").simulate("focus");
expect(wrapper.find("Popover").at(0).props().visible).toBe(true);
wrapper.find("input").simulate("change", {
target: {
value: ""
}
});
expect(wrapper.find("input").props().value).toBe("");
wrapper.find("input").simulate("change", {
target: {
value: "2020-02-22"
}
});
expect(wrapper.find("input").props().value).toBe("2020-02-22");
(0, _testUtils.act)(function () {
wrapper.find("input").simulate("keydown", {
key: "enter",
keyCode: 13
});
jest.runAllTimers();
wrapper.update();
expect(wrapper.find("Popover").at(0).props().visible).toBe(false);
});
(0, _testUtils.act)(function () {
wrapper.find(".adui-date-day").at(14).simulate("click");
var expectedVal = (0, _core.convertDateToString)(new Date(wrapper.find(".adui-date-day").at(14).props()["aria-label"]));
jest.advanceTimersByTime(350);
wrapper.update();
expect(wrapper.find("input").at(0).props().value).toBe(expectedVal);
expect(wrapper.find("Popover").at(0).props().visible).toBe(false);
});
});
it("外部控制", function () {
var val = new Date();
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
value: new Date(),
visible: true,
closeOnSelect: true
}));
expect(wrapper.find("input").at(0).props().value).toBe((0, _core.convertDateToString)(val));
expect(wrapper.find("Popover").at(0).props().visible).toBe(true);
(0, _testUtils.act)(function () {
wrapper.find(".adui-date-day").at(14).simulate("click");
jest.advanceTimersByTime(350);
wrapper.update();
expect(wrapper.find("input").at(0).props().value).toBe((0, _core.convertDateToString)(val));
});
(0, _testUtils.act)(function () {
wrapper.find(".adui-date-day").at(15).simulate("click");
jest.advanceTimersByTime(350);
wrapper.update();
expect(wrapper.find("input").at(0).props().value).toBe((0, _core.convertDateToString)(val));
expect(wrapper.find("Popover").at(0).props().visible).toBe(true);
});
var mounter = (0, _enzyme.mount)(_react["default"].createElement(DatePickerMounter, null));
var today = (0, _core.convertDateToString)(new Date());
mounter.find("input").simulate("change", {
target: {
value: "2020-02-22"
}
});
expect((0, _core.convertDateToString)(mounter.state().value)).toBe("2020-02-22");
mounter.find("input").simulate("change", {
target: {
value: "2020-02-31"
}
});
expect((0, _core.convertDateToString)(mounter.state().value)).toBe("2020-02-22");
mounter.find("input").simulate("change", {
target: {
value: ""
}
});
expect((0, _core.convertDateToString)(mounter.state().value)).toBe("");
expect(mounter.find("Popover").at(0).props().visible).toBe(true);
(0, _testUtils.act)(function () {
mounter.find(".adui-date-day").at(15).simulate("click");
jest.runAllTimers();
mounter.update();
expect(mounter.find("Popover").at(0).props().visible).toBe(false);
});
});
it("DayPicker 操作", function () {
var today = new Date();
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(DatePickerMounter, null));
wrapper.find("button").at(0).simulate("click");
(0, _testUtils.act)(function () {
wrapper.find(".adui-date-day").at(15).simulate("click");
jest.runAllTimers();
wrapper.update();
if (today.getFullYear() > wrapper.state().value.getFullYear()) {
expect(today.getMonth() - wrapper.state().value.getMonth()).toBe(-11);
} else {
expect(today.getMonth() - wrapper.state().value.getMonth()).toBe(1);
}
});
(0, _testUtils.act)(function () {
wrapper.find(".adui-date-shortcut").at(0).simulate("click");
jest.runAllTimers();
wrapper.update();
expect((0, _core.convertDateToString)(wrapper.state().value)).toBe("2020-10-01");
});
var wrapperForCoverage0 = (0, _enzyme.mount)(_react["default"].createElement(DatePickerMounter, {
disabled: true
}));
wrapperForCoverage0.state().component.handleVisibleChange(false);
jest.runAllTimers();
});
it("DayPicker 年月切换", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(DatePickerMounter, null));
(0, _testUtils.act)(function () {
wrapper.find("select").at(0).simulate("change", {
target: {
value: "2018"
}
});
wrapper.find("select").at(1).simulate("change", {
target: {
value: "1"
}
});
jest.runAllTimers();
wrapper.update();
wrapper.find(".adui-date-day").at(14).simulate("click");
jest.runAllTimers();
wrapper.update();
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZW56eW1lIiwiX3JlYWN0VGVzdFJlbmRlcmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl8iLCJfY29yZSIsIl90ZXN0VXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9jbGFzc0NhbGxDaGVjayIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwibyIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG90eXBlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJEYXRlUGlja2VyTW91bnRlciIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0Iiwic3RhdGUiLCJjb21wb25lbnQiLCJEYXRlIiwidmlzaWJsZSIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHN0YXRlIiwiY3JlYXRlRWxlbWVudCIsInNob3J0Y3V0cyIsImxhYmVsIiwicmVmIiwic2V0U3RhdGUiLCJjbG9zZU9uU2VsZWN0Iiwib25DaGFuZ2UiLCJ2YWwiLCJvblZpc2libGVDaGFuZ2UiLCJib29sIiwicHJvcHMiLCJDb21wb25lbnQiLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImplc3QiLCJ1c2VGYWtlVGltZXJzIiwiYWZ0ZXJBbGwiLCJ1c2VSZWFsVGltZXJzIiwiaXQiLCJ3cmFwcGVyIiwiVGVzdFJlbmRlcmVyIiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwibW91bnQiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmlzaWJsZSIsImZpbmQiLCJhdCIsInRvQmUiLCJjb252ZXJ0RGF0ZVRvU3RyaW5nIiwic2ltdWxhdGUiLCJ0YXJnZXQiLCJhY3QiLCJrZXlDb2RlIiwicnVuQWxsVGltZXJzIiwidXBkYXRlIiwiZXhwZWN0ZWRWYWwiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwibW91bnRlciIsInRvZGF5IiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsIndyYXBwZXJGb3JDb3ZlcmFnZTAiLCJkaXNhYmxlZCIsImhhbmRsZVZpc2libGVDaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2RhdGUtcGlja2VyL19fdGVzdHNfXy9EYXRlUGlja2VyLnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IFRlc3RSZW5kZXJlciBmcm9tIFwicmVhY3QtdGVzdC1yZW5kZXJlclwiXG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tIFwiLi5cIlxuaW1wb3J0IHsgY29udmVydERhdGVUb1N0cmluZyB9IGZyb20gXCIuLi9jb3JlXCJcbmltcG9ydCB7IGFjdCB9IGZyb20gXCJyZWFjdC1kb20vdGVzdC11dGlsc1wiXG5cbmNsYXNzIERhdGVQaWNrZXJNb3VudGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgY29tcG9uZW50OiBudWxsLFxuICAgIHZhbHVlOiBuZXcgRGF0ZSgpLFxuICAgIHZpc2libGU6IHRydWUsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB2YWx1ZSwgdmlzaWJsZSB9ID0gdGhpcy5zdGF0ZVxuICAgIHJldHVybiAoXG4gICAgICA8RGF0ZVBpY2tlclxuICAgICAgICBzaG9ydGN1dHM9e1tcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogXCLnpZblm73nlJ/ml6VcIixcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0ZShcIjIwMjAtMTAtMDFcIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXX1cbiAgICAgICAgcmVmPXsoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBvbmVudCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xvc2VPblNlbGVjdFxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIHZpc2libGU9e3Zpc2libGV9XG4gICAgICAgIG9uQ2hhbmdlPXsodmFsKSA9PiB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHZhbCB9KX1cbiAgICAgICAgb25WaXNpYmxlQ2hhbmdlPXsoYm9vbCkgPT4gdGhpcy5zZXRTdGF0ZSh7IHZpc2libGU6IGJvb2wgfSl9XG4gICAgICAgIHsuLi50aGlzLnByb3BzfVxuICAgICAgLz5cbiAgICApXG4gIH1cbn1cblxuZGVzY3JpYmUoXCJEYXRlUGlja2VyXCIsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZUZha2VUaW1lcnMoKVxuICB9KVxuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZVJlYWxUaW1lcnMoKVxuICB9KVxuXG4gIGl0KFwi5piv5ZCm5q2j56Gu5riy5p+TXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gVGVzdFJlbmRlcmVyLmNyZWF0ZSg8RGF0ZVBpY2tlciAvPilcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdmFsID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxEYXRlUGlja2VyIGRlZmF1bHRWYWx1ZT17dmFsfSBkZWZhdWx0VmlzaWJsZT17ZmFsc2V9IGNsb3NlT25TZWxlY3QgLz5cbiAgICApXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcImlucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWUpLnRvQmUoXG4gICAgICBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbClcbiAgICApXG5cbiAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImZvY3VzXCIpXG5cbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5hdCgwKS5wcm9wcygpLnZpc2libGUpLnRvQmUodHJ1ZSlcblxuICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIlwiIH0gfSlcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9CZShcIlwiKVxuXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJpbnB1dFwiKVxuICAgICAgLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjIwMjAtMDItMjJcIiB9IH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcImlucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvQmUoXCIyMDIwLTAyLTIyXCIpXG5cbiAgICBhY3QoKCkgPT4ge1xuICAgICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJrZXlkb3duXCIsIHsga2V5OiBcImVudGVyXCIsIGtleUNvZGU6IDEzIH0pXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5hdCgwKS5wcm9wcygpLnZpc2libGUpLnRvQmUoZmFsc2UpXG4gICAgfSlcblxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1kYXRlLWRheVwiKS5hdCgxNCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgY29uc3QgZXhwZWN0ZWRWYWwgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKFxuICAgICAgICBuZXcgRGF0ZSh3cmFwcGVyLmZpbmQoXCIuYWR1aS1kYXRlLWRheVwiKS5hdCgxNCkucHJvcHMoKVtcImFyaWEtbGFiZWxcIl0pXG4gICAgICApXG4gICAgICAvLyDnrYnlvoUgMzUwbXNcbiAgICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShleHBlY3RlZFZhbClcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZShmYWxzZSlcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwi5aSW6YOo5o6n5Yi2XCIsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiDku6XkuIvpg73mmK/pqozor4HlpJbpg6jmjqfliLbml7blhoXpg6jnmoTlpLHmlYhcbiAgICAgKi9cbiAgICBjb25zdCB2YWwgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAgICAgPERhdGVQaWNrZXIgdmFsdWU9e25ldyBEYXRlKCl9IHZpc2libGUgY2xvc2VPblNlbGVjdCAvPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShcbiAgICAgIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsKVxuICAgIClcblxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZSh0cnVlKVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE0KS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICAvLyDnrYnlvoUgMzUwbXNcbiAgICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShcbiAgICAgICAgY29udmVydERhdGVUb1N0cmluZyh2YWwpXG4gICAgICApXG4gICAgfSlcblxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1kYXRlLWRheVwiKS5hdCgxNSkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgLy8g562J5b6FIDM1MG1zXG4gICAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoMzUwKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcImlucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWUpLnRvQmUoXG4gICAgICAgIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsKVxuICAgICAgKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikuYXQoMCkucHJvcHMoKS52aXNpYmxlKS50b0JlKHRydWUpXG4gICAgfSlcblxuICAgIC8qKlxuICAgICAqIOS7peS4i+aYr+mqjOivgeWklumDqOaOp+WItuaXtiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMg55qE5pyJ5pWIXG4gICAgICovXG4gICAgY29uc3QgbW91bnRlciA9IG1vdW50KDxEYXRlUGlja2VyTW91bnRlciAvPilcbiAgICBjb25zdCB0b2RheSA9IGNvbnZlcnREYXRlVG9TdHJpbmcobmV3IERhdGUoKSlcbiAgICBtb3VudGVyXG4gICAgICAuZmluZChcImlucHV0XCIpXG4gICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMjAyMC0wMi0yMlwiIH0gfSlcbiAgICBleHBlY3QoY29udmVydERhdGVUb1N0cmluZyhtb3VudGVyLnN0YXRlKCkudmFsdWUpKS50b0JlKFwiMjAyMC0wMi0yMlwiKVxuICAgIG1vdW50ZXJcbiAgICAgIC5maW5kKFwiaW5wdXRcIilcbiAgICAgIC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIyMDIwLTAyLTMxXCIgfSB9KVxuICAgIGV4cGVjdChjb252ZXJ0RGF0ZVRvU3RyaW5nKG1vdW50ZXIuc3RhdGUoKS52YWx1ZSkpLnRvQmUoXCIyMDIwLTAyLTIyXCIpXG4gICAgbW91bnRlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiXCIgfSB9KVxuICAgIGV4cGVjdChjb252ZXJ0RGF0ZVRvU3RyaW5nKG1vdW50ZXIuc3RhdGUoKS52YWx1ZSkpLnRvQmUoXCJcIilcbiAgICBleHBlY3QobW91bnRlci5maW5kKFwiUG9wb3ZlclwiKS5hdCgwKS5wcm9wcygpLnZpc2libGUpLnRvQmUodHJ1ZSlcbiAgICBhY3QoKCkgPT4ge1xuICAgICAgbW91bnRlci5maW5kKFwiLmFkdWktZGF0ZS1kYXlcIikuYXQoMTUpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIG1vdW50ZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdChtb3VudGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZShmYWxzZSlcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwiRGF5UGlja2VyIOaTjeS9nFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxEYXRlUGlja2VyTW91bnRlciAvPilcbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS1kYXRlLWRheVwiKS5hdCgxNSkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgaWYgKHRvZGF5LmdldEZ1bGxZZWFyKCkgPiB3cmFwcGVyLnN0YXRlKCkudmFsdWUuZ2V0RnVsbFllYXIoKSkge1xuICAgICAgICBleHBlY3QodG9kYXkuZ2V0TW9udGgoKSAtIHdyYXBwZXIuc3RhdGUoKS52YWx1ZS5nZXRNb250aCgpKS50b0JlKC0xMSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cGVjdCh0b2RheS5nZXRNb250aCgpIC0gd3JhcHBlci5zdGF0ZSgpLnZhbHVlLmdldE1vbnRoKCkpLnRvQmUoMSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtc2hvcnRjdXRcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KGNvbnZlcnREYXRlVG9TdHJpbmcod3JhcHBlci5zdGF0ZSgpLnZhbHVlKSkudG9CZShcIjIwMjAtMTAtMDFcIilcbiAgICB9KVxuXG4gICAgY29uc3Qgd3JhcHBlckZvckNvdmVyYWdlMCA9IG1vdW50KDxEYXRlUGlja2VyTW91bnRlciBkaXNhYmxlZCAvPilcbiAgICB3cmFwcGVyRm9yQ292ZXJhZ2UwLnN0YXRlKCkuY29tcG9uZW50LmhhbmRsZVZpc2libGVDaGFuZ2UoZmFsc2UpXG4gICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICB9KVxuXG4gIGl0KFwiRGF5UGlja2VyIOW5tOaciOWIh+aNolwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxEYXRlUGlja2VyTW91bnRlciAvPilcbiAgICBhY3QoKCkgPT4ge1xuICAgICAgd3JhcHBlclxuICAgICAgICAuZmluZChcInNlbGVjdFwiKVxuICAgICAgICAuYXQoMClcbiAgICAgICAgLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjIwMThcIiB9IH0pXG4gICAgICB3cmFwcGVyXG4gICAgICAgIC5maW5kKFwic2VsZWN0XCIpXG4gICAgICAgIC5hdCgxKVxuICAgICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMVwiIH0gfSlcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE0KS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFDLHNCQUFB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