verdaccio 5.2.1 → 5.3.1
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 +28 -0
- package/build/api/web/endpoint/package.js +6 -2
- package/build/lib/utils.js +4 -3
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
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.3.1](https://github.com/verdaccio/verdaccio/compare/v5.3.0...v5.3.1) (2021-12-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* conflict core-js dependency ([#2754](https://github.com/verdaccio/verdaccio/issues/2754)) ([29d4551](https://github.com/verdaccio/verdaccio/commit/29d4551e5bfc066a5ff7109786a73ec8e782a65f))
|
|
11
|
+
|
|
12
|
+
## [5.3.0](https://github.com/verdaccio/verdaccio/compare/v5.2.2...v5.3.0) (2021-12-08)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* markdown anchor links in package readme.md broken [#2712](https://github.com/verdaccio/verdaccio/issues/2712) ([820c9d5](https://github.com/verdaccio/verdaccio/commit/820c9d5db2fe7e99cab3c75c431b8df7dfd096d0))
|
|
18
|
+
* update pnpm and bum up core deps ([#2716](https://github.com/verdaccio/verdaccio/issues/2716)) ([60cd25c](https://github.com/verdaccio/verdaccio/commit/60cd25ce4fe107f7d25780447289b6fb0e21d4b6))
|
|
19
|
+
* **deps:** update dependency @verdaccio/commons-api to v10.0.2 ([#2706](https://github.com/verdaccio/verdaccio/issues/2706)) ([73d565f](https://github.com/verdaccio/verdaccio/commit/73d565f5f558b7746f538d8fbbb15ea24dcedb23))
|
|
20
|
+
* **deps:** update dependency @verdaccio/readme to v10.0.1 ([#2708](https://github.com/verdaccio/verdaccio/issues/2708)) ([41cadcc](https://github.com/verdaccio/verdaccio/commit/41cadccaef358bb11f4b2f015b0885f32dffa91a))
|
|
21
|
+
* **deps:** update dependency @verdaccio/streams to v10.0.1 ([#2709](https://github.com/verdaccio/verdaccio/issues/2709)) ([74d7d02](https://github.com/verdaccio/verdaccio/commit/74d7d02c396185f76767f234592eb14f497d7929))
|
|
22
|
+
* **deps:** update dependency http-errors to v1.8.1 ([#2705](https://github.com/verdaccio/verdaccio/issues/2705)) ([eee19a5](https://github.com/verdaccio/verdaccio/commit/eee19a5f791dd93f4ee078243ed310fa88aa5ae7))
|
|
23
|
+
* **deps:** update dependency verdaccio-audit to v10.0.3 ([#2710](https://github.com/verdaccio/verdaccio/issues/2710)) ([8c074e8](https://github.com/verdaccio/verdaccio/commit/8c074e8f24e61e9c399bf4f2e6dbaa0d5d5da9fd))
|
|
24
|
+
* **deps:** update dependency verdaccio-htpasswd to v10.0.1 ([#2711](https://github.com/verdaccio/verdaccio/issues/2711)) ([8e28848](https://github.com/verdaccio/verdaccio/commit/8e2884836b4d8a659ca1cec80794c7e30ef6c208))
|
|
25
|
+
|
|
26
|
+
### [5.2.2](https://github.com/verdaccio/verdaccio/compare/v5.2.1...v5.2.2) (2021-11-08)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* update python dependency on docker image ([#2644](https://github.com/verdaccio/verdaccio/issues/2644)) ([0eab3e1](https://github.com/verdaccio/verdaccio/commit/0eab3e1746e4479bc9baad0e74e10cb23f197f0e))
|
|
32
|
+
|
|
5
33
|
### [5.2.1](https://github.com/verdaccio/verdaccio/compare/v5.2.0...v5.2.1) (2021-11-08)
|
|
6
34
|
|
|
7
35
|
|
|
@@ -115,7 +115,11 @@ function addPackageWebApi(route, storage, auth, config) {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
res.set(_constants.HEADER_TYPE.CONTENT_TYPE, _constants.HEADERS.TEXT_PLAIN);
|
|
118
|
-
|
|
118
|
+
const referer = req.get('Referer');
|
|
119
|
+
const pathname = referer ? new URL(referer).pathname : undefined;
|
|
120
|
+
next((0, _utils.parseReadme)(info.name, info.readme, {
|
|
121
|
+
pathname
|
|
122
|
+
}));
|
|
119
123
|
}
|
|
120
124
|
});
|
|
121
125
|
});
|
|
@@ -174,4 +178,4 @@ function addPackageWebApi(route, storage, auth, config) {
|
|
|
174
178
|
|
|
175
179
|
var _default = addPackageWebApi;
|
|
176
180
|
exports.default = _default;
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZ2V0T3JkZXIiLCJvcmRlciIsImFkZFBhY2thZ2VXZWJBcGkiLCJyb3V0ZSIsInN0b3JhZ2UiLCJhdXRoIiwiY29uZmlnIiwiY2FuIiwiY2hlY2tBbGxvdyIsIm5hbWUiLCJyZW1vdGVVc2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsImVyciIsImFsbG93ZWQiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsInBhY2thZ2VzIiwicHJvY2Vzc1BhY2thZ2VzIiwicGVybWlzc2lvbnMiLCJwYWNrZ2VzQ29weSIsInNsaWNlIiwicGtnIiwicGtnQ29weSIsImF1dGhvciIsInJlbW90ZV91c2VyIiwid2ViIiwiYXZhdGFyIiwiZW1haWwiLCJncmF2YXRhciIsIl8iLCJpc05pbCIsImRpc3QiLCJpc051bGwiLCJ0YXJiYWxsIiwidXJsX3ByZWZpeCIsInB1c2giLCJsb2dnZXIiLCJlcnJvciIsInNvcnRfcGFja2FnZXMiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwicGFyYW1zIiwic2NvcGUiLCJwYWNrYWdlIiwiZ2V0UGFja2FnZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwic2V0IiwiSEVBREVSX1RZUEUiLCJDT05URU5UX1RZUEUiLCJIRUFERVJTIiwiVEVYVF9QTEFJTiIsInJlYWRtZSIsImtlZXBVcExpbmtEYXRhIiwidiIsInF1ZXJ5Iiwic2lkZUJhckluZm8iLCJjbG9uZSIsInZlcnNpb25zIiwibGF0ZXN0IiwiRElTVF9UQUdTIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFZQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUdB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NkIsWUFBQUEsV0FBVyxHQUFHLCtCQUFtQkEsV0FBbkIsQ0FBZDtBQUNEOztBQUNEM0MsVUFBQUEsSUFBSSxDQUFDMkMsV0FBRCxDQUFKO0FBQ0QsU0F6QkQsTUF5Qk87QUFDTDVDLFVBQUFBLEdBQUcsQ0FBQ2lELE1BQUosQ0FBV0MsdUJBQVlDLFNBQXZCO0FBQ0FuRCxVQUFBQSxHQUFHLENBQUNvRCxHQUFKO0FBQ0Q7QUFDRjtBQW5DZ0IsS0FBbkI7QUFxQ0QsR0F4Q0Q7QUF5Q0Q7O2VBRWN0RSxnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkU2NvcGUsXG4gIGFkZEdyYXZhdGFyU3VwcG9ydCxcbiAgZGVsZXRlUHJvcGVydGllcyxcbiAgc29ydEJ5TmFtZSxcbiAgcGFyc2VSZWFkbWUsXG4gIGZvcm1hdEF1dGhvcixcbiAgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMsXG4gIGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpLFxuICBpc1ZlcnNpb25WYWxpZCxcbiAgRXJyb3JDb2RlLFxufSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWxsb3cgfSBmcm9tICcuLi8uLi9taWRkbGV3YXJlJztcbmltcG9ydCB7IERJU1RfVEFHUywgSEVBREVSX1RZUEUsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUdyYXZhdGFyVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXNlcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IElBdXRoLCAkUmVzcG9uc2VFeHRlbmQsICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJU3RvcmFnZUhhbmRsZXIsICRTaWRlYmFyUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZ2V0T3JkZXIgPSAob3JkZXIgPSAnYXNjJykgPT4ge1xuICByZXR1cm4gb3JkZXIgPT09ICdhc2MnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFja2NhZ2VFeHQgPSBQYWNrYWdlICYgeyBhdXRob3I6IGFueTsgZGlzdD86IHsgdGFyYmFsbDogc3RyaW5nIH0gfTtcblxuZnVuY3Rpb24gYWRkUGFja2FnZVdlYkFwaShyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGF1dGg6IElBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcblxuICBjb25zdCBjaGVja0FsbG93ID0gKG5hbWUsIHJlbW90ZVVzZXIpOiBQcm9taXNlPGJvb2xlYW4+ID0+XG4gICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXV0aC5hbGxvd19hY2Nlc3MoeyBwYWNrYWdlTmFtZTogbmFtZSB9LCByZW1vdGVVc2VyLCAoZXJyLCBhbGxvd2VkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoYWxsb3dlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIC8vIEdldCBsaXN0IG9mIGFsbCB2aXNpYmxlIHBhY2thZ2VcbiAgcm91dGUuZ2V0KCcvcGFja2FnZXMnLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBzdG9yYWdlLmdldExvY2FsRGF0YWJhc2UoYXN5bmMgZnVuY3Rpb24gKGVyciwgcGFja2FnZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzUGFja2FnZXMocGFja2FnZXM6IFBhY2tjYWdlRXh0W10gPSBbXSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zOiBQYWNrY2FnZUV4dFtdID0gW107XG4gICAgICAgIGNvbnN0IHBhY2tnZXNDb3B5ID0gcGFja2FnZXMuc2xpY2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBwa2cgb2YgcGFja2dlc0NvcHkpIHtcbiAgICAgICAgICBjb25zdCBwa2dDb3B5ID0geyAuLi5wa2cgfTtcbiAgICAgICAgICBwa2dDb3B5LmF1dGhvciA9IGZvcm1hdEF1dGhvcihwa2cuYXV0aG9yKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IGNoZWNrQWxsb3cocGtnLm5hbWUsIHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWIpIHtcbiAgICAgICAgICAgICAgICBwa2dDb3B5LmF1dGhvci5hdmF0YXIgPSBnZW5lcmF0ZUdyYXZhdGFyVXJsKHBrZ0NvcHkuYXV0aG9yLmVtYWlsLCBjb25maWcud2ViLmdyYXZhdGFyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIV8uaXNOaWwocGtnQ29weS5kaXN0KSAmJiAhXy5pc051bGwocGtnQ29weS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgICAgICAgcGtnQ29weS5kaXN0LnRhcmJhbGwgPSBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaShwa2dDb3B5LmRpc3QudGFyYmFsbCwgcGtnLm5hbWUsIHJlcSwgY29uZmlnLnVybF9wcmVmaXgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlcm1pc3Npb25zLnB1c2gocGtnQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBuYW1lOiBwa2cubmFtZSwgZXJyb3I6IGVyciB9LCAncGVybWlzc2lvbiBwcm9jZXNzIGZvciBAe25hbWV9IGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHdlYiB9ID0gY29uZmlnO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3Qgb3JkZXI6IGJvb2xlYW4gPSBjb25maWcud2ViID8gZ2V0T3JkZXIod2ViLnNvcnRfcGFja2FnZXMpIDogdHJ1ZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV4dChzb3J0QnlOYW1lKGF3YWl0IHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlcyksIG9yZGVyKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvLyBHZXQgcGFja2FnZSByZWFkbWVcbiAgcm91dGUuZ2V0KCcvcGFja2FnZS9yZWFkbWUvKEA6c2NvcGUvKT86cGFja2FnZS86dmVyc2lvbj8nLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVyciwgaW5mbyk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5zZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFLCBIRUFERVJTLlRFWFRfUExBSU4pO1xuICAgICAgICBuZXh0KHBhcnNlUmVhZG1lKGluZm8ubmFtZSwgaW5mby5yZWFkbWUpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJvdXRlLmdldCgnL3NpZGViYXIvKEA6c2NvcGUvKT86cGFja2FnZScsIGNhbignYWNjZXNzJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lOiBzdHJpbmcgPSByZXEucGFyYW1zLnNjb3BlID8gYWRkU2NvcGUocmVxLnBhcmFtcy5zY29wZSwgcmVxLnBhcmFtcy5wYWNrYWdlKSA6IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lOiBwYWNrYWdlTmFtZSxcbiAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAga2VlcFVwTGlua0RhdGE6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVycjogRXJyb3IsIGluZm86ICRTaWRlYmFyUGFja2FnZSk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbChlcnIpKSB7XG4gICAgICAgICAgY29uc3QgeyB2IH0gPSByZXEucXVlcnk7XG4gICAgICAgICAgbGV0IHNpZGVCYXJJbmZvOiBhbnkgPSBfLmNsb25lKGluZm8pO1xuICAgICAgICAgIHNpZGVCYXJJbmZvLnZlcnNpb25zID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoaW5mbywgcmVxLCBjb25maWcudXJsX3ByZWZpeCkudmVyc2lvbnM7XG4gICAgICAgICAgaWYgKGlzVmVyc2lvblZhbGlkKGluZm8sIHYpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QgPSBzaWRlQmFySW5mby52ZXJzaW9uc1t2XTtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IgPSBmb3JtYXRBdXRob3Ioc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW2luZm9bRElTVF9UQUdTXS5sYXRlc3RdO1xuICAgICAgICAgICAgaWYgKHNpZGVCYXJJbmZvPy5sYXRlc3QpIHtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZGVCYXJJbmZvID0gZGVsZXRlUHJvcGVydGllcyhbJ3JlYWRtZScsICdfYXR0YWNobWVudHMnLCAnX3JldicsICduYW1lJ10sIHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICBpZiAoY29uZmlnLndlYikge1xuICAgICAgICAgICAgc2lkZUJhckluZm8gPSBhZGRHcmF2YXRhclN1cHBvcnQoc2lkZUJhckluZm8sIGNvbmZpZy53ZWIuZ3JhdmF0YXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWRlQmFySW5mbyA9IGFkZEdyYXZhdGFyU3VwcG9ydChzaWRlQmFySW5mbyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoc2lkZUJhckluZm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKTtcbiAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhZGRQYWNrYWdlV2ViQXBpO1xuIl19
|
|
181
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZ2V0T3JkZXIiLCJvcmRlciIsImFkZFBhY2thZ2VXZWJBcGkiLCJyb3V0ZSIsInN0b3JhZ2UiLCJhdXRoIiwiY29uZmlnIiwiY2FuIiwiY2hlY2tBbGxvdyIsIm5hbWUiLCJyZW1vdGVVc2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsImVyciIsImFsbG93ZWQiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsInBhY2thZ2VzIiwicHJvY2Vzc1BhY2thZ2VzIiwicGVybWlzc2lvbnMiLCJwYWNrZ2VzQ29weSIsInNsaWNlIiwicGtnIiwicGtnQ29weSIsImF1dGhvciIsInJlbW90ZV91c2VyIiwid2ViIiwiYXZhdGFyIiwiZW1haWwiLCJncmF2YXRhciIsIl8iLCJpc05pbCIsImRpc3QiLCJpc051bGwiLCJ0YXJiYWxsIiwidXJsX3ByZWZpeCIsInB1c2giLCJsb2dnZXIiLCJlcnJvciIsInNvcnRfcGFja2FnZXMiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwicGFyYW1zIiwic2NvcGUiLCJwYWNrYWdlIiwiZ2V0UGFja2FnZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwic2V0IiwiSEVBREVSX1RZUEUiLCJDT05URU5UX1RZUEUiLCJIRUFERVJTIiwiVEVYVF9QTEFJTiIsInJlZmVyZXIiLCJwYXRobmFtZSIsIlVSTCIsInVuZGVmaW5lZCIsInJlYWRtZSIsImtlZXBVcExpbmtEYXRhIiwidiIsInF1ZXJ5Iiwic2lkZUJhckluZm8iLCJjbG9uZSIsInZlcnNpb25zIiwibGF0ZXN0IiwiRElTVF9UQUdTIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFH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QUFHLDZCQUFpQixDQUFDLFFBQUQsRUFBVyxjQUFYLEVBQTJCLE1BQTNCLEVBQW1DLE1BQW5DLENBQWpCLEVBQTZEQSxXQUE3RCxDQUFkOztBQUNBLGNBQUk5RCxNQUFNLENBQUMwQixHQUFYLEVBQWdCO0FBQ2RvQyxZQUFBQSxXQUFXLEdBQUcsK0JBQW1CQSxXQUFuQixFQUFnQzlELE1BQU0sQ0FBQzBCLEdBQVAsQ0FBV0csUUFBM0MsQ0FBZDtBQUNELFdBRkQsTUFFTztBQUNMaUMsWUFBQUEsV0FBVyxHQUFHLCtCQUFtQkEsV0FBbkIsQ0FBZDtBQUNEOztBQUNEL0MsVUFBQUEsSUFBSSxDQUFDK0MsV0FBRCxDQUFKO0FBQ0QsU0F6QkQsTUF5Qk87QUFDTGhELFVBQUFBLEdBQUcsQ0FBQ3FELE1BQUosQ0FBV0MsdUJBQVlDLFNBQXZCO0FBQ0F2RCxVQUFBQSxHQUFHLENBQUN3RCxHQUFKO0FBQ0Q7QUFDRjtBQW5DZ0IsS0FBbkI7QUFxQ0QsR0F4Q0Q7QUF5Q0Q7O2VBRWMxRSxnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkU2NvcGUsXG4gIGFkZEdyYXZhdGFyU3VwcG9ydCxcbiAgZGVsZXRlUHJvcGVydGllcyxcbiAgc29ydEJ5TmFtZSxcbiAgcGFyc2VSZWFkbWUsXG4gIGZvcm1hdEF1dGhvcixcbiAgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMsXG4gIGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpLFxuICBpc1ZlcnNpb25WYWxpZCxcbiAgRXJyb3JDb2RlLFxufSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWxsb3cgfSBmcm9tICcuLi8uLi9taWRkbGV3YXJlJztcbmltcG9ydCB7IERJU1RfVEFHUywgSEVBREVSX1RZUEUsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUdyYXZhdGFyVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXNlcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IElBdXRoLCAkUmVzcG9uc2VFeHRlbmQsICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJU3RvcmFnZUhhbmRsZXIsICRTaWRlYmFyUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZ2V0T3JkZXIgPSAob3JkZXIgPSAnYXNjJykgPT4ge1xuICByZXR1cm4gb3JkZXIgPT09ICdhc2MnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFja2NhZ2VFeHQgPSBQYWNrYWdlICYgeyBhdXRob3I6IGFueTsgZGlzdD86IHsgdGFyYmFsbDogc3RyaW5nIH0gfTtcblxuZnVuY3Rpb24gYWRkUGFja2FnZVdlYkFwaShyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGF1dGg6IElBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcblxuICBjb25zdCBjaGVja0FsbG93ID0gKG5hbWUsIHJlbW90ZVVzZXIpOiBQcm9taXNlPGJvb2xlYW4+ID0+XG4gICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXV0aC5hbGxvd19hY2Nlc3MoeyBwYWNrYWdlTmFtZTogbmFtZSB9LCByZW1vdGVVc2VyLCAoZXJyLCBhbGxvd2VkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoYWxsb3dlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIC8vIEdldCBsaXN0IG9mIGFsbCB2aXNpYmxlIHBhY2thZ2VcbiAgcm91dGUuZ2V0KCcvcGFja2FnZXMnLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBzdG9yYWdlLmdldExvY2FsRGF0YWJhc2UoYXN5bmMgZnVuY3Rpb24gKGVyciwgcGFja2FnZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzUGFja2FnZXMocGFja2FnZXM6IFBhY2tjYWdlRXh0W10gPSBbXSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zOiBQYWNrY2FnZUV4dFtdID0gW107XG4gICAgICAgIGNvbnN0IHBhY2tnZXNDb3B5ID0gcGFja2FnZXMuc2xpY2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBwa2cgb2YgcGFja2dlc0NvcHkpIHtcbiAgICAgICAgICBjb25zdCBwa2dDb3B5ID0geyAuLi5wa2cgfTtcbiAgICAgICAgICBwa2dDb3B5LmF1dGhvciA9IGZvcm1hdEF1dGhvcihwa2cuYXV0aG9yKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IGNoZWNrQWxsb3cocGtnLm5hbWUsIHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWIpIHtcbiAgICAgICAgICAgICAgICBwa2dDb3B5LmF1dGhvci5hdmF0YXIgPSBnZW5lcmF0ZUdyYXZhdGFyVXJsKHBrZ0NvcHkuYXV0aG9yLmVtYWlsLCBjb25maWcud2ViLmdyYXZhdGFyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIV8uaXNOaWwocGtnQ29weS5kaXN0KSAmJiAhXy5pc051bGwocGtnQ29weS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgICAgICAgcGtnQ29weS5kaXN0LnRhcmJhbGwgPSBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaShwa2dDb3B5LmRpc3QudGFyYmFsbCwgcGtnLm5hbWUsIHJlcSwgY29uZmlnLnVybF9wcmVmaXgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlcm1pc3Npb25zLnB1c2gocGtnQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBuYW1lOiBwa2cubmFtZSwgZXJyb3I6IGVyciB9LCAncGVybWlzc2lvbiBwcm9jZXNzIGZvciBAe25hbWV9IGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHdlYiB9ID0gY29uZmlnO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3Qgb3JkZXI6IGJvb2xlYW4gPSBjb25maWcud2ViID8gZ2V0T3JkZXIod2ViLnNvcnRfcGFja2FnZXMpIDogdHJ1ZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV4dChzb3J0QnlOYW1lKGF3YWl0IHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlcyksIG9yZGVyKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvLyBHZXQgcGFja2FnZSByZWFkbWVcbiAgcm91dGUuZ2V0KCcvcGFja2FnZS9yZWFkbWUvKEA6c2NvcGUvKT86cGFja2FnZS86dmVyc2lvbj8nLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVyciwgaW5mbyk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5zZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFLCBIRUFERVJTLlRFWFRfUExBSU4pO1xuICAgICAgICBjb25zdCByZWZlcmVyID0gcmVxLmdldCgnUmVmZXJlcicpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9IHJlZmVyZXIgPyAobmV3IFVSTChyZWZlcmVyKSkucGF0aG5hbWUgOiB1bmRlZmluZWQ7XG4gICAgICAgIG5leHQocGFyc2VSZWFkbWUoaW5mby5uYW1lLCBpbmZvLnJlYWRtZSwge3BhdGhuYW1lfSkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGUuZ2V0KCcvc2lkZWJhci8oQDpzY29wZS8pPzpwYWNrYWdlJywgY2FuKCdhY2Nlc3MnKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWU6IHN0cmluZyA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICBrZWVwVXBMaW5rRGF0YTogdHJ1ZSxcbiAgICAgIHJlcSxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBFcnJvciwgaW5mbzogJFNpZGViYXJQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzTmlsKGVycikpIHtcbiAgICAgICAgICBjb25zdCB7IHYgfSA9IHJlcS5xdWVyeTtcbiAgICAgICAgICBsZXQgc2lkZUJhckluZm86IGFueSA9IF8uY2xvbmUoaW5mbyk7XG4gICAgICAgICAgc2lkZUJhckluZm8udmVyc2lvbnMgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhpbmZvLCByZXEsIGNvbmZpZy51cmxfcHJlZml4KS52ZXJzaW9ucztcbiAgICAgICAgICBpZiAoaXNWZXJzaW9uVmFsaWQoaW5mbywgdikpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW3ZdO1xuICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0ID0gc2lkZUJhckluZm8udmVyc2lvbnNbaW5mb1tESVNUX1RBR1NdLmxhdGVzdF07XG4gICAgICAgICAgICBpZiAoc2lkZUJhckluZm8/LmxhdGVzdCkge1xuICAgICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yID0gZm9ybWF0QXV0aG9yKHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpO1xuICAgICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lkZUJhckluZm8gPSBkZWxldGVQcm9wZXJ0aWVzKFsncmVhZG1lJywgJ19hdHRhY2htZW50cycsICdfcmV2JywgJ25hbWUnXSwgc2lkZUJhckluZm8pO1xuICAgICAgICAgIGlmIChjb25maWcud2ViKSB7XG4gICAgICAgICAgICBzaWRlQmFySW5mbyA9IGFkZEdyYXZhdGFyU3VwcG9ydChzaWRlQmFySW5mbywgY29uZmlnLndlYi5ncmF2YXRhcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvID0gYWRkR3JhdmF0YXJTdXBwb3J0KHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dChzaWRlQmFySW5mbyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpO1xuICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZFBhY2thZ2VXZWJBcGk7XG4iXX0=
|
package/build/lib/utils.js
CHANGED
|
@@ -583,13 +583,14 @@ function addGravatarSupport(pkgInfo, online = true) {
|
|
|
583
583
|
* parse package readme - markdown/ascii
|
|
584
584
|
* @param {String} packageName name of package
|
|
585
585
|
* @param {String} readme package readme
|
|
586
|
+
* @param {Object} options sanitizyReadme options
|
|
586
587
|
* @return {String} converted html template
|
|
587
588
|
*/
|
|
588
589
|
|
|
589
590
|
|
|
590
|
-
function parseReadme(packageName, readme) {
|
|
591
|
+
function parseReadme(packageName, readme, options = {}) {
|
|
591
592
|
if (_lodash.default.isEmpty(readme) === false) {
|
|
592
|
-
return (0, _readme.default)(readme);
|
|
593
|
+
return (0, _readme.default)(readme, options);
|
|
593
594
|
} // logs readme not found error
|
|
594
595
|
|
|
595
596
|
|
|
@@ -791,4 +792,4 @@ function wrapPrefix(prefix) {
|
|
|
791
792
|
return prefix;
|
|
792
793
|
}
|
|
793
794
|
}
|
|
794
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOlsiZGVidWciLCJyZXF1aXJlIiwibW9kdWxlIiwicGtnVmVyc2lvbiIsImV4cG9ydHMiLCJ2ZXJzaW9uIiwicGtnTmFtZSIsIm5hbWUiLCJ2YWxpZFByb3RvY29scyIsImdldFVzZXJBZ2VudCIsIl8iLCJpc1N0cmluZyIsImNvbnZlcnRQYXlsb2FkVG9CYXNlNjQiLCJwYXlsb2FkIiwiQnVmZmVyIiwiZnJvbSIsInZhbGlkYXRlTmFtZSIsIm5vcm1hbGl6ZWROYW1lIiwidG9Mb3dlckNhc2UiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsInZhbGlkYXRlUGFja2FnZSIsIm5hbWVMaXN0Iiwic3BsaXQiLCJsZW5ndGgiLCJzbGljZSIsImlzT2JqZWN0Iiwib2JqIiwiaXNOdWxsIiwiaXNBcnJheSIsImlzT2JqZWN0T3JBcnJheSIsInZhbGlkYXRlTWV0YWRhdGEiLCJvYmplY3QiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsIkRJU1RfVEFHUyIsImV4dHJhY3RUYXJiYWxsRnJvbVVybCIsInVybCIsIkRlZmF1bHRVUkwiLCJwYXJzZSIsInBhdGhuYW1lIiwicmVwbGFjZSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicGtnIiwicmVxIiwidXJsUHJlZml4IiwidmVyIiwidmVyc2lvbnMiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkaXN0TmFtZSIsImRpc3QiLCJ0YXJiYWxsIiwiZ2V0TG9jYWxSZWdpc3RyeVRhcmJhbGxVcmkiLCJtZW1vaXplZGdldFB1YmxpY1VybCIsImdldFB1YmxpY1VybCIsInVyaSIsImN1cnJlbnRIb3N0IiwiZ2V0IiwidGFyYmFsbE5hbWUiLCJkb21haW5SZWdpc3RyeSIsImVuY29kZVNjb3BlZFVyaSIsInRhZ1ZlcnNpb24iLCJkYXRhIiwidGFnIiwic2VtdmVyIiwiZ2V0VmVyc2lvbiIsImlzTmlsIiwidmVyc2lvbkl0ZW0iLCJjb21wYXJlIiwiZXJyIiwidW5kZWZpbmVkIiwicGFyc2VBZGRyZXNzIiwidXJsQWRkcmVzcyIsInVybFBhdHRlcm4iLCJleGVjIiwicHJvdG8iLCJERUZBVUxUX1BST1RPQ09MIiwiaG9zdCIsIkRFRkFVTFRfRE9NQUlOIiwicG9ydCIsIkRFRkFVTFRfUE9SVCIsInBhdGgiLCJzZW12ZXJTb3J0IiwibGlzdFZlcnNpb25zIiwiZmlsdGVyIiwieCIsImxvZ2dlciIsIndhcm4iLCJzb3J0IiwiY29tcGFyZUxvb3NlIiwibWFwIiwiU3RyaW5nIiwibm9ybWFsaXplRGlzdFRhZ3MiLCJzb3J0ZWQiLCJsYXRlc3QiLCJrZXlzIiwicG9wIiwicGFyc2VJbnRlcnZhbFRhYmxlIiwibXMiLCJzIiwibSIsImgiLCJkIiwidyIsIk0iLCJ5IiwicGFyc2VJbnRlcnZhbCIsImludGVydmFsIiwicmVzdWx0IiwibGFzdF9zdWZmaXgiLCJJbmZpbml0eSIsImZvckVhY2giLCJFcnJvciIsIk51bWJlciIsImdldFdlYlByb3RvY29sIiwiaGVhZGVyUHJvdG9jb2wiLCJwcm90b2NvbCIsInJldHVyblByb3RvY29sIiwiZGVmYXVsdFByb3RvY29sIiwiY29tbWFJbmRleCIsImluZGV4T2YiLCJzdWJzdHIiLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnSW5mbyIsIkVycm9yQ29kZSIsImdldENvbmZsaWN0IiwiZ2V0QmFkRGF0YSIsImdldEJhZFJlcXVlc3QiLCJnZXRJbnRlcm5hbEVycm9yIiwiZ2V0VW5hdXRob3JpemVkIiwiZ2V0Rm9yYmlkZGVuIiwiZ2V0U2VydmljZVVuYXZhaWxhYmxlIiwiZ2V0Tm90Rm91bmQiLCJnZXRDb2RlIiwicGFyc2VDb25maWdGaWxlIiwiY29uZmlnUGF0aCIsInRlc3QiLCJZQU1MIiwibG9hZCIsImZzIiwicmVhZEZpbGVTeW5jIiwiZSIsImNvZGUiLCJtZXNzYWdlIiwiQVBQX0VSUk9SIiwiQ09ORklHX05PVF9WQUxJRCIsImZvbGRlckV4aXN0cyIsInN0YXQiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwiZmlsZUV4aXN0cyIsImlzRmlsZSIsInNvcnRCeU5hbWUiLCJwYWNrYWdlcyIsIm9yZGVyQXNjZW5kaW5nIiwiYSIsImIiLCJjb21wYXJhdG9yTmFtZXMiLCJhZGRTY29wZSIsInNjb3BlIiwicGFja2FnZU5hbWUiLCJkZWxldGVQcm9wZXJ0aWVzIiwicHJvcGVydGllc1RvRGVsZXRlIiwib2JqZWN0SXRlbSIsInByb3BlcnR5IiwiYWRkR3JhdmF0YXJTdXBwb3J0Iiwib25saW5lIiwicGtnSW5mb0NvcHkiLCJhdXRob3IiLCJjb250cmlidXRvcnMiLCJtYWludGFpbmVycyIsImVtYWlsIiwiYXZhdGFyIiwiR0VORVJJQ19BVkFUQVIiLCJpc0VtcHR5IiwiY29udHJpYnV0b3IiLCJtYWludGFpbmVyIiwicGFyc2VSZWFkbWUiLCJyZWFkbWUiLCJlcnJvciIsImJ1aWxkVG9rZW4iLCJ0eXBlIiwidG9rZW4iLCJjYXBpdGFsaXplIiwiZ2V0VmVyc2lvbkZyb21UYXJiYWxsIiwiZm9ybWF0QXV0aG9yIiwiYXV0aG9yRGV0YWlscyIsIkRFRkFVTFRfVVNFUiIsImlzSFRUUFByb3RvY29sIiwicGFkIiwic3RyIiwibWF4IiwicmVwZWF0IiwibWFzayIsImNoYXJOdW0iLCJoYXNEaWZmT25lS2V5IiwiaXNWZXJzaW9uVmFsaWQiLCJwYWNrYWdlTWV0YSIsInBhY2thZ2VWZXJzaW9uIiwiaGFzVmVyc2lvbiIsImhhc01hdGNoVmVyc2lvbiIsImlzUmVsYXRlZFRvRGVwcmVjYXRpb24iLCJ2YWxpZGF0ZVVSTCIsInB1YmxpY1VybCIsInBhcnNlZCIsIlVSTCIsImlzSG9zdCIsIm9wdGlvbnMiLCJ2YWxpZGF0b3IiLCJpc1VSTCIsInJlcXVpcmVfaG9zdCIsImFsbG93X3RyYWlsaW5nX2RvdCIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJyZXF1aXJlX3BvcnQiLCJyZXF1aXJlX3RsZCIsInVybF9wcmVmaXgiLCJwcm9jZXNzIiwiZW52IiwiVkVSREFDQ0lPX1BVQkxJQ19VUkwiLCJlbnZVUkwiLCJ3cmFwUHJlZml4IiwiaHJlZiIsInByb3RvSGVhZGVyIiwiVkVSREFDQ0lPX0ZPUldBUkRFRF9QUk9UTyIsIkhFQURFUlMiLCJGT1JXQVJERURfUFJPVE8iLCJjb21iaW5lZFVybCIsImNvbWJpbmVCYXNlVXJsIiwicHJlZml4IiwibmV3UHJlZml4IiwiZ3JvdXBlZFVSSSIsImVuZHNXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsV0FBWCxDQUFkLEMsQ0FFQTtBQUNBOztBQUNBQyxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQztBQUNBLE1BQU1DLE9BQU8sR0FBR0osTUFBTSxDQUFDRSxPQUFQLENBQWVHLElBQS9CO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7O0FBRU8sU0FBU0MsWUFBVCxHQUFnQztBQUNyQyx1QkFBT0MsZ0JBQUVDLFFBQUYsQ0FBV0wsT0FBWCxDQUFQO0FBQ0EsdUJBQU9JLGdCQUFFQyxRQUFGLENBQVdSLFVBQVgsQ0FBUDtBQUNBLFNBQVEsR0FBRUcsT0FBUSxJQUFHSCxVQUFXLEVBQWhDO0FBQ0Q7O0FBRU0sU0FBU1Msc0JBQVQsQ0FBZ0NDLE9BQWhDLEVBQXlEO0FBQzlELFNBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixPQUFaLEVBQXFCLFFBQXJCLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNHLFlBQVQsQ0FBc0JULElBQXRCLEVBQTZDO0FBQ2xE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QUFNLEtBQUssRUFBWCxJQUFpQixPQUFPQSxNQUFQLEtBQWtCLFdBQW5DLElBQWtEQSxNQUFNLEtBQUssSUFBakUsRUFBdUU7QUFDckUsV0FBTyxFQUFQO0FBQ0QsR0FGRCxNQUVPLElBQUksQ0FBQ0EsTUFBTSxDQUFDcE4sVUFBUCxDQUFrQixHQUFsQixDQUFELElBQTJCb04sTUFBTSxDQUFDRyxRQUFQLENBQWdCLEdBQWhCLENBQS9CLEVBQXFEO0FBQzFELFdBQVEsSUFBR0gsTUFBTyxFQUFsQjtBQUNELEdBRk0sTUFFQSxJQUFJLENBQUNBLE1BQU0sQ0FBQ3BOLFVBQVAsQ0FBa0IsR0FBbEIsQ0FBRCxJQUEyQixDQUFDb04sTUFBTSxDQUFDRyxRQUFQLENBQWdCLEdBQWhCLENBQWhDLEVBQXNEO0FBQzNELFdBQVEsSUFBR0gsTUFBTyxHQUFsQjtBQUNELEdBRk0sTUFFQSxJQUFJQSxNQUFNLENBQUNwTixVQUFQLENBQWtCLEdBQWxCLEtBQTBCLENBQUNvTixNQUFNLENBQUNHLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBL0IsRUFBcUQ7QUFDMUQsV0FBUSxHQUFFSCxNQUFPLEdBQWpCO0FBQ0QsR0FGTSxNQUVBO0FBQ0wsV0FBT0EsTUFBUDtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IERlZmF1bHRVUkwsIHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgWUFNTCBmcm9tICdqcy15YW1sJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdG9yJztcbmltcG9ydCBtZW1vaXplZSBmcm9tICdtZW1vaXplZSc7XG5pbXBvcnQgc2FuaXRpenlSZWFkbWUgZnJvbSAnQHZlcmRhY2Npby9yZWFkbWUnO1xuXG5pbXBvcnQgeyBQYWNrYWdlLCBWZXJzaW9uLCBBdXRob3IgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5pbXBvcnQgeyBnZXRDb25mbGljdCwgZ2V0QmFkRGF0YSwgZ2V0QmFkUmVxdWVzdCwgZ2V0SW50ZXJuYWxFcnJvciwgZ2V0VW5hdXRob3JpemVkLCBnZXRGb3JiaWRkZW4sIGdldFNlcnZpY2VVbmF2YWlsYWJsZSwgZ2V0Tm90Rm91bmQsIGdldENvZGUgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcbmltcG9ydCB7IGdlbmVyYXRlR3JhdmF0YXJVcmwsIEdFTkVSSUNfQVZBVEFSIH0gZnJvbSAnLi4vdXRpbHMvdXNlcic7XG5pbXBvcnQgeyBTdHJpbmdWYWx1ZSwgQXV0aG9yQXZhdGFyIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQVBQX0VSUk9SLCBERUZBVUxUX1BPUlQsIERFRkFVTFRfRE9NQUlOLCBERUZBVUxUX1BST1RPQ09MLCBIRUFERVJTLCBESVNUX1RBR1MsIERFRkFVTFRfVVNFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuaW1wb3J0IHsgbm9ybWFsaXplQ29udHJpYnV0b3JzIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xucmVxdWlyZSgncGtnaW5mbycpKG1vZHVsZSk7XG5jb25zdCBwa2dWZXJzaW9uID0gbW9kdWxlLmV4cG9ydHMudmVyc2lvbjtcbmNvbnN0IHBrZ05hbWUgPSBtb2R1bGUuZXhwb3J0cy5uYW1lO1xuY29uc3QgdmFsaWRQcm90b2NvbHMgPSBbJ2h0dHBzJywgJ2h0dHAnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJBZ2VudCgpOiBzdHJpbmcge1xuICBhc3NlcnQoXy5pc1N0cmluZyhwa2dOYW1lKSk7XG4gIGFzc2VydChfLmlzU3RyaW5nKHBrZ1ZlcnNpb24pKTtcbiAgcmV0dXJuIGAke3BrZ05hbWV9LyR7cGtnVmVyc2lvbn1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBheWxvYWRUb0Jhc2U2NChwYXlsb2FkOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NCcpO1xufVxuXG4vKipcbiAqIEZyb20gbm9ybWFsaXplLXBhY2thZ2UtZGF0YS9saWIvZml4ZXIuanNcbiAqIEBwYXJhbSB7Kn0gbmFtZSAgdGhlIHBhY2thZ2UgbmFtZVxuICogQHJldHVybiB7Qm9vbGVhbn0gd2hldGhlciBpcyB2YWxpZCBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTmFtZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKF8uaXNTdHJpbmcobmFtZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZE5hbWU6IHN0cmluZyA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvKipcbiAgICogU29tZSBjb250ZXh0IGFib3V0IHRoZSBmaXJzdCByZWdleFxuICAgKiAtIG5wbSB1c2VkIHRvIGhhdmUgYSBkaWZmZXJlbnQgdGFyYmFsbCBuYW1pbmcgc3lzdGVtLlxuICAgKiBlZzogaHR0cDovL3JlZ2lzdHJ5Lm5wbWpzLmNvbS90aGlydHktdHdvXG4gICAqIGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RoaXJ0eS10d28vLS90aGlydHktdHdvQDAuMC4xLnRnelxuICAgKiBUaGUgZmlsZSBuYW1lIHRoaXJ0eS10d29AMC4wLjEudGd6LCB0aGUgdmVyc2lvbiBhbmQgdGhlIHBrZyBuYW1lIHdhcyBzZXBhcmF0ZWQgYnkgYW4gYXQgKEApXG4gICAqIHdoaWxlIG5vd2FkYXlzIHRoZSBuYW1pbmcgc3lzdGVtIGlzIGJhc2VkIGluIGRhc2hlc1xuICAgKiBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy92ZXJkYWNjaW8vLS92ZXJkYWNjaW8tMS40LjAudGd6XG4gICAqXG4gICAqIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy83NVxuICAgKi9cbiAgcmV0dXJuICEoXG4gICAgIW5vcm1hbGl6ZWROYW1lLm1hdGNoKC9eWy1hLXpBLVowLTlfLiF+KicoKUBdKyQvKSB8fFxuICAgIG5vcm1hbGl6ZWROYW1lLnN0YXJ0c1dpdGgoJy4nKSB8fCAvLyBcIi5iaW5cIiwgZXRjLlxuICAgIFsnbm9kZV9tb2R1bGVzJywgJ19fcHJvdG9fXycsICdmYXZpY29uLmljbyddLmluY2x1ZGVzKG5vcm1hbGl6ZWROYW1lKVxuICApO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgcGFja2FnZS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IHdoZXRoZXIgdGhlIHBhY2thZ2UgaXMgdmFsaWQgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBhY2thZ2UobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5hbWVMaXN0ID0gbmFtZS5zcGxpdCgnLycsIDIpO1xuICBpZiAobmFtZUxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gbm9ybWFsIHBhY2thZ2VcbiAgICByZXR1cm4gdmFsaWRhdGVOYW1lKG5hbWVMaXN0WzBdKTtcbiAgfVxuICAvLyBzY29wZWQgcGFja2FnZVxuICByZXR1cm4gbmFtZUxpc3RbMF1bMF0gPT09ICdAJyAmJiB2YWxpZGF0ZU5hbWUobmFtZUxpc3RbMF0uc2xpY2UoMSkpICYmIHZhbGlkYXRlTmFtZShuYW1lTGlzdFsxXSk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhbiBlbGVtZW50IGlzIGFuIE9iamVjdFxuICogQHBhcmFtIHsqfSBvYmogdGhlIGVsZW1lbnRcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gXy5pc09iamVjdChvYmopICYmIF8uaXNOdWxsKG9iaikgPT09IGZhbHNlICYmIF8uaXNBcnJheShvYmopID09PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0T3JBcnJheShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gXy5pc09iamVjdChvYmopICYmIF8uaXNOdWxsKG9iaikgPT09IGZhbHNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBwYWNrYWdlIG1ldGFkYXRhLCBhZGQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHdoZXRoZXIgYXJlIG1pc3Npbmcgd2l0aGluXG4gKiB0aGUgbWV0YWRhdGEgcHJvcGVydGllcy5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0XG4gKiBAcGFyYW0geyp9IG5hbWVcbiAqIEByZXR1cm4ge09iamVjdH0gdGhlIG9iamVjdCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBhcyBkaXN0LXRhZ3MgYWQgdmVyc2lvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTWV0YWRhdGEob2JqZWN0OiBQYWNrYWdlLCBuYW1lOiBzdHJpbmcpOiBQYWNrYWdlIHtcbiAgYXNzZXJ0KGlzT2JqZWN0KG9iamVjdCksICdub3QgYSBqc29uIG9iamVjdCcpO1xuICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqZWN0Lm5hbWUsIG5hbWUpO1xuXG4gIGlmICghaXNPYmplY3Qob2JqZWN0W0RJU1RfVEFHU10pKSB7XG4gICAgb2JqZWN0W0RJU1RfVEFHU10gPSB7fTtcbiAgfVxuXG4gIGlmICghaXNPYmplY3Qob2JqZWN0Wyd2ZXJzaW9ucyddKSkge1xuICAgIG9iamVjdFsndmVyc2lvbnMnXSA9IHt9O1xuICB9XG5cbiAgaWYgKCFpc09iamVjdChvYmplY3RbJ3RpbWUnXSkpIHtcbiAgICBvYmplY3RbJ3RpbWUnXSA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUYXJiYWxsRnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIERlZmF1bHRVUkwucGFyc2UodXJsKS5wYXRobmFtZS5yZXBsYWNlKC9eLipcXC8vLCAnJyk7XG59XG5cbi8qKlxuICogSXRlcmF0ZSBhIHBhY2thZ2VzJ3MgdmVyc2lvbnMgYW5kIGZpbHRlciBlYWNoIG9yaWdpbmFsIHRhcmJhbGwgdXJsLlxuICogQHBhcmFtIHsqfSBwa2dcbiAqIEBwYXJhbSB7Kn0gcmVxXG4gKiBAcGFyYW0geyp9IGNvbmZpZ1xuICogQHJldHVybiB7U3RyaW5nfSBhIGZpbHRlcmVkIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzKHBrZzogUGFja2FnZSwgcmVxOiBSZXF1ZXN0LCB1cmxQcmVmaXg6IHN0cmluZyB8IHZvaWQpOiBQYWNrYWdlIHtcbiAgZm9yIChjb25zdCB2ZXIgaW4gcGtnLnZlcnNpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwa2cudmVyc2lvbnMsIHZlcikpIHtcbiAgICAgIGNvbnN0IGRpc3ROYW1lID0gcGtnLnZlcnNpb25zW3Zlcl0uZGlzdDtcblxuICAgICAgaWYgKF8uaXNOdWxsKGRpc3ROYW1lKSA9PT0gZmFsc2UgJiYgXy5pc051bGwoZGlzdE5hbWUudGFyYmFsbCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRpc3ROYW1lLnRhcmJhbGwgPSBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaShkaXN0TmFtZS50YXJiYWxsLCBwa2cubmFtZSwgcmVxLCB1cmxQcmVmaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGtnO1xufVxuXG5jb25zdCBtZW1vaXplZGdldFB1YmxpY1VybCA9IG1lbW9pemVlKGdldFB1YmxpY1VybCk7XG5cbi8qKlxuICogRmlsdGVyIGEgdGFyYmFsbCB1cmwuXG4gKiBAcGFyYW0geyp9IHVyaVxuICogQHJldHVybiB7U3RyaW5nfSBhIHBhcnNlZCB1cmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpKHVyaTogc3RyaW5nLCBwa2dOYW1lOiBzdHJpbmcsIHJlcTogUmVxdWVzdCwgdXJsUHJlZml4OiBzdHJpbmcgfCB2b2lkKTogc3RyaW5nIHtcbiAgY29uc3QgY3VycmVudEhvc3QgPSByZXEuZ2V0KCdob3N0Jyk7XG5cbiAgaWYgKCFjdXJyZW50SG9zdCkge1xuICAgIHJldHVybiB1cmk7XG4gIH1cbiAgY29uc3QgdGFyYmFsbE5hbWUgPSBleHRyYWN0VGFyYmFsbEZyb21VcmwodXJpKTtcbiAgY29uc3QgZG9tYWluUmVnaXN0cnkgPSBtZW1vaXplZGdldFB1YmxpY1VybCh1cmxQcmVmaXggfHwgJycsIHJlcSk7XG5cbiAgcmV0dXJuIGAke2RvbWFpblJlZ2lzdHJ5fSR7ZW5jb2RlU2NvcGVkVXJpKHBrZ05hbWUpfS8tLyR7dGFyYmFsbE5hbWV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhZ1ZlcnNpb24oZGF0YTogUGFja2FnZSwgdmVyc2lvbjogc3RyaW5nLCB0YWc6IFN0cmluZ1ZhbHVlKTogYm9vbGVhbiB7XG4gIGlmICh0YWcgJiYgZGF0YVtESVNUX1RBR1NdW3RhZ10gIT09IHZlcnNpb24gJiYgc2VtdmVyLnBhcnNlKHZlcnNpb24sIHRydWUpKSB7XG4gICAgLy8gdmFsaWQgdmVyc2lvbiAtIHN0b3JlXG4gICAgZGF0YVtESVNUX1RBR1NdW3RhZ10gPSB2ZXJzaW9uO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXRzIHZlcnNpb24gZnJvbSBhIHBhY2thZ2Ugb2JqZWN0IHRha2luZyBpbnRvIGFjY291bnQgc2VtdmVyIHdlaXJkbmVzcy5cbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJuIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2lvbihwa2c6IFBhY2thZ2UsIHZlcnNpb246IGFueSk6IFZlcnNpb24gfCB2b2lkIHtcbiAgLy8gdGhpcyBjb25kaXRpb24gbXVzdCBhbGxvdyBjYXN0XG4gIGlmIChfLmlzTmlsKHBrZy52ZXJzaW9uc1t2ZXJzaW9uXSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHBrZy52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgdmVyc2lvbiA9IHNlbXZlci5wYXJzZSh2ZXJzaW9uLCB0cnVlKTtcbiAgICBmb3IgKGNvbnN0IHZlcnNpb25JdGVtIGluIHBrZy52ZXJzaW9ucykge1xuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgaWYgKHZlcnNpb24uY29tcGFyZShzZW12ZXIucGFyc2UodmVyc2lvbkl0ZW0sIHRydWUpKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcGtnLnZlcnNpb25zW3ZlcnNpb25JdGVtXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBpbnRlcm5ldCBhZGRyZXNzXG4gKiBBbGxvdzpcbiAtIGh0dHBzOmxvY2FsaG9zdDoxMjM0ICAgICAgICAtIHByb3RvY29sICsgaG9zdCArIHBvcnRcbiAtIGxvY2FsaG9zdDoxMjM0ICAgICAgICAgICAgICAtIGhvc3QgKyBwb3J0XG4gLSAxMjM0ICAgICAgICAgICAgICAgICAgICAgICAgLSBwb3J0XG4gLSBodHRwOjoxMjM0ICAgICAgICAgICAgICAgICAgLSBwcm90b2NvbCArIHBvcnRcbiAtIGh0dHBzOi8vbG9jYWxob3N0OjQ0My8gICAgICAtIGZ1bGwgdXJsICsgaHR0cHNcbiAtIGh0dHA6Ly9bOjoxXTo0NDMvICAgICAgICAgICAtIGlwdjZcbiAtIHVuaXg6L3RtcC9odHRwLnNvY2sgICAgICAgICAtIHVuaXggc29ja2V0c1xuIC0gaHR0cHM6Ly91bml4Oi90bXAvaHR0cC5zb2NrIC0gdW5peCBzb2NrZXRzIChodHRwcylcbiAqIEBwYXJhbSB7Kn0gdXJsQWRkcmVzcyB0aGUgaW50ZXJuZXQgYWRkcmVzcyBkZWZpbml0aW9uXG4gKiBAcmV0dXJuIHtPYmplY3R8TnVsbH0gbGl0ZXJhbCBvYmplY3QgdGhhdCByZXByZXNlbnQgdGhlIGFkZHJlc3MgcGFyc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFkZHJlc3ModXJsQWRkcmVzczogYW55KTogYW55IHtcbiAgLy9cbiAgLy8gVE9ETzogcmVmYWN0b3IgaXQgdG8gc29tZXRoaW5nIG1vcmUgcmVhc29uYWJsZT9cbiAgLy9cbiAgLy8gICAgICAgIHByb3RvY29sIDogIC8vICAgICAgKCAgaG9zdCAgKXwoICAgIGlwdjYgICAgICk6ICBwb3J0ICAvXG4gIGxldCB1cmxQYXR0ZXJuID0gL14oKGh0dHBzPyk6KFxcL1xcLyk/KT8oKChbXlxcLzpdKil8XFxbKFteXFxbXFxdXSspXFxdKTopPyhcXGQrKVxcLz8kLy5leGVjKHVybEFkZHJlc3MpO1xuXG4gIGlmICh1cmxQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3RvOiB1cmxQYXR0ZXJuWzJdIHx8IERFRkFVTFRfUFJPVE9DT0wsXG4gICAgICBob3N0OiB1cmxQYXR0ZXJuWzZdIHx8IHVybFBhdHRlcm5bN10gfHwgREVGQVVMVF9ET01BSU4sXG4gICAgICBwb3J0OiB1cmxQYXR0ZXJuWzhdIHx8IERFRkFVTFRfUE9SVCxcbiAgICB9O1xuICB9XG5cbiAgdXJsUGF0dGVybiA9IC9eKChodHRwcz8pOihcXC9cXC8pPyk/dW5peDooLiopJC8uZXhlYyh1cmxBZGRyZXNzKTtcblxuICBpZiAodXJsUGF0dGVybikge1xuICAgIHJldHVybiB7XG4gICAgICBwcm90bzogdXJsUGF0dGVyblsyXSB8fCBERUZBVUxUX1BST1RPQ09MLFxuICAgICAgcGF0aDogdXJsUGF0dGVybls0XSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZmlsdGVycyBvdXQgYmFkIHNlbXZlciB2ZXJzaW9ucyBhbmQgc29ydHMgdGhlIGFycmF5LlxuICogQHJldHVybiB7QXJyYXl9IHNvcnRlZCBBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VtdmVyU29ydChsaXN0VmVyc2lvbnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKFxuICAgIGxpc3RWZXJzaW9uc1xuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXNlbXZlci5wYXJzZSh4LCB0cnVlKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKHsgdmVyOiB4IH0sICdpZ25vcmluZyBiYWQgdmVyc2lvbiBAe3Zlcn0nKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLy8gRklYTUU6IGl0IHNlZW1zIHRoZSBAdHlwZXMvc2VtdmVyIGRvIG5vdCBoYW5kbGUgYSBsZWdpdGltYXRlIG1ldGhvZCBuYW1lZCAnY29tcGFyZUxvb3NlJ1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgLnNvcnQoc2VtdmVyLmNvbXBhcmVMb29zZSlcbiAgICAgIC5tYXAoU3RyaW5nKVxuICApO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYXJyYXlzIG9mIHRhZ3MuXG4gKiBAcGFyYW0geyp9IGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURpc3RUYWdzKHBrZzogUGFja2FnZSk6IHZvaWQge1xuICBsZXQgc29ydGVkO1xuICBpZiAoIXBrZ1tESVNUX1RBR1NdLmxhdGVzdCkge1xuICAgIC8vIG92ZXJ3cml0ZSBsYXRlc3Qgd2l0aCBoaWdoZXN0IGtub3duIHZlcnNpb24gYmFzZWQgb24gc2VtdmVyIHNvcnRcbiAgICBzb3J0ZWQgPSBzZW12ZXJTb3J0KE9iamVjdC5rZXlzKHBrZy52ZXJzaW9ucykpO1xuICAgIGlmIChzb3J0ZWQgJiYgc29ydGVkLmxlbmd0aCkge1xuICAgICAgcGtnW0RJU1RfVEFHU10ubGF0ZXN0ID0gc29ydGVkLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgdGFnIGluIHBrZ1tESVNUX1RBR1NdKSB7XG4gICAgaWYgKF8uaXNBcnJheShwa2dbRElTVF9UQUdTXVt0YWddKSkge1xuICAgICAgaWYgKHBrZ1tESVNUX1RBR1NdW3RhZ10ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHNvcnQgYXJyYXlcbiAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgY2xlYXJseSB3cm9uZywgd2UgbmVlZCB0byByZXNlYXJjaCB3aHkgdGhpcyBpcyBsaWtlIHRoaXMuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc29ydGVkID0gc2VtdmVyU29ydChwa2dbRElTVF9UQUdTXVt0YWddKTtcbiAgICAgICAgaWYgKHNvcnRlZC5sZW5ndGgpIHtcbiAgICAgICAgICAvLyB1c2UgaGlnaGVzdCB2ZXJzaW9uIGJhc2VkIG9uIHNlbXZlciBzb3J0XG4gICAgICAgICAgcGtnW0RJU1RfVEFHU11bdGFnXSA9IHNvcnRlZC5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHBrZ1tESVNUX1RBR1NdW3RhZ107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHBrZ1tESVNUX1RBR1NdW3RhZ10pKSB7XG4gICAgICBpZiAoIXNlbXZlci5wYXJzZShwa2dbRElTVF9UQUdTXVt0YWddLCB0cnVlKSkge1xuICAgICAgICAvLyBpZiB0aGUgdmVyc2lvbiBpcyBpbnZhbGlkLCBkZWxldGUgdGhlIGRpc3QtdGFnIGVudHJ5XG4gICAgICAgIGRlbGV0ZSBwa2dbRElTVF9UQUdTXVt0YWddO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwYXJzZUludGVydmFsVGFibGUgPSB7XG4gICcnOiAxMDAwLFxuICBtczogMSxcbiAgczogMTAwMCxcbiAgbTogNjAgKiAxMDAwLFxuICBoOiA2MCAqIDYwICogMTAwMCxcbiAgZDogODY0MDAwMDAsXG4gIHc6IDcgKiA4NjQwMDAwMCxcbiAgTTogMzAgKiA4NjQwMDAwMCxcbiAgeTogMzY1ICogODY0MDAwMDAsXG59O1xuXG4vKipcbiAqIFBhcnNlIGFuIGludGVybmFsIHN0cmluZyB0byBudW1iZXJcbiAqIEBwYXJhbSB7Kn0gaW50ZXJ2YWxcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50ZXJ2YWwoaW50ZXJ2YWw6IGFueSk6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGludGVydmFsICogMTAwMDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gMDtcbiAgbGV0IGxhc3Rfc3VmZml4ID0gSW5maW5pdHk7XG4gIGludGVydmFsLnNwbGl0KC9cXHMrLykuZm9yRWFjaChmdW5jdGlvbiAoeCk6IHZvaWQge1xuICAgIGlmICgheCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtID0geC5tYXRjaCgvXigoMHxbMS05XVswLTldKikoXFwuWzAtOV0rKT8pKG1zfHN8bXxofGR8d3xNfHl8KSQvKTtcbiAgICBpZiAoIW0gfHwgcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dID49IGxhc3Rfc3VmZml4IHx8IChtWzRdID09PSAnJyAmJiBsYXN0X3N1ZmZpeCAhPT0gSW5maW5pdHkpKSB7XG4gICAgICB0aHJvdyBFcnJvcignaW52YWxpZCBpbnRlcnZhbDogJyArIGludGVydmFsKTtcbiAgICB9XG4gICAgbGFzdF9zdWZmaXggPSBwYXJzZUludGVydmFsVGFibGVbbVs0XV07XG4gICAgcmVzdWx0ICs9IE51bWJlcihtWzFdKSAqIHBhcnNlSW50ZXJ2YWxUYWJsZVttWzRdXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZWN0IHJ1bm5pbmcgcHJvdG9jb2wgKGh0dHAgb3IgaHR0cHMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWJQcm90b2NvbChoZWFkZXJQcm90b2NvbDogc3RyaW5nIHwgdm9pZCwgcHJvdG9jb2w6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCByZXR1cm5Qcm90b2NvbDtcbiAgY29uc3QgWywgZGVmYXVsdFByb3RvY29sXSA9IHZhbGlkUHJvdG9jb2xzO1xuICAvLyBIQVByb3h5IHZhcmlhbnQgbWlnaHQgcmV0dXJuIGh0dHAsaHR0cCB3aXRoIFgtRm9yd2FyZGVkLVByb3RvXG4gIGlmICh0eXBlb2YgaGVhZGVyUHJvdG9jb2wgPT09ICdzdHJpbmcnICYmIGhlYWRlclByb3RvY29sICE9PSAnJykge1xuICAgIGRlYnVnKCdoZWFkZXIgcHJvdG9jb2w6ICVvJywgcHJvdG9jb2wpO1xuICAgIGNvbnN0IGNvbW1hSW5kZXggPSBoZWFkZXJQcm90b2NvbC5pbmRleE9mKCcsJyk7XG4gICAgcmV0dXJuUHJvdG9jb2wgPSBjb21tYUluZGV4ID4gMCA/IGhlYWRlclByb3RvY29sLnN1YnN0cigwLCBjb21tYUluZGV4KSA6IGhlYWRlclByb3RvY29sO1xuICB9IGVsc2Uge1xuICAgIGRlYnVnKCdyZXEgcHJvdG9jb2w6ICVvJywgaGVhZGVyUHJvdG9jb2wpO1xuICAgIHJldHVyblByb3RvY29sID0gcHJvdG9jb2w7XG4gIH1cblxuICByZXR1cm4gdmFsaWRQcm90b2NvbHMuaW5jbHVkZXMocmV0dXJuUHJvdG9jb2wpID8gcmV0dXJuUHJvdG9jb2wgOiBkZWZhdWx0UHJvdG9jb2w7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uKHBrZ0luZm86IFBhY2thZ2UpOiBzdHJpbmcge1xuICByZXR1cm4gcGtnSW5mb1tESVNUX1RBR1NdLmxhdGVzdDtcbn1cblxuZXhwb3J0IGNvbnN0IEVycm9yQ29kZSA9IHtcbiAgZ2V0Q29uZmxpY3QsXG4gIGdldEJhZERhdGEsXG4gIGdldEJhZFJlcXVlc3QsXG4gIGdldEludGVybmFsRXJyb3IsXG4gIGdldFVuYXV0aG9yaXplZCxcbiAgZ2V0Rm9yYmlkZGVuLFxuICBnZXRTZXJ2aWNlVW5hdmFpbGFibGUsXG4gIGdldE5vdEZvdW5kLFxuICBnZXRDb2RlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29uZmlnRmlsZShjb25maWdQYXRoOiBzdHJpbmcpOiBhbnkge1xuICB0cnkge1xuICAgIGlmICgvXFwueWE/bWwkL2kudGVzdChjb25maWdQYXRoKSkge1xuICAgICAgcmV0dXJuIFlBTUwubG9hZChmcy5yZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04JykpO1xuICAgIH1cbiAgICBkZWJ1ZygneWFtbCBwYXJzZWQnKTtcbiAgICByZXR1cm4gcmVxdWlyZShjb25maWdQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGRlYnVnKCd5YW1sIHBhcnNlIGZhaWxlZCcpO1xuICAgIGlmIChlLmNvZGUgIT09ICdNT0RVTEVfTk9UX0ZPVU5EJykge1xuICAgICAgZS5tZXNzYWdlID0gQVBQX0VSUk9SLkNPTkZJR19OT1RfVkFMSUQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcGF0aCBhbHJlYWR5IGV4aXN0LlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb2xkZXJFeGlzdHMocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIHJldHVybiBzdGF0LmlzRGlyZWN0b3J5KCk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBmaWxlIGFscmVhZHkgZXhpc3QuXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGVFeGlzdHMocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIHJldHVybiBzdGF0LmlzRmlsZSgpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlOYW1lKHBhY2thZ2VzOiBhbnlbXSwgb3JkZXJBc2NlbmRpbmc6IGJvb2xlYW4gfCB2b2lkID0gdHJ1ZSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHBhY2thZ2VzLnNsaWNlKCkuc29ydChmdW5jdGlvbiAoYSwgYik6IG51bWJlciB7XG4gICAgY29uc3QgY29tcGFyYXRvck5hbWVzID0gYS5uYW1lLnRvTG93ZXJDYXNlKCkgPCBiLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiBvcmRlckFzY2VuZGluZyA/IChjb21wYXJhdG9yTmFtZXMgPyAtMSA6IDEpIDogY29tcGFyYXRvck5hbWVzID8gMSA6IC0xO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNjb3BlKHNjb3BlOiBzdHJpbmcsIHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYEAke3Njb3BlfS8ke3BhY2thZ2VOYW1lfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzKHByb3BlcnRpZXNUb0RlbGV0ZTogc3RyaW5nW10sIG9iamVjdEl0ZW06IGFueSk6IGFueSB7XG4gIF8uZm9yRWFjaChwcm9wZXJ0aWVzVG9EZWxldGUsIChwcm9wZXJ0eSk6IGFueSA9PiB7XG4gICAgZGVsZXRlIG9iamVjdEl0ZW1bcHJvcGVydHldO1xuICB9KTtcblxuICByZXR1cm4gb2JqZWN0SXRlbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEdyYXZhdGFyU3VwcG9ydChwa2dJbmZvOiBQYWNrYWdlLCBvbmxpbmUgPSB0cnVlKTogQXV0aG9yQXZhdGFyIHtcbiAgY29uc3QgcGtnSW5mb0NvcHkgPSB7IC4uLnBrZ0luZm8gfSBhcyBhbnk7XG4gIGNvbnN0IGF1dGhvcjogYW55ID0gXy5nZXQocGtnSW5mbywgJ2xhdGVzdC5hdXRob3InLCBudWxsKSBhcyBhbnk7XG4gIGNvbnN0IGNvbnRyaWJ1dG9yczogQXV0aG9yQXZhdGFyW10gPSBub3JtYWxpemVDb250cmlidXRvcnMoXy5nZXQocGtnSW5mbywgJ2xhdGVzdC5jb250cmlidXRvcnMnLCBbXSkpO1xuICBjb25zdCBtYWludGFpbmVycyA9IF8uZ2V0KHBrZ0luZm8sICdsYXRlc3QubWFpbnRhaW5lcnMnLCBbXSk7XG5cbiAgLy8gZm9yIGF1dGhvci5cbiAgaWYgKGF1dGhvciAmJiBfLmlzT2JqZWN0KGF1dGhvcikpIHtcbiAgICBjb25zdCB7IGVtYWlsIH0gPSBhdXRob3IgYXMgQXV0aG9yO1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5hdXRob3IuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChlbWFpbCwgb25saW5lKTtcbiAgfVxuXG4gIGlmIChhdXRob3IgJiYgXy5pc1N0cmluZyhhdXRob3IpKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0LmF1dGhvciA9IHtcbiAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICBlbWFpbDogJycsXG4gICAgICBhdXRob3IsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGZvciBjb250cmlidXRvcnNcbiAgaWYgKF8uaXNFbXB0eShjb250cmlidXRvcnMpID09PSBmYWxzZSkge1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5jb250cmlidXRvcnMgPSBjb250cmlidXRvcnMubWFwKFxuICAgICAgKGNvbnRyaWJ1dG9yKTogQXV0aG9yQXZhdGFyID0+IHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbnRyaWJ1dG9yKSkge1xuICAgICAgICAgIGNvbnRyaWJ1dG9yLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwoY29udHJpYnV0b3IuZW1haWwsIG9ubGluZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc1N0cmluZyhjb250cmlidXRvcikpIHtcbiAgICAgICAgICBjb250cmlidXRvciA9IHtcbiAgICAgICAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICAgICAgICBlbWFpbDogY29udHJpYnV0b3IsXG4gICAgICAgICAgICBuYW1lOiBjb250cmlidXRvcixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyaWJ1dG9yO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvLyBmb3IgbWFpbnRhaW5lcnNcbiAgaWYgKF8uaXNFbXB0eShtYWludGFpbmVycykgPT09IGZhbHNlKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0Lm1haW50YWluZXJzID0gbWFpbnRhaW5lcnMubWFwKChtYWludGFpbmVyKTogdm9pZCA9PiB7XG4gICAgICBtYWludGFpbmVyLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwobWFpbnRhaW5lci5lbWFpbCwgb25saW5lKTtcbiAgICAgIHJldHVybiBtYWludGFpbmVyO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBrZ0luZm9Db3B5O1xufVxuXG4vKipcbiAqIHBhcnNlIHBhY2thZ2UgcmVhZG1lIC0gbWFya2Rvd24vYXNjaWlcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYWNrYWdlTmFtZSBuYW1lIG9mIHBhY2thZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSByZWFkbWUgcGFja2FnZSByZWFkbWVcbiAqIEByZXR1cm4ge1N0cmluZ30gY29udmVydGVkIGh0bWwgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVhZG1lKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHJlYWRtZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIGlmIChfLmlzRW1wdHkocmVhZG1lKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gc2FuaXRpenlSZWFkbWUocmVhZG1lKTtcbiAgfVxuXG4gIC8vIGxvZ3MgcmVhZG1lIG5vdCBmb3VuZCBlcnJvclxuICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCAnQHtwYWNrYWdlTmFtZX06IE5vIHJlYWRtZSBmb3VuZCcpO1xuXG4gIHJldHVybiBzYW5pdGl6eVJlYWRtZSgnRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kIScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb2tlbih0eXBlOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Xy5jYXBpdGFsaXplKHR5cGUpfSAke3Rva2VufWA7XG59XG5cbi8qKlxuICogcmV0dXJuIHBhY2thZ2UgdmVyc2lvbiBmcm9tIHRhcmJhbGwgbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uRnJvbVRhcmJhbGwobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIC8vIEZJWE1FOiB3ZSBrbm93IHRoZSByZWdleCBpcyB2YWxpZCwgYnV0IHdlIHNob3VsZCBpbXByb3ZlIHRoaXMgcGFydCBhcyB0cyBzdWdnZXN0XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIC8uKy0oXFxkLispXFwudGd6Ly50ZXN0KG5hbWUpID8gbmFtZS5tYXRjaCgvListKFxcZC4rKVxcLnRnei8pWzFdIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBBdXRob3JGb3JtYXQgPSBBdXRob3IgfCBzdHJpbmcgfCBudWxsIHwgb2JqZWN0IHwgdm9pZDtcblxuLyoqXG4gKiBGb3JtYXRzIGF1dGhvciBmaWVsZCBmb3Igd2VidWkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZmlsZXMvcGFja2FnZS5qc29uI2F1dGhvclxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fHVuZGVmaW5lZH0gYXV0aG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBdXRob3IoYXV0aG9yOiBBdXRob3JGb3JtYXQpOiBhbnkge1xuICBsZXQgYXV0aG9yRGV0YWlscyA9IHtcbiAgICBuYW1lOiBERUZBVUxUX1VTRVIsXG4gICAgZW1haWw6ICcnLFxuICAgIHVybDogJycsXG4gIH07XG5cbiAgaWYgKF8uaXNOaWwoYXV0aG9yKSkge1xuICAgIHJldHVybiBhdXRob3JEZXRhaWxzO1xuICB9XG5cbiAgaWYgKF8uaXNTdHJpbmcoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgbmFtZTogYXV0aG9yIGFzIHN0cmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKF8uaXNPYmplY3QoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgLi4uKGF1dGhvciBhcyBBdXRob3IpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYXV0aG9yRGV0YWlscztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBVUkkgaXMgc3RhcnRpbmcgd2l0aCBcImh0dHA6Ly9cIiwgXCJodHRwczovL1wiIG9yIFwiLy9cIlxuICogQHBhcmFtIHtzdHJpbmd9IHVyaVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIVFRQUHJvdG9jb2wodXJpOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKGh0dHBzPzopP1xcL1xcLy8udGVzdCh1cmkpO1xufVxuXG4vKipcbiAqIEFwcGx5IHdoaXRlc3BhY2VzIGJhc2VkIG9uIHRoZSBsZW5ndGhcbiAqIEBwYXJhbSB7Kn0gc3RyIHRoZSBsb2cgbWVzc2FnZVxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFkKHN0ciwgbWF4KTogc3RyaW5nIHtcbiAgaWYgKHN0ci5sZW5ndGggPCBtYXgpIHtcbiAgICByZXR1cm4gc3RyICsgJyAnLnJlcGVhdChtYXggLSBzdHIubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIHJldHVybiBhIG1hc3F1ZXJhZGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGFuZCBsYXN0IHtjaGFyTnVtfSBhbmQgdGhyZWUgZG90cyBpbiBiZXR3ZWVuLlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtOdW1iZXJ9IGNoYXJOdW1cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXNrKHN0cjogc3RyaW5nLCBjaGFyTnVtID0gMyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtzdHIuc3Vic3RyKDAsIGNoYXJOdW0pfS4uLiR7c3RyLnN1YnN0cigtY2hhck51bSl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVNjb3BlZFVyaShwYWNrYWdlTmFtZSk6IHN0cmluZyB7XG4gIHJldHVybiBwYWNrYWdlTmFtZS5yZXBsYWNlKC9cXC8vZywgJyUyZicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LmtleXModmVyc2lvbnMpLmxlbmd0aCAhPT0gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVyc2lvblZhbGlkKHBhY2thZ2VNZXRhLCBwYWNrYWdlVmVyc2lvbik6IGJvb2xlYW4ge1xuICBjb25zdCBoYXNWZXJzaW9uID0gdHlwZW9mIHBhY2thZ2VWZXJzaW9uICE9PSAndW5kZWZpbmVkJztcbiAgaWYgKCFoYXNWZXJzaW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaGFzTWF0Y2hWZXJzaW9uID0gT2JqZWN0LmtleXMocGFja2FnZU1ldGEudmVyc2lvbnMpLmluY2x1ZGVzKHBhY2thZ2VWZXJzaW9uKTtcbiAgcmV0dXJuIGhhc01hdGNoVmVyc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocGtnSW5mbzogUGFja2FnZSk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHZlcnNpb25zIH0gPSBwa2dJbmZvO1xuICBmb3IgKGNvbnN0IHZlcnNpb24gaW4gdmVyc2lvbnMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZlcnNpb25zW3ZlcnNpb25dLCAnZGVwcmVjYXRlZCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVVUkwocHVibGljVXJsOiBzdHJpbmcgfCB2b2lkKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gbmV3IFVSTChwdWJsaWNVcmwgYXMgc3RyaW5nKTtcbiAgICBpZiAoIXZhbGlkUHJvdG9jb2xzLmluY2x1ZGVzKHBhcnNlZC5wcm90b2NvbC5yZXBsYWNlKCc6JywgJycpKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgcHJvdG9jb2wnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIFRPRE86IGFkZCBlcnJvciBsb2dnZXIgaGVyZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3N0KHVybDogc3RyaW5nID0gJycsIG9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsaWRhdG9yLmlzVVJMKHVybCwge1xuICAgIHJlcXVpcmVfaG9zdDogdHJ1ZSxcbiAgICBhbGxvd190cmFpbGluZ19kb3Q6IGZhbHNlLFxuICAgIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IGZhbHNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXF1aXJlX3BvcnQ6IGZhbHNlLFxuICAgIHJlcXVpcmVfdGxkOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB1YmxpY1VybCh1cmxfcHJlZml4OiBzdHJpbmcgPSAnJywgcmVxKTogc3RyaW5nIHtcbiAgaWYgKHZhbGlkYXRlVVJMKHByb2Nlc3MuZW52LlZFUkRBQ0NJT19QVUJMSUNfVVJMIGFzIHN0cmluZykpIHtcbiAgICBjb25zdCBlbnZVUkwgPSBuZXcgVVJMKHdyYXBQcmVmaXgodXJsX3ByZWZpeCksIHByb2Nlc3MuZW52LlZFUkRBQ0NJT19QVUJMSUNfVVJMIGFzIHN0cmluZykuaHJlZjtcbiAgICBkZWJ1ZygncHVibGljIHVybCBieSBlbnYgJW8nLCBlbnZVUkwpO1xuICAgIHJldHVybiBlbnZVUkw7XG4gIH0gZWxzZSBpZiAocmVxLmdldCgnaG9zdCcpKSB7XG4gICAgY29uc3QgaG9zdCA9IHJlcS5nZXQoJ2hvc3QnKTtcbiAgICBpZiAoIWlzSG9zdChob3N0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGhvc3QnKTtcbiAgICB9XG4gICAgY29uc3QgcHJvdG9IZWFkZXIgPSBwcm9jZXNzLmVudi5WRVJEQUNDSU9fRk9SV0FSREVEX1BST1RPID8/IEhFQURFUlMuRk9SV0FSREVEX1BST1RPO1xuICAgIGNvbnN0IHByb3RvY29sID0gZ2V0V2ViUHJvdG9jb2wocmVxLmdldChwcm90b0hlYWRlci50b0xvd2VyQ2FzZSgpKSwgcmVxLnByb3RvY29sKTtcbiAgICBjb25zdCBjb21iaW5lZFVybCA9IGNvbWJpbmVCYXNlVXJsKHByb3RvY29sLCBob3N0LCB1cmxfcHJlZml4KTtcbiAgICBkZWJ1ZygncHVibGljIHVybCBieSByZXF1ZXN0ICVvJywgY29tYmluZWRVcmwpO1xuICAgIHJldHVybiBjb21iaW5lZFVybDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJy8nO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGJhc2UgdXJsIGZvciByZWdpc3RyeS5cbiAqIEByZXR1cm4ge1N0cmluZ30gYmFzZSByZWdpc3RyeSB1cmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVCYXNlVXJsKHByb3RvY29sOiBzdHJpbmcsIGhvc3Q6IHN0cmluZywgcHJlZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gIGRlYnVnKCdjb21iaW5lZCBwcm90b2NvbCAlbycsIHByb3RvY29sKTtcbiAgZGVidWcoJ2NvbWJpbmVkIGhvc3QgJW8nLCBob3N0KTtcbiAgY29uc3QgbmV3UHJlZml4ID0gd3JhcFByZWZpeChwcmVmaXgpO1xuICBkZWJ1ZygnY29tYmluZWQgcHJlZml4ICVvJywgbmV3UHJlZml4KTtcbiAgY29uc3QgZ3JvdXBlZFVSSSA9IG5ldyBVUkwod3JhcFByZWZpeChwcmVmaXgpLCBgJHtwcm90b2NvbH06Ly8ke2hvc3R9YCk7XG4gIGNvbnN0IHJlc3VsdCA9IGdyb3VwZWRVUkkuaHJlZjtcbiAgZGVidWcoJ2NvbWJpbmVkIHVybCAlbycsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJlZml4KHByZWZpeDogc3RyaW5nIHwgdm9pZCk6IHN0cmluZyB7XG4gIGlmIChwcmVmaXggPT09ICcnIHx8IHR5cGVvZiBwcmVmaXggPT09ICd1bmRlZmluZWQnIHx8IHByZWZpeCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfSBlbHNlIGlmICghcHJlZml4LnN0YXJ0c1dpdGgoJy8nKSAmJiBwcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgIHJldHVybiBgLyR7cHJlZml4fWA7XG4gIH0gZWxzZSBpZiAoIXByZWZpeC5zdGFydHNXaXRoKCcvJykgJiYgIXByZWZpeC5lbmRzV2l0aCgnLycpKSB7XG4gICAgcmV0dXJuIGAvJHtwcmVmaXh9L2A7XG4gIH0gZWxzZSBpZiAocHJlZml4LnN0YXJ0c1dpdGgoJy8nKSAmJiAhcHJlZml4LmVuZHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gYCR7cHJlZml4fS9gO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cbn1cbiJdfQ==
|
|
795
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOlsiZGVidWciLCJyZXF1aXJlIiwibW9kdWxlIiwicGtnVmVyc2lvbiIsImV4cG9ydHMiLCJ2ZXJzaW9uIiwicGtnTmFtZSIsIm5hbWUiLCJ2YWxpZFByb3RvY29scyIsImdldFVzZXJBZ2VudCIsIl8iLCJpc1N0cmluZyIsImNvbnZlcnRQYXlsb2FkVG9CYXNlNjQiLCJwYXlsb2FkIiwiQnVmZmVyIiwiZnJvbSIsInZhbGlkYXRlTmFtZSIsIm5vcm1hbGl6ZWROYW1lIiwidG9Mb3dlckNhc2UiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsInZhbGlkYXRlUGFja2FnZSIsIm5hbWVMaXN0Iiwic3BsaXQiLCJsZW5ndGgiLCJzbGljZSIsImlzT2JqZWN0Iiwib2JqIiwiaXNOdWxsIiwiaXNBcnJheSIsImlzT2JqZWN0T3JBcnJheSIsInZhbGlkYXRlTWV0YWRhdGEiLCJvYmplY3QiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsIkRJU1RfVEFHUyIsImV4dHJhY3RUYXJiYWxsRnJvbVVybCIsInVybCIsIkRlZmF1bHRVUkwiLCJwYXJzZSIsInBhdGhuYW1lIiwicmVwbGFjZSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicGtnIiwicmVxIiwidXJsUHJlZml4IiwidmVyIiwidmVyc2lvbnMiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkaXN0TmFtZSIsImRpc3QiLCJ0YXJiYWxsIiwiZ2V0TG9jYWxSZWdpc3RyeVRhcmJhbGxVcmkiLCJtZW1vaXplZGdldFB1YmxpY1VybCIsImdldFB1YmxpY1VybCIsInVyaSIsImN1cnJlbnRIb3N0IiwiZ2V0IiwidGFyYmFsbE5hbWUiLCJkb21haW5SZWdpc3RyeSIsImVuY29kZVNjb3BlZFVyaSIsInRhZ1ZlcnNpb24iLCJkYXRhIiwidGFnIiwic2VtdmVyIiwiZ2V0VmVyc2lvbiIsImlzTmlsIiwidmVyc2lvbkl0ZW0iLCJjb21wYXJlIiwiZXJyIiwidW5kZWZpbmVkIiwicGFyc2VBZGRyZXNzIiwidXJsQWRkcmVzcyIsInVybFBhdHRlcm4iLCJleGVjIiwicHJvdG8iLCJERUZBVUxUX1BST1RPQ09MIiwiaG9zdCIsIkRFRkFVTFRfRE9NQUlOIiwicG9ydCIsIkRFRkFVTFRfUE9SVCIsInBhdGgiLCJzZW12ZXJTb3J0IiwibGlzdFZlcnNpb25zIiwiZmlsdGVyIiwieCIsImxvZ2dlciIsIndhcm4iLCJzb3J0IiwiY29tcGFyZUxvb3NlIiwibWFwIiwiU3RyaW5nIiwibm9ybWFsaXplRGlzdFRhZ3MiLCJzb3J0ZWQiLCJsYXRlc3QiLCJrZXlzIiwicG9wIiwicGFyc2VJbnRlcnZhbFRhYmxlIiwibXMiLCJzIiwibSIsImgiLCJkIiwidyIsIk0iLCJ5IiwicGFyc2VJbnRlcnZhbCIsImludGVydmFsIiwicmVzdWx0IiwibGFzdF9zdWZmaXgiLCJJbmZpbml0eSIsImZvckVhY2giLCJFcnJvciIsIk51bWJlciIsImdldFdlYlByb3RvY29sIiwiaGVhZGVyUHJvdG9jb2wiLCJwcm90b2NvbCIsInJldHVyblByb3RvY29sIiwiZGVmYXVsdFByb3RvY29sIiwiY29tbWFJbmRleCIsImluZGV4T2YiLCJzdWJzdHIiLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnSW5mbyIsIkVycm9yQ29kZSIsImdldENvbmZsaWN0IiwiZ2V0QmFkRGF0YSIsImdldEJhZFJlcXVlc3QiLCJnZXRJbnRlcm5hbEVycm9yIiwiZ2V0VW5hdXRob3JpemVkIiwiZ2V0Rm9yYmlkZGVuIiwiZ2V0U2VydmljZVVuYXZhaWxhYmxlIiwiZ2V0Tm90Rm91bmQiLCJnZXRDb2RlIiwicGFyc2VDb25maWdGaWxlIiwiY29uZmlnUGF0aCIsInRlc3QiLCJZQU1MIiwibG9hZCIsImZzIiwicmVhZEZpbGVTeW5jIiwiZSIsImNvZGUiLCJtZXNzYWdlIiwiQVBQX0VSUk9SIiwiQ09ORklHX05PVF9WQUxJRCIsImZvbGRlckV4aXN0cyIsInN0YXQiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwiZmlsZUV4aXN0cyIsImlzRmlsZSIsInNvcnRCeU5hbWUiLCJwYWNrYWdlcyIsIm9yZGVyQXNjZW5kaW5nIiwiYSIsImIiLCJjb21wYXJhdG9yTmFtZXMiLCJhZGRTY29wZSIsInNjb3BlIiwicGFja2FnZU5hbWUiLCJkZWxldGVQcm9wZXJ0aWVzIiwicHJvcGVydGllc1RvRGVsZXRlIiwib2JqZWN0SXRlbSIsInByb3BlcnR5IiwiYWRkR3JhdmF0YXJTdXBwb3J0Iiwib25saW5lIiwicGtnSW5mb0NvcHkiLCJhdXRob3IiLCJjb250cmlidXRvcnMiLCJtYWludGFpbmVycyIsImVtYWlsIiwiYXZhdGFyIiwiR0VORVJJQ19BVkFUQVIiLCJpc0VtcHR5IiwiY29udHJpYnV0b3IiLCJtYWludGFpbmVyIiwicGFyc2VSZWFkbWUiLCJyZWFkbWUiLCJvcHRpb25zIiwiZXJyb3IiLCJidWlsZFRva2VuIiwidHlwZSIsInRva2VuIiwiY2FwaXRhbGl6ZSIsImdldFZlcnNpb25Gcm9tVGFyYmFsbCIsImZvcm1hdEF1dGhvciIsImF1dGhvckRldGFpbHMiLCJERUZBVUxUX1VTRVIiLCJpc0hUVFBQcm90b2NvbCIsInBhZCIsInN0ciIsIm1heCIsInJlcGVhdCIsIm1hc2siLCJjaGFyTnVtIiwiaGFzRGlmZk9uZUtleSIsImlzVmVyc2lvblZhbGlkIiwicGFja2FnZU1ldGEiLCJwYWNrYWdlVmVyc2lvbiIsImhhc1ZlcnNpb24iLCJoYXNNYXRjaFZlcnNpb24iLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwidmFsaWRhdGVVUkwiLCJwdWJsaWNVcmwiLCJwYXJzZWQiLCJVUkwiLCJpc0hvc3QiLCJ2YWxpZGF0b3IiLCJpc1VSTCIsInJlcXVpcmVfaG9zdCIsImFsbG93X3RyYWlsaW5nX2RvdCIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJyZXF1aXJlX3BvcnQiLCJyZXF1aXJlX3RsZCIsInVybF9wcmVmaXgiLCJwcm9jZXNzIiwiZW52IiwiVkVSREFDQ0lPX1BVQkxJQ19VUkwiLCJlbnZVUkwiLCJ3cmFwUHJlZml4IiwiaHJlZiIsInByb3RvSGVhZGVyIiwiVkVSREFDQ0lPX0ZPUldBUkRFRF9QUk9UTyIsIkhFQURFUlMiLCJGT1JXQVJERURfUFJPVE8iLCJjb21iaW5lZFVybCIsImNvbWJpbmVCYXNlVXJsIiwicHJlZml4IiwibmV3UHJlZml4IiwiZ3JvdXBlZFVSSSIsImVuZHNXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsV0FBWCxDQUFkLEMsQ0FFQTtBQUNBOztBQUNBQyxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQztBQUNBLE1BQU1DLE9BQU8sR0FBR0osTUFBTSxDQUFDRSxPQUFQLENBQWVHLElBQS9CO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLENBQUMsT0FBRCxFQUFVLE1BQVYsQ0FBdkI7O0FBRU8sU0FBU0MsWUFBVCxHQUFnQztBQUNyQyx1QkFBT0MsZ0JBQUVDLFFBQUYsQ0FBV0wsT0FBWCxDQUFQO0FBQ0EsdUJBQU9JLGdCQUFFQyxRQUFGLENBQVdSLFVBQVgsQ0FBUDtBQUNBLFNBQVEsR0FBRUcsT0FBUSxJQUFHSCxVQUFXLEVBQWhDO0FBQ0Q7O0FBRU0sU0FBU1Msc0JBQVQsQ0FBZ0NDLE9BQWhDLEVBQXlEO0FBQzlELFNBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixPQUFaLEVBQXFCLFFBQXJCLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNHLFlBQVQsQ0FBc0JULElBQXRCLEVBQTZDO0FBQ2xE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U0FBU2dILFVBQVQsQ0FBb0JRLE1BQXBCLEVBQW1EO0FBQ3hELE1BQUlBLE1BQU0sS0FBSyxFQUFYLElBQWlCLE9BQU9BLE1BQVAsS0FBa0IsV0FBbkMsSUFBa0RBLE1BQU0sS0FBSyxJQUFqRSxFQUF1RTtBQUNyRSxXQUFPLEVBQVA7QUFDRCxHQUZELE1BRU8sSUFBSSxDQUFDQSxNQUFNLENBQUNwTixVQUFQLENBQWtCLEdBQWxCLENBQUQsSUFBMkJvTixNQUFNLENBQUNHLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBL0IsRUFBcUQ7QUFDMUQsV0FBUSxJQUFHSCxNQUFPLEVBQWxCO0FBQ0QsR0FGTSxNQUVBLElBQUksQ0FBQ0EsTUFBTSxDQUFDcE4sVUFBUCxDQUFrQixHQUFsQixDQUFELElBQTJCLENBQUNvTixNQUFNLENBQUNHLFFBQVAsQ0FBZ0IsR0FBaEIsQ0FBaEMsRUFBc0Q7QUFDM0QsV0FBUSxJQUFHSCxNQUFPLEdBQWxCO0FBQ0QsR0FGTSxNQUVBLElBQUlBLE1BQU0sQ0FBQ3BOLFVBQVAsQ0FBa0IsR0FBbEIsS0FBMEIsQ0FBQ29OLE1BQU0sQ0FBQ0csUUFBUCxDQUFnQixHQUFoQixDQUEvQixFQUFxRDtBQUMxRCxXQUFRLEdBQUVILE1BQU8sR0FBakI7QUFDRCxHQUZNLE1BRUE7QUFDTCxXQUFPQSxNQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgRGVmYXVsdFVSTCwgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBZQU1MIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICd2YWxpZGF0b3InO1xuaW1wb3J0IG1lbW9pemVlIGZyb20gJ21lbW9pemVlJztcbmltcG9ydCBzYW5pdGl6eVJlYWRtZSBmcm9tICdAdmVyZGFjY2lvL3JlYWRtZSc7XG5cbmltcG9ydCB7IFBhY2thZ2UsIFZlcnNpb24sIEF1dGhvciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmltcG9ydCB7IGdldENvbmZsaWN0LCBnZXRCYWREYXRhLCBnZXRCYWRSZXF1ZXN0LCBnZXRJbnRlcm5hbEVycm9yLCBnZXRVbmF1dGhvcml6ZWQsIGdldEZvcmJpZGRlbiwgZ2V0U2VydmljZVVuYXZhaWxhYmxlLCBnZXROb3RGb3VuZCwgZ2V0Q29kZSB9IGZyb20gJ0B2ZXJkYWNjaW8vY29tbW9ucy1hcGknO1xuaW1wb3J0IHsgZ2VuZXJhdGVHcmF2YXRhclVybCwgR0VORVJJQ19BVkFUQVIgfSBmcm9tICcuLi91dGlscy91c2VyJztcbmltcG9ydCB7IFN0cmluZ1ZhbHVlLCBBdXRob3JBdmF0YXIgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBUFBfRVJST1IsIERFRkFVTFRfUE9SVCwgREVGQVVMVF9ET01BSU4sIERFRkFVTFRfUFJPVE9DT0wsIEhFQURFUlMsIERJU1RfVEFHUywgREVGQVVMVF9VU0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVDb250cmlidXRvcnMgfSBmcm9tICcuL3N0b3JhZ2UtdXRpbHMnO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5yZXF1aXJlKCdwa2dpbmZvJykobW9kdWxlKTtcbmNvbnN0IHBrZ1ZlcnNpb24gPSBtb2R1bGUuZXhwb3J0cy52ZXJzaW9uO1xuY29uc3QgcGtnTmFtZSA9IG1vZHVsZS5leHBvcnRzLm5hbWU7XG5jb25zdCB2YWxpZFByb3RvY29scyA9IFsnaHR0cHMnLCAnaHR0cCddO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckFnZW50KCk6IHN0cmluZyB7XG4gIGFzc2VydChfLmlzU3RyaW5nKHBrZ05hbWUpKTtcbiAgYXNzZXJ0KF8uaXNTdHJpbmcocGtnVmVyc2lvbikpO1xuICByZXR1cm4gYCR7cGtnTmFtZX0vJHtwa2dWZXJzaW9ufWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0KHBheWxvYWQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShwYXlsb2FkLCAnYmFzZTY0Jyk7XG59XG5cbi8qKlxuICogRnJvbSBub3JtYWxpemUtcGFja2FnZS1kYXRhL2xpYi9maXhlci5qc1xuICogQHBhcmFtIHsqfSBuYW1lICB0aGUgcGFja2FnZSBuYW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufSB3aGV0aGVyIGlzIHZhbGlkIG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOYW1lKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXy5pc1N0cmluZyhuYW1lKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkTmFtZTogc3RyaW5nID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8qKlxuICAgKiBTb21lIGNvbnRleHQgYWJvdXQgdGhlIGZpcnN0IHJlZ2V4XG4gICAqIC0gbnBtIHVzZWQgdG8gaGF2ZSBhIGRpZmZlcmVudCB0YXJiYWxsIG5hbWluZyBzeXN0ZW0uXG4gICAqIGVnOiBodHRwOi8vcmVnaXN0cnkubnBtanMuY29tL3RoaXJ0eS10d29cbiAgICogaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGhpcnR5LXR3by8tL3RoaXJ0eS10d29AMC4wLjEudGd6XG4gICAqIFRoZSBmaWxlIG5hbWUgdGhpcnR5LXR3b0AwLjAuMS50Z3osIHRoZSB2ZXJzaW9uIGFuZCB0aGUgcGtnIG5hbWUgd2FzIHNlcGFyYXRlZCBieSBhbiBhdCAoQClcbiAgICogd2hpbGUgbm93YWRheXMgdGhlIG5hbWluZyBzeXN0ZW0gaXMgYmFzZWQgaW4gZGFzaGVzXG4gICAqIGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ZlcmRhY2Npby8tL3ZlcmRhY2Npby0xLjQuMC50Z3pcbiAgICpcbiAgICogbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzc1XG4gICAqL1xuICByZXR1cm4gIShcbiAgICAhbm9ybWFsaXplZE5hbWUubWF0Y2goL15bLWEtekEtWjAtOV8uIX4qJygpQF0rJC8pIHx8XG4gICAgbm9ybWFsaXplZE5hbWUuc3RhcnRzV2l0aCgnLicpIHx8IC8vIFwiLmJpblwiLCBldGMuXG4gICAgWydub2RlX21vZHVsZXMnLCAnX19wcm90b19fJywgJ2Zhdmljb24uaWNvJ10uaW5jbHVkZXMobm9ybWFsaXplZE5hbWUpXG4gICk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwYWNrYWdlLlxuICogQHJldHVybiB7Qm9vbGVhbn0gd2hldGhlciB0aGUgcGFja2FnZSBpcyB2YWxpZCBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGFja2FnZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbmFtZUxpc3QgPSBuYW1lLnNwbGl0KCcvJywgMik7XG4gIGlmIChuYW1lTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBub3JtYWwgcGFja2FnZVxuICAgIHJldHVybiB2YWxpZGF0ZU5hbWUobmFtZUxpc3RbMF0pO1xuICB9XG4gIC8vIHNjb3BlZCBwYWNrYWdlXG4gIHJldHVybiBuYW1lTGlzdFswXVswXSA9PT0gJ0AnICYmIHZhbGlkYXRlTmFtZShuYW1lTGlzdFswXS5zbGljZSgxKSkgJiYgdmFsaWRhdGVOYW1lKG5hbWVMaXN0WzFdKTtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgYW4gT2JqZWN0XG4gKiBAcGFyYW0geyp9IG9iaiB0aGUgZWxlbWVudFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBfLmlzT2JqZWN0KG9iaikgJiYgXy5pc051bGwob2JqKSA9PT0gZmFsc2UgJiYgXy5pc0FycmF5KG9iaikgPT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RPckFycmF5KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBfLmlzT2JqZWN0KG9iaikgJiYgXy5pc051bGwob2JqKSA9PT0gZmFsc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgdGhlIHBhY2thZ2UgbWV0YWRhdGEsIGFkZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgd2hldGhlciBhcmUgbWlzc2luZyB3aXRoaW5cbiAqIHRoZSBtZXRhZGF0YSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHsqfSBvYmplY3RcbiAqIEBwYXJhbSB7Kn0gbmFtZVxuICogQHJldHVybiB7T2JqZWN0fSB0aGUgb2JqZWN0IHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFzIGRpc3QtdGFncyBhZCB2ZXJzaW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVNZXRhZGF0YShvYmplY3Q6IFBhY2thZ2UsIG5hbWU6IHN0cmluZyk6IFBhY2thZ2Uge1xuICBhc3NlcnQoaXNPYmplY3Qob2JqZWN0KSwgJ25vdCBhIGpzb24gb2JqZWN0Jyk7XG4gIGFzc2VydC5zdHJpY3RFcXVhbChvYmplY3QubmFtZSwgbmFtZSk7XG5cbiAgaWYgKCFpc09iamVjdChvYmplY3RbRElTVF9UQUdTXSkpIHtcbiAgICBvYmplY3RbRElTVF9UQUdTXSA9IHt9O1xuICB9XG5cbiAgaWYgKCFpc09iamVjdChvYmplY3RbJ3ZlcnNpb25zJ10pKSB7XG4gICAgb2JqZWN0Wyd2ZXJzaW9ucyddID0ge307XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0KG9iamVjdFsndGltZSddKSkge1xuICAgIG9iamVjdFsndGltZSddID0ge307XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFRhcmJhbGxGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gRGVmYXVsdFVSTC5wYXJzZSh1cmwpLnBhdGhuYW1lLnJlcGxhY2UoL14uKlxcLy8sICcnKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIGEgcGFja2FnZXMncyB2ZXJzaW9ucyBhbmQgZmlsdGVyIGVhY2ggb3JpZ2luYWwgdGFyYmFsbCB1cmwuXG4gKiBAcGFyYW0geyp9IHBrZ1xuICogQHBhcmFtIHsqfSByZXFcbiAqIEBwYXJhbSB7Kn0gY29uZmlnXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGEgZmlsdGVyZWQgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMocGtnOiBQYWNrYWdlLCByZXE6IFJlcXVlc3QsIHVybFByZWZpeDogc3RyaW5nIHwgdm9pZCk6IFBhY2thZ2Uge1xuICBmb3IgKGNvbnN0IHZlciBpbiBwa2cudmVyc2lvbnMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBrZy52ZXJzaW9ucywgdmVyKSkge1xuICAgICAgY29uc3QgZGlzdE5hbWUgPSBwa2cudmVyc2lvbnNbdmVyXS5kaXN0O1xuXG4gICAgICBpZiAoXy5pc051bGwoZGlzdE5hbWUpID09PSBmYWxzZSAmJiBfLmlzTnVsbChkaXN0TmFtZS50YXJiYWxsKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGlzdE5hbWUudGFyYmFsbCA9IGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpKGRpc3ROYW1lLnRhcmJhbGwsIHBrZy5uYW1lLCByZXEsIHVybFByZWZpeCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBwa2c7XG59XG5cbmNvbnN0IG1lbW9pemVkZ2V0UHVibGljVXJsID0gbWVtb2l6ZWUoZ2V0UHVibGljVXJsKTtcblxuLyoqXG4gKiBGaWx0ZXIgYSB0YXJiYWxsIHVybC5cbiAqIEBwYXJhbSB7Kn0gdXJpXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGEgcGFyc2VkIHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxSZWdpc3RyeVRhcmJhbGxVcmkodXJpOiBzdHJpbmcsIHBrZ05hbWU6IHN0cmluZywgcmVxOiBSZXF1ZXN0LCB1cmxQcmVmaXg6IHN0cmluZyB8IHZvaWQpOiBzdHJpbmcge1xuICBjb25zdCBjdXJyZW50SG9zdCA9IHJlcS5nZXQoJ2hvc3QnKTtcblxuICBpZiAoIWN1cnJlbnRIb3N0KSB7XG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuICBjb25zdCB0YXJiYWxsTmFtZSA9IGV4dHJhY3RUYXJiYWxsRnJvbVVybCh1cmkpO1xuICBjb25zdCBkb21haW5SZWdpc3RyeSA9IG1lbW9pemVkZ2V0UHVibGljVXJsKHVybFByZWZpeCB8fCAnJywgcmVxKTtcblxuICByZXR1cm4gYCR7ZG9tYWluUmVnaXN0cnl9JHtlbmNvZGVTY29wZWRVcmkocGtnTmFtZSl9Ly0vJHt0YXJiYWxsTmFtZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFnVmVyc2lvbihkYXRhOiBQYWNrYWdlLCB2ZXJzaW9uOiBzdHJpbmcsIHRhZzogU3RyaW5nVmFsdWUpOiBib29sZWFuIHtcbiAgaWYgKHRhZyAmJiBkYXRhW0RJU1RfVEFHU11bdGFnXSAhPT0gdmVyc2lvbiAmJiBzZW12ZXIucGFyc2UodmVyc2lvbiwgdHJ1ZSkpIHtcbiAgICAvLyB2YWxpZCB2ZXJzaW9uIC0gc3RvcmVcbiAgICBkYXRhW0RJU1RfVEFHU11bdGFnXSA9IHZlcnNpb247XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldHMgdmVyc2lvbiBmcm9tIGEgcGFja2FnZSBvYmplY3QgdGFraW5nIGludG8gYWNjb3VudCBzZW12ZXIgd2VpcmRuZXNzLlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm4gdGhlIHNlbWFudGljIHZlcnNpb24gb2YgYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uKHBrZzogUGFja2FnZSwgdmVyc2lvbjogYW55KTogVmVyc2lvbiB8IHZvaWQge1xuICAvLyB0aGlzIGNvbmRpdGlvbiBtdXN0IGFsbG93IGNhc3RcbiAgaWYgKF8uaXNOaWwocGtnLnZlcnNpb25zW3ZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gcGtnLnZlcnNpb25zW3ZlcnNpb25dO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB2ZXJzaW9uID0gc2VtdmVyLnBhcnNlKHZlcnNpb24sIHRydWUpO1xuICAgIGZvciAoY29uc3QgdmVyc2lvbkl0ZW0gaW4gcGtnLnZlcnNpb25zKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICBpZiAodmVyc2lvbi5jb21wYXJlKHNlbXZlci5wYXJzZSh2ZXJzaW9uSXRlbSwgdHJ1ZSkpID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwa2cudmVyc2lvbnNbdmVyc2lvbkl0ZW1dO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGFuIGludGVybmV0IGFkZHJlc3NcbiAqIEFsbG93OlxuIC0gaHR0cHM6bG9jYWxob3N0OjEyMzQgICAgICAgIC0gcHJvdG9jb2wgKyBob3N0ICsgcG9ydFxuIC0gbG9jYWxob3N0OjEyMzQgICAgICAgICAgICAgIC0gaG9zdCArIHBvcnRcbiAtIDEyMzQgICAgICAgICAgICAgICAgICAgICAgICAtIHBvcnRcbiAtIGh0dHA6OjEyMzQgICAgICAgICAgICAgICAgICAtIHByb3RvY29sICsgcG9ydFxuIC0gaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzLyAgICAgIC0gZnVsbCB1cmwgKyBodHRwc1xuIC0gaHR0cDovL1s6OjFdOjQ0My8gICAgICAgICAgIC0gaXB2NlxuIC0gdW5peDovdG1wL2h0dHAuc29jayAgICAgICAgIC0gdW5peCBzb2NrZXRzXG4gLSBodHRwczovL3VuaXg6L3RtcC9odHRwLnNvY2sgLSB1bml4IHNvY2tldHMgKGh0dHBzKVxuICogQHBhcmFtIHsqfSB1cmxBZGRyZXNzIHRoZSBpbnRlcm5ldCBhZGRyZXNzIGRlZmluaXRpb25cbiAqIEByZXR1cm4ge09iamVjdHxOdWxsfSBsaXRlcmFsIG9iamVjdCB0aGF0IHJlcHJlc2VudCB0aGUgYWRkcmVzcyBwYXJzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQWRkcmVzcyh1cmxBZGRyZXNzOiBhbnkpOiBhbnkge1xuICAvL1xuICAvLyBUT0RPOiByZWZhY3RvciBpdCB0byBzb21ldGhpbmcgbW9yZSByZWFzb25hYmxlP1xuICAvL1xuICAvLyAgICAgICAgcHJvdG9jb2wgOiAgLy8gICAgICAoICBob3N0ICApfCggICAgaXB2NiAgICAgKTogIHBvcnQgIC9cbiAgbGV0IHVybFBhdHRlcm4gPSAvXigoaHR0cHM/KTooXFwvXFwvKT8pPygoKFteXFwvOl0qKXxcXFsoW15cXFtcXF1dKylcXF0pOik/KFxcZCspXFwvPyQvLmV4ZWModXJsQWRkcmVzcyk7XG5cbiAgaWYgKHVybFBhdHRlcm4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvdG86IHVybFBhdHRlcm5bMl0gfHwgREVGQVVMVF9QUk9UT0NPTCxcbiAgICAgIGhvc3Q6IHVybFBhdHRlcm5bNl0gfHwgdXJsUGF0dGVybls3XSB8fCBERUZBVUxUX0RPTUFJTixcbiAgICAgIHBvcnQ6IHVybFBhdHRlcm5bOF0gfHwgREVGQVVMVF9QT1JULFxuICAgIH07XG4gIH1cblxuICB1cmxQYXR0ZXJuID0gL14oKGh0dHBzPyk6KFxcL1xcLyk/KT91bml4OiguKikkLy5leGVjKHVybEFkZHJlc3MpO1xuXG4gIGlmICh1cmxQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3RvOiB1cmxQYXR0ZXJuWzJdIHx8IERFRkFVTFRfUFJPVE9DT0wsXG4gICAgICBwYXRoOiB1cmxQYXR0ZXJuWzRdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBmaWx0ZXJzIG91dCBiYWQgc2VtdmVyIHZlcnNpb25zIGFuZCBzb3J0cyB0aGUgYXJyYXkuXG4gKiBAcmV0dXJuIHtBcnJheX0gc29ydGVkIEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW12ZXJTb3J0KGxpc3RWZXJzaW9uczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiAoXG4gICAgbGlzdFZlcnNpb25zXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghc2VtdmVyLnBhcnNlKHgsIHRydWUpKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oeyB2ZXI6IHggfSwgJ2lnbm9yaW5nIGJhZCB2ZXJzaW9uIEB7dmVyfScpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAvLyBGSVhNRTogaXQgc2VlbXMgdGhlIEB0eXBlcy9zZW12ZXIgZG8gbm90IGhhbmRsZSBhIGxlZ2l0aW1hdGUgbWV0aG9kIG5hbWVkICdjb21wYXJlTG9vc2UnXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAuc29ydChzZW12ZXIuY29tcGFyZUxvb3NlKVxuICAgICAgLm1hcChTdHJpbmcpXG4gICk7XG59XG5cbi8qKlxuICogRmxhdHRlbiBhcnJheXMgb2YgdGFncy5cbiAqIEBwYXJhbSB7Kn0gZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRGlzdFRhZ3MocGtnOiBQYWNrYWdlKTogdm9pZCB7XG4gIGxldCBzb3J0ZWQ7XG4gIGlmICghcGtnW0RJU1RfVEFHU10ubGF0ZXN0KSB7XG4gICAgLy8gb3ZlcndyaXRlIGxhdGVzdCB3aXRoIGhpZ2hlc3Qga25vd24gdmVyc2lvbiBiYXNlZCBvbiBzZW12ZXIgc29ydFxuICAgIHNvcnRlZCA9IHNlbXZlclNvcnQoT2JqZWN0LmtleXMocGtnLnZlcnNpb25zKSk7XG4gICAgaWYgKHNvcnRlZCAmJiBzb3J0ZWQubGVuZ3RoKSB7XG4gICAgICBwa2dbRElTVF9UQUdTXS5sYXRlc3QgPSBzb3J0ZWQucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCB0YWcgaW4gcGtnW0RJU1RfVEFHU10pIHtcbiAgICBpZiAoXy5pc0FycmF5KHBrZ1tESVNUX1RBR1NdW3RhZ10pKSB7XG4gICAgICBpZiAocGtnW0RJU1RfVEFHU11bdGFnXS5sZW5ndGgpIHtcbiAgICAgICAgLy8gc29ydCBhcnJheVxuICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBjbGVhcmx5IHdyb25nLCB3ZSBuZWVkIHRvIHJlc2VhcmNoIHdoeSB0aGlzIGlzIGxpa2UgdGhpcy5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzb3J0ZWQgPSBzZW12ZXJTb3J0KHBrZ1tESVNUX1RBR1NdW3RhZ10pO1xuICAgICAgICBpZiAoc29ydGVkLmxlbmd0aCkge1xuICAgICAgICAgIC8vIHVzZSBoaWdoZXN0IHZlcnNpb24gYmFzZWQgb24gc2VtdmVyIHNvcnRcbiAgICAgICAgICBwa2dbRElTVF9UQUdTXVt0YWddID0gc29ydGVkLnBvcCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgcGtnW0RJU1RfVEFHU11bdGFnXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcocGtnW0RJU1RfVEFHU11bdGFnXSkpIHtcbiAgICAgIGlmICghc2VtdmVyLnBhcnNlKHBrZ1tESVNUX1RBR1NdW3RhZ10sIHRydWUpKSB7XG4gICAgICAgIC8vIGlmIHRoZSB2ZXJzaW9uIGlzIGludmFsaWQsIGRlbGV0ZSB0aGUgZGlzdC10YWcgZW50cnlcbiAgICAgICAgZGVsZXRlIHBrZ1tESVNUX1RBR1NdW3RhZ107XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHBhcnNlSW50ZXJ2YWxUYWJsZSA9IHtcbiAgJyc6IDEwMDAsXG4gIG1zOiAxLFxuICBzOiAxMDAwLFxuICBtOiA2MCAqIDEwMDAsXG4gIGg6IDYwICogNjAgKiAxMDAwLFxuICBkOiA4NjQwMDAwMCxcbiAgdzogNyAqIDg2NDAwMDAwLFxuICBNOiAzMCAqIDg2NDAwMDAwLFxuICB5OiAzNjUgKiA4NjQwMDAwMCxcbn07XG5cbi8qKlxuICogUGFyc2UgYW4gaW50ZXJuYWwgc3RyaW5nIHRvIG51bWJlclxuICogQHBhcmFtIHsqfSBpbnRlcnZhbFxuICogQHJldHVybiB7TnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbnRlcnZhbChpbnRlcnZhbDogYW55KTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiBpbnRlcnZhbCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gaW50ZXJ2YWwgKiAxMDAwO1xuICB9XG4gIGxldCByZXN1bHQgPSAwO1xuICBsZXQgbGFzdF9zdWZmaXggPSBJbmZpbml0eTtcbiAgaW50ZXJ2YWwuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uICh4KTogdm9pZCB7XG4gICAgaWYgKCF4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG0gPSB4Lm1hdGNoKC9eKCgwfFsxLTldWzAtOV0qKShcXC5bMC05XSspPykobXN8c3xtfGh8ZHx3fE18eXwpJC8pO1xuICAgIGlmICghbSB8fCBwYXJzZUludGVydmFsVGFibGVbbVs0XV0gPj0gbGFzdF9zdWZmaXggfHwgKG1bNF0gPT09ICcnICYmIGxhc3Rfc3VmZml4ICE9PSBJbmZpbml0eSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdpbnZhbGlkIGludGVydmFsOiAnICsgaW50ZXJ2YWwpO1xuICAgIH1cbiAgICBsYXN0X3N1ZmZpeCA9IHBhcnNlSW50ZXJ2YWxUYWJsZVttWzRdXTtcbiAgICByZXN1bHQgKz0gTnVtYmVyKG1bMV0pICogcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlY3QgcnVubmluZyBwcm90b2NvbCAoaHR0cCBvciBodHRwcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYlByb3RvY29sKGhlYWRlclByb3RvY29sOiBzdHJpbmcgfCB2b2lkLCBwcm90b2NvbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHJldHVyblByb3RvY29sO1xuICBjb25zdCBbLCBkZWZhdWx0UHJvdG9jb2xdID0gdmFsaWRQcm90b2NvbHM7XG4gIC8vIEhBUHJveHkgdmFyaWFudCBtaWdodCByZXR1cm4gaHR0cCxodHRwIHdpdGggWC1Gb3J3YXJkZWQtUHJvdG9cbiAgaWYgKHR5cGVvZiBoZWFkZXJQcm90b2NvbCA9PT0gJ3N0cmluZycgJiYgaGVhZGVyUHJvdG9jb2wgIT09ICcnKSB7XG4gICAgZGVidWcoJ2hlYWRlciBwcm90b2NvbDogJW8nLCBwcm90b2NvbCk7XG4gICAgY29uc3QgY29tbWFJbmRleCA9IGhlYWRlclByb3RvY29sLmluZGV4T2YoJywnKTtcbiAgICByZXR1cm5Qcm90b2NvbCA9IGNvbW1hSW5kZXggPiAwID8gaGVhZGVyUHJvdG9jb2wuc3Vic3RyKDAsIGNvbW1hSW5kZXgpIDogaGVhZGVyUHJvdG9jb2w7XG4gIH0gZWxzZSB7XG4gICAgZGVidWcoJ3JlcSBwcm90b2NvbDogJW8nLCBoZWFkZXJQcm90b2NvbCk7XG4gICAgcmV0dXJuUHJvdG9jb2wgPSBwcm90b2NvbDtcbiAgfVxuXG4gIHJldHVybiB2YWxpZFByb3RvY29scy5pbmNsdWRlcyhyZXR1cm5Qcm90b2NvbCkgPyByZXR1cm5Qcm90b2NvbCA6IGRlZmF1bHRQcm90b2NvbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdGVzdFZlcnNpb24ocGtnSW5mbzogUGFja2FnZSk6IHN0cmluZyB7XG4gIHJldHVybiBwa2dJbmZvW0RJU1RfVEFHU10ubGF0ZXN0O1xufVxuXG5leHBvcnQgY29uc3QgRXJyb3JDb2RlID0ge1xuICBnZXRDb25mbGljdCxcbiAgZ2V0QmFkRGF0YSxcbiAgZ2V0QmFkUmVxdWVzdCxcbiAgZ2V0SW50ZXJuYWxFcnJvcixcbiAgZ2V0VW5hdXRob3JpemVkLFxuICBnZXRGb3JiaWRkZW4sXG4gIGdldFNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgZ2V0Tm90Rm91bmQsXG4gIGdldENvZGUsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWdGaWxlKGNvbmZpZ1BhdGg6IHN0cmluZyk6IGFueSB7XG4gIHRyeSB7XG4gICAgaWYgKC9cXC55YT9tbCQvaS50ZXN0KGNvbmZpZ1BhdGgpKSB7XG4gICAgICByZXR1cm4gWUFNTC5sb2FkKGZzLnJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmLTgnKSk7XG4gICAgfVxuICAgIGRlYnVnKCd5YW1sIHBhcnNlZCcpO1xuICAgIHJldHVybiByZXF1aXJlKGNvbmZpZ1BhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ3lhbWwgcGFyc2UgZmFpbGVkJyk7XG4gICAgaWYgKGUuY29kZSAhPT0gJ01PRFVMRV9OT1RfRk9VTkQnKSB7XG4gICAgICBlLm1lc3NhZ2UgPSBBUFBfRVJST1IuQ09ORklHX05PVF9WQUxJRDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBwYXRoIGFscmVhZHkgZXhpc3QuXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvbGRlckV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMocGF0aCk7XG4gICAgcmV0dXJuIHN0YXQuaXNEaXJlY3RvcnkoKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGZpbGUgYWxyZWFkeSBleGlzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMocGF0aCk7XG4gICAgcmV0dXJuIHN0YXQuaXNGaWxlKCk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeU5hbWUocGFja2FnZXM6IGFueVtdLCBvcmRlckFzY2VuZGluZzogYm9vbGVhbiB8IHZvaWQgPSB0cnVlKTogc3RyaW5nW10ge1xuICByZXR1cm4gcGFja2FnZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb21wYXJhdG9yTmFtZXMgPSBhLm5hbWUudG9Mb3dlckNhc2UoKSA8IGIubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIG9yZGVyQXNjZW5kaW5nID8gKGNvbXBhcmF0b3JOYW1lcyA/IC0xIDogMSkgOiBjb21wYXJhdG9yTmFtZXMgPyAxIDogLTE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2NvcGUoc2NvcGU6IHN0cmluZywgcGFja2FnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgQCR7c2NvcGV9LyR7cGFja2FnZU5hbWV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXMocHJvcGVydGllc1RvRGVsZXRlOiBzdHJpbmdbXSwgb2JqZWN0SXRlbTogYW55KTogYW55IHtcbiAgXy5mb3JFYWNoKHByb3BlcnRpZXNUb0RlbGV0ZSwgKHByb3BlcnR5KTogYW55ID0+IHtcbiAgICBkZWxldGUgb2JqZWN0SXRlbVtwcm9wZXJ0eV07XG4gIH0pO1xuXG4gIHJldHVybiBvYmplY3RJdGVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkR3JhdmF0YXJTdXBwb3J0KHBrZ0luZm86IFBhY2thZ2UsIG9ubGluZSA9IHRydWUpOiBBdXRob3JBdmF0YXIge1xuICBjb25zdCBwa2dJbmZvQ29weSA9IHsgLi4ucGtnSW5mbyB9IGFzIGFueTtcbiAgY29uc3QgYXV0aG9yOiBhbnkgPSBfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmF1dGhvcicsIG51bGwpIGFzIGFueTtcbiAgY29uc3QgY29udHJpYnV0b3JzOiBBdXRob3JBdmF0YXJbXSA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyhfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmNvbnRyaWJ1dG9ycycsIFtdKSk7XG4gIGNvbnN0IG1haW50YWluZXJzID0gXy5nZXQocGtnSW5mbywgJ2xhdGVzdC5tYWludGFpbmVycycsIFtdKTtcblxuICAvLyBmb3IgYXV0aG9yLlxuICBpZiAoYXV0aG9yICYmIF8uaXNPYmplY3QoYXV0aG9yKSkge1xuICAgIGNvbnN0IHsgZW1haWwgfSA9IGF1dGhvciBhcyBBdXRob3I7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0LmF1dGhvci5hdmF0YXIgPSBnZW5lcmF0ZUdyYXZhdGFyVXJsKGVtYWlsLCBvbmxpbmUpO1xuICB9XG5cbiAgaWYgKGF1dGhvciAmJiBfLmlzU3RyaW5nKGF1dGhvcikpIHtcbiAgICBwa2dJbmZvQ29weS5sYXRlc3QuYXV0aG9yID0ge1xuICAgICAgYXZhdGFyOiBHRU5FUklDX0FWQVRBUixcbiAgICAgIGVtYWlsOiAnJyxcbiAgICAgIGF1dGhvcixcbiAgICB9O1xuICB9XG5cbiAgLy8gZm9yIGNvbnRyaWJ1dG9yc1xuICBpZiAoXy5pc0VtcHR5KGNvbnRyaWJ1dG9ycykgPT09IGZhbHNlKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0LmNvbnRyaWJ1dG9ycyA9IGNvbnRyaWJ1dG9ycy5tYXAoXG4gICAgICAoY29udHJpYnV0b3IpOiBBdXRob3JBdmF0YXIgPT4ge1xuICAgICAgICBpZiAoaXNPYmplY3QoY29udHJpYnV0b3IpKSB7XG4gICAgICAgICAgY29udHJpYnV0b3IuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChjb250cmlidXRvci5lbWFpbCwgb25saW5lKTtcbiAgICAgICAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKGNvbnRyaWJ1dG9yKSkge1xuICAgICAgICAgIGNvbnRyaWJ1dG9yID0ge1xuICAgICAgICAgICAgYXZhdGFyOiBHRU5FUklDX0FWQVRBUixcbiAgICAgICAgICAgIGVtYWlsOiBjb250cmlidXRvcixcbiAgICAgICAgICAgIG5hbWU6IGNvbnRyaWJ1dG9yLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJpYnV0b3I7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIGZvciBtYWludGFpbmVyc1xuICBpZiAoXy5pc0VtcHR5KG1haW50YWluZXJzKSA9PT0gZmFsc2UpIHtcbiAgICBwa2dJbmZvQ29weS5sYXRlc3QubWFpbnRhaW5lcnMgPSBtYWludGFpbmVycy5tYXAoKG1haW50YWluZXIpOiB2b2lkID0+IHtcbiAgICAgIG1haW50YWluZXIuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChtYWludGFpbmVyLmVtYWlsLCBvbmxpbmUpO1xuICAgICAgcmV0dXJuIG1haW50YWluZXI7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGtnSW5mb0NvcHk7XG59XG5cbi8qKlxuICogcGFyc2UgcGFja2FnZSByZWFkbWUgLSBtYXJrZG93bi9hc2NpaVxuICogQHBhcmFtIHtTdHJpbmd9IHBhY2thZ2VOYW1lIG5hbWUgb2YgcGFja2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IHJlYWRtZSBwYWNrYWdlIHJlYWRtZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgc2FuaXRpenlSZWFkbWUgb3B0aW9uc1xuICogQHJldHVybiB7U3RyaW5nfSBjb252ZXJ0ZWQgaHRtbCB0ZW1wbGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWFkbWUocGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IHBhdGhuYW1lPzogc3RyaW5nIHwgdm9pZCB9ID0ge30pOiBzdHJpbmcgfCB2b2lkIHtcbiAgaWYgKF8uaXNFbXB0eShyZWFkbWUpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBzYW5pdGl6eVJlYWRtZShyZWFkbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gbG9ncyByZWFkbWUgbm90IGZvdW5kIGVycm9yXG4gIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sICdAe3BhY2thZ2VOYW1lfTogTm8gcmVhZG1lIGZvdW5kJyk7XG5cbiAgcmV0dXJuIHNhbml0aXp5UmVhZG1lKCdFUlJPUjogTm8gUkVBRE1FIGRhdGEgZm91bmQhJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRva2VuKHR5cGU6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtfLmNhcGl0YWxpemUodHlwZSl9ICR7dG9rZW59YDtcbn1cblxuLyoqXG4gKiByZXR1cm4gcGFja2FnZSB2ZXJzaW9uIGZyb20gdGFyYmFsbCBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNpb25Gcm9tVGFyYmFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB2b2lkIHtcbiAgLy8gRklYTUU6IHdlIGtub3cgdGhlIHJlZ2V4IGlzIHZhbGlkLCBidXQgd2Ugc2hvdWxkIGltcHJvdmUgdGhpcyBwYXJ0IGFzIHRzIHN1Z2dlc3RcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gLy4rLShcXGQuKylcXC50Z3ovLnRlc3QobmFtZSkgPyBuYW1lLm1hdGNoKC8uKy0oXFxkLispXFwudGd6LylbMV0gOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIEF1dGhvckZvcm1hdCA9IEF1dGhvciB8IHN0cmluZyB8IG51bGwgfCBvYmplY3QgfCB2b2lkO1xuXG4vKipcbiAqIEZvcm1hdHMgYXV0aG9yIGZpZWxkIGZvciB3ZWJ1aS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9maWxlcy9wYWNrYWdlLmpzb24jYXV0aG9yXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R8dW5kZWZpbmVkfSBhdXRob3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEF1dGhvcihhdXRob3I6IEF1dGhvckZvcm1hdCk6IGFueSB7XG4gIGxldCBhdXRob3JEZXRhaWxzID0ge1xuICAgIG5hbWU6IERFRkFVTFRfVVNFUixcbiAgICBlbWFpbDogJycsXG4gICAgdXJsOiAnJyxcbiAgfTtcblxuICBpZiAoXy5pc05pbChhdXRob3IpKSB7XG4gICAgcmV0dXJuIGF1dGhvckRldGFpbHM7XG4gIH1cblxuICBpZiAoXy5pc1N0cmluZyhhdXRob3IpKSB7XG4gICAgYXV0aG9yRGV0YWlscyA9IHtcbiAgICAgIC4uLmF1dGhvckRldGFpbHMsXG4gICAgICBuYW1lOiBhdXRob3IgYXMgc3RyaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoXy5pc09iamVjdChhdXRob3IpKSB7XG4gICAgYXV0aG9yRGV0YWlscyA9IHtcbiAgICAgIC4uLmF1dGhvckRldGFpbHMsXG4gICAgICAuLi4oYXV0aG9yIGFzIEF1dGhvciksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBhdXRob3JEZXRhaWxzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIFVSSSBpcyBzdGFydGluZyB3aXRoIFwiaHR0cDovL1wiLCBcImh0dHBzOi8vXCIgb3IgXCIvL1wiXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hUVFBQcm90b2NvbCh1cmk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL14oaHR0cHM/Oik/XFwvXFwvLy50ZXN0KHVyaSk7XG59XG5cbi8qKlxuICogQXBwbHkgd2hpdGVzcGFjZXMgYmFzZWQgb24gdGhlIGxlbmd0aFxuICogQHBhcmFtIHsqfSBzdHIgdGhlIGxvZyBtZXNzYWdlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWQoc3RyLCBtYXgpOiBzdHJpbmcge1xuICBpZiAoc3RyLmxlbmd0aCA8IG1heCkge1xuICAgIHJldHVybiBzdHIgKyAnICcucmVwZWF0KG1heCAtIHN0ci5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogcmV0dXJuIGEgbWFzcXVlcmFkZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgYW5kIGxhc3Qge2NoYXJOdW19IGFuZCB0aHJlZSBkb3RzIGluIGJldHdlZW4uXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge051bWJlcn0gY2hhck51bVxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hc2soc3RyOiBzdHJpbmcsIGNoYXJOdW0gPSAzKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3N0ci5zdWJzdHIoMCwgY2hhck51bSl9Li4uJHtzdHIuc3Vic3RyKC1jaGFyTnVtKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlU2NvcGVkVXJpKHBhY2thZ2VOYW1lKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhY2thZ2VOYW1lLnJlcGxhY2UoL1xcLy9nLCAnJTJmJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNEaWZmT25lS2V5KHZlcnNpb25zKTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyh2ZXJzaW9ucykubGVuZ3RoICE9PSAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWZXJzaW9uVmFsaWQocGFja2FnZU1ldGEsIHBhY2thZ2VWZXJzaW9uKTogYm9vbGVhbiB7XG4gIGNvbnN0IGhhc1ZlcnNpb24gPSB0eXBlb2YgcGFja2FnZVZlcnNpb24gIT09ICd1bmRlZmluZWQnO1xuICBpZiAoIWhhc1ZlcnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBoYXNNYXRjaFZlcnNpb24gPSBPYmplY3Qua2V5cyhwYWNrYWdlTWV0YS52ZXJzaW9ucykuaW5jbHVkZXMocGFja2FnZVZlcnNpb24pO1xuICByZXR1cm4gaGFzTWF0Y2hWZXJzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWxhdGVkVG9EZXByZWNhdGlvbihwa2dJbmZvOiBQYWNrYWdlKTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdmVyc2lvbnMgfSA9IHBrZ0luZm87XG4gIGZvciAoY29uc3QgdmVyc2lvbiBpbiB2ZXJzaW9ucykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmVyc2lvbnNbdmVyc2lvbl0sICdkZXByZWNhdGVkJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVVSTChwdWJsaWNVcmw6IHN0cmluZyB8IHZvaWQpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgVVJMKHB1YmxpY1VybCBhcyBzdHJpbmcpO1xuICAgIGlmICghdmFsaWRQcm90b2NvbHMuaW5jbHVkZXMocGFyc2VkLnByb3RvY29sLnJlcGxhY2UoJzonLCAnJykpKSB7XG4gICAgICB0aHJvdyBFcnJvcignaW52YWxpZCBwcm90b2NvbCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gVE9ETzogYWRkIGVycm9yIGxvZ2dlciBoZXJlXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hvc3QodXJsOiBzdHJpbmcgPSAnJywgb3B0aW9ucyA9IHt9KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWxpZGF0b3IuaXNVUkwodXJsLCB7XG4gICAgcmVxdWlyZV9ob3N0OiB0cnVlLFxuICAgIGFsbG93X3RyYWlsaW5nX2RvdDogZmFsc2UsXG4gICAgcmVxdWlyZV92YWxpZF9wcm90b2NvbDogZmFsc2UsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlcXVpcmVfcG9ydDogZmFsc2UsXG4gICAgcmVxdWlyZV90bGQ6IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljVXJsKHVybF9wcmVmaXg6IHN0cmluZyA9ICcnLCByZXEpOiBzdHJpbmcge1xuICBpZiAodmFsaWRhdGVVUkwocHJvY2Vzcy5lbnYuVkVSREFDQ0lPX1BVQkxJQ19VUkwgYXMgc3RyaW5nKSkge1xuICAgIGNvbnN0IGVudlVSTCA9IG5ldyBVUkwod3JhcFByZWZpeCh1cmxfcHJlZml4KSwgcHJvY2Vzcy5lbnYuVkVSREFDQ0lPX1BVQkxJQ19VUkwgYXMgc3RyaW5nKS5ocmVmO1xuICAgIGRlYnVnKCdwdWJsaWMgdXJsIGJ5IGVudiAlbycsIGVudlVSTCk7XG4gICAgcmV0dXJuIGVudlVSTDtcbiAgfSBlbHNlIGlmIChyZXEuZ2V0KCdob3N0JykpIHtcbiAgICBjb25zdCBob3N0ID0gcmVxLmdldCgnaG9zdCcpO1xuICAgIGlmICghaXNIb3N0KGhvc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaG9zdCcpO1xuICAgIH1cbiAgICBjb25zdCBwcm90b0hlYWRlciA9IHByb2Nlc3MuZW52LlZFUkRBQ0NJT19GT1JXQVJERURfUFJPVE8gPz8gSEVBREVSUy5GT1JXQVJERURfUFJPVE87XG4gICAgY29uc3QgcHJvdG9jb2wgPSBnZXRXZWJQcm90b2NvbChyZXEuZ2V0KHByb3RvSGVhZGVyLnRvTG93ZXJDYXNlKCkpLCByZXEucHJvdG9jb2wpO1xuICAgIGNvbnN0IGNvbWJpbmVkVXJsID0gY29tYmluZUJhc2VVcmwocHJvdG9jb2wsIGhvc3QsIHVybF9wcmVmaXgpO1xuICAgIGRlYnVnKCdwdWJsaWMgdXJsIGJ5IHJlcXVlc3QgJW8nLCBjb21iaW5lZFVybCk7XG4gICAgcmV0dXJuIGNvbWJpbmVkVXJsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnLyc7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYmFzZSB1cmwgZm9yIHJlZ2lzdHJ5LlxuICogQHJldHVybiB7U3RyaW5nfSBiYXNlIHJlZ2lzdHJ5IHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUJhc2VVcmwocHJvdG9jb2w6IHN0cmluZywgaG9zdDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgZGVidWcoJ2NvbWJpbmVkIHByb3RvY29sICVvJywgcHJvdG9jb2wpO1xuICBkZWJ1ZygnY29tYmluZWQgaG9zdCAlbycsIGhvc3QpO1xuICBjb25zdCBuZXdQcmVmaXggPSB3cmFwUHJlZml4KHByZWZpeCk7XG4gIGRlYnVnKCdjb21iaW5lZCBwcmVmaXggJW8nLCBuZXdQcmVmaXgpO1xuICBjb25zdCBncm91cGVkVVJJID0gbmV3IFVSTCh3cmFwUHJlZml4KHByZWZpeCksIGAke3Byb3RvY29sfTovLyR7aG9zdH1gKTtcbiAgY29uc3QgcmVzdWx0ID0gZ3JvdXBlZFVSSS5ocmVmO1xuICBkZWJ1ZygnY29tYmluZWQgdXJsICVvJywgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcmVmaXgocHJlZml4OiBzdHJpbmcgfCB2b2lkKTogc3RyaW5nIHtcbiAgaWYgKHByZWZpeCA9PT0gJycgfHwgdHlwZW9mIHByZWZpeCA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJlZml4ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9IGVsc2UgaWYgKCFwcmVmaXguc3RhcnRzV2l0aCgnLycpICYmIHByZWZpeC5lbmRzV2l0aCgnLycpKSB7XG4gICAgcmV0dXJuIGAvJHtwcmVmaXh9YDtcbiAgfSBlbHNlIGlmICghcHJlZml4LnN0YXJ0c1dpdGgoJy8nKSAmJiAhcHJlZml4LmVuZHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gYC8ke3ByZWZpeH0vYDtcbiAgfSBlbHNlIGlmIChwcmVmaXguc3RhcnRzV2l0aCgnLycpICYmICFwcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgIHJldHVybiBgJHtwcmVmaXh9L2A7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verdaccio",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.1",
|
|
4
4
|
"description": "A lightweight private npm proxy registry",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Verdaccio Maintainers",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"url": "https://opencollective.com/verdaccio"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@verdaccio/commons-api": "10.0.
|
|
22
|
-
"@verdaccio/local-storage": "10.0
|
|
23
|
-
"@verdaccio/readme": "10.
|
|
24
|
-
"@verdaccio/streams": "10.
|
|
21
|
+
"@verdaccio/commons-api": "10.0.2",
|
|
22
|
+
"@verdaccio/local-storage": "10.1.0",
|
|
23
|
+
"@verdaccio/readme": "10.2.0",
|
|
24
|
+
"@verdaccio/streams": "10.1.0",
|
|
25
25
|
"@verdaccio/ui-theme": "3.2.1",
|
|
26
26
|
"JSONStream": "1.3.5",
|
|
27
27
|
"async": "3.2.2",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"express": "4.17.1",
|
|
38
38
|
"fast-safe-stringify": "^2.0.8",
|
|
39
39
|
"handlebars": "4.7.7",
|
|
40
|
-
"http-errors": "1.8.
|
|
40
|
+
"http-errors": "1.8.1",
|
|
41
41
|
"js-yaml": "4.1.0",
|
|
42
42
|
"jsonwebtoken": "8.5.1",
|
|
43
43
|
"kleur": "4.1.4",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"request": "2.88.0",
|
|
58
58
|
"semver": "7.3.5",
|
|
59
59
|
"validator": "13.7.0",
|
|
60
|
-
"verdaccio-audit": "10.0
|
|
61
|
-
"verdaccio-htpasswd": "10.
|
|
60
|
+
"verdaccio-audit": "10.1.0",
|
|
61
|
+
"verdaccio-htpasswd": "10.1.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@babel/cli": "7.16.0",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@octokit/rest": "18.6.0",
|
|
90
90
|
"@types/async": "3.2.9",
|
|
91
91
|
"@types/express": "4.17.6",
|
|
92
|
-
"@types/http-errors": "1.8.
|
|
92
|
+
"@types/http-errors": "1.8.1",
|
|
93
93
|
"@types/jest": "26.0.14",
|
|
94
94
|
"@types/lodash": "4.14.167",
|
|
95
95
|
"@types/mime": "2.0.3",
|
|
@@ -136,8 +136,8 @@
|
|
|
136
136
|
"supertest": "6.1.3",
|
|
137
137
|
"ts-node": "10.2.0",
|
|
138
138
|
"typescript": "4.1.3",
|
|
139
|
-
"verdaccio-auth-memory": "10.0
|
|
140
|
-
"verdaccio-memory": "10.0
|
|
139
|
+
"verdaccio-auth-memory": "10.1.0",
|
|
140
|
+
"verdaccio-memory": "10.1.0"
|
|
141
141
|
},
|
|
142
142
|
"keywords": [
|
|
143
143
|
"private",
|