UNPKG

ionic-image-loader-v5

Version:
463 lines 27.3 kB
/** * @fileoverview added by tsickle * Generated from: lib/services/image-loader-config.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; var ImageLoaderConfigService = /** @class */ (function () { function ImageLoaderConfigService() { this.debugMode = false; this.spinnerEnabled = true; this.fallbackAsPlaceholder = false; this.backgroundSize = 'contain'; this.backgroundRepeat = 'no-repeat'; this.display = 'block'; this.width = '100%'; this.height = '100%'; this.useImg = false; this.concurrency = 5; this.maxCacheSize = -1; this.maxCacheAge = -1; this.imageReturnType = 'uri'; // Must be default 'true' for the new WebView to show images this.fileNameCachedWithExtension = true; this.fallbackFileNameCachedExtension = '.jpg'; this.cacheDirectoryType = 'cache'; this._cacheDirectoryName = 'image-loader-cache'; } Object.defineProperty(ImageLoaderConfigService.prototype, "cacheDirectoryName", { get: /** * @return {?} */ function () { return this._cacheDirectoryName; }, set: /** * @param {?} name * @return {?} */ function (name) { name.replace(/\W/g, ''); this._cacheDirectoryName = name; }, enumerable: true, configurable: true }); /** * Enables debug mode to receive console logs, errors, warnings */ /** * Enables debug mode to receive console logs, errors, warnings * @return {?} */ ImageLoaderConfigService.prototype.enableDebugMode = /** * Enables debug mode to receive console logs, errors, warnings * @return {?} */ function () { this.debugMode = true; }; /** * Enable/Disable the spinner by default. Defaults to true. * @param enable set to true to enable */ /** * Enable/Disable the spinner by default. Defaults to true. * @param {?} enable set to true to enable * @return {?} */ ImageLoaderConfigService.prototype.enableSpinner = /** * Enable/Disable the spinner by default. Defaults to true. * @param {?} enable set to true to enable * @return {?} */ function (enable) { this.spinnerEnabled = enable; }; /** * Enable/Disable the fallback image as placeholder instead of the spinner. Defaults to false. * @param enable set to true to enable */ /** * Enable/Disable the fallback image as placeholder instead of the spinner. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ ImageLoaderConfigService.prototype.enableFallbackAsPlaceholder = /** * Enable/Disable the fallback image as placeholder instead of the spinner. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ function (enable) { this.fallbackAsPlaceholder = enable; }; /** * Sets the cache directory name. Defaults to 'image-loader-cache' * @param name name of directory */ /** * Sets the cache directory name. Defaults to 'image-loader-cache' * @param {?} name name of directory * @return {?} */ ImageLoaderConfigService.prototype.setCacheDirectoryName = /** * Sets the cache directory name. Defaults to 'image-loader-cache' * @param {?} name name of directory * @return {?} */ function (name) { this.cacheDirectoryName = name; }; /** * Set default height for images that are not using <img> tag * @param height height */ /** * Set default height for images that are not using <img> tag * @param {?} height height * @return {?} */ ImageLoaderConfigService.prototype.setHeight = /** * Set default height for images that are not using <img> tag * @param {?} height height * @return {?} */ function (height) { this.height = height; }; /** * Set default width for images that are not using <img> tag * @param width Width */ /** * Set default width for images that are not using <img> tag * @param {?} width Width * @return {?} */ ImageLoaderConfigService.prototype.setWidth = /** * Set default width for images that are not using <img> tag * @param {?} width Width * @return {?} */ function (width) { this.width = width; }; /** * Enable display mode for images that are not using <img> tag * @param display Display mode */ /** * Enable display mode for images that are not using <img> tag * @param {?} display Display mode * @return {?} */ ImageLoaderConfigService.prototype.setDisplay = /** * Enable display mode for images that are not using <img> tag * @param {?} display Display mode * @return {?} */ function (display) { this.display = display; }; /** * Use <img> tag by default * @param use set to true to use <img> tag by default */ /** * Use <img> tag by default * @param {?} use set to true to use <img> tag by default * @return {?} */ ImageLoaderConfigService.prototype.useImageTag = /** * Use <img> tag by default * @param {?} use set to true to use <img> tag by default * @return {?} */ function (use) { this.useImg = use; }; /** * Set default background size for images that are not using <img> tag * @param backgroundSize Background size */ /** * Set default background size for images that are not using <img> tag * @param {?} backgroundSize Background size * @return {?} */ ImageLoaderConfigService.prototype.setBackgroundSize = /** * Set default background size for images that are not using <img> tag * @param {?} backgroundSize Background size * @return {?} */ function (backgroundSize) { this.backgroundSize = backgroundSize; }; /** * Set background repeat for images that are not using <img> tag * @param backgroundRepeat Background repeat */ /** * Set background repeat for images that are not using <img> tag * @param {?} backgroundRepeat Background repeat * @return {?} */ ImageLoaderConfigService.prototype.setBackgroundRepeat = /** * Set background repeat for images that are not using <img> tag * @param {?} backgroundRepeat Background repeat * @return {?} */ function (backgroundRepeat) { this.backgroundRepeat = backgroundRepeat; }; /** * Set fallback URL to use when image src is undefined or did not resolve. * This image will not be cached. This should ideally be a locally saved image. * @param fallbackUrl The remote or local URL of the image */ /** * Set fallback URL to use when image src is undefined or did not resolve. * This image will not be cached. This should ideally be a locally saved image. * @param {?} fallbackUrl The remote or local URL of the image * @return {?} */ ImageLoaderConfigService.prototype.setFallbackUrl = /** * Set fallback URL to use when image src is undefined or did not resolve. * This image will not be cached. This should ideally be a locally saved image. * @param {?} fallbackUrl The remote or local URL of the image * @return {?} */ function (fallbackUrl) { this.fallbackUrl = fallbackUrl; }; /** * Set the maximum number of allowed connections at the same time. * @param concurrency */ /** * Set the maximum number of allowed connections at the same time. * @param {?} concurrency * @return {?} */ ImageLoaderConfigService.prototype.setConcurrency = /** * Set the maximum number of allowed connections at the same time. * @param {?} concurrency * @return {?} */ function (concurrency) { this.concurrency = concurrency; }; /** * Sets the maximum allowed cache size * @param cacheSize Cache size in bytes */ /** * Sets the maximum allowed cache size * @param {?} cacheSize Cache size in bytes * @return {?} */ ImageLoaderConfigService.prototype.setMaximumCacheSize = /** * Sets the maximum allowed cache size * @param {?} cacheSize Cache size in bytes * @return {?} */ function (cacheSize) { this.maxCacheSize = cacheSize; }; /** * Sets the maximum allowed cache age * @param cacheAge Maximum cache age in milliseconds */ /** * Sets the maximum allowed cache age * @param {?} cacheAge Maximum cache age in milliseconds * @return {?} */ ImageLoaderConfigService.prototype.setMaximumCacheAge = /** * Sets the maximum allowed cache age * @param {?} cacheAge Maximum cache age in milliseconds * @return {?} */ function (cacheAge) { this.maxCacheAge = cacheAge; }; /** * Set the return type of cached images * @param imageReturnType The return type; either 'base64' or 'uri' */ /** * Set the return type of cached images * @param {?} imageReturnType The return type; either 'base64' or 'uri' * @return {?} */ ImageLoaderConfigService.prototype.setImageReturnType = /** * Set the return type of cached images * @param {?} imageReturnType The return type; either 'base64' or 'uri' * @return {?} */ function (imageReturnType) { this.imageReturnType = imageReturnType; }; /** * Set the default spinner name * @param name */ /** * Set the default spinner name * @param {?} name * @return {?} */ ImageLoaderConfigService.prototype.setSpinnerName = /** * Set the default spinner name * @param {?} name * @return {?} */ function (name) { this.spinnerName = name; }; /** * Set the default spinner color * @param color */ /** * Set the default spinner color * @param {?} color * @return {?} */ ImageLoaderConfigService.prototype.setSpinnerColor = /** * Set the default spinner color * @param {?} color * @return {?} */ function (color) { this.spinnerColor = color; }; /** * Set headers options for the HttpClient transfers. * @param headers */ /** * Set headers options for the HttpClient transfers. * @param {?} headers * @return {?} */ ImageLoaderConfigService.prototype.setHttpHeaders = /** * Set headers options for the HttpClient transfers. * @param {?} headers * @return {?} */ function (headers) { this.httpHeaders = headers; }; /** * Set options for the FileTransfer plugin * @param options * @deprecated FileTransfer plugin removed. */ /** * Set options for the FileTransfer plugin * @deprecated FileTransfer plugin removed. * @param {?} options * @return {?} */ ImageLoaderConfigService.prototype.setFileTransferOptions = /** * Set options for the FileTransfer plugin * @deprecated FileTransfer plugin removed. * @param {?} options * @return {?} */ function (options) { // do nothing, plugin deprecated. }; /** * Enable/Disable the save filename of cached images with extension. Defaults to false. * @param enable set to true to enable */ /** * Enable/Disable the save filename of cached images with extension. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ ImageLoaderConfigService.prototype.setFileNameCachedWithExtension = /** * Enable/Disable the save filename of cached images with extension. Defaults to false. * @param {?} enable set to true to enable * @return {?} */ function (enable) { this.fileNameCachedWithExtension = enable; }; /** * Set fallback extension filename of cached images. Defaults to '.jpg'. * @param extension fallback extension (e.x .jpg) */ /** * Set fallback extension filename of cached images. Defaults to '.jpg'. * @param {?} extension fallback extension (e.x .jpg) * @return {?} */ ImageLoaderConfigService.prototype.setFallbackFileNameCachedExtension = /** * Set fallback extension filename of cached images. Defaults to '.jpg'. * @param {?} extension fallback extension (e.x .jpg) * @return {?} */ function (extension) { this.fallbackFileNameCachedExtension = extension; }; ImageLoaderConfigService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ ImageLoaderConfigService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ImageLoaderConfigService_Factory() { return new ImageLoaderConfigService(); }, token: ImageLoaderConfigService, providedIn: "root" }); return ImageLoaderConfigService; }()); export { ImageLoaderConfigService }; if (false) { /** @type {?} */ ImageLoaderConfigService.prototype.debugMode; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerEnabled; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackAsPlaceholder; /** @type {?} */ ImageLoaderConfigService.prototype.backgroundSize; /** @type {?} */ ImageLoaderConfigService.prototype.backgroundRepeat; /** @type {?} */ ImageLoaderConfigService.prototype.display; /** @type {?} */ ImageLoaderConfigService.prototype.width; /** @type {?} */ ImageLoaderConfigService.prototype.height; /** @type {?} */ ImageLoaderConfigService.prototype.useImg; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackUrl; /** @type {?} */ ImageLoaderConfigService.prototype.concurrency; /** @type {?} */ ImageLoaderConfigService.prototype.maxCacheSize; /** @type {?} */ ImageLoaderConfigService.prototype.maxCacheAge; /** @type {?} */ ImageLoaderConfigService.prototype.imageReturnType; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerName; /** @type {?} */ ImageLoaderConfigService.prototype.spinnerColor; /** @type {?} */ ImageLoaderConfigService.prototype.httpHeaders; /** @type {?} */ ImageLoaderConfigService.prototype.fileNameCachedWithExtension; /** @type {?} */ ImageLoaderConfigService.prototype.fallbackFileNameCachedExtension; /** @type {?} */ ImageLoaderConfigService.prototype.cacheDirectoryType; /** * @type {?} * @private */ ImageLoaderConfigService.prototype._cacheDirectoryName; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtbG9hZGVyLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW9uaWMtaW1hZ2UtbG9hZGVyLXY1LyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2ltYWdlLWxvYWRlci1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBRXpDO0lBQUE7UUFJSSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXRCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUUzQixxQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFFL0IsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUVsQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBRWYsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUVoQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBSWYsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEIsaUJBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsQixnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpCLG9CQUFlLEdBQXFCLEtBQUssQ0FBQzs7UUFTMUMsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDO1FBRW5DLG9DQUErQixHQUFHLE1BQU0sQ0FBQztRQUV6Qyx1QkFBa0IsR0FBa0MsT0FBTyxDQUFDO1FBRXBELHdCQUFtQixHQUFHLG9CQUFvQixDQUFDO0tBdUx0RDtJQXBMRyxzQkFBSSx3REFBa0I7Ozs7UUFBdEI7WUFDSSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNwQyxDQUFDOzs7OztRQUVELFVBQXVCLElBQUk7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNwQyxD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ckMsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsaUVBQThCOzs7OztJQUE5QixVQUErQixNQUFlO1FBQzFDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gscUVBQWtDOzs7OztJQUFsQyxVQUFtQyxTQUFpQjtRQUNoRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsU0FBUyxDQUFDO0lBQ3JELENBQUM7O2dCQW5PSixVQUFVLFNBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzs7bUNBTEQ7Q0F1T0MsQUFwT0QsSUFvT0M7U0FqT1ksd0JBQXdCOzs7SUFDakMsNkNBQWtCOztJQUVsQixrREFBc0I7O0lBRXRCLHlEQUE4Qjs7SUFFOUIsa0RBQTJCOztJQUUzQixvREFBK0I7O0lBRS9CLDJDQUFrQjs7SUFFbEIseUNBQWU7O0lBRWYsMENBQWdCOztJQUVoQiwwQ0FBZTs7SUFFZiwrQ0FBWTs7SUFFWiwrQ0FBZ0I7O0lBRWhCLGdEQUFrQjs7SUFFbEIsK0NBQWlCOztJQUVqQixtREFBMEM7O0lBRTFDLCtDQUFZOztJQUVaLGdEQUFhOztJQUViLCtDQUF5Qjs7SUFHekIsK0RBQW1DOztJQUVuQyxtRUFBeUM7O0lBRXpDLHNEQUE0RDs7Ozs7SUFFNUQsdURBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VMb2FkZXJDb25maWdTZXJ2aWNlIHtcbiAgICBkZWJ1Z01vZGUgPSBmYWxzZTtcblxuICAgIHNwaW5uZXJFbmFibGVkID0gdHJ1ZTtcblxuICAgIGZhbGxiYWNrQXNQbGFjZWhvbGRlciA9IGZhbHNlO1xuXG4gICAgYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XG5cbiAgICBiYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG5cbiAgICBkaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgIHdpZHRoID0gJzEwMCUnO1xuXG4gICAgaGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgdXNlSW1nID0gZmFsc2U7XG5cbiAgICBmYWxsYmFja1VybDtcblxuICAgIGNvbmN1cnJlbmN5ID0gNTtcblxuICAgIG1heENhY2hlU2l6ZSA9IC0xO1xuXG4gICAgbWF4Q2FjaGVBZ2UgPSAtMTtcblxuICAgIGltYWdlUmV0dXJuVHlwZTogJ2Jhc2U2NCcgfCAndXJpJyA9ICd1cmknO1xuXG4gICAgc3Bpbm5lck5hbWU7XG5cbiAgICBzcGlubmVyQ29sb3I7XG5cbiAgICBodHRwSGVhZGVyczogSHR0cEhlYWRlcnM7XG5cbiAgICAvLyBNdXN0IGJlIGRlZmF1bHQgJ3RydWUnIGZvciB0aGUgbmV3IFdlYlZpZXcgdG8gc2hvdyBpbWFnZXNcbiAgICBmaWxlTmFtZUNhY2hlZFdpdGhFeHRlbnNpb24gPSB0cnVlO1xuXG4gICAgZmFsbGJhY2tGaWxlTmFtZUNhY2hlZEV4dGVuc2lvbiA9ICcuanBnJztcblxuICAgIGNhY2hlRGlyZWN0b3J5VHlwZTogJ2NhY2hlJyB8ICdkYXRhJyB8ICdleHRlcm5hbCcgPSAnY2FjaGUnO1xuXG4gICAgcHJpdmF0ZSBfY2FjaGVEaXJlY3RvcnlOYW1lID0gJ2ltYWdlLWxvYWRlci1jYWNoZSc7XG5cblxuICAgIGdldCBjYWNoZURpcmVjdG9yeU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZURpcmVjdG9yeU5hbWU7XG4gICAgfVxuXG4gICAgc2V0IGNhY2hlRGlyZWN0b3J5TmFtZShuYW1lKSB7XG4gICAgICAgIG5hbWUucmVwbGFjZSgvXFxXL2csICcnKTtcbiAgICAgICAgdGhpcy5fY2FjaGVEaXJlY3RvcnlOYW1lID0gbmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIGRlYnVnIG1vZGUgdG8gcmVjZWl2ZSBjb25zb2xlIGxvZ3MsIGVycm9ycywgd2FybmluZ3NcbiAgICAgKi9cbiAgICBlbmFibGVEZWJ1Z01vZGUoKSB7XG4gICAgICAgIHRoaXMuZGVidWdNb2RlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgc3Bpbm5lciBieSBkZWZhdWx0LiBEZWZhdWx0cyB0byB0cnVlLlxuICAgICAqIEBwYXJhbSBlbmFibGUgc2V0IHRvIHRydWUgdG8gZW5hYmxlXG4gICAgICovXG4gICAgZW5hYmxlU3Bpbm5lcihlbmFibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zcGlubmVyRW5hYmxlZCA9IGVuYWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgZmFsbGJhY2sgaW1hZ2UgYXMgcGxhY2Vob2xkZXIgaW5zdGVhZCBvZiB0aGUgc3Bpbm5lci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICogQHBhcmFtIGVuYWJsZSBzZXQgdG8gdHJ1ZSB0byBlbmFibGVcbiAgICAgKi9cbiAgICBlbmFibGVGYWxsYmFja0FzUGxhY2Vob2xkZXIoZW5hYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZmFsbGJhY2tBc1BsYWNlaG9sZGVyID0gZW5hYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNhY2hlIGRpcmVjdG9yeSBuYW1lLiBEZWZhdWx0cyB0byAnaW1hZ2UtbG9hZGVyLWNhY2hlJ1xuICAgICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgZGlyZWN0b3J5XG4gICAgICovXG4gICAgc2V0Q2FjaGVEaXJlY3RvcnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNhY2hlRGlyZWN0b3J5TmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGRlZmF1bHQgaGVpZ2h0IGZvciBpbWFnZXMgdGhhdCBhcmUgbm90IHVzaW5nIDxpbWc+IHRhZ1xuICAgICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0XG4gICAgICovXG4gICAgc2V0SGVpZ2h0KGhlaWdodDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBkZWZhdWx0IHdpZHRoIGZvciBpbWFnZXMgdGhhdCBhcmUgbm90IHVzaW5nIDxpbWc+IHRhZ1xuICAgICAqIEBwYXJhbSB3aWR0aCBXaWR0aFxuICAgICAqL1xuICAgIHNldFdpZHRoKHdpZHRoOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBkaXNwbGF5IG1vZGUgZm9yIGltYWdlcyB0aGF0IGFyZSBub3QgdXNpbmcgPGltZz4gdGFnXG4gICAgICogQHBhcmFtIGRpc3BsYXkgRGlzcGxheSBtb2RlXG4gICAgICovXG4gICAgc2V0RGlzcGxheShkaXNwbGF5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZGlzcGxheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2UgPGltZz4gdGFnIGJ5IGRlZmF1bHRcbiAgICAgKiBAcGFyYW0gdXNlIHNldCB0byB0cnVlIHRvIHVzZSA8aW1nPiB0YWcgYnkgZGVmYXVsdFxuICAgICAqL1xuICAgIHVzZUltYWdlVGFnKHVzZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnVzZUltZyA9IHVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgZGVmYXVsdCBiYWNrZ3JvdW5kIHNpemUgZm9yIGltYWdlcyB0aGF0IGFyZSBub3QgdXNpbmcgPGltZz4gdGFnXG4gICAgICogQHBhcmFtIGJhY2tncm91bmRTaXplIEJhY2tncm91bmQgc2l6ZVxuICAgICAqL1xuICAgIHNldEJhY2tncm91bmRTaXplKGJhY2tncm91bmRTaXplOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBiYWNrZ3JvdW5kIHJlcGVhdCBmb3IgaW1hZ2VzIHRoYXQgYXJlIG5vdCB1c2luZyA8aW1nPiB0YWdcbiAgICAgKiBAcGFyYW0gYmFja2dyb3VuZFJlcGVhdCBCYWNrZ3JvdW5kIHJlcGVhdFxuICAgICAqL1xuICAgIHNldEJhY2tncm91bmRSZXBlYXQoYmFja2dyb3VuZFJlcGVhdDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZFJlcGVhdCA9IGJhY2tncm91bmRSZXBlYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZhbGxiYWNrIFVSTCB0byB1c2Ugd2hlbiBpbWFnZSBzcmMgaXMgdW5kZWZpbmVkIG9yIGRpZCBub3QgcmVzb2x2ZS5cbiAgICAgKiBUaGlzIGltYWdlIHdpbGwgbm90IGJlIGNhY2hlZC4gVGhpcyBzaG91bGQgaWRlYWxseSBiZSBhIGxvY2FsbHkgc2F2ZWQgaW1hZ2UuXG4gICAgICogQHBhcmFtIGZhbGxiYWNrVXJsIFRoZSByZW1vdGUgb3IgbG9jYWwgVVJMIG9mIHRoZSBpbWFnZVxuICAgICAqL1xuICAgIHNldEZhbGxiYWNrVXJsKGZhbGxiYWNrVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5mYWxsYmFja1VybCA9IGZhbGxiYWNrVXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjb25uZWN0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAqIEBwYXJhbSBjb25jdXJyZW5jeVxuICAgICAqL1xuICAgIHNldENvbmN1cnJlbmN5KGNvbmN1cnJlbmN5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBjYWNoZSBzaXplXG4gICAgICogQHBhcmFtIGNhY2hlU2l6ZSBDYWNoZSBzaXplIGluIGJ5dGVzXG4gICAgICovXG4gICAgc2V0TWF4aW11bUNhY2hlU2l6ZShjYWNoZVNpemU6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1heENhY2hlU2l6ZSA9IGNhY2hlU2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgY2FjaGUgYWdlXG4gICAgICogQHBhcmFtIGNhY2hlQWdlIE1heGltdW0gY2FjaGUgYWdlIGluIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHNldE1heGltdW1DYWNoZUFnZShjYWNoZUFnZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWF4Q2FjaGVBZ2UgPSBjYWNoZUFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHJldHVybiB0eXBlIG9mIGNhY2hlZCBpbWFnZXNcbiAgICAgKiBAcGFyYW0gaW1hZ2VSZXR1cm5UeXBlIFRoZSByZXR1cm4gdHlwZTsgZWl0aGVyICdiYXNlNjQnIG9yICd1cmknXG4gICAgICovXG4gICAgc2V0SW1hZ2VSZXR1cm5UeXBlKGltYWdlUmV0dXJuVHlwZTogJ2Jhc2U2NCcgfCAndXJpJykge1xuICAgICAgICB0aGlzLmltYWdlUmV0dXJuVHlwZSA9IGltYWdlUmV0dXJuVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgc3Bpbm5lciBuYW1lXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKi9cbiAgICBzZXRTcGlubmVyTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zcGlubmVyTmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBkZWZhdWx0IHNwaW5uZXIgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3JcbiAgICAgKi9cbiAgICBzZXRTcGlubmVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNwaW5uZXJDb2xvciA9IGNvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBoZWFkZXJzIG9wdGlvbnMgZm9yIHRoZSBIdHRwQ2xpZW50IHRyYW5zZmVycy5cbiAgICAgKiBAcGFyYW0gaGVhZGVyc1xuICAgICAqL1xuICAgIHNldEh0dHBIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaHR0cEhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBvcHRpb25zIGZvciB0aGUgRmlsZVRyYW5zZmVyIHBsdWdpblxuICAgICAqIEBwYXJhbSBvcHRpb25zXG4gICAgICogQGRlcHJlY2F0ZWQgRmlsZVRyYW5zZmVyIHBsdWdpbiByZW1vdmVkLlxuICAgICAqL1xuICAgIHNldEZpbGVUcmFuc2Zlck9wdGlvbnMob3B0aW9uczoge1xuICAgICAgICB0cnVzdEFsbEhvc3RzOiBib29sZWFuO1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nLCBwbHVnaW4gZGVwcmVjYXRlZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUvRGlzYWJsZSB0aGUgc2F2ZSBmaWxlbmFtZSBvZiBjYWNoZWQgaW1hZ2VzIHdpdGggZXh0ZW5zaW9uLiAgRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICogQHBhcmFtIGVuYWJsZSBzZXQgdG8gdHJ1ZSB0byBlbmFibGVcbiAgICAgKi9cbiAgICBzZXRGaWxlTmFtZUNhY2hlZFdpdGhFeHRlbnNpb24oZW5hYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZmlsZU5hbWVDYWNoZWRXaXRoRXh0ZW5zaW9uID0gZW5hYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBmYWxsYmFjayBleHRlbnNpb24gZmlsZW5hbWUgb2YgY2FjaGVkIGltYWdlcy4gIERlZmF1bHRzIHRvICcuanBnJy5cbiAgICAgKiBAcGFyYW0gZXh0ZW5zaW9uIGZhbGxiYWNrIGV4dGVuc2lvbiAoZS54IC5qcGcpXG4gICAgICovXG4gICAgc2V0RmFsbGJhY2tGaWxlTmFtZUNhY2hlZEV4dGVuc2lvbihleHRlbnNpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLmZhbGxiYWNrRmlsZU5hbWVDYWNoZWRFeHRlbnNpb24gPSBleHRlbnNpb247XG4gICAgfVxufVxuIl19