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>
214 lines (181 loc) • 23.9 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var React = _interopRequireWildcard(require("react"));
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _testUtils = require("react-dom/test-utils");
var _enzyme = require("enzyme");
var _ = _interopRequireDefault(require(".."));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var TimePickerTest = function (_React$Component) {
_inherits(TimePickerTest, _React$Component);
var _super = _createSuper(TimePickerTest);
function TimePickerTest() {
var _this;
_classCallCheck(this, TimePickerTest);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.state = {
value: "09:00"
};
return _this;
}
_createClass(TimePickerTest, [{
key: "render",
value: function render() {
var _this2 = this;
var value = this.state.value;
return React.createElement("div", null, React.createElement(_["default"], {
closeOnSelect: true,
value: value,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
},
minTime: "08:40",
maxTime: "09:20",
ref: function ref(node) {
if (node) {
_this2.picker = node;
}
return null;
}
}));
}
}]);
return TimePickerTest;
}(React.Component);
function timeout(ms) {
return function (done) {
setTimeout(done, ms);
};
}
describe("TimePicker", function () {
beforeAll(function () {
jest.useFakeTimers();
});
afterAll(function () {
jest.useRealTimers();
});
it("是否正确渲染", function () {
var wrapper = _reactTestRenderer["default"].create(React.createElement(_["default"], null));
expect(wrapper).toMatchSnapshot();
});
it("各种情况快照核对", function () {
var wrapper0 = _reactTestRenderer["default"].create(React.createElement(_["default"], {
size: "mini",
theme: "light",
onlyHour: true,
disabled: true
}));
expect(wrapper0).toMatchSnapshot();
});
it("输入事件", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], null));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
input.simulate("change", {
target: {
value: " "
}
});
input.simulate("change", {
target: {
value: "16:07"
}
});
expect(wrapper.find("Input").props().value).toEqual("16:07");
input.simulate("keydown", {
keyCode: 13
});
expect(wrapper.find("Popover").props().visible).toEqual(false);
});
it("点击事件", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(TimePickerTest, null));
expect(wrapper.find("Popover").props().visible).toEqual(false);
wrapper.find("input").simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
(0, _testUtils.act)(function () {
wrapper.find(".adui-time-item").at(0).simulate("click");
jest.advanceTimersByTime(50);
wrapper.update();
expect(wrapper.find("Input").props().value).toEqual("08:40");
wrapper.find(".adui-time-item").at(42).simulate("click");
wrapper.update();
jest.advanceTimersByTime(50);
expect(wrapper.find("Input").props().value).toEqual("08:40");
wrapper.find("input").simulate("change", {
target: {
value: "07:40"
}
});
wrapper.find("input").simulate("change", {
target: {
value: "08:4"
}
});
wrapper.update();
expect(wrapper.find("Input").props().value).toEqual("08:40");
});
});
it("内部驱动", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
defaultValue: "09:20"
}));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
wrapper.find(".adui-time-item").at(0).simulate("click");
expect(wrapper.find("Input").props().value).toEqual("00:20");
});
it("外部控制", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
value: "09:00",
onlyHour: true
}));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
wrapper.find(".adui-time-item").at(0).simulate("click");
expect(wrapper.find("Input").props().value).toEqual("09:00");
});
it("测试禁用", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
disabled: true
}));
var input = wrapper.find("input");
input.simulate("click");
expect(wrapper.find("Popover").props().visible).toEqual(false);
});
it("测试最大时间和最小时间", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
minTime: "09:00",
maxTime: "09:20",
defaultValue: "09:10"
}));
var input = wrapper.find("input");
input.simulate("change", {
target: {
value: "09:30"
}
});
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lUGlja2VyVGVzdCIsInN0YXRlIiwidmFsdWUiLCJ2YWwiLCJzZXRTdGF0ZSIsIm5vZGUiLCJwaWNrZXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsInRpbWVvdXQiLCJtcyIsImRvbmUiLCJzZXRUaW1lb3V0IiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJqZXN0IiwidXNlRmFrZVRpbWVycyIsImFmdGVyQWxsIiwidXNlUmVhbFRpbWVycyIsIml0Iiwid3JhcHBlciIsIlRlc3RSZW5kZXJlciIsImNyZWF0ZSIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsIndyYXBwZXIwIiwibW91bnQiLCJpbnB1dCIsImZpbmQiLCJzaW11bGF0ZSIsInByb3BzIiwidmlzaWJsZSIsInRvRXF1YWwiLCJ0YXJnZXQiLCJrZXlDb2RlIiwiYWN0IiwiYXQiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwidXBkYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy90aW1lLXBpY2tlci9fX3Rlc3RzX18vaW5kZXgudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCB7IGFjdCB9IGZyb20gXCJyZWFjdC1kb20vdGVzdC11dGlsc1wiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IGFzeW5jIGZyb20gXCJhc3luY1wiXG5pbXBvcnQgVGltZVBpY2tlciBmcm9tIFwiLi5cIlxuXG5jbGFzcyBUaW1lUGlja2VyVGVzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIHZhbHVlOiBcIjA5OjAwXCIsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8VGltZVBpY2tlclxuICAgICAgICAgIGNsb3NlT25TZWxlY3RcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICAgIG1pblRpbWU9XCIwODo0MFwiXG4gICAgICAgICAgbWF4VGltZT1cIjA5OjIwXCJcbiAgICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICB0aGlzLnBpY2tlciA9IG5vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiB0aW1lb3V0KG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIChkb25lOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dChkb25lLCBtcylcbiAgfVxufVxuXG5kZXNjcmliZShcIlRpbWVQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG4gIH0pXG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlUmVhbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKDxUaW1lUGlja2VyIC8+KVxuICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIGl0KFwi5ZCE56eN5oOF5Ya15b+r54Wn5qC45a+5XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyMCA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGltZVBpY2tlciBzaXplPVwibWluaVwiIHRoZW1lPVwibGlnaHRcIiBvbmx5SG91ciBkaXNhYmxlZCAvPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcjApLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgaXQoXCLovpPlhaXkuovku7ZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8VGltZVBpY2tlciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIiBcIiB9IH0pXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMTY6MDdcIiB9IH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIxNjowN1wiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwia2V5ZG93blwiLCB7IGtleUNvZGU6IDEzIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwi54K55Ye75LqL5Lu2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXJUZXN0IC8+KVxuXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuXG4gICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG5cbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCg0Mikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDUwKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuXG4gICAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwNzo0MFwiIH0gfSlcbiAgICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA4OjRcIiB9IH0pXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgfSlcblxuICAgIC8vIGFjdCgoKSA9PiB7XG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGltZS1pdGVtXCIpXG4gICAgLy8gICAgIC5hdCgxKVxuICAgIC8vICAgICAuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vICAgd3JhcHBlci51cGRhdGUoKVxuICAgIC8vICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyAgIGRvbmUoKVxuICAgIC8vIH0pXG5cbiAgICAvLyBhY3QoKCkgPT4ge1xuICAgIC8vICAgd3JhcHBlclxuICAgIC8vICAgICAuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKVxuICAgIC8vICAgICAuYXQoMSlcbiAgICAvLyAgICAgLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyB9KVxuXG4gICAgLy8gYWN0KCgpID0+IHtcbiAgICAvLyAgIHdyYXBwZXJcbiAgICAvLyAgICAgLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIilcbiAgICAvLyAgICAgLmF0KDApXG4gICAgLy8gICAgIC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgLy8gICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgLy8gfSlcbiAgfSlcblxuICBpdChcIuWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIGRlZmF1bHRWYWx1ZT1cIjA5OjIwXCIgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDA6MjBcIilcbiAgfSlcblxuICBpdChcIuWklumDqOaOp+WItlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIHZhbHVlPVwiMDk6MDBcIiBvbmx5SG91ciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwOTowMFwiKVxuICB9KVxuXG4gIGl0KFwi5rWL6K+V56aB55SoXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXIgZGlzYWJsZWQgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCLmtYvor5XmnIDlpKfml7bpl7TlkozmnIDlsI/ml7bpl7RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxUaW1lUGlja2VyIG1pblRpbWU9XCIwOTowMFwiIG1heFRpbWU9XCIwOToyMFwiIGRlZmF1bHRWYWx1ZT1cIjA5OjEwXCIgLz5cbiAgICApXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA5OjMwXCIgfSB9KVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVNQSxjOzs7Ozs7Ozs7Ozs7Ozs7VUFDSkMsSyxHQUFRO01BQ05DLEtBQUssRUFBRTtJQURELEM7Ozs7OztXQUlSLGtCQUFTO01BQUE7O01BQ1AsSUFBUUEsS0FBUixHQUFrQixLQUFLRCxLQUF2QixDQUFRQyxLQUFSO01BQ0EsT0FDRSxpQ0FDRSxvQkFBQyxZQUFEO1FBQ0UsYUFBYSxNQURmO1FBRUUsS0FBSyxFQUFFQSxLQUZUO1FBR0UsUUFBUSxFQUFFLGtCQUFDQyxHQUFEO1VBQUEsT0FBUyxNQUFJLENBQUNDLFFBQUwsQ0FBYztZQUFFRixLQUFLLEVBQUVDO1VBQVQsQ0FBZCxDQUFUO1FBQUEsQ0FIWjtRQUlFLE9BQU8sRUFBQyxPQUpWO1FBS0UsT0FBTyxFQUFDLE9BTFY7UUFNRSxHQUFHLEVBQUUsYUFBQ0UsSUFBRCxFQUFVO1VBQ2IsSUFBSUEsSUFBSixFQUFVO1lBQ1IsTUFBSSxDQUFDQyxNQUFMLEdBQWNELElBQWQ7VUFDRDs7VUFDRCxPQUFPLElBQVA7UUFDRDtNQVhILEVBREYsQ0FERjtJQWlCRDs7OztFQXhCMEJFLEtBQUssQ0FBQ0MsUzs7QUEyQm5DLFNBQVNDLE9BQVQsQ0FBaUJDLEVBQWpCLEVBQTZCO0VBQzNCLE9BQU8sVUFBQ0MsSUFBRCxFQUFzQjtJQUMzQkMsVUFBVSxDQUFDRCxJQUFELEVBQU9ELEVBQVAsQ0FBVjtFQUNELENBRkQ7QUFHRDs7QUFFREcsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFNO0VBQzNCQyxTQUFTLENBQUMsWUFBTTtJQUNkQyxJQUFJLENBQUNDLGFBQUw7RUFDRCxDQUZRLENBQVQ7RUFJQUMsUUFBUSxDQUFDLFlBQU07SUFDYkYsSUFBSSxDQUFDRyxhQUFMO0VBQ0QsQ0FGTyxDQUFSO0VBSUFDLEVBQUUsQ0FBQyxRQUFELEVBQVcsWUFBTTtJQUNqQixJQUFNQyxPQUFPLEdBQUdDLDZCQUFBLENBQWFDLE1BQWIsQ0FBb0Isb0JBQUMsWUFBRCxPQUFwQixDQUFoQjs7SUFDQUMsTUFBTSxDQUFDSCxPQUFELENBQU4sQ0FBZ0JJLGVBQWhCO0VBQ0QsQ0FIQyxDQUFGO0VBS0FMLEVBQUUsQ0FBQyxVQUFELEVBQWEsWUFBTTtJQUNuQixJQUFNTSxRQUFRLEdBQUdKLDZCQUFBLENBQWFDLE1BQWIsQ0FDZixvQkFBQyxZQUFEO01BQVksSUFBSSxFQUFDLE1BQWpCO01BQXdCLEtBQUssRUFBQyxPQUE5QjtNQUFzQyxRQUFRLE1BQTlDO01BQStDLFFBQVE7SUFBdkQsRUFEZSxDQUFqQjs7SUFHQUMsTUFBTSxDQUFDRSxRQUFELENBQU4sQ0FBaUJELGVBQWpCO0VBQ0QsQ0FMQyxDQUFGO0VBT0FMLEVBQUUsQ0FBQyxNQUFELEVBQVMsWUFBTTtJQUNmLElBQU1DLE9BQU8sR0FBRyxJQUFBTSxhQUFBLEVBQU0sb0JBQUMsWUFBRCxPQUFOLENBQWhCO0lBQ0EsSUFBTUMsS0FBSyxHQUFHUCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLENBQWQ7SUFDQUQsS0FBSyxDQUFDRSxRQUFOLENBQWUsT0FBZjtJQUNBTixNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxJQUF4RDtJQUNBTCxLQUFLLENBQUNFLFFBQU4sQ0FBZSxRQUFmLEVBQXlCO01BQUVJLE1BQU0sRUFBRTtRQUFFL0IsS0FBSyxFQUFFO01BQVQ7SUFBVixDQUF6QjtJQUNBeUIsS0FBSyxDQUFDRSxRQUFOLENBQWUsUUFBZixFQUF5QjtNQUFFSSxNQUFNLEVBQUU7UUFBRS9CLEtBQUssRUFBRTtNQUFUO0lBQVYsQ0FBekI7SUFDQXFCLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDUSxJQUFSLENBQWEsT0FBYixFQUFzQkUsS0FBdEIsR0FBOEI1QixLQUEvQixDQUFOLENBQTRDOEIsT0FBNUMsQ0FBb0QsT0FBcEQ7SUFDQUwsS0FBSyxDQUFDRSxRQUFOLENBQWUsU0FBZixFQUEwQjtNQUFFSyxPQUFPLEVBQUU7SUFBWCxDQUExQjtJQUNBWCxNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxLQUF4RDtFQUNELENBVkMsQ0FBRjtFQVlBYixFQUFFLENBQUMsTUFBRCxFQUFTLFlBQU07SUFDZixJQUFNQyxPQUFPLEdBQUcsSUFBQU0sYUFBQSxFQUFNLG9CQUFDLGNBQUQsT0FBTixDQUFoQjtJQUVBSCxNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxLQUF4RDtJQUVBWixPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxRQUF0QixDQUErQixPQUEvQjtJQUNBTixNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxJQUF4RDtJQUVBLElBQUFHLGNBQUEsRUFBSSxZQUFNO01BQ1JmLE9BQU8sQ0FBQ1EsSUFBUixDQUFhLGlCQUFiLEVBQWdDUSxFQUFoQyxDQUFtQyxDQUFuQyxFQUFzQ1AsUUFBdEMsQ0FBK0MsT0FBL0M7TUFDQWQsSUFBSSxDQUFDc0IsbUJBQUwsQ0FBeUIsRUFBekI7TUFDQWpCLE9BQU8sQ0FBQ2tCLE1BQVI7TUFDQWYsTUFBTSxDQUFDSCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLEVBQXNCRSxLQUF0QixHQUE4QjVCLEtBQS9CLENBQU4sQ0FBNEM4QixPQUE1QyxDQUFvRCxPQUFwRDtNQUVBWixPQUFPLENBQUNRLElBQVIsQ0FBYSxpQkFBYixFQUFnQ1EsRUFBaEMsQ0FBbUMsRUFBbkMsRUFBdUNQLFFBQXZDLENBQWdELE9BQWhEO01BQ0FULE9BQU8sQ0FBQ2tCLE1BQVI7TUFDQXZCLElBQUksQ0FBQ3NCLG1CQUFMLENBQXlCLEVBQXpCO01BQ0FkLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDUSxJQUFSLENBQWEsT0FBYixFQUFzQkUsS0FBdEIsR0FBOEI1QixLQUEvQixDQUFOLENBQTRDOEIsT0FBNUMsQ0FBb0QsT0FBcEQ7TUFFQVosT0FBTyxDQUFDUSxJQUFSLENBQWEsT0FBYixFQUFzQkMsUUFBdEIsQ0FBK0IsUUFBL0IsRUFBeUM7UUFBRUksTUFBTSxFQUFFO1VBQUUvQixLQUFLLEVBQUU7UUFBVDtNQUFWLENBQXpDO01BQ0FrQixPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxRQUF0QixDQUErQixRQUEvQixFQUF5QztRQUFFSSxNQUFNLEVBQUU7VUFBRS9CLEtBQUssRUFBRTtRQUFUO01BQVYsQ0FBekM7TUFDQWtCLE9BQU8sQ0FBQ2tCLE1BQVI7TUFDQWYsTUFBTSxDQUFDSCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLEVBQXNCRSxLQUF0QixHQUE4QjVCLEtBQS9CLENBQU4sQ0FBNEM4QixPQUE1QyxDQUFvRCxPQUFwRDtJQUNELENBZkQ7RUE2Q0QsQ0FyREMsQ0FBRjtFQXVEQWIsRUFBRSxDQUFDLE1BQUQsRUFBUyxZQUFNO0lBQ2YsSUFBTUMsT0FBTyxHQUFHLElBQUFNLGFBQUEsRUFBTSxvQkFBQyxZQUFEO01BQVksWUFBWSxFQUFDO0lBQXpCLEVBQU4sQ0FBaEI7SUFDQSxJQUFNQyxLQUFLLEdBQUdQLE9BQU8sQ0FBQ1EsSUFBUixDQUFhLE9BQWIsQ0FBZDtJQUNBRCxLQUFLLENBQUNFLFFBQU4sQ0FBZSxPQUFmO0lBQ0FOLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDUSxJQUFSLENBQWEsU0FBYixFQUF3QkUsS0FBeEIsR0FBZ0NDLE9BQWpDLENBQU4sQ0FBZ0RDLE9BQWhELENBQXdELElBQXhEO0lBQ0FaLE9BQU8sQ0FBQ1EsSUFBUixDQUFhLGlCQUFiLEVBQWdDUSxFQUFoQyxDQUFtQyxDQUFuQyxFQUFzQ1AsUUFBdEMsQ0FBK0MsT0FBL0M7SUFDQU4sTUFBTSxDQUFDSCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLEVBQXNCRSxLQUF0QixHQUE4QjVCLEtBQS9CLENBQU4sQ0FBNEM4QixPQUE1QyxDQUFvRCxPQUFwRDtFQUNELENBUEMsQ0FBRjtFQVNBYixFQUFFLENBQUMsTUFBRCxFQUFTLFlBQU07SUFDZixJQUFNQyxPQUFPLEdBQUcsSUFBQU0sYUFBQSxFQUFNLG9CQUFDLFlBQUQ7TUFBWSxLQUFLLEVBQUMsT0FBbEI7TUFBMEIsUUFBUTtJQUFsQyxFQUFOLENBQWhCO0lBQ0EsSUFBTUMsS0FBSyxHQUFHUCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLENBQWQ7SUFDQUQsS0FBSyxDQUFDRSxRQUFOLENBQWUsT0FBZjtJQUNBTixNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxJQUF4RDtJQUNBWixPQUFPLENBQUNRLElBQVIsQ0FBYSxpQkFBYixFQUFnQ1EsRUFBaEMsQ0FBbUMsQ0FBbkMsRUFBc0NQLFFBQXRDLENBQStDLE9BQS9DO0lBQ0FOLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDUSxJQUFSLENBQWEsT0FBYixFQUFzQkUsS0FBdEIsR0FBOEI1QixLQUEvQixDQUFOLENBQTRDOEIsT0FBNUMsQ0FBb0QsT0FBcEQ7RUFDRCxDQVBDLENBQUY7RUFTQWIsRUFBRSxDQUFDLE1BQUQsRUFBUyxZQUFNO0lBQ2YsSUFBTUMsT0FBTyxHQUFHLElBQUFNLGFBQUEsRUFBTSxvQkFBQyxZQUFEO01BQVksUUFBUTtJQUFwQixFQUFOLENBQWhCO0lBQ0EsSUFBTUMsS0FBSyxHQUFHUCxPQUFPLENBQUNRLElBQVIsQ0FBYSxPQUFiLENBQWQ7SUFDQUQsS0FBSyxDQUFDRSxRQUFOLENBQWUsT0FBZjtJQUNBTixNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxLQUF4RDtFQUNELENBTEMsQ0FBRjtFQU9BYixFQUFFLENBQUMsYUFBRCxFQUFnQixZQUFNO0lBQ3RCLElBQU1DLE9BQU8sR0FBRyxJQUFBTSxhQUFBLEVBQ2Qsb0JBQUMsWUFBRDtNQUFZLE9BQU8sRUFBQyxPQUFwQjtNQUE0QixPQUFPLEVBQUMsT0FBcEM7TUFBNEMsWUFBWSxFQUFDO0lBQXpELEVBRGMsQ0FBaEI7SUFHQSxJQUFNQyxLQUFLLEdBQUdQLE9BQU8sQ0FBQ1EsSUFBUixDQUFhLE9BQWIsQ0FBZDtJQUNBRCxLQUFLLENBQUNFLFFBQU4sQ0FBZSxRQUFmLEVBQXlCO01BQUVJLE1BQU0sRUFBRTtRQUFFL0IsS0FBSyxFQUFFO01BQVQ7SUFBVixDQUF6QjtJQUNBeUIsS0FBSyxDQUFDRSxRQUFOLENBQWUsT0FBZjtJQUNBTixNQUFNLENBQUNILE9BQU8sQ0FBQ1EsSUFBUixDQUFhLFNBQWIsRUFBd0JFLEtBQXhCLEdBQWdDQyxPQUFqQyxDQUFOLENBQWdEQyxPQUFoRCxDQUF3RCxJQUF4RDtFQUNELENBUkMsQ0FBRjtBQVNELENBMUhPLENBQVIifQ==