Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@mybiogen/auth-openid

Package Overview
Dependencies
Maintainers
15
Versions
58
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mybiogen/auth-openid - npm Package Compare versions

Comparing version 2.0.9 to 2.0.10

14

lib/OAuthClient.js

@@ -206,3 +206,7 @@ "use strict";

};
this.storage.set(this.storageKey + ".token", this.token);
this.storage.set(this.storageKey + ".token", this.token, {
path: '/',
expires: new Date(new Date().getTime() + authToken.expires_in * 1000).toUTCString(),
secure: 'true',
});
utils_1.Storage.remove(currentState);

@@ -260,3 +264,7 @@ window.history.replaceState({}, document.title, window.location.pathname);

};
this.storage.set(this.storageKey + ".token", this.token);
this.storage.set(this.storageKey + ".token", this.token, {
path: '/',
expires: new Date(new Date().getTime() + token.expires_in * 1000).toUTCString(),
secure: 'true',
});
return [2, this.token];

@@ -521,2 +529,2 @@ }

exports.default = OpenIDClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT0F1dGhDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhEQUF1QztBQUN2Qyw2QkFBb0M7QUFDcEMsaUNBQTBHO0FBWTFHLHVEQUFzRDtBQUV0RDtJQTJDRSxzQkFBWSxRQUFnQixFQUFFLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxVQUFrQixFQUFFLGlCQUF5QixFQUFFLE1BQTZCLEVBQUUsTUFBZ0MsRUFBRSxXQUF5QztRQUEvTixpQkEwQ0M7UUExQ29ILHVCQUFBLEVBQUEsVUFBb0IsUUFBUSxDQUFDO1FBQUUsdUJBQUEsRUFBQSxXQUFnQztRQUFFLDRCQUFBLEVBQUEsNEJBQXlDO1FBWi9OLGNBQVMsR0FBK0MsRUFBRSxDQUFDO1FBZ0puRCx3QkFBbUIsR0FBRzs7WUFDNUIsSUFBSSxRQUFDLEtBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQSxFQUFFO2dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksS0FBSSxDQUFDLElBQUksSUFBSSxLQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN6RCxJQUFNLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdkMsS0FBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Ozs7OztnQ0FFM0MsV0FBTSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUE7O2dDQUF6QixTQUF5QixDQUFDOzs7O2dDQUUxQixhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0NBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7Ozs7cUJBRWpCLEVBQUUsQ0FBQyxLQUFJLENBQUMs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Ozs7d0JBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDOzZCQUN0QixJQUFJLENBQUMsS0FBSyxFQUFWLGNBQVU7d0JBQ1osV0FBTSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUE7O3dCQUF4QixTQUF3QixDQUFDOzs7d0JBRzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO3dCQUM1QixJQUFJLFFBQUMsSUFBSSxDQUFDLEtBQUssMENBQUUsWUFBWSxDQUFBLEVBQUU7NEJBSTdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQTs0QkFDdEMsV0FBTyxJQUFJLENBQUMsS0FBSyxFQUFBO3lCQUNsQjs7Ozt3QkFJQyxXQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Ozs7d0JBRTNCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO3dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBSSxJQUFJLENBQUMsVUFBVSxXQUFRLENBQUMsQ0FBQzs7NEJBR2xELFdBQU8sSUFBSSxDQUFDLEtBQUssRUFBQTs7OztLQUNsQjtJQUVPLG9DQUFhLEdBQXJCO1FBQUEsaUJBSUM7UUFIQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLEVBQUU7WUFDeEIsRUFBRSxDQUFDLEtBQUksQ0FBQyxLQUFLLElBQUksS0FBSSxDQUFDLElBQUksRUFBRSxLQUFJLENBQUMsY0FBYyxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFzU0gsbUJBQUM7QUFBRCxDQUFDLEFBbmRELElBbWRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5LXN0cmluZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGVuY29kZUJvZHksIGdlbmVyYXRlQ29kZVZlcmlmaWVyLCBnZW5lcmF0ZVBrY2VDaGFsbGVuZ2UsIFN0b3JhZ2UsIGNoZWNrQ2FsbGJhY2sgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIE9BdXRoVXNlckluZm8sXG4gIFRva2VuLFxuICBXYXRjaEF1dGhDYWxsYmFjayxcbiAgSW5pdCxcbiAgQ29uZmlnRW5kcG9pbnQsXG4gIEF1dGhlbnRpY2F0ZUFyZ3MsXG4gIENsYWltUGFyYW0sXG4gIEF1dGhlbnRpY2F0ZUV4dHJhUGFyYW1zLFxuICBTdG9yYWdlVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDb29raWVTdG9yYWdlIH0gZnJvbSAnLi91dGlscy9Db29raWVTdG9yYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgT3BlbklEQ2xpZW50PENsYWltcyBleHRlbmRzIHt9ID0ge30sIFVzZXJJbmZvIGV4dGVuZHMgT0F1dGhVc2VySW5mbyA9IE9BdXRoVXNlckluZm8sIFVzZXJEYXRhIGV4dGVuZHMgeyB1c2VyOiBVc2VySW5mbywgY2xhaW1zPzogQ2xhaW1zIH0gPSB7IHVzZXI6IFVzZXJJbmZvLCBjbGFpbXM/OiBDbGFpbXMgfT4ge1xuICBjbGllbnRJZDogc3RyaW5nO1xuXG4gIGNvbmZpZ1VybDogc3RyaW5nO1xuXG4gIHNjb3Blczogc3RyaW5nW107XG5cbiAgY2xhaW1zOiBBcnJheTxrZXlvZiBDbGFpbXM+O1xuXG4gIHJlZGlyZWN0VVJJOiBzdHJpbmc7XG5cbiAgbG9nb3V0UmVkaXJlY3RVUkk6IHN0cmluZztcblxuICBhdXRob3JpemF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgdG9rZW5FbmRwb2ludD86IHN0cmluZztcblxuICB1c2VySW5mb0VuZHBvaW50Pzogc3RyaW5nO1xuXG4gIHJldm9jYXRpb25FbmRwb2ludD86IHN0cmluZztcblxuICBlbmRTZXNzaW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgdG9rZW4/OiBUb2tlbjtcblxuICB1c2VyPzogVXNlckRhdGE7XG5cbiAgc3RvcmFnZTogdHlwZW9mIFN0b3JhZ2UgfCB0eXBlb2YgQ29va2llU3RvcmFnZTtcblxuICBzdG9yYWdlS2V5OiBzdHJpbmc7XG5cbiAgbGlzdGVuZXJzOiBBcnJheTxXYXRjaEF1dGhDYWxsYmFjazxVc2VySW5mbywgQ2xhaW1zPj4gPSBbXTtcblxuICByZWZyZXNoVG9rZW5JbnRlcnZhbD86IG51bWJlcjtcblxuICBjb21lc0Zyb21Mb2dpbjogYm9vbGVhbjtcblxuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuXG4gIGhhc0JlZW5Jbml0aWFsaXplZDogYm9vbGVhbjtcblxuICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGU7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50SWQ6IHN0cmluZywgY29uZmlnVXJsOiBzdHJpbmcsIHJlZGlyZWN0VVJJOiBzdHJpbmcsIHN0b3JhZ2VLZXk6IHN0cmluZywgbG9nb3V0UmVkaXJlY3RVUkk6IHN0cmluZywgc2NvcGVzOiBzdHJpbmdbXSA9IFsnb3BlbmlkJ10sIGNsYWltczogQXJyYXk8a2V5b2YgQ2xhaW1zPiA9IFtdLCBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUgPSAnbG9jYWxTdG9yYWdlJykge1xuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2xpZW50SWQgaXMgbm90IHByb3ZpZGVkLicpXG4gICAgfVxuICAgIHRoaXMuY2xpZW50SWQgPSBjbGllbnRJZDtcblxuICAgIGlmICghY29uZmlnVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZ1VybCBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG4gICAgdGhpcy5jb25maWdVcmwgPSBjb25maWdVcmw7XG5cbiAgICBpZiAoIXJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlZGlyZWN0VXJpIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLnJlZGlyZWN0VVJJID0gcmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIWxvZ291dFJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2xvZ291dFJlZGlyZWN0VVJJIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLmxvZ291dFJlZGlyZWN0VVJJID0gbG9nb3V0UmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIXN0b3JhZ2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc3RvcmFnZUtleSBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG5cbiAgICB0aGlzLnN0b3JhZ2VUeXBlID0gc3RvcmFnZVR5cGU7XG5cbiAgICBpZiAoc3RvcmFnZVR5cGUgPT09ICdsb2NhbFN0b3JhZ2UnKSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSBTdG9yYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSBDb29raWVTdG9yYWdlO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmFnZUtleSA9IHN0b3JhZ2VLZXk7XG5cbiAgICB0aGlzLmNvbWVzRnJvbUxvZ2luID0gZmFsc2U7XG4gICAgdGhpcy5yZWRpcmVjdFRvID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaGFzQmVlbkluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5zY29wZXMgPSBzY29wZXM7XG4gICAgdGhpcy5jbGFpbXMgPSBjbGFpbXM7XG4gICAgXG4gICAgdGhpcy50b2tlbiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gdGhpcy5zdG9yYWdlLmdldChgJHtzdG9yYWdlS2V5fS50b2tlbmApIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxJbml0IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMuaGFzQmVlbkluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBbY2FsbGJhY2tTdGF0ZSwgc3RvcmFnZU9hdXRoXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIGNoZWNrQ2FsbGJhY2sod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgU3RvcmFnZS5nZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApLFxuICAgIF0pO1xuXG4gICAgLy8gV2FpdCB1bnRpbCBjb25maWd1cmF0aW9uIGhhcyBmaW5pc2hlZC5cbiAgICBhd2FpdCB0aGlzLnNldENvbmZpZygpO1xuXG4gICAgLy8gUmV0dXJuIGVhcmx5XG4gICAgaWYgKCFjYWxsYmFja1N0YXRlICYmICFzdG9yYWdlT2F1dGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5oYXNCZWVuSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgaWYgKGNhbGxiYWNrU3RhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuT25Jbml0KGNhbGxiYWNrU3RhdGUpXG4gICAgfVxuXG4gICAgaWYgKHN0b3JhZ2VPYXV0aCAmJiAhc3RvcmFnZU9hdXRoLmxvZ291dCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuT25Jbml0KHN0b3JhZ2VPYXV0aClcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUb2tlbk9uSW5pdChjYWxsYmFja1N0YXRlKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvZGUsXG4gICAgICBwa2NlQ29kZVZlcmlmaWVyLFxuICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgcmVkaXJlY3RUbyxcbiAgICAgIG5ld1VybFxuICAgIH0gPSBjYWxsYmFja1N0YXRlO1xuXG4gICAgdGhpcy50b2tlbiA9IGF3YWl0IHRoaXMuZ2V0VG9rZW4oY29kZSwgcGtjZUNvZGVWZXJpZmllciwgY3VycmVudFN0YXRlKTtcbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIH1cblxuICAgIHRoaXMua2VlcFJlZnJlc2hpbmdUb2tlbigpO1xuXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHdpbmRvdy5oaXN0b3J5LnN0YXRlLCBkb2N1bWVudC50aXRsZSwgbmV3VXJsKTtcblxuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSB0cnVlO1xuICAgIHRoaXMucmVkaXJlY3RUbyA9IHJlZGlyZWN0VG87XG5cbiAgICByZXR1cm4gdGhpcy50b2tlblxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW5PbkluaXQoc3RvcmFnZU9hdXRoOiBhbnkpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPiB7XG4gICAgdGhpcy50b2tlbiA9IHN0b3JhZ2VPYXV0aDtcbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIH1cblxuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMudG9rZW4/LnJlZnJlc2hUb2tlbikge1xuICAgICAgLy8gVE9ETyBAYWxsIGhhbmRsZSBjYXNlIHdpdGhvdXQgcmVmcmVzaCB0b2tlblxuICAgICAgLy8gVGhpcyBzaG91bGQgdGVzdCBpZiB0aGUgY3VycmVudCB0b2tlbiBpcyBzdGlsbCB2YWxpZFxuICAgICAgLy8gb3Igd2Ugc2hvdWxkIGNoYW5nZSB0aGUgQVBJIGNhbGxzIHRvIGdldCB0aGUgcmVmcmVzaCB0b2tlbi5cbiAgICAgIGNvbnNvbGUud2FybihcIm1pc3NpbmcgcmVmcmVzaCB0b2tlbi5cIilcbiAgICAgIHJldHVybiB0aGlzLnRva2VuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIG9ubHkgZ2V0IG5ldyB0b2tlbiBvbiBpbml0IGlmIG9uZSBmcm9tIHN0b3JhZ2UgaGFzIGV4cGlyZWRcbiAgICAgIGF3YWl0IHRoaXMuZ2V0UmVmcmVzaGVkVG9rZW4oKTtcbiAgICAgIHRoaXMua2VlcFJlZnJlc2hpbmdUb2tlbigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy50b2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRva2VuXG4gIH1cblxuICBwcml2YXRlIGNhbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgoY2IpID0+IHtcbiAgICAgIGNiKHRoaXMudG9rZW4gJiYgdGhpcy51c2VyLCB0aGlzLmNvbWVzRnJvbUxvZ2luLCB0aGlzLnJlZGlyZWN0VG8pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGtlZXBSZWZyZXNoaW5nVG9rZW4gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLnRva2VuPy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcIm1pc3NpbmcgcmVmcmVzaCB0b2tlbi5cIilcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHRoaXMudG9rZW4gJiYgIXRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpIHtcbiAgICAgIGNvbnN0IFNBRkVUWV9HQVBfUkVGUkVTSF9UT0tFTiA9IDYwMDAwOyAvLyAxIG1pblxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpO1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sICh0aGlzLnRva2VuLmV4cGlyZXNJbiAqIDEwMDApIC0gU0FGRVRZX0dBUF9SRUZSRVNIX1RPS0VOKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB3YWl0Rm9yQXV0aG9yaXphdGlvbkVuZHBvaW50ID0gKGNhbGxiYWNrKTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50KSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFVQREFURV9JTlRFUlZBTCA9IDIwMDsgLy8gMC4yIHNlY29uZFxuICAgIGNvbnN0IE1BWElNVU1fV0FJVElOR19USU1FID0gNTAwMDsgLy8gNSBzZWNvbmRzXG4gICAgbGV0IGF0dGVtcHRzQW1vdW50ID0gTUFYSU1VTV9XQUlUSU5HX1RJTUUgLyBVUERBVEVfSU5URVJWQUw7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXR0ZW1wdHNBbW91bnQgPT09IDApIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dGhvcml6YXRpb24gZW5kcG9pbnQgd2FpdGluZyB0aW1lIGhhcyBiZWVuIGV4Y2VlZGVkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0ZW1wdHNBbW91bnQtLTtcbiAgICAgIH1cbiAgICB9LCBVUERBVEVfSU5URVJWQUwpO1xuICB9XG5cbiAgd2F0Y2hBdXRoID0gYXN5bmMgKGNiOiBXYXRjaEF1dGhDYWxsYmFjazxVc2VySW5mbywgQ2xhaW1zPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2IpO1xuXG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLmNhbGxMaXN0ZW5lcnMoKTtcbiAgfTtcblxuICBwcml2YXRlIGZldGNoQ29uZmlnID0gYXN5bmMgKCk6IFByb21pc2U8Q29uZmlnRW5kcG9pbnQgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmNvbmZpZ1VybCk7XG4gICAgICAvLyBUT0RPOiBFcnJvciwgZmV0Y2ggb25seSB0aHJvd3Mgb24gY29ubmVjdGlvbiBlcnJvciwgZWxzZSB3ZSBnZXQgIWZldGNoLm9rXG4gICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHNldENvbmZpZyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmZldGNoQ29uZmlnKCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnQgPSBjb25maWcuYXV0aG9yaXphdGlvbl9lbmRwb2ludDtcbiAgICAgIHRoaXMudG9rZW5FbmRwb2ludCA9IGNvbmZpZy50b2tlbl9lbmRwb2ludDtcbiAgICAgIHRoaXMudXNlckluZm9FbmRwb2ludCA9IGNvbmZpZy51c2VyaW5mb19lbmRwb2ludDtcbiAgICAgIHRoaXMucmV2b2NhdGlvbkVuZHBvaW50ID0gY29uZmlnLnJldm9jYXRpb25fZW5kcG9pbnQ7XG4gICAgICB0aGlzLmVuZFNlc3Npb25FbmRwb2ludCA9IGNvbmZpZy5lbmRfc2Vzc2lvbl9lbmRwb2ludDtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbiA9IGFzeW5jIChjb2RlOiBzdHJpbmcsIG9yaWdpbmFsQ29kZVZlcmlmaWVyOiBzdHJpbmcsIGN1cnJlbnRTdGF0ZTogc3RyaW5nKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghdGhpcy50b2tlbkVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZC4gVG9rZW4gZW5kcG9pbnQgbm90IHByZXNlbnQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG4gICAgICBjb2RlLFxuICAgICAgY2xpZW50X2lkOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5jbGllbnRJZCksXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBjb2RlX3ZlcmlmaWVyOiBvcmlnaW5hbENvZGVWZXJpZmllcixcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0pLFxuICAgICAgYm9keTogZW5jb2RlQm9keShib2R5KSxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy50b2tlbkVuZHBvaW50LCBjb25maWcpO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIFRPRE86IEVycm9yLCBkZWFsIHdpdGggZmFpbHVyZSBjYXNlc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdXRoVG9rZW4gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiBhdXRoVG9rZW4uYWNjZXNzX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IGF1dGhUb2tlbi5yZWZyZXNoX3Rva2VuLFxuICAgICAgICBleHBpcmVzSW46IGF1dGhUb2tlbi5leHBpcmVzX2luLFxuICAgICAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgYXV0aFRva2VuLmV4cGlyZXNfaW4gKiAxMDAwLFxuICAgICAgICB0b2tlblR5cGU6IGF1dGhUb2tlbi50b2tlbl90eXBlLFxuICAgICAgICBzY29wZTogYXV0aFRva2VuLnNjb3BlLFxuICAgICAgICBpZFRva2VuOiBhdXRoVG9rZW4uaWRfdG9rZW4sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnN0b3JhZ2Uuc2V0KGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gLCB0aGlzLnRva2VuKTtcbiAgICAgIC8vIGNsZWFuIHVwIGxvY2FsIHN0b3JhZ2UgZnJvbSBQS0NFIGRldGFpbHNcbiAgICAgIFN0b3JhZ2UucmVtb3ZlKGN1cnJlbnRTdGF0ZSk7XG4gICAgICAvLyBjbGVhbiB1cCBxdWVyeSBwYXJhbXMgZnJvbSBPQXV0aCByZWRpcmVjdGlvblxuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgcmV0dXJuIHRoaXMudG9rZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgZ2V0dGluZyB0b2tlbicpO1xuICAgIH1cbiAgfTtcblxuICByZWZyZXNoVG9rZW4gPSBhc3luYyAoKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghdGhpcy50b2tlbiB8fCAhdGhpcy50b2tlbkVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWZyZXNoIHRva2VuIHdpdGhvdXQgdG9rZW4gb3IgZW5kcG9pbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudG9rZW4ucmVmcmVzaFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWZyZXNoIHRva2VuIHdpdGhvdXQgcmVmcmVzaCB0b2tlbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICByZWZyZXNoX3Rva2VuOiB0aGlzLnRva2VuLnJlZnJlc2hUb2tlbixcbiAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5yZWRpcmVjdFVSSSxcbiAgICAgIGNsaWVudF9pZDogZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY2xpZW50SWQpLFxuICAgIH07XG5cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgfSksXG4gICAgICBib2R5OiBlbmNvZGVCb2R5KGJvZHkpLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudG9rZW5FbmRwb2ludCwgY29uZmlnKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gbm90IHJlZnJlc2hlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgdGhpcy50b2tlbiA9IHtcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbi5hY2Nlc3NfdG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHRva2VuLnJlZnJlc2hfdG9rZW4sXG4gICAgICBleHBpcmVzSW46IHRva2VuLmV4cGlyZXNfaW4sXG4gICAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdG9rZW4uZXhwaXJlc19pbiAqIDEwMDAsXG4gICAgICB0b2tlblR5cGU6IHRva2VuLnRva2VuX3R5cGUsXG4gICAgICBzY29wZTogdG9rZW4uc2NvcGUsXG4gICAgICBpZFRva2VuOiB0b2tlbi5pZF90b2tlbixcbiAgICB9O1xuXG4gICAgdGhpcy5zdG9yYWdlLnNldChgJHt0aGlzLnN0b3JhZ2VLZXl9LnRva2VuYCwgdGhpcy50b2tlbik7XG5cbiAgICAvLyBUT0RPIEBhbGwgY2FsbCBsaXN0ZW5lcnMgaWYgc29tZXRoaW5nIGNoYW5nZWRcblxuICAgIHJldHVybiB0aGlzLnRva2VuO1xuICB9O1xuXG4gIGdldFJlZnJlc2hlZFRva2VuID0gYXN5bmMgKCk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnRva2VuLmV4cGlyZXNBdCA8IERhdGUubm93KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50b2tlbjtcbiAgfTtcblxuICBwcml2YXRlIGF1dGhlbnRpY2F0ZSA9IChhcmdzOiBBdXRoZW50aWNhdGVBcmdzKTogdm9pZCA9PiB7XG4gICAgY29uc3QgeyBmb3JjZWRSZWRpcmVjdFRvLCBpc1NpZ251cCwgZXh0cmFQYXJhbXMgfSA9IGFyZ3M7XG4gICAgY29uc3Qgb3JpZ2luYWxDb2RlVmVyaWZpZXIgPSBnZW5lcmF0ZUNvZGVWZXJpZmllcig5Nik7XG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gZ2VuZXJhdGVQa2NlQ2hhbGxlbmdlKG9yaWdpbmFsQ29kZVZlcmlmaWVyKTtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2gsIGhhc2ggfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICBjb25zdCB7IG9yaWdpbiB9ID0gcXVlcnlTdHJpbmcucGFyc2Uoc2VhcmNoKTtcbiAgICBjb25zdCByZWRpcmVjdFRvID0gZm9yY2VkUmVkaXJlY3RUbyA/IGZvcmNlZFJlZGlyZWN0VG8gOiBvcmlnaW4gPyBkZWNvZGVVUklDb21wb25lbnQob3JpZ2luICsgXCJcIikgOiBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gICAgY29uc3Qgc3RhdGUgPSB1dWlkdjQoKTtcbiAgICBsZXQgY2xhaW1QYXJhbTtcblxuICAgIGlmICh0aGlzLmNsYWltcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNsYWltTWFwID0gdGhpcy5jbGFpbXMucmVkdWNlPENsYWltUGFyYW0+KChjdXJyLCBjbGFpbSkgPT4gKHsgLi4uY3VyciwgW2NsYWltXTogbnVsbCB9KSwge30pO1xuICAgICAgY2xhaW1QYXJhbSA9IHRoaXMuY2xhaW1zLmxlbmd0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHVzZXJpbmZvOiBjbGFpbU1hcCxcbiAgICAgICAgICAgIGlkX3Rva2VuOiBjbGFpbU1hcCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGNsaWVudF9pZDogZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY2xpZW50SWQpLFxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLnJlZGlyZWN0VVJJLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVzLmpvaW4oJyAnKSxcbiAgICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICAgIHJlc3BvbnNlX21vZGU6ICdxdWVyeScsXG4gICAgICBzdGF0ZTogZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlKSxcbiAgICAgIGNvZGVfY2hhbGxlbmdlOiBlbmNvZGVVUkkoY29kZVZlcmlmaWVyKSxcbiAgICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuICAgICAgY2xhaW1zOiBjbGFpbVBhcmFtICYmIEpTT04uc3RyaW5naWZ5KGNsYWltUGFyYW0pLFxuICAgICAgLi4uKGV4dHJhUGFyYW1zIHx8IHt9KSxcbiAgICAgIC4uLihpc1NpZ251cCAmJiB7XG4gICAgICAgIHByb21wdDogJ2NyZWF0ZSdcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBTdG9yYWdlLnNldChzdGF0ZSwge1xuICAgICAgY29kZVZlcmlmaWVyLFxuICAgICAgb3JpZ2luYWxDb2RlVmVyaWZpZXIsXG4gICAgICByZWRpcmVjdFRvLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9naW5RdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50fT8ke2xvZ2luUXVlcnl9YDtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZj0gdXJsO1xuICB9XG5cbiAgbG9naW4gPSAgKGZvcmNlZFJlZGlyZWN0VG8/OiBzdHJpbmcsIGV4dHJhUGFyYW1zPzogQXV0aGVudGljYXRlRXh0cmFQYXJhbXMpOiB2b2lkID0+IHtcbiAgICBjb25zdCBhdXRoZW50aWNhdGUgPSAoKSA9PiB0aGlzLmF1dGhlbnRpY2F0ZSh7IGZvcmNlZFJlZGlyZWN0VG8sIGV4dHJhUGFyYW1zIH0pO1xuICAgIHRoaXMud2FpdEZvckF1dGhvcml6YXRpb25FbmRwb2ludChhdXRoZW50aWNhdGUpO1xuICB9O1xuXG4gIHNpZ251cCA9IChmb3JjZWRSZWRpcmVjdFRvPzogc3RyaW5nLCBleHRyYVBhcmFtcz86IEF1dGhlbnRpY2F0ZUV4dHJhUGFyYW1zKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYXV0aGVudGljYXRlID0gKCkgPT4gdGhpcy5hdXRoZW50aWNhdGUoeyBmb3JjZWRSZWRpcmVjdFRvLCBleHRyYVBhcmFtcywgaXNTaWdudXA6IHRydWUgfSk7XG4gICAgdGhpcy53YWl0Rm9yQXV0aG9yaXphdGlvbkVuZHBvaW50KGF1dGhlbnRpY2F0ZSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGxvYWRVc2VySW5mbyh1c2VySlNPTjogYW55LCBjbGFpbXM/OiBDbGFpbXMpOiBVc2VyRGF0YTtcblxuICBnZXRVc2VySW5mbyA9IGFzeW5jICgpOiBQcm9taXNlPHsgdXNlcjogVXNlckluZm8sIGNsYWltcz86IENsYWltcyB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgaWYgKCF0aGlzLnVzZXJJbmZvRW5kcG9pbnQgfHwgIXRoaXMudG9rZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmdldFJlZnJlc2hlZFRva2VuKCk7XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ05vIHRva2VuLCBjYW5ub3QgZ2V0IHVzZXIuJyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRoaXMudXNlckluZm9FbmRwb2ludCwge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VuLmFjY2Vzc1Rva2VufWAsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgY29uc3QgY2xhaW1zID0gdGhpcy5jbGFpbXMubGVuZ3RoXG4gICAgICAgID8gdGhpcy5jbGFpbXMucmVkdWNlPENsYWltcz4oKGN1cnIsIGNsYWltKSA9PiAoe1xuICAgICAgICAgIC4uLmN1cnIsXG4gICAgICAgICAgW2NsYWltXTogdXNlckluZm9bY2xhaW1dLFxuICAgICAgICB9KSwge30gYXMgQ2xhaW1zKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXNlciA9IHRoaXMubG9hZFVzZXJJbmZvKHVzZXJJbmZvLCBjbGFpbXMpO1xuXG4gICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIGdldHRpbmcgdXNlciBpbmZvLCBsb2dnaW5nIG91dC4uLicpO1xuICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgIGF3YWl0IHRoaXMubG9nb3V0KCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBsb2dvdXQgPSBhc3luYyAoZW5kU2Vzc2lvblVSST86IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApO1xuXG4gICAgaWYgKGVuZFNlc3Npb25VUkkpIHtcbiAgICAgIC8vIEphbnJhaW5KU1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoZW5kU2Vzc2lvblVSSSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9rdGFKU1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAnaWRfdG9rZW5faGludCc6IHRoaXMudG9rZW4/LmlkVG9rZW4sXG4gICAgICAgICdwb3N0X2xvZ291dF9yZWRpcmVjdF91cmknOiB0aGlzLmxvZ291dFJlZGlyZWN0VVJJLFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmVuZFNlc3Npb25FbmRwb2ludCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVuZFNlc3Npb25FbmRwb2ludH0/JHtxdWVyeVN0cmluZy5zdHJpbmdpZnkocGFyYW1zKX1gO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh1cmwpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT0F1dGhDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhEQUF1QztBQUN2Qyw2QkFBb0M7QUFDcEMsaUNBQTBHO0FBWTFHLHVEQUFzRDtBQUV0RDtJQTJDRSxzQkFBWSxRQUFnQixFQUFFLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxVQUFrQixFQUFFLGlCQUF5QixFQUFFLE1BQTZCLEVBQUUsTUFBZ0MsRUFBRSxXQUF5QztRQUEvTixpQkEwQ0M7UUExQ29ILHVCQUFBLEVBQUEsVUFBb0IsUUFBUSxDQUFDO1FBQUUsdUJBQUEsRUFBQSxXQUFnQztRQUFFLDRCQUFBLEVBQUEsNEJBQXlDO1FBWi9OLGNBQVMsR0FBK0MsRUFBRSxDQUFDO1FBZ0puRCx3QkFBbUIsR0FBRzs7WUFDNUIsSUFBSSxRQUFDLEtBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksQ0FBQSxFQUFFO2dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksS0FBSSxDQUFDLElBQUksSUFBSSxLQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN6RCxJQUFNLHdCQUF3QixHQUFHLEtBQUssQ0FBQztnQkFDdkMsS0FBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Ozs7OztnQ0FFM0MsV0FBTSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUE7O2dDQUF6QixTQUF5QixDQUFDOzs7O2dDQUUxQixhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0NBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7Ozs7cUJBRWpCLEVBQUUsQ0FBQyxLQUFJLENBQUMs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SUM7UUFIQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLEVBQUU7WUFDeEIsRUFBRSxDQUFDLEtBQUksQ0FBQyxLQUFLLElBQUksS0FBSSxDQUFDLElBQUksRUFBRSxLQUFJLENBQUMsY0FBYyxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE4U0gsbUJBQUM7QUFBRCxDQUFDLEFBM2RELElBMmRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5LXN0cmluZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGVuY29kZUJvZHksIGdlbmVyYXRlQ29kZVZlcmlmaWVyLCBnZW5lcmF0ZVBrY2VDaGFsbGVuZ2UsIFN0b3JhZ2UsIGNoZWNrQ2FsbGJhY2sgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIE9BdXRoVXNlckluZm8sXG4gIFRva2VuLFxuICBXYXRjaEF1dGhDYWxsYmFjayxcbiAgSW5pdCxcbiAgQ29uZmlnRW5kcG9pbnQsXG4gIEF1dGhlbnRpY2F0ZUFyZ3MsXG4gIENsYWltUGFyYW0sXG4gIEF1dGhlbnRpY2F0ZUV4dHJhUGFyYW1zLFxuICBTdG9yYWdlVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDb29raWVTdG9yYWdlIH0gZnJvbSAnLi91dGlscy9Db29raWVTdG9yYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgT3BlbklEQ2xpZW50PENsYWltcyBleHRlbmRzIHt9ID0ge30sIFVzZXJJbmZvIGV4dGVuZHMgT0F1dGhVc2VySW5mbyA9IE9BdXRoVXNlckluZm8sIFVzZXJEYXRhIGV4dGVuZHMgeyB1c2VyOiBVc2VySW5mbywgY2xhaW1zPzogQ2xhaW1zIH0gPSB7IHVzZXI6IFVzZXJJbmZvLCBjbGFpbXM/OiBDbGFpbXMgfT4ge1xuICBjbGllbnRJZDogc3RyaW5nO1xuXG4gIGNvbmZpZ1VybDogc3RyaW5nO1xuXG4gIHNjb3Blczogc3RyaW5nW107XG5cbiAgY2xhaW1zOiBBcnJheTxrZXlvZiBDbGFpbXM+O1xuXG4gIHJlZGlyZWN0VVJJOiBzdHJpbmc7XG5cbiAgbG9nb3V0UmVkaXJlY3RVUkk6IHN0cmluZztcblxuICBhdXRob3JpemF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgdG9rZW5FbmRwb2ludD86IHN0cmluZztcblxuICB1c2VySW5mb0VuZHBvaW50Pzogc3RyaW5nO1xuXG4gIHJldm9jYXRpb25FbmRwb2ludD86IHN0cmluZztcblxuICBlbmRTZXNzaW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgdG9rZW4/OiBUb2tlbjtcblxuICB1c2VyPzogVXNlckRhdGE7XG5cbiAgc3RvcmFnZTogdHlwZW9mIFN0b3JhZ2UgfCB0eXBlb2YgQ29va2llU3RvcmFnZTtcblxuICBzdG9yYWdlS2V5OiBzdHJpbmc7XG5cbiAgbGlzdGVuZXJzOiBBcnJheTxXYXRjaEF1dGhDYWxsYmFjazxVc2VySW5mbywgQ2xhaW1zPj4gPSBbXTtcblxuICByZWZyZXNoVG9rZW5JbnRlcnZhbD86IG51bWJlcjtcblxuICBjb21lc0Zyb21Mb2dpbjogYm9vbGVhbjtcblxuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuXG4gIGhhc0JlZW5Jbml0aWFsaXplZDogYm9vbGVhbjtcblxuICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGU7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50SWQ6IHN0cmluZywgY29uZmlnVXJsOiBzdHJpbmcsIHJlZGlyZWN0VVJJOiBzdHJpbmcsIHN0b3JhZ2VLZXk6IHN0cmluZywgbG9nb3V0UmVkaXJlY3RVUkk6IHN0cmluZywgc2NvcGVzOiBzdHJpbmdbXSA9IFsnb3BlbmlkJ10sIGNsYWltczogQXJyYXk8a2V5b2YgQ2xhaW1zPiA9IFtdLCBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUgPSAnbG9jYWxTdG9yYWdlJykge1xuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2xpZW50SWQgaXMgbm90IHByb3ZpZGVkLicpXG4gICAgfVxuICAgIHRoaXMuY2xpZW50SWQgPSBjbGllbnRJZDtcblxuICAgIGlmICghY29uZmlnVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZ1VybCBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG4gICAgdGhpcy5jb25maWdVcmwgPSBjb25maWdVcmw7XG5cbiAgICBpZiAoIXJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlZGlyZWN0VXJpIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLnJlZGlyZWN0VVJJID0gcmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIWxvZ291dFJlZGlyZWN0VVJJKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2xvZ291dFJlZGlyZWN0VVJJIGlzIG5vdCBwcm92aWRlZC4nKVxuICAgIH1cbiAgICB0aGlzLmxvZ291dFJlZGlyZWN0VVJJID0gbG9nb3V0UmVkaXJlY3RVUkk7XG5cbiAgICBpZiAoIXN0b3JhZ2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc3RvcmFnZUtleSBpcyBub3QgcHJvdmlkZWQuJylcbiAgICB9XG5cbiAgICB0aGlzLnN0b3JhZ2VUeXBlID0gc3RvcmFnZVR5cGU7XG5cbiAgICBpZiAoc3RvcmFnZVR5cGUgPT09ICdsb2NhbFN0b3JhZ2UnKSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSBTdG9yYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSBDb29raWVTdG9yYWdlO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmFnZUtleSA9IHN0b3JhZ2VLZXk7XG5cbiAgICB0aGlzLmNvbWVzRnJvbUxvZ2luID0gZmFsc2U7XG4gICAgdGhpcy5yZWRpcmVjdFRvID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaGFzQmVlbkluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5zY29wZXMgPSBzY29wZXM7XG4gICAgdGhpcy5jbGFpbXMgPSBjbGFpbXM7XG4gICAgXG4gICAgdGhpcy50b2tlbiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gdGhpcy5zdG9yYWdlLmdldChgJHtzdG9yYWdlS2V5fS50b2tlbmApIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxJbml0IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMuaGFzQmVlbkluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBbY2FsbGJhY2tTdGF0ZSwgc3RvcmFnZU9hdXRoXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIGNoZWNrQ2FsbGJhY2sod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgU3RvcmFnZS5nZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApLFxuICAgIF0pO1xuXG4gICAgLy8gV2FpdCB1bnRpbCBjb25maWd1cmF0aW9uIGhhcyBmaW5pc2hlZC5cbiAgICBhd2FpdCB0aGlzLnNldENvbmZpZygpO1xuXG4gICAgLy8gUmV0dXJuIGVhcmx5XG4gICAgaWYgKCFjYWxsYmFja1N0YXRlICYmICFzdG9yYWdlT2F1dGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5oYXNCZWVuSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgaWYgKGNhbGxiYWNrU3RhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuT25Jbml0KGNhbGxiYWNrU3RhdGUpXG4gICAgfVxuXG4gICAgaWYgKHN0b3JhZ2VPYXV0aCAmJiAhc3RvcmFnZU9hdXRoLmxvZ291dCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuT25Jbml0KHN0b3JhZ2VPYXV0aClcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUb2tlbk9uSW5pdChjYWxsYmFja1N0YXRlKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvZGUsXG4gICAgICBwa2NlQ29kZVZlcmlmaWVyLFxuICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgcmVkaXJlY3RUbyxcbiAgICAgIG5ld1VybFxuICAgIH0gPSBjYWxsYmFja1N0YXRlO1xuXG4gICAgdGhpcy50b2tlbiA9IGF3YWl0IHRoaXMuZ2V0VG9rZW4oY29kZSwgcGtjZUNvZGVWZXJpZmllciwgY3VycmVudFN0YXRlKTtcbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIH1cblxuICAgIHRoaXMua2VlcFJlZnJlc2hpbmdUb2tlbigpO1xuXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHdpbmRvdy5oaXN0b3J5LnN0YXRlLCBkb2N1bWVudC50aXRsZSwgbmV3VXJsKTtcblxuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSB0cnVlO1xuICAgIHRoaXMucmVkaXJlY3RUbyA9IHJlZGlyZWN0VG87XG5cbiAgICByZXR1cm4gdGhpcy50b2tlblxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW5PbkluaXQoc3RvcmFnZU9hdXRoOiBhbnkpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPiB7XG4gICAgdGhpcy50b2tlbiA9IHN0b3JhZ2VPYXV0aDtcbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIH1cblxuICAgIHRoaXMuY29tZXNGcm9tTG9naW4gPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMudG9rZW4/LnJlZnJlc2hUb2tlbikge1xuICAgICAgLy8gVE9ETyBAYWxsIGhhbmRsZSBjYXNlIHdpdGhvdXQgcmVmcmVzaCB0b2tlblxuICAgICAgLy8gVGhpcyBzaG91bGQgdGVzdCBpZiB0aGUgY3VycmVudCB0b2tlbiBpcyBzdGlsbCB2YWxpZFxuICAgICAgLy8gb3Igd2Ugc2hvdWxkIGNoYW5nZSB0aGUgQVBJIGNhbGxzIHRvIGdldCB0aGUgcmVmcmVzaCB0b2tlbi5cbiAgICAgIGNvbnNvbGUud2FybihcIm1pc3NpbmcgcmVmcmVzaCB0b2tlbi5cIilcbiAgICAgIHJldHVybiB0aGlzLnRva2VuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIG9ubHkgZ2V0IG5ldyB0b2tlbiBvbiBpbml0IGlmIG9uZSBmcm9tIHN0b3JhZ2UgaGFzIGV4cGlyZWRcbiAgICAgIGF3YWl0IHRoaXMuZ2V0UmVmcmVzaGVkVG9rZW4oKTtcbiAgICAgIHRoaXMua2VlcFJlZnJlc2hpbmdUb2tlbigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy50b2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRva2VuXG4gIH1cblxuICBwcml2YXRlIGNhbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgoY2IpID0+IHtcbiAgICAgIGNiKHRoaXMudG9rZW4gJiYgdGhpcy51c2VyLCB0aGlzLmNvbWVzRnJvbUxvZ2luLCB0aGlzLnJlZGlyZWN0VG8pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGtlZXBSZWZyZXNoaW5nVG9rZW4gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLnRva2VuPy5yZWZyZXNoVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcIm1pc3NpbmcgcmVmcmVzaCB0b2tlbi5cIilcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHRoaXMudG9rZW4gJiYgIXRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpIHtcbiAgICAgIGNvbnN0IFNBRkVUWV9HQVBfUkVGUkVTSF9UT0tFTiA9IDYwMDAwOyAvLyAxIG1pblxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMucmVmcmVzaFRva2VuSW50ZXJ2YWwpO1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sICh0aGlzLnRva2VuLmV4cGlyZXNJbiAqIDEwMDApIC0gU0FGRVRZX0dBUF9SRUZSRVNIX1RPS0VOKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB3YWl0Rm9yQXV0aG9yaXphdGlvbkVuZHBvaW50ID0gKGNhbGxiYWNrKTogdm9pZCA9PiB7XG4gICAgaWYgKHRoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50KSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFVQREFURV9JTlRFUlZBTCA9IDIwMDsgLy8gMC4yIHNlY29uZFxuICAgIGNvbnN0IE1BWElNVU1fV0FJVElOR19USU1FID0gNTAwMDsgLy8gNSBzZWNvbmRzXG4gICAgbGV0IGF0dGVtcHRzQW1vdW50ID0gTUFYSU1VTV9XQUlUSU5HX1RJTUUgLyBVUERBVEVfSU5URVJWQUw7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXR0ZW1wdHNBbW91bnQgPT09IDApIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dGhvcml6YXRpb24gZW5kcG9pbnQgd2FpdGluZyB0aW1lIGhhcyBiZWVuIGV4Y2VlZGVkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0ZW1wdHNBbW91bnQtLTtcbiAgICAgIH1cbiAgICB9LCBVUERBVEVfSU5URVJWQUwpO1xuICB9XG5cbiAgd2F0Y2hBdXRoID0gYXN5bmMgKGNiOiBXYXRjaEF1dGhDYWxsYmFjazxVc2VySW5mbywgQ2xhaW1zPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goY2IpO1xuXG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLmNhbGxMaXN0ZW5lcnMoKTtcbiAgfTtcblxuICBwcml2YXRlIGZldGNoQ29uZmlnID0gYXN5bmMgKCk6IFByb21pc2U8Q29uZmlnRW5kcG9pbnQgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmNvbmZpZ1VybCk7XG4gICAgICAvLyBUT0RPOiBFcnJvciwgZmV0Y2ggb25seSB0aHJvd3Mgb24gY29ubmVjdGlvbiBlcnJvciwgZWxzZSB3ZSBnZXQgIWZldGNoLm9rXG4gICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHNldENvbmZpZyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmZldGNoQ29uZmlnKCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnQgPSBjb25maWcuYXV0aG9yaXphdGlvbl9lbmRwb2ludDtcbiAgICAgIHRoaXMudG9rZW5FbmRwb2ludCA9IGNvbmZpZy50b2tlbl9lbmRwb2ludDtcbiAgICAgIHRoaXMudXNlckluZm9FbmRwb2ludCA9IGNvbmZpZy51c2VyaW5mb19lbmRwb2ludDtcbiAgICAgIHRoaXMucmV2b2NhdGlvbkVuZHBvaW50ID0gY29uZmlnLnJldm9jYXRpb25fZW5kcG9pbnQ7XG4gICAgICB0aGlzLmVuZFNlc3Npb25FbmRwb2ludCA9IGNvbmZpZy5lbmRfc2Vzc2lvbl9lbmRwb2ludDtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbiA9IGFzeW5jIChjb2RlOiBzdHJpbmcsIG9yaWdpbmFsQ29kZVZlcmlmaWVyOiBzdHJpbmcsIGN1cnJlbnRTdGF0ZTogc3RyaW5nKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICghdGhpcy50b2tlbkVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZC4gVG9rZW4gZW5kcG9pbnQgbm90IHByZXNlbnQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG4gICAgICBjb2RlLFxuICAgICAgY2xpZW50X2lkOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5jbGllbnRJZCksXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBjb2RlX3ZlcmlmaWVyOiBvcmlnaW5hbENvZGVWZXJpZmllcixcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0pLFxuICAgICAgYm9keTogZW5jb2RlQm9keShib2R5KSxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy50b2tlbkVuZHBvaW50LCBjb25maWcpO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIFRPRE86IEVycm9yLCBkZWFsIHdpdGggZmFpbHVyZSBjYXNlc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdXRoVG9rZW4gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiBhdXRoVG9rZW4uYWNjZXNzX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IGF1dGhUb2tlbi5yZWZyZXNoX3Rva2VuLFxuICAgICAgICBleHBpcmVzSW46IGF1dGhUb2tlbi5leHBpcmVzX2luLFxuICAgICAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgYXV0aFRva2VuLmV4cGlyZXNfaW4gKiAxMDAwLFxuICAgICAgICB0b2tlblR5cGU6IGF1dGhUb2tlbi50b2tlbl90eXBlLFxuICAgICAgICBzY29wZTogYXV0aFRva2VuLnNjb3BlLFxuICAgICAgICBpZFRva2VuOiBhdXRoVG9rZW4uaWRfdG9rZW4sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnN0b3JhZ2Uuc2V0KGAke3RoaXMuc3RvcmFnZUtleX0udG9rZW5gLCB0aGlzLnRva2VuLCB7XG4gICAgICAgIHBhdGg6ICcvJyxcbiAgICAgICAgZXhwaXJlczogbmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyBhdXRoVG9rZW4uZXhwaXJlc19pbiAqIDEwMDApLnRvVVRDU3RyaW5nKCksXG4gICAgICAgIHNlY3VyZTogJ3RydWUnLFxuICAgICAgfSk7XG4gICAgICAvLyBjbGVhbiB1cCBsb2NhbCBzdG9yYWdlIGZyb20gUEtDRSBkZXRhaWxzXG4gICAgICBTdG9yYWdlLnJlbW92ZShjdXJyZW50U3RhdGUpO1xuICAgICAgLy8gY2xlYW4gdXAgcXVlcnkgcGFyYW1zIGZyb20gT0F1dGggcmVkaXJlY3Rpb25cbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7XG5cbiAgICAgIHJldHVybiB0aGlzLnRva2VuO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGdldHRpbmcgdG9rZW4nKTtcbiAgICB9XG4gIH07XG5cbiAgcmVmcmVzaFRva2VuID0gYXN5bmMgKCk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXRoaXMudG9rZW4gfHwgIXRoaXMudG9rZW5FbmRwb2ludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVmcmVzaCB0b2tlbiB3aXRob3V0IHRva2VuIG9yIGVuZHBvaW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRva2VuLnJlZnJlc2hUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVmcmVzaCB0b2tlbiB3aXRob3V0IHJlZnJlc2ggdG9rZW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy50b2tlbi5yZWZyZXNoVG9rZW4sXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBjbGllbnRfaWQ6IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNsaWVudElkKSxcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0pLFxuICAgICAgYm9keTogZW5jb2RlQm9keShib2R5KSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnRva2VuRW5kcG9pbnQsIGNvbmZpZyk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIG5vdCByZWZyZXNoZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICBhY2Nlc3NUb2tlbjogdG9rZW4uYWNjZXNzX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoX3Rva2VuLFxuICAgICAgZXhwaXJlc0luOiB0b2tlbi5leHBpcmVzX2luLFxuICAgICAgZXhwaXJlc0F0OiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRva2VuLmV4cGlyZXNfaW4gKiAxMDAwLFxuICAgICAgdG9rZW5UeXBlOiB0b2tlbi50b2tlbl90eXBlLFxuICAgICAgc2NvcGU6IHRva2VuLnNjb3BlLFxuICAgICAgaWRUb2tlbjogdG9rZW4uaWRfdG9rZW4sXG4gICAgfTtcblxuICAgIHRoaXMuc3RvcmFnZS5zZXQoYCR7dGhpcy5zdG9yYWdlS2V5fS50b2tlbmAsIHRoaXMudG9rZW4sIHtcbiAgICAgIHBhdGg6ICcvJyxcbiAgICAgIGV4cGlyZXM6IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdG9rZW4uZXhwaXJlc19pbiAqIDEwMDApLnRvVVRDU3RyaW5nKCksXG4gICAgICBzZWN1cmU6ICd0cnVlJyxcbiAgICB9KTtcblxuICAgIC8vIFRPRE8gQGFsbCBjYWxsIGxpc3RlbmVycyBpZiBzb21ldGhpbmcgY2hhbmdlZFxuXG4gICAgcmV0dXJuIHRoaXMudG9rZW47XG4gIH07XG5cbiAgZ2V0UmVmcmVzaGVkVG9rZW4gPSBhc3luYyAoKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGlmICh0aGlzLnRva2VuICYmIHRoaXMudG9rZW4uZXhwaXJlc0F0IDwgRGF0ZS5ub3coKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRva2VuO1xuICB9O1xuXG4gIHByaXZhdGUgYXV0aGVudGljYXRlID0gKGFyZ3M6IEF1dGhlbnRpY2F0ZUFyZ3MpOiB2b2lkID0+IHtcbiAgICBjb25zdCB7IGZvcmNlZFJlZGlyZWN0VG8sIGlzU2lnbnVwLCBleHRyYVBhcmFtcyB9ID0gYXJncztcbiAgICBjb25zdCBvcmlnaW5hbENvZGVWZXJpZmllciA9IGdlbmVyYXRlQ29kZVZlcmlmaWVyKDk2KTtcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBnZW5lcmF0ZVBrY2VDaGFsbGVuZ2Uob3JpZ2luYWxDb2RlVmVyaWZpZXIpO1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IHsgb3JpZ2luIH0gPSBxdWVyeVN0cmluZy5wYXJzZShzZWFyY2gpO1xuICAgIGNvbnN0IHJlZGlyZWN0VG8gPSBmb3JjZWRSZWRpcmVjdFRvID8gZm9yY2VkUmVkaXJlY3RUbyA6IG9yaWdpbiA/IGRlY29kZVVSSUNvbXBvbmVudChvcmlnaW4gKyBcIlwiKSA6IHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbiAgICBjb25zdCBzdGF0ZSA9IHV1aWR2NCgpO1xuICAgIGxldCBjbGFpbVBhcmFtO1xuXG4gICAgaWYgKHRoaXMuY2xhaW1zLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2xhaW1NYXAgPSB0aGlzLmNsYWltcy5yZWR1Y2U8Q2xhaW1QYXJhbT4oKGN1cnIsIGNsYWltKSA9PiAoeyAuLi5jdXJyLCBbY2xhaW1dOiBudWxsIH0pLCB7fSk7XG4gICAgICBjbGFpbVBhcmFtID0gdGhpcy5jbGFpbXMubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgdXNlcmluZm86IGNsYWltTWFwLFxuICAgICAgICAgICAgaWRfdG9rZW46IGNsYWltTWFwLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgY2xpZW50X2lkOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5jbGllbnRJZCksXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMucmVkaXJlY3RVUkksXG4gICAgICBzY29wZTogdGhpcy5zY29wZXMuam9pbignICcpLFxuICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuICAgICAgcmVzcG9uc2VfbW9kZTogJ3F1ZXJ5JyxcbiAgICAgIHN0YXRlOiBlbmNvZGVVUklDb21wb25lbnQoc3RhdGUpLFxuICAgICAgY29kZV9jaGFsbGVuZ2U6IGVuY29kZVVSSShjb2RlVmVyaWZpZXIpLFxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NicsXG4gICAgICBjbGFpbXM6IGNsYWltUGFyYW0gJiYgSlNPTi5zdHJpbmdpZnkoY2xhaW1QYXJhbSksXG4gICAgICAuLi4oZXh0cmFQYXJhbXMgfHwge30pLFxuICAgICAgLi4uKGlzU2lnbnVwICYmIHtcbiAgICAgICAgcHJvbXB0OiAnY3JlYXRlJ1xuICAgICAgfSksXG4gICAgfTtcblxuICAgIFN0b3JhZ2Uuc2V0KHN0YXRlLCB7XG4gICAgICBjb2RlVmVyaWZpZXIsXG4gICAgICBvcmlnaW5hbENvZGVWZXJpZmllcixcbiAgICAgIHJlZGlyZWN0VG8sXG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2dpblF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHBhcmFtcyk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnR9PyR7bG9naW5RdWVyeX1gO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSB1cmw7XG4gIH1cblxuICBsb2dpbiA9ICAoZm9yY2VkUmVkaXJlY3RUbz86IHN0cmluZywgZXh0cmFQYXJhbXM/OiBBdXRoZW50aWNhdGVFeHRyYVBhcmFtcyk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGF1dGhlbnRpY2F0ZSA9ICgpID0+IHRoaXMuYXV0aGVudGljYXRlKHsgZm9yY2VkUmVkaXJlY3RUbywgZXh0cmFQYXJhbXMgfSk7XG4gICAgdGhpcy53YWl0Rm9yQXV0aG9yaXphdGlvbkVuZHBvaW50KGF1dGhlbnRpY2F0ZSk7XG4gIH07XG5cbiAgc2lnbnVwID0gKGZvcmNlZFJlZGlyZWN0VG8/OiBzdHJpbmcsIGV4dHJhUGFyYW1zPzogQXV0aGVudGljYXRlRXh0cmFQYXJhbXMpOiB2b2lkID0+IHtcbiAgICBjb25zdCBhdXRoZW50aWNhdGUgPSAoKSA9PiB0aGlzLmF1dGhlbnRpY2F0ZSh7IGZvcmNlZFJlZGlyZWN0VG8sIGV4dHJhUGFyYW1zLCBpc1NpZ251cDogdHJ1ZSB9KTtcbiAgICB0aGlzLndhaXRGb3JBdXRob3JpemF0aW9uRW5kcG9pbnQoYXV0aGVudGljYXRlKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbG9hZFVzZXJJbmZvKHVzZXJKU09OOiBhbnksIGNsYWltcz86IENsYWltcyk6IFVzZXJEYXRhO1xuXG4gIGdldFVzZXJJbmZvID0gYXN5bmMgKCk6IFByb21pc2U8eyB1c2VyOiBVc2VySW5mbywgY2xhaW1zPzogQ2xhaW1zIH0gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBpZiAoIXRoaXMudXNlckluZm9FbmRwb2ludCB8fCAhdGhpcy50b2tlbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMuZ2V0UmVmcmVzaGVkVG9rZW4oKTtcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignTm8gdG9rZW4sIGNhbm5vdCBnZXQgdXNlci4nKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy51c2VySW5mb0VuZHBvaW50LCB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW4uYWNjZXNzVG9rZW59YCxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdXNlckluZm8gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICBjb25zdCBjbGFpbXMgPSB0aGlzLmNsYWltcy5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmNsYWltcy5yZWR1Y2U8Q2xhaW1zPigoY3VyciwgY2xhaW0pID0+ICh7XG4gICAgICAgICAgLi4uY3VycixcbiAgICAgICAgICBbY2xhaW1dOiB1c2VySW5mb1tjbGFpbV0sXG4gICAgICAgIH0pLCB7fSBhcyBDbGFpbXMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy51c2VyID0gdGhpcy5sb2FkVXNlckluZm8odXNlckluZm8sIGNsYWltcyk7XG5cbiAgICAgIHJldHVybiB0aGlzLnVzZXI7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXJyb3IgZ2V0dGluZyB1c2VyIGluZm8sIGxvZ2dpbmcgb3V0Li4uJyk7XG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dvdXQoKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuXG4gIGxvZ291dCA9IGFzeW5jIChlbmRTZXNzaW9uVVJJPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShgJHt0aGlzLnN0b3JhZ2VLZXl9LnRva2VuYCk7XG5cbiAgICBpZiAoZW5kU2Vzc2lvblVSSSkge1xuICAgICAgLy8gSmFucmFpbkpTXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShlbmRTZXNzaW9uVVJJKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT2t0YUpTXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICdpZF90b2tlbl9oaW50JzogdGhpcy50b2tlbj8uaWRUb2tlbixcbiAgICAgICAgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSc6IHRoaXMubG9nb3V0UmVkaXJlY3RVUkksXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuZW5kU2Vzc2lvbkVuZHBvaW50KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW5kU2Vzc2lvbkVuZHBvaW50fT8ke3F1ZXJ5U3RyaW5nLnN0cmluZ2lmeShwYXJhbXMpfWA7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG59XG4iXX0=
{
"name": "@mybiogen/auth-openid",
"version": "2.0.9",
"version": "2.0.10",
"description": "Authorization for OpenID",

@@ -37,3 +37,3 @@ "license": "MIT",

},
"gitHead": "27e850106d7f7614f835e526c4f3feea9ce627e6"
"gitHead": "4f68eddb908d7429e849e17708c82fd142388faa"
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc