verdaccio 5.3.1 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +1 -1
- package/build/api/endpoint/api/publish.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
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.2](https://github.com/verdaccio/verdaccio/compare/v5.3.1...v5.3.2) (2021-12-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* publish with deprecated field ([#2771](https://github.com/verdaccio/verdaccio/issues/2771)) ([b5ac3c0](https://github.com/verdaccio/verdaccio/commit/b5ac3c0f287b8d9ae9121a47d6ac9d27e2bd4ce6)), closes [#2766](https://github.com/verdaccio/verdaccio/issues/2766)
|
|
11
|
+
|
|
5
12
|
### [5.3.1](https://github.com/verdaccio/verdaccio/compare/v5.3.0...v5.3.1) (2021-12-11)
|
|
6
13
|
|
|
7
14
|
|
package/README.md
CHANGED
|
@@ -71,7 +71,7 @@ booted in a couple of seconds, fast enough for any CI. Many open source projects
|
|
|
71
71
|
|
|
72
72
|
### **Testing the integrity of your React components by publishing in a private registry - React Finland 2021**.
|
|
73
73
|
|
|
74
|
-
[](https://www.youtube.com/watch?v=bRKZbrlQqLY)
|
|
75
75
|
|
|
76
76
|
You might want to check out as well our previous talks:
|
|
77
77
|
|
|
@@ -249,9 +249,9 @@ function publishPackage(storage, config, auth) {
|
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
try {
|
|
252
|
-
const metadata = (0, _utils.validateMetadata)(req.body, packageName); //
|
|
252
|
+
const metadata = (0, _utils.validateMetadata)(req.body, packageName); // check _attachments to distinguish publish and deprecate
|
|
253
253
|
|
|
254
|
-
if (req.params._rev || (0, _utils.isRelatedToDeprecation)(req.body)) {
|
|
254
|
+
if (req.params._rev || (0, _utils.isRelatedToDeprecation)(req.body) && _lodash.default.isEmpty(req.body._attachments)) {
|
|
255
255
|
debug('updating a new version for %o', packageName); // we check unpublish permissions, an update is basically remove versions
|
|
256
256
|
|
|
257
257
|
const remote = req.remote_user;
|
|
@@ -388,4 +388,4 @@ function uploadPackageTarball(storage) {
|
|
|
388
388
|
});
|
|
389
389
|
};
|
|
390
390
|
}
|
|
391
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJyZW1vdGUiLCJhbGxvd191bnB1Ymxpc2giLCJjaGFuZ2VQYWNrYWdlIiwicmV2aXNpb24iLCJBUElfTUVTU0FHRSIsIlBLR19DSEFOR0VEIiwiYWRkUGFja2FnZSIsIlBLR19DUkVBVEVEIiwiZ2V0QmFkRGF0YSIsIkJBRF9QQUNLQUdFX0RBVEEiLCJyZW1vdmVQYWNrYWdlIiwiUEtHX1JFTU9WRUQiLCJUQVJCQUxMX1JFTU9WRUQiLCJ0YWciLCJQS0dfUFVCTElTSEVEIiwicGlwZSIsImNvbXBsZXRlIiwiYWJvcnQiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJUQVJCQUxMX1VQTE9BREVEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLEtBQUssR0FBRyxvQkFBVyxtQkFBWCxDQUFkOztBQUVlLFNBQVNDLE9BQVQsQ0FBaUJDLE1BQWpCLEVBQWlDQyxJQUFqQyxFQUE4Q0MsT0FBOUMsRUFBd0VDLE1BQXhFLEVBQThGO0FBQzNHLFFBQU1DLEdBQUcsR0FBRyx1QkFBTUgsSUFBTixDQUFaO0FBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFD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QUFDQVAsSUFBQUEsR0FBRyxDQUFDNkUsSUFBSixDQUFTbkUsTUFBVCxFQUh3RixDQUt4Rjs7QUFDQSxRQUFJb0UsUUFBUSxHQUFHLEtBQWY7QUFDQTlFLElBQUFBLEdBQUcsQ0FBQ1ksRUFBSixDQUFPLEtBQVAsRUFBYyxZQUFZO0FBQ3hCa0UsTUFBQUEsUUFBUSxHQUFHLElBQVg7QUFDQXBFLE1BQUFBLE1BQU0sQ0FBQ08sSUFBUDtBQUNELEtBSEQ7QUFLQWpCLElBQUFBLEdBQUcsQ0FBQ1ksRUFBSixDQUFPLE9BQVAsRUFBZ0IsWUFBWTtBQUMxQixVQUFJLENBQUNrRSxRQUFMLEVBQWU7QUFDYnBFLFFBQUFBLE1BQU0sQ0FBQ3FFLEtBQVA7QUFDRDtBQUNGLEtBSkQ7QUFNQXJFLElBQUFBLE1BQU0sQ0FBQ0UsRUFBUCxDQUFVLE9BQVYsRUFBbUIsVUFBVUMsR0FBVixFQUFlO0FBQ2hDLGFBQU9aLEdBQUcsQ0FBQytFLE1BQUosQ0FBV0MsWUFBWCxDQUF3QnBFLEdBQXhCLENBQVA7QUFDRCxLQUZEO0FBSUFILElBQUFBLE1BQU0sQ0FBQ0UsRUFBUCxDQUFVLFNBQVYsRUFBcUIsWUFBWTtBQUMvQlgsTUFBQUEsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyx1QkFBWUMsT0FBdkI7QUFDQSxhQUFPbEMsSUFBSSxDQUFDO0FBQ1ZtQyxRQUFBQSxFQUFFLEVBQUU2Qix1QkFBWWdCO0FBRE4sT0FBRCxDQUFYO0FBR0QsS0FMRDtBQU1ELEdBNUJEO0FBNkJEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5cbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29uZmlnLCBDYWxsYmFjaywgTWVyZ2VUYWdzLCBWZXJzaW9uLCBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBBUElfTUVTU0FHRSwgSEVBREVSUywgRElTVF9UQUdTLCBBUElfRVJST1IsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB2YWxpZGF0ZU1ldGFkYXRhLCBpc09iamVjdCwgRXJyb3JDb2RlLCBoYXNEaWZmT25lS2V5LCBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IG1lZGlhLCBleHBlY3RKc29uLCBhbGxvdyB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5cbmltcG9ydCB7IElBdXRoLCAkUmVzcG9uc2VFeHRlbmQsICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJU3RvcmFnZUhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IGlzUHVibGlzaGFibGVQYWNrYWdlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKHJvdXRlcjogUm91dGVyLCBhdXRoOiBJQXV0aCwgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcblxuICAvKipcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgLyB1cGRhdGUgcGFja2FnZSAvIHVuL3N0YXJ0IGEgcGFja2FnZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGVzIHNjZW5hcmlvcyBoZXJlIHRvIGJlIGNvbnNpZGVyZWQ6XG4gICAqXG4gICAqIDEuIFB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgY29uc2lzdCBvZiBhdCBsZWFzdCAxIHN0ZXAgKFBVVCkgd2l0aCBhIG1ldGFkYXRhIHBheWxvYWQuXG4gICAqIFdoZW4gYSBwYWNrYWdlIGlzIHB1Ymxpc2hlZCwgYW4gX2F0dGFjaG1lbnQgcHJvcGVydHkgaXMgcHJlc2VudCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIG9mIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgcHVibGlzaC5cbiAgICpcbiAgICogIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxIDk2Mjdtc1xuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cG9zdHB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgKyBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSB2ZXJiIGV4aXQgWyAwLCB0cnVlIF1cbiAgICpcbiAgICpcbiAgICogMi4gVW5wdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFVucHVibGlzaCBjb25zaXN0IGluIDMgc3RlcHMuXG4gICAqICAxLiBUcnkgdG8gZmV0Y2ggIG1ldGFkYXRhIC0+IGlmIGl0IGZhaWxzLCByZXR1cm4gNDA0XG4gICAqICAyLiBDb21wdXRlIG1ldGFkYXRhIGxvY2FsbHkgKGNsaWVudCBzaWRlKSBhbmQgc2VuZCBhIG11dGF0ZSBwYXlsb2FkIGV4Y2x1ZGluZyB0aGUgdmVyc2lvbiB0byBiZSB1bnB1Ymxpc2hlZFxuICAgKiAgICBlZzogaWYgbWV0YWRhdGEgcmVmbGVjdHMgMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgdGhlIGNvbXB1dGVkIG1ldGFkYXRhIHdvbid0IGluY2x1ZGUgMS4wLjMuXG4gICAqICAzLiBPbmNlIHRoZSBzZWNvbmQgc3RlcCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmluaXNoZWQsIGRlbGV0ZSB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogIEFsbCB0aGVzZSBzdGVwcyBhcmUgY29uc2VjdXRpdmUgYW5kIHJlcXVpcmVkLCB0aGVyZSBpcyBubyB0cmFuc2FjaW9ucyBoZXJlLCBpZiBzdGVwIDMgZmFpbHMsIG1ldGFkYXRhIG1pZ2h0XG4gICAqICBnZXQgY29ycnVwdGVkLlxuICAgKlxuICAgKiAgTm90ZSB0aGUgdW5wdWJsaXNoIGNhbGwgd2lsbCBzdWZmaXggaW4gdGhlIHVybCBhIC8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgcmV2aXNpb24gbnVtYmVyLCB0aGlzIG5vdFxuICAgKiAgdXNlZCBpbnRlcm5hbGx5LlxuICAgKlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgdW5wdWJsaXNoLlxuICAgKlxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2ODBtc1xuICAgICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgOTU2NjA2bXMgYXR0ZW1wdCAjMlxuICAgICBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2MDFtc1xuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tL3Rlc3QxLTEuMC4zLnRnei8tcmV2LzE2LWUxMWM4ZGIyODJiMmQ5OTIgMTltc1xuICAgKlxuICAgKiAzLiBTdGFyIGEgcGFja2FnZVxuICAgKlxuICAgKiBQZXJtaXNzaW9uczogc3RhcnQgYSBwYWNrYWdlIGRlcGVuZHMgb2YgdGhlIHB1Ymxpc2ggYW5kIHVucHVibGlzaCBwZXJtaXNzaW9ucywgdGhlcmUgaXMgbm8gc3BlY2lmaWMgZmxhZyBmb3Igc3RhciBvciB1biBzdGFydC5cbiAgICogVGhlIFVSTCBmb3Igc3RhciBpcyBzaW1pbGFyIHRvIHRoZSB1bnB1Ymxpc2ggKGNoYW5nZSBwYWNrYWdlIGZvcm1hdClcbiAgICpcbiAgICogbnBtIGhhcyBubyBlbnBvaW50IGZvciBzdGFyIGEgcGFja2FnZSwgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGEgYW5kIGFjdHMgYXMsIHRoZSBkaWZmZXJlbmNlIGlzIHRoZVxuICAgKiB1c2VycyBwcm9wZXJ0eSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBwYXlsb2FkIGFuZCB0aGUgYm9keSBvbmx5IGluY2x1ZGVzXG4gICAqXG4gICAqIHtcblx0XHQgIFwiX2lkXCI6IHBrZ05hbWUsXG5cdCAgXHRcIl9yZXZcIjogXCIzLWIwY2RhZWZjOWJkYjc3YzhcIixcblx0XHQgIFwidXNlcnNcIjoge1xuXHRcdCAgICBbdXNlcm5hbWVdOiBib29sZWFuIHZhbHVlICh0cnVlLCBmYWxzZSlcblx0XHQgIH1cblx0fVxuICAgKlxuICAgKi9cbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLzpfcmV2Py86cmV2aXNpb24/JywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgcHVibGlzaFBhY2thZ2Uoc3RvcmFnZSwgY29uZmlnLCBhdXRoKSk7XG5cbiAgLyoqXG4gICAqIFVuLXB1Ymxpc2hpbmcgYW4gZW50aXJlIHBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgc2NlbmFyaW8gaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBjYWxsIGRldGVjdCB0aGVyZSBpcyBvbmx5IG9uZSB2ZXJzaW9uIHJlbWFpbmluZ1xuICAgKiBpbiB0aGUgbWV0YWRhdGEsIHRoZW4gdGhlIGNsaWVudCBkZWNpZGVzIHRvIERFTEVURSB0aGUgcmVzb3VyY2VcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDMwNCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxMDc2bXMgKGZyb20gY2FjaGUpXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTgtZDhlYmUzMDIwYmQ0YWM5YyAyMm1zXG4gICAqL1xuICByb3V0ZXIuZGVsZXRlKCcvOnBhY2thZ2UvLXJldi8qJywgY2FuKCd1bnB1Ymxpc2gnKSwgdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlKSk7XG5cbiAgLy8gcmVtb3ZpbmcgYSB0YXJiYWxsXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tLzpmaWxlbmFtZS8tcmV2LzpyZXZpc2lvbicsIGNhbigndW5wdWJsaXNoJyksIGNhbigncHVibGlzaCcpLCByZW1vdmVUYXJiYWxsKHN0b3JhZ2UpKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKEhFQURFUlMuT0NURVRfU1RSRUFNKSwgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIGFkZGluZyBhIHZlcnNpb25cbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLzp2ZXJzaW9uLy10YWcvOnRhZycsIGNhbigncHVibGlzaCcpLCBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksIGV4cGVjdEpzb24sIGFkZFZlcnNpb24oc3RvcmFnZSkpO1xufVxuXG4vKipcbiAqIFB1Ymxpc2ggYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnLCBhdXRoOiBJQXV0aCk6IGFueSB7XG4gIGNvbnN0IHN0YXJBcGkgPSBzdGFyKHN0b3JhZ2UpO1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgZGVidWcoJ3B1Ymxpc2hpbmcgb3IgdXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgLyoqXG4gICAgICogV3JpdGUgdGFyYmFsbCBvZiBzdHJlYW0gZGF0YSBmcm9tIHBhY2thZ2UgY2xpZW50cy5cbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVUYXJiYWxsID0gZnVuY3Rpb24gKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGEsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjYihlcnIpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMgaXMgZHVtYiBhbmQgbWVtb3J5LWNvbnN1bWluZywgYnV0IHdoYXQgY2hvaWNlcyBkbyB3ZSBoYXZlP1xuICAgICAgLy8gZmxvdzogd2UgbmVlZCBmaXJzdCByZWZhY3RvciB0aGlzIGZpbGUgYmVmb3JlIGRlY2lkZXMgd2hpY2ggdHlwZSB1c2UgaGVyZVxuICAgICAgc3RyZWFtLmVuZChCdWZmZXIuZnJvbShkYXRhLmRhdGEsICdiYXNlNjQnKSk7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHBhY2thZ2UgdmVyc2lvbiBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVmVyc2lvbiA9IGZ1bmN0aW9uICh2ZXJzaW9uOiBzdHJpbmcsIG1ldGFkYXRhOiBWZXJzaW9uLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UuYWRkVmVyc2lvbihwYWNrYWdlTmFtZSwgdmVyc2lvbiwgbWV0YWRhdGEsIG51bGwsIGNiKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyB0YWdzIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBhZGRUYWdzID0gZnVuY3Rpb24gKHRhZ3M6IE1lcmdlVGFncywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhwYWNrYWdlTmFtZSwgdGFncywgY2IpO1xuICAgIH07XG5cbiAgICBjb25zdCBhZnRlckNoYW5nZSA9IGZ1bmN0aW9uIChlcnJvciwgb2tNZXNzYWdlLCBtZXRhZGF0YSk6IHZvaWQge1xuICAgICAgY29uc3QgbWV0YWRhdGFDb3B5OiBQYWNrYWdlID0geyAuLi5tZXRhZGF0YSB9O1xuXG4gICAgICBjb25zdCB7IF9hdHRhY2htZW50cywgdmVyc2lvbnMgfSA9IG1ldGFkYXRhQ29weTtcblxuICAgICAgLy8gYG5wbSBzdGFyYCB3b3VsZG4ndCBoYXZlIGF0dGFjaG1lbnRzXG4gICAgICAvLyBhbmQgYG5wbSBkZXByZWNhdGVgIHdvdWxkIGhhdmUgYXR0YWNobWVudHMgYXMgYSBlbXB0eSBvYmplY3QsIGkuZSB7fVxuICAgICAgaWYgKF8uaXNOaWwoX2F0dGFjaG1lbnRzKSB8fCBKU09OLnN0cmluZ2lmeShfYXR0YWNobWVudHMpID09PSAne30nKSB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgb2s6IG9rTWVzc2FnZSxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gbnBtLXJlZ2lzdHJ5LWNsaWVudCAwLjMrIGVtYmVkcyB0YXJiYWxsIGludG8gdGhlIGpzb24gdXBsb2FkXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25wbS1yZWdpc3RyeS1jbGllbnQvY29tbWl0L2U5ZmJlYjhiNjdmMjQ5Mzk0ZjczNWM3NGVmMTFmZTQ3MjBkNDZjYTBcbiAgICAgIC8vIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzMxLCBkZWFsaW5nIHdpdGggaXQgaGVyZTpcbiAgICAgIGNvbnN0IGlzSW52YWxpZEJvZHlGb3JtYXQgPSBpc09iamVjdChfYXR0YWNobWVudHMpID09PSBmYWxzZSB8fCBoYXNEaWZmT25lS2V5KF9hdHRhY2htZW50cykgfHwgaXNPYmplY3QodmVyc2lvbnMpID09PSBmYWxzZSB8fCBoYXNEaWZmT25lS2V5KHZlcnNpb25zKTtcblxuICAgICAgaWYgKGlzSW52YWxpZEJvZHlGb3JtYXQpIHtcbiAgICAgICAgLy8gbnBtIGlzIGRvaW5nIHNvbWV0aGluZyBzdHJhbmdlIGFnYWluXG4gICAgICAgIC8vIGlmIHRoaXMgaGFwcGVucyBpbiBub3JtYWwgY2lyY3Vtc3RhbmNlcywgcmVwb3J0IGl0IGFzIGEgYnVnXG4gICAgICAgIGxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgYHdyb25nIHBhY2thZ2UgZm9ybWF0IG9uIHB1Ymxpc2ggYSBwYWNrYWdlIEB7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5VTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9yICYmIGVycm9yLnN0YXR1cyAhPT0gSFRUUF9TVEFUVVMuQ09ORkxJQ1QpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBhdCB0aGlzIHBvaW50IGRvY3VtZW50IGlzIGVpdGhlciBjcmVhdGVkIG9yIGV4aXN0ZWQgYmVmb3JlXG4gICAgICBjb25zdCBbZmlyc3RBdHRhY2htZW50S2V5XSA9IE9iamVjdC5rZXlzKF9hdHRhY2htZW50cyk7XG5cbiAgICAgIGNyZWF0ZVRhcmJhbGwoUGF0aC5iYXNlbmFtZShmaXJzdEF0dGFjaG1lbnRLZXkpLCBfYXR0YWNobWVudHNbZmlyc3RBdHRhY2htZW50S2V5XSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZlcnNpb25Ub1B1Ymxpc2ggPSBPYmplY3Qua2V5cyh2ZXJzaW9ucylbMF07XG4gICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgIHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUgPSBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZSA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKSA6ICcnO1xuXG4gICAgICAgIGNyZWF0ZVZlcnNpb24odmVyc2lvblRvUHVibGlzaCwgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhZGRUYWdzKG1ldGFkYXRhQ29weVtESVNUX1RBR1NdLCBhc3luYyBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IG5vdGlmeShtZXRhZGF0YUNvcHksIGNvbmZpZywgcmVxLnJlbW90ZV91c2VyLCBgJHttZXRhZGF0YUNvcHkubmFtZX1AJHt2ZXJzaW9uVG9QdWJsaXNofWApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3IgfSwgJ25vdGlmeSBiYXRjaCBzZXJ2aWNlIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCh7IG9rOiBva01lc3NhZ2UsIHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmIChpc1B1Ymxpc2hhYmxlUGFja2FnZShyZXEuYm9keSkgPT09IGZhbHNlICYmIGlzT2JqZWN0KHJlcS5ib2R5LnVzZXJzKSkge1xuICAgICAgcmV0dXJuIHN0YXJBcGkocmVxLCByZXMsIG5leHQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHZhbGlkYXRlTWV0YWRhdGEocmVxLmJvZHksIHBhY2thZ2VOYW1lKTtcbiAgICAgIC8vIHRyZWF0aW5nIGRlcHJlY2F0aW9uIGFzIHVwZGF0aW5nIGEgcGFja2FnZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHJlcS5ib2R5KSkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIC8vIHdlIGNoZWNrIHVucHVibGlzaCBwZXJtaXNzaW9ucywgYW4gdXBkYXRlIGlzIGJhc2ljYWxseSByZW1vdmUgdmVyc2lvbnNcbiAgICAgICAgY29uc3QgcmVtb3RlID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgICBhdXRoLmFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lIH0sIHJlbW90ZSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCBgbm90IGFsbG93ZWQgdG8gdW5wdWJsaXNoIGEgdmVyc2lvbiBmb3IgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgcmVxLnBhcmFtcy5yZXZpc2lvbiwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NIQU5HRUQsIG1ldGFkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYWRkaW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBzdG9yYWdlLmFkZFBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NSRUFURUQsIG1ldGFkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sICdlcnJvciBvbiBwdWJsaXNoLCBiYWQgcGFja2FnZSBkYXRhIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZERhdGEoQVBJX0VSUk9SLkJBRF9QQUNLQUdFX0RBVEEpKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogdW4tcHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygndW5wdWJsaXNoaW5nICVvJywgcGFja2FnZU5hbWUpO1xuICAgIHN0b3JhZ2UucmVtb3ZlUGFja2FnZShwYWNrYWdlTmFtZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlBLR19SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlbGV0ZSB0YXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgcmV2aXNpb24gfSA9IHJlcS5wYXJhbXM7XG4gICAgZGVidWcoJ3JlbW92aW5nIGEgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICBzdG9yYWdlLnJlbW92ZVRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIGRlYnVnKCdzdWNjZXNzIHJlbW92ZSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuLyoqXG4gKiBBZGRzIGEgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFZlcnNpb24oc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZlcnNpb24sIHRhZyB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgIHN0b3JhZ2UuYWRkVmVyc2lvbihwYWNrYWdlTmFtZSwgdmVyc2lvbiwgcmVxLmJvZHksIHRhZywgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuUEtHX1BVQkxJU0hFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIHVwbG9hZFBhY2thZ2VUYXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgcmVxLnBhcmFtcy5maWxlbmFtZSk7XG4gICAgcmVxLnBpcGUoc3RyZWFtKTtcblxuICAgIC8vIGNoZWNraW5nIGlmIGVuZCBldmVudCBjYW1lIGJlZm9yZSBjbG9zaW5nXG4gICAgbGV0IGNvbXBsZXRlID0gZmFsc2U7XG4gICAgcmVxLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWU7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29tcGxldGUpIHtcbiAgICAgICAgc3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9VUExPQURFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIl19
|
|
391
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsbUJBQVgsQ0FBZDs7QUFFZSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUFpQ0MsSUFBakMsRUFBOENDLE9BQTlDLEVBQXdFQyxNQUF4RSxFQUE4RjtBQUMzRyxRQUFNQyxHQUFHLEdBQUcsdUJBQU1ILElBQU4sQ0FBWjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSCxHQUFHLENBQUNJLE1BQUosQ0FBV0csUUFBM0MsQ0FBZjtBQUNBUCxJQUFBQSxHQUFHLENBQUM4RSxJQUFKLENBQVNwRSxNQUFULEVBSHdGLENBS3hGOztBQUNBLFFBQUlxRSxRQUFRLEdBQUcsS0FBZjtBQUNBL0UsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sS0FBUCxFQUFjLFlBQVk7QUFDeEJtRSxNQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBckUsTUFBQUEsTUFBTSxDQUFDTyxJQUFQO0FBQ0QsS0FIRDtBQUtBakIsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFZO0FBQzFCLFVBQUksQ0FBQ21FLFFBQUwsRUFBZTtBQUNickUsUUFBQUEsTUFBTSxDQUFDc0UsS0FBUDtBQUNEO0FBQ0YsS0FKRDtBQU1BdEUsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsT0FBVixFQUFtQixVQUFVQyxHQUFWLEVBQWU7QUFDaEMsYUFBT1osR0FBRyxDQUFDZ0YsTUFBSixDQUFXQyxZQUFYLENBQXdCckUsR0FBeEIsQ0FBUDtBQUNELEtBRkQ7QUFJQUgsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CWCxNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBLGFBQU9sQyxJQUFJLENBQUM7QUFDVm1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZZ0I7QUFETixPQUFELENBQVg7QUFHRCxLQUxEO0FBTUQsR0E1QkQ7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBDb25maWcsIENhbGxiYWNrLCBNZXJnZVRhZ3MsIFZlcnNpb24sIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBIRUFERVJTLCBESVNUX1RBR1MsIEFQSV9FUlJPUiwgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbGlkYXRlTWV0YWRhdGEsIGlzT2JqZWN0LCBFcnJvckNvZGUsIGhhc0RpZmZPbmVLZXksIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbWVkaWEsIGV4cGVjdEpzb24sIGFsbG93IH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuLi8uLi8uLi9saWIvbm90aWZ5JztcblxuaW1wb3J0IHsgSUF1dGgsICRSZXNwb25zZUV4dGVuZCwgJFJlcXVlc3RFeHRlbmQsICROZXh0RnVuY3Rpb25WZXIsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgaXNQdWJsaXNoYWJsZVBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZS11dGlscyc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2gocm91dGVyOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCBleHBlY3RKc29uLCBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJywgY2FuKCd1bnB1Ymxpc2gnKSwgY2FuKCdwdWJsaXNoJyksIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLCB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKSk7XG5cbiAgLy8gYWRkaW5nIGEgdmVyc2lvblxuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgYWRkVmVyc2lvbihzdG9yYWdlKSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcsIGF1dGg6IElBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9IGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fCBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoID0gdmVyc2lvbnNbdmVyc2lvblRvUHVibGlzaF07XG5cbiAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9IF8uaXNOaWwodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSkgPT09IGZhbHNlID8gU3RyaW5nKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpIDogJyc7XG5cbiAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KG1ldGFkYXRhQ29weSwgY29uZmlnLCByZXEucmVtb3RlX3VzZXIsIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|