@eui/showcase 18.0.0-rc.4 → 18.0.0-rc.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/components/doc-page/doc-page-dev-guide.component.mjs +97 -0
  2. package/esm2022/lib/components/doc-page/doc-page.component.mjs +23 -22
  3. package/esm2022/lib/components/doc-page-code-fab/doc-page-code-fab.component.mjs +3 -3
  4. package/esm2022/lib/components/doc-page-pattern/doc-page-pattern.component.mjs +3 -3
  5. package/esm2022/lib/components/doc-sample/doc-sample.component.mjs +4 -4
  6. package/esm2022/lib/components/doc-section/doc-section.component.mjs +2 -2
  7. package/esm2022/lib/components/doc-section-code/doc-section-code.component.mjs +1 -1
  8. package/esm2022/lib/components/index.mjs +2 -1
  9. package/esm2022/lib/components/lorem-ipsum/lorem-ipsum-sample.component.mjs +3 -3
  10. package/esm2022/lib/components/playground/stackblitz.files.mjs +73 -64
  11. package/esm2022/lib/components/playground/stackblitz.service.mjs +5 -5
  12. package/esm2022/lib/eui-showcase.module.mjs +12 -4
  13. package/fesm2022/eui-showcase.mjs +211 -104
  14. package/fesm2022/eui-showcase.mjs.map +1 -1
  15. package/lib/components/doc-page/doc-page-dev-guide.component.d.ts +30 -0
  16. package/lib/components/doc-page/doc-page-dev-guide.component.d.ts.map +1 -0
  17. package/lib/components/doc-page/doc-page.component.d.ts +1 -0
  18. package/lib/components/doc-page/doc-page.component.d.ts.map +1 -1
  19. package/lib/components/doc-sample/doc-sample.component.d.ts.map +1 -1
  20. package/lib/components/index.d.ts +1 -0
  21. package/lib/components/index.d.ts.map +1 -1
  22. package/lib/components/playground/stackblitz.files.d.ts +10 -2
  23. package/lib/components/playground/stackblitz.files.d.ts.map +1 -1
  24. package/lib/components/playground/stackblitz.service.d.ts.map +1 -1
  25. package/lib/eui-showcase.module.d.ts +25 -23
  26. package/lib/eui-showcase.module.d.ts.map +1 -1
  27. package/package.json +3 -3
@@ -0,0 +1,97 @@
1
+ import { Component, ViewEncapsulation, HostBinding } from '@angular/core';
2
+ import { map, take } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-markdown";
5
+ import * as i2 from "@angular/common/http";
6
+ import * as i3 from "@angular/router";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "@eui/components/eui-page";
9
+ export class DocPageDevGuideComponent {
10
+ constructor(markdownService, http, router, route) {
11
+ this.markdownService = markdownService;
12
+ this.http = http;
13
+ this.router = router;
14
+ this.route = route;
15
+ this.cssClass = 'eui-doc-page';
16
+ this.headers = [];
17
+ this.subscription = this.route.url.subscribe((u) => {
18
+ this._loadMdContent('/docs/' + u.join('/'));
19
+ });
20
+ // eslint-disable-next-line
21
+ this.markdownService.renderer.heading = (text, level, str) => {
22
+ if (level === 2 || level === 3) {
23
+ const newHeader = '<h' + level + ' id="' + str + '">' +
24
+ text +
25
+ '</h' + level + '>';
26
+ console.log(text);
27
+ if (text.indexOf('<a ') === -1 && text.indexOf('<em>') === -1) {
28
+ this.headers.push({ id: str, label: text, level });
29
+ }
30
+ return newHeader;
31
+ }
32
+ return '<h' + level + '>' +
33
+ text +
34
+ '</h' + level + '>';
35
+ };
36
+ }
37
+ ngAfterViewInit() {
38
+ this.route.fragment.pipe(take(1)).subscribe((fragment) => {
39
+ if (fragment) {
40
+ setTimeout(() => {
41
+ this.fragmentId = fragment;
42
+ const fgm = document.getElementById(fragment);
43
+ fgm.scrollIntoView();
44
+ }, 1);
45
+ }
46
+ });
47
+ }
48
+ ngOnDestroy() {
49
+ if (this.subscription) {
50
+ this.subscription.unsubscribe();
51
+ }
52
+ }
53
+ onNavClick(fragmentId) {
54
+ this._scrollToFragment(fragmentId);
55
+ }
56
+ _loadMdContent(url) {
57
+ let mdPath, contextRoot;
58
+ const currentUrl = window.location;
59
+ const pathNameArray = currentUrl.pathname.split('/');
60
+ this.headers = [];
61
+ if (url) {
62
+ mdPath = url.substr(1);
63
+ }
64
+ else {
65
+ mdPath = pathNameArray.slice(pathNameArray.length - 3).join('/');
66
+ }
67
+ contextRoot = `${currentUrl.protocol}//${currentUrl.host}`;
68
+ if (pathNameArray[1] !== 'showcase-dev-guide') {
69
+ contextRoot += `/${pathNameArray[1]}`;
70
+ }
71
+ const filePath = `${contextRoot}/assets/${mdPath}.md`;
72
+ this.http.get(filePath, { responseType: 'text' }).pipe(map((md) => md.replace(new RegExp('assets/docs', 'g'), `${contextRoot}/assets/docs`))).subscribe((md) => this.markdown = md);
73
+ }
74
+ _scrollToFragment(fragmentId) {
75
+ // forcing reload when deep link with fragment
76
+ this.router.onSameUrlNavigation = 'reload';
77
+ this.router.navigate(['.'], { relativeTo: this.route, fragment: fragmentId });
78
+ if (fragmentId) {
79
+ setTimeout(() => {
80
+ const fgm = document.getElementById(fragmentId);
81
+ if (fgm) {
82
+ fgm.scrollIntoView();
83
+ }
84
+ });
85
+ }
86
+ }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DocPageDevGuideComponent, deps: [{ token: i1.MarkdownService }, { token: i2.HttpClient }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: DocPageDevGuideComponent, selector: "eui-showcase-doc-page-dev-guide", host: { properties: { "class": "this.cssClass" } }, ngImport: i0, template: "<eui-page>\n <eui-page-content>\n <eui-page-columns>\n <eui-page-column>\n <eui-page-column-body>\n <markdown class=\"doc-content\" [data]=\"markdown\"></markdown>\n </eui-page-column-body>\n </eui-page-column>\n\n <eui-page-column class=\"eui-u-hidden-mobile\"\n label=\"On this page\"\n size=\"4xl\"\n isCollapsible\n isRightCollapsible>\n\n <eui-page-column-body>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <li class=\"doc-page-navigation-item\"\n *ngFor=\"let header of headers\" (click)=\"onNavClick(header.id)\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === header.id\">\n <span [ngClass]=\"header.level === 3 ? 'eui-u-ml-m eui-u-f-regular': ''\">\n {{header.label}}\n </span>\n </li>\n </ul>\n </div>\n </eui-page-column-body>\n\n </eui-page-column>\n\n </eui-page-columns>\n </eui-page-content>\n</eui-page>\n", styles: [".eui-doc-page .eui-tab-content{padding-left:var(--eui-s-s)!important;padding-right:var(--eui-s-xs)!important}.eui-doc-page .eui-doc-page-title .eui-common-header__label-text{font:var(--eui-f-2xl)!important}.eui-doc-page .doc-page-navigation,.eui-doc-page .doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.eui-doc-page .doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;white-space:nowrap;list-style:none}.eui-doc-page .doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-s-s)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-neutral-lightest)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-c-info-bg);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.eui-doc-page .doc-page-navigation .doc-page-navigation-category{padding-left:var(--eui-s-m);color:var(--eui-c-text);margin-top:var(--eui-s-s);font-weight:700;text-transform:capitalize}.eui-doc-page .doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.eui-doc-page .doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-darker);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.eui-doc-page .doc-page-section-subtitle{font:var(--eui-f-l-bold);letter-spacing:-.25px;margin:var(--eui-s-2xl) 0 var(--eui-s-s);padding-bottom:var(--eui-s-2xs);width:auto;display:table;color:var(--eui-c-neutral)}.eui-doc-page .doc-content h2{color:var(--eui-c-info-dark);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h3{color:var(--eui-c-neutral);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h4{margin-top:var(--eui-s-xl);text-decoration:underline;color:var(--eui-c-neutral-light)}.eui-doc-page .doc-content h5{font:var(--eui-f-bold);font-style:italic}.eui-doc-page .doc-content ul{margin-top:1rem}.eui-doc-page .doc-content ul li{list-style:circle;margin-left:2rem}.eui-doc-page .doc-content ol{list-style:none;counter-reset:item;margin-top:1rem}.eui-doc-page .doc-content ol li{counter-increment:item;margin-bottom:1rem}.eui-doc-page .doc-content ol li:before{margin-right:1.25rem;content:counter(item);background:var(--eui-c-info-dark);border-radius:50%;color:#fff;width:2rem;height:2rem;text-align:center;display:inline-block;font-size:1.25rem;font-weight:600}.eui-doc-page .doc-content ol li p:first-child{display:inline-block}.eui-doc-page .doc-content ol ol li{margin-top:1rem}.eui-doc-page .doc-content ol ol li:before{margin-left:20px;width:1.25rem;font-size:1rem;font-weight:400;background:transparent;color:var(--eui-c-info-dark);line-height:1.5rem}.eui-doc-page .doc-content em{color:var(--eui-c-danger);font-style:normal;font-weight:700}.eui-doc-page .doc-content em.info{color:var(--eui-c-info-dark)}.eui-doc-page .doc-content em.warning{color:var(--eui-c-warning)}.eui-doc-page .doc-content table{border-collapse:collapse;width:100%}.eui-doc-page .doc-content table,.eui-doc-page .doc-content th,.eui-doc-page .doc-content td{padding:.25rem;border:1px solid var(--eui-c-neutral-light)}.eui-doc-page .doc-content td{text-align:left}.eui-doc-page .doc-content code.language-none{display:inline-block;background-color:var(--eui-c-neutral-bg-light)}.eui-doc-page .doc-content img{max-width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i5.EuiPageColumnComponent, selector: "eui-page-column", inputs: ["size", "label", "subLabel", "autocloseContainerWidth", "expandAriaLabel", "collapseAriaLabel", "isCollapsible", "isCollapsed", "isRightCollapsible", "isHighlighted", "isCollapsedWithIcons", "hasSidebarMenu", "hasHeaderBodyShrinkable", "isAutocloseOnContainerResize"], outputs: ["collapse", "headerCollapse"] }, { kind: "directive", type: i5.EuiPageColumnBodyContentDirective, selector: "eui-page-column-body" }, { kind: "component", type: i5.EuiPageColumnsComponent, selector: "eui-page-columns" }, { kind: "component", type: i5.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i1.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }], encapsulation: i0.ViewEncapsulation.None }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DocPageDevGuideComponent, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: 'eui-showcase-doc-page-dev-guide', encapsulation: ViewEncapsulation.None, template: "<eui-page>\n <eui-page-content>\n <eui-page-columns>\n <eui-page-column>\n <eui-page-column-body>\n <markdown class=\"doc-content\" [data]=\"markdown\"></markdown>\n </eui-page-column-body>\n </eui-page-column>\n\n <eui-page-column class=\"eui-u-hidden-mobile\"\n label=\"On this page\"\n size=\"4xl\"\n isCollapsible\n isRightCollapsible>\n\n <eui-page-column-body>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <li class=\"doc-page-navigation-item\"\n *ngFor=\"let header of headers\" (click)=\"onNavClick(header.id)\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === header.id\">\n <span [ngClass]=\"header.level === 3 ? 'eui-u-ml-m eui-u-f-regular': ''\">\n {{header.label}}\n </span>\n </li>\n </ul>\n </div>\n </eui-page-column-body>\n\n </eui-page-column>\n\n </eui-page-columns>\n </eui-page-content>\n</eui-page>\n", styles: [".eui-doc-page .eui-tab-content{padding-left:var(--eui-s-s)!important;padding-right:var(--eui-s-xs)!important}.eui-doc-page .eui-doc-page-title .eui-common-header__label-text{font:var(--eui-f-2xl)!important}.eui-doc-page .doc-page-navigation,.eui-doc-page .doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.eui-doc-page .doc-page-navigation .doc-page-navigation-item{color:var(--eui-c-info-darker);cursor:pointer;overflow:hidden;padding:var(--eui-s-3xs);text-overflow:ellipsis;white-space:nowrap;list-style:none}.eui-doc-page .doc-page-navigation .doc-page-navigation-item span{font-weight:700;color:var(--eui-c-info-darker);padding-left:var(--eui-s-xs)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-s-s)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-c-neutral-bg-light);border-left:2px solid var(--eui-c-neutral-lightest)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-c-info-bg);border-left:2px solid var(--eui-c-info-darker)}.eui-doc-page .doc-page-navigation .doc-page-navigation-item-sub{padding-left:var(--eui-s-l)}.eui-doc-page .doc-page-navigation .doc-page-navigation-category{padding-left:var(--eui-s-m);color:var(--eui-c-text);margin-top:var(--eui-s-s);font-weight:700;text-transform:capitalize}.eui-doc-page .doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}.eui-doc-page .doc-page-section-title{margin-top:var(--eui-s-2xl);margin-bottom:var(--eui-s-xl);color:var(--eui-c-info-darker);letter-spacing:-1px;font:var(--eui-f-2xl-bold)}.eui-doc-page .doc-page-section-subtitle{font:var(--eui-f-l-bold);letter-spacing:-.25px;margin:var(--eui-s-2xl) 0 var(--eui-s-s);padding-bottom:var(--eui-s-2xs);width:auto;display:table;color:var(--eui-c-neutral)}.eui-doc-page .doc-content h2{color:var(--eui-c-info-dark);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h3{color:var(--eui-c-neutral);margin-top:var(--eui-s-3xl)}.eui-doc-page .doc-content h4{margin-top:var(--eui-s-xl);text-decoration:underline;color:var(--eui-c-neutral-light)}.eui-doc-page .doc-content h5{font:var(--eui-f-bold);font-style:italic}.eui-doc-page .doc-content ul{margin-top:1rem}.eui-doc-page .doc-content ul li{list-style:circle;margin-left:2rem}.eui-doc-page .doc-content ol{list-style:none;counter-reset:item;margin-top:1rem}.eui-doc-page .doc-content ol li{counter-increment:item;margin-bottom:1rem}.eui-doc-page .doc-content ol li:before{margin-right:1.25rem;content:counter(item);background:var(--eui-c-info-dark);border-radius:50%;color:#fff;width:2rem;height:2rem;text-align:center;display:inline-block;font-size:1.25rem;font-weight:600}.eui-doc-page .doc-content ol li p:first-child{display:inline-block}.eui-doc-page .doc-content ol ol li{margin-top:1rem}.eui-doc-page .doc-content ol ol li:before{margin-left:20px;width:1.25rem;font-size:1rem;font-weight:400;background:transparent;color:var(--eui-c-info-dark);line-height:1.5rem}.eui-doc-page .doc-content em{color:var(--eui-c-danger);font-style:normal;font-weight:700}.eui-doc-page .doc-content em.info{color:var(--eui-c-info-dark)}.eui-doc-page .doc-content em.warning{color:var(--eui-c-warning)}.eui-doc-page .doc-content table{border-collapse:collapse;width:100%}.eui-doc-page .doc-content table,.eui-doc-page .doc-content th,.eui-doc-page .doc-content td{padding:.25rem;border:1px solid var(--eui-c-neutral-light)}.eui-doc-page .doc-content td{text-align:left}.eui-doc-page .doc-content code.language-none{display:inline-block;background-color:var(--eui-c-neutral-bg-light)}.eui-doc-page .doc-content img{max-width:100%}\n"] }]
93
+ }], ctorParameters: () => [{ type: i1.MarkdownService }, { type: i2.HttpClient }, { type: i3.Router }, { type: i3.ActivatedRoute }], propDecorators: { cssClass: [{
94
+ type: HostBinding,
95
+ args: ['class']
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UtZGV2LWd1aWRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS1kZXYtZ3VpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLWRldi1ndWlkZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVMzQyxNQUFNLE9BQU8sd0JBQXdCO0lBU2pDLFlBQ1ksZUFBZ0MsRUFDaEMsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLEtBQXFCO1FBSHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQVpYLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFJaEQsWUFBTyxHQUF3RCxFQUFFLENBQUM7UUFVOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7UUFFRiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN6RSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSTtvQkFDakQsSUFBSTtvQkFDSixLQUFLLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztnQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztnQkFDRCxPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDO1lBQ0QsT0FBTyxJQUFJLEdBQUcsS0FBSyxHQUFHLEdBQUc7Z0JBQ3JCLElBQUk7Z0JBQ0osS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO29CQUMzQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM5QyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFrQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFZO1FBQy9CLElBQUksTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUN4QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDTixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxXQUFXLEdBQUcsR0FBRyxVQUFVLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLFdBQVcsSUFBSSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLFdBQVcsV0FBVyxNQUFNLEtBQUssQ0FBQztRQUV0RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsV0FBVyxjQUFjLENBQUMsQ0FBQyxDQUN4RixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBa0I7UUFDeEMsOENBQThDO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUU5RSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNOLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7OEdBakdRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDJIQ2JyQyw0M0NBa0NBOzsyRkRyQmEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLGlDQUFpQyxpQkFHNUIsaUJBQWlCLENBQUMsSUFBSTsrSkFHZixRQUFRO3NCQUE3QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJ25neC1tYXJrZG93bic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXNob3djYXNlLWRvYy1wYWdlLWRldi1ndWlkZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvYy1wYWdlLWRldi1ndWlkZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2hhcmVkLnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlRGV2R3VpZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjc3NDbGFzcyA9ICdldWktZG9jLXBhZ2UnO1xuXG4gICAgbWFya2Rvd246IHN0cmluZztcbiAgICBpc0ZpcnN0OiBib29sZWFuO1xuICAgIGhlYWRlcnM6IEFycmF5PHsgaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZywgbGV2ZWw6IG51bWJlciB9PiA9IFtdO1xuICAgIGZyYWdtZW50SWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbWFya2Rvd25TZXJ2aWNlOiBNYXJrZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS51cmwuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkTWRDb250ZW50KCcvZG9jcy8nICsgdS5qb2luKCcvJykpO1xuICAgICAgICB9KVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB0aGlzLm1hcmtkb3duU2VydmljZS5yZW5kZXJlci5oZWFkaW5nID0gKHRleHQ6IHN0cmluZywgbGV2ZWw6IG51bWJlciwgc3RyKSA9PiB7XG4gICAgICAgICAgICBpZiAobGV2ZWwgPT09IDIgfHwgbGV2ZWwgPT09IDMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdIZWFkZXIgPSAnPGgnICsgbGV2ZWwgKyAnIGlkPVwiJyArIHN0ciArICdcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCArXG4gICAgICAgICAgICAgICAgICAgICc8L2gnICsgbGV2ZWwgKyAnPic7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmluZGV4T2YoJzxhICcpID09PSAtMSAmJiB0ZXh0LmluZGV4T2YoJzxlbT4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJzLnB1c2goeyBpZDogc3RyLCBsYWJlbDogdGV4dCwgbGV2ZWwgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdIZWFkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJzxoJyArIGxldmVsICsgJz4nICtcbiAgICAgICAgICAgICAgICB0ZXh0ICtcbiAgICAgICAgICAgICAgICAnPC9oJyArIGxldmVsICsgJz4nO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5mcmFnbWVudC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZnJhZ21lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChmcmFnbWVudCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSBmcmFnbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmdtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICBmZ20uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmF2Q2xpY2soZnJhZ21lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQoZnJhZ21lbnRJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZE1kQ29udGVudCh1cmw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbGV0IG1kUGF0aCwgY29udGV4dFJvb3Q7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lQXJyYXkgPSBjdXJyZW50VXJsLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgdGhpcy5oZWFkZXJzID0gW107XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgbWRQYXRoID0gdXJsLnN1YnN0cigxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1kUGF0aCA9IHBhdGhOYW1lQXJyYXkuc2xpY2UocGF0aE5hbWVBcnJheS5sZW5ndGggLSAzKS5qb2luKCcvJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Um9vdCA9IGAke2N1cnJlbnRVcmwucHJvdG9jb2x9Ly8ke2N1cnJlbnRVcmwuaG9zdH1gO1xuICAgICAgICBpZiAocGF0aE5hbWVBcnJheVsxXSAhPT0gJ3Nob3djYXNlLWRldi1ndWlkZScpIHtcbiAgICAgICAgICAgIGNvbnRleHRSb290ICs9IGAvJHtwYXRoTmFtZUFycmF5WzFdfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGAke2NvbnRleHRSb290fS9hc3NldHMvJHttZFBhdGh9Lm1kYDtcblxuICAgICAgICB0aGlzLmh0dHAuZ2V0PHN0cmluZz4oZmlsZVBhdGgsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgYXMgJ2pzb24nIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1kKSA9PiBtZC5yZXBsYWNlKG5ldyBSZWdFeHAoJ2Fzc2V0cy9kb2NzJywgJ2cnKSwgYCR7Y29udGV4dFJvb3R9L2Fzc2V0cy9kb2NzYCkpLFxuICAgICAgICApLnN1YnNjcmliZSgobWQpID0+IHRoaXMubWFya2Rvd24gPSBtZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9GcmFnbWVudChmcmFnbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gZm9yY2luZyByZWxvYWQgd2hlbiBkZWVwIGxpbmsgd2l0aCBmcmFnbWVudFxuICAgICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIGZyYWdtZW50OiBmcmFnbWVudElkIH0pO1xuXG4gICAgICAgIGlmIChmcmFnbWVudElkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZ20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmcmFnbWVudElkKTtcbiAgICAgICAgICAgICAgICBpZiAoZmdtKSB7XG4gICAgICAgICAgICAgICAgICAgIGZnbS5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGV1aS1wYWdlPlxuICAgIDxldWktcGFnZS1jb250ZW50PlxuICAgICAgICA8ZXVpLXBhZ2UtY29sdW1ucz5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGV1aS1wYWdlLWNvbHVtbi1ib2R5PlxuICAgICAgICAgICAgICAgICAgICA8bWFya2Rvd24gY2xhc3M9XCJkb2MtY29udGVudFwiIFtkYXRhXT1cIm1hcmtkb3duXCI+PC9tYXJrZG93bj5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbi1ib2R5PlxuICAgICAgICAgICAgPC9ldWktcGFnZS1jb2x1bW4+XG5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4gY2xhc3M9XCJldWktdS1oaWRkZW4tbW9iaWxlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIk9uIHRoaXMgcGFnZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjR4bFwiXG4gICAgICAgICAgICAgICAgaXNDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGlzUmlnaHRDb2xsYXBzaWJsZT5cblxuICAgICAgICAgICAgICAgIDxldWktcGFnZS1jb2x1bW4tYm9keT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29udGVudFwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgaGVhZGVyc1wiIChjbGljayk9XCJvbk5hdkNsaWNrKGhlYWRlci5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSBoZWFkZXIuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImhlYWRlci5sZXZlbCA9PT0gMyA/ICdldWktdS1tbC1tIGV1aS11LWYtcmVndWxhcic6ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3toZWFkZXIubGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbi1ib2R5PlxuXG4gICAgICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbj5cblxuICAgICAgICA8L2V1aS1wYWdlLWNvbHVtbnM+XG4gICAgPC9ldWktcGFnZS1jb250ZW50PlxuPC9ldWktcGFnZT5cbiJdfQ==