UNPKG

ngx-serp-preview

Version:

SERP (Search Engine Result Page) Preview Component for Angular

56 lines 17 kB
import { ChangeDetectionStrategy, Component, ViewEncapsulation, HostBinding, Input, } from '@angular/core'; import { NgSwitch, NgSwitchCase } from '@angular/common'; import { NgxSerpGoogleComponent } from '../ngx-serp-google/ngx-serp-google.component'; import { NgxSerpGoogleMobileComponent } from '../ngx-serp-google-mobile/ngx-serp-google-mobile.component'; import { NgxSerpBingComponent } from '../ngx-serp-bing/ngx-serp-bing.component'; import { NgxSerpYahooComponent } from '../ngx-serp-yahoo/ngx-serp-yahoo.component'; import { mdiCellphone, mdiGoogle, mdiMicrosoftBing, mdiYahoo } from '@mdi/js'; import { NgxMdIconModule } from 'ngx-md-icon'; import * as i0 from "@angular/core"; import * as i1 from "ngx-md-icon"; export class NgxSerpTabsComponent { constructor(cdRef) { this.cdRef = cdRef; this.class = 'ngx-serp-tabs'; this.url = 'example.com'; this.activeTabIndex = 0; this.icons = { google: mdiGoogle, mobile: mdiCellphone, bing: mdiMicrosoftBing, yahoo: mdiYahoo, }; } ngOnInit() { } ngOnChanges(changes) { } ngOnDestroy() { } } NgxSerpTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxSerpTabsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); NgxSerpTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxSerpTabsComponent, isStandalone: true, selector: "ngx-serp-tabs", inputs: { siteName: "siteName", title: "title", description: "description", url: "url", faviconUrl: "faviconUrl", activeTabIndex: "activeTabIndex" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ngx-serp-tabs__panel\">\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 0\" (click)=\"activeTabIndex = 0\">\n <md-icon [icon]=\"icons.google\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Google</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 1\" (click)=\"activeTabIndex = 1\">\n <md-icon [icon]=\"icons.mobile\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Mobile</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 2\" (click)=\"activeTabIndex = 2\">\n <md-icon [icon]=\"icons.bing\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Bing</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 3\" (click)=\"activeTabIndex = 3\">\n <md-icon [icon]=\"icons.yahoo\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Yahoo</span>\n </div>\n</div>\n\n<div class=\"ngx-serp-tabs__content\">\n <ng-container [ngSwitch]=\"activeTabIndex\">\n <ngx-serp-google *ngSwitchCase=\"0\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google>\n\n <ngx-serp-google-mobile *ngSwitchCase=\"1\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google-mobile>\n\n <ngx-serp-bing *ngSwitchCase=\"2\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-bing>\n\n <ngx-serp-yahoo *ngSwitchCase=\"3\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-yahoo>\n </ng-container>\n</div>\n", styles: ["body.dark .ngx-serp-tabs{--ngx-serp-tabs-border: #3c4043;--ngx-serp-tabs-label: #969ba1;--ngx-serp-tabs-label-active: #8ab4f8}.ngx-serp-tabs{--ngx-serp-tabs-border: #ebebeb;--ngx-serp-tabs-label: #5f6368;--ngx-serp-tabs-label-active: #4285f4;width:100%;display:block;font-weight:400}.ngx-serp-tabs__panel{display:flex;align-items:stretch;border-bottom:1px solid var(--ngx-serp-tabs-border)}.ngx-serp-tabs__panel-btn{display:inline-flex;align-items:center;justify-content:center;height:37px;padding:0 16px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;box-sizing:border-box;margin-right:3px;font-family:Google Sans,arial,sans-serif;font-size:14px;letter-spacing:normal;color:var(--ngx-serp-tabs-label);border-bottom:3px solid transparent}.ngx-serp-tabs__panel-btn.active{color:var(--ngx-serp-tabs-label-active);border-bottom:3px solid var(--ngx-serp-tabs-label-active)}.ngx-serp-tabs__panel-btn .md-icon{width:16px;height:16px;font-size:16px;margin-right:6px}.ngx-serp-tabs__content{padding:20px 0}\n"], dependencies: [{ kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: NgxSerpGoogleComponent, selector: "ngx-serp-google", inputs: ["siteName", "title", "description", "url", "faviconUrl"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "component", type: NgxSerpGoogleMobileComponent, selector: "ngx-serp-google-mobile", inputs: ["siteName", "title", "description", "url", "faviconUrl"] }, { kind: "component", type: NgxSerpBingComponent, selector: "ngx-serp-bing", inputs: ["title", "description", "url"] }, { kind: "component", type: NgxSerpYahooComponent, selector: "ngx-serp-yahoo", inputs: ["title", "description", "url"] }, { kind: "ngmodule", type: NgxMdIconModule }, { kind: "component", type: i1.NgxMdIconComponent, selector: "md-icon", inputs: ["icon", "icons", "texts", "middle", "xViewBox", "yViewBox", "xTextPos", "yTextPos"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxSerpTabsComponent, decorators: [{ type: Component, args: [{ selector: 'ngx-serp-tabs', standalone: true, imports: [ NgSwitchCase, NgxSerpGoogleComponent, NgSwitch, NgxSerpGoogleMobileComponent, NgxSerpBingComponent, NgxSerpYahooComponent, NgxMdIconModule, ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ngx-serp-tabs__panel\">\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 0\" (click)=\"activeTabIndex = 0\">\n <md-icon [icon]=\"icons.google\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Google</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 1\" (click)=\"activeTabIndex = 1\">\n <md-icon [icon]=\"icons.mobile\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Mobile</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 2\" (click)=\"activeTabIndex = 2\">\n <md-icon [icon]=\"icons.bing\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Bing</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 3\" (click)=\"activeTabIndex = 3\">\n <md-icon [icon]=\"icons.yahoo\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Yahoo</span>\n </div>\n</div>\n\n<div class=\"ngx-serp-tabs__content\">\n <ng-container [ngSwitch]=\"activeTabIndex\">\n <ngx-serp-google *ngSwitchCase=\"0\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google>\n\n <ngx-serp-google-mobile *ngSwitchCase=\"1\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google-mobile>\n\n <ngx-serp-bing *ngSwitchCase=\"2\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-bing>\n\n <ngx-serp-yahoo *ngSwitchCase=\"3\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-yahoo>\n </ng-container>\n</div>\n", styles: ["body.dark .ngx-serp-tabs{--ngx-serp-tabs-border: #3c4043;--ngx-serp-tabs-label: #969ba1;--ngx-serp-tabs-label-active: #8ab4f8}.ngx-serp-tabs{--ngx-serp-tabs-border: #ebebeb;--ngx-serp-tabs-label: #5f6368;--ngx-serp-tabs-label-active: #4285f4;width:100%;display:block;font-weight:400}.ngx-serp-tabs__panel{display:flex;align-items:stretch;border-bottom:1px solid var(--ngx-serp-tabs-border)}.ngx-serp-tabs__panel-btn{display:inline-flex;align-items:center;justify-content:center;height:37px;padding:0 16px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;box-sizing:border-box;margin-right:3px;font-family:Google Sans,arial,sans-serif;font-size:14px;letter-spacing:normal;color:var(--ngx-serp-tabs-label);border-bottom:3px solid transparent}.ngx-serp-tabs__panel-btn.active{color:var(--ngx-serp-tabs-label-active);border-bottom:3px solid var(--ngx-serp-tabs-label-active)}.ngx-serp-tabs__panel-btn .md-icon{width:16px;height:16px;font-size:16px;margin-right:6px}.ngx-serp-tabs__content{padding:20px 0}\n"] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{ type: HostBinding }], siteName: [{ type: Input }], title: [{ type: Input }], description: [{ type: Input }], url: [{ type: Input }], faviconUrl: [{ type: Input }], activeTabIndex: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNlcnAtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2VycC1wcmV2aWV3L3NyYy9saWIvY29tcG9uZW50cy9uZ3gtc2VycC10YWJzL25neC1zZXJwLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNlcnAtcHJldmlldy9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXNlcnAtdGFicy9uZ3gtc2VycC10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSix1QkFBdUIsRUFDdkIsU0FBUyxFQU1ULGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsS0FBSyxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDMUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQVksUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQW1COUMsTUFBTSxPQUFPLG9CQUFvQjtJQTZCOUIsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUEzQnJDLFVBQUssR0FBRyxlQUFlLENBQUM7UUFZeEIsUUFBRyxHQUFXLGFBQWEsQ0FBQztRQU01QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUVuQixVQUFLLEdBQUc7WUFDWixNQUFNLEVBQUUsU0FBUztZQUNqQixNQUFNLEVBQUUsWUFBWTtZQUNwQixJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLEtBQUssRUFBRSxRQUFRO1NBQ2pCLENBQUM7SUFFNkMsQ0FBQztJQUVoRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXLENBQUMsT0FBc0IsSUFBUyxDQUFDO0lBRTVDLFdBQVcsS0FBVSxDQUFDOztpSEFuQ1osb0JBQW9CO3FHQUFwQixvQkFBb0IscVNDdENqQywwd0RBZ0NBLDRqQ0RQTSxZQUFZLHFGQUNaLHNCQUFzQiwrSEFDdEIsUUFBUSw2RUFDUiw0QkFBNEIsc0lBQzVCLG9CQUFvQixtR0FDcEIscUJBQXFCLG1HQUNyQixlQUFlOzJGQU9SLG9CQUFvQjtrQkFqQmhDLFNBQVM7K0JBQ0csZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDTixZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsUUFBUTt3QkFDUiw0QkFBNEI7d0JBQzVCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixlQUFlO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt3R0FJOUIsS0FBSztzQkFEWCxXQUFXO2dCQUlMLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgQ29tcG9uZW50LFxuICAgT25Jbml0LFxuICAgT25EZXN0cm95LFxuICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICBPbkNoYW5nZXMsXG4gICBTaW1wbGVDaGFuZ2VzLFxuICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICBIb3N0QmluZGluZyxcbiAgIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3hTZXJwR29vZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vbmd4LXNlcnAtZ29vZ2xlL25neC1zZXJwLWdvb2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2VycEdvb2dsZU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4uL25neC1zZXJwLWdvb2dsZS1tb2JpbGUvbmd4LXNlcnAtZ29vZ2xlLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4U2VycEJpbmdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtc2VycC1iaW5nL25neC1zZXJwLWJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IE5neFNlcnBZYWhvb0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1zZXJwLXlhaG9vL25neC1zZXJwLXlhaG9vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZGlDZWxscGhvbmUsIG1kaUdvb2dsZSwgbWRpTWljcm9zb2Z0QmluZywgbWRpUGhvbmUsIG1kaVlhaG9vIH0gZnJvbSAnQG1kaS9qcyc7XG5pbXBvcnQgeyBOZ3hNZEljb25Nb2R1bGUgfSBmcm9tICduZ3gtbWQtaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICduZ3gtc2VycC10YWJzJyxcbiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICBpbXBvcnRzOiBbXG4gICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICBOZ3hTZXJwR29vZ2xlQ29tcG9uZW50LFxuICAgICAgTmdTd2l0Y2gsXG4gICAgICBOZ3hTZXJwR29vZ2xlTW9iaWxlQ29tcG9uZW50LFxuICAgICAgTmd4U2VycEJpbmdDb21wb25lbnQsXG4gICAgICBOZ3hTZXJwWWFob29Db21wb25lbnQsXG4gICAgICBOZ3hNZEljb25Nb2R1bGUsXG4gICBdLFxuICAgdGVtcGxhdGVVcmw6ICcuL25neC1zZXJwLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgc3R5bGVVcmxzOiBbJy4vbmd4LXNlcnAtdGFicy5jb21wb25lbnQuc2NzcyddLFxuICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTZXJwVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgQEhvc3RCaW5kaW5nKClcbiAgIHB1YmxpYyBjbGFzcyA9ICduZ3gtc2VycC10YWJzJztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBzaXRlTmFtZT86IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyB0aXRsZT86IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyB1cmw6IHN0cmluZyA9ICdleGFtcGxlLmNvbSc7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgZmF2aWNvblVybD86IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBhY3RpdmVUYWJJbmRleCA9IDA7XG5cbiAgIHB1YmxpYyBpY29ucyA9IHtcbiAgICAgIGdvb2dsZTogbWRpR29vZ2xlLFxuICAgICAgbW9iaWxlOiBtZGlDZWxscGhvbmUsXG4gICAgICBiaW5nOiBtZGlNaWNyb3NvZnRCaW5nLFxuICAgICAgeWFob286IG1kaVlhaG9vLFxuICAgfTtcblxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge31cblxuICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIiwiPGRpdiBjbGFzcz1cIm5neC1zZXJwLXRhYnNfX3BhbmVsXCI+XG4gICA8ZGl2IGNsYXNzPVwibmd4LXNlcnAtdGFic19fcGFuZWwtYnRuXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWJJbmRleCA9PT0gMFwiIChjbGljayk9XCJhY3RpdmVUYWJJbmRleCA9IDBcIj5cbiAgICAgIDxtZC1pY29uIFtpY29uXT1cImljb25zLmdvb2dsZVwiPjwvbWQtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibmd4LXNlcnAtdGFic19fcGFuZWwtbGFiZWxcIj5Hb29nbGU8L3NwYW4+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJuZ3gtc2VycC10YWJzX19wYW5lbC1idG5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYkluZGV4ID09PSAxXCIgKGNsaWNrKT1cImFjdGl2ZVRhYkluZGV4ID0gMVwiPlxuICAgICAgPG1kLWljb24gW2ljb25dPVwiaWNvbnMubW9iaWxlXCI+PC9tZC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtc2VycC10YWJzX19wYW5lbC1sYWJlbFwiPk1vYmlsZTwvc3Bhbj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzcz1cIm5neC1zZXJwLXRhYnNfX3BhbmVsLWJ0blwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiSW5kZXggPT09IDJcIiAoY2xpY2spPVwiYWN0aXZlVGFiSW5kZXggPSAyXCI+XG4gICAgICA8bWQtaWNvbiBbaWNvbl09XCJpY29ucy5iaW5nXCI+PC9tZC1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtc2VycC10YWJzX19wYW5lbC1sYWJlbFwiPkJpbmc8L3NwYW4+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJuZ3gtc2VycC10YWJzX19wYW5lbC1idG5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYkluZGV4ID09PSAzXCIgKGNsaWNrKT1cImFjdGl2ZVRhYkluZGV4ID0gM1wiPlxuICAgICAgPG1kLWljb24gW2ljb25dPVwiaWNvbnMueWFob29cIj48L21kLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cIm5neC1zZXJwLXRhYnNfX3BhbmVsLWxhYmVsXCI+WWFob288L3NwYW4+XG4gICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibmd4LXNlcnAtdGFic19fY29udGVudFwiPlxuICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWN0aXZlVGFiSW5kZXhcIj5cbiAgICAgIDxuZ3gtc2VycC1nb29nbGUgKm5nU3dpdGNoQ2FzZT1cIjBcIiBbc2l0ZU5hbWVdPVwic2l0ZU5hbWVcIiBbdGl0bGVdPVwidGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIiBbdXJsXT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmYXZpY29uVXJsXT1cImZhdmljb25VcmxcIj48L25neC1zZXJwLWdvb2dsZT5cblxuICAgICAgPG5neC1zZXJwLWdvb2dsZS1tb2JpbGUgKm5nU3dpdGNoQ2FzZT1cIjFcIiBbc2l0ZU5hbWVdPVwic2l0ZU5hbWVcIiBbdGl0bGVdPVwidGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIiBbdXJsXT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmF2aWNvblVybF09XCJmYXZpY29uVXJsXCI+PC9uZ3gtc2VycC1nb29nbGUtbW9iaWxlPlxuXG4gICAgICA8bmd4LXNlcnAtYmluZyAqbmdTd2l0Y2hDYXNlPVwiMlwiIFt0aXRsZV09XCJ0aXRsZVwiIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiIFt1cmxdPVwidXJsXCI+PC9uZ3gtc2VycC1iaW5nPlxuXG4gICAgICA8bmd4LXNlcnAteWFob28gKm5nU3dpdGNoQ2FzZT1cIjNcIiBbdGl0bGVdPVwidGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIiBbdXJsXT1cInVybFwiPjwvbmd4LXNlcnAteWFob28+XG4gICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19