@sankei-arc-shared-components/element_icon 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -1,48 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = exports.SITE_KEYS = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
-
16
11
  var _react = _interopRequireDefault(require("react"));
17
-
18
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
-
20
13
  var _fusionContext = require("fusion:context");
21
-
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
23
-
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
-
14
+ 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; }
15
+ 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) { (0, _defineProperty2["default"])(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; }
26
16
  var IconImg = function IconImg(name) {
27
17
  return function (props) {
28
18
  var _useFusionContext = (0, _fusionContext.useFusionContext)(),
29
- contextPath = _useFusionContext.contextPath,
30
- deployment = _useFusionContext.deployment;
31
-
19
+ contextPath = _useFusionContext.contextPath,
20
+ deployment = _useFusionContext.deployment;
32
21
  return /*#__PURE__*/_react["default"].createElement("img", (0, _extends2["default"])({}, props, {
33
22
  src: deployment("".concat(contextPath, "/resources/icons/").concat(name, ".svg"))
34
23
  }));
35
24
  };
36
25
  };
37
-
38
26
  var Bars = function Bars(_ref) {
39
27
  var fillColor = _ref.fillColor,
40
- props = (0, _objectWithoutProperties2["default"])(_ref, ["fillColor"]);
28
+ alt = _ref.alt,
29
+ props = (0, _objectWithoutProperties2["default"])(_ref, ["fillColor", "alt"]);
41
30
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
42
31
  "data-name": "Group 16",
43
32
  xmlns: "http://www.w3.org/2000/svg",
44
33
  viewBox: "0 0 32 32"
45
- }), /*#__PURE__*/_react["default"].createElement("g", {
34
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("g", {
46
35
  fill: fillColor || '#999'
47
36
  }, /*#__PURE__*/_react["default"].createElement("path", {
48
37
  "data-name": "Fill 1",
@@ -55,17 +44,17 @@ var Bars = function Bars(_ref) {
55
44
  d: "M0 24h32v-2.67H0z"
56
45
  })));
57
46
  };
58
-
59
47
  var BorderArrowLeft = function BorderArrowLeft(_ref2) {
60
48
  var fillColor = _ref2.fillColor,
61
- backgroundColor = _ref2.backgroundColor,
62
- strokeColor = _ref2.strokeColor,
63
- props = (0, _objectWithoutProperties2["default"])(_ref2, ["fillColor", "backgroundColor", "strokeColor"]);
49
+ backgroundColor = _ref2.backgroundColor,
50
+ strokeColor = _ref2.strokeColor,
51
+ alt = _ref2.alt,
52
+ props = (0, _objectWithoutProperties2["default"])(_ref2, ["fillColor", "backgroundColor", "strokeColor", "alt"]);
64
53
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
65
54
  viewBox: "0 0 44 44",
66
55
  fill: "none",
67
56
  xmlns: "http://www.w3.org/2000/svg"
68
- }), /*#__PURE__*/_react["default"].createElement("rect", {
57
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("rect", {
69
58
  x: "43.5",
70
59
  y: "43.5",
71
60
  width: "43",
@@ -79,17 +68,17 @@ var BorderArrowLeft = function BorderArrowLeft(_ref2) {
79
68
  fill: fillColor || '#06517B'
80
69
  }));
81
70
  };
82
-
83
71
  var BorderArrowRight = function BorderArrowRight(_ref3) {
84
72
  var fillColor = _ref3.fillColor,
85
- backgroundColor = _ref3.backgroundColor,
86
- strokeColor = _ref3.strokeColor,
87
- props = (0, _objectWithoutProperties2["default"])(_ref3, ["fillColor", "backgroundColor", "strokeColor"]);
73
+ backgroundColor = _ref3.backgroundColor,
74
+ strokeColor = _ref3.strokeColor,
75
+ alt = _ref3.alt,
76
+ props = (0, _objectWithoutProperties2["default"])(_ref3, ["fillColor", "backgroundColor", "strokeColor", "alt"]);
88
77
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
89
78
  viewBox: "0 0 44 44",
90
79
  fill: "none",
91
80
  xmlns: "http://www.w3.org/2000/svg"
92
- }), /*#__PURE__*/_react["default"].createElement("rect", {
81
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("rect", {
93
82
  x: "0.5",
94
83
  y: "0.5",
95
84
  width: "43",
@@ -102,15 +91,15 @@ var BorderArrowRight = function BorderArrowRight(_ref3) {
102
91
  fill: fillColor || '#06517B'
103
92
  }));
104
93
  };
105
-
106
94
  var Chevron = function Chevron(_ref4) {
107
95
  var fillColor = _ref4.fillColor,
108
- props = (0, _objectWithoutProperties2["default"])(_ref4, ["fillColor"]);
96
+ alt = _ref4.alt,
97
+ props = (0, _objectWithoutProperties2["default"])(_ref4, ["fillColor", "alt"]);
109
98
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
110
99
  "data-name": "Group 16",
111
100
  xmlns: "http://www.w3.org/2000/svg",
112
101
  viewBox: "0 0 32 32"
113
- }), /*#__PURE__*/_react["default"].createElement("path", {
102
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
114
103
  "data-name": "Fill 1",
115
104
  d: "M0 32h32V0H0z",
116
105
  fill: "#fff"
@@ -120,15 +109,15 @@ var Chevron = function Chevron(_ref4) {
120
109
  fill: fillColor || '#999'
121
110
  }));
122
111
  };
123
-
124
112
  var ChevronUp = function ChevronUp(_ref5) {
125
113
  var fillColor = _ref5.fillColor,
126
- props = (0, _objectWithoutProperties2["default"])(_ref5, ["fillColor"]);
114
+ alt = _ref5.alt,
115
+ props = (0, _objectWithoutProperties2["default"])(_ref5, ["fillColor", "alt"]);
127
116
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
128
117
  "data-name": "Group 16",
129
118
  xmlns: "http://www.w3.org/2000/svg",
130
119
  viewBox: "0 0 32 32"
131
- }), /*#__PURE__*/_react["default"].createElement("path", {
120
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
132
121
  "data-name": "Fill 1",
133
122
  d: "M32 32V0H0v32z",
134
123
  fill: "#fff"
@@ -138,15 +127,15 @@ var ChevronUp = function ChevronUp(_ref5) {
138
127
  fill: fillColor || '#06517b'
139
128
  }));
140
129
  };
141
-
142
130
  var ChevronDown = function ChevronDown(_ref6) {
143
131
  var fillColor = _ref6.fillColor,
144
- props = (0, _objectWithoutProperties2["default"])(_ref6, ["fillColor"]);
132
+ alt = _ref6.alt,
133
+ props = (0, _objectWithoutProperties2["default"])(_ref6, ["fillColor", "alt"]);
145
134
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
146
135
  "data-name": "Group 16",
147
136
  xmlns: "http://www.w3.org/2000/svg",
148
137
  viewBox: "0 0 32 32"
149
- }), /*#__PURE__*/_react["default"].createElement("path", {
138
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
150
139
  "data-name": "Fill 1",
151
140
  d: "M0 32h32V0H0z",
152
141
  fill: "#fff"
@@ -156,15 +145,15 @@ var ChevronDown = function ChevronDown(_ref6) {
156
145
  fill: fillColor || '#06517b'
157
146
  }));
158
147
  };
159
-
160
148
  var ChevronRight = function ChevronRight(_ref7) {
161
149
  var fillColor = _ref7.fillColor,
162
- props = (0, _objectWithoutProperties2["default"])(_ref7, ["fillColor"]);
150
+ alt = _ref7.alt,
151
+ props = (0, _objectWithoutProperties2["default"])(_ref7, ["fillColor", "alt"]);
163
152
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
164
153
  "data-name": "Group 16",
165
154
  xmlns: "http://www.w3.org/2000/svg",
166
155
  viewBox: "0 0 32 32"
167
- }), /*#__PURE__*/_react["default"].createElement("path", {
156
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
168
157
  "data-name": "Fill 1",
169
158
  d: "M0 32h32V0H0z",
170
159
  fill: "#fff"
@@ -174,14 +163,14 @@ var ChevronRight = function ChevronRight(_ref7) {
174
163
  fill: fillColor || '#06517b'
175
164
  }));
176
165
  };
177
-
178
166
  var Lock = function Lock(_ref8) {
179
167
  var fillColor = _ref8.fillColor,
180
- props = (0, _objectWithoutProperties2["default"])(_ref8, ["fillColor"]);
168
+ alt = _ref8.alt,
169
+ props = (0, _objectWithoutProperties2["default"])(_ref8, ["fillColor", "alt"]);
181
170
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
182
171
  viewBox: "0 0 19 16",
183
172
  xmlns: "http://www.w3.org/2000/svg"
184
- }), /*#__PURE__*/_react["default"].createElement("path", {
173
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
185
174
  d: "M18.39,16H3.61A.61.61,0,0,1,3,15.39V.61A.61.61,0,0,1,3.61,0H18.39A.61.61,0,0,1,19,.61V15.39a.61.61,0,0,1-.61.61",
186
175
  fill: fillColor || '#dbb400'
187
176
  }), /*#__PURE__*/_react["default"].createElement("path", {
@@ -192,12 +181,13 @@ var Lock = function Lock(_ref8) {
192
181
  fill: "#fff"
193
182
  }));
194
183
  };
195
-
196
- var Search = function Search(props) {
184
+ var Search = function Search(_ref9) {
185
+ var alt = _ref9.alt,
186
+ props = (0, _objectWithoutProperties2["default"])(_ref9, ["alt"]);
197
187
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
198
188
  viewBox: "0 0 32 32",
199
189
  xmlns: "http://www.w3.org/2000/svg"
200
- }), /*#__PURE__*/_react["default"].createElement("g", {
190
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("g", {
201
191
  "data-name": "Group 3"
202
192
  }, /*#__PURE__*/_react["default"].createElement("path", {
203
193
  "data-name": "Clip 2",
@@ -212,19 +202,18 @@ var Search = function Search(props) {
212
202
  fill: "#999"
213
203
  }))));
214
204
  };
215
-
216
- var Times = function Times(props) {
205
+ var Times = function Times(_ref0) {
206
+ var alt = _ref0.alt,
207
+ props = (0, _objectWithoutProperties2["default"])(_ref0, ["alt"]);
217
208
  return /*#__PURE__*/_react["default"].createElement("svg", (0, _extends2["default"])({}, props, {
218
209
  viewBox: "0 0 352 512",
219
210
  xmlns: "http://www.w3.org/2000/svg"
220
- }), /*#__PURE__*/_react["default"].createElement("path", {
211
+ }), alt && /*#__PURE__*/_react["default"].createElement("title", null, alt), /*#__PURE__*/_react["default"].createElement("path", {
221
212
  d: "M242.72 256l100.07-100.07a31.46 31.46 0 000-44.48l-22.24-22.24a31.46 31.46 0 00-44.48 0L176 189.28 75.93 89.21a31.46 31.46 0 00-44.48 0L9.21 111.45a31.46 31.46 0 000 44.48L109.28 256 9.21 356.07a31.46 31.46 0 000 44.48l22.24 22.24a31.46 31.46 0 0044.48 0L176 322.72l100.07 100.07a31.46 31.46 0 0044.48 0l22.24-22.24a31.46 31.46 0 000-44.48L242.72 256z"
222
213
  }));
223
214
  };
224
-
225
215
  var SITE_KEYS = ['chain', 'chain_text', 'hatena', 'hatena_square', 'hatena_text', 'facebook', 'facebook_text', 'gq', 'ironna', 'japan-forward', 'line', 'line_text', 'sankei', 'member', 'twitter', 'twitter_blue', 'twitter_text', 'twitter_text_white', 'x', 'x_black', 'x_text', 'x_text_white', 'threads', 'bluesky', 'linkedin', 'note', 'youtube', 'wired', 'sankeisyo', 'naniwa', 'seiron', 'instagram', 'img_bar', 'img_borderarrow-left', 'img_borderarrow-left-biz', 'img_borderarrow-left-deactive', 'img_borderarrow-right', 'img_borderarrow-right-biz', 'img_borderarrow-right-deactive', 'img_chevron', 'img_chevron-deactive', 'img_chevron-up', 'img_chevron-down', 'img_chevron-right', 'img_chevron-right-deactive', 'img_lock-gold', 'img_lock-silver', 'img_search', 'img_times', 'monthly_seiron'];
226
216
  exports.SITE_KEYS = SITE_KEYS;
227
-
228
217
  var icons = _objectSpread({
229
218
  bars: {
230
219
  Component: Bars
@@ -261,50 +250,60 @@ var icons = _objectSpread({
261
250
  Component: IconImg(cur)
262
251
  }));
263
252
  }, {}));
264
-
265
- var Icon = function Icon(_ref9) {
266
- var name = _ref9.name,
267
- props = (0, _objectWithoutProperties2["default"])(_ref9, ["name"]);
268
-
253
+ var Icon = function Icon(_ref1) {
254
+ var name = _ref1.name,
255
+ props = (0, _objectWithoutProperties2["default"])(_ref1, ["name"]);
269
256
  if (typeof icons[name] !== 'undefined') {
270
257
  var Component = icons[name].Component;
271
258
  return /*#__PURE__*/_react["default"].createElement(Component, props);
272
259
  }
273
-
274
260
  return name;
275
261
  };
276
-
277
262
  Icon.propTypes = {
278
263
  name: _propTypes["default"].string.isRequired
279
264
  };
280
265
  Bars.propTypes = {
281
- fillColor: _propTypes["default"].string
266
+ fillColor: _propTypes["default"].string,
267
+ alt: _propTypes["default"].string
282
268
  };
283
269
  BorderArrowLeft.propTypes = {
284
270
  fillColor: _propTypes["default"].string,
285
271
  backgroundColor: _propTypes["default"].string,
286
- strokeColor: _propTypes["default"].string
272
+ strokeColor: _propTypes["default"].string,
273
+ alt: _propTypes["default"].string
287
274
  };
288
275
  BorderArrowRight.propTypes = {
289
276
  fillColor: _propTypes["default"].string,
290
277
  backgroundColor: _propTypes["default"].string,
291
- strokeColor: _propTypes["default"].string
278
+ strokeColor: _propTypes["default"].string,
279
+ alt: _propTypes["default"].string
292
280
  };
293
281
  Chevron.propTypes = {
294
- fillColor: _propTypes["default"].string
282
+ fillColor: _propTypes["default"].string,
283
+ alt: _propTypes["default"].string
295
284
  };
296
285
  ChevronUp.propTypes = {
297
- fillColor: _propTypes["default"].string
286
+ fillColor: _propTypes["default"].string,
287
+ alt: _propTypes["default"].string
298
288
  };
299
289
  ChevronDown.propTypes = {
300
- fillColor: _propTypes["default"].string
290
+ fillColor: _propTypes["default"].string,
291
+ alt: _propTypes["default"].string
301
292
  };
302
293
  ChevronRight.propTypes = {
303
- fillColor: _propTypes["default"].string
294
+ fillColor: _propTypes["default"].string,
295
+ alt: _propTypes["default"].string
304
296
  };
305
297
  Lock.propTypes = {
306
- fillColor: _propTypes["default"].string
298
+ fillColor: _propTypes["default"].string,
299
+ alt: _propTypes["default"].string
300
+ };
301
+ Search.propTypes = {
302
+ alt: _propTypes["default"].string
303
+ };
304
+ Times.propTypes = {
305
+ alt: _propTypes["default"].string
307
306
  };
308
307
  var _default = Icon;
309
308
  exports["default"] = _default;
310
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVua25vd24iXSwibmFtZXMiOlsiSWNvbkltZyIsIm5hbWUiLCJwcm9wcyIsImNvbnRleHRQYXRoIiwiZGVwbG95bWVudCIsIkJhcnMiLCJmaWxsQ29sb3IiLCJCb3JkZXJBcnJvd0xlZnQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdHJva2VDb2xvciIsIkJvcmRlckFycm93UmlnaHQiLCJDaGV2cm9uIiwiQ2hldnJvblVwIiwiQ2hldnJvbkRvd24iLCJDaGV2cm9uUmlnaHQiLCJMb2NrIiwiU2VhcmNoIiwiVGltZXMiLCJTSVRFX0tFWVMiLCJpY29ucyIsImJhcnMiLCJDb21wb25lbnQiLCJjaGV2cm9uIiwibG9jayIsInNlYXJjaCIsInRpbWVzIiwicmVkdWNlIiwiYWNjIiwiY3VyIiwiSWNvbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxJQUFEO0FBQUEsU0FBVSxVQUFDQyxLQUFELEVBQVc7QUFBQSw0QkFDQyxzQ0FERDtBQUFBLFFBQzNCQyxXQUQyQixxQkFDM0JBLFdBRDJCO0FBQUEsUUFDZEMsVUFEYyxxQkFDZEEsVUFEYzs7QUFFbkMsd0JBQU8scUVBQVNGLEtBQVQ7QUFBZ0IsTUFBQSxHQUFHLEVBQUVFLFVBQVUsV0FBSUQsV0FBSiw4QkFBbUNGLElBQW5DO0FBQS9CLE9BQVA7QUFDRCxHQUhlO0FBQUEsQ0FBaEI7O0FBS0EsSUFBTUksSUFBSSxHQUFHLFNBQVBBLElBQU87QUFBQSxNQUFHQyxTQUFILFFBQUdBLFNBQUg7QUFBQSxNQUFpQkosS0FBakI7QUFBQSxzQkFDWCxxRUFBU0EsS0FBVDtBQUFnQixpQkFBVSxVQUExQjtBQUFxQyxJQUFBLEtBQUssRUFBQyw0QkFBM0M7QUFBd0UsSUFBQSxPQUFPLEVBQUM7QUFBaEYsbUJBQ0U7QUFBRyxJQUFB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UmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHVzZUZ1c2lvbkNvbnRleHQgfSBmcm9tICdmdXNpb246Y29udGV4dCc7XG5cbmNvbnN0IEljb25JbWcgPSAobmFtZSkgPT4gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29udGV4dFBhdGgsIGRlcGxveW1lbnQgfSA9IHVzZUZ1c2lvbkNvbnRleHQoKTtcbiAgcmV0dXJuIDxpbWcgey4uLnByb3BzfSBzcmM9e2RlcGxveW1lbnQoYCR7Y29udGV4dFBhdGh9L3Jlc291cmNlcy9pY29ucy8ke25hbWV9LnN2Z2ApfSAvPjtcbn07XG5cbmNvbnN0IEJhcnMgPSAoeyBmaWxsQ29sb3IsIC4uLnByb3BzIH0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IGRhdGEtbmFtZT1cIkdyb3VwIDE2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIj5cbiAgICA8ZyBmaWxsPXtmaWxsQ29sb3IgfHwgJyM5OTknfT5cbiAgICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMVwiIGQ9XCJNMCAyLjY3aDMyVjBIMHpcIiAvPlxuICAgICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAyXCIgZD1cIk0wIDEzLjMzaDMydi0yLjY2SDB6XCIgLz5cbiAgICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgM1wiIGQ9XCJNMCAyNGgzMnYtMi42N0gwelwiIC8+XG4gICAgPC9nPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEJvcmRlckFycm93TGVmdCA9ICh7XG4gIGZpbGxDb2xvciwgYmFja2dyb3VuZENvbG9yLCBzdHJva2VDb2xvciwgLi4ucHJvcHNcbn0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cmVjdCB4PVwiNDMuNVwiIHk9XCI0My41XCIgd2lkdGg9XCI0M1wiIGhlaWdodD1cIjQzXCIgcng9XCIzLjVcIiB0cmFuc2Zvcm09XCJyb3RhdGUoLTE4MCA0My41IDQzLjUpXCIgZmlsbD17YmFja2dyb3VuZENvbG9yIHx8ICd3aGl0ZSd9IHN0cm9rZT17c3Ryb2tlQ29sb3IgfHwgJ25vbmUnfSAvPlxuICAgIDxwYXRoIGQ9XCJNMjQgMjhMMjUuNDEgMjYuNTlMMjAuODMgMjJMMjUuNDEgMTcuNDFMMjQgMTZMMTggMjJMMjQgMjhaXCIgZmlsbD17ZmlsbENvbG9yIHx8ICcjMDY1MTdCJ30gLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBCb3JkZXJBcnJvd1JpZ2h0ID0gKHtcbiAgZmlsbENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IsIHN0cm9rZUNvbG9yLCAuLi5wcm9wc1xufSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gdmlld0JveD1cIjAgMCA0NCA0NFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxyZWN0IHg9XCIwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCI0M1wiIGhlaWdodD1cIjQzXCIgcng9XCIzLjVcIiBmaWxsPXtiYWNrZ3JvdW5kQ29sb3IgfHwgJ3doaXRlJ30gc3Ryb2tlPXtzdHJva2VDb2xvciB8fCAnbm9uZSd9IC8+XG4gICAgPHBhdGggZD1cIk0yMCAxNkwxOC41OSAxNy40MUwyMy4xNyAyMkwxOC41OSAyNi41OUwyMCAyOEwyNiAyMkwyMCAxNlpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyMwNjUxN0InfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IENoZXZyb24gPSAoeyBmaWxsQ29sb3IsIC4uLnByb3BzIH0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IGRhdGEtbmFtZT1cIkdyb3VwIDE2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiA+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAxXCIgZD1cIk0wIDMyaDMyVjBIMHpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAyXCIgZD1cIk0xMy4yMyAxNmw3LjA3LTcuMDdhMSAxIDAgMDAwLTEuNDFsLS43LS43MWExIDEgMCAwMC0xLjQyIDBMOS43IDE1LjI5YTEgMSAwIDAwMCAxLjQybDguNDggOC40OGExIDEgMCAwMDEuNDIgMGwuNy0uN2ExIDEgMCAwMDAtMS40MnpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyM5OTknfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IENoZXZyb25VcCA9ICh7IGZpbGxDb2xvciwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gZGF0YS1uYW1lPVwiR3JvdXAgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMVwiIGQ9XCJNMzIgMzJWMEgwdjMyelwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICA8cGF0aCBkYXRhLW5hbWU9XCJGaWxsIDJcIiBkPVwiTTE2IDEzLjIzbDcuMDcgNy4wN2ExIDEgMCAwMDEuNDIgMGwuNy0uN2ExIDEgMCAwMDAtMS40MkwxNi43MSA5LjdhMSAxIDAgMDAtMS40MiAwbC04LjQ4IDguNDhhMSAxIDAgMDAwIDEuNDJsLjcuN2ExIDEgMCAwMDEuNDIgMHpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyMwNjUxN2InfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IENoZXZyb25Eb3duID0gKHsgZmlsbENvbG9yLCAuLi5wcm9wcyB9KSA9PiAoXG4gIDxzdmcgey4uLnByb3BzfSBkYXRhLW5hbWU9XCJHcm91cCAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCI+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAxXCIgZD1cIk0wIDMyaDMyVjBIMHpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAyXCIgZD1cIk0xNiAxOC43N0w4LjkzIDExLjdhMSAxIDAgMDAtMS40MSAwbC0uNzEuN2ExIDEgMCAwMDAgMS40Mmw4LjQ4IDguNDhhMSAxIDAgMDAxLjQyIDBsOC40OC04LjQ4YTEgMSAwIDAwMC0xLjQxbC0uNy0uNzFhMSAxIDAgMDAtMS40MiAwelwiIGZpbGw9e2ZpbGxDb2xvciB8fCAnIzA2NTE3Yid9IC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgQ2hldnJvblJpZ2h0ID0gKHsgZmlsbENvbG9yLCAuLi5wcm9wcyB9KSA9PiAoXG4gIDxzdmcgey4uLnByb3BzfSBkYXRhLW5hbWU9XCJHcm91cCAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCI+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAxXCIgZD1cIk0wIDMyaDMyVjBIMHpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAyXCIgZD1cIk0xOC43NyAxNmwtNy4wNyA3LjA3YTEgMSAwIDAwMCAxLjQybC43LjdhMSAxIDAgMDAxLjQyIDBsOC40OC04LjQ4YTEgMSAwIDAwMC0xLjQybC04LjQ4LTguNDhhMSAxIDAgMDAtMS40MiAwbC0uNy43YTEgMSAwIDAwMCAxLjQyelwiIGZpbGw9e2ZpbGxDb2xvciB8fCAnIzA2NTE3Yid9IC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgTG9jayA9ICh7IGZpbGxDb2xvciwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gdmlld0JveD1cIjAgMCAxOSAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cGF0aCBkPVwiTTE4LjM5LDE2SDMuNjFBLjYxLjYxLDAsMCwxLDMsMTUuMzlWLjYxQS42MS42MSwwLDAsMSwzLjYxLDBIMTguMzlBLjYxLjYxLDAsMCwxLDE5LC42MVYxNS4zOWEuNjEuNjEsMCwwLDEtLjYxLjYxXCIgZmlsbD17ZmlsbENvbG9yIHx8ICcjZGJiNDAwJ30gLz5cbiAgICA8cGF0aCBkPVwiTTE0LjcyLDcuNTFINy4yOGEuODMuODMsMCwwLDAtLjgzLjgzdjQuOTJhMS40MywxLjQzLDAsMCwwLDEuNDMsMS40M2g2LjI0YTEuNDMsMS40MywwLDAsMCwxLjQzLTEuNDNWOC4zNGEuODMuODMsMCwwLDAtLjgzLS44M1ptLTIuNjcsNS4zM2EuMjQuMjQsMCwwLDEtLjE4LjI5SDEwLjE4YS4yNC4yNCwwLDAsMS0uMjQtLjI0LjEzLjEzLDAsMCwxLDAtLjA2bC40MS0xLjczYTEuMTMsMS4xMywwLDEsMSwxLjU3LS4yOSwxLjMzLDEuMzMsMCwwLDEtLjI5LjI5WlwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICA8cGF0aCBkPVwiTTE0LjcxLDYuOTRoLTEuNlY1LjA4YTIuMTYsMi4xNiwwLDAsMC00LjMyLDBWNi45NEg3LjE5VjUuMDhhMy43NiwzLjc2LDAsMSwxLDcuNTIsMFpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgU2VhcmNoID0gKHByb3BzKSA9PiAoXG4gIDxzdmcgey4uLnByb3BzfSB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxnIGRhdGEtbmFtZT1cIkdyb3VwIDNcIj5cbiAgICAgIDxwYXRoIGRhdGEtbmFtZT1cIkNsaXAgMlwiIGQ9XCJNMCAwaDMydjMySDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgPGcgZGF0YS1uYW1lPVwiR3JvdXAgM1wiPlxuICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJzZWFyY2gtaWNvbi1jb2xvclwiIGRhdGEtbmFtZT1cIkZpbGwgMVwiIGQ9XCJNMzAgMzJhMS45OSAxLjk5IDAgMDEtMS40MS0uNTlsLTcuOTMtNy45MkExMi45OSAxMi45OSAwIDAxMCAxM2ExMyAxMyAwIDAxMjIuMi05LjIgMTIuOTcgMTIuOTcgMCAwMTEuMjkgMTYuODZsNy45MiA3LjkzQTIgMiAwIDAxMzAgMzJ6TTEzIDRhOSA5IDAgMTA5IDkgOS4wMSA5LjAxIDAgMDAtOS05elwiIGZpbGw9XCIjOTk5XCIgLz5cbiAgICAgIDwvZz5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgVGltZXMgPSAocHJvcHMpID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IHZpZXdCb3g9XCIwIDAgMzUyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cGF0aCBkPVwiTTI0Mi43MiAyNTZsMTAwLjA3LTEwMC4wN2EzMS40NiAzMS40NiAwIDAwMC00NC40OGwtMjIuMjQtMjIuMjRhMzEuNDYgMzEuNDYgMCAwMC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFhMzEuNDYgMzEuNDYgMCAwMC00NC40OCAwTDkuMjEgMTExLjQ1YTMxLjQ2IDMxLjQ2IDAgMDAwIDQ0LjQ4TDEwOS4yOCAyNTYgOS4yMSAzNTYuMDdhMzEuNDYgMzEuNDYgMCAwMDAgNDQuNDhsMjIuMjQgMjIuMjRhMzEuNDYgMzEuNDYgMCAwMDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YTMxLjQ2IDMxLjQ2IDAgMDA0NC40OCAwbDIyLjI0LTIyLjI0YTMxLjQ2IDMxLjQ2IDAgMDAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCIgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgY29uc3QgU0lURV9LRVlTID0gW1xuICAnY2hhaW4nLFxuICAnY2hhaW5fdGV4dCcsXG4gICdoYXRlbmEnLFxuICAnaGF0ZW5hX3NxdWFyZScsXG4gICdoYXRlbmFfdGV4dCcsXG4gICdmYWNlYm9vaycsXG4gICdmYWNlYm9va190ZXh0JyxcbiAgJ2dxJyxcbiAgJ2lyb25uYScsXG4gICdqYXBhbi1mb3J3YXJkJyxcbiAgJ2xpbmUnLFxuICAnbGluZV90ZXh0JyxcbiAgJ3NhbmtlaScsXG4gICdtZW1iZXInLFxuICAndHdpdHRlcicsXG4gICd0d2l0dGVyX2JsdWUnLFxuICAndHdpdHRlcl90ZXh0JyxcbiAgJ3R3aXR0ZXJfdGV4dF93aGl0ZScsXG4gICd4JyxcbiAgJ3hfYmxhY2snLFxuICAneF90ZXh0JyxcbiAgJ3hfdGV4dF93aGl0ZScsXG4gICd0aHJlYWRzJyxcbiAgJ2JsdWVza3knLFxuICAnbGlua2VkaW4nLFxuICAnbm90ZScsXG4gICd5b3V0dWJlJyxcbiAgJ3dpcmVkJyxcbiAgJ3NhbmtlaXN5bycsXG4gICduYW5pd2EnLFxuICAnc2Vpcm9uJyxcbiAgJ2luc3RhZ3JhbScsXG4gICdpbWdfYmFyJyxcbiAgJ2ltZ19ib3JkZXJhcnJvdy1sZWZ0JyxcbiAgJ2ltZ19ib3JkZXJhcnJvdy1sZWZ0LWJpeicsXG4gICdpbWdfYm9yZGVyYXJyb3ctbGVmdC1kZWFjdGl2ZScsXG4gICdpbWdfYm9yZGVyYXJyb3ctcmlnaHQnLFxuICAnaW1nX2JvcmRlcmFycm93LXJpZ2h0LWJpeicsXG4gICdpbWdfYm9yZGVyYXJyb3ctcmlnaHQtZGVhY3RpdmUnLFxuICAnaW1nX2NoZXZyb24nLFxuICAnaW1nX2NoZXZyb24tZGVhY3RpdmUnLFxuICAnaW1nX2NoZXZyb24tdXAnLFxuICAnaW1nX2NoZXZyb24tZG93bicsXG4gICdpbWdfY2hldnJvbi1yaWdodCcsXG4gICdpbWdfY2hldnJvbi1yaWdodC1kZWFjdGl2ZScsXG4gICdpbWdfbG9jay1nb2xkJyxcbiAgJ2ltZ19sb2NrLXNpbHZlcicsXG4gICdpbWdfc2VhcmNoJyxcbiAgJ2ltZ190aW1lcycsXG4gICdtb250aGx5X3NlaXJvbicsXG5dO1xuXG5cbmNvbnN0IGljb25zID0ge1xuICBiYXJzOiB7XG4gICAgQ29tcG9uZW50OiBCYXJzLFxuICB9LFxuICAnYm9yZGVyLWFycm93LWxlZnQnOiB7XG4gICAgQ29tcG9uZW50OiBCb3JkZXJBcnJvd0xlZnQsXG4gIH0sXG4gICdib3JkZXItYXJyb3ctcmlnaHQnOiB7XG4gICAgQ29tcG9uZW50OiBCb3JkZXJBcnJvd1JpZ2h0LFxuICB9LFxuICBjaGV2cm9uOiB7XG4gICAgQ29tcG9uZW50OiBDaGV2cm9uLFxuICB9LFxuICAnY2hldnJvbi11cCc6IHtcbiAgICBDb21wb25lbnQ6IENoZXZyb25VcCxcbiAgfSxcbiAgJ2NoZXZyb24tZG93bic6IHtcbiAgICBDb21wb25lbnQ6IENoZXZyb25Eb3duLFxuICB9LFxuICAnY2hldnJvbi1yaWdodCc6IHtcbiAgICBDb21wb25lbnQ6IENoZXZyb25SaWdodCxcbiAgfSxcbiAgbG9jazoge1xuICAgIENvbXBvbmVudDogTG9jayxcbiAgfSxcbiAgc2VhcmNoOiB7XG4gICAgQ29tcG9uZW50OiBTZWFyY2gsXG4gIH0sXG4gIHRpbWVzOiB7XG4gICAgQ29tcG9uZW50OiBUaW1lcyxcbiAgfSxcbiAgLi4uU0lURV9LRVlTLnJlZHVjZSgoYWNjLCBjdXIpID0+IChcbiAgICB7IC4uLmFjYywgW2N1cl06IHsgQ29tcG9uZW50OiBJY29uSW1nKGN1cikgfSB9XG4gICksIHt9KSxcbn07XG5cbmNvbnN0IEljb24gPSAoeyBuYW1lLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGlmICh0eXBlb2YgaWNvbnNbbmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgeyBDb21wb25lbnQgfSA9IGljb25zW25hbWVdO1xuICAgIHJldHVybiA8Q29tcG9uZW50IHsuLi5wcm9wc30gLz47XG4gIH1cblxuICByZXR1cm4gbmFtZTtcbn07XG5cbkljb24ucHJvcFR5cGVzID0ge1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG59O1xuXG5CYXJzLnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuQm9yZGVyQXJyb3dMZWZ0LnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0cm9rZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuQm9yZGVyQXJyb3dSaWdodC5wcm9wVHlwZXMgPSB7XG4gIGZpbGxDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgYmFja2dyb3VuZENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHJva2VDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkNoZXZyb24ucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5DaGV2cm9uVXAucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5DaGV2cm9uRG93bi5wcm9wVHlwZXMgPSB7XG4gIGZpbGxDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkNoZXZyb25SaWdodC5wcm9wVHlwZXMgPSB7XG4gIGZpbGxDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkxvY2sucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIl19
309
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfZnVzaW9uQ29udGV4dCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiSWNvbkltZyIsIm5hbWUiLCJwcm9wcyIsIl91c2VGdXNpb25Db250ZXh0IiwidXNlRnVzaW9uQ29udGV4dCIsImNvbnRleHRQYXRoIiwiZGVwbG95bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJzcmMiLCJjb25jYXQiLCJCYXJzIiwiX3JlZiIsImZpbGxDb2xvciIsImFsdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwiZCIsIkJvcmRlckFycm93TGVmdCIsIl9yZWYyIiwiYmFja2dyb3VuZENvbG9yIiwic3Ryb2tlQ29sb3IiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwicngiLCJ0cmFuc2Zvcm0iLCJzdHJva2UiLCJCb3JkZXJBcnJvd1JpZ2h0IiwiX3JlZjMiLCJDaGV2cm9uIiwiX3JlZjQiLCJDaGV2cm9uVXAiLCJfcmVmNSIsIkNoZXZyb25Eb3duIiwiX3JlZjYiLCJDaGV2cm9uUmlnaHQiLCJfcmVmNyIsIkxvY2siLCJfcmVmOCIsIlNlYXJjaCIsIl9yZWY5IiwiY2xhc3NOYW1lIiwiVGltZXMiLCJfcmVmMCIsIlNJVEVfS0VZUyIsImV4cG9ydHMiLCJpY29ucyIsImJhcnMiLCJDb21wb25lbnQiLCJjaGV2cm9uIiwibG9jayIsInNlYXJjaCIsInRpbWVzIiwicmVkdWNlIiwiYWNjIiwiY3VyIiwiSWNvbiIsIl9yZWYxIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsidW5rbm93biJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHVzZUZ1c2lvbkNvbnRleHQgfSBmcm9tICdmdXNpb246Y29udGV4dCc7XG5cbmNvbnN0IEljb25JbWcgPSAobmFtZSkgPT4gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29udGV4dFBhdGgsIGRlcGxveW1lbnQgfSA9IHVzZUZ1c2lvbkNvbnRleHQoKTtcbiAgcmV0dXJuIDxpbWcgey4uLnByb3BzfSBzcmM9e2RlcGxveW1lbnQoYCR7Y29udGV4dFBhdGh9L3Jlc291cmNlcy9pY29ucy8ke25hbWV9LnN2Z2ApfSAvPjtcbn07XG5cbmNvbnN0IEJhcnMgPSAoeyBmaWxsQ29sb3IsIGFsdCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gZGF0YS1uYW1lPVwiR3JvdXAgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgIHthbHQgJiYgPHRpdGxlPnthbHR9PC90aXRsZT59XG4gICAgPGcgZmlsbD17ZmlsbENvbG9yIHx8ICcjOTk5J30+XG4gICAgICA8cGF0aCBkYXRhLW5hbWU9XCJGaWxsIDFcIiBkPVwiTTAgMi42N2gzMlYwSDB6XCIgLz5cbiAgICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMlwiIGQ9XCJNMCAxMy4zM2gzMnYtMi42NkgwelwiIC8+XG4gICAgICA8cGF0aCBkYXRhLW5hbWU9XCJGaWxsIDNcIiBkPVwiTTAgMjRoMzJ2LTIuNjdIMHpcIiAvPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBCb3JkZXJBcnJvd0xlZnQgPSAoe1xuICBmaWxsQ29sb3IsIGJhY2tncm91bmRDb2xvciwgc3Ryb2tlQ29sb3IsIGFsdCwgLi4ucHJvcHNcbn0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICB7YWx0ICYmIDx0aXRsZT57YWx0fTwvdGl0bGU+fVxuICAgIDxyZWN0IHg9XCI0My41XCIgeT1cIjQzLjVcIiB3aWR0aD1cIjQzXCIgaGVpZ2h0PVwiNDNcIiByeD1cIjMuNVwiIHRyYW5zZm9ybT1cInJvdGF0ZSgtMTgwIDQzLjUgNDMuNSlcIiBmaWxsPXtiYWNrZ3JvdW5kQ29sb3IgfHwgJ3doaXRlJ30gc3Ryb2tlPXtzdHJva2VDb2xvciB8fCAnbm9uZSd9IC8+XG4gICAgPHBhdGggZD1cIk0yNCAyOEwyNS40MSAyNi41OUwyMC44MyAyMkwyNS40MSAxNy40MUwyNCAxNkwxOCAyMkwyNCAyOFpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyMwNjUxN0InfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEJvcmRlckFycm93UmlnaHQgPSAoe1xuICBmaWxsQ29sb3IsIGJhY2tncm91bmRDb2xvciwgc3Ryb2tlQ29sb3IsIGFsdCwgLi4ucHJvcHNcbn0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICB7YWx0ICYmIDx0aXRsZT57YWx0fTwvdGl0bGU+fVxuICAgIDxyZWN0IHg9XCIwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCI0M1wiIGhlaWdodD1cIjQzXCIgcng9XCIzLjVcIiBmaWxsPXtiYWNrZ3JvdW5kQ29sb3IgfHwgJ3doaXRlJ30gc3Ryb2tlPXtzdHJva2VDb2xvciB8fCAnbm9uZSd9IC8+XG4gICAgPHBhdGggZD1cIk0yMCAxNkwxOC41OSAxNy40MUwyMy4xNyAyMkwxOC41OSAyNi41OUwyMCAyOEwyNiAyMkwyMCAxNlpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyMwNjUxN0InfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IENoZXZyb24gPSAoeyBmaWxsQ29sb3IsIGFsdCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gZGF0YS1uYW1lPVwiR3JvdXAgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiID5cbiAgICB7YWx0ICYmIDx0aXRsZT57YWx0fTwvdGl0bGU+fVxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMVwiIGQ9XCJNMCAzMmgzMlYwSDB6XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMlwiIGQ9XCJNMTMuMjMgMTZsNy4wNy03LjA3YTEgMSAwIDAwMC0xLjQxbC0uNy0uNzFhMSAxIDAgMDAtMS40MiAwTDkuNyAxNS4yOWExIDEgMCAwMDAgMS40Mmw4LjQ4IDguNDhhMSAxIDAgMDAxLjQyIDBsLjctLjdhMSAxIDAgMDAwLTEuNDJ6XCIgZmlsbD17ZmlsbENvbG9yIHx8ICcjOTk5J30gLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBDaGV2cm9uVXAgPSAoeyBmaWxsQ29sb3IsIGFsdCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gZGF0YS1uYW1lPVwiR3JvdXAgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgIHthbHQgJiYgPHRpdGxlPnthbHR9PC90aXRsZT59XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAxXCIgZD1cIk0zMiAzMlYwSDB2MzJ6XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMlwiIGQ9XCJNMTYgMTMuMjNsNy4wNyA3LjA3YTEgMSAwIDAwMS40MiAwbC43LS43YTEgMSAwIDAwMC0xLjQyTDE2LjcxIDkuN2ExIDEgMCAwMC0xLjQyIDBsLTguNDggOC40OGExIDEgMCAwMDAgMS40MmwuNy43YTEgMSAwIDAwMS40MiAwelwiIGZpbGw9e2ZpbGxDb2xvciB8fCAnIzA2NTE3Yid9IC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgQ2hldnJvbkRvd24gPSAoeyBmaWxsQ29sb3IsIGFsdCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gZGF0YS1uYW1lPVwiR3JvdXAgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgIHthbHQgJiYgPHRpdGxlPnthbHR9PC90aXRsZT59XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAxXCIgZD1cIk0wIDMyaDMyVjBIMHpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgPHBhdGggZGF0YS1uYW1lPVwiRmlsbCAyXCIgZD1cIk0xNiAxOC43N0w4LjkzIDExLjdhMSAxIDAgMDAtMS40MSAwbC0uNzEuN2ExIDEgMCAwMDAgMS40Mmw4LjQ4IDguNDhhMSAxIDAgMDAxLjQyIDBsOC40OC04LjQ4YTEgMSAwIDAwMC0xLjQxbC0uNy0uNzFhMSAxIDAgMDAtMS40MiAwelwiIGZpbGw9e2ZpbGxDb2xvciB8fCAnIzA2NTE3Yid9IC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgQ2hldnJvblJpZ2h0ID0gKHsgZmlsbENvbG9yLCBhbHQsIC4uLnByb3BzIH0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IGRhdGEtbmFtZT1cIkdyb3VwIDE2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIj5cbiAgICB7YWx0ICYmIDx0aXRsZT57YWx0fTwvdGl0bGU+fVxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMVwiIGQ9XCJNMCAzMmgzMlYwSDB6XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgIDxwYXRoIGRhdGEtbmFtZT1cIkZpbGwgMlwiIGQ9XCJNMTguNzcgMTZsLTcuMDcgNy4wN2ExIDEgMCAwMDAgMS40MmwuNy43YTEgMSAwIDAwMS40MiAwbDguNDgtOC40OGExIDEgMCAwMDAtMS40MmwtOC40OC04LjQ4YTEgMSAwIDAwLTEuNDIgMGwtLjcuN2ExIDEgMCAwMDAgMS40MnpcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyMwNjUxN2InfSAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IExvY2sgPSAoeyBmaWxsQ29sb3IsIGFsdCwgLi4ucHJvcHMgfSkgPT4gKFxuICA8c3ZnIHsuLi5wcm9wc30gdmlld0JveD1cIjAgMCAxOSAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICB7YWx0ICYmIDx0aXRsZT57YWx0fTwvdGl0bGU+fVxuICAgIDxwYXRoIGQ9XCJNMTguMzksMTZIMy42MUEuNjEuNjEsMCwwLDEsMywxNS4zOVYuNjFBLjYxLjYxLDAsMCwxLDMuNjEsMEgxOC4zOUEuNjEuNjEsMCwwLDEsMTksLjYxVjE1LjM5YS42MS42MSwwLDAsMS0uNjEuNjFcIiBmaWxsPXtmaWxsQ29sb3IgfHwgJyNkYmI0MDAnfSAvPlxuICAgIDxwYXRoIGQ9XCJNMTQuNzIsNy41MUg3LjI4YS44My44MywwLDAsMC0uODMuODN2NC45MmExLjQzLDEuNDMsMCwwLDAsMS40MywxLjQzaDYuMjRhMS40MywxLjQzLDAsMCwwLDEuNDMtMS40M1Y4LjM0YS44My44MywwLDAsMC0uODMtLjgzWm0tMi42Nyw1LjMzYS4yNC4yNCwwLDAsMS0uMTguMjlIMTAuMThhLjI0LjI0LDAsMCwxLS4yNC0uMjQuMTMuMTMsMCwwLDEsMC0uMDZsLjQxLTEuNzNhMS4xMywxLjEzLDAsMSwxLDEuNTctLjI5LDEuMzMsMS4zMywwLDAsMS0uMjkuMjlaXCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgIDxwYXRoIGQ9XCJNMTQuNzEsNi45NGgtMS42VjUuMDhhMi4xNiwyLjE2LDAsMCwwLTQuMzIsMFY2Ljk0SDcuMTlWNS4wOGEzLjc2LDMuNzYsMCwxLDEsNy41MiwwWlwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBhbHQsIC4uLnByb3BzIH0pID0+IChcbiAgPHN2ZyB7Li4ucHJvcHN9IHZpZXdCb3g9XCIwIDAgMzIgMzJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAge2FsdCAmJiA8dGl0bGU+e2FsdH08L3RpdGxlPn1cbiAgICA8ZyBkYXRhLW5hbWU9XCJHcm91cCAzXCI+XG4gICAgICA8cGF0aCBkYXRhLW5hbWU9XCJDbGlwIDJcIiBkPVwiTTAgMGgzMnYzMkgwelwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIDxnIGRhdGEtbmFtZT1cIkdyb3VwIDNcIj5cbiAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwic2VhcmNoLWljb24tY29sb3JcIiBkYXRhLW5hbWU9XCJGaWxsIDFcIiBkPVwiTTMwIDMyYTEuOTkgMS45OSAwIDAxLTEuNDEtLjU5bC03LjkzLTcuOTJBMTIuOTkgMTIuOTkgMCAwMTAgMTNhMTMgMTMgMCAwMTIyLjItOS4yIDEyLjk3IDEyLjk3IDAgMDExLjI5IDE2Ljg2bDcuOTIgNy45M0EyIDIgMCAwMTMwIDMyek0xMyA0YTkgOSAwIDEwOSA5IDkuMDEgOS4wMSAwIDAwLTktOXpcIiBmaWxsPVwiIzk5OVwiIC8+XG4gICAgICA8L2c+XG4gICAgPC9nPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IFRpbWVzID0gKHsgYWx0LCAuLi5wcm9wcyB9KSA9PiAoXG4gIDxzdmcgey4uLnByb3BzfSB2aWV3Qm94PVwiMCAwIDM1MiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAge2FsdCAmJiA8dGl0bGU+e2FsdH08L3RpdGxlPn1cbiAgICA8cGF0aCBkPVwiTTI0Mi43MiAyNTZsMTAwLjA3LTEwMC4wN2EzMS40NiAzMS40NiAwIDAwMC00NC40OGwtMjIuMjQtMjIuMjRhMzEuNDYgMzEuNDYgMCAwMC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFhMzEuNDYgMzEuNDYgMCAwMC00NC40OCAwTDkuMjEgMTExLjQ1YTMxLjQ2IDMxLjQ2IDAgMDAwIDQ0LjQ4TDEwOS4yOCAyNTYgOS4yMSAzNTYuMDdhMzEuNDYgMzEuNDYgMCAwMDAgNDQuNDhsMjIuMjQgMjIuMjRhMzEuNDYgMzEuNDYgMCAwMDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YTMxLjQ2IDMxLjQ2IDAgMDA0NC40OCAwbDIyLjI0LTIyLjI0YTMxLjQ2IDMxLjQ2IDAgMDAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCIgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgY29uc3QgU0lURV9LRVlTID0gW1xuICAnY2hhaW4nLFxuICAnY2hhaW5fdGV4dCcsXG4gICdoYXRlbmEnLFxuICAnaGF0ZW5hX3NxdWFyZScsXG4gICdoYXRlbmFfdGV4dCcsXG4gICdmYWNlYm9vaycsXG4gICdmYWNlYm9va190ZXh0JyxcbiAgJ2dxJyxcbiAgJ2lyb25uYScsXG4gICdqYXBhbi1mb3J3YXJkJyxcbiAgJ2xpbmUnLFxuICAnbGluZV90ZXh0JyxcbiAgJ3NhbmtlaScsXG4gICdtZW1iZXInLFxuICAndHdpdHRlcicsXG4gICd0d2l0dGVyX2JsdWUnLFxuICAndHdpdHRlcl90ZXh0JyxcbiAgJ3R3aXR0ZXJfdGV4dF93aGl0ZScsXG4gICd4JyxcbiAgJ3hfYmxhY2snLFxuICAneF90ZXh0JyxcbiAgJ3hfdGV4dF93aGl0ZScsXG4gICd0aHJlYWRzJyxcbiAgJ2JsdWVza3knLFxuICAnbGlua2VkaW4nLFxuICAnbm90ZScsXG4gICd5b3V0dWJlJyxcbiAgJ3dpcmVkJyxcbiAgJ3NhbmtlaXN5bycsXG4gICduYW5pd2EnLFxuICAnc2Vpcm9uJyxcbiAgJ2luc3RhZ3JhbScsXG4gICdpbWdfYmFyJyxcbiAgJ2ltZ19ib3JkZXJhcnJvdy1sZWZ0JyxcbiAgJ2ltZ19ib3JkZXJhcnJvdy1sZWZ0LWJpeicsXG4gICdpbWdfYm9yZGVyYXJyb3ctbGVmdC1kZWFjdGl2ZScsXG4gICdpbWdfYm9yZGVyYXJyb3ctcmlnaHQnLFxuICAnaW1nX2JvcmRlcmFycm93LXJpZ2h0LWJpeicsXG4gICdpbWdfYm9yZGVyYXJyb3ctcmlnaHQtZGVhY3RpdmUnLFxuICAnaW1nX2NoZXZyb24nLFxuICAnaW1nX2NoZXZyb24tZGVhY3RpdmUnLFxuICAnaW1nX2NoZXZyb24tdXAnLFxuICAnaW1nX2NoZXZyb24tZG93bicsXG4gICdpbWdfY2hldnJvbi1yaWdodCcsXG4gICdpbWdfY2hldnJvbi1yaWdodC1kZWFjdGl2ZScsXG4gICdpbWdfbG9jay1nb2xkJyxcbiAgJ2ltZ19sb2NrLXNpbHZlcicsXG4gICdpbWdfc2VhcmNoJyxcbiAgJ2ltZ190aW1lcycsXG4gICdtb250aGx5X3NlaXJvbicsXG5dO1xuXG5jb25zdCBpY29ucyA9IHtcbiAgYmFyczoge1xuICAgIENvbXBvbmVudDogQmFycyxcbiAgfSxcbiAgJ2JvcmRlci1hcnJvdy1sZWZ0Jzoge1xuICAgIENvbXBvbmVudDogQm9yZGVyQXJyb3dMZWZ0LFxuICB9LFxuICAnYm9yZGVyLWFycm93LXJpZ2h0Jzoge1xuICAgIENvbXBvbmVudDogQm9yZGVyQXJyb3dSaWdodCxcbiAgfSxcbiAgY2hldnJvbjoge1xuICAgIENvbXBvbmVudDogQ2hldnJvbixcbiAgfSxcbiAgJ2NoZXZyb24tdXAnOiB7XG4gICAgQ29tcG9uZW50OiBDaGV2cm9uVXAsXG4gIH0sXG4gICdjaGV2cm9uLWRvd24nOiB7XG4gICAgQ29tcG9uZW50OiBDaGV2cm9uRG93bixcbiAgfSxcbiAgJ2NoZXZyb24tcmlnaHQnOiB7XG4gICAgQ29tcG9uZW50OiBDaGV2cm9uUmlnaHQsXG4gIH0sXG4gIGxvY2s6IHtcbiAgICBDb21wb25lbnQ6IExvY2ssXG4gIH0sXG4gIHNlYXJjaDoge1xuICAgIENvbXBvbmVudDogU2VhcmNoLFxuICB9LFxuICB0aW1lczoge1xuICAgIENvbXBvbmVudDogVGltZXMsXG4gIH0sXG4gIC4uLlNJVEVfS0VZUy5yZWR1Y2UoKGFjYywgY3VyKSA9PiAoXG4gICAgeyAuLi5hY2MsIFtjdXJdOiB7IENvbXBvbmVudDogSWNvbkltZyhjdXIpIH0gfVxuICApLCB7fSksXG59O1xuXG5jb25zdCBJY29uID0gKHsgbmFtZSwgLi4ucHJvcHMgfSkgPT4ge1xuICBpZiAodHlwZW9mIGljb25zW25hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHsgQ29tcG9uZW50IH0gPSBpY29uc1tuYW1lXTtcbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+O1xuICB9XG5cbiAgcmV0dXJuIG5hbWU7XG59O1xuXG5JY29uLnByb3BUeXBlcyA9IHtcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxufTtcblxuQmFycy5wcm9wVHlwZXMgPSB7XG4gIGZpbGxDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWx0OiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuQm9yZGVyQXJyb3dMZWZ0LnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0cm9rZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Cb3JkZXJBcnJvd1JpZ2h0LnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0cm9rZUNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5DaGV2cm9uLnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5DaGV2cm9uVXAucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsdDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkNoZXZyb25Eb3duLnByb3BUeXBlcyA9IHtcbiAgZmlsbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5DaGV2cm9uUmlnaHQucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsdDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkxvY2sucHJvcFR5cGVzID0ge1xuICBmaWxsQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsdDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIGFsdDogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cblRpbWVzLnByb3BUeXBlcyA9IHtcbiAgYWx0OiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQUFrRCxTQUFBRyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sankei-arc-shared-components/element_icon",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "repository": {
@@ -8,7 +8,6 @@
8
8
  "url": "https://github.com/wapopartners/sankei-shimbun-shared-components/packages/element_icon"
9
9
  },
10
10
  "peerDependencies": {
11
- "enzyme": "^3.7.0",
12
11
  "prop-types": ">=15.6.2",
13
12
  "react": ">=16"
14
13
  },
package/src/index.js CHANGED
@@ -7,8 +7,9 @@ const IconImg = (name) => (props) => {
7
7
  return <img {...props} src={deployment(`${contextPath}/resources/icons/${name}.svg`)} />;
8
8
  };
9
9
 
10
- const Bars = ({ fillColor, ...props }) => (
10
+ const Bars = ({ fillColor, alt, ...props }) => (
11
11
  <svg {...props} data-name="Group 16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
12
+ {alt && <title>{alt}</title>}
12
13
  <g fill={fillColor || '#999'}>
13
14
  <path data-name="Fill 1" d="M0 2.67h32V0H0z" />
14
15
  <path data-name="Fill 2" d="M0 13.33h32v-2.66H0z" />
@@ -18,61 +19,69 @@ const Bars = ({ fillColor, ...props }) => (
18
19
  );
19
20
 
20
21
  const BorderArrowLeft = ({
21
- fillColor, backgroundColor, strokeColor, ...props
22
+ fillColor, backgroundColor, strokeColor, alt, ...props
22
23
  }) => (
23
24
  <svg {...props} viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
25
+ {alt && <title>{alt}</title>}
24
26
  <rect x="43.5" y="43.5" width="43" height="43" rx="3.5" transform="rotate(-180 43.5 43.5)" fill={backgroundColor || 'white'} stroke={strokeColor || 'none'} />
25
27
  <path d="M24 28L25.41 26.59L20.83 22L25.41 17.41L24 16L18 22L24 28Z" fill={fillColor || '#06517B'} />
26
28
  </svg>
27
29
  );
28
30
 
29
31
  const BorderArrowRight = ({
30
- fillColor, backgroundColor, strokeColor, ...props
32
+ fillColor, backgroundColor, strokeColor, alt, ...props
31
33
  }) => (
32
34
  <svg {...props} viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
35
+ {alt && <title>{alt}</title>}
33
36
  <rect x="0.5" y="0.5" width="43" height="43" rx="3.5" fill={backgroundColor || 'white'} stroke={strokeColor || 'none'} />
34
37
  <path d="M20 16L18.59 17.41L23.17 22L18.59 26.59L20 28L26 22L20 16Z" fill={fillColor || '#06517B'} />
35
38
  </svg>
36
39
  );
37
40
 
38
- const Chevron = ({ fillColor, ...props }) => (
41
+ const Chevron = ({ fillColor, alt, ...props }) => (
39
42
  <svg {...props} data-name="Group 16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" >
43
+ {alt && <title>{alt}</title>}
40
44
  <path data-name="Fill 1" d="M0 32h32V0H0z" fill="#fff" />
41
45
  <path data-name="Fill 2" d="M13.23 16l7.07-7.07a1 1 0 000-1.41l-.7-.71a1 1 0 00-1.42 0L9.7 15.29a1 1 0 000 1.42l8.48 8.48a1 1 0 001.42 0l.7-.7a1 1 0 000-1.42z" fill={fillColor || '#999'} />
42
46
  </svg>
43
47
  );
44
48
 
45
- const ChevronUp = ({ fillColor, ...props }) => (
49
+ const ChevronUp = ({ fillColor, alt, ...props }) => (
46
50
  <svg {...props} data-name="Group 16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
51
+ {alt && <title>{alt}</title>}
47
52
  <path data-name="Fill 1" d="M32 32V0H0v32z" fill="#fff" />
48
53
  <path data-name="Fill 2" d="M16 13.23l7.07 7.07a1 1 0 001.42 0l.7-.7a1 1 0 000-1.42L16.71 9.7a1 1 0 00-1.42 0l-8.48 8.48a1 1 0 000 1.42l.7.7a1 1 0 001.42 0z" fill={fillColor || '#06517b'} />
49
54
  </svg>
50
55
  );
51
56
 
52
- const ChevronDown = ({ fillColor, ...props }) => (
57
+ const ChevronDown = ({ fillColor, alt, ...props }) => (
53
58
  <svg {...props} data-name="Group 16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
59
+ {alt && <title>{alt}</title>}
54
60
  <path data-name="Fill 1" d="M0 32h32V0H0z" fill="#fff" />
55
61
  <path data-name="Fill 2" d="M16 18.77L8.93 11.7a1 1 0 00-1.41 0l-.71.7a1 1 0 000 1.42l8.48 8.48a1 1 0 001.42 0l8.48-8.48a1 1 0 000-1.41l-.7-.71a1 1 0 00-1.42 0z" fill={fillColor || '#06517b'} />
56
62
  </svg>
57
63
  );
58
64
 
59
- const ChevronRight = ({ fillColor, ...props }) => (
65
+ const ChevronRight = ({ fillColor, alt, ...props }) => (
60
66
  <svg {...props} data-name="Group 16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
67
+ {alt && <title>{alt}</title>}
61
68
  <path data-name="Fill 1" d="M0 32h32V0H0z" fill="#fff" />
62
69
  <path data-name="Fill 2" d="M18.77 16l-7.07 7.07a1 1 0 000 1.42l.7.7a1 1 0 001.42 0l8.48-8.48a1 1 0 000-1.42l-8.48-8.48a1 1 0 00-1.42 0l-.7.7a1 1 0 000 1.42z" fill={fillColor || '#06517b'} />
63
70
  </svg>
64
71
  );
65
72
 
66
- const Lock = ({ fillColor, ...props }) => (
73
+ const Lock = ({ fillColor, alt, ...props }) => (
67
74
  <svg {...props} viewBox="0 0 19 16" xmlns="http://www.w3.org/2000/svg">
75
+ {alt && <title>{alt}</title>}
68
76
  <path d="M18.39,16H3.61A.61.61,0,0,1,3,15.39V.61A.61.61,0,0,1,3.61,0H18.39A.61.61,0,0,1,19,.61V15.39a.61.61,0,0,1-.61.61" fill={fillColor || '#dbb400'} />
69
77
  <path d="M14.72,7.51H7.28a.83.83,0,0,0-.83.83v4.92a1.43,1.43,0,0,0,1.43,1.43h6.24a1.43,1.43,0,0,0,1.43-1.43V8.34a.83.83,0,0,0-.83-.83Zm-2.67,5.33a.24.24,0,0,1-.18.29H10.18a.24.24,0,0,1-.24-.24.13.13,0,0,1,0-.06l.41-1.73a1.13,1.13,0,1,1,1.57-.29,1.33,1.33,0,0,1-.29.29Z" fill="#fff" />
70
78
  <path d="M14.71,6.94h-1.6V5.08a2.16,2.16,0,0,0-4.32,0V6.94H7.19V5.08a3.76,3.76,0,1,1,7.52,0Z" fill="#fff" />
71
79
  </svg>
72
80
  );
73
81
 
74
- const Search = (props) => (
82
+ const Search = ({ alt, ...props }) => (
75
83
  <svg {...props} viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
84
+ {alt && <title>{alt}</title>}
76
85
  <g data-name="Group 3">
77
86
  <path data-name="Clip 2" d="M0 0h32v32H0z" fill="none" />
78
87
  <g data-name="Group 3">
@@ -82,8 +91,9 @@ const Search = (props) => (
82
91
  </svg>
83
92
  );
84
93
 
85
- const Times = (props) => (
94
+ const Times = ({ alt, ...props }) => (
86
95
  <svg {...props} viewBox="0 0 352 512" xmlns="http://www.w3.org/2000/svg">
96
+ {alt && <title>{alt}</title>}
87
97
  <path d="M242.72 256l100.07-100.07a31.46 31.46 0 000-44.48l-22.24-22.24a31.46 31.46 0 00-44.48 0L176 189.28 75.93 89.21a31.46 31.46 0 00-44.48 0L9.21 111.45a31.46 31.46 0 000 44.48L109.28 256 9.21 356.07a31.46 31.46 0 000 44.48l22.24 22.24a31.46 31.46 0 0044.48 0L176 322.72l100.07 100.07a31.46 31.46 0 0044.48 0l22.24-22.24a31.46 31.46 0 000-44.48L242.72 256z" />
88
98
  </svg>
89
99
  );
@@ -141,7 +151,6 @@ export const SITE_KEYS = [
141
151
  'monthly_seiron',
142
152
  ];
143
153
 
144
-
145
154
  const icons = {
146
155
  bars: {
147
156
  Component: Bars,
@@ -193,38 +202,54 @@ Icon.propTypes = {
193
202
 
194
203
  Bars.propTypes = {
195
204
  fillColor: PropTypes.string,
205
+ alt: PropTypes.string,
196
206
  };
197
207
 
198
208
  BorderArrowLeft.propTypes = {
199
209
  fillColor: PropTypes.string,
200
210
  backgroundColor: PropTypes.string,
201
211
  strokeColor: PropTypes.string,
212
+ alt: PropTypes.string,
202
213
  };
203
214
 
204
215
  BorderArrowRight.propTypes = {
205
216
  fillColor: PropTypes.string,
206
217
  backgroundColor: PropTypes.string,
207
218
  strokeColor: PropTypes.string,
219
+ alt: PropTypes.string,
208
220
  };
209
221
 
210
222
  Chevron.propTypes = {
211
223
  fillColor: PropTypes.string,
224
+ alt: PropTypes.string,
212
225
  };
213
226
 
214
227
  ChevronUp.propTypes = {
215
228
  fillColor: PropTypes.string,
229
+ alt: PropTypes.string,
216
230
  };
217
231
 
218
232
  ChevronDown.propTypes = {
219
233
  fillColor: PropTypes.string,
234
+ alt: PropTypes.string,
220
235
  };
221
236
 
222
237
  ChevronRight.propTypes = {
223
238
  fillColor: PropTypes.string,
239
+ alt: PropTypes.string,
224
240
  };
225
241
 
226
242
  Lock.propTypes = {
227
243
  fillColor: PropTypes.string,
244
+ alt: PropTypes.string,
245
+ };
246
+
247
+ Search.propTypes = {
248
+ alt: PropTypes.string,
249
+ };
250
+
251
+ Times.propTypes = {
252
+ alt: PropTypes.string,
228
253
  };
229
254
 
230
255
  export default Icon;
package/src/index.test.js CHANGED
@@ -1,50 +1,73 @@
1
-
2
1
  import React from 'react';
3
- import { mount } from 'enzyme';
2
+ import { render, screen } from '@testing-library/react';
4
3
  import Icon, { SITE_KEYS } from './index';
5
4
 
6
5
  describe('<Icon />', () => {
7
6
  it('should render bars', () => {
8
- const component = mount(<Icon name="bars" height="34px" width="34px" />);
9
- expect(component).toBeDefined();
7
+ const { container } = render(<Icon name="bars" height="34px" width="34px" alt="bars" />);
8
+ const titleElement = container.querySelector('title');
9
+ expect(titleElement).toBeInTheDocument();
10
+ expect(titleElement).toHaveTextContent('bars');
10
11
  });
11
12
  it('should render border-arrow-left', () => {
12
- const component = mount(<Icon name="border-arrow-left" height="34px" width="34px" />);
13
- expect(component).toBeDefined();
13
+ const { container } = render(<Icon name="border-arrow-left" height="34px" width="34px" alt="border-arrow-left" />);
14
+ const titleElement = container.querySelector('title');
15
+ expect(titleElement).toBeInTheDocument();
16
+ expect(titleElement).toHaveTextContent('border-arrow-left');
14
17
  });
15
18
  it('should render border-arrow-right', () => {
16
- const component = mount(<Icon name="border-arrow-right" height="34px" width="34px" />);
17
- expect(component).toBeDefined();
19
+ const { container } = render(<Icon name="border-arrow-right" height="34px" width="34px" alt="border-arrow-right" />);
20
+ const titleElement = container.querySelector('title');
21
+ expect(titleElement).toBeInTheDocument();
22
+ expect(titleElement).toHaveTextContent('border-arrow-right');
18
23
  });
19
24
  it('should render chevron', () => {
20
- const component = mount(<Icon name="chevron" height="34px" width="34px" />);
21
- expect(component).toBeDefined();
25
+ const { container } = render(<Icon name="chevron" height="34px" width="34px" alt="chevron" />);
26
+ const titleElement = container.querySelector('title');
27
+ expect(titleElement).toBeInTheDocument();
28
+ expect(titleElement).toHaveTextContent('chevron');
22
29
  });
23
30
  it('should render chevron-up', () => {
24
- const component = mount(<Icon name="chevron-up" height="34px" width="34px" />);
25
- expect(component).toBeDefined();
31
+ const { container } = render(<Icon name="chevron-up" height="34px" width="34px" alt="chevron-up" />);
32
+ const titleElement = container.querySelector('title');
33
+ expect(titleElement).toBeInTheDocument();
34
+ expect(titleElement).toHaveTextContent('chevron-up');
26
35
  });
27
36
  it('should render chevron-down', () => {
28
- const component = mount(<Icon name="chevron-down" height="34px" width="34px" />);
29
- expect(component).toBeDefined();
37
+ const { container } = render(<Icon name="chevron-down" height="34px" width="34px" alt="chevron-down" />);
38
+ const titleElement = container.querySelector('title');
39
+ expect(titleElement).toBeInTheDocument();
40
+ expect(titleElement).toHaveTextContent('chevron-down');
30
41
  });
31
42
  it('should render chevron-right', () => {
32
- const component = mount(<Icon name="chevron-right" height="34px" width="34px" />);
33
- expect(component).toBeDefined();
43
+ const { container } = render(<Icon name="chevron-right" height="34px" width="34px" alt="chevron-right" />);
44
+ const titleElement = container.querySelector('title');
45
+ expect(titleElement).toBeInTheDocument();
46
+ expect(titleElement).toHaveTextContent('chevron-right');
34
47
  });
35
48
 
36
49
  it('should render lock', () => {
37
- const component = mount(<Icon name="lock" height="34px" width="34px" />);
38
- expect(component).toBeDefined();
50
+ const { container } = render(<Icon name="lock" height="34px" width="34px" alt="lock" />);
51
+ const titleElement = container.querySelector('title');
52
+ expect(titleElement).toBeInTheDocument();
53
+ expect(titleElement).toHaveTextContent('lock');
39
54
  });
40
55
 
41
56
  it('should render search', () => {
42
- const component = mount(<Icon name="search" height="34px" width="34px" />);
43
- expect(component).toBeDefined();
57
+ const { container } = render(<Icon name="search" height="34px" width="34px" alt="search" />);
58
+ const titleElement = container.querySelector('title');
59
+ expect(titleElement).toBeInTheDocument();
60
+ expect(titleElement).toHaveTextContent('search');
44
61
  });
45
62
  it('should render times', () => {
46
- const component = mount(<Icon name="times" height="34px" width="34px" />);
47
- expect(component).toBeDefined();
63
+ const { container } = render(<Icon name="times" height="34px" width="34px" alt="times" />);
64
+ const titleElement = container.querySelector('title');
65
+ expect(titleElement).toBeInTheDocument();
66
+ expect(titleElement).toHaveTextContent('times');
67
+ });
68
+ it('should not render title element if alt is not exist', () => {
69
+ const { container } = render(<Icon name="bars" height="34px" width="34px" />);
70
+ expect(container.querySelector('title')).not.toBeInTheDocument();
48
71
  });
49
72
 
50
73
  it('has valid SITE_KEYS', () => {
@@ -112,18 +135,17 @@ describe('<Icon />', () => {
112
135
  height: '34px',
113
136
  className: 'some-class',
114
137
  };
115
- const component = mount(<Icon {...props} />);
116
- expect(component).toBeDefined();
117
- const img = component.find('img');
118
- expect(img.prop('src')).toMatch(new RegExp(`/resources/icons/${key}.svg`));
119
- expect(img.prop('width')).toEqual(props.width);
120
- expect(img.prop('height')).toEqual(props.height);
121
- expect(img.prop('className')).toMatch(new RegExp(props.className));
138
+ render(<Icon {...props} />);
139
+ const img = screen.getByRole('img');
140
+ expect(img).toHaveAttribute('src', expect.stringMatching(new RegExp(`/resources/icons/${key}.svg`)));
141
+ expect(img).toHaveAttribute('width', props.width);
142
+ expect(img).toHaveAttribute('height', props.height);
143
+ expect(img).toHaveClass(props.className);
122
144
  });
123
145
  });
124
146
 
125
147
  it('there is no icon', () => {
126
- const component = mount(<Icon name="noicon" height="34px" width="34px" />);
127
- expect(component.text()).toEqual('noicon');
148
+ render(<Icon name="noicon" height="34px" width="34px" />);
149
+ expect(screen.getByText('noicon')).toBeInTheDocument();
128
150
  });
129
151
  });