UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

272 lines 20.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; var Configuration = /** @class */ (function () { function Configuration(options) { this.libraries = []; this.loginURL = ''; this.refreshLoginURL = ''; this.allowRefreshToken = true; this.apiUrl = ''; this.nbRetryOnNetworkError = 0; this.contentSecurityPolicyActivated = false; this.useCharset = 'UTF-8'; this.useAuthorizationType = 'Bearer'; this.useAccessToken = ''; this.useRefreshToken = ''; this.useCSRFToken = ''; this.useLocale = options.locale || 'fr'; this.useLanguages = options.languages || ['fr']; this.libraries = options.libraries || []; this.apiUrl = options.apiUrl || '/api/'; this.allowRefreshToken = options.allowRefreshToken || true; this.loginURL = options.loginURL || '/login/'; this.refreshLoginURL = options.refreshLoginURL || ''; this.nbRetryOnNetworkError = options.nbRetryOnNetworkError || 0; this.contentSecurityPolicyActivated = options.contentSecurityPolicyActivated || false; } Object.defineProperty(Configuration.prototype, "locale", { get: /** * @return {?} */ function () { return this.useLocale; }, set: /** * @param {?} value * @return {?} */ function (value) { this.useLocale = value; }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "languages", { get: /** * @return {?} */ function () { return this.useLanguages; }, set: /** * @param {?} value * @return {?} */ function (value) { this.useLanguages = value; this.setDefaultLocale(); }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "charset", { get: /** * @return {?} */ function () { return this.useCharset; }, set: /** * @param {?} value * @return {?} */ function (value) { this.useCharset = value; }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "authorizationType", { get: /** * @return {?} */ function () { return this.useAuthorizationType; }, set: /** * @param {?} value * @return {?} */ function (value) { this.useAuthorizationType = value; }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "refreshToken", { get: /** * @return {?} */ function () { if (this.contentSecurityPolicyActivated && !this.useRefreshToken) { this.useRefreshToken = localStorage.getItem('refreshToken'); } else if (!this.useRefreshToken) { this.useRefreshToken = sessionStorage.getItem('refreshToken'); } return this.useRefreshToken; }, set: /** * @param {?} value * @return {?} */ function (value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('refreshToken', value); } else { sessionStorage.setItem('refreshToken', value); } this.useRefreshToken = value; }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "accessToken", { get: /** * @return {?} */ function () { if (this.contentSecurityPolicyActivated && !this.useAccessToken) { this.useAccessToken = localStorage.getItem('accessToken'); } else if (!this.useAccessToken) { this.useAccessToken = sessionStorage.getItem('accessToken'); } return this.useAccessToken; }, set: /** * @param {?} value * @return {?} */ function (value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('accessToken', value); } else { sessionStorage.setItem('accessToken', value); } this.useAccessToken = value; }, enumerable: true, configurable: true }); Object.defineProperty(Configuration.prototype, "CSRFToken", { get: /** * @return {?} */ function () { if (this.contentSecurityPolicyActivated && !this.useAccessToken) { this.useCSRFToken = localStorage.getItem('CSRFToken'); } else if (!this.useCSRFToken) { this.useCSRFToken = sessionStorage.getItem('CSRFToken'); } return this.useCSRFToken; }, set: /** * @param {?} value * @return {?} */ function (value) { if (this.contentSecurityPolicyActivated) { localStorage.setItem('CSRFToken', value); } else { sessionStorage.setItem('CSRFToken', value); } this.useCSRFToken = value; }, enumerable: true, configurable: true }); /** * @private * @return {?} */ Configuration.prototype.setDefaultLocale = /** * @private * @return {?} */ function () { if (this.useLocale) { return; } if (navigator && navigator.language.indexOf('-') > -1) { if (this.languages.indexOf(navigator.language) > -1) { this.locale = navigator.language; return; } var _a = tslib_1.__read(navigator.language.split('-'), 2), langue = _a[0], country = _a[1]; if (this.languages.indexOf(langue) > -1) { this.locale = langue; return; } } else if (navigator && navigator.languages.length > 0) { for (var i in navigator.languages) { if (this.languages.indexOf(navigator.languages[i]) > -1) { this.locale = navigator.languages[i]; return; } } } }; return Configuration; }()); export { Configuration }; if (false) { /** * @type {?} * @private */ Configuration.prototype.useCharset; /** * @type {?} * @private */ Configuration.prototype.useAuthorizationType; /** * @type {?} * @private */ Configuration.prototype.useAccessToken; /** * @type {?} * @private */ Configuration.prototype.useRefreshToken; /** * @type {?} * @private */ Configuration.prototype.useCSRFToken; /** * @type {?} * @private */ Configuration.prototype.useLocale; /** * @type {?} * @private */ Configuration.prototype.useLanguages; /** @type {?} */ Configuration.prototype.libraries; /** @type {?} */ Configuration.prototype.loginURL; /** @type {?} */ Configuration.prototype.refreshLoginURL; /** @type {?} */ Configuration.prototype.allowRefreshToken; /** @type {?} */ Configuration.prototype.apiUrl; /** @type {?} */ Configuration.prototype.nbRetryOnNetworkError; /** @type {?} */ Configuration.prototype.contentSecurityPolicyActivated; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7SUFnQkksdUJBQVksT0FBMEI7UUFSL0IsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyxtQ0FBOEIsR0FBWSxLQUFLLENBQUM7UUFHbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO1FB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QUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLE9BQU87YUFDVjtTQUNKO2FBQU0sSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BELEtBQUssSUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckMsT0FBTztpQkFDVjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBakpELElBaUpDOzs7Ozs7O0lBaEpHLG1DQUFtQjs7Ozs7SUFDbkIsNkNBQTZCOzs7OztJQUM3Qix1Q0FBdUI7Ozs7O0lBQ3ZCLHdDQUF3Qjs7Ozs7SUFDeEIscUNBQXFCOzs7OztJQUNyQixrQ0FBMEI7Ozs7O0lBQzFCLHFDQUErQjs7SUFDL0Isa0NBQWdDOztJQUNoQyxpQ0FBNkI7O0lBQzdCLHdDQUFvQzs7SUFDcEMsMENBQXlDOztJQUN6QywrQkFBMkI7O0lBQzNCLDhDQUF5Qzs7SUFDekMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZU9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29yZS1tb2R1bGUtb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHVzZUNoYXJzZXQ7XG4gICAgcHJpdmF0ZSB1c2VBdXRob3JpemF0aW9uVHlwZTtcbiAgICBwcml2YXRlIHVzZUFjY2Vzc1Rva2VuO1xuICAgIHByaXZhdGUgdXNlUmVmcmVzaFRva2VuO1xuICAgIHByaXZhdGUgdXNlQ1NSRlRva2VuO1xuICAgIHByaXZhdGUgdXNlTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB1c2VMYW5ndWFnZXM6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyBsaWJyYXJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGxvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgcmVmcmVzaExvZ2luVVJMOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgYWxsb3dSZWZyZXNoVG9rZW46IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBhcGlVcmw6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBuYlJldHJ5T25OZXR3b3JrRXJyb3I6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogQ29yZU1vZHVsZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gJ1VURi04JztcbiAgICAgICAgdGhpcy51c2VBdXRob3JpemF0aW9uVHlwZSA9ICdCZWFyZXInO1xuICAgICAgICB0aGlzLnVzZUFjY2Vzc1Rva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlQ1NSRlRva2VuID0gJyc7XG4gICAgICAgIHRoaXMudXNlTG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgfHwgJ2ZyJztcbiAgICAgICAgdGhpcy51c2VMYW5ndWFnZXMgPSBvcHRpb25zLmxhbmd1YWdlcyB8fCBbJ2ZyJ107XG4gICAgICAgIHRoaXMubGlicmFyaWVzID0gb3B0aW9ucy5saWJyYXJpZXMgfHwgW107XG4gICAgICAgIHRoaXMuYXBpVXJsID0gb3B0aW9ucy5hcGlVcmwgfHwgJy9hcGkvJztcbiAgICAgICAgdGhpcy5hbGxvd1JlZnJlc2hUb2tlbiA9IG9wdGlvbnMuYWxsb3dSZWZyZXNoVG9rZW4gfHwgdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2dpblVSTCA9IG9wdGlvbnMubG9naW5VUkwgfHwgJy9sb2dpbi8nO1xuICAgICAgICB0aGlzLnJlZnJlc2hMb2dpblVSTCA9IG9wdGlvbnMucmVmcmVzaExvZ2luVVJMIHx8ICcnO1xuICAgICAgICB0aGlzLm5iUmV0cnlPbk5ldHdvcmtFcnJvciA9IG9wdGlvbnMubmJSZXRyeU9uTmV0d29ya0Vycm9yIHx8IDA7XG4gICAgICAgIHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkID0gb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMb2NhbGU7XG4gICAgfVxuICAgIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUxvY2FsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBsYW5ndWFnZXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VMYW5ndWFnZXM7XG4gICAgfVxuICAgIHNldCBsYW5ndWFnZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMudXNlTGFuZ3VhZ2VzID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdExvY2FsZSgpO1xuICAgIH1cblxuICAgIGdldCBjaGFyc2V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUNoYXJzZXQ7XG4gICAgfVxuICAgIHNldCBjaGFyc2V0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VDaGFyc2V0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGF1dGhvcml6YXRpb25UeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlO1xuICAgIH1cbiAgICBzZXQgYXV0aG9yaXphdGlvblR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZUF1dGhvcml6YXRpb25UeXBlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZnJlc2hUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlUmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VSZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlUmVmcmVzaFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmVmcmVzaFRva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VSZWZyZXNoVG9rZW47XG4gICAgfVxuICAgIHNldCByZWZyZXNoVG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZVJlZnJlc2hUb2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VjdXJpdHlQb2xpY3lBY3RpdmF0ZWQgJiYgIXRoaXMudXNlQWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VBY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VBY2Nlc3NUb2tlbjtcbiAgICB9XG4gICAgc2V0IGFjY2Vzc1Rva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXNzVG9rZW4nLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhY2Nlc3NUb2tlbicsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXNlQWNjZXNzVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgQ1NSRlRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRTZWN1cml0eVBvbGljeUFjdGl2YXRlZCAmJiAhdGhpcy51c2VBY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ1NSRlRva2VuJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlQ1NSRlRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnVzZUNTUkZUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ0NTUkZUb2tlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudXNlQ1NSRlRva2VuO1xuICAgIH1cbiAgICBzZXQgQ1NSRlRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlY3VyaXR5UG9saWN5QWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnQ1NSRlRva2VuJywgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VDU1JGVG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRMb2NhbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVzZUxvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2UuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhbmd1YWdlcy5pbmRleE9mKG5hdmlnYXRvci5sYW5ndWFnZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgW2xhbmd1ZSwgY291bnRyeV0gPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobGFuZ3VlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBsYW5ndWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBuYXZpZ2F0b3IubGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobmF2aWdhdG9yLmxhbmd1YWdlc1tpXSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=