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>
162 lines (140 loc) • 20.4 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); }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
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); }
import React, { Component } from "react";
import { mount } from "enzyme";
import TestRenderer from "react-test-renderer";
import ColorPicker from "..";
import { act } from "react-dom/test-utils";
var ColorPickerMounter = function (_Component) {
_inherits(ColorPickerMounter, _Component);
var _super = _createSuper(ColorPickerMounter);
function ColorPickerMounter() {
var _this;
_classCallCheck(this, ColorPickerMounter);
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: "#07C160"
};
return _this;
}
_createClass(ColorPickerMounter, [{
key: "render",
value: function render() {
var _this2 = this;
var value = this.state.value;
return React.createElement(ColorPicker, _extends({
value: value,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
}
}, this.props));
}
}]);
return ColorPickerMounter;
}(Component);
describe("ColorPicker", function () {
beforeAll(function () {
jest.useFakeTimers();
});
afterAll(function () {
jest.useRealTimers();
});
it("是否正确渲染", function () {
var wrapper = TestRenderer.create(React.createElement(ColorPicker, {
defaultValue: "#07C160"
}));
expect(wrapper).toMatchSnapshot();
});
it("是否能处理小写值的情况", function () {
var wrapper = mount(React.createElement(ColorPicker, {
defaultValue: "#07c160"
}));
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "07C160" && value === "#07C160").toBe(true);
});
it("内部驱动", function () {
var wrapper = mount(React.createElement(ColorPicker, {
defaultValue: "#07C160"
}));
wrapper.find("button").simulate("click");
wrapper.find(".adui-cp-standard i").at(0).simulate("click");
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "FFFFFF" && value === "#FFFFFF").toBe(true);
wrapper.find("input").at(0).simulate("change", {
target: {
value: "F0F0F0"
}
});
var value1 = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue1 = wrapper.find("Input").at(0).props().value;
expect(inputValue1 === "F0F0F0" && value1 === "#F0F0F0").toBe(true);
});
it("外部控制", function () {
var wrapper = mount(React.createElement(ColorPickerMounter, null));
wrapper.find("button").simulate("click");
act(function () {
wrapper.find(".adui-cp-standard i").at(0).simulate("click");
jest.runAllTimers();
wrapper.update();
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "FFFFFF" && value === "#FFFFFF" && wrapper.state().value === "#FFFFFF").toBe(true);
});
wrapper.find("input").at(0).simulate("change", {
target: {
value: "F0F0F0"
}
});
var value1 = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue1 = wrapper.find("Input").at(0).props().value;
expect(inputValue1 === "F0F0F0" && value1 === "#F0F0F0" && wrapper.state().value === "#F0F0F0").toBe(true);
});
it("禁用态", function () {
var wrapper = mount(React.createElement(ColorPicker, {
defaultValue: "#07C160",
disabled: true
}));
wrapper.find("button").simulate("click");
expect(wrapper.find("Popover").props().visible).toBe(false);
});
it("popupResultVisible", function () {
var wrapper0 = mount(React.createElement(ColorPicker, {
defaultValue: "#07C160"
}));
var wrapper1 = mount(React.createElement(ColorPicker, {
defaultValue: "#07C160",
popupResultVisible: false
}));
wrapper0.find("button").simulate("click");
wrapper1.find("button").simulate("click");
expect(wrapper0.find("input")).toHaveLength(2);
expect(wrapper1.find("input")).toHaveLength(1);
});
it("handlePrefixClick 验证", function () {
var wrapper = mount(React.createElement(ColorPicker, {
defaultValue: "#07C160"
}));
wrapper.find(".adui-cp-prefix").simulate("click");
wrapper.find("button").simulate("click");
jest.advanceTimersByTime(50);
wrapper.find(".adui-cp-prefix").at(1).simulate("click");
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIm1vdW50IiwiVGVzdFJlbmRlcmVyIiwiQ29sb3JQaWNrZXIiLCJhY3QiLCJDb2xvclBpY2tlck1vdW50ZXIiLCJzdGF0ZSIsInZhbHVlIiwidmFsIiwic2V0U3RhdGUiLCJwcm9wcyIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiamVzdCIsInVzZUZha2VUaW1lcnMiLCJhZnRlckFsbCIsInVzZVJlYWxUaW1lcnMiLCJpdCIsIndyYXBwZXIiLCJjcmVhdGUiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJmaW5kIiwiYXQiLCJpbnB1dFZhbHVlIiwidG9CZSIsInNpbXVsYXRlIiwidGFyZ2V0IiwidmFsdWUxIiwiaW5wdXRWYWx1ZTEiLCJydW5BbGxUaW1lcnMiLCJ1cGRhdGUiLCJ2aXNpYmxlIiwid3JhcHBlcjAiLCJ3cmFwcGVyMSIsInRvSGF2ZUxlbmd0aCIsImFkdmFuY2VUaW1lcnNCeVRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9fX3Rlc3RzX18vaW5kZXgudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgbW91bnQgfSBmcm9tIFwiZW56eW1lXCJcbmltcG9ydCBUZXN0UmVuZGVyZXIgZnJvbSBcInJlYWN0LXRlc3QtcmVuZGVyZXJcIlxuLy8gaW1wb3J0IHsgYWN0IH0gZnJvbSBcInJlYWN0LWRvbS90ZXN0LXV0aWxzXCJcbmltcG9ydCBDb2xvclBpY2tlciBmcm9tIFwiLi5cIlxuaW1wb3J0IHsgYWN0IH0gZnJvbSBcInJlYWN0LWRvbS90ZXN0LXV0aWxzXCJcblxuY2xhc3MgQ29sb3JQaWNrZXJNb3VudGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgdmFsdWU6IFwiIzA3QzE2MFwiLFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGVcbiAgICByZXR1cm4gKFxuICAgICAgPENvbG9yUGlja2VyXG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgIC8+XG4gICAgKVxuICB9XG59XG5cbmRlc2NyaWJlKFwiQ29sb3JQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG4gIH0pXG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlUmVhbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCIgLz4pXG4gICAgZXhwZWN0KHdyYXBwZXIpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbog73lpITnkIblsI/lhpnlgLznmoTmg4XlhrVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXIgZGVmYXVsdFZhbHVlPVwiIzA3YzE2MFwiIC8+KVxuICAgIGNvbnN0IHZhbHVlID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gd3JhcHBlci5maW5kKFwiSW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZVxuICAgIGV4cGVjdChpbnB1dFZhbHVlID09PSBcIjA3QzE2MFwiICYmIHZhbHVlID09PSBcIiMwN0MxNjBcIikudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KFwi5YaF6YOo6amx5YqoXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPENvbG9yUGlja2VyIGRlZmF1bHRWYWx1ZT1cIiMwN0MxNjBcIiAvPilcbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLXN0YW5kYXJkIGlcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGNvbnN0IHZhbHVlID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gd3JhcHBlci5maW5kKFwiSW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZVxuICAgIGV4cGVjdChpbnB1dFZhbHVlID09PSBcIkZGRkZGRlwiICYmIHZhbHVlID09PSBcIiNGRkZGRkZcIikudG9CZSh0cnVlKVxuXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJpbnB1dFwiKVxuICAgICAgLmF0KDApXG4gICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiRjBGMEYwXCIgfSB9KVxuXG4gICAgY29uc3QgdmFsdWUxID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICBjb25zdCBpbnB1dFZhbHVlMSA9IHdyYXBwZXIuZmluZChcIklucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWVcbiAgICBleHBlY3QoaW5wdXRWYWx1ZTEgPT09IFwiRjBGMEYwXCIgJiYgdmFsdWUxID09PSBcIiNGMEYwRjBcIikudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KFwi5aSW6YOo5o6n5Yi2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPENvbG9yUGlja2VyTW91bnRlciAvPilcblxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLXN0YW5kYXJkIGlcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgY29uc3QgdmFsdWUgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS12YWx1ZVwiXVxuICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IHdyYXBwZXIuZmluZChcIklucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWVcbiAgICAgIGV4cGVjdChcbiAgICAgICAgaW5wdXRWYWx1ZSA9PT0gXCJGRkZGRkZcIiAmJlxuICAgICAgICAgIHZhbHVlID09PSBcIiNGRkZGRkZcIiAmJlxuICAgICAgICAgIHdyYXBwZXIuc3RhdGUoKS52YWx1ZSA9PT0gXCIjRkZGRkZGXCJcbiAgICAgICkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgd3JhcHBlclxuICAgICAgLmZpbmQoXCJpbnB1dFwiKVxuICAgICAgLmF0KDApXG4gICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiRjBGMEYwXCIgfSB9KVxuICAgIGNvbnN0IHZhbHVlMSA9IHdyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdXG4gICAgY29uc3QgaW5wdXRWYWx1ZTEgPSB3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlXG4gICAgZXhwZWN0KFxuICAgICAgaW5wdXRWYWx1ZTEgPT09IFwiRjBGMEYwXCIgJiZcbiAgICAgICAgdmFsdWUxID09PSBcIiNGMEYwRjBcIiAmJlxuICAgICAgICB3cmFwcGVyLnN0YXRlKCkudmFsdWUgPT09IFwiI0YwRjBGMFwiXG4gICAgKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCLnpoHnlKjmgIFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXIgZGVmYXVsdFZhbHVlPVwiIzA3QzE2MFwiIGRpc2FibGVkIC8+KVxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwicG9wdXBSZXN1bHRWaXNpYmxlXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyMCA9IG1vdW50KDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCIgLz4pXG4gICAgY29uc3Qgd3JhcHBlcjEgPSBtb3VudChcbiAgICAgIDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCIgcG9wdXBSZXN1bHRWaXNpYmxlPXtmYWxzZX0gLz5cbiAgICApXG4gICAgd3JhcHBlcjAuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgd3JhcHBlcjEuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIwLmZpbmQoXCJpbnB1dFwiKSkudG9IYXZlTGVuZ3RoKDIpXG4gICAgZXhwZWN0KHdyYXBwZXIxLmZpbmQoXCJpbnB1dFwiKSkudG9IYXZlTGVuZ3RoKDEpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVQcmVmaXhDbGljayDpqozor4FcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXIgZGVmYXVsdFZhbHVlPVwiIzA3QzE2MFwiIC8+KVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWNwLXByZWZpeFwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgd3JhcHBlci5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoNTApXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktY3AtcHJlZml4XCIpLmF0KDEpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixRQUF0QjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIscUJBQXpCO0FBRUEsT0FBT0MsV0FBUCxNQUF3QixJQUF4QjtBQUNBLFNBQVNDLEdBQVQsUUFBb0Isc0JBQXBCOztJQUVNQyxrQjs7Ozs7Ozs7Ozs7Ozs7O1VBQ0pDLEssR0FBUTtNQUNOQyxLQUFLLEVBQUU7SUFERCxDOzs7Ozs7V0FJUixrQkFBUztNQUFBOztNQUNQLElBQVFBLEtBQVIsR0FBa0IsS0FBS0QsS0FBdkIsQ0FBUUMsS0FBUjtNQUNBLE9BQ0Usb0JBQUMsV0FBRDtRQUNFLEtBQUssRUFBRUEsS0FEVDtRQUVFLFFBQVEsRUFBRSxrQkFBQ0MsR0FBRDtVQUFBLE9BQVMsTUFBSSxDQUFDQyxRQUFMLENBQWM7WUFBRUYsS0FBSyxFQUFFQztVQUFULENBQWQsQ0FBVDtRQUFBO01BRlosR0FHTSxLQUFLRSxLQUhYLEVBREY7SUFPRDs7OztFQWQ4QlYsUzs7QUFpQmpDVyxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0VBQzVCQyxTQUFTLENBQUMsWUFBTTtJQUNkQyxJQUFJLENBQUNDLGFBQUw7RUFDRCxDQUZRLENBQVQ7RUFJQUMsUUFBUSxDQUFDLFlBQU07SUFDYkYsSUFBSSxDQUFDRyxhQUFMO0VBQ0QsQ0FGTyxDQUFSO0VBSUFDLEVBQUUsQ0FBQyxRQUFELEVBQVcsWUFBTTtJQUNqQixJQUFNQyxPQUFPLEdBQUdoQixZQUFZLENBQUNpQixNQUFiLENBQW9CLG9CQUFDLFdBQUQ7TUFBYSxZQUFZLEVBQUM7SUFBMUIsRUFBcEIsQ0FBaEI7SUFDQUMsTUFBTSxDQUFDRixPQUFELENBQU4sQ0FBZ0JHLGVBQWhCO0VBQ0QsQ0FIQyxDQUFGO0VBS0FKLEVBQUUsQ0FBQyxhQUFELEVBQWdCLFlBQU07SUFDdEIsSUFBTUMsT0FBTyxHQUFHakIsS0FBSyxDQUFDLG9CQUFDLFdBQUQ7TUFBYSxZQUFZLEVBQUM7SUFBMUIsRUFBRCxDQUFyQjtJQUNBLElBQU1NLEtBQUssR0FBR1csT0FBTyxDQUFDSSxJQUFSLENBQWEsVUFBYixFQUF5QkMsRUFBekIsQ0FBNEIsQ0FBNUIsRUFBK0JiLEtBQS9CLEdBQXVDLFlBQXZDLENBQWQ7SUFDQSxJQUFNYyxVQUFVLEdBQUdOLE9BQU8sQ0FBQ0ksSUFBUixDQUFhLE9BQWIsRUFBc0JDLEVBQXRCLENBQXlCLENBQXpCLEVBQTRCYixLQUE1QixHQUFvQ0gsS0FBdkQ7SUFDQWEsTUFBTSxDQUFDSSxVQUFVLEtBQUssUUFBZixJQUEyQmpCLEtBQUssS0FBSyxTQUF0QyxDQUFOLENBQXVEa0IsSUFBdkQsQ0FBNEQsSUFBNUQ7RUFDRCxDQUxDLENBQUY7RUFPQVIsRUFBRSxDQUFDLE1BQUQsRUFBUyxZQUFNO0lBQ2YsSUFBTUMsT0FBTyxHQUFHakIsS0FBSyxDQUFDLG9CQUFDLFdBQUQ7TUFBYSxZQUFZLEVBQUM7SUFBMUIsRUFBRCxDQUFyQjtJQUNBaUIsT0FBTyxDQUFDSSxJQUFSLENBQWEsUUFBYixFQUF1QkksUUFBdkIsQ0FBZ0MsT0FBaEM7SUFDQVIsT0FBTyxDQUFDSSxJQUFSLENBQWEscUJBQWIsRUFBb0NDLEVBQXBDLENBQXVDLENBQXZDLEVBQTBDRyxRQUExQyxDQUFtRCxPQUFuRDtJQUNBLElBQU1uQixLQUFLLEdBQUdXLE9BQU8sQ0FBQ0ksSUFBUixDQUFhLFVBQWIsRUFBeUJDLEVBQXpCLENBQTRCLENBQTVCLEVBQStCYixLQUEvQixHQUF1QyxZQUF2QyxDQUFkO0lBQ0EsSUFBTWMsVUFBVSxHQUFHTixPQUFPLENBQUNJLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxFQUF0QixDQUF5QixDQUF6QixFQUE0QmIsS0FBNUIsR0FBb0NILEtBQXZEO0lBQ0FhLE1BQU0sQ0FBQ0ksVUFBVSxLQUFLLFFBQWYsSUFBMkJqQixLQUFLLEtBQUssU0FBdEMsQ0FBTixDQUF1RGtCLElBQXZELENBQTRELElBQTVEO0lBRUFQLE9BQU8sQ0FDSkksSUFESCxDQUNRLE9BRFIsRUFFR0MsRUFGSCxDQUVNLENBRk4sRUFHR0csUUFISCxDQUdZLFFBSFosRUFHc0I7TUFBRUMsTUFBTSxFQUFFO1FBQUVwQixLQUFLLEVBQUU7TUFBVDtJQUFWLENBSHRCO0lBS0EsSUFBTXFCLE1BQU0sR0FBR1YsT0FBTyxDQUFDSSxJQUFSLENBQWEsVUFBYixFQUF5QkMsRUFBekIsQ0FBNEIsQ0FBNUIsRUFBK0JiLEtBQS9CLEdBQXVDLFlBQXZDLENBQWY7SUFDQSxJQUFNbUIsV0FBVyxHQUFHWCxPQUFPLENBQUNJLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxFQUF0QixDQUF5QixDQUF6QixFQUE0QmIsS0FBNUIsR0FBb0NILEtBQXhEO0lBQ0FhLE1BQU0sQ0FBQ1MsV0FBVyxLQUFLLFFBQWhCLElBQTRCRCxNQUFNLEtBQUssU0FBeEMsQ0FBTixDQUF5REgsSUFBekQsQ0FBOEQsSUFBOUQ7RUFDRCxDQWhCQyxDQUFGO0VBa0JBUixFQUFFLENBQUMsTUFBRCxFQUFTLFlBQU07SUFDZixJQUFNQyxPQUFPLEdBQUdqQixLQUFLLENBQUMsb0JBQUMsa0JBQUQsT0FBRCxDQUFyQjtJQUVBaUIsT0FBTyxDQUFDSSxJQUFSLENBQWEsUUFBYixFQUF1QkksUUFBdkIsQ0FBZ0MsT0FBaEM7SUFDQXRCLEdBQUcsQ0FBQyxZQUFNO01BQ1JjLE9BQU8sQ0FBQ0ksSUFBUixDQUFhLHFCQUFiLEVBQW9DQyxFQUFwQyxDQUF1QyxDQUF2QyxFQUEwQ0csUUFBMUMsQ0FBbUQsT0FBbkQ7TUFDQWIsSUFBSSxDQUFDaUIsWUFBTDtNQUNBWixPQUFPLENBQUNhLE1BQVI7TUFDQSxJQUFNeEIsS0FBSyxHQUFHVyxPQUFPLENBQUNJLElBQVIsQ0FBYSxVQUFiLEVBQXlCQyxFQUF6QixDQUE0QixDQUE1QixFQUErQmIsS0FBL0IsR0FBdUMsWUFBdkMsQ0FBZDtNQUNBLElBQU1jLFVBQVUsR0FBR04sT0FBTyxDQUFDSSxJQUFSLENBQWEsT0FBYixFQUFzQkMsRUFBdEIsQ0FBeUIsQ0FBekIsRUFBNEJiLEtBQTVCLEdBQW9DSCxLQUF2RDtNQUNBYSxNQUFNLENBQ0pJLFVBQVUsS0FBSyxRQUFmLElBQ0VqQixLQUFLLEtBQUssU0FEWixJQUVFVyxPQUFPLENBQUNaLEtBQVIsR0FBZ0JDLEtBQWhCLEtBQTBCLFNBSHhCLENBQU4sQ0FJRWtCLElBSkYsQ0FJTyxJQUpQO0lBS0QsQ0FYRSxDQUFIO0lBWUFQLE9BQU8sQ0FDSkksSUFESCxDQUNRLE9BRFIsRUFFR0MsRUFGSCxDQUVNLENBRk4sRUFHR0csUUFISCxDQUdZLFFBSFosRUFHc0I7TUFBRUMsTUFBTSxFQUFFO1FBQUVwQixLQUFLLEVBQUU7TUFBVDtJQUFWLENBSHRCO0lBSUEsSUFBTXFCLE1BQU0sR0FBR1YsT0FBTyxDQUFDSSxJQUFSLENBQWEsVUFBYixFQUF5QkMsRUFBekIsQ0FBNEIsQ0FBNUIsRUFBK0JiLEtBQS9CLEdBQXVDLFlBQXZDLENBQWY7SUFDQSxJQUFNbUIsV0FBVyxHQUFHWCxPQUFPLENBQUNJLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxFQUF0QixDQUF5QixDQUF6QixFQUE0QmIsS0FBNUIsR0FBb0NILEtBQXhEO0lBQ0FhLE1BQU0sQ0FDSlMsV0FBVyxLQUFLLFFBQWhCLElBQ0VELE1BQU0sS0FBSyxTQURiLElBRUVWLE9BQU8sQ0FBQ1osS0FBUixHQUFnQkMsS0FBaEIsS0FBMEIsU0FIeEIsQ0FBTixDQUlFa0IsSUFKRixDQUlPLElBSlA7RUFLRCxDQTNCQyxDQUFGO0VBNkJBUixFQUFFLENBQUMsS0FBRCxFQUFRLFlBQU07SUFDZCxJQUFNQyxPQUFPLEdBQUdqQixLQUFLLENBQUMsb0JBQUMsV0FBRDtNQUFhLFlBQVksRUFBQyxTQUExQjtNQUFvQyxRQUFRO0lBQTVDLEVBQUQsQ0FBckI7SUFDQWlCLE9BQU8sQ0FBQ0ksSUFBUixDQUFhLFFBQWIsRUFBdUJJLFFBQXZCLENBQWdDLE9BQWhDO0lBQ0FOLE1BQU0sQ0FBQ0YsT0FBTyxDQUFDSSxJQUFSLENBQWEsU0FBYixFQUF3QlosS0FBeEIsR0FBZ0NzQixPQUFqQyxDQUFOLENBQWdEUCxJQUFoRCxDQUFxRCxLQUFyRDtFQUNELENBSkMsQ0FBRjtFQU1BUixFQUFFLENBQUMsb0JBQUQsRUFBdUIsWUFBTTtJQUM3QixJQUFNZ0IsUUFBUSxHQUFHaEMsS0FBSyxDQUFDLG9CQUFDLFdBQUQ7TUFBYSxZQUFZLEVBQUM7SUFBMUIsRUFBRCxDQUF0QjtJQUNBLElBQU1pQyxRQUFRLEdBQUdqQyxLQUFLLENBQ3BCLG9CQUFDLFdBQUQ7TUFBYSxZQUFZLEVBQUMsU0FBMUI7TUFBb0Msa0JBQWtCLEVBQUU7SUFBeEQsRUFEb0IsQ0FBdEI7SUFHQWdDLFFBQVEsQ0FBQ1gsSUFBVCxDQUFjLFFBQWQsRUFBd0JJLFFBQXhCLENBQWlDLE9BQWpDO0lBQ0FRLFFBQVEsQ0FBQ1osSUFBVCxDQUFjLFFBQWQsRUFBd0JJLFFBQXhCLENBQWlDLE9BQWpDO0lBQ0FOLE1BQU0sQ0FBQ2EsUUFBUSxDQUFDWCxJQUFULENBQWMsT0FBZCxDQUFELENBQU4sQ0FBK0JhLFlBQS9CLENBQTRDLENBQTVDO0lBQ0FmLE1BQU0sQ0FBQ2MsUUFBUSxDQUFDWixJQUFULENBQWMsT0FBZCxDQUFELENBQU4sQ0FBK0JhLFlBQS9CLENBQTRDLENBQTVDO0VBQ0QsQ0FUQyxDQUFGO0VBV0FsQixFQUFFLENBQUMsc0JBQUQsRUFBeUIsWUFBTTtJQUMvQixJQUFNQyxPQUFPLEdBQUdqQixLQUFLLENBQUMsb0JBQUMsV0FBRDtNQUFhLFlBQVksRUFBQztJQUExQixFQUFELENBQXJCO0lBQ0FpQixPQUFPLENBQUNJLElBQVIsQ0FBYSxpQkFBYixFQUFnQ0ksUUFBaEMsQ0FBeUMsT0FBekM7SUFDQVIsT0FBTyxDQUFDSSxJQUFSLENBQWEsUUFBYixFQUF1QkksUUFBdkIsQ0FBZ0MsT0FBaEM7SUFDQWIsSUFBSSxDQUFDdUIsbUJBQUwsQ0FBeUIsRUFBekI7SUFDQWxCLE9BQU8sQ0FBQ0ksSUFBUixDQUFhLGlCQUFiLEVBQWdDQyxFQUFoQyxDQUFtQyxDQUFuQyxFQUFzQ0csUUFBdEMsQ0FBK0MsT0FBL0M7RUFDRCxDQU5DLENBQUY7QUFPRCxDQTVGTyxDQUFSIn0=