UNPKG

ngx-extended-pdf-viewer

Version:

Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.

708 lines 55.7 kB
/** * @fileoverview added by tsickle * Generated from: lib/ngx-extended-pdf-viewer-server.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener, TemplateRef, ViewChild, } from '@angular/core'; import { pdfDefaultOptions } from './options/pdf-default-options'; import { VerbosityLevel } from './options/verbosity-level'; import { PdfDummyComponentsComponent } from './pdf-dummy-components/pdf-dummy-components.component'; import { ElementRef } from '@angular/core'; import { PdfSecondaryToolbarComponent } from './secondary-toolbar/pdf-secondary-toolbar/pdf-secondary-toolbar.component'; import { PdfSidebarComponent } from './sidebar/pdf-sidebar/pdf-sidebar.component'; import { ScrollModeType } from './options/pdf-viewer'; var NgxExtendedPdfViewerServerComponent = /** @class */ (function () { function NgxExtendedPdfViewerServerComponent() { this.customFindbarButtons = undefined; this.formData = {}; this.formDataChange = new EventEmitter(); this.pageViewMode = 'multiple'; this.progress = new EventEmitter(); this.srcChange = new EventEmitter(); this.scrollMode = undefined; this.scrollModeChange = new EventEmitter(); this.authorization = undefined; this.httpHeaders = undefined; this.contextMenuAllowed = true; this.afterPrint = new EventEmitter(); this.beforePrint = new EventEmitter(); this.currentZoomFactor = new EventEmitter(); this.enablePrint = true; /** * Number of milliseconds to wait between initializing the PDF viewer and loading the PDF file. * Most users can let this parameter safely at it's default value of zero. * Set this to 1000 or higher if you run into timing problems (typically caused by loading the locale files * after the PDF files, so they are not available when the PDF viewer is initialized). */ this.delayFirstView = 0; /** * How many log messages should be printed? * Legal values: VerbosityLevel.INFOS (= 5), VerbosityLevel.WARNINGS (= 1), VerbosityLevel.ERRORS (= 0) */ this.logLevel = VerbosityLevel.WARNINGS; this.enablePinchOnMobile = false; /** * Use the minified (minifiedJSLibraries="true", which is the default) or the user-readable pdf.js library (minifiedJSLibraries="false") */ this.minifiedJSLibraries = true; this.primaryMenuVisible = true; /** * option to increase (or reduce) print resolution. Default is 150 (dpi). Sensible values * are 300, 600, and 1200. Note the increase memory consumption, which may even result in a browser crash. */ this.printResolution = null; this.rotationChange = new EventEmitter(); /** * If this flag is true, this components adds a link to the locale assets. The pdf viewer * sees this link and uses it to load the locale files automatically. * @param useBrowserLocale boolean */ this.useBrowserLocale = false; this.backgroundColor = '#e8e8eb'; /** * Allows the user to define the name of the file after clicking "download" */ this.filenameForDownload = 'document.pdf'; /** * Allows the user to disable the keyboard bindings completely */ this.ignoreKeyboard = false; /** * Allows the user to disable a list of key bindings. */ this.ignoreKeys = []; /** * Allows the user to enable a list of key bindings explicitly. If this property is set, every other key binding is ignored. */ this.acceptKeys = []; /** * Allows the user to put the viewer's svg images into an arbitrary folder */ this.imageResourcesPath = './' + pdfDefaultOptions.assetsFolder + '/images/'; /** * Allows the user to put their locale folder into an arbitrary folder */ this.localeFolderPath = './' + pdfDefaultOptions.assetsFolder + '/locale'; /** * Override the default locale. This must be the complete locale name, such as "es-ES". The string is allowed to be all lowercase. */ this.language = undefined; /** * By default, listening to the URL is deactivated because often the anchor tag is used for the Angular router */ this.listenToURL = false; /** * Navigate to a certain "named destination" */ this.nameddest = undefined; /** * allows you to pass a password to read password-protected files */ this.password = undefined; /** * pdf.js can show signatures, but fails to verify them. So they are switched off by default. * Set "[showUnverifiedSignatures]"="true" to display e-signatures nonetheless. */ this.showUnverifiedSignatures = false; this.sidebarVisible = undefined; this.sidebarVisibleChange = new EventEmitter(); this.showFindButton = undefined; this.showPagingButtons = true; this.showZoomButtons = true; this.showPresentationModeButton = false; this.showOpenFileButton = true; this.showPrintButton = true; this.showDownloadButton = true; this.showBookmarkButton = true; this.theme = 'light'; this.showToolbar = true; this.showSecondaryToolbarButton = true; /** * Set by the event (secondaryMenuIsEmpty) */ this.hideKebabMenuForSecondaryToolbar = false; this.showRotateButton = true; this.handTool = true; this.handToolChange = new EventEmitter(); this.showHandToolButton = false; this.showScrollingButton = true; this.showSpreadButton = true; this.showPropertiesButton = true; this.showBorders = true; this.spreadChange = new EventEmitter(); this.thumbnailDrawn = new EventEmitter(); this._page = undefined; this.pageChange = new EventEmitter(); this.pageLabel = undefined; this.pageLabelChange = new EventEmitter(); this.pagesLoaded = new EventEmitter(); this.pageRendered = new EventEmitter(); this.pdfDownloaded = new EventEmitter(); this.pdfLoaded = new EventEmitter(); this.pdfLoadingFailed = new EventEmitter(); this.textLayer = undefined; this.textLayerRendered = new EventEmitter(); this.updateFindMatchesCount = new EventEmitter(); this.updateFindState = new EventEmitter(); /** * Legal values: undefined, 'auto', 'page-actual', 'page_fit', 'page-width', or '50' (or any other percentage) */ this.zoom = undefined; this.zoomChange = new EventEmitter(); this.zoomLevels = ['auto', 'page-actual', 'page-fit', 'page-width', 0.5, 1, 1.25, 1.5, 2, 3, 4]; this.maxZoom = 10; this.minZoom = 0.1; /** * This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices. * This attribute is a string with a percent character at the end (e.g. "150%"). */ this._mobileFriendlyZoom = '100%'; this.mobileFriendlyZoomScale = 1; this.toolbarMarginTop = '0px'; this.toolbarWidth = '100%'; this.toolbarWidthInPixels = 100; this.secondaryToolbarTop = undefined; // dirty IE11 hack - temporary solution this.findbarTop = undefined; // dirty IE11 hack - temporary solution this.findbarLeft = undefined; // Additional PDF Form Field Types #567: Used to store the exported values of radio and checkbox buttons this.buttonValues = {}; this.shuttingDown = false; } Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "src", { set: /** * @param {?} url * @return {?} */ function (url) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "base64Src", { set: /** * @param {?} base64 * @return {?} */ function (base64) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "height", { set: /** * @param {?} h * @return {?} */ function (h) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "showSidebarButton", { get: /** * @return {?} */ function () { return true; }, set: /** * @param {?} show * @return {?} */ function (show) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "page", { get: /** * @return {?} */ function () { return this._page; }, set: /** * @param {?} p * @return {?} */ function (p) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "mobileFriendlyZoom", { get: /** * @return {?} */ function () { return this._mobileFriendlyZoom; }, /** * This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices. * This attribute is a string with a percent character at the end (e.g. "150%"). */ set: /** * This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices. * This attribute is a string with a percent character at the end (e.g. "150%"). * @param {?} zoom * @return {?} */ function (zoom) { }, enumerable: true, configurable: true }); Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "sidebarPositionTop", { get: /** * @return {?} */ function () { return '32px'; }, enumerable: true, configurable: true }); /** * @param {?} changes * @return {?} */ NgxExtendedPdfViewerServerComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { }; /** * @return {?} */ NgxExtendedPdfViewerServerComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @return {?} */ NgxExtendedPdfViewerServerComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { }; /** * @return {?} */ NgxExtendedPdfViewerServerComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { }; /** * @return {?} */ NgxExtendedPdfViewerServerComponent.prototype.onContextMenu = /** * @return {?} */ function () { return this.contextMenuAllowed; }; NgxExtendedPdfViewerServerComponent.ngxExtendedPdfViewerInitialized = false; NgxExtendedPdfViewerServerComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-extended-pdf-viewer', template: "<link *ngIf=\"useBrowserLocale\" rel=\"resource\" type=\"application/l10n\" [attr.xhref]=\"localeFolderPath+'/locale.properties'\" origin=\"ngx-extended-pdf-viewer\" />\n<pdf-dark-theme *ngIf=\"theme==='dark'\"></pdf-dark-theme>\n<pdf-light-theme *ngIf=\"theme==='light'\"></pdf-light-theme>\n\n<pdf-dynamic-css [zoom]=\"mobileFriendlyZoomScale\" [width]=\"toolbarWidthInPixels\"></pdf-dynamic-css>\n<div class=\"zoom\" [style.height]=\"height\">\n <div class=\"html\">\n <div id=\"mainContainer\">\n <pdf-dummy-components></pdf-dummy-components>\n </div>\n </div>\n</div>\n\n<ng-template #defaultFreeFloatingBar>\n\n</ng-template>\n", changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ NgxExtendedPdfViewerServerComponent.ctorParameters = function () { return []; }; NgxExtendedPdfViewerServerComponent.propDecorators = { dummyComponents: [{ type: ViewChild, args: [PdfDummyComponentsComponent,] }], root: [{ type: ViewChild, args: ['root',] }], customFindbarInputArea: [{ type: Input }], customToolbar: [{ type: Input }], customFindbar: [{ type: Input }], customFindbarButtons: [{ type: Input }], customSecondaryToolbar: [{ type: Input }], customSidebar: [{ type: Input }], customThumbnail: [{ type: Input }], customFreeFloatingBar: [{ type: Input }], formData: [{ type: Input }], formDataChange: [{ type: Output }], pageViewMode: [{ type: Input }], progress: [{ type: Output }], secondaryToolbarComponent: [{ type: ViewChild, args: ['pdfSecondaryToolbarComponent',] }], sidebarComponent: [{ type: ViewChild, args: ['pdfsidebar',] }], srcChange: [{ type: Output }], scrollMode: [{ type: Input }], scrollModeChange: [{ type: Output }], authorization: [{ type: Input }], httpHeaders: [{ type: Input }], contextMenuAllowed: [{ type: Input }], afterPrint: [{ type: Output }], beforePrint: [{ type: Output }], currentZoomFactor: [{ type: Output }], enablePrint: [{ type: Input }], delayFirstView: [{ type: Input }], logLevel: [{ type: Input }], enablePinchOnMobile: [{ type: Input }], minifiedJSLibraries: [{ type: Input }], printResolution: [{ type: Input }], rotation: [{ type: Input }], rotationChange: [{ type: Output }], src: [{ type: Input }], base64Src: [{ type: Input }], height: [{ type: Input }], useBrowserLocale: [{ type: Input }], backgroundColor: [{ type: Input }], filenameForDownload: [{ type: Input }], ignoreKeyboard: [{ type: Input }], ignoreKeys: [{ type: Input }], acceptKeys: [{ type: Input }], imageResourcesPath: [{ type: Input }], localeFolderPath: [{ type: Input }], language: [{ type: Input }], listenToURL: [{ type: Input }], nameddest: [{ type: Input }], password: [{ type: Input }], showUnverifiedSignatures: [{ type: Input }], startTabindex: [{ type: Input }], showSidebarButton: [{ type: Input }], sidebarVisible: [{ type: Input }], sidebarVisibleChange: [{ type: Output }], showFindButton: [{ type: Input }], showPagingButtons: [{ type: Input }], showZoomButtons: [{ type: Input }], showPresentationModeButton: [{ type: Input }], showOpenFileButton: [{ type: Input }], showPrintButton: [{ type: Input }], showDownloadButton: [{ type: Input }], showBookmarkButton: [{ type: Input }], theme: [{ type: Input }], showToolbar: [{ type: Input }], showSecondaryToolbarButton: [{ type: Input }], showRotateButton: [{ type: Input }], handTool: [{ type: Input }], handToolChange: [{ type: Output }], showHandToolButton: [{ type: Input }], showScrollingButton: [{ type: Input }], showSpreadButton: [{ type: Input }], showPropertiesButton: [{ type: Input }], showBorders: [{ type: Input }], spread: [{ type: Input }], spreadChange: [{ type: Output }], thumbnailDrawn: [{ type: Output }], page: [{ type: Input }], pageChange: [{ type: Output }], pageLabel: [{ type: Input }], pageLabelChange: [{ type: Output }], pagesLoaded: [{ type: Output }], pageRendered: [{ type: Output }], pdfDownloaded: [{ type: Output }], pdfLoaded: [{ type: Output }], pdfLoadingFailed: [{ type: Output }], textLayer: [{ type: Input }], textLayerRendered: [{ type: Output }], updateFindMatchesCount: [{ type: Output }], updateFindState: [{ type: Output }], zoom: [{ type: Input }], zoomChange: [{ type: Output }], zoomLevels: [{ type: Input }], maxZoom: [{ type: Input }], minZoom: [{ type: Input }], _mobileFriendlyZoom: [{ type: Input }], mobileFriendlyZoom: [{ type: Input }], onContextMenu: [{ type: HostListener, args: ['contextmenu',] }] }; return NgxExtendedPdfViewerServerComponent; }()); export { NgxExtendedPdfViewerServerComponent }; if (false) { /** @type {?} */ NgxExtendedPdfViewerServerComponent.ngxExtendedPdfViewerInitialized; /** * The dummy components are inserted automatically when the user customizes the toolbar * without adding every original toolbar item. Without the dummy components, the * initialization code of pdf.js crashes because it assume that every standard widget is there. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.dummyComponents; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.root; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customFindbarInputArea; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customToolbar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customFindbar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customFindbarButtons; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customSecondaryToolbar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customSidebar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customThumbnail; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.customFreeFloatingBar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.formData; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.formDataChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pageViewMode; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.progress; /** * @type {?} * @private */ NgxExtendedPdfViewerServerComponent.prototype.secondaryToolbarComponent; /** * @type {?} * @private */ NgxExtendedPdfViewerServerComponent.prototype.sidebarComponent; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.srcChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.scrollMode; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.scrollModeChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.authorization; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.httpHeaders; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.contextMenuAllowed; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.afterPrint; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.beforePrint; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.currentZoomFactor; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.enablePrint; /** * Number of milliseconds to wait between initializing the PDF viewer and loading the PDF file. * Most users can let this parameter safely at it's default value of zero. * Set this to 1000 or higher if you run into timing problems (typically caused by loading the locale files * after the PDF files, so they are not available when the PDF viewer is initialized). * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.delayFirstView; /** * store the timeout id so it can be canceled if user leaves the page before the PDF is shown * @type {?} * @private */ NgxExtendedPdfViewerServerComponent.prototype.initTimeout; /** * How many log messages should be printed? * Legal values: VerbosityLevel.INFOS (= 5), VerbosityLevel.WARNINGS (= 1), VerbosityLevel.ERRORS (= 0) * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.logLevel; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.enablePinchOnMobile; /** * Use the minified (minifiedJSLibraries="true", which is the default) or the user-readable pdf.js library (minifiedJSLibraries="false") * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.minifiedJSLibraries; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.primaryMenuVisible; /** * option to increase (or reduce) print resolution. Default is 150 (dpi). Sensible values * are 300, 600, and 1200. Note the increase memory consumption, which may even result in a browser crash. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.printResolution; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.rotation; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.rotationChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.hasSignature; /** * If this flag is true, this components adds a link to the locale assets. The pdf viewer * sees this link and uses it to load the locale files automatically. * \@param useBrowserLocale boolean * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.useBrowserLocale; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.backgroundColor; /** * Allows the user to define the name of the file after clicking "download" * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.filenameForDownload; /** * Allows the user to disable the keyboard bindings completely * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.ignoreKeyboard; /** * Allows the user to disable a list of key bindings. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.ignoreKeys; /** * Allows the user to enable a list of key bindings explicitly. If this property is set, every other key binding is ignored. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.acceptKeys; /** * Allows the user to put the viewer's svg images into an arbitrary folder * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.imageResourcesPath; /** * Allows the user to put their locale folder into an arbitrary folder * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.localeFolderPath; /** * Override the default locale. This must be the complete locale name, such as "es-ES". The string is allowed to be all lowercase. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.language; /** * By default, listening to the URL is deactivated because often the anchor tag is used for the Angular router * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.listenToURL; /** * Navigate to a certain "named destination" * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.nameddest; /** * allows you to pass a password to read password-protected files * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.password; /** * pdf.js can show signatures, but fails to verify them. So they are switched off by default. * Set "[showUnverifiedSignatures]"="true" to display e-signatures nonetheless. * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showUnverifiedSignatures; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.startTabindex; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.sidebarVisible; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.sidebarVisibleChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showFindButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showPagingButtons; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showZoomButtons; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showPresentationModeButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showOpenFileButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showPrintButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showDownloadButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showBookmarkButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.theme; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showToolbar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showSecondaryToolbarButton; /** * Set by the event (secondaryMenuIsEmpty) * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.hideKebabMenuForSecondaryToolbar; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showRotateButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.handTool; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.handToolChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showHandToolButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showScrollingButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showSpreadButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showPropertiesButton; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.showBorders; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.spread; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.spreadChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.thumbnailDrawn; /** * @type {?} * @private */ NgxExtendedPdfViewerServerComponent.prototype._page; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pageChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pageLabel; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pageLabelChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pagesLoaded; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pageRendered; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pdfDownloaded; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pdfLoaded; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.pdfLoadingFailed; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.textLayer; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.textLayerRendered; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.updateFindMatchesCount; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.updateFindState; /** * Legal values: undefined, 'auto', 'page-actual', 'page_fit', 'page-width', or '50' (or any other percentage) * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.zoom; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.zoomChange; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.zoomLevels; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.maxZoom; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.minZoom; /** * This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices. * This attribute is a string with a percent character at the end (e.g. "150%"). * @type {?} */ NgxExtendedPdfViewerServerComponent.prototype._mobileFriendlyZoom; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.mobileFriendlyZoomScale; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.toolbarMarginTop; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.toolbarWidth; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.toolbarWidthInPixels; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.secondaryToolbarTop; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.findbarTop; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.findbarLeft; /** @type {?} */ NgxExtendedPdfViewerServerComponent.prototype.buttonValues; /** * @type {?} * @private */ NgxExtendedPdfViewerServerComponent.prototype.shuttingDown; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWV4dGVuZGVkLXBkZi12aWV3ZXItc2VydmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1leHRlbmRlZC1wZGYtdmlld2VyLyIsInNvdXJjZXMiOlsibGliL25neC1leHRlbmRlZC1wZGYtdmlld2VyLXNlcnZlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFpQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFHekgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXREO0lBaVhFO1FBblZPLHlCQUFvQixHQUFpQyxTQUFTLENBQUM7UUFlL0QsYUFBUSxHQUFpQixFQUFFLENBQUM7UUFHNUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUdsRCxpQkFBWSxHQUF1RCxVQUFVLENBQUM7UUFHOUUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBU2hELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3ZDLGVBQVUsR0FBK0IsU0FBUyxDQUFDO1FBR25ELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBR3RE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QUczQix3REFDaUQ7Ozs7O0lBR2pELHVEQUNnRDs7Ozs7O0lBS2hELHVFQUN3Qzs7SUFFeEMsNERBQ3lDOztJQVF6Qyw2REFDdUQ7O0lBRXZELG1FQUMwRDs7SUFFMUQsNkRBQ3VEOztJQUN2RCxnRUFDZ0M7O0lBQ2hDLDhEQUM4Qjs7SUFDOUIseUVBQzBDOztJQUMxQyxpRUFDaUM7O0lBQ2pDLDhEQUM4Qjs7SUFDOUIsaUVBQ2lDOztJQUNqQyxpRUFDaUM7O0lBRWpDLG9EQUNvRDs7SUFFcEQsMERBQzBCOztJQUUxQix5RUFDeUM7Ozs7O0lBR3pDLCtFQUFnRDs7SUFFaEQsK0RBQytCOztJQUMvQix1REFDdUI7O0lBQ3ZCLDZEQUNvRDs7SUFDcEQsaUVBQ2tDOztJQUNsQyxrRUFDa0M7O0lBQ2xDLCtEQUMrQjs7SUFDL0IsbUVBQ21DOztJQUNuQywwREFDMEI7O0lBRTFCLHFEQUNzQzs7SUFFdEMsMkRBQ2lFOztJQUVqRSw2REFDbUU7Ozs7O0lBRW5FLG9EQUE4Qzs7SUFTOUMseURBQzJEOztJQUUzRCx3REFDaUQ7O0lBRWpELDhEQUNnRTs7SUFFaEUsMERBQzBEOztJQUUxRCwyREFDNEQ7O0lBRTVELDREQUM4RDs7SUFFOUQsd0RBQ3NEOztJQUV0RCwrREFDb0Q7O0lBRXBELHdEQUNrRDs7SUFFbEQsZ0VBQ3NFOztJQUV0RSxxRUFDMkU7O0lBRTNFLDhEQUN1RDs7Ozs7SUFHdkQsbURBQ3FEOztJQUVyRCx5REFDb0U7O0lBRXBFLHlEQUNrRzs7SUFFbEcsc0RBQ29COztJQUVwQixzREFDcUI7Ozs7OztJQUtyQixrRUFBc0M7O0lBRXRDLHNFQUFtQzs7SUFFbkMsK0RBQWdDOztJQUVoQywyREFBNkI7O0lBRTdCLG1FQUFrQzs7SUFFbEMsa0VBQTJEOztJQUczRCx5REFBa0Q7O0lBR2xELDBEQUFtRDs7SUFHbkQsMkRBQThCOzs7OztJQVk5QiwyREFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBIb3N0TGlzdGVuZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYWdlc0xvYWRlZEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGFnZXMtbG9hZGVkLWV2ZW50JztcbmltcG9ydCB7IFBhZ2VSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGFnZS1yZW5kZXJlZC1ldmVudCc7XG5pbXBvcnQgeyBQZGZEb3dubG9hZGVkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9wZGYtZG93bmxvYWRlZC1ldmVudCc7XG5pbXBvcnQgeyBQZGZMb2FkZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzL3BkZi1sb2FkZWQtZXZlbnQnO1xuaW1wb3J0IHsgcGRmRGVmYXVsdE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvcGRmLWRlZmF1bHQtb3B0aW9ucyc7XG5pbXBvcnQgeyBWZXJib3NpdHlMZXZlbCB9IGZyb20gJy4vb3B0aW9ucy92ZXJib3NpdHktbGV2ZWwnO1xuaW1wb3J0IHsgRmluZFN0YXRlLCBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50IH0gZnJvbSAnLi9ldmVudHMvZmluZC1yZXN1bHQnO1xuaW1wb3J0IHsgUGRmRHVtbXlDb21wb25lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9wZGYtZHVtbXktY29tcG9uZW50cy9wZGYtZHVtbXktY29tcG9uZW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vc2Vjb25kYXJ5LXRvb2xiYXIvcGRmLXNlY29uZGFyeS10b29sYmFyL3BkZi1zZWNvbmRhcnktdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dExheWVyUmVuZGVyZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzL3RleHRsYXllci1yZW5kZXJlZCc7XG5pbXBvcnQgeyBQZGZUaHVtYm5haWxEcmF3bkV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGRmLXRodW1ibmFpbC1kcmF3bi1ldmVudCc7XG5pbXBvcnQgeyBQZGZTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3BkZi1zaWRlYmFyL3BkZi1zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY3JvbGxNb2RlVHlwZSB9IGZyb20gJy4vb3B0aW9ucy9wZGYtdmlld2VyJztcbmltcG9ydCB7IFByb2dyZXNzQmFyRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9wcm9ncmVzcy1iYXItZXZlbnQnO1xuaW1wb3J0IHsgRm9ybURhdGFUeXBlIH0gZnJvbSAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci1zZXJ2ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd4RXh0ZW5kZWRQZGZWaWV3ZXJTZXJ2ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBuZ3hFeHRlbmRlZFBkZlZpZXdlckluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBkdW1teSBjb21wb25lbnRzIGFyZSBpbnNlcnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHVzZXIgY3VzdG9taXplcyB0aGUgdG9vbGJhclxuICAgKiB3aXRob3V0IGFkZGluZyBldmVyeSBvcmlnaW5hbCB0b29sYmFyIGl0ZW0uIFdpdGhvdXQgdGhlIGR1bW15IGNvbXBvbmVudHMsIHRoZVxuICAgKiBpbml0aWFsaXphdGlvbiBjb2RlIG9mIHBkZi5qcyBjcmFzaGVzIGJlY2F1c2UgaXQgYXNzdW1lIHRoYXQgZXZlcnkgc3RhbmRhcmQgd2lkZ2V0IGlzIHRoZXJlLlxuICAgKi9cbiAgQFZpZXdDaGlsZChQZGZEdW1teUNvbXBvbmVudHNDb21wb25lbnQpXG4gIHB1YmxpYyBkdW1teUNvbXBvbmVudHM6IFBkZkR1bW15Q29tcG9uZW50c0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdyb290JylcbiAgcHVibGljIHJvb3Q6IEVsZW1lbnRSZWY7XG5cbiAgLyogVUkgdGVtcGxhdGVzICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFySW5wdXRBcmVhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21Ub29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFyQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tU2Vjb25kYXJ5VG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tVGh1bWJuYWlsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GcmVlRmxvYXRpbmdCYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1EYXRhOiBGb3JtRGF0YVR5cGUgPSB7fTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZvcm1EYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtRGF0YVR5cGU+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VWaWV3TW9kZTogJ3NpbmdsZScgfCAnYm9vaycgfCAnbXVsdGlwbGUnIHwgJ2luZmluaXRlLXNjcm9sbCcgPSAnbXVsdGlwbGUnO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcHJvZ3Jlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2dyZXNzQmFyRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgncGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudCcpXG4gIHByaXZhdGUgc2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudDogUGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdwZGZzaWRlYmFyJylcbiAgcHJpdmF0ZSBzaWRlYmFyQ29tcG9uZW50OiBQZGZTaWRlYmFyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3JjQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNjcm9sbE1vZGU6IFNjcm9sbE1vZGVUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2Nyb2xsTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsTW9kZVR5cGU+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGF1dGhvcml6YXRpb246IE9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaHR0cEhlYWRlcnM6IE9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFmdGVyUHJpbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBiZWZvcmVQcmludCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGN1cnJlbnRab29tRmFjdG9yID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZVByaW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gaW5pdGlhbGl6aW5nIHRoZSBQREYgdmlld2VyIGFuZCBsb2FkaW5nIHRoZSBQREYgZmlsZS5cbiAgICogTW9zdCB1c2VycyBjYW4gbGV0IHRoaXMgcGFyYW1ldGVyIHNhZmVseSBhdCBpdCdzIGRlZmF1bHQgdmFsdWUgb2YgemVyby5cbiAgICogU2V0IHRoaXMgdG8gMTAwMCBvciBoaWdoZXIgaWYgeW91IHJ1biBpbnRvIHRpbWluZyBwcm9ibGVtcyAodHlwaWNhbGx5IGNhdXNlZCBieSBsb2FkaW5nIHRoZSBsb2NhbGUgZmlsZXNcbiAgICogYWZ0ZXIgdGhlIFBERiBmaWxlcywgc28gdGhleSBhcmUgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBQREYgdmlld2VyIGlzIGluaXRpYWxpemVkKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWxheUZpcnN0VmlldyA9IDA7XG5cbiAgLyoqIHN0b3JlIHRoZSB0aW1lb3V0IGlkIHNvIGl0IGNhbiBiZSBjYW5jZWxlZCBpZiB1c2VyIGxlYXZlcyB0aGUgcGFnZSBiZWZvcmUgdGhlIFBERiBpcyBzaG93biAqL1xuICBwcml2YXRlIGluaXRUaW1lb3V0OiBhbnk7XG5cbiAgLyoqIEhvdyBtYW55IGxvZyBtZXNzYWdlcyBzaG91bGQgYmUgcHJpbnRlZD9cbiAgICogTGVnYWwgdmFsdWVzOiBWZXJib3NpdHlMZXZlbC5JTkZPUyAoPSA1KSwgVmVyYm9zaXR5TGV2ZWwuV0FSTklOR1MgKD0gMSksIFZlcmJvc2l0eUxldmVsLkVSUk9SUyAoPSAwKSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9nTGV2ZWwgPSBWZXJib3NpdHlMZXZlbC5XQVJOSU5HUztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlUGluY2hPbk1vYmlsZSA9IGZhbHNlO1xuXG4gIC8qKiBVc2UgdGhlIG1pbmlmaWVkIChtaW5pZmllZEpTTGlicmFyaWVzPVwidHJ1ZVwiLCB3aGljaCBpcyB0aGUgZGVmYXVsdCkgb3IgdGhlIHVzZXItcmVhZGFibGUgcGRmLmpzIGxpYnJhcnkgKG1pbmlmaWVkSlNMaWJyYXJpZXM9XCJmYWxzZVwiKSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluaWZpZWRKU0xpYnJhcmllcyA9IHRydWU7XG5cbiAgcHVibGljIHByaW1hcnlNZW51VmlzaWJsZSA9IHRydWU7XG5cbiAgLyoqIG9wdGlvbiB0byBpbmNyZWFzZSAob3IgcmVkdWNlKSBwcmludCByZXNvbHV0aW9uLiBEZWZhdWx0IGlzIDE1MCAoZHBpKS4gU2Vuc2libGUgdmFsdWVzXG4gICAqIGFyZSAzMDAsIDYwMCwgYW5kIDEyMDAuIE5vdGUgdGhlIGluY3JlYXNlIG1lbW9yeSBjb25zdW1wdGlvbiwgd2hpY2ggbWF5IGV2ZW4gcmVzdWx0IGluIGEgYnJvd3NlciBjcmFzaC4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIHByaW50UmVzb2x1dGlvbiA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdGF0aW9uOiAwIHwgOTAgfCAxODAgfCAyNzA7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3RhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8MCB8IDkwIHwgMTgwIHwgMjcwPigpO1xuXG4gIHB1YmxpYyBoYXNTaWduYXR1cmU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzcmModXJsOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IEJsb2IgfCBVaW50OEFycmF5IHwgeyByYW5nZTogYW55IH0pIHt9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBiYXNlNjRTcmMoYmFzZTY0OiBzdHJpbmcpIHt9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoZWlnaHQoaDogc3RyaW5nKSB7fVxuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGZsYWcgaXMgdHJ1ZSwgdGhpcyBjb21wb25lbnRzIGFkZHMgYSBsaW5rIHRvIHRoZSBsb2NhbGUgYXNzZXRzLiBUaGUgcGRmIHZpZXdlclxuICAgKiBzZWVzIHRoaXMgbGluayBhbmQgdXNlcyBpdCB0byBsb2FkIHRoZSBsb2NhbGUgZmlsZXMgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHVzZUJyb3dzZXJMb2NhbGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHVzZUJyb3dzZXJMb2NhbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yID0gJyNlOGU4ZWInO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gZGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGFmdGVyIGNsaWNraW5nIFwiZG93bmxvYWRcIiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZW5hbWVGb3JEb3dubG9hZCA9ICdkb2N1bWVudC5wZGYnO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gZGlzYWJsZSB0aGUga2V5Ym9hcmQgYmluZGluZ3MgY29tcGxldGVseSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWdub3JlS2V5Ym9hcmQgPSBmYWxzZTtcblxuICAvKiogQWxsb3dzIHRoZSB1c2VyIHRvIGRpc2FibGUgYSBsaXN0IG9mIGtleSBiaW5kaW5ncy4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlnbm9yZUtleXM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAvKiogQWxsb3dzIHRoZSB1c2VyIHRvIGVuYWJsZSBhIGxpc3Qgb2Yga2V5IGJpbmRpbmdzIGV4cGxpY2l0bHkuIElmIHRoaXMgcHJvcGVydHkgaXMgc2V0LCBldmVyeSBvdGhlciBrZXkgYmluZGluZyBpcyBpZ25vcmVkLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWNjZXB0S2V5czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gcHV0IHRoZSB2aWV3ZXIncyBzdmcgaW1hZ2VzIGludG8gYW4gYXJiaXRyYXJ5IGZvbGRlciAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW1hZ2VSZXNvdXJjZXNQYXRoID0gJy4vJyArIHBkZkRlZmF1bHRPcHRpb25zLmFzc2V0c0ZvbGRlciArICcvaW1hZ2VzLyc7XG5cbiAgLyoqIEFsbG93cyB0aGUgdXNlciB0byBwdXQgdGhlaXIgbG9jYWxlIGZvbGRlciBpbnRvIGFuIGFyYml0cmFyeSBmb2xkZXIgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxvY2FsZUZvbGRlclBhdGggPSAnLi8nICsgcGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyICsgJy9sb2NhbGUnO1xuXG4gIC8qKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgbXVzdCBiZSB0aGUgY29tcGxldGUgbG9jYWxlIG5hbWUsIHN1Y2ggYXMgXCJlcy1FU1wiLiBUaGUgc3RyaW5nIGlzIGFsbG93ZWQgdG8gYmUgYWxsIGxvd2VyY2FzZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBCeSBkZWZhdWx0LCBsaXN0ZW5pbmcgdG8gdGhlIFVSTCBpcyBkZWFjdGl2YXRlZCBiZWNhdXNlIG9mdGVuIHRoZSBhbmNob3IgdGFnIGlzIHVzZWQgZm9yIHRoZSBBbmd1bGFyIHJvdXRlciAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGlzdGVuVG9VUkwgPSBmYWxzZTtcblxuICAvKiogTmF2aWdhdGUgdG8gYSBjZXJ0YWluIFwibmFtZWQgZGVzdGluYXRpb25cIiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZWRkZXN0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgLyoqIGFsbG93cyB5b3UgdG8gcGFzcyBhIHBhc3N3b3JkIHRvIHJlYWQgcGFzc3dvcmQtcHJvdGVjdGVkIGZpbGVzICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBwZGYuanMgY2FuIHNob3cgc2lnbmF0dXJlcywgYnV0IGZhaWxzIHRvIHZlcmlmeSB0aGVtLiBTbyB0aGV5IGFyZSBzd2l0Y2hlZCBvZmYgYnkgZGVmYXVsdC5cbiAgICogU2V0IFwiW3Nob3dVbnZlcmlmaWVkU2lnbmF0dXJlc11cIj1cInRydWVcIiB0byBkaXNwbGF5IGUtc2lnbmF0dXJlcyBub25ldGhlbGVzcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VW52ZXJpZmllZFNpZ25hdHVyZXMgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRUYWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgc2hvd1NpZGViYXJCdXR0b24oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzaG93U2lkZWJhckJ1dHRvbihzaG93OiBib29sZWFuKSB7fVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaWRlYmFyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNpZGViYXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93RmluZEJ1dHRvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dQYWdpbmdCdXR0b25zID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dab29tQnV0dG9ucyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UHJlc2VudGF0aW9uTW9kZUJ1dHRv