UNPKG

fundamental-ngx

Version:

SAP Fundamentals, implemented in Angular

196 lines 15.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core'; import { FormStyle, getLocaleDayNames, getLocaleMonthNames, TranslationWidth } from '@angular/common'; import { Subject } from 'rxjs'; import * as i0 from "@angular/core"; /** * @param {?} locale * @return {?} */ export function CALENDAR_I18N_FACTORY(locale) { return new CalendarI18nDefault(locale); } /** * Abstract class which defines the behaviour calendar internationalization. See calendar examples for usage details. * @abstract */ export class CalendarI18n { constructor() { /** * Stream to call if the values are changed dynamically. Calendar subscribes to this internally. */ this.i18nChange = new Subject(); } } CalendarI18n.decorators = [ { type: Injectable, args: [{ providedIn: 'root', useFactory: CALENDAR_I18N_FACTORY, deps: [LOCALE_ID] },] } ]; /** @nocollapse */ CalendarI18n.ngInjectableDef = i0.defineInjectable({ factory: function CalendarI18n_Factory() { return CALENDAR_I18N_FACTORY(i0.inject(i0.LOCALE_ID)); }, token: CalendarI18n, providedIn: "root" }); if (false) { /** * Stream to call if the values are changed dynamically. Calendar subscribes to this internally. * @type {?} */ CalendarI18n.prototype.i18nChange; /** * Aria label for a specific date. * * @abstract * @param {?} date Native date object to use for the label. * @return {?} */ CalendarI18n.prototype.getDayAriaLabel = function (date) { }; /** * Get all short week day names, such as Mo for Monday. * @abstract * @return {?} */ CalendarI18n.prototype.getAllShortWeekdays = function () { }; /** * Get all short month names, such as Nov for November. * @abstract * @return {?} */ CalendarI18n.prototype.getAllShortMonthNames = function () { }; /** * Get all full month names. * @abstract * @return {?} */ CalendarI18n.prototype.getAllFullMonthNames = function () { }; } /** * Default implementation of the CalendarI18n service. It will get dates from the application locale if it is present. */ export class CalendarI18nDefault extends CalendarI18n { /** * Constructor takes in a locale_id and gets the appropriate data from Angular. * @param {?} locale */ constructor(locale) { super(); this.locale = locale; this.weekdaysFallback = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ]; this.monthsFullFallback = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; this.monthsShortFallback = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; if (locale) { /** @type {?} */ const sundayStartWeekdays = getLocaleDayNames(locale, FormStyle.Standalone, TranslationWidth.Short); this.weekdaysShort = sundayStartWeekdays.map((/** * @param {?} day * @param {?} index * @return {?} */ (day, index) => sundayStartWeekdays[index % 7])); this.monthsShort = getLocaleMonthNames(locale, FormStyle.Standalone, TranslationWidth.Abbreviated); this.monthsFull = getLocaleMonthNames(locale, FormStyle.Standalone, TranslationWidth.Wide); } this.checkForFallback(); } /** * Aria label for a specific date. Default implementation produces the label: {Date} {Month} {Year}. * * @param {?} date Native date object to use for the label. * @return {?} */ getDayAriaLabel(date) { return date.getDate() + ' ' + this.monthsFull[date.getMonth()] + ' ' + date.getFullYear(); } /** * Get all full month names. * @return {?} */ getAllFullMonthNames() { return this.monthsFull; } /** * Get all short month names, such as Nov for November. * @return {?} */ getAllShortMonthNames() { return this.monthsShort; } /** * Get all short week day names, such as Mo for Monday. * @return {?} */ getAllShortWeekdays() { return this.weekdaysShort; } /** * Checks if a fallback is needed. Older versions of Angular may need this. * @private * @return {?} */ checkForFallback() { if (!this.weekdaysShort || this.weekdaysShort.length === 0) { this.weekdaysShort = this.weekdaysFallback; } if (!this.monthsShort || this.monthsShort.length === 0) { this.monthsShort = this.monthsShortFallback; } if (!this.monthsFull || this.monthsFull.length === 0) { this.monthsFull = this.monthsFullFallback; } } } CalendarI18nDefault.decorators = [ { type: Injectable } ]; /** @nocollapse */ CalendarI18nDefault.ctorParameters = () => [ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [LOCALE_ID,] }] } ]; if (false) { /** * @type {?} * @private */ CalendarI18nDefault.prototype.weekdaysShort; /** * @type {?} * @private */ CalendarI18nDefault.prototype.monthsShort; /** * @type {?} * @private */ CalendarI18nDefault.prototype.monthsFull; /** * @type {?} * @private */ CalendarI18nDefault.prototype.weekdaysFallback; /** * @type {?} * @private */ CalendarI18nDefault.prototype.monthsFullFallback; /** * @type {?} * @private */ CalendarI18nDefault.prototype.monthsShortFallback; /** * @type {?} * @private */ CalendarI18nDefault.prototype.locale; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaTE4bi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Z1bmRhbWVudGFsLW5neC8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9pMThuL2NhbGVuZGFyLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUUvQixNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBTTtJQUN4QyxPQUFPLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsQ0FBQzs7Ozs7QUFVRCxNQUFNLE9BQWdCLFlBQVk7SUFMbEM7Ozs7UUFRYSxlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7S0FpQjVEOzs7WUF6QkEsVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixVQUFVLEVBQUUscUJBQXFCO2dCQUNqQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDcEI7Ozs7Ozs7O0lBSUcsa0NBQXlEOzs7Ozs7OztJQU96RCw2REFBNkM7Ozs7OztJQUc3Qyw2REFBeUM7Ozs7OztJQUd6QywrREFBMkM7Ozs7OztJQUczQyw4REFBMEM7Ozs7O0FBTzlDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZOzs7OztJQXFCakQsWUFBbUQsTUFBYztRQUM3RCxLQUFLLEVBQUUsQ0FBQztRQUR1QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZnpELHFCQUFnQixHQUFhO1lBQ2pDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVU7U0FDL0UsQ0FBQztRQUVNLHVCQUFrQixHQUFhO1lBQ25DLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU07WUFDOUQsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7U0FDM0QsQ0FBQztRQUVNLHdCQUFtQixHQUFhO1lBQ3BDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDL0MsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDcEMsQ0FBQztRQUtFLElBQUksTUFBTSxFQUFFOztrQkFDRixtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDbkcsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHOzs7OztZQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlGO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQzs7Ozs7OztJQU9ELGVBQWUsQ0FBQyxJQUFVO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUYsQ0FBQzs7Ozs7SUFHRCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBR0QscUJBQXFCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDOzs7OztJQUdELG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDOzs7Ozs7SUFHTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQzdDO0lBQ0wsQ0FBQzs7O1lBdkVKLFVBQVU7Ozs7eUNBc0JNLFFBQVEsWUFBSSxNQUFNLFNBQUMsU0FBUzs7Ozs7OztJQW5CekMsNENBQWdDOzs7OztJQUNoQywwQ0FBOEI7Ozs7O0lBQzlCLHlDQUE2Qjs7Ozs7SUFFN0IsK0NBRUU7Ozs7O0lBRUYsaURBR0U7Ozs7O0lBRUYsa0RBR0U7Ozs7O0lBR1UscUNBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtU3R5bGUsIGdldExvY2FsZURheU5hbWVzLCBnZXRMb2NhbGVNb250aE5hbWVzLCBUcmFuc2xhdGlvbldpZHRoIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIENBTEVOREFSX0kxOE5fRkFDVE9SWShsb2NhbGUpIHtcbiAgICByZXR1cm4gbmV3IENhbGVuZGFySTE4bkRlZmF1bHQobG9jYWxlKTtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyB3aGljaCBkZWZpbmVzIHRoZSBiZWhhdmlvdXIgY2FsZW5kYXIgaW50ZXJuYXRpb25hbGl6YXRpb24uIFNlZSBjYWxlbmRhciBleGFtcGxlcyBmb3IgdXNhZ2UgZGV0YWlscy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICB1c2VGYWN0b3J5OiBDQUxFTkRBUl9JMThOX0ZBQ1RPUlksXG4gICAgZGVwczogW0xPQ0FMRV9JRF1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FsZW5kYXJJMThuIHtcblxuICAgIC8qKiBTdHJlYW0gdG8gY2FsbCBpZiB0aGUgdmFsdWVzIGFyZSBjaGFuZ2VkIGR5bmFtaWNhbGx5LiBDYWxlbmRhciBzdWJzY3JpYmVzIHRvIHRoaXMgaW50ZXJuYWxseS4gKi9cbiAgICByZWFkb25seSBpMThuQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEFyaWEgbGFiZWwgZm9yIGEgc3BlY2lmaWMgZGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlIE5hdGl2ZSBkYXRlIG9iamVjdCB0byB1c2UgZm9yIHRoZSBsYWJlbC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlBcmlhTGFiZWwoZGF0ZTogRGF0ZSk6IHN0cmluZztcblxuICAgIC8qKiBHZXQgYWxsIHNob3J0IHdlZWsgZGF5IG5hbWVzLCBzdWNoIGFzIE1vIGZvciBNb25kYXkuICovXG4gICAgYWJzdHJhY3QgZ2V0QWxsU2hvcnRXZWVrZGF5cygpOiBzdHJpbmdbXTtcblxuICAgIC8qKiBHZXQgYWxsIHNob3J0IG1vbnRoIG5hbWVzLCBzdWNoIGFzIE5vdiBmb3IgTm92ZW1iZXIuICovXG4gICAgYWJzdHJhY3QgZ2V0QWxsU2hvcnRNb250aE5hbWVzKCk6IHN0cmluZ1tdO1xuXG4gICAgLyoqIEdldCBhbGwgZnVsbCBtb250aCBuYW1lcy4gKi9cbiAgICBhYnN0cmFjdCBnZXRBbGxGdWxsTW9udGhOYW1lcygpOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBDYWxlbmRhckkxOG4gc2VydmljZS4gSXQgd2lsbCBnZXQgZGF0ZXMgZnJvbSB0aGUgYXBwbGljYXRpb24gbG9jYWxlIGlmIGl0IGlzIHByZXNlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckkxOG5EZWZhdWx0IGV4dGVuZHMgQ2FsZW5kYXJJMThuIHtcblxuICAgIHByaXZhdGUgd2Vla2RheXNTaG9ydDogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBtb250aHNTaG9ydDogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBtb250aHNGdWxsOiBzdHJpbmdbXTtcblxuICAgIHByaXZhdGUgd2Vla2RheXNGYWxsYmFjazogc3RyaW5nW10gPSBbXG4gICAgICAgICdTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSdcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSBtb250aHNGdWxsRmFsbGJhY2s6IHN0cmluZ1tdID0gW1xuICAgICAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JyxcbiAgICAgICAgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlcidcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSBtb250aHNTaG9ydEZhbGxiYWNrOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsXG4gICAgICAgICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ1xuICAgIF07XG5cbiAgICAvKiogQ29uc3RydWN0b3IgdGFrZXMgaW4gYSBsb2NhbGVfaWQgYW5kIGdldHMgdGhlIGFwcHJvcHJpYXRlIGRhdGEgZnJvbSBBbmd1bGFyLiAqL1xuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1bmRheVN0YXJ0V2Vla2RheXMgPSBnZXRMb2NhbGVEYXlOYW1lcyhsb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLlNob3J0KTtcbiAgICAgICAgICAgIHRoaXMud2Vla2RheXNTaG9ydCA9IHN1bmRheVN0YXJ0V2Vla2RheXMubWFwKChkYXksIGluZGV4KSA9PiBzdW5kYXlTdGFydFdlZWtkYXlzW2luZGV4ICUgN10pO1xuICAgICAgICAgICAgdGhpcy5tb250aHNTaG9ydCA9IGdldExvY2FsZU1vbnRoTmFtZXMobG9jYWxlLCBGb3JtU3R5bGUuU3RhbmRhbG9uZSwgVHJhbnNsYXRpb25XaWR0aC5BYmJyZXZpYXRlZCk7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc0Z1bGwgPSBnZXRMb2NhbGVNb250aE5hbWVzKGxvY2FsZSwgRm9ybVN0eWxlLlN0YW5kYWxvbmUsIFRyYW5zbGF0aW9uV2lkdGguV2lkZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrRm9yRmFsbGJhY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcmlhIGxhYmVsIGZvciBhIHNwZWNpZmljIGRhdGUuIERlZmF1bHQgaW1wbGVtZW50YXRpb24gcHJvZHVjZXMgdGhlIGxhYmVsOiB7RGF0ZX0ge01vbnRofSB7WWVhcn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZSBOYXRpdmUgZGF0ZSBvYmplY3QgdG8gdXNlIGZvciB0aGUgbGFiZWwuXG4gICAgICovXG4gICAgZ2V0RGF5QXJpYUxhYmVsKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkgKyAnICcgKyB0aGlzLm1vbnRoc0Z1bGxbZGF0ZS5nZXRNb250aCgpXSArICcgJyArIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGFsbCBmdWxsIG1vbnRoIG5hbWVzLiAqL1xuICAgIGdldEFsbEZ1bGxNb250aE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzRnVsbDtcbiAgICB9XG5cbiAgICAvKiogR2V0IGFsbCBzaG9ydCBtb250aCBuYW1lcywgc3VjaCBhcyBOb3YgZm9yIE5vdmVtYmVyLiAqL1xuICAgIGdldEFsbFNob3J0TW9udGhOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoc1Nob3J0O1xuICAgIH1cblxuICAgIC8qKiBHZXQgYWxsIHNob3J0IHdlZWsgZGF5IG5hbWVzLCBzdWNoIGFzIE1vIGZvciBNb25kYXkuICovXG4gICAgZ2V0QWxsU2hvcnRXZWVrZGF5cygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLndlZWtkYXlzU2hvcnQ7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBpZiBhIGZhbGxiYWNrIGlzIG5lZWRlZC4gT2xkZXIgdmVyc2lvbnMgb2YgQW5ndWxhciBtYXkgbmVlZCB0aGlzLiAqL1xuICAgIHByaXZhdGUgY2hlY2tGb3JGYWxsYmFjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndlZWtkYXlzU2hvcnQgfHwgdGhpcy53ZWVrZGF5c1Nob3J0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy53ZWVrZGF5c1Nob3J0ID0gdGhpcy53ZWVrZGF5c0ZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc1Nob3J0IHx8IHRoaXMubW9udGhzU2hvcnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1Nob3J0ID0gdGhpcy5tb250aHNTaG9ydEZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0Z1bGwgfHwgdGhpcy5tb250aHNGdWxsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tb250aHNGdWxsID0gdGhpcy5tb250aHNGdWxsRmFsbGJhY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==