UNPKG

angular-material-datatransfer-lib

Version:

A HTML5 datatransfer UI for handling upload and download of multiple simultaneous files.

294 lines 22.1 kB
/** * @fileoverview added by tsickle * Generated from: lib/models/app-config.model.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export class CoreAppConfig { constructor() { this.showUploadDropzone = true; this.uploadBrowseElementId = undefined; this.uploadDropElementId = undefined; this.paginationRppOptions = [5, 10, 25]; this.simultaneousDownloads = 2; this.downloadMethod = 'GET'; this.downloadHeaders = {}; this.downloadWithCredentials = false; this.downloadXhrTimeout = 0; this.preprocessHashEnabled = false; this.preprocessHashChecked = true; this.preprocessHashTarget = 'https://httpbin.org'; this.preprocessHashMethod = 'GET'; this.preprocessHashParameterName = 'hash'; this.preprocessHashFileNameParameterName = 'filename'; this.preprocessHashFunctionName = 'sha1'; this.preprocessHashEncodingName = 'hex'; this.preprocessHashInputEncodingName = 'latin1'; this.preprocessHashTooltipContent = 'The preprocess option checks if the file is already on the system before uploading.'; this.parseMessageCallback = (/** * @param {?} message * @return {?} */ function (message) { return message; }); this.getTarget = (/** * @param {?} request * @param {?} params * @return {?} */ function (request, params) { /** @type {?} */ let target; if (request === 'preprocessHash' && this.preprocessHashChecked) { target = this.preprocessHashTarget; } if (typeof target === 'function') { return target(params); } if (target) { /** @type {?} */ const separator = target.indexOf('?') < 0 ? '?' : '&'; /** @type {?} */ const joinedParams = params.join('&'); return target + separator + joinedParams; } else { return; } }); } } if (false) { /** @type {?} */ CoreAppConfig.prototype.showUploadDropzone; /** @type {?} */ CoreAppConfig.prototype.uploadBrowseElementId; /** @type {?} */ CoreAppConfig.prototype.uploadDropElementId; /** @type {?} */ CoreAppConfig.prototype.paginationRppOptions; /** @type {?} */ CoreAppConfig.prototype.simultaneousDownloads; /** @type {?} */ CoreAppConfig.prototype.downloadMethod; /** @type {?} */ CoreAppConfig.prototype.downloadHeaders; /** @type {?} */ CoreAppConfig.prototype.downloadWithCredentials; /** @type {?} */ CoreAppConfig.prototype.downloadXhrTimeout; /** @type {?} */ CoreAppConfig.prototype.preprocessHashEnabled; /** @type {?} */ CoreAppConfig.prototype.preprocessHashChecked; /** @type {?} */ CoreAppConfig.prototype.preprocessHashTarget; /** @type {?} */ CoreAppConfig.prototype.preprocessHashMethod; /** @type {?} */ CoreAppConfig.prototype.preprocessHashParameterName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashFileNameParameterName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashFunctionName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashEncodingName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashInputEncodingName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashTooltipContent; /** @type {?} */ CoreAppConfig.prototype.parseMessageCallback; /** @type {?} */ CoreAppConfig.prototype.getTarget; } export class ResumableJsAppConfig { constructor() { this.chunkSize = 1 * 1024 * 1024; this.forceChunkSize = false; this.simultaneousUploads = 3; this.fileParameterName = 'file'; this.chunkNumberParameterName = 'resumableChunkNumber'; this.chunkSizeParameterName = 'resumableChunkSize'; this.currentChunkSizeParameterName = 'resumableCurrentChunkSize'; this.totalSizeParameterName = 'resumableTotalSize'; this.typeParameterName = 'resumableType'; this.identifierParameterName = 'resumableIdentifier'; this.fileNameParameterName = 'resumableFilename'; this.relativePathParameterName = 'resumableRelativePath'; this.totalChunksParameterName = 'resumableTotalChunks'; this.throttleProgressCallbacks = 0.5; this.query = {}; this.headers = {}; this.preprocess = null; this.preprocessFile = null; this.method = 'multipart'; this.uploadMethod = 'POST'; this.testMethod = 'GET'; this.target = 'https://httpbin.org'; this.testTarget = null; this.parameterNamespace = ''; this.testChunks = true; this.generateUniqueIdentifier = null; this.getTarget = null; this.maxChunkRetries = 100; this.chunkRetryInterval = undefined; this.permanentErrors = [400, 404, 405, 415, 501]; this.maxFiles = undefined; this.withCredentials = false; this.xhrTimeout = 0; this.clearInput = true; this.chunkFormat = 'blob'; this.minFileSize = 1; this.maxFileSize = undefined; this.fileType = []; this.maxFilesErrorCallback = (/** * @param {?} files * @param {?} errorCount * @return {?} */ function (files, errorCount) { alert('Please upload no more than ' + this.maxFiles + ' file' + (this.maxFiles === 1 ? '' : 's') + ' at a time.'); }); this.minFileSizeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' is too small; please upload files larger than ' + this.minFileSize + '.'); }); this.maxFileSizeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' is too large; please upload files less than ' + this.maxFileSize + '.'); }); this.fileTypeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' has type not allowed; please upload files of type ' + this.fileType + '.'); }); } } if (false) { /** @type {?} */ ResumableJsAppConfig.prototype.chunkSize; /** @type {?} */ ResumableJsAppConfig.prototype.forceChunkSize; /** @type {?} */ ResumableJsAppConfig.prototype.simultaneousUploads; /** @type {?} */ ResumableJsAppConfig.prototype.fileParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.chunkNumberParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.chunkSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.currentChunkSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.totalSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.typeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.identifierParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.fileNameParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.relativePathParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.totalChunksParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.throttleProgressCallbacks; /** @type {?} */ ResumableJsAppConfig.prototype.query; /** @type {?} */ ResumableJsAppConfig.prototype.headers; /** @type {?} */ ResumableJsAppConfig.prototype.preprocess; /** @type {?} */ ResumableJsAppConfig.prototype.preprocessFile; /** @type {?} */ ResumableJsAppConfig.prototype.method; /** @type {?} */ ResumableJsAppConfig.prototype.uploadMethod; /** @type {?} */ ResumableJsAppConfig.prototype.testMethod; /** @type {?} */ ResumableJsAppConfig.prototype.prioritizeFirstAndLastChunk; /** @type {?} */ ResumableJsAppConfig.prototype.target; /** @type {?} */ ResumableJsAppConfig.prototype.testTarget; /** @type {?} */ ResumableJsAppConfig.prototype.parameterNamespace; /** @type {?} */ ResumableJsAppConfig.prototype.testChunks; /** @type {?} */ ResumableJsAppConfig.prototype.generateUniqueIdentifier; /** @type {?} */ ResumableJsAppConfig.prototype.getTarget; /** @type {?} */ ResumableJsAppConfig.prototype.maxChunkRetries; /** @type {?} */ ResumableJsAppConfig.prototype.chunkRetryInterval; /** @type {?} */ ResumableJsAppConfig.prototype.permanentErrors; /** @type {?} */ ResumableJsAppConfig.prototype.maxFiles; /** @type {?} */ ResumableJsAppConfig.prototype.withCredentials; /** @type {?} */ ResumableJsAppConfig.prototype.xhrTimeout; /** @type {?} */ ResumableJsAppConfig.prototype.clearInput; /** @type {?} */ ResumableJsAppConfig.prototype.chunkFormat; /** @type {?} */ ResumableJsAppConfig.prototype.minFileSize; /** @type {?} */ ResumableJsAppConfig.prototype.maxFileSize; /** @type {?} */ ResumableJsAppConfig.prototype.fileType; /** @type {?} */ ResumableJsAppConfig.prototype.maxFilesErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.minFileSizeErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.maxFileSizeErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.fileTypeErrorCallback; } /** * @record */ export function IAppConfig() { } if (false) { /** @type {?} */ IAppConfig.prototype.production; /** @type {?} */ IAppConfig.prototype.core; /** @type {?} */ IAppConfig.prototype.resumablejs; } export class AppConfig { constructor() { this.production = true; this.core = new CoreAppConfig(); this.resumablejs = new ResumableJsAppConfig(); } } if (false) { /** @type {?} */ AppConfig.prototype.production; /** @type {?} */ AppConfig.prototype.core; /** @type {?} */ AppConfig.prototype.resumablejs; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbWF0ZXJpYWwtZGF0YXRyYW5zZmVyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvYXBwLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0ksdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDBCQUFxQixHQUFHLFNBQVMsQ0FBQztRQUNsQyx3QkFBbUIsR0FBRyxTQUFTLENBQUM7UUFDaEMseUJBQW9CLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixvQkFBZSxHQUFRLEVBQUUsQ0FBQztRQUMxQiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDaEMsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDN0IseUJBQW9CLEdBQUcscUJBQXFCLENBQUM7UUFDN0MseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGdDQUEyQixHQUFHLE1BQU0sQ0FBQztRQUNyQyx3Q0FBbUMsR0FBRyxVQUFVLENBQUM7UUFDakQsK0JBQTBCLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLCtCQUEwQixHQUFHLEtBQUssQ0FBQztRQUNuQyxvQ0FBK0IsR0FBRyxRQUFRLENBQUM7UUFDM0MsaUNBQTRCLEdBQUcscUZBQXFGLENBQUM7UUFDckgseUJBQW9COzs7O1FBQUcsVUFBUyxPQUFPO1lBQ25DLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUMsRUFBQztRQUNGLGNBQVM7Ozs7O1FBQUcsVUFBUyxPQUFPLEVBQUUsTUFBTTs7Z0JBQzVCLE1BQU07WUFFVixJQUFJLE9BQU8sS0FBSyxn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O0lBQ2hELHFEQUE0Qzs7SUFDNUMseURBQW9EOztJQUNwRCx3REFBa0Q7O0lBQ2xELHlEQUFnQzs7SUFDaEMscUNBQVc7O0lBQ1gsdUNBQWE7O0lBQ2IsMENBQWtCOztJQUNsQiw4Q0FBc0I7O0lBQ3RCLHNDQUFxQjs7SUFDckIsNENBQXNCOztJQUN0QiwwQ0FBbUI7O0lBQ25CLDJEQUFtQzs7SUFDbkMsc0NBQStCOztJQUMvQiwwQ0FBa0I7O0lBQ2xCLGtEQUF3Qjs7SUFDeEIsMENBQWtCOztJQUNsQix3REFBZ0M7O0lBQ2hDLHlDQUFpQjs7SUFDakIsK0NBQXNCOztJQUN0QixrREFBK0I7O0lBQy9CLCtDQUE0Qzs7SUFDNUMsd0NBQXFCOztJQUNyQiwrQ0FBd0I7O0lBQ3hCLDBDQUFlOztJQUNmLDBDQUFrQjs7SUFDbEIsMkNBQXFCOztJQUNyQiwyQ0FBZ0I7O0lBQ2hCLDJDQUF3Qjs7SUFDeEIsd0NBQWM7O0lBQ2QscURBRUU7O0lBQ0Ysd0RBRUU7O0lBQ0Ysd0RBRUU7O0lBQ0YscURBRUU7Ozs7O0FBR04sZ0NBSUM7OztJQUhHLGdDQUFvQjs7SUFDcEIsMEJBQW9COztJQUNwQixpQ0FBa0M7O0FBR3RDLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBQ0ksZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixTQUFJLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQUE7OztJQUhHLCtCQUFrQjs7SUFDbEIseUJBQTJCOztJQUMzQixnQ0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29yZUFwcENvbmZpZyB7XHJcbiAgICBzaG93VXBsb2FkRHJvcHpvbmUgPSB0cnVlO1xyXG4gICAgdXBsb2FkQnJvd3NlRWxlbWVudElkID0gdW5kZWZpbmVkO1xyXG4gICAgdXBsb2FkRHJvcEVsZW1lbnRJZCA9IHVuZGVmaW5lZDtcclxuICAgIHBhZ2luYXRpb25ScHBPcHRpb25zID0gWzUsIDEwLCAyNV07XHJcbiAgICBzaW11bHRhbmVvdXNEb3dubG9hZHMgPSAyO1xyXG4gICAgZG93bmxvYWRNZXRob2QgPSAnR0VUJztcclxuICAgIGRvd25sb2FkSGVhZGVyczogYW55ID0ge307XHJcbiAgICBkb3dubG9hZFdpdGhDcmVkZW50aWFscyA9IGZhbHNlO1xyXG4gICAgZG93bmxvYWRYaHJUaW1lb3V0ID0gMDtcclxuICAgIHByZXByb2Nlc3NIYXNoRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hDaGVja2VkID0gdHJ1ZTtcclxuICAgIHByZXByb2Nlc3NIYXNoVGFyZ2V0ID0gJ2h0dHBzOi8vaHR0cGJpbi5vcmcnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hNZXRob2QgPSAnR0VUJztcclxuICAgIHByZXByb2Nlc3NIYXNoUGFyYW1ldGVyTmFtZSA9ICdoYXNoJztcclxuICAgIHByZXByb2Nlc3NIYXNoRmlsZU5hbWVQYXJhbWV0ZXJOYW1lID0gJ2ZpbGVuYW1lJztcclxuICAgIHByZXByb2Nlc3NIYXNoRnVuY3Rpb25OYW1lID0gJ3NoYTEnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hFbmNvZGluZ05hbWUgPSAnaGV4JztcclxuICAgIHByZXByb2Nlc3NIYXNoSW5wdXRFbmNvZGluZ05hbWUgPSAnbGF0aW4xJztcclxuICAgIHByZXByb2Nlc3NIYXNoVG9vbHRpcENvbnRlbnQgPSAnVGhlIHByZXByb2Nlc3Mgb3B0aW9uIGNoZWNrcyBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IG9uIHRoZSBzeXN0ZW0gYmVmb3JlIHVwbG9hZGluZy4nO1xyXG4gICAgcGFyc2VNZXNzYWdlQ2FsbGJhY2sgPSBmdW5jdGlvbihtZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9O1xyXG4gICAgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24ocmVxdWVzdCwgcGFyYW1zKSB7XHJcbiAgICAgICAgbGV0IHRhcmdldDtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVlc3QgPT09ICdwcmVwcm9jZXNzSGFzaCcgJiYgdGhpcy5wcmVwcm9jZXNzSGFzaENoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5wcmVwcm9jZXNzSGFzaFRhcmdldDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdGFyZ2V0LmluZGV4T2YoJz8nKSA8IDAgPyAnPycgOiAnJic7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5lZFBhcmFtcyA9IHBhcmFtcy5qb2luKCcmJyk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0ICsgc2VwYXJhdG9yICsgam9pbmVkUGFyYW1zO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVzdW1hYmxlSnNBcHBDb25maWcge1xyXG4gICAgY2h1bmtTaXplID0gMSAqIDEwMjQgKiAxMDI0O1xyXG4gICAgZm9yY2VDaHVua1NpemUgPSBmYWxzZTtcclxuICAgIHNpbXVsdGFuZW91c1VwbG9hZHMgPSAzO1xyXG4gICAgZmlsZVBhcmFtZXRlck5hbWUgPSAnZmlsZSc7XHJcbiAgICBjaHVua051bWJlclBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlQ2h1bmtOdW1iZXInO1xyXG4gICAgY2h1bmtTaXplUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVDaHVua1NpemUnO1xyXG4gICAgY3VycmVudENodW5rU2l6ZVBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlQ3VycmVudENodW5rU2l6ZSc7XHJcbiAgICB0b3RhbFNpemVQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZVRvdGFsU2l6ZSc7XHJcbiAgICB0eXBlUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVUeXBlJztcclxuICAgIGlkZW50aWZpZXJQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZUlkZW50aWZpZXInO1xyXG4gICAgZmlsZU5hbWVQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZUZpbGVuYW1lJztcclxuICAgIHJlbGF0aXZlUGF0aFBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlUmVsYXRpdmVQYXRoJztcclxuICAgIHRvdGFsQ2h1bmtzUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVUb3RhbENodW5rcyc7XHJcbiAgICB0aHJvdHRsZVByb2dyZXNzQ2FsbGJhY2tzID0gMC41O1xyXG4gICAgcXVlcnkgPSB7fTtcclxuICAgIGhlYWRlcnMgPSB7fTtcclxuICAgIHByZXByb2Nlc3MgPSBudWxsO1xyXG4gICAgcHJlcHJvY2Vzc0ZpbGUgPSBudWxsO1xyXG4gICAgbWV0aG9kID0gJ211bHRpcGFydCc7XHJcbiAgICB1cGxvYWRNZXRob2QgPSAnUE9TVCc7XHJcbiAgICB0ZXN0TWV0aG9kID0gJ0dFVCc7XHJcbiAgICBwcmlvcml0aXplRmlyc3RBbmRMYXN0Q2h1bms6IGZhbHNlO1xyXG4gICAgdGFyZ2V0ID0gJ2h0dHBzOi8vaHR0cGJpbi5vcmcnO1xyXG4gICAgdGVzdFRhcmdldCA9IG51bGw7XHJcbiAgICBwYXJhbWV0ZXJOYW1lc3BhY2UgPSAnJztcclxuICAgIHRlc3RDaHVua3MgPSB0cnVlO1xyXG4gICAgZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyID0gbnVsbDtcclxuICAgIGdldFRhcmdldCA9IG51bGw7XHJcbiAgICBtYXhDaHVua1JldHJpZXMgPSAxMDA7XHJcbiAgICBjaHVua1JldHJ5SW50ZXJ2YWwgPSB1bmRlZmluZWQ7XHJcbiAgICBwZXJtYW5lbnRFcnJvcnMgPSBbNDAwLCA0MDQsIDQwNSwgNDE1LCA1MDFdO1xyXG4gICAgbWF4RmlsZXMgPSB1bmRlZmluZWQ7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZTtcclxuICAgIHhoclRpbWVvdXQgPSAwO1xyXG4gICAgY2xlYXJJbnB1dCA9IHRydWU7XHJcbiAgICBjaHVua0Zvcm1hdCA9ICdibG9iJztcclxuICAgIG1pbkZpbGVTaXplID0gMTtcclxuICAgIG1heEZpbGVTaXplID0gdW5kZWZpbmVkO1xyXG4gICAgZmlsZVR5cGUgPSBbXTtcclxuICAgIG1heEZpbGVzRXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGZpbGVzLCBlcnJvckNvdW50KSB7XHJcbiAgICAgICAgYWxlcnQoJ1BsZWFzZSB1cGxvYWQgbm8gbW9yZSB0aGFuICcgKyB0aGlzLm1heEZpbGVzICsgJyBmaWxlJyArICh0aGlzLm1heEZpbGVzID09PSAxID8gJycgOiAncycpICsgJyBhdCBhIHRpbWUuJyk7XHJcbiAgICB9O1xyXG4gICAgbWluRmlsZVNpemVFcnJvckNhbGxiYWNrID0gZnVuY3Rpb24oZmlsZSwgZXJyb3JDb3VudCkge1xyXG4gICAgICAgIGFsZXJ0KGZpbGUuZmlsZU5hbWUgfHwgZmlsZS5uYW1lICsgJyBpcyB0b28gc21hbGw7IHBsZWFzZSB1cGxvYWQgZmlsZXMgbGFyZ2VyIHRoYW4gJyArIHRoaXMubWluRmlsZVNpemUgKyAnLicpO1xyXG4gICAgfTtcclxuICAgIG1heEZpbGVTaXplRXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGZpbGUsIGVycm9yQ291bnQpIHtcclxuICAgICAgICBhbGVydChmaWxlLmZpbGVOYW1lIHx8IGZpbGUubmFtZSArICcgaXMgdG9vIGxhcmdlOyBwbGVhc2UgdXBsb2FkIGZpbGVzIGxlc3MgdGhhbiAnICsgdGhpcy5tYXhGaWxlU2l6ZSArICcuJyk7XHJcbiAgICB9O1xyXG4gICAgZmlsZVR5cGVFcnJvckNhbGxiYWNrID0gZnVuY3Rpb24oZmlsZSwgZXJyb3JDb3VudCkge1xyXG4gICAgICAgIGFsZXJ0KGZpbGUuZmlsZU5hbWUgfHwgZmlsZS5uYW1lICsgJyBoYXMgdHlwZSBub3QgYWxsb3dlZDsgcGxlYXNlIHVwbG9hZCBmaWxlcyBvZiB0eXBlICcgKyB0aGlzLmZpbGVUeXBlICsgJy4nKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwcENvbmZpZyB7XHJcbiAgICBwcm9kdWN0aW9uOiBib29sZWFuO1xyXG4gICAgY29yZTogQ29yZUFwcENvbmZpZztcclxuICAgIHJlc3VtYWJsZWpzOiBSZXN1bWFibGVKc0FwcENvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZyBpbXBsZW1lbnRzIElBcHBDb25maWcge1xyXG4gICAgcHJvZHVjdGlvbiA9IHRydWU7XHJcbiAgICBjb3JlID0gbmV3IENvcmVBcHBDb25maWcoKTtcclxuICAgIHJlc3VtYWJsZWpzID0gbmV3IFJlc3VtYWJsZUpzQXBwQ29uZmlnKCk7XHJcbn1cclxuIl19