verdaccio 5.1.2 → 5.1.6

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/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [5.1.6](https://github.com/verdaccio/verdaccio/compare/v5.1.5...v5.1.6) (2021-09-21)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * update dependencies security update ([#2453](https://github.com/verdaccio/verdaccio/issues/2453)) ([9d7ddd9](https://github.com/verdaccio/verdaccio/commit/9d7ddd9ecd4b69a0d0cb63eb72489ec7118c9d4f))
11
+
12
+ ### [5.1.5](https://github.com/verdaccio/verdaccio/compare/v5.1.4...v5.1.5) (2021-09-17)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * add finish language to ui ([#2443](https://github.com/verdaccio/verdaccio/issues/2443)) ([360bec9](https://github.com/verdaccio/verdaccio/commit/360bec9b5315c0bc1c93ca36e1a1d8f808f0746c))
18
+
19
+ ### [5.1.4](https://github.com/verdaccio/verdaccio/compare/v5.1.3...v5.1.4) (2021-09-07)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * npm7 audit fix and bulk endpoint ([#2426](https://github.com/verdaccio/verdaccio/issues/2426)) ([2c59091](https://github.com/verdaccio/verdaccio/commit/2c590917b10672da102b2352f6ff9c78f073763a))
25
+
26
+ ### [5.1.3](https://github.com/verdaccio/verdaccio/compare/v5.1.2...v5.1.3) (2021-08-20)
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * plugin allow_publish (pkg) got a undefined version ([#2315](https://github.com/verdaccio/verdaccio/issues/2315)) ([ecfc4c3](https://github.com/verdaccio/verdaccio/commit/ecfc4c33048a6f2cb1cef179fe9b0a11da389d26))
32
+ * update docker and core dependencies ([#2375](https://github.com/verdaccio/verdaccio/issues/2375)) ([2e995f5](https://github.com/verdaccio/verdaccio/commit/2e995f5981c1a5eca6f43b14e52f06564acf6d8e))
33
+ * update docker base image to v14.17.5 ([d63dcc0](https://github.com/verdaccio/verdaccio/commit/d63dcc02facddd8b6da2a32da067a6acf239e25d))
34
+
5
35
  ### [5.1.2](https://github.com/verdaccio/verdaccio/compare/v5.1.1...v5.1.2) (2021-07-14)
6
36
 
7
37
 
package/README.md CHANGED
@@ -69,10 +69,14 @@ booted in a couple of seconds, fast enough for any CI. Many open source projects
69
69
 
70
70
  ## Talks
71
71
 
72
- [![verdaccio Node.js Dependency Confusion Attacks](https://cdn.verdaccio.dev/readme/devseccon.png)](https://www.youtube.com/watch?v=qTRADSp3Hpo)
72
+ ### **Testing the integrity of your React components by publishing in a private registry - React Finland 2021**.
73
+
74
+ [![beerjscrb](https://cdn.verdaccio.dev/readme/react-finland-2021-jpicado.jpeg)](https://react-finland.fi/schedule/#testing-the-integrity-of-your-react-components-by-publishing-in-a-private-registry)
73
75
 
74
76
  You might want to check out as well our previous talks:
75
77
 
78
+ - [BeerJS Cba Meetup No. 53 May 2021 - **Juan Picado**](https://www.youtube.com/watch?v=6SyjqBmS49Y&ab_channel=BeerJSCba)
79
+ - [Node.js Dependency Confusion Attacks - April 2021 - **Juan Picado\***](https://www.youtube.com/watch?v=qTRADSp3Hpo)
76
80
  - [**OpenJS World 2020** about \*Cover your Projects with a Multi purpose Lightweight Node.js Registry - **Juan Picado\***](https://www.youtube.com/watch?v=oVCjDWeehAQ)
77
81
  - [ViennaJS Meetup - Introduction to Verdaccio by **Priscila Olivera** and **Juan Picado**](https://www.youtube.com/watch?v=hDIFKzmoCa)
78
82
  - [Open Source? trivago - Verdaccio (**Ayush** and **Juan Picado**) January 2020](https://www.youtube.com/watch?v=A5CWxJC9xzc)
@@ -193,7 +193,14 @@ function allow(auth) {
193
193
  return function (req, res, next) {
194
194
  req.pause();
195
195
  const packageName = req.params.scope ? `@${req.params.scope}/${req.params.package}` : req.params.package;
196
- const packageVersion = req.params.filename ? (0, _utils.getVersionFromTarball)(req.params.filename) : undefined;
196
+ let packageVersion = undefined;
197
+
198
+ if (req.params.filename) {
199
+ packageVersion = (0, _utils.getVersionFromTarball)(req.params.filename) || undefined;
200
+ } else if (typeof req.body.versions === 'object') {
201
+ packageVersion = Object.keys(req.body.versions)[0];
202
+ }
203
+
197
204
  const remote = req.remote_user;
198
205
  debug('[middleware/allow][%o] allow for %o', action, remote === null || remote === void 0 ? void 0 : remote.name);
199
206
  auth['allow_' + action]({
@@ -417,4 +424,4 @@ function errorReportingMiddleware(req, res, next) {
417
424
 
418
425
  next();
419
426
  }
420
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIm1hdGNoIiwicmVnZXhwIiwicmVxIiwicmVzIiwibmV4dCIsInZhbHVlIiwiZXhlYyIsInNlcnZlRmF2aWNvbiIsImNvbmZpZyIsImxvZ29Db25mIiwid2ViIiwiZmF2aWNvbiIsInN0YXR1cyIsIl8iLCJpc0VtcHR5IiwidmFsaWRhdG9yIiwiaXNVUkwiLCJyZXF1aXJlX2hvc3QiLCJyZXF1aXJlX3ZhbGlkX3Byb3RvY29sIiwicmVkaXJlY3QiLCJmYXZpY29uUGF0aCIsInBhdGgiLCJub3JtYWxpemUiLCJmcyIsImFjY2VzcyIsImNvbnN0YW50cyIsIlJfT0siLCJlcnIiLCJtZXNzYWdlIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiLCJzZXRIZWFkZXIiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsInBvc2l4Iiwiam9pbiIsIl9fZGlybmFtZSIsInNldFNlY3VyaXR5V2ViSGVhZGVycyIsImhlYWRlciIsIkhFQURFUlMiLCJGUkFNRVNfT1BUSU9OUyIsIkNTUCIsIkNUTyIsIlhTUyIsInZhbGlkYXRlTmFtZSIsIm5hbWUiLCJFcnJvckNvZGUiLCJnZXRGb3JiaWRkZW4iLCJ2YWxpZGF0ZVBhY2thZ2UiLCJtZWRpYSIsImV4cGVjdCIsImhlYWRlcnMiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsImdldENvZGUiLCJVTlNVUFBPUlRFRF9NRURJQSIsImdldCIsImVuY29kZVNjb3BlUGFja2FnZSIsInVybCIsImluZGV4T2YiLCJyZXBsYWNlIiwiZXhwZWN0SnNvbiIsImJvZHkiLCJnZXRCYWRSZXF1ZXN0IiwiYW50aUxvb3AiLCJ2aWEiLCJhcnIiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJtIiwic2VydmVyX2lkIiwiTE9PUF9ERVRFQ1RFRCIsImFsbG93IiwiYXV0aCIsImFjdGlvbiIsInBhdXNlIiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJzY29wZSIsInBhY2thZ2UiLCJwYWNrYWdlVmVyc2lvbiIsImZpbGVuYW1lIiwidW5kZWZpbmVkIiwicmVtb3RlIiwicmVtb3RlX3VzZXIiLCJlcnJvciIsImFsbG93ZWQiLCJyZXN1bWUiLCJnZXRJbnRlcm5hbEVycm9yIiwiQVBJX0VSUk9SIiwiUExVR0lOX0VSUk9SIiwiZmluYWwiLCJzdGF0dXNDb2RlIiwiVU5BVVRIT1JJWkVEIiwiZ2V0SGVhZGVyIiwiV1dXX0FVVEgiLCJUT0tFTl9CQVNJQyIsIlRPS0VOX0JFQVJFUiIsImlzU3RyaW5nIiwiaXNPYmplY3QiLCJKU09OIiwiaXNOaWwiLCJsb2NhbHMiLCJfdmVyZGFjY2lvX2Vycm9yIiwic3RyaW5naWZ5IiwiT0siLCJNVUxUSVBMRV9DSE9JQ0VTIiwiRVRBRyIsInNvY2tldCIsImRlc3Ryb3kiLCJzZW5kIiwiTE9HX1NUQVRVU19NRVNTQUdFIiwiTE9HX1ZFUkRBQ0NJT19FUlJPUiIsIkxPR19WRVJEQUNDSU9fQllURVMiLCJsb2ciLCJfYXV0aCIsImF1dGhvcml6YXRpb24iLCJfY29va2llIiwiY29va2llIiwib3JpZ2luYWxVcmwiLCJsb2dnZXIiLCJodHRwIiwiaXAiLCJieXRlc2luIiwiZXhwZXJpbWVudHMiLCJieXRlc2luX29mZiIsIm9uIiwiY2h1bmsiLCJieXRlc291dCIsIl93cml0ZSIsIndyaXRlIiwiYnVmIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJsb2dIYXNCZWVuQ2FsbGVkIiwiZm9yd2FyZGVkRm9yIiwicmVtb3RlQWRkcmVzcyIsImNvbm5lY3Rpb24iLCJyZW1vdGVJUCIsInJlcXVlc3QiLCJtZXRob2QiLCJ1c2VyIiwiYnl0ZXMiLCJpbiIsIm91dCIsIl9lbmQiLCJlcnJvclJlcG9ydGluZ01pZGRsZXdhcmUiLCJyZXBvcnRfZXJyb3IiLCJCQURfUkVRVUVTVCIsImhlYWRlcnNTZW50IiwiVU5LTk9XTl9FUlJPUiIsIklOVEVSTkFMX0VSUk9SIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBRUEsTUFBTUEsS0FBSyxHQUFHLG9CQUFXLFdBQVgsQ0FBZDs7QUFFTyxTQUFTQyxLQUFULENBQWVDLE1BQWYsRUFBb0M7QUFDekMsU0FBTyxVQUFVQyxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBNkVDLEtBQTdFLEVBQWtHO0FBQ3ZHLFFBQUlKLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZRCxLQUFaLENBQUosRUFBd0I7QUFDdEJELE1BQUFBLElBQUk7QUFDTCxLQUZELE1BRU87QUFDTEEsTUFBQUEsSUFBSSxDQUFDLE9BQUQsQ0FBSjtBQUNEO0FBQ0YsR0FORDtBQU9EOztBQUVNLFNBQVNHLFlBQVQsQ0FBc0JDLE1BQXRCLEVBQXNDO0FBQzNDLFNBQU8sVUFBVU4sR0FBVixFQUErQkMsR0FBL0IsRUFBcURDLElBQXJELEVBQTZFO0FBQ2xGLFFBQUk7QUFBQTs7QUFDRjtBQUNBLFlBQU1LLFFBQWdCLEdBQUdELE1BQUgsYUFBR0EsTUFBSCxzQ0FBR0EsTUFBTSxDQUFFRSxHQUFYLGdEQUFHLFlBQWFDLE9BQXRDOztBQUNBLFVBQUlGLFFBQVEsS0FBSyxFQUFqQixFQUFxQjtBQUNuQlYsUUFBQUEsS0FBSyxDQUFDLGtCQUFELENBQUw7QUFDQUksUUFBQUEsR0FBRyxDQUFDUyxNQUFKLENBQVcsR0FBWDtBQUNELE9BSEQsTUFHTyxJQUFJLENBQUNDLGdCQUFFQyxPQUFGLENBQVVMLFFBQVYsQ0FBTCxFQUEwQjtBQUMvQlYsUUFBQUEsS0FBSyxDQUFDLGdCQUFELENBQUw7O0FBQ0EsWUFDRWdCLG1CQUFVQyxLQUFWLENBQWdCUCxRQUFoQixFQUEwQjtBQUN4QlEsVUFBQUEsWUFBWSxFQUFFLElBRFU7QUFFeEJDLFVBQUFBLHNCQUFzQixFQUFFO0FBRkEsU0FBMUIsQ0FERixFQUtFO0FBQ0FuQixVQUFBQSxLQUFLLENBQUMsZ0JBQUQsRUFBbUJVLFFBQW5CLENBQUw7QUFDQU4sVUFBQUEsR0FBRyxDQUFDZ0IsUUFBSixDQUFhVixRQUFiO0FBQ0E7QUFDRCxTQVRELE1BU087QUFDTCxnQkFBTVcsV0FBVyxHQUFHQyxjQUFLQyxTQUFMLENBQWViLFFBQWYsQ0FBcEI7O0FBQ0FWLFVBQUFBLEtBQUssQ0FBQyx5QkFBRCxFQUE0QnFCLFdBQTVCLENBQUw7O0FBQ0FHLHNCQUFHQyxNQUFILENBQVVKLFdBQVYsRUFBdUJHLFlBQUdFLFNBQUgsQ0FBYUMsSUFBcEMsRUFBMkNDLEdBQUQsSUFBUztBQUNqRCxnQkFBSUEsR0FBSixFQUFTO0FBQ1A1QixjQUFBQSxLQUFLLENBQUMsMENBQUQsRUFBNkNVLFFBQTdDLEVBQXVEa0IsR0FBdkQsYUFBdURBLEdBQXZELHVCQUF1REEsR0FBRyxDQUFFQyxPQUE1RCxDQUFMO0FBQ0EscUJBQU96QixHQUFHLENBQUNTLE1BQUosQ0FBV2lCLHVCQUFZQyxTQUF2QixFQUFrQ0MsR0FBbEMsRUFBUDtBQUNELGFBSEQsTUFHTztBQUNMNUIsY0FBQUEsR0FBRyxDQUFDNkIsU0FBSixDQUFjLGNBQWQsRUFBOEIsY0FBOUI7O0FBQ0FULDBCQUFHVSxnQkFBSCxDQUFvQmIsV0FBcEIsRUFBaUNjLElBQWpDLENBQXNDL0IsR0FBdEM7O0FBQ0FKLGNBQUFBLEtBQUssQ0FBQyxxQkFBRCxDQUFMO0FBQ0Q7QUFDRixXQVREO0FBVUQ7QUFDRixPQXpCTSxNQXlCQTtBQUNMSSxRQUFBQSxHQUFHLENBQUM2QixTQUFKLENBQWMsY0FBZCxFQUE4QixjQUE5Qjs7QUFDQVQsb0JBQUdVLGdCQUFILENBQW9CWixjQUFLYyxLQUFMLENBQVdDLElBQVgsQ0FBZ0JDLFNBQWhCLEVBQTJCLHdCQUEzQixDQUFwQixFQUEwRUgsSUFBMUUsQ0FBK0UvQixHQUEvRTs7QUFDQUosUUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNEO0FBQ0YsS0FwQ0QsQ0FvQ0UsT0FBTzRCLEdBQVAsRUFBWTtBQUNaNUIsTUFBQUEsS0FBSyxDQUFDLG9DQUFELENBQUw7QUFDQUksTUFBQUEsR0FBRyxDQUFDUyxNQUFKLENBQVdpQix1QkFBWUMsU0FBdkIsRUFBa0NDLEdBQWxDO0FBQ0Q7QUFDRixHQXpDRDtBQTBDRDs7QUFFTSxTQUFTTyxxQkFBVCxDQUErQnBDLEdBQS9CLEVBQW9EQyxHQUFwRCxFQUEwRUMsSUFBMUUsRUFBd0c7QUFDN0c7QUFDQUQsRUFBQUEsR0FBRyxDQUFDb0MsTUFBSixDQUFXQyxtQkFBUUMsY0FBbkIsRUFBbUMsTUFBbkMsRUFGNkcsQ0FHN0c7O0FBQ0F0QyxFQUFBQSxHQUFHLENBQUNvQyxNQUFKLENBQVdDLG1CQUFRRSxHQUFuQixFQUF3QixvQkFBeEIsRUFKNkcsQ0FLN0c7O0FBQ0F2QyxFQUFBQSxHQUFHLENBQUNvQyxNQUFKLENBQVdDLG1CQUFRRyxHQUFuQixFQUF3QixTQUF4QixFQU42RyxDQU83Rzs7QUFDQXhDLEVBQUFBLEdBQUcsQ0FBQ29DLE1BQUosQ0FBV0MsbUJBQVFJLEdBQW5CLEVBQXdCLGVBQXhCO0FBQ0F4QyxFQUFBQSxJQUFJO0FBQ0wsQyxDQUVEO0FBQ0E7OztBQUNPLFNBQVN5QyxZQUFULENBQXNCM0MsR0FBdEIsRUFBMkNDLEdBQTNDLEVBQWlFQyxJQUFqRSxFQUF5RkMsS0FBekYsRUFBd0d5QyxJQUF4RyxFQUE0SDtBQUNqSSxNQUFJekMsS0FBSyxLQUFLLEdBQWQsRUFBbUI7QUFDakI7QUFDQUQsSUFBQUEsSUFBSSxDQUFDLE9BQUQsQ0FBSjtBQUNELEdBSEQsTUFHTyxJQUFJLHlCQUFpQkMsS0FBakIsQ0FBSixFQUE2QjtBQUNsQ0QsSUFBQUEsSUFBSTtBQUNMLEdBRk0sTUFFQTtBQUNMQSxJQUFBQSxJQUFJLENBQUMyQyxpQkFBVUMsWUFBVixDQUF1QixhQUFhRixJQUFwQyxDQUFELENBQUo7QUFDRDtBQUNGLEMsQ0FFRDtBQUNBOzs7QUFDTyxTQUFTRyxlQUFULENBQXlCL0MsR0FBekIsRUFBOENDLEdBQTlDLEVBQW9FQyxJQUFwRSxFQUE0RkMsS0FBNUYsRUFBMkd5QyxJQUEzRyxFQUErSDtBQUNwSSxNQUFJekMsS0FBSyxLQUFLLEdBQWQsRUFBbUI7QUFDakI7QUFDQUQsSUFBQUEsSUFBSSxDQUFDLE9BQUQsQ0FBSjtBQUNELEdBSEQsTUFHTyxJQUFJLDRCQUFvQkMsS0FBcEIsQ0FBSixFQUFnQztBQUNyQ0QsSUFBQUEsSUFBSTtBQUNMLEdBRk0sTUFFQTtBQUNMQSxJQUFBQSxJQUFJLENBQUMyQyxpQkFBVUMsWUFBVixDQUF1QixhQUFhRixJQUFwQyxDQUFELENBQUo7QUFDRDtBQUNGOztBQUVNLFNBQVNJLEtBQVQsQ0FBZUMsTUFBZixFQUEyQztBQUNoRCxTQUFPLFVBQVVqRCxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFDeEYsUUFBSUYsR0FBRyxDQUFDa0QsT0FBSixDQUFZQyx1QkFBWUMsWUFBeEIsTUFBMENILE1BQTlDLEVBQXNEO0FBQ3BEL0MsTUFBQUEsSUFBSSxDQUFDMkMsaUJBQVVRLE9BQVYsQ0FBa0IxQix1QkFBWTJCLGlCQUE5QixFQUFpRCxpQ0FBaUNMLE1BQWpDLEdBQTBDLFNBQTFDLEdBQXNEakQsR0FBRyxDQUFDdUQsR0FBSixDQUFRSix1QkFBWUMsWUFBcEIsQ0FBdkcsQ0FBRCxDQUFKO0FBQ0QsS0FGRCxNQUVPO0FBQ0xsRCxNQUFBQSxJQUFJO0FBQ0w7QUFDRixHQU5EO0FBT0Q7O0FBRU0sU0FBU3NELGtCQUFULENBQTRCeEQsR0FBNUIsRUFBaURDLEdBQWpELEVBQXVFQyxJQUF2RSxFQUFxRztBQUMxRyxNQUFJRixHQUFHLENBQUN5RCxHQUFKLENBQVFDLE9BQVIsQ0FBZ0IsR0FBaEIsTUFBeUIsQ0FBQyxDQUE5QixFQUFpQztBQUMvQjtBQUNBMUQsSUFBQUEsR0FBRyxDQUFDeUQsR0FBSixHQUFVekQsR0FBRyxDQUFDeUQsR0FBSixDQUFRRSxPQUFSLENBQWdCLHNCQUFoQixFQUF3QyxPQUF4QyxDQUFWO0FBQ0Q7O0FBQ0R6RCxFQUFBQSxJQUFJO0FBQ0w7O0FBRU0sU0FBUzBELFVBQVQsQ0FBb0I1RCxHQUFwQixFQUF5Q0MsR0FBekMsRUFBK0RDLElBQS9ELEVBQTZGO0FBQ2xHLE1BQUksQ0FBQyxxQkFBU0YsR0FBRyxDQUFDNkQsSUFBYixDQUFMLEVBQXlCO0FBQ3ZCLFdBQU8zRCxJQUFJLENBQUMyQyxpQkFBVWlCLGFBQVYsQ0FBd0IsMkJBQXhCLENBQUQsQ0FBWDtBQUNEOztBQUNENUQsRUFBQUEsSUFBSTtBQUNMOztBQUVNLFNBQVM2RCxRQUFULENBQWtCekQsTUFBbEIsRUFBNEM7QUFDakQsU0FBTyxVQUFVTixHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFBQTs7QUFDeEYsUUFBSSxDQUFBRixHQUFHLFNBQUgsSUFBQUEsR0FBRyxXQUFILDRCQUFBQSxHQUFHLENBQUVrRCxPQUFMLDhEQUFjYyxHQUFkLEtBQXFCLElBQXpCLEVBQStCO0FBQzdCLFlBQU1DLEdBQUcsR0FBR2pFLEdBQUcsQ0FBQ2tELE9BQUosQ0FBWWMsR0FBWixDQUFnQkUsS0FBaEIsQ0FBc0IsR0FBdEIsQ0FBWjs7QUFFQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLEdBQUcsQ0FBQ0csTUFBeEIsRUFBZ0NELENBQUMsRUFBakMsRUFBcUM7QUFDbkMsY0FBTUUsQ0FBQyxHQUFHSixHQUFHLENBQUNFLENBQUQsQ0FBSCxDQUFPckUsS0FBUCxDQUFhLGtCQUFiLENBQVY7O0FBQ0EsWUFBSXVFLENBQUMsSUFBSUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFTL0QsTUFBTSxDQUFDZ0UsU0FBekIsRUFBb0M7QUFDbEMsaUJBQU9wRSxJQUFJLENBQUMyQyxpQkFBVVEsT0FBVixDQUFrQjFCLHVCQUFZNEMsYUFBOUIsRUFBNkMsZUFBN0MsQ0FBRCxDQUFYO0FBQ0Q7QUFDRjtBQUNGOztBQUNEckUsSUFBQUEsSUFBSTtBQUNMLEdBWkQ7QUFhRDs7QUFFTSxTQUFTc0UsS0FBVCxDQUFlQyxJQUFmLEVBQXNDO0FBQzNDLFNBQU8sVUFBVUMsTUFBVixFQUFvQztBQUN6QyxXQUFPLFVBQVUxRSxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFDeEZGLE1BQUFBLEdBQUcsQ0FBQzJFLEtBQUo7QUFDQSxZQUFNQyxXQUFXLEdBQUc1RSxHQUFHLENBQUM2RSxNQUFKLENBQVdDLEtBQVgsR0FBb0IsSUFBRzlFLEdBQUcsQ0FBQzZFLE1BQUosQ0FBV0MsS0FBTSxJQUFHOUUsR0FBRyxDQUFDNkUsTUFBSixDQUFXRSxPQUFRLEVBQTlELEdBQWtFL0UsR0FBRyxDQUFDNkUsTUFBSixDQUFXRSxPQUFqRztBQUNBLFlBQU1DLGNBQWMsR0FBR2hGLEdBQUcsQ0FBQzZFLE1BQUosQ0FBV0ksUUFBWCxHQUFzQixrQ0FBc0JqRixHQUFHLENBQUM2RSxNQUFKLENBQVdJLFFBQWpDLENBQXRCLEdBQW1FQyxTQUExRjtBQUNBLFlBQU1DLE1BQWtCLEdBQUduRixHQUFHLENBQUNvRixXQUEvQjtBQUNBdkYsTUFBQUEsS0FBSyxDQUFDLHFDQUFELEVBQXdDNkUsTUFBeEMsRUFBZ0RTLE1BQWhELGFBQWdEQSxNQUFoRCx1QkFBZ0RBLE1BQU0sQ0FBRXZDLElBQXhELENBQUw7QUFDQTZCLE1BQUFBLElBQUksQ0FBQyxXQUFXQyxNQUFaLENBQUosQ0FBd0I7QUFBRUUsUUFBQUEsV0FBRjtBQUFlSSxRQUFBQTtBQUFmLE9BQXhCLEVBQXlERyxNQUF6RCxFQUFpRSxVQUFVRSxLQUFWLEVBQWlCQyxPQUFqQixFQUFnQztBQUMvRnRGLFFBQUFBLEdBQUcsQ0FBQ3VGLE1BQUo7O0FBQ0EsWUFBSUYsS0FBSixFQUFXO0FBQ1RuRixVQUFBQSxJQUFJLENBQUNtRixLQUFELENBQUo7QUFDRCxTQUZELE1BRU8sSUFBSUMsT0FBSixFQUFhO0FBQ2xCcEYsVUFBQUEsSUFBSTtBQUNMLFNBRk0sTUFFQTtBQUNMO0FBQ0E7QUFDQSxnQkFBTTJDLGlCQUFVMkMsZ0JBQVYsQ0FBMkJDLHFCQUFVQyxZQUFyQyxDQUFOO0FBQ0Q7QUFDRixPQVhEO0FBWUQsS0FsQkQ7QUFtQkQsR0FwQkQ7QUFxQkQ7O0FBUU0sU0FBU0MsS0FBVCxDQUFlOUIsSUFBZixFQUFnQzdELEdBQWhDLEVBQXFEQyxHQUFyRCxFQUEyRUMsSUFBM0UsRUFBeUc7QUFDOUcsTUFBSUQsR0FBRyxDQUFDMkYsVUFBSixLQUFtQmpFLHVCQUFZa0UsWUFBL0IsSUFBK0MsQ0FBQzVGLEdBQUcsQ0FBQzZGLFNBQUosQ0FBY3hELG1CQUFReUQsUUFBdEIsQ0FBcEQsRUFBcUY7QUFDbkY7QUFDQTlGLElBQUFBLEdBQUcsQ0FBQ29DLE1BQUosQ0FBV0MsbUJBQVF5RCxRQUFuQixFQUE4QixHQUFFQyxzQkFBWSxLQUFJQyx1QkFBYSxFQUE3RDtBQUNEOztBQUVELE1BQUk7QUFDRixRQUFJdEYsZ0JBQUV1RixRQUFGLENBQVdyQyxJQUFYLEtBQW9CbEQsZ0JBQUV3RixRQUFGLENBQVd0QyxJQUFYLENBQXhCLEVBQTBDO0FBQ3hDLFVBQUksQ0FBQzVELEdBQUcsQ0FBQzZGLFNBQUosQ0FBY3hELG1CQUFRYyxZQUF0QixDQUFMLEVBQTBDO0FBQ3hDbkQsUUFBQUEsR0FBRyxDQUFDb0MsTUFBSixDQUFXQyxtQkFBUWMsWUFBbkIsRUFBaUNkLG1CQUFROEQsSUFBekM7QUFDRDs7QUFFRCxVQUFJLE9BQU92QyxJQUFQLEtBQWdCLFFBQWhCLElBQTRCbEQsZ0JBQUUwRixLQUFGLENBQVF4QyxJQUFSLE1BQWtCLEtBQWxELEVBQXlEO0FBQ3ZELFlBQUksT0FBUUEsSUFBRCxDQUEwQndCLEtBQWpDLEtBQTJDLFFBQS9DLEVBQXlEO0FBQ3ZEcEYsVUFBQUEsR0FBRyxDQUFDcUcsTUFBSixDQUFXQyxnQkFBWCxHQUErQjFDLElBQUQsQ0FBMEJ3QixLQUF4RDtBQUNEOztBQUNEeEIsUUFBQUEsSUFBSSxHQUFHdUMsSUFBSSxDQUFDSSxTQUFMLENBQWUzQyxJQUFmLEVBQXFCcUIsU0FBckIsRUFBZ0MsSUFBaEMsSUFBd0MsSUFBL0M7QUFDRCxPQVZ1QyxDQVl4Qzs7O0FBQ0EsVUFBSSxDQUFDakYsR0FBRyxDQUFDMkYsVUFBTCxJQUFvQjNGLEdBQUcsQ0FBQzJGLFVBQUosSUFBa0JqRSx1QkFBWThFLEVBQTlCLElBQW9DeEcsR0FBRyxDQUFDMkYsVUFBSixHQUFpQmpFLHVCQUFZK0UsZ0JBQXpGLEVBQTRHO0FBQzFHekcsUUFBQUEsR0FBRyxDQUFDb0MsTUFBSixDQUFXQyxtQkFBUXFFLElBQW5CLEVBQXlCLE1BQU0sOEJBQVk5QyxJQUFaLENBQU4sR0FBb0MsR0FBN0Q7QUFDRDtBQUNGLEtBaEJELE1BZ0JPLENBQ0w7QUFDRDtBQUNGLEdBcEJELENBb0JFLE9BQU9wQyxHQUFQLEVBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxRQUFJQSxHQUFHLENBQUNDLE9BQUosQ0FBWTVCLEtBQVosQ0FBa0IsaUNBQWxCLENBQUosRUFBMEQ7QUFDeEQsVUFBSWEsZ0JBQUUwRixLQUFGLENBQVFwRyxHQUFHLENBQUMyRyxNQUFaLE1BQXdCLEtBQTVCLEVBQW1DO0FBQ2pDO0FBQ0EzRyxRQUFBQSxHQUFHLENBQUMyRyxNQUFKLENBQVdDLE9BQVg7QUFDRDs7QUFDRDtBQUNEOztBQUNELFVBQU1wRixHQUFOO0FBQ0Q7O0FBRUR4QixFQUFBQSxHQUFHLENBQUM2RyxJQUFKLENBQVNqRCxJQUFUO0FBQ0Q7O0FBRU0sTUFBTWtELGtCQUFrQixHQUFHLGdGQUEzQjs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBSSxHQUFFRCxrQkFBbUIsb0JBQWxEOztBQUNBLE1BQU1FLG1CQUFtQixHQUFJLEdBQUVGLGtCQUFtQixtQ0FBbEQ7OztBQUVBLFNBQVNHLEdBQVQsQ0FBYTVHLE1BQWIsRUFBNkI7QUFDbEMsU0FBTyxVQUFVTixHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFBQTs7QUFDeEYsVUFBTWlILEtBQUssR0FBR25ILEdBQUcsQ0FBQ2tELE9BQUosQ0FBWWtFLGFBQTFCOztBQUNBLFFBQUl6RyxnQkFBRTBGLEtBQUYsQ0FBUWMsS0FBUixNQUFtQixLQUF2QixFQUE4QjtBQUM1Qm5ILE1BQUFBLEdBQUcsQ0FBQ2tELE9BQUosQ0FBWWtFLGFBQVosR0FBNEIsY0FBNUI7QUFDRDs7QUFFRCxVQUFNQyxPQUFPLEdBQUdySCxHQUFHLENBQUN1RCxHQUFKLENBQVEsUUFBUixDQUFoQjs7QUFDQSxRQUFJNUMsZ0JBQUUwRixLQUFGLENBQVFnQixPQUFSLE1BQXFCLEtBQXpCLEVBQWdDO0FBQzlCckgsTUFBQUEsR0FBRyxDQUFDa0QsT0FBSixDQUFZb0UsTUFBWixHQUFxQixjQUFyQjtBQUNEOztBQUVEdEgsSUFBQUEsR0FBRyxDQUFDeUQsR0FBSixHQUFVekQsR0FBRyxDQUFDdUgsV0FBZCxDQVh3RixDQVl4Rjs7QUFDQSxRQUFJdkgsR0FBRyxDQUFDdUgsV0FBSixDQUFnQnpILEtBQWhCLENBQXNCLFFBQXRCLE1BQW9DLElBQXhDLEVBQThDO0FBQzVDMEgscUJBQU9DLElBQVAsQ0FBWTtBQUFFekgsUUFBQUEsR0FBRyxFQUFFQSxHQUFQO0FBQVkwSCxRQUFBQSxFQUFFLEVBQUUxSCxHQUFHLENBQUMwSDtBQUFwQixPQUFaLEVBQXNDLDRDQUF0QztBQUNEOztBQUNEMUgsSUFBQUEsR0FBRyxDQUFDdUgsV0FBSixHQUFrQnZILEdBQUcsQ0FBQ3lELEdBQXRCOztBQUVBLFFBQUk5QyxnQkFBRTBGLEtBQUYsQ0FBUWMsS0FBUixNQUFtQixLQUF2QixFQUE4QjtBQUM1Qm5ILE1BQUFBLEdBQUcsQ0FBQ2tELE9BQUosQ0FBWWtFLGFBQVosR0FBNEJELEtBQTVCO0FBQ0Q7O0FBRUQsUUFBSXhHLGdCQUFFMEYsS0FBRixDQUFRZ0IsT0FBUixNQUFxQixLQUF6QixFQUFnQztBQUM5QnJILE1BQUFBLEdBQUcsQ0FBQ2tELE9BQUosQ0FBWW9FLE1BQVosR0FBcUJELE9BQXJCO0FBQ0Q7O0FBRUQsUUFBSU0sT0FBTyxHQUFHLENBQWQ7O0FBQ0EsUUFBSSxDQUFBckgsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixtQ0FBQUEsTUFBTSxDQUFFc0gsV0FBUiw0RUFBcUJDLFdBQXJCLE1BQXFDLElBQXpDLEVBQStDO0FBQzdDN0gsTUFBQUEsR0FBRyxDQUFDOEgsRUFBSixDQUFPLE1BQVAsRUFBZSxVQUFVQyxLQUFWLEVBQXVCO0FBQ3BDSixRQUFBQSxPQUFPLElBQUlJLEtBQUssQ0FBQzNELE1BQWpCO0FBQ0QsT0FGRDtBQUdEOztBQUVELFFBQUk0RCxRQUFRLEdBQUcsQ0FBZjtBQUNBLFVBQU1DLE1BQU0sR0FBR2hJLEdBQUcsQ0FBQ2lJLEtBQW5CLENBbEN3RixDQW1DeEY7QUFDQTs7QUFDQWpJLElBQUFBLEdBQUcsQ0FBQ2lJLEtBQUosR0FBWSxVQUFVQyxHQUFWLEVBQXdCO0FBQ2xDSCxNQUFBQSxRQUFRLElBQUlHLEdBQUcsQ0FBQy9ELE1BQWhCO0FBQ0E7QUFDQTs7QUFDQTZELE1BQUFBLE1BQU0sQ0FBQ0csS0FBUCxDQUFhbkksR0FBYixFQUFrQm9JLFNBQWxCO0FBQ0QsS0FMRDs7QUFPQSxRQUFJQyxnQkFBZ0IsR0FBRyxLQUF2Qjs7QUFDQSxVQUFNcEIsR0FBRyxHQUFHLFlBQWtCO0FBQzVCLFVBQUlvQixnQkFBSixFQUFzQjtBQUNwQjtBQUNEOztBQUNEQSxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUVBLFlBQU1DLFlBQVksR0FBR3ZJLEdBQUcsQ0FBQ3VELEdBQUosQ0FBUSxpQkFBUixDQUFyQjtBQUNBLFlBQU1pRixhQUFhLEdBQUd4SSxHQUFHLENBQUN5SSxVQUFKLENBQWVELGFBQXJDO0FBQ0EsWUFBTUUsUUFBUSxHQUFHSCxZQUFZLEdBQUksR0FBRUEsWUFBYSxRQUFPQyxhQUFjLEVBQXhDLEdBQTRDQSxhQUF6RTtBQUNBLFVBQUk5RyxPQUFKOztBQUNBLFVBQUl6QixHQUFHLENBQUNxRyxNQUFKLENBQVdDLGdCQUFmLEVBQWlDO0FBQy9CN0UsUUFBQUEsT0FBTyxHQUFHc0YsbUJBQVY7QUFDRCxPQUZELE1BRU87QUFDTHRGLFFBQUFBLE9BQU8sR0FBR3VGLG1CQUFWO0FBQ0Q7O0FBRURqSCxNQUFBQSxHQUFHLENBQUN5RCxHQUFKLEdBQVV6RCxHQUFHLENBQUN1SCxXQUFkLENBaEI0QixDQWlCNUI7O0FBQ0EsVUFBSXZILEdBQUcsQ0FBQ3lELEdBQUosQ0FBUTNELEtBQVIsQ0FBYyxRQUFkLE1BQTRCLElBQWhDLEVBQXNDO0FBQ3BDMEgsdUJBQU9DLElBQVAsQ0FDRTtBQUNFa0IsVUFBQUEsT0FBTyxFQUFFO0FBQ1BDLFlBQUFBLE1BQU0sRUFBRTVJLEdBQUcsQ0FBQzRJLE1BREw7QUFFUG5GLFlBQUFBLEdBQUcsRUFBRXpELEdBQUcsQ0FBQ3lEO0FBRkYsV0FEWDtBQUtFb0YsVUFBQUEsSUFBSSxFQUFHN0ksR0FBRyxDQUFDb0YsV0FBSixJQUFtQnBGLEdBQUcsQ0FBQ29GLFdBQUosQ0FBZ0J4QyxJQUFwQyxJQUE2QyxJQUxyRDtBQU1FOEYsVUFBQUEsUUFORjtBQU9FaEksVUFBQUEsTUFBTSxFQUFFVCxHQUFHLENBQUMyRixVQVBkO0FBUUVQLFVBQUFBLEtBQUssRUFBRXBGLEdBQUcsQ0FBQ3FHLE1BQUosQ0FBV0MsZ0JBUnBCO0FBU0V1QyxVQUFBQSxLQUFLLEVBQUU7QUFDTEMsWUFBQUEsRUFBRSxFQUFFcEIsT0FEQztBQUVMcUIsWUFBQUEsR0FBRyxFQUFFaEI7QUFGQTtBQVRULFNBREYsRUFlRXRHLE9BZkY7O0FBaUJBMUIsUUFBQUEsR0FBRyxDQUFDdUgsV0FBSixHQUFrQnZILEdBQUcsQ0FBQ3lELEdBQXRCO0FBQ0Q7QUFDRixLQXRDRDs7QUF3Q0F6RCxJQUFBQSxHQUFHLENBQUM4SCxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFrQjtBQUNoQ1osTUFBQUEsR0FBRztBQUNKLEtBRkQ7QUFJQSxVQUFNK0IsSUFBSSxHQUFHaEosR0FBRyxDQUFDNEIsR0FBakI7O0FBQ0E1QixJQUFBQSxHQUFHLENBQUM0QixHQUFKLEdBQVUsVUFBVXNHLEdBQVYsRUFBcUI7QUFDN0IsVUFBSUEsR0FBSixFQUFTO0FBQ1BILFFBQUFBLFFBQVEsSUFBSUcsR0FBRyxDQUFDL0QsTUFBaEI7QUFDRDtBQUNEO0FBQ0E7OztBQUNBNkUsTUFBQUEsSUFBSSxDQUFDYixLQUFMLENBQVduSSxHQUFYLEVBQWdCb0ksU0FBaEI7O0FBQ0FuQixNQUFBQSxHQUFHO0FBQ0osS0FSRDs7QUFTQWhILElBQUFBLElBQUk7QUFDTCxHQXBHRDtBQXFHRCxDLENBRUQ7OztBQUNPLFNBQVNnSix3QkFBVCxDQUFrQ2xKLEdBQWxDLEVBQXVEQyxHQUF2RCxFQUE2RUMsSUFBN0UsRUFBMkc7QUFDaEhELEVBQUFBLEdBQUcsQ0FBQ3FHLE1BQUosQ0FBVzZDLFlBQVgsR0FDRWxKLEdBQUcsQ0FBQ3FHLE1BQUosQ0FBVzZDLFlBQVgsSUFDQSxVQUFVMUgsR0FBVixFQUFxQztBQUNuQyxRQUFJQSxHQUFHLENBQUNmLE1BQUosSUFBY2UsR0FBRyxDQUFDZixNQUFKLElBQWNpQix1QkFBWXlILFdBQXhDLElBQXVEM0gsR0FBRyxDQUFDZixNQUFKLEdBQWEsR0FBeEUsRUFBNkU7QUFDM0UsVUFBSSxDQUFDVCxHQUFHLENBQUNvSixXQUFULEVBQXNCO0FBQ3BCcEosUUFBQUEsR0FBRyxDQUFDUyxNQUFKLENBQVdlLEdBQUcsQ0FBQ2YsTUFBZjtBQUNBUixRQUFBQSxJQUFJLENBQUM7QUFBRW1GLFVBQUFBLEtBQUssRUFBRTVELEdBQUcsQ0FBQ0MsT0FBSixJQUFlK0QscUJBQVU2RDtBQUFsQyxTQUFELENBQUo7QUFDRDtBQUNGLEtBTEQsTUFLTztBQUNMOUIscUJBQU9uQyxLQUFQLENBQWE7QUFBRTVELFFBQUFBLEdBQUcsRUFBRUE7QUFBUCxPQUFiLEVBQTJCLGlEQUEzQjs7QUFDQSxVQUFJLENBQUN4QixHQUFHLENBQUNTLE1BQUwsSUFBZSxDQUFDVCxHQUFHLENBQUM2RyxJQUF4QixFQUE4QjtBQUM1QlUsdUJBQU9uQyxLQUFQLENBQWEsb0RBQWI7O0FBQ0FwRixRQUFBQSxHQUFHLENBQUM0RyxPQUFKO0FBQ0QsT0FIRCxNQUdPLElBQUksQ0FBQzVHLEdBQUcsQ0FBQ29KLFdBQVQsRUFBc0I7QUFDM0JwSixRQUFBQSxHQUFHLENBQUNTLE1BQUosQ0FBV2lCLHVCQUFZNEgsY0FBdkI7QUFDQXJKLFFBQUFBLElBQUksQ0FBQztBQUFFbUYsVUFBQUEsS0FBSyxFQUFFSSxxQkFBVStEO0FBQW5CLFNBQUQsQ0FBSjtBQUNELE9BSE0sTUFHQSxDQUNMO0FBQ0Q7QUFDRjtBQUNGLEdBcEJIOztBQXNCQXRKLEVBQUFBLElBQUk7QUFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdmFsaWRhdG9yIGZyb20gJ3ZhbGlkYXRvcic7XG5cbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSwgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgVmVyZGFjY2lvRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcbmltcG9ydCB7IHZhbGlkYXRlTmFtZSBhcyB1dGlsVmFsaWRhdGVOYW1lLCB2YWxpZGF0ZVBhY2thZ2UgYXMgdXRpbFZhbGlkYXRlUGFja2FnZSwgZ2V0VmVyc2lvbkZyb21UYXJiYWxsLCBpc09iamVjdCwgRXJyb3JDb2RlIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgSEVBREVSX1RZUEUsIEhFQURFUlMsIEhUVFBfU1RBVFVTLCBUT0tFTl9CQVNJQywgVE9LRU5fQkVBUkVSIH0gZnJvbSAnLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzdHJpbmdUb01ENSB9IGZyb20gJy4uL2xpYi9jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgJFJlc3BvbnNlRXh0ZW5kLCAkUmVxdWVzdEV4dGVuZCwgJE5leHRGdW5jdGlvblZlciwgSUF1dGggfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9saWIvbG9nZ2VyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW8nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cDogUmVnRXhwKTogYW55IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChyZWdleHAuZXhlYyh2YWx1ZSkpIHtcbiAgICAgIG5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgncm91dGUnKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZUZhdmljb24oY29uZmlnOiBDb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBsb2dvQ29uZjogc3RyaW5nID0gY29uZmlnPy53ZWI/LmZhdmljb24gYXMgc3RyaW5nO1xuICAgICAgaWYgKGxvZ29Db25mID09PSAnJykge1xuICAgICAgICBkZWJ1ZygnZmF2aWNvbiBkaXNhYmxlZCcpO1xuICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICB9IGVsc2UgaWYgKCFfLmlzRW1wdHkobG9nb0NvbmYpKSB7XG4gICAgICAgIGRlYnVnKCdjdXN0b20gZmF2aWNvbicpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmFsaWRhdG9yLmlzVVJMKGxvZ29Db25mLCB7XG4gICAgICAgICAgICByZXF1aXJlX2hvc3Q6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlX3ZhbGlkX3Byb3RvY29sOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIGRlYnVnKCdyZWRpcmVjdCB0byAlbycsIGxvZ29Db25mKTtcbiAgICAgICAgICByZXMucmVkaXJlY3QobG9nb0NvbmYpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmYXZpY29uUGF0aCA9IHBhdGgubm9ybWFsaXplKGxvZ29Db25mKTtcbiAgICAgICAgICBkZWJ1Zygnc2VydmluZyBmYXZpY29uIGZyb20gJW8nLCBmYXZpY29uUGF0aCk7XG4gICAgICAgICAgZnMuYWNjZXNzKGZhdmljb25QYXRoLCBmcy5jb25zdGFudHMuUl9PSywgKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICBkZWJ1Zygnbm8gcmVhZCBwZXJtaXNzaW9ucyB0byByZWFkOiAlbywgcmVhc29uOicsIGxvZ29Db25mLCBlcnI/Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignY29udGVudC10eXBlJywgJ2ltYWdlL3gtaWNvbicpO1xuICAgICAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGZhdmljb25QYXRoKS5waXBlKHJlcyk7XG4gICAgICAgICAgICAgIGRlYnVnKCdyZW5kZXJlZCBjdXN0b20gaWNvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICdpbWFnZS94LWljb24nKTtcbiAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoLnBvc2l4LmpvaW4oX19kaXJuYW1lLCAnLi93ZWIvaHRtbC9mYXZpY29uLmljbycpKS5waXBlKHJlcyk7XG4gICAgICAgIGRlYnVnKCdyZW5kZXJlZCBpY28nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGRlYnVnKCdlcnJvciB0cmlnZ2VyZWQsIGZhdmljb24gbm90IGZvdW5kJyk7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk5PVF9GT1VORCkuZW5kKCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U2VjdXJpdHlXZWJIZWFkZXJzKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIC8vIGRpc2FibGUgbG9hZGluZyBpbiBmcmFtZXMgKGNsaWNramFja2luZywgZXRjLilcbiAgcmVzLmhlYWRlcihIRUFERVJTLkZSQU1FU19PUFRJT05TLCAnZGVueScpO1xuICAvLyBhdm9pZCBzdGFibGlzaCBjb25uZWN0aW9ucyBvdXRzaWRlIG9mIGRvbWFpblxuICByZXMuaGVhZGVyKEhFQURFUlMuQ1NQLCBcImNvbm5lY3Qtc3JjICdzZWxmJ1wiKTtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTgzMzc2MzAvd2hhdC1pcy14LWNvbnRlbnQtdHlwZS1vcHRpb25zLW5vc25pZmZcbiAgcmVzLmhlYWRlcihIRUFERVJTLkNUTywgJ25vc25pZmYnKTtcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvOTA5MDU3Ny93aGF0LWlzLXRoZS1odHRwLWhlYWRlci14LXhzcy1wcm90ZWN0aW9uXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5YU1MsICcxOyBtb2RlPWJsb2NrJyk7XG4gIG5leHQoKTtcbn1cblxuLy8gZmxvdzogZXhwcmVzcyBkb2VzIG5vdCBtYXRjaCBwcm9wZXJseVxuLy8gZmxvdyBpbmZvIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG93dHlwZS9mbG93LXR5cGVkL2lzc3Vlcz91dGY4PSVFMiU5QyU5MyZxPWlzJTNBaXNzdWUraXMlM0FvcGVuK2V4cHJlc3NcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU5hbWUocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIsIHZhbHVlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09ICctJykge1xuICAgIC8vIHNwZWNpYWwgY2FzZSBpbiBjb3VjaGRiIHVzdWFsbHlcbiAgICBuZXh0KCdyb3V0ZScpO1xuICB9IGVsc2UgaWYgKHV0aWxWYWxpZGF0ZU5hbWUodmFsdWUpKSB7XG4gICAgbmV4dCgpO1xuICB9IGVsc2Uge1xuICAgIG5leHQoRXJyb3JDb2RlLmdldEZvcmJpZGRlbignaW52YWxpZCAnICsgbmFtZSkpO1xuICB9XG59XG5cbi8vIGZsb3c6IGV4cHJlc3MgZG9lcyBub3QgbWF0Y2ggcHJvcGVybHlcbi8vIGZsb3cgaW5mbyBodHRwczovL2dpdGh1Yi5jb20vZmxvd3R5cGUvZmxvdy10eXBlZC9pc3N1ZXM/dXRmOD0lRTIlOUMlOTMmcT1pcyUzQWlzc3VlK2lzJTNBb3BlbitleHByZXNzXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQYWNrYWdlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyLCB2YWx1ZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHZhbHVlID09PSAnLScpIHtcbiAgICAvLyBzcGVjaWFsIGNhc2UgaW4gY291Y2hkYiB1c3VhbGx5XG4gICAgbmV4dCgncm91dGUnKTtcbiAgfSBlbHNlIGlmICh1dGlsVmFsaWRhdGVQYWNrYWdlKHZhbHVlKSkge1xuICAgIG5leHQoKTtcbiAgfSBlbHNlIHtcbiAgICBuZXh0KEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oJ2ludmFsaWQgJyArIG5hbWUpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWEoZXhwZWN0OiBzdHJpbmcgfCBudWxsKTogYW55IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGlmIChyZXEuaGVhZGVyc1tIRUFERVJfVFlQRS5DT05URU5UX1RZUEVdICE9PSBleHBlY3QpIHtcbiAgICAgIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5TVVBQT1JURURfTUVESUEsICd3cm9uZyBjb250ZW50LXR5cGUsIGV4cGVjdDogJyArIGV4cGVjdCArICcsIGdvdDogJyArIHJlcS5nZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlU2NvcGVQYWNrYWdlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIGlmIChyZXEudXJsLmluZGV4T2YoJ0AnKSAhPT0gLTEpIHtcbiAgICAvLyBlLmcuOiAvQG9yZy9wa2cvMS4yLjMgLT4gL0BvcmclMkZwa2cvMS4yLjMsIC9Ab3JnJTJGcGtnLzEuMi4zIC0+IC9Ab3JnJTJGcGtnLzEuMi4zXG4gICAgcmVxLnVybCA9IHJlcS51cmwucmVwbGFjZSgvXihcXC9AW15cXC8lXSspXFwvKD8hJCkvLCAnJDElMkYnKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RKc29uKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIGlmICghaXNPYmplY3QocmVxLmJvZHkpKSB7XG4gICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoXCJjYW4ndCBwYXJzZSBpbmNvbWluZyBqc29uXCIpKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbnRpTG9vcChjb25maWc6IENvbmZpZyk6IEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGlmIChyZXE/LmhlYWRlcnM/LnZpYSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBhcnIgPSByZXEuaGVhZGVycy52aWEuc3BsaXQoJywnKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IGFycltpXS5tYXRjaCgvXFxzKihcXFMrKVxccysoXFxTKykvKTtcbiAgICAgICAgaWYgKG0gJiYgbVsyXSA9PT0gY29uZmlnLnNlcnZlcl9pZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkxPT1BfREVURUNURUQsICdsb29wIGRldGVjdGVkJykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93KGF1dGg6IElBdXRoKTogRnVuY3Rpb24ge1xuICByZXR1cm4gZnVuY3Rpb24gKGFjdGlvbjogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIHJlcS5wYXVzZSgpO1xuICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnNjb3BlID8gYEAke3JlcS5wYXJhbXMuc2NvcGV9LyR7cmVxLnBhcmFtcy5wYWNrYWdlfWAgOiByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgICBjb25zdCBwYWNrYWdlVmVyc2lvbiA9IHJlcS5wYXJhbXMuZmlsZW5hbWUgPyBnZXRWZXJzaW9uRnJvbVRhcmJhbGwocmVxLnBhcmFtcy5maWxlbmFtZSkgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByZW1vdGU6IFJlbW90ZVVzZXIgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICBkZWJ1ZygnW21pZGRsZXdhcmUvYWxsb3ddWyVvXSBhbGxvdyBmb3IgJW8nLCBhY3Rpb24sIHJlbW90ZT8ubmFtZSk7XG4gICAgICBhdXRoWydhbGxvd18nICsgYWN0aW9uXSh7IHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbiB9LCByZW1vdGUsIGZ1bmN0aW9uIChlcnJvciwgYWxsb3dlZCk6IHZvaWQge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gbGFzdCBwbHVnaW4gKHRoYXQncyBvdXIgYnVpbHQtaW4gb25lKSByZXR1cm5zIGVpdGhlclxuICAgICAgICAgIC8vIGNiKGVycikgb3IgY2IobnVsbCwgdHJ1ZSksIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgICAgIHRocm93IEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5QTFVHSU5fRVJST1IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZGRsZXdhcmVFcnJvciB7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEZpbmFsQm9keSA9IFBhY2thZ2UgfCBNaWRkbGV3YXJlRXJyb3IgfCBzdHJpbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbChib2R5OiBGaW5hbEJvZHksIHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEICYmICFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuV1dXX0FVVEgpKSB7XG4gICAgLy8gdGhleSBzYXkgaXQncyByZXF1aXJlZCBmb3IgNDAxLCBzby4uLlxuICAgIHJlcy5oZWFkZXIoSEVBREVSUy5XV1dfQVVUSCwgYCR7VE9LRU5fQkFTSUN9LCAke1RPS0VOX0JFQVJFUn1gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKF8uaXNTdHJpbmcoYm9keSkgfHwgXy5pc09iamVjdChib2R5KSkge1xuICAgICAgaWYgKCFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFKSkge1xuICAgICAgICByZXMuaGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIF8uaXNOaWwoYm9keSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKGJvZHkgYXMgTWlkZGxld2FyZUVycm9yKS5lcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IgPSAoYm9keSBhcyBNaWRkbGV3YXJlRXJyb3IpLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5LCB1bmRlZmluZWQsICcgICcpICsgJ1xcbic7XG4gICAgICB9XG5cbiAgICAgIC8vIGRvbid0IHNlbmQgZXRhZ3Mgd2l0aCBlcnJvcnNcbiAgICAgIGlmICghcmVzLnN0YXR1c0NvZGUgfHwgKHJlcy5zdGF0dXNDb2RlID49IEhUVFBfU1RBVFVTLk9LICYmIHJlcy5zdGF0dXNDb2RlIDwgSFRUUF9TVEFUVVMuTVVMVElQTEVfQ0hPSUNFUykpIHtcbiAgICAgICAgcmVzLmhlYWRlcihIRUFERVJTLkVUQUcsICdcIicgKyBzdHJpbmdUb01ENShib2R5IGFzIHN0cmluZykgKyAnXCInKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VuZChudWxsKSwgc2VuZCgyMDQpLCBldGMuXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZiB2ZXJkYWNjaW8gc2VuZHMgaGVhZGVycyBmaXJzdCwgYW5kIHRoZW4gY2FsbHMgcmVzLnNlbmQoKVxuICAgIC8vIGFzIGFuIGVycm9yIGhhbmRsZXIsIHdlIGNhbid0IHJlcG9ydCBlcnJvciBwcm9wZXJseSxcbiAgICAvLyBhbmQgc2hvdWxkIGp1c3QgY2xvc2Ugc29ja2V0XG4gICAgaWYgKGVyci5tZXNzYWdlLm1hdGNoKC9zZXQgaGVhZGVycyBhZnRlciB0aGV5IGFyZSBzZW50LykpIHtcbiAgICAgIGlmIChfLmlzTmlsKHJlcy5zb2NrZXQpID09PSBmYWxzZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlcy5zb2NrZXQuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICByZXMuc2VuZChib2R5KTtcbn1cblxuZXhwb3J0IGNvbnN0IExPR19TVEFUVVNfTUVTU0FHRSA9IFwiQHtzdGF0dXN9LCB1c2VyOiBAe3VzZXJ9KEB7cmVtb3RlSVB9KSwgcmVxOiAnQHtyZXF1ZXN0Lm1ldGhvZH0gQHtyZXF1ZXN0LnVybH0nXCI7XG5leHBvcnQgY29uc3QgTE9HX1ZFUkRBQ0NJT19FUlJPUiA9IGAke0xPR19TVEFUVVNfTUVTU0FHRX0sIGVycm9yOiBAeyFlcnJvcn1gO1xuZXhwb3J0IGNvbnN0IExPR19WRVJEQUNDSU9fQllURVMgPSBgJHtMT0dfU1RBVFVTX01FU1NBR0V9LCBieXRlczogQHtieXRlcy5pbn0vQHtieXRlcy5vdXR9YDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhjb25maWc6IENvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgX2F1dGggPSByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICAgIGlmIChfLmlzTmlsKF9hdXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSAnPENsYXNzaWZpZWQ+JztcbiAgICB9XG5cbiAgICBjb25zdCBfY29va2llID0gcmVxLmdldCgnY29va2llJyk7XG4gICAgaWYgKF8uaXNOaWwoX2Nvb2tpZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXEuaGVhZGVycy5jb29raWUgPSAnPENsYXNzaWZpZWQ+JztcbiAgICB9XG5cbiAgICByZXEudXJsID0gcmVxLm9yaWdpbmFsVXJsO1xuICAgIC8vIGF2b2lkIGxvZyBub2lzZSBkYXRhIGZyb20gc3RhdGljIGNvbnRlbnRcbiAgICBpZiAocmVxLm9yaWdpbmFsVXJsLm1hdGNoKC9zdGF0aWMvKSA9PT0gbnVsbCkge1xuICAgICAgbG9nZ2VyLmh0dHAoeyByZXE6IHJlcSwgaXA6IHJlcS5pcCB9LCBcIkB7aXB9IHJlcXVlc3RlZCAnQHtyZXEubWV0aG9kfSBAe3JlcS51cmx9J1wiKTtcbiAgICB9XG4gICAgcmVxLm9yaWdpbmFsVXJsID0gcmVxLnVybDtcblxuICAgIGlmIChfLmlzTmlsKF9hdXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBfYXV0aDtcbiAgICB9XG5cbiAgICBpZiAoXy5pc05pbChfY29va2llKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmNvb2tpZSA9IF9jb29raWU7XG4gICAgfVxuXG4gICAgbGV0IGJ5dGVzaW4gPSAwO1xuICAgIGlmIChjb25maWc/LmV4cGVyaW1lbnRzPy5ieXRlc2luX29mZiAhPT0gdHJ1ZSkge1xuICAgICAgcmVxLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKTogdm9pZCB7XG4gICAgICAgIGJ5dGVzaW4gKz0gY2h1bmsubGVuZ3RoO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGJ5dGVzb3V0ID0gMDtcbiAgICBjb25zdCBfd3JpdGUgPSByZXMud3JpdGU7XG4gICAgLy8gRklYTUU6IHJlcy53cml0ZSBzaG91bGQgcmV0dXJuIGJvb2xlYW5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVzLndyaXRlID0gZnVuY3Rpb24gKGJ1Zik6IGJvb2xlYW4ge1xuICAgICAgYnl0ZXNvdXQgKz0gYnVmLmxlbmd0aDtcbiAgICAgIC8qIGVzbGludCBwcmVmZXItcmVzdC1wYXJhbXM6IFwib2ZmXCIgKi9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIF93cml0ZS5hcHBseShyZXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcblxuICAgIGxldCBsb2dIYXNCZWVuQ2FsbGVkID0gZmFsc2U7XG4gICAgY29uc3QgbG9nID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgaWYgKGxvZ0hhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9nSGFzQmVlbkNhbGxlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IGZvcndhcmRlZEZvciA9IHJlcS5nZXQoJ3gtZm9yd2FyZGVkLWZvcicpO1xuICAgICAgY29uc3QgcmVtb3RlQWRkcmVzcyA9IHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3M7XG4gICAgICBjb25zdCByZW1vdGVJUCA9IGZvcndhcmRlZEZvciA/IGAke2ZvcndhcmRlZEZvcn0gdmlhICR7cmVtb3RlQWRkcmVzc31gIDogcmVtb3RlQWRkcmVzcztcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgaWYgKHJlcy5sb2NhbHMuX3ZlcmRhY2Npb19lcnJvcikge1xuICAgICAgICBtZXNzYWdlID0gTE9HX1ZFUkRBQ0NJT19FUlJPUjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBMT0dfVkVSREFDQ0lPX0JZVEVTO1xuICAgICAgfVxuXG4gICAgICByZXEudXJsID0gcmVxLm9yaWdpbmFsVXJsO1xuICAgICAgLy8gYXZvaWQgbG9nIG5vaXNlIGRhdGEgZnJvbSBzdGF0aWMgY29udGVudFxuICAgICAgaWYgKHJlcS51cmwubWF0Y2goL3N0YXRpYy8pID09PSBudWxsKSB7XG4gICAgICAgIGxvZ2dlci5odHRwKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgICAgICAgICB1cmw6IHJlcS51cmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlcjogKHJlcS5yZW1vdGVfdXNlciAmJiByZXEucmVtb3RlX3VzZXIubmFtZSkgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlbW90ZUlQLFxuICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVycm9yOiByZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IsXG4gICAgICAgICAgICBieXRlczoge1xuICAgICAgICAgICAgICBpbjogYnl0ZXNpbixcbiAgICAgICAgICAgICAgb3V0OiBieXRlc291dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICk7XG4gICAgICAgIHJlcS5vcmlnaW5hbFVybCA9IHJlcS51cmw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlcS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICBsb2coKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IF9lbmQgPSByZXMuZW5kO1xuICAgIHJlcy5lbmQgPSBmdW5jdGlvbiAoYnVmKTogdm9pZCB7XG4gICAgICBpZiAoYnVmKSB7XG4gICAgICAgIGJ5dGVzb3V0ICs9IGJ1Zi5sZW5ndGg7XG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQgcHJlZmVyLXJlc3QtcGFyYW1zOiBcIm9mZlwiICovXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBfZW5kLmFwcGx5KHJlcywgYXJndW1lbnRzKTtcbiAgICAgIGxvZygpO1xuICAgIH07XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG4vLyBNaWRkbGV3YXJlXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yID1cbiAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvciB8fFxuICAgIGZ1bmN0aW9uIChlcnI6IFZlcmRhY2Npb0Vycm9yKTogdm9pZCB7XG4gICAgICBpZiAoZXJyLnN0YXR1cyAmJiBlcnIuc3RhdHVzID49IEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNUICYmIGVyci5zdGF0dXMgPCA2MDApIHtcbiAgICAgICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgICByZXMuc3RhdHVzKGVyci5zdGF0dXMpO1xuICAgICAgICAgIG5leHQoeyBlcnJvcjogZXJyLm1lc3NhZ2UgfHwgQVBJX0VSUk9SLlVOS05PV05fRVJST1IgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcih7IGVycjogZXJyIH0sICd1bmV4cGVjdGVkIGVycm9yOiBAeyFlcnIubWVzc2FnZX1cXG5Ae2Vyci5zdGFja30nKTtcbiAgICAgICAgaWYgKCFyZXMuc3RhdHVzIHx8ICFyZXMuc2VuZCkge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcigndGhpcyBpcyBhbiBlcnJvciBpbiBleHByZXNzLmpzLCBwbGVhc2UgcmVwb3J0IHRoaXMnKTtcbiAgICAgICAgICByZXMuZGVzdHJveSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SKTtcbiAgICAgICAgICBuZXh0KHsgZXJyb3I6IEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc29ja2V0IHNob3VsZCBiZSBhbHJlYWR5IGNsb3NlZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBuZXh0KCk7XG59XG4iXX0=
427
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIm1hdGNoIiwicmVnZXhwIiwicmVxIiwicmVzIiwibmV4dCIsInZhbHVlIiwiZXhlYyIsInNlcnZlRmF2aWNvbiIsImNvbmZpZyIsImxvZ29Db25mIiwid2ViIiwiZmF2aWNvbiIsInN0YXR1cyIsIl8iLCJpc0VtcHR5IiwidmFsaWRhdG9yIiwiaXNVUkwiLCJyZXF1aXJlX2hvc3QiLCJyZXF1aXJlX3ZhbGlkX3Byb3RvY29sIiwicmVkaXJlY3QiLCJmYXZpY29uUGF0aCIsInBhdGgiLCJub3JtYWxpemUiLCJmcyIsImFjY2VzcyIsImNvbnN0YW50cyIsIlJfT0siLCJlcnIiLCJtZXNzYWdlIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiLCJzZXRIZWFkZXIiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsInBvc2l4Iiwiam9pbiIsIl9fZGlybmFtZSIsInNldFNlY3VyaXR5V2ViSGVhZGVycyIsImhlYWRlciIsIkhFQURFUlMiLCJGUkFNRVNfT1BUSU9OUyIsIkNTUCIsIkNUTyIsIlhTUyIsInZhbGlkYXRlTmFtZSIsIm5hbWUiLCJFcnJvckNvZGUiLCJnZXRGb3JiaWRkZW4iLCJ2YWxpZGF0ZVBhY2thZ2UiLCJtZWRpYSIsImV4cGVjdCIsImhlYWRlcnMiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsImdldENvZGUiLCJVTlNVUFBPUlRFRF9NRURJQSIsImdldCIsImVuY29kZVNjb3BlUGFja2FnZSIsInVybCIsImluZGV4T2YiLCJyZXBsYWNlIiwiZXhwZWN0SnNvbiIsImJvZHkiLCJnZXRCYWRSZXF1ZXN0IiwiYW50aUxvb3AiLCJ2aWEiLCJhcnIiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJtIiwic2VydmVyX2lkIiwiTE9PUF9ERVRFQ1RFRCIsImFsbG93IiwiYXV0aCIsImFjdGlvbiIsInBhdXNlIiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJzY29wZSIsInBhY2thZ2UiLCJwYWNrYWdlVmVyc2lvbiIsInVuZGVmaW5lZCIsImZpbGVuYW1lIiwidmVyc2lvbnMiLCJPYmplY3QiLCJrZXlzIiwicmVtb3RlIiwicmVtb3RlX3VzZXIiLCJlcnJvciIsImFsbG93ZWQiLCJyZXN1bWUiLCJnZXRJbnRlcm5hbEVycm9yIiwiQVBJX0VSUk9SIiwiUExVR0lOX0VSUk9SIiwiZmluYWwiLCJzdGF0dXNDb2RlIiwiVU5BVVRIT1JJWkVEIiwiZ2V0SGVhZGVyIiwiV1dXX0FVVEgiLCJUT0tFTl9CQVNJQyIsIlRPS0VOX0JFQVJFUiIsImlzU3RyaW5nIiwiaXNPYmplY3QiLCJKU09OIiwiaXNOaWwiLCJsb2NhbHMiLCJfdmVyZGFjY2lvX2Vycm9yIiwic3RyaW5naWZ5IiwiT0siLCJNVUxUSVBMRV9DSE9JQ0VTIiwiRVRBRyIsInNvY2tldCIsImRlc3Ryb3kiLCJzZW5kIiwiTE9HX1NUQVRVU19NRVNTQUdFIiwiTE9HX1ZFUkRBQ0NJT19FUlJPUiIsIkxPR19WRVJEQUNDSU9fQllURVMiLCJsb2ciLCJfYXV0aCIsImF1dGhvcml6YXRpb24iLCJfY29va2llIiwiY29va2llIiwib3JpZ2luYWxVcmwiLCJsb2dnZXIiLCJodHRwIiwiaXAiLCJieXRlc2luIiwiZXhwZXJpbWVudHMiLCJieXRlc2luX29mZiIsIm9uIiwiY2h1bmsiLCJieXRlc291dCIsIl93cml0ZSIsIndyaXRlIiwiYnVmIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJsb2dIYXNCZWVuQ2FsbGVkIiwiZm9yd2FyZGVkRm9yIiwicmVtb3RlQWRkcmVzcyIsImNvbm5lY3Rpb24iLCJyZW1vdGVJUCIsInJlcXVlc3QiLCJtZXRob2QiLCJ1c2VyIiwiYnl0ZXMiLCJpbiIsIm91dCIsIl9lbmQiLCJlcnJvclJlcG9ydGluZ01pZGRsZXdhcmUiLCJyZXBvcnRfZXJyb3IiLCJCQURfUkVRVUVTVCIsImhlYWRlcnNTZW50IiwiVU5LTk9XTl9FUlJPUiIsIklOVEVSTkFMX0VSUk9SIiwiSU5URVJOQUxfU0VSVkVS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QUcsQ0FBQytHLE9BQUo7QUFDRCxPQUhELE1BR08sSUFBSSxDQUFDL0csR0FBRyxDQUFDdUosV0FBVCxFQUFzQjtBQUMzQnZKLFFBQUFBLEdBQUcsQ0FBQ1MsTUFBSixDQUFXaUIsdUJBQVkrSCxjQUF2QjtBQUNBeEosUUFBQUEsSUFBSSxDQUFDO0FBQUVzRixVQUFBQSxLQUFLLEVBQUVJLHFCQUFVK0Q7QUFBbkIsU0FBRCxDQUFKO0FBQ0QsT0FITSxNQUdBLENBQ0w7QUFDRDtBQUNGO0FBQ0YsR0FwQkg7O0FBc0JBekosRUFBQUEsSUFBSTtBQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdG9yJztcblxuaW1wb3J0IHsgQ29uZmlnLCBQYWNrYWdlLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29tbW9ucy1hcGknO1xuaW1wb3J0IHsgdmFsaWRhdGVOYW1lIGFzIHV0aWxWYWxpZGF0ZU5hbWUsIHZhbGlkYXRlUGFja2FnZSBhcyB1dGlsVmFsaWRhdGVQYWNrYWdlLCBnZXRWZXJzaW9uRnJvbVRhcmJhbGwsIGlzT2JqZWN0LCBFcnJvckNvZGUgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBIRUFERVJfVFlQRSwgSEVBREVSUywgSFRUUF9TVEFUVVMsIFRPS0VOX0JBU0lDLCBUT0tFTl9CRUFSRVIgfSBmcm9tICcuLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IHN0cmluZ1RvTUQ1IH0gZnJvbSAnLi4vbGliL2NyeXB0by11dGlscyc7XG5pbXBvcnQgeyAkUmVzcG9uc2VFeHRlbmQsICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJQXV0aCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xpYi9sb2dnZXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbycpO1xuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2gocmVnZXhwOiBSZWdFeHApOiBhbnkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHJlZ2V4cC5leGVjKHZhbHVlKSkge1xuICAgICAgbmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0KCdyb3V0ZScpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlRmF2aWNvbihjb25maWc6IENvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGxvZ29Db25mOiBzdHJpbmcgPSBjb25maWc/LndlYj8uZmF2aWNvbiBhcyBzdHJpbmc7XG4gICAgICBpZiAobG9nb0NvbmYgPT09ICcnKSB7XG4gICAgICAgIGRlYnVnKCdmYXZpY29uIGRpc2FibGVkJyk7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIH0gZWxzZSBpZiAoIV8uaXNFbXB0eShsb2dvQ29uZikpIHtcbiAgICAgICAgZGVidWcoJ2N1c3RvbSBmYXZpY29uJyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWxpZGF0b3IuaXNVUkwobG9nb0NvbmYsIHtcbiAgICAgICAgICAgIHJlcXVpcmVfaG9zdDogdHJ1ZSxcbiAgICAgICAgICAgIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGVidWcoJ3JlZGlyZWN0IHRvICVvJywgbG9nb0NvbmYpO1xuICAgICAgICAgIHJlcy5yZWRpcmVjdChsb2dvQ29uZik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZhdmljb25QYXRoID0gcGF0aC5ub3JtYWxpemUobG9nb0NvbmYpO1xuICAgICAgICAgIGRlYnVnKCdzZXJ2aW5nIGZhdmljb24gZnJvbSAlbycsIGZhdmljb25QYXRoKTtcbiAgICAgICAgICBmcy5hY2Nlc3MoZmF2aWNvblBhdGgsIGZzLmNvbnN0YW50cy5SX09LLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGRlYnVnKCdubyByZWFkIHBlcm1pc3Npb25zIHRvIHJlYWQ6ICVvLCByZWFzb246JywgbG9nb0NvbmYsIGVycj8ubWVzc2FnZSk7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk5PVF9GT1VORCkuZW5kKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnaW1hZ2UveC1pY29uJyk7XG4gICAgICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmF2aWNvblBhdGgpLnBpcGUocmVzKTtcbiAgICAgICAgICAgICAgZGVidWcoJ3JlbmRlcmVkIGN1c3RvbSBpY28nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignY29udGVudC10eXBlJywgJ2ltYWdlL3gtaWNvbicpO1xuICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKHBhdGgucG9zaXguam9pbihfX2Rpcm5hbWUsICcuL3dlYi9odG1sL2Zhdmljb24uaWNvJykpLnBpcGUocmVzKTtcbiAgICAgICAgZGVidWcoJ3JlbmRlcmVkIGljbycpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ2Vycm9yIHRyaWdnZXJlZCwgZmF2aWNvbiBub3QgZm91bmQnKTtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKS5lbmQoKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWN1cml0eVdlYkhlYWRlcnMocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgLy8gZGlzYWJsZSBsb2FkaW5nIGluIGZyYW1lcyAoY2xpY2tqYWNraW5nLCBldGMuKVxuICByZXMuaGVhZGVyKEhFQURFUlMuRlJBTUVTX09QVElPTlMsICdkZW55Jyk7XG4gIC8vIGF2b2lkIHN0YWJsaXNoIGNvbm5lY3Rpb25zIG91dHNpZGUgb2YgZG9tYWluXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DU1AsIFwiY29ubmVjdC1zcmMgJ3NlbGYnXCIpO1xuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xODMzNzYzMC93aGF0LWlzLXgtY29udGVudC10eXBlLW9wdGlvbnMtbm9zbmlmZlxuICByZXMuaGVhZGVyKEhFQURFUlMuQ1RPLCAnbm9zbmlmZicpO1xuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MDkwNTc3L3doYXQtaXMtdGhlLWh0dHAtaGVhZGVyLXgteHNzLXByb3RlY3Rpb25cbiAgcmVzLmhlYWRlcihIRUFERVJTLlhTUywgJzE7IG1vZGU9YmxvY2snKTtcbiAgbmV4dCgpO1xufVxuXG4vLyBmbG93OiBleHByZXNzIGRvZXMgbm90IG1hdGNoIHByb3Blcmx5XG4vLyBmbG93IGluZm8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb3d0eXBlL2Zsb3ctdHlwZWQvaXNzdWVzP3V0Zjg9JUUyJTlDJTkzJnE9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rZXhwcmVzc1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTmFtZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlciwgdmFsdWU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmICh2YWx1ZSA9PT0gJy0nKSB7XG4gICAgLy8gc3BlY2lhbCBjYXNlIGluIGNvdWNoZGIgdXN1YWxseVxuICAgIG5leHQoJ3JvdXRlJyk7XG4gIH0gZWxzZSBpZiAodXRpbFZhbGlkYXRlTmFtZSh2YWx1ZSkpIHtcbiAgICBuZXh0KCk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKCdpbnZhbGlkICcgKyBuYW1lKSk7XG4gIH1cbn1cblxuLy8gZmxvdzogZXhwcmVzcyBkb2VzIG5vdCBtYXRjaCBwcm9wZXJseVxuLy8gZmxvdyBpbmZvIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG93dHlwZS9mbG93LXR5cGVkL2lzc3Vlcz91dGY4PSVFMiU5QyU5MyZxPWlzJTNBaXNzdWUraXMlM0FvcGVuK2V4cHJlc3NcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBhY2thZ2UocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIsIHZhbHVlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09ICctJykge1xuICAgIC8vIHNwZWNpYWwgY2FzZSBpbiBjb3VjaGRiIHVzdWFsbHlcbiAgICBuZXh0KCdyb3V0ZScpO1xuICB9IGVsc2UgaWYgKHV0aWxWYWxpZGF0ZVBhY2thZ2UodmFsdWUpKSB7XG4gICAgbmV4dCgpO1xuICB9IGVsc2Uge1xuICAgIG5leHQoRXJyb3JDb2RlLmdldEZvcmJpZGRlbignaW52YWxpZCAnICsgbmFtZSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYShleHBlY3Q6IHN0cmluZyB8IG51bGwpOiBhbnkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgaWYgKHJlcS5oZWFkZXJzW0hFQURFUl9UWVBFLkNPTlRFTlRfVFlQRV0gIT09IGV4cGVjdCkge1xuICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5VTlNVUFBPUlRFRF9NRURJQSwgJ3dyb25nIGNvbnRlbnQtdHlwZSwgZXhwZWN0OiAnICsgZXhwZWN0ICsgJywgZ290OiAnICsgcmVxLmdldChIRUFERVJfVFlQRS5DT05URU5UX1RZUEUpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTY29wZVBhY2thZ2UocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgaWYgKHJlcS51cmwuaW5kZXhPZignQCcpICE9PSAtMSkge1xuICAgIC8vIGUuZy46IC9Ab3JnL3BrZy8xLjIuMyAtPiAvQG9yZyUyRnBrZy8xLjIuMywgL0BvcmclMkZwa2cvMS4yLjMgLT4gL0BvcmclMkZwa2cvMS4yLjNcbiAgICByZXEudXJsID0gcmVxLnVybC5yZXBsYWNlKC9eKFxcL0BbXlxcLyVdKylcXC8oPyEkKS8sICckMSUyRicpO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdEpzb24ocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgaWYgKCFpc09iamVjdChyZXEuYm9keSkpIHtcbiAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChcImNhbid0IHBhcnNlIGluY29taW5nIGpzb25cIikpO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFudGlMb29wKGNvbmZpZzogQ29uZmlnKTogRnVuY3Rpb24ge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgaWYgKHJlcT8uaGVhZGVycz8udmlhICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGFyciA9IHJlcS5oZWFkZXJzLnZpYS5zcGxpdCgnLCcpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gYXJyW2ldLm1hdGNoKC9cXHMqKFxcUyspXFxzKyhcXFMrKS8pO1xuICAgICAgICBpZiAobSAmJiBtWzJdID09PSBjb25maWcuc2VydmVyX2lkKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuTE9PUF9ERVRFQ1RFRCwgJ2xvb3AgZGV0ZWN0ZWQnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsb3coYXV0aDogSUF1dGgpOiBGdW5jdGlvbiB7XG4gIHJldHVybiBmdW5jdGlvbiAoYWN0aW9uOiBzdHJpbmcpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVxLnBhdXNlKCk7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGUgPyBgQCR7cmVxLnBhcmFtcy5zY29wZX0vJHtyZXEucGFyYW1zLnBhY2thZ2V9YCA6IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICAgIGxldCBwYWNrYWdlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHJlcS5wYXJhbXMuZmlsZW5hbWUpIHtcbiAgICAgICAgcGFja2FnZVZlcnNpb24gPSBnZXRWZXJzaW9uRnJvbVRhcmJhbGwocmVxLnBhcmFtcy5maWxlbmFtZSkgfHwgdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxLmJvZHkudmVyc2lvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHBhY2thZ2VWZXJzaW9uID0gT2JqZWN0LmtleXMocmVxLmJvZHkudmVyc2lvbnMpWzBdO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVtb3RlOiBSZW1vdGVVc2VyID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgZGVidWcoJ1ttaWRkbGV3YXJlL2FsbG93XVslb10gYWxsb3cgZm9yICVvJywgYWN0aW9uLCByZW1vdGU/Lm5hbWUpO1xuICAgICAgYXV0aFsnYWxsb3dfJyArIGFjdGlvbl0oeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfSwgcmVtb3RlLCBmdW5jdGlvbiAoZXJyb3IsIGFsbG93ZWQpOiB2b2lkIHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBuZXh0KGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmIChhbGxvd2VkKSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGxhc3QgcGx1Z2luICh0aGF0J3Mgb3VyIGJ1aWx0LWluIG9uZSkgcmV0dXJucyBlaXRoZXJcbiAgICAgICAgICAvLyBjYihlcnIpIG9yIGNiKG51bGwsIHRydWUpLCBzbyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgICB0aHJvdyBFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuUExVR0lOX0VSUk9SKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaWRkbGV3YXJlRXJyb3Ige1xuICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBGaW5hbEJvZHkgPSBQYWNrYWdlIHwgTWlkZGxld2FyZUVycm9yIHwgc3RyaW5nO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluYWwoYm9keTogRmluYWxCb2R5LCByZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCAmJiAhcmVzLmdldEhlYWRlcihIRUFERVJTLldXV19BVVRIKSkge1xuICAgIC8vIHRoZXkgc2F5IGl0J3MgcmVxdWlyZWQgZm9yIDQwMSwgc28uLi5cbiAgICByZXMuaGVhZGVyKEhFQURFUlMuV1dXX0FVVEgsIGAke1RPS0VOX0JBU0lDfSwgJHtUT0tFTl9CRUFSRVJ9YCk7XG4gIH1cblxuICB0cnkge1xuICAgIGlmIChfLmlzU3RyaW5nKGJvZHkpIHx8IF8uaXNPYmplY3QoYm9keSkpIHtcbiAgICAgIGlmICghcmVzLmdldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSkpIHtcbiAgICAgICAgcmVzLmhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyAmJiBfLmlzTmlsKGJvZHkpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAodHlwZW9mIChib2R5IGFzIE1pZGRsZXdhcmVFcnJvcikuZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmVzLmxvY2Fscy5fdmVyZGFjY2lvX2Vycm9yID0gKGJvZHkgYXMgTWlkZGxld2FyZUVycm9yKS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSwgdW5kZWZpbmVkLCAnICAnKSArICdcXG4nO1xuICAgICAgfVxuXG4gICAgICAvLyBkb24ndCBzZW5kIGV0YWdzIHdpdGggZXJyb3JzXG4gICAgICBpZiAoIXJlcy5zdGF0dXNDb2RlIHx8IChyZXMuc3RhdHVzQ29kZSA+PSBIVFRQX1NUQVRVUy5PSyAmJiByZXMuc3RhdHVzQ29kZSA8IEhUVFBfU1RBVFVTLk1VTFRJUExFX0NIT0lDRVMpKSB7XG4gICAgICAgIHJlcy5oZWFkZXIoSEVBREVSUy5FVEFHLCAnXCInICsgc3RyaW5nVG9NRDUoYm9keSBhcyBzdHJpbmcpICsgJ1wiJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlbmQobnVsbCksIHNlbmQoMjA0KSwgZXRjLlxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gaWYgdmVyZGFjY2lvIHNlbmRzIGhlYWRlcnMgZmlyc3QsIGFuZCB0aGVuIGNhbGxzIHJlcy5zZW5kKClcbiAgICAvLyBhcyBhbiBlcnJvciBoYW5kbGVyLCB3ZSBjYW4ndCByZXBvcnQgZXJyb3IgcHJvcGVybHksXG4gICAgLy8gYW5kIHNob3VsZCBqdXN0IGNsb3NlIHNvY2tldFxuICAgIGlmIChlcnIubWVzc2FnZS5tYXRjaCgvc2V0IGhlYWRlcnMgYWZ0ZXIgdGhleSBhcmUgc2VudC8pKSB7XG4gICAgICBpZiAoXy5pc05pbChyZXMuc29ja2V0KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXMuc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgcmVzLnNlbmQoYm9keSk7XG59XG5cbmV4cG9ydCBjb25zdCBMT0dfU1RBVFVTX01FU1NBR0UgPSBcIkB7c3RhdHVzfSwgdXNlcjogQHt1c2VyfShAe3JlbW90ZUlQfSksIHJlcTogJ0B7cmVxdWVzdC5tZXRob2R9IEB7cmVxdWVzdC51cmx9J1wiO1xuZXhwb3J0IGNvbnN0IExPR19WRVJEQUNDSU9fRVJST1IgPSBgJHtMT0dfU1RBVFVTX01FU1NBR0V9LCBlcnJvcjogQHshZXJyb3J9YDtcbmV4cG9ydCBjb25zdCBMT0dfVkVSREFDQ0lPX0JZVEVTID0gYCR7TE9HX1NUQVRVU19NRVNTQUdFfSwgYnl0ZXM6IEB7Ynl0ZXMuaW59L0B7Ynl0ZXMub3V0fWA7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2coY29uZmlnOiBDb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IF9hdXRoID0gcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbjtcbiAgICBpZiAoXy5pc05pbChfYXV0aCkgPT09IGZhbHNlKSB7XG4gICAgICByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uID0gJzxDbGFzc2lmaWVkPic7XG4gICAgfVxuXG4gICAgY29uc3QgX2Nvb2tpZSA9IHJlcS5nZXQoJ2Nvb2tpZScpO1xuICAgIGlmIChfLmlzTmlsKF9jb29raWUpID09PSBmYWxzZSkge1xuICAgICAgcmVxLmhlYWRlcnMuY29va2llID0gJzxDbGFzc2lmaWVkPic7XG4gICAgfVxuXG4gICAgcmVxLnVybCA9IHJlcS5vcmlnaW5hbFVybDtcbiAgICAvLyBhdm9pZCBsb2cgbm9pc2UgZGF0YSBmcm9tIHN0YXRpYyBjb250ZW50XG4gICAgaWYgKHJlcS5vcmlnaW5hbFVybC5tYXRjaCgvc3RhdGljLykgPT09IG51bGwpIHtcbiAgICAgIGxvZ2dlci5odHRwKHsgcmVxOiByZXEsIGlwOiByZXEuaXAgfSwgXCJAe2lwfSByZXF1ZXN0ZWQgJ0B7cmVxLm1ldGhvZH0gQHtyZXEudXJsfSdcIik7XG4gICAgfVxuICAgIHJlcS5vcmlnaW5hbFVybCA9IHJlcS51cmw7XG5cbiAgICBpZiAoXy5pc05pbChfYXV0aCkgPT09IGZhbHNlKSB7XG4gICAgICByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uID0gX2F1dGg7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNOaWwoX2Nvb2tpZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXEuaGVhZGVycy5jb29raWUgPSBfY29va2llO1xuICAgIH1cblxuICAgIGxldCBieXRlc2luID0gMDtcbiAgICBpZiAoY29uZmlnPy5leHBlcmltZW50cz8uYnl0ZXNpbl9vZmYgIT09IHRydWUpIHtcbiAgICAgIHJlcS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuayk6IHZvaWQge1xuICAgICAgICBieXRlc2luICs9IGNodW5rLmxlbmd0aDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBieXRlc291dCA9IDA7XG4gICAgY29uc3QgX3dyaXRlID0gcmVzLndyaXRlO1xuICAgIC8vIEZJWE1FOiByZXMud3JpdGUgc2hvdWxkIHJldHVybiBib29sZWFuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlcy53cml0ZSA9IGZ1bmN0aW9uIChidWYpOiBib29sZWFuIHtcbiAgICAgIGJ5dGVzb3V0ICs9IGJ1Zi5sZW5ndGg7XG4gICAgICAvKiBlc2xpbnQgcHJlZmVyLXJlc3QtcGFyYW1zOiBcIm9mZlwiICovXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBfd3JpdGUuYXBwbHkocmVzLCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICBsZXQgbG9nSGFzQmVlbkNhbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGxvZyA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmIChsb2dIYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZ0hhc0JlZW5DYWxsZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBmb3J3YXJkZWRGb3IgPSByZXEuZ2V0KCd4LWZvcndhcmRlZC1mb3InKTtcbiAgICAgIGNvbnN0IHJlbW90ZUFkZHJlc3MgPSByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzO1xuICAgICAgY29uc3QgcmVtb3RlSVAgPSBmb3J3YXJkZWRGb3IgPyBgJHtmb3J3YXJkZWRGb3J9IHZpYSAke3JlbW90ZUFkZHJlc3N9YCA6IHJlbW90ZUFkZHJlc3M7XG4gICAgICBsZXQgbWVzc2FnZTtcbiAgICAgIGlmIChyZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IpIHtcbiAgICAgICAgbWVzc2FnZSA9IExPR19WRVJEQUNDSU9fRVJST1I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gTE9HX1ZFUkRBQ0NJT19CWVRFUztcbiAgICAgIH1cblxuICAgICAgcmVxLnVybCA9IHJlcS5vcmlnaW5hbFVybDtcbiAgICAgIC8vIGF2b2lkIGxvZyBub2lzZSBkYXRhIGZyb20gc3RhdGljIGNvbnRlbnRcbiAgICAgIGlmIChyZXEudXJsLm1hdGNoKC9zdGF0aWMvKSA9PT0gbnVsbCkge1xuICAgICAgICBsb2dnZXIuaHR0cChcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgICAgICAgdXJsOiByZXEudXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXI6IChyZXEucmVtb3RlX3VzZXIgJiYgcmVxLnJlbW90ZV91c2VyLm5hbWUpIHx8IG51bGwsXG4gICAgICAgICAgICByZW1vdGVJUCxcbiAgICAgICAgICAgIHN0YXR1czogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBlcnJvcjogcmVzLmxvY2Fscy5fdmVyZGFjY2lvX2Vycm9yLFxuICAgICAgICAgICAgYnl0ZXM6IHtcbiAgICAgICAgICAgICAgaW46IGJ5dGVzaW4sXG4gICAgICAgICAgICAgIG91dDogYnl0ZXNvdXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICApO1xuICAgICAgICByZXEub3JpZ2luYWxVcmwgPSByZXEudXJsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgbG9nKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBfZW5kID0gcmVzLmVuZDtcbiAgICByZXMuZW5kID0gZnVuY3Rpb24gKGJ1Zik6IHZvaWQge1xuICAgICAgaWYgKGJ1Zikge1xuICAgICAgICBieXRlc291dCArPSBidWYubGVuZ3RoO1xuICAgICAgfVxuICAgICAgLyogZXNsaW50IHByZWZlci1yZXN0LXBhcmFtczogXCJvZmZcIiAqL1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgX2VuZC5hcHBseShyZXMsIGFyZ3VtZW50cyk7XG4gICAgICBsb2coKTtcbiAgICB9O1xuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuLy8gTWlkZGxld2FyZVxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yUmVwb3J0aW5nTWlkZGxld2FyZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICByZXMubG9jYWxzLnJlcG9ydF9lcnJvciA9XG4gICAgcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IgfHxcbiAgICBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvcik6IHZvaWQge1xuICAgICAgaWYgKGVyci5zdGF0dXMgJiYgZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgNjAwKSB7XG4gICAgICAgIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzKTtcbiAgICAgICAgICBuZXh0KHsgZXJyb3I6IGVyci5tZXNzYWdlIHx8IEFQSV9FUlJPUi5VTktOT1dOX0VSUk9SIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnI6IGVyciB9LCAndW5leHBlY3RlZCBlcnJvcjogQHshZXJyLm1lc3NhZ2V9XFxuQHtlcnIuc3RhY2t9Jyk7XG4gICAgICAgIGlmICghcmVzLnN0YXR1cyB8fCAhcmVzLnNlbmQpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ3RoaXMgaXMgYW4gZXJyb3IgaW4gZXhwcmVzcy5qcywgcGxlYXNlIHJlcG9ydCB0aGlzJyk7XG4gICAgICAgICAgcmVzLmRlc3Ryb3koKTtcbiAgICAgICAgfSBlbHNlIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUik7XG4gICAgICAgICAgbmV4dCh7IGVycm9yOiBBUElfRVJST1IuSU5URVJOQUxfU0VSVkVSX0VSUk9SIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHNvY2tldCBzaG91bGQgYmUgYWxyZWFkeSBjbG9zZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgbmV4dCgpO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verdaccio",
3
- "version": "5.1.2",
3
+ "version": "5.1.6",
4
4
  "description": "A lightweight private npm proxy registry",
5
5
  "author": {
6
6
  "name": "Verdaccio Maintainers",
@@ -18,15 +18,15 @@
18
18
  "url": "https://opencollective.com/verdaccio"
19
19
  },
20
20
  "dependencies": {
21
- "@verdaccio/commons-api": "10.0.0",
22
- "@verdaccio/local-storage": "10.0.6",
21
+ "@verdaccio/commons-api": "10.0.1",
22
+ "@verdaccio/local-storage": "10.0.7",
23
23
  "@verdaccio/readme": "10.0.0",
24
24
  "@verdaccio/streams": "10.0.0",
25
- "@verdaccio/ui-theme": "3.1.0",
25
+ "@verdaccio/ui-theme": "3.2.1",
26
26
  "JSONStream": "1.3.5",
27
- "async": "3.2.0",
27
+ "async": "3.2.1",
28
28
  "body-parser": "1.19.0",
29
- "clipanion": "3.0.0",
29
+ "clipanion": "3.0.1",
30
30
  "compression": "1.7.4",
31
31
  "cookies": "0.8.0",
32
32
  "cors": "2.8.5",
@@ -50,14 +50,14 @@
50
50
  "minimatch": "3.0.4",
51
51
  "mkdirp": "1.0.4",
52
52
  "mv": "2.1.1",
53
- "pino": "6.12.0",
53
+ "pino": "6.13.0",
54
54
  "pkginfo": "0.4.1",
55
55
  "prettier-bytes": "^1.0.4",
56
56
  "pretty-ms": "^7.0.1",
57
57
  "request": "2.88.0",
58
58
  "semver": "7.3.5",
59
59
  "validator": "13.6.0",
60
- "verdaccio-audit": "10.0.0",
60
+ "verdaccio-audit": "10.0.2",
61
61
  "verdaccio-htpasswd": "10.0.0"
62
62
  },
63
63
  "devDependencies": {
@@ -132,12 +132,12 @@
132
132
  "puppeteer": "5.5.0",
133
133
  "rimraf": "3.0.2",
134
134
  "selfsigned": "1.10.11",
135
- "standard-version": "9.3.0",
135
+ "standard-version": "9.3.1",
136
136
  "supertest": "6.1.3",
137
- "ts-node": "10.1.0",
137
+ "ts-node": "10.2.0",
138
138
  "typescript": "4.1.3",
139
- "verdaccio-auth-memory": "10.0.0",
140
- "verdaccio-memory": "10.0.0"
139
+ "verdaccio-auth-memory": "10.0.1",
140
+ "verdaccio-memory": "10.0.1"
141
141
  },
142
142
  "keywords": [
143
143
  "private",