@magicx-eng/ai-autocomplete-angular 0.40.1 → 0.40.2
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.
- package/README.md +3 -2
- package/esm2020/lib/ai-autocomplete/ai-autocomplete.component.mjs +3 -3
- package/esm2020/lib/internal/product-strip/product-strip.component.mjs +13 -3
- package/esm2020/lib/internal/suggestion-item/suggestion-item.component.mjs +13 -3
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +26 -6
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +26 -6
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/internal/product-strip/product-strip.component.d.ts +5 -0
- package/lib/internal/product-strip/product-strip.component.d.ts.map +1 -1
- package/lib/internal/suggestion-item/suggestion-item.component.d.ts +5 -0
- package/lib/internal/suggestion-item/suggestion-item.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -46,6 +46,8 @@ export class ProductStripComponent {
|
|
|
46
46
|
* placeholder once none is left.
|
|
47
47
|
*/
|
|
48
48
|
this.failedImages = new Map();
|
|
49
|
+
/** Per product id, the `src` that last finished loading; its tile drops the fill. */
|
|
50
|
+
this.loadedImages = new Map();
|
|
49
51
|
this.select = new EventEmitter();
|
|
50
52
|
/**
|
|
51
53
|
* Focus moved into / out of the strip. The panel closes on blur by default
|
|
@@ -69,6 +71,14 @@ export class ProductStripComponent {
|
|
|
69
71
|
const failed = this.failedImages.get(product.id) ?? [];
|
|
70
72
|
return productImageSources(product.imageUrl).find((src) => !failed.includes(src)) ?? null;
|
|
71
73
|
}
|
|
74
|
+
/** Whether the card's photo has loaded, so the placeholder fill steps aside. */
|
|
75
|
+
imageLoaded(product) {
|
|
76
|
+
const src = this.imageSource(product);
|
|
77
|
+
return src !== null && this.loadedImages.get(product.id) === src;
|
|
78
|
+
}
|
|
79
|
+
onImageLoad(product, src) {
|
|
80
|
+
this.loadedImages.set(product.id, src);
|
|
81
|
+
}
|
|
72
82
|
onImageError(product) {
|
|
73
83
|
const src = this.imageSource(product);
|
|
74
84
|
if (src)
|
|
@@ -120,10 +130,10 @@ export class ProductStripComponent {
|
|
|
120
130
|
}
|
|
121
131
|
}
|
|
122
132
|
ProductStripComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
-
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback", strings: "strings" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">{{ strings.products }}</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">{{ strings.soldOut }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:contain}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
133
|
+
ProductStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ProductStripComponent, isStandalone: true, selector: "aia-product-strip", inputs: { products: "products", listboxId: "listboxId", focusable: "focusable", layout: "layout", imageFallback: "imageFallback", strings: "strings" }, outputs: { select: "select", focusChange: "focusChange" }, viewQueries: [{ propertyName: "row", first: true, predicate: ["row"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">{{ strings.products }}</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n [attr.data-aia-image-loaded]=\"imageLoaded(product) ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (load)=\"onImageLoad(product, src)\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">{{ strings.soldOut }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-media[data-aia-image-loaded]{background:transparent}.aia-product-image{display:block;width:auto;max-width:100%;height:100%;margin:0 auto;border-radius:var(--aia-product-image-radius, 8px);object-fit:contain}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
124
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProductStripComponent, decorators: [{
|
|
125
135
|
type: Component,
|
|
126
|
-
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">{{ strings.products }}</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">{{ strings.soldOut }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-image{display:block;width:100%;height:100%;object-fit:contain}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"] }]
|
|
136
|
+
args: [{ selector: "aia-product-strip", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- `group` is the one role a listbox accepts around a set of options, so the\n strip stays inside the listbox without breaking its content model. -->\n<section\n *ngIf=\"products.length > 0\"\n class=\"aia-products\"\n data-aia-products=\"\"\n [attr.data-aia-products-layout]=\"layout\"\n role=\"group\"\n [attr.aria-labelledby]=\"labelId\"\n>\n <!-- data-aia-products-label: the scroll arrow centres itself on this row. -->\n <div class=\"aia-products-label\" [id]=\"labelId\" data-aia-products-label=\"\">{{ strings.products }}</div>\n\n <!-- #row: the component binds wheel-to-sideways scrolling on it. -->\n <div #row class=\"aia-products-row\" data-aia-products-row=\"\">\n <!-- A real <a href> rather than a <div>: it keeps the browser's own link\n affordances \u2014 cmd/ctrl-click for a new tab, middle-click, right-click \u2192\n \"copy link address\". role=\"option\" overrides how assistive tech\n announces it, which is correct inside a listbox; the deliberate trade\n is that AT no longer calls it a link. An attribute binding, so a\n product without a url gets no href at all rather than \"null\". -->\n <a\n *ngFor=\"let product of products; let i = index; trackBy: trackByProduct\"\n [id]=\"cardId(i)\"\n class=\"aia-product\"\n data-aia-product=\"\"\n [attr.data-aia-product-sold-out]=\"product.available === false ? '' : null\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.href]=\"product.url ?? null\"\n [attr.tabindex]=\"focusable ? 0 : -1\"\n (click)=\"onClick($event, product)\"\n (keydown)=\"onKeyDown($event, product)\"\n (focus)=\"onCardFocus()\"\n (blur)=\"onCardBlur($event)\"\n >\n <span\n class=\"aia-product-media\"\n aria-hidden=\"true\"\n [attr.data-aia-product-placeholder]=\"!imageSource(product) && imageFallback === 'image' ? '' : null\"\n [attr.data-aia-product-initial]=\"!imageSource(product) && imageFallback === 'initial' ? '' : null\"\n [attr.data-aia-image-loaded]=\"imageLoaded(product) ? '' : null\"\n >\n <!-- alt=\"\" on purpose: the title is already the card's accessible\n name, and repeating it would have a screen reader read it twice. -->\n <img\n *ngIf=\"imageSource(product) as src\"\n class=\"aia-product-image\"\n [src]=\"src\"\n (load)=\"onImageLoad(product, src)\"\n (error)=\"onImageError(product)\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n <ng-container *ngIf=\"!imageSource(product) && imageFallback === 'initial'\">{{ initial(product.title) }}</ng-container>\n </span>\n\n <!-- Every field but the title is optional, so absent ones render no\n element at all \u2014 the column gap can't leave a hole for a box that\n isn't there. -->\n <span class=\"aia-product-body\">\n <span *ngIf=\"product.vendor\" class=\"aia-product-vendor\">{{ product.vendor }}</span>\n <span class=\"aia-product-title\">{{ product.title }}</span>\n <span *ngIf=\"product.price\" class=\"aia-product-price\">{{ product.price }}</span>\n <!-- In the text column rather than the aria-hidden media tile, so the\n card's accessible name says it; the stylesheet lifts it over the\n image. -->\n <span *ngIf=\"product.available === false\" class=\"aia-product-badge\">{{ strings.soldOut }}</span>\n </span>\n </a>\n </div>\n</section>\n", styles: [".aia-products{display:flex;flex-direction:column;gap:6px;padding:0 10px;min-width:0}.aia-products-label{font-family:inherit;font-size:var(--aia-products-label-font-size, 11px);font-weight:500;line-height:18px;letter-spacing:.02em;color:var( --aia-products-label-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) )}.aia-products-row{display:flex;gap:var(--aia-product-gap, 8px);min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:2px;margin-inline:-6px;scrollbar-width:none;-ms-overflow-style:none}.aia-products-row::-webkit-scrollbar{display:none}.aia-product{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;width:var(--aia-product-card-width, 116px);padding:6px;border-radius:10px;background:var(--aia-product-bg, transparent);color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));text-decoration:none;cursor:pointer;transition:background-color .15s ease;position:relative}.aia-product:hover{background:var(--aia-product-bg-active, var(--aia-option-bg, transparent))}.aia-product:focus-visible{outline:2px solid var(--aia-product-focus-ring, var(--aia-option-color-selected, currentColor));outline-offset:-2px}.aia-product-media{display:block;position:relative;width:100%;aspect-ratio:1 / 1;border-radius:8px;overflow:hidden;background:var(--aia-product-media-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .25)))}.aia-product-media[data-aia-image-loaded]{background:transparent}.aia-product-image{display:block;width:auto;max-width:100%;height:100%;margin:0 auto;border-radius:var(--aia-product-image-radius, 8px);object-fit:contain}.aia-product-media:where([data-aia-product-initial]){display:flex;align-items:center;justify-content:center;color:var(--aia-product-title-color, var(--aia-option-color-selected, currentColor));font-size:24px;font-weight:600;line-height:1}.aia-product-media[data-aia-product-placeholder]:after{content:\"\";position:absolute;inset:22%;background:var( --aia-product-placeholder-image, url(\"data:image/svg+xml,%3Csvg viewBox='0 -0.5 32 32' fill-rule='evenodd' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='matrix(1,0,0,1,-384,-144)'%3E%3Cg transform='matrix(0.875,0,0,0.875,90.25,19.125)'%3E%3Cpath d='M340.924,147.74C341.224,146.789 342.107,146.143 343.104,146.143C347.705,146.143 360.491,146.143 364.985,146.143C365.965,146.143 366.836,146.768 367.15,147.697C368.119,150.386 370,155.73 370,157C370,159.208 368.208,161 366,161C363.792,161 362,159.208 362,157C362,159.208 360.208,161 358,161C355.792,161 354,159.208 354,157C354,159.208 352.208,161 350,161C347.792,161 346,159.208 346,157C346,159.208 344.208,161 342,161C340.53,161 339.244,160.205 338.549,159.022C338.057,158.185 337.944,157.179 338.236,156.254C338.787,154.507 340.172,150.121 340.924,147.74Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1.32454,48,-56.1457)'%3E%3Cpath d='M341.026,160.675C341.026,160.675 341.01,168.196 341.003,171.488C341.002,171.889 341.213,172.273 341.588,172.557C341.963,172.841 342.472,173 343.003,173C347.188,173 356.817,173 361,173C361.53,173 362.039,172.841 362.414,172.558C362.789,172.275 363,171.891 363,171.49C363,168.2 363,160.675 363,160.675' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1,0,0,1,48,0)'%3E%3Cpath d='M355,168C355,166.895 354.105,166 353,166C352.356,166 351.644,166 351,166C349.895,166 349,166.895 349,168C349,170.069 349,173 349,173L355,173L355,168Z' fill='%2390e0ef'%3E%3C/path%3E%3C/g%3E%3Cg transform='matrix(1.11111,0,0,1.11111,-47.2678,-87.5361)'%3E%3Ccircle cx='411.5' cy='213.5' r='4.5' fill='%2390e0ef'%3E%3C/circle%3E%3C/g%3E%3Cpath d='M405.529,146C406.628,144.773 408.225,144 410,144C413.311,144 416,146.689 416,150C416,151.549 415.412,152.962 414.446,154.027C414.775,155.15 415,156.076 415,156.5C415,158.459 413.746,160.127 411.998,160.744L411.998,171C411.998,171.796 411.682,172.559 411.119,173.121C410.557,173.684 409.794,174 408.998,174L391.002,174C390.205,174 389.441,173.683 388.879,173.119C388.316,172.555 388,171.79 388.002,170.994L388.024,160.752C387.007,160.399 386.155,159.691 385.618,158.776L385.618,158.776C385.044,157.799 384.912,156.626 385.253,155.546L387.605,148.097C387.999,146.849 389.157,146 390.466,146L405.529,146ZM409.998,160.972C408.79,160.838 407.726,160.225 407,159.327C406.175,160.347 404.913,161 403.5,161C402.087,161 400.825,160.347 400,159.327C399.175,160.347 397.913,161 396.5,161C395.087,161 393.825,160.347 393,159.327C392.278,160.219 391.222,160.831 390.023,160.97L390.002,170.998C390.002,171.263 390.107,171.518 390.294,171.706C390.482,171.894 390.736,172 391.002,172L396,172L396,168C396,166.343 397.343,165 399,165L401,165C402.657,165 404,166.343 404,168L404,172L408.998,172C409.263,172 409.517,171.895 409.705,171.707C409.893,171.52 409.998,171.265 409.998,171L409.998,160.972ZM402,172L398,172L398,168C398,167.448 398.448,167 399,167C399,167 401,167 401,167C401.552,167 402,167.448 402,168L402,172ZM404.342,148L390.466,148C390.03,148 389.644,148.283 389.512,148.699L387.16,156.148C386.99,156.688 387.056,157.275 387.342,157.763C387.777,158.503 388.581,159 389.5,159C390.88,159 392,157.88 392,156.5C392,155.003 394,155.003 394,156.5C394,157.88 395.12,159 396.5,159C397.88,159 399,157.88 399,156.5C399,155.004 401,155.004 401,156.5C401,157.88 402.12,159 403.5,159C404.88,159 406,157.88 406,156.5C406,154.986 408,154.986 408,156.5C408,157.88 409.12,159 410.5,159C411.88,159 413,157.88 413,156.5C413,156.259 412.917,155.843 412.779,155.318C411.948,155.753 411.003,156 410,156C406.689,156 404,153.311 404,150C404,149.299 404.12,148.626 404.342,148ZM410,146C412.208,146 414,147.792 414,150C414,152.208 412.208,154 410,154C407.792,154 406,152.208 406,150C406,147.792 407.792,146 410,146ZM407.543,151.207L408.546,152.21C408.733,152.397 408.988,152.503 409.253,152.503C409.519,152.503 409.773,152.397 409.961,152.209L412.458,149.706C412.848,149.316 412.847,148.682 412.456,148.292C412.066,147.902 411.432,147.903 411.042,148.294L409.252,150.088C409.252,150.088 408.957,149.793 408.957,149.793C408.567,149.403 407.933,149.403 407.543,149.793C407.153,150.183 407.153,150.817 407.543,151.207Z' fill='%231990a7'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\") ) center / contain no-repeat}.aia-product-body{display:flex;flex-direction:column;gap:2px;min-width:0}.aia-product-vendor{font-family:inherit;font-size:var(--aia-product-vendor-font-size, 10px);line-height:14px;color:var( --aia-product-vendor-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );opacity:.8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aia-product-title{font-family:inherit;font-size:var(--aia-product-title-font-size, 12px);font-weight:400;line-height:16px;color:var( --aia-product-title-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) );display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.aia-product-price{font-family:inherit;font-size:var(--aia-product-price-font-size, 11px);font-weight:500;line-height:15px;color:var( --aia-product-price-color, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}.aia-product-badge{position:absolute;top:var(--aia-product-badge-inset, 12px);left:var(--aia-product-badge-inset, 12px);padding:3px 6px;border-radius:4px;background:var(--aia-product-badge-bg, rgba(255, 255, 255, .94));color:var(--aia-product-badge-color, #1f2328);box-shadow:0 0 0 1px #00000014,0 1px 2px #0000002e;font-family:inherit;font-size:var(--aia-product-badge-font-size, 9px);font-weight:600;line-height:1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;pointer-events:none}.aia-product[data-aia-product-sold-out] .aia-product-image{filter:grayscale(.55)}.aia-products[data-aia-products-layout=list] .aia-products-row{flex-direction:column;gap:var(--aia-product-list-gap, 2px);max-height:var(--aia-product-list-max-height, 320px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain}.aia-products[data-aia-products-layout=list] .aia-product{flex-direction:row;align-items:center;gap:10px;width:auto;padding:6px 8px}.aia-products[data-aia-products-layout=list] .aia-product-media{flex:0 0 auto;width:var(--aia-product-list-media-size, 44px);height:var(--aia-product-list-media-size, 44px)}.aia-products[data-aia-products-layout=list] .aia-product-body{flex:1 1 auto}.aia-products[data-aia-products-layout=list] .aia-product-badge{top:calc(50% + var(--aia-product-list-media-size, 44px) / 2);left:8px;width:var(--aia-product-list-media-size, 44px);transform:translateY(-100%);padding:2px 0;border-radius:0 0 8px 8px;background:var(--aia-product-badge-list-bg, rgba(17, 17, 17, .72));color:var(--aia-product-badge-list-color, #fff);box-shadow:none;font-size:var(--aia-product-badge-list-font-size, 7px);letter-spacing:.02em;text-align:center}\n"] }]
|
|
127
137
|
}], propDecorators: { products: [{
|
|
128
138
|
type: Input
|
|
129
139
|
}], listboxId: [{
|
|
@@ -144,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
144
154
|
type: ViewChild,
|
|
145
155
|
args: ["row"]
|
|
146
156
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBSXJCLG1CQUFtQixFQUNuQixjQUFjLEVBRWQsWUFBWSxHQUNiLE1BQU0scUNBQXFDLENBQUM7OztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVVILE1BQU0sT0FBTyxxQkFBcUI7SUFUbEM7UUFVVyxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ2xDLDJEQUEyRDtRQUNsRCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCOzs7O1dBSUc7UUFDTSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDhGQUE4RjtRQUNyRixXQUFNLEdBQW1CLEtBQUssQ0FBQztRQUMvQixrQkFBYSxHQUF5QixPQUFPLENBQUM7UUFDdkQsMERBQTBEO1FBQ2pELFlBQU8sR0FBYyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsY0FBYyxDQUFDO1FBQ2xDOzs7O1dBSUc7UUFDYyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBc0J6QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4RDs7Ozs7V0FLRztRQUNnQixnQkFBVyxHQUFH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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIHR5cGUgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgdHlwZSBPbkNoYW5nZXMsXG4gIHR5cGUgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBhdHRhY2hQcm9kdWN0Um93V2hlZWwsXG4gIHR5cGUgUHJvZHVjdCxcbiAgdHlwZSBQcm9kdWN0SW1hZ2VGYWxsYmFjayxcbiAgdHlwZSBQcm9kdWN0c0xheW91dCxcbiAgcHJvZHVjdEltYWdlU291cmNlcyxcbiAgcHJvZHVjdEluaXRpYWwsXG4gIHR5cGUgVUlTdHJpbmdzLFxuICB1aVN0cmluZ3NGb3IsXG59IGZyb20gXCJAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYVwiO1xuXG4vKipcbiAqIEludGVybmFsIHByb2R1Y3Qgc3RyaXAgcmVuZGVyZWQgYmVsb3cgdGhlIGRyb3Bkb3duJ3Mgb3B0aW9ucyBncmlkLiBNaXJyb3JzXG4gKiBgcGFja2FnZXMvcmVhY3Qvc3JjL2NvbXBvbmVudHMvUHJvZHVjdFN0cmlwLnRzeGAgYW5kIHRoZSB2YW5pbGxhIGNvcmUnc1xuICogYHJlbmRlclByb2R1Y3RTdHJpcGAsIHNvIGFsbCB0aHJlZSBwYWNrYWdlcyBlbWl0IHRoZSBzYW1lIHN0cnVjdHVyZSBhbmRcbiAqIHRoZW1lIGlkZW50aWNhbGx5LlxuICpcbiAqIFR3byBsYXlvdXQgbm90ZXMgY2FycmllZCBvdmVyIGZyb20gdGhlIHZhbmlsbGEgaW1wbGVtZW50YXRpb246XG4gKlxuICogLSBUaGUgZHJvcGRvd24gcGFpbnRzIGEgYmFja2dyb3VuZCBidXQgbmV2ZXIgc2V0cyBgY29sb3JgLCBzbyBhbnl0aGluZyBoZXJlXG4gKiAgIHJlbHlpbmcgb24gYGNvbG9yOiBpbmhlcml0YCB3b3VsZCBwaWNrIHVwIHRoZSAqaG9zdCBwYWdlJ3MqIHRleHQgY29sb3VyIOKAlFxuICogICBibGFjayB0ZXh0IG9uIGEgZGFyayBwYW5lbC4gRXZlcnkgdGV4dCBub2RlIHJlc29sdmVzIGl0cyBjb2xvdXIgdGhyb3VnaFxuICogICB0aGUgc2FtZSBgLS1haWEtb3B0aW9uLSpgIGNoYWluIHRoZSBvcHRpb25zIHVzZS5cbiAqIC0gVGhlIG9wdGlvbnMgZ3JpZCBjYXJyaWVzIGEgbmVnYXRpdmUgYm90dG9tIG1hcmdpbiBzbyB0aGUgZm9vdGVyIHJpZGVzIHVwXG4gKiAgIG92ZXIgaXRzIHJlc2VydmVkIGJhbmQsIGFuZCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBncmlkIGluaGVyaXRzIHRoYXQgcHVsbC5cbiAqICAgVGhlIGRyb3Bkb3duIHJvb3QgaXMgbWFya2VkIGBkYXRhLWFpYS1oYXMtcHJvZHVjdHNgIGFuZCB0aGUgYXBwZWFyYW5jZVxuICogICBsYXllciB6ZXJvZXMgdGhlIGJhbmQgYXQgaXRzIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgc3RyaXAgY2FuY2VsbGluZyBpdFxuICogICBmcm9tIGhlcmUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtcHJvZHVjdC1zdHJpcFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U3RyaXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb2R1Y3RzOiBQcm9kdWN0W10gPSBbXTtcbiAgLyoqIFNjb3BlcyB0aGUgc2VjdGlvbiBsYWJlbCdzIGlkIHRvIHRoZSBvd25pbmcgbGlzdGJveC4gKi9cbiAgQElucHV0KCkgbGlzdGJveElkID0gXCJcIjtcbiAgLyoqXG4gICAqIEZhbHNlIHdoaWxlIHRoZSBwYW5lbCBpcyBmYWRpbmcgb3V0LiBUaGUgY2xvc2VkIGRyb3Bkb3duIGtlZXBzIHJlbmRlcmluZ1xuICAgKiBpdHMgbGFzdCBjb250ZW50IGZvciB0aGUgZmFkZSwgYW5kIGZvY3VzYWJsZSBjYXJkcyBpbnNpZGUgaXQgd291bGQgc3RpbGxcbiAgICogYW5zd2VyIFRhYi5cbiAgICovXG4gIEBJbnB1dCgpIGZvY3VzYWJsZSA9IHRydWU7XG4gIC8qKiBIb3cgdGhlIGNhcmRzIGxheSBvdXQg4oCUIGEgc2Nyb2xsaW5nIHJvdywgb3Igc3RhY2tlZCBhcyBmdWxsLXdpZHRoIHJvd3MuIERlZmF1bHQ6IFwicm93XCIuICovXG4gIEBJbnB1dCgpIGxheW91dDogUHJvZHVjdHNMYXlvdXQgPSBcInJvd1wiO1xuICBASW5wdXQoKSBpbWFnZUZhbGxiYWNrOiBQcm9kdWN0SW1hZ2VGYWxsYmFjayA9IFwiaW1hZ2VcIjtcbiAgLyoqIFRoZSB3b3JkcyBvZiB0aGUgd2lkZ2V0IGxhbmd1YWdlLiBEZWZhdWx0OiBFbmdsaXNoLiAqL1xuICBASW5wdXQoKSBzdHJpbmdzOiBVSVN0cmluZ3MgPSB1aVN0cmluZ3NGb3IoKTtcbiAgcmVhZG9ubHkgaW5pdGlhbCA9IHByb2R1Y3RJbml0aWFsO1xuICAvKipcbiAgICogUGVyIHByb2R1Y3QgaWQsIHRoZSBgc3JjYHMgdGhhdCBmYWlsZWQgdG8gbG9hZDogYSBjYXJkIG1vdmVzIG9uIHRvIHRoZVxuICAgKiBuZXh0IHNvdXJjZSAoYSBTaG9waWZ5IHRodW1ibmFpbCBmYWxscyBiYWNrIHRvIHRoZSBvcmlnaW5hbCkgYW5kIHNob3dzIGl0c1xuICAgKiBwbGFjZWhvbGRlciBvbmNlIG5vbmUgaXMgbGVmdC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFpbGVkSW1hZ2VzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgTWFwKFxuICAgICAgdGhpcy5wcm9kdWN0cy5tYXAoKHByb2R1Y3QpID0+IFtwcm9kdWN0LmlkLCBwcm9kdWN0SW1hZ2VTb3VyY2VzKHByb2R1Y3QuaW1hZ2VVcmwpXSksXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IFtpZCwgZmFpbGVkXSBvZiB0aGlzLmZhaWxlZEltYWdlcykge1xuICAgICAgY29uc3QgY3VycmVudCA9IHNvdXJjZXMuZ2V0KGlkKSA/PyBbXTtcbiAgICAgIGlmICghZmFpbGVkLmV2ZXJ5KChzcmMpID0+IGN1cnJlbnQuaW5jbHVkZXMoc3JjKSkpIHRoaXMuZmFpbGVkSW1hZ2VzLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgaW1hZ2VTb3VyY2UocHJvZHVjdDogUHJvZHVjdCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGZhaWxlZCA9IHRoaXMuZmFpbGVkSW1hZ2VzLmdldChwcm9kdWN0LmlkKSA/PyBbXTtcbiAgICByZXR1cm4gcHJvZHVjdEltYWdlU291cmNlcyhwcm9kdWN0LmltYWdlVXJsKS5maW5kKChzcmMpID0+ICFmYWlsZWQuaW5jbHVkZXMoc3JjKSkgPz8gbnVsbDtcbiAgfVxuXG4gIG9uSW1hZ2VFcnJvcihwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgY29uc3Qgc3JjID0gdGhpcy5pbWFnZVNvdXJjZShwcm9kdWN0KTtcbiAgICBpZiAoc3JjKSB0aGlzLmZhaWxlZEltYWdlcy5zZXQocHJvZHVjdC5pZCwgWy4uLih0aGlzLmZhaWxlZEltYWdlcy5nZXQocHJvZHVjdC5pZCkgPz8gW10pLCBzcmNdKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2R1Y3Q+KCk7XG4gIC8qKlxuICAgKiBGb2N1cyBtb3ZlZCBpbnRvIC8gb3V0IG9mIHRoZSBzdHJpcC4gVGhlIHBhbmVsIGNsb3NlcyBvbiBibHVyIGJ5IGRlZmF1bHRcbiAgICogYW5kIHRoZSBlZGl0b3IgYmx1cnMgdGhlIG1vbWVudCBhIGNhcmQgdGFrZXMgZm9jdXMsIHNvIHRoZSBkcm9wZG93blxuICAgKiByZXBvcnRzIGZvY3VzIGFzIHN0aWxsLWluc2lkZSByYXRoZXIgdGhhbiBzaHV0dGluZyBvdXQgZnJvbSB1bmRlciB0aGUgY2FyZFxuICAgKiB0aGUgdXNlciBqdXN0IHRhYmJlZCB0by5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBmb2N1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGRldGFjaFdoZWVsOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQSBtb3VzZSB3aGVlbCBvdmVyIHRoZSByb3cgc2Nyb2xscyBpdCBzaWRld2F5cy4gVGhlIHJvdyBzaXRzIGluc2lkZSB0aGVcbiAgICogc2VjdGlvbidzIGAqbmdJZmAsIHNvIHRoZSBxdWVyeSBmaXJlcyB3aXRoIHRoZSBlbGVtZW50IGFzIHByb2R1Y3RzIGFycml2ZVxuICAgKiBhbmQgd2l0aCBgdW5kZWZpbmVkYCBhcyB0aGV5IGdvOyB0aGUgYmluZGluZyBmb2xsb3dzIGl0IGVpdGhlciB3YXkuXG4gICAqL1xuICBAVmlld0NoaWxkKFwicm93XCIpXG4gIHNldCByb3cocmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZGV0YWNoV2hlZWw/LigpO1xuICAgIHRoaXMuZGV0YWNoV2hlZWwgPSByZWYgPyBhdHRhY2hQcm9kdWN0Um93V2hlZWwocmVmLm5hdGl2ZUVsZW1lbnQpIDogbnVsbDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWNoV2hlZWw/LigpO1xuICAgIHRoaXMuZGV0YWNoV2hlZWwgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5saXN0Ym94SWR9LXByb2R1Y3RzLWxhYmVsYDtcbiAgfVxuXG4gIGNhcmRJZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5saXN0Ym94SWR9LXByb2R1Y3QtJHtpbmRleH1gO1xuICB9XG5cbiAgdHJhY2tCeVByb2R1Y3QgPSAoXzogbnVtYmVyLCBwcm9kdWN0OiBQcm9kdWN0KTogc3RyaW5nID0+IHByb2R1Y3QuaWQ7XG5cbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgYnJvd3NlciBrZWVwIHRoZSBjbGlja3MgdGhhdCBtZWFuIFwib3BlbiB0aGlzIHNvbWV3aGVyZSBlbHNlXCIg4oCUXG4gICAgLy8gaW50ZXJjZXB0aW5nIHRoZW0gd291bGQgZGVmZWF0IHRoZSBwb2ludCBvZiByZW5kZXJpbmcgYW4gPGE+LiBUaG9zZSBhcmVcbiAgICAvLyBuYXZpZ2F0aW9ucyB0aGUgdXNlciBhc2tlZCBmb3IgZXhwbGljaXRseSwgc28gdGhleSBkb24ndCBlbWl0LlxuICAgIGlmIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2VsZWN0LmVtaXQocHJvZHVjdCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSBcIkVudGVyXCIgJiYgZXZlbnQua2V5ICE9PSBcIiBcIikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChwcm9kdWN0KTtcbiAgfVxuXG4gIG9uQ2FyZEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FyZEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKG5leHQ/LmNsb3Nlc3QoXCJbZGF0YS1haWEtZHJvcGRvd25dXCIpKSByZXR1cm47XG4gICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPCEtLSBgZ3JvdXBgIGlzIHRoZSBvbmUgcm9sZSBhIGxpc3Rib3ggYWNjZXB0cyBhcm91bmQgYSBzZXQgb2Ygb3B0aW9ucywgc28gdGhlXG4gICAgIHN0cmlwIHN0YXlzIGluc2lkZSB0aGUgbGlzdGJveCB3aXRob3V0IGJyZWFraW5nIGl0cyBjb250ZW50IG1vZGVsLiAtLT5cbjxzZWN0aW9uXG4gICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoID4gMFwiXG4gIGNsYXNzPVwiYWlhLXByb2R1Y3RzXCJcbiAgZGF0YS1haWEtcHJvZHVjdHM9XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1wcm9kdWN0cy1sYXlvdXRdPVwibGF5b3V0XCJcbiAgcm9sZT1cImdyb3VwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsSWRcIlxuPlxuICA8IS0tIGRhdGEtYWlhLXByb2R1Y3RzLWxhYmVsOiB0aGUgc2Nyb2xsIGFycm93IGNlbnRyZXMgaXRzZWxmIG9uIHRoaXMgcm93LiAtLT5cbiAgPGRpdiBjbGFzcz1cImFpYS1wcm9kdWN0cy1sYWJlbFwiIFtpZF09XCJsYWJlbElkXCIgZGF0YS1haWEtcHJvZHVjdHMtbGFiZWw9XCJcIj57eyBzdHJpbmdzLnByb2R1Y3RzIH19PC9kaXY+XG5cbiAgPCEtLSAjcm93OiB0aGUgY29tcG9uZW50IGJpbmRzIHdoZWVsLXRvLXNpZGV3YXlzIHNjcm9sbGluZyBvbiBpdC4gLS0+XG4gIDxkaXYgI3JvdyBjbGFzcz1cImFpYS1wcm9kdWN0cy1yb3dcIiBkYXRhLWFpYS1wcm9kdWN0cy1yb3c9XCJcIj5cbiAgICA8IS0tIEEgcmVhbCA8YSBocmVmPiByYXRoZXIgdGhhbiBhIDxkaXY+OiBpdCBrZWVwcyB0aGUgYnJvd3NlcidzIG93biBsaW5rXG4gICAgICAgICBhZmZvcmRhbmNlcyDigJQgY21kL2N0cmwtY2xpY2sgZm9yIGEgbmV3IHRhYiwgbWlkZGxlLWNsaWNrLCByaWdodC1jbGljayDihpJcbiAgICAgICAgIFwiY29weSBsaW5rIGFkZHJlc3NcIi4gcm9sZT1cIm9wdGlvblwiIG92ZXJyaWRlcyBob3cgYXNzaXN0aXZlIHRlY2hcbiAgICAgICAgIGFubm91bmNlcyBpdCwgd2hpY2ggaXMgY29ycmVjdCBpbnNpZGUgYSBsaXN0Ym94OyB0aGUgZGVsaWJlcmF0ZSB0cmFkZVxuICAgICAgICAgaXMgdGhhdCBBVCBubyBsb25nZXIgY2FsbHMgaXQgYSBsaW5rLiBBbiBhdHRyaWJ1dGUgYmluZGluZywgc28gYVxuICAgICAgICAgcHJvZHVjdCB3aXRob3V0IGEgdXJsIGdldHMgbm8gaHJlZiBhdCBhbGwgcmF0aGVyIHRoYW4gXCJudWxsXCIuIC0tPlxuICAgIDxhXG4gICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVByb2R1Y3RcIlxuICAgICAgW2lkXT1cImNhcmRJZChpKVwiXG4gICAgICBjbGFzcz1cImFpYS1wcm9kdWN0XCJcbiAgICAgIGRhdGEtYWlhLXByb2R1Y3Q9XCJcIlxuICAgICAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdC1zb2xkLW91dF09XCJwcm9kdWN0LmF2YWlsYWJsZSA9PT0gZmFsc2UgPyAnJyA6IG51bGxcIlxuICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImZhbHNlXCJcbiAgICAgIFthdHRyLmhyZWZdPVwicHJvZHVjdC51cmwgPz8gbnVsbFwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJmb2N1c2FibGUgPyAwIDogLTFcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBwcm9kdWN0KVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBwcm9kdWN0KVwiXG4gICAgICAoZm9jdXMpPVwib25DYXJkRm9jdXMoKVwiXG4gICAgICAoYmx1cik9XCJvbkNhcmRCbHVyKCRldmVudClcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYWlhLXByb2R1Y3QtbWVkaWFcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBbYXR0ci5kYXRhLWFpYS1wcm9kdWN0LXBsYWNlaG9sZGVyXT1cIiFpbWFnZVNvdXJjZShwcm9kdWN0KSAmJiBpbWFnZUZhbGxiYWNrID09PSAnaW1hZ2UnID8gJycgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdC1pbml0aWFsXT1cIiFpbWFnZVNvdXJjZShwcm9kdWN0KSAmJiBpbWFnZUZhbGxiYWNrID09PSAnaW5pdGlhbCcgPyAnJyA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8IS0tIGFsdD1cIlwiIG9uIHB1cnBvc2U6IHRoZSB0aXRsZSBpcyBhbHJlYWR5IHRoZSBjYXJkJ3MgYWNjZXNzaWJsZVxuICAgICAgICAgICAgIG5hbWUsIGFuZCByZXBlYXRpbmcgaXQgd291bGQgaGF2ZSBhIHNjcmVlbiByZWFkZXIgcmVhZCBpdCB0d2ljZS4gLS0+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cImltYWdlU291cmNlKHByb2R1Y3QpIGFzIHNyY1wiXG4gICAgICAgICAgY2xhc3M9XCJhaWEtcHJvZHVjdC1pbWFnZVwiXG4gICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IocHJvZHVjdClcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgIGRlY29kaW5nPVwiYXN5bmNcIlxuICAgICAgICAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWltYWdlU291cmNlKHByb2R1Y3QpICYmIGltYWdlRmFsbGJhY2sgPT09ICdpbml0aWFsJ1wiPnt7IGluaXRpYWwocHJvZHVjdC50aXRsZSkgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBFdmVyeSBmaWVsZCBidXQgdGhlIHRpdGxlIGlzIG9wdGlvbmFsLCBzbyBhYnNlbnQgb25lcyByZW5kZXIgbm9cbiAgICAgICAgICAgZWxlbWVudCBhdCBhbGwg4oCUIHRoZSBjb2x1bW4gZ2FwIGNhbid0IGxlYXZlIGEgaG9sZSBmb3IgYSBib3ggdGhhdFxuICAgICAgICAgICBpc24ndCB0aGVyZS4gLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImFpYS1wcm9kdWN0LWJvZHlcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnZlbmRvclwiIGNsYXNzPVwiYWlhLXByb2R1Y3QtdmVuZG9yXCI+e3sgcHJvZHVjdC52ZW5kb3IgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWlhLXByb2R1Y3QtdGl0bGVcIj57eyBwcm9kdWN0LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QucHJpY2VcIiBjbGFzcz1cImFpYS1wcm9kdWN0LXByaWNlXCI+e3sgcHJvZHVjdC5wcmljZSB9fTwvc3Bhbj5cbiAgICAgICAgPCEtLSBJbiB0aGUgdGV4dCBjb2x1bW4gcmF0aGVyIHRoYW4gdGhlIGFyaWEtaGlkZGVuIG1lZGlhIHRpbGUsIHNvIHRoZVxuICAgICAgICAgICAgIGNhcmQncyBhY2Nlc3NpYmxlIG5hbWUgc2F5cyBpdDsgdGhlIHN0eWxlc2hlZXQgbGlmdHMgaXQgb3ZlciB0aGVcbiAgICAgICAgICAgICBpbWFnZS4gLS0+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC5hdmFpbGFibGUgPT09IGZhbHNlXCIgY2xhc3M9XCJhaWEtcHJvZHVjdC1iYWRnZVwiPnt7IHN0cmluZ3Muc29sZE91dCB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3Byb2R1Y3Qtc3RyaXAvcHJvZHVjdC1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBSXJCLG1CQUFtQixFQUNuQixjQUFjLEVBRWQsWUFBWSxHQUNiLE1BQU0scUNBQXFDLENBQUM7OztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVVILE1BQU0sT0FBTyxxQkFBcUI7SUFUbEM7UUFVVyxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ2xDLDJEQUEyRDtRQUNsRCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCOzs7O1dBSUc7UUFDTSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDhGQUE4RjtRQUNyRixXQUFNLEdBQW1CLEtBQUssQ0FBQztRQUMvQixrQkFBYSxHQUF5QixPQUFPLENBQUM7UUFDdkQsMERBQTBEO1FBQ2pELFlBQU8sR0FBYyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxZQUFPLEdBQUcsY0FBYyxDQUFDO1FBQ2xDOzs7O1dBSUc7UUFDYyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBQzVELHFGQUFxRjtRQUNwRSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBZ0N2QyxXQUFNLEdBQUcs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bEMsc2dIQXlFQSxxb1JEMUJZLFlBQVk7NEZBTVgscUJBQXFCO2tCQVRqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFLNUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQXlDYSxNQUFNO3NCQUF4QixNQUFNO2dCQU9ZLFdBQVc7c0JBQTdCLE1BQU07Z0JBVUgsR0FBRztzQkFETixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICB0eXBlIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIHR5cGUgT25DaGFuZ2VzLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXR0YWNoUHJvZHVjdFJvd1doZWVsLFxuICB0eXBlIFByb2R1Y3QsXG4gIHR5cGUgUHJvZHVjdEltYWdlRmFsbGJhY2ssXG4gIHR5cGUgUHJvZHVjdHNMYXlvdXQsXG4gIHByb2R1Y3RJbWFnZVNvdXJjZXMsXG4gIHByb2R1Y3RJbml0aWFsLFxuICB0eXBlIFVJU3RyaW5ncyxcbiAgdWlTdHJpbmdzRm9yLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcblxuLyoqXG4gKiBJbnRlcm5hbCBwcm9kdWN0IHN0cmlwIHJlbmRlcmVkIGJlbG93IHRoZSBkcm9wZG93bidzIG9wdGlvbnMgZ3JpZC4gTWlycm9yc1xuICogYHBhY2thZ2VzL3JlYWN0L3NyYy9jb21wb25lbnRzL1Byb2R1Y3RTdHJpcC50c3hgIGFuZCB0aGUgdmFuaWxsYSBjb3JlJ3NcbiAqIGByZW5kZXJQcm9kdWN0U3RyaXBgLCBzbyBhbGwgdGhyZWUgcGFja2FnZXMgZW1pdCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kXG4gKiB0aGVtZSBpZGVudGljYWxseS5cbiAqXG4gKiBUd28gbGF5b3V0IG5vdGVzIGNhcnJpZWQgb3ZlciBmcm9tIHRoZSB2YW5pbGxhIGltcGxlbWVudGF0aW9uOlxuICpcbiAqIC0gVGhlIGRyb3Bkb3duIHBhaW50cyBhIGJhY2tncm91bmQgYnV0IG5ldmVyIHNldHMgYGNvbG9yYCwgc28gYW55dGhpbmcgaGVyZVxuICogICByZWx5aW5nIG9uIGBjb2xvcjogaW5oZXJpdGAgd291bGQgcGljayB1cCB0aGUgKmhvc3QgcGFnZSdzKiB0ZXh0IGNvbG91ciDigJRcbiAqICAgYmxhY2sgdGV4dCBvbiBhIGRhcmsgcGFuZWwuIEV2ZXJ5IHRleHQgbm9kZSByZXNvbHZlcyBpdHMgY29sb3VyIHRocm91Z2hcbiAqICAgdGhlIHNhbWUgYC0tYWlhLW9wdGlvbi0qYCBjaGFpbiB0aGUgb3B0aW9ucyB1c2UuXG4gKiAtIFRoZSBvcHRpb25zIGdyaWQgY2FycmllcyBhIG5lZ2F0aXZlIGJvdHRvbSBtYXJnaW4gc28gdGhlIGZvb3RlciByaWRlcyB1cFxuICogICBvdmVyIGl0cyByZXNlcnZlZCBiYW5kLCBhbmQgd2hhdGV2ZXIgZm9sbG93cyB0aGUgZ3JpZCBpbmhlcml0cyB0aGF0IHB1bGwuXG4gKiAgIFRoZSBkcm9wZG93biByb290IGlzIG1hcmtlZCBgZGF0YS1haWEtaGFzLXByb2R1Y3RzYCBhbmQgdGhlIGFwcGVhcmFuY2VcbiAqICAgbGF5ZXIgemVyb2VzIHRoZSBiYW5kIGF0IGl0cyBzb3VyY2UgcmF0aGVyIHRoYW4gdGhlIHN0cmlwIGNhbmNlbGxpbmcgaXRcbiAqICAgZnJvbSBoZXJlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWlhLXByb2R1Y3Qtc3RyaXBcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Byb2R1Y3Qtc3RyaXAuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Byb2R1Y3Qtc3RyaXAuY29tcG9uZW50LmNzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9kdWN0czogUHJvZHVjdFtdID0gW107XG4gIC8qKiBTY29wZXMgdGhlIHNlY3Rpb24gbGFiZWwncyBpZCB0byB0aGUgb3duaW5nIGxpc3Rib3guICovXG4gIEBJbnB1dCgpIGxpc3Rib3hJZCA9IFwiXCI7XG4gIC8qKlxuICAgKiBGYWxzZSB3aGlsZSB0aGUgcGFuZWwgaXMgZmFkaW5nIG91dC4gVGhlIGNsb3NlZCBkcm9wZG93biBrZWVwcyByZW5kZXJpbmdcbiAgICogaXRzIGxhc3QgY29udGVudCBmb3IgdGhlIGZhZGUsIGFuZCBmb2N1c2FibGUgY2FyZHMgaW5zaWRlIGl0IHdvdWxkIHN0aWxsXG4gICAqIGFuc3dlciBUYWIuXG4gICAqL1xuICBASW5wdXQoKSBmb2N1c2FibGUgPSB0cnVlO1xuICAvKiogSG93IHRoZSBjYXJkcyBsYXkgb3V0IOKAlCBhIHNjcm9sbGluZyByb3csIG9yIHN0YWNrZWQgYXMgZnVsbC13aWR0aCByb3dzLiBEZWZhdWx0OiBcInJvd1wiLiAqL1xuICBASW5wdXQoKSBsYXlvdXQ6IFByb2R1Y3RzTGF5b3V0ID0gXCJyb3dcIjtcbiAgQElucHV0KCkgaW1hZ2VGYWxsYmFjazogUHJvZHVjdEltYWdlRmFsbGJhY2sgPSBcImltYWdlXCI7XG4gIC8qKiBUaGUgd29yZHMgb2YgdGhlIHdpZGdldCBsYW5ndWFnZS4gRGVmYXVsdDogRW5nbGlzaC4gKi9cbiAgQElucHV0KCkgc3RyaW5nczogVUlTdHJpbmdzID0gdWlTdHJpbmdzRm9yKCk7XG4gIHJlYWRvbmx5IGluaXRpYWwgPSBwcm9kdWN0SW5pdGlhbDtcbiAgLyoqXG4gICAqIFBlciBwcm9kdWN0IGlkLCB0aGUgYHNyY2BzIHRoYXQgZmFpbGVkIHRvIGxvYWQ6IGEgY2FyZCBtb3ZlcyBvbiB0byB0aGVcbiAgICogbmV4dCBzb3VyY2UgKGEgU2hvcGlmeSB0aHVtYm5haWwgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwpIGFuZCBzaG93cyBpdHNcbiAgICogcGxhY2Vob2xkZXIgb25jZSBub25lIGlzIGxlZnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZhaWxlZEltYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgLyoqIFBlciBwcm9kdWN0IGlkLCB0aGUgYHNyY2AgdGhhdCBsYXN0IGZpbmlzaGVkIGxvYWRpbmc7IGl0cyB0aWxlIGRyb3BzIHRoZSBmaWxsLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlZEltYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc291cmNlcyA9IG5ldyBNYXAoXG4gICAgICB0aGlzLnByb2R1Y3RzLm1hcCgocHJvZHVjdCkgPT4gW3Byb2R1Y3QuaWQsIHByb2R1Y3RJbWFnZVNvdXJjZXMocHJvZHVjdC5pbWFnZVVybCldKSxcbiAgICApO1xuICAgIGZvciAoY29uc3QgW2lkLCBmYWlsZWRdIG9mIHRoaXMuZmFpbGVkSW1hZ2VzKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc291cmNlcy5nZXQoaWQpID8/IFtdO1xuICAgICAgaWYgKCFmYWlsZWQuZXZlcnkoKHNyYykgPT4gY3VycmVudC5pbmNsdWRlcyhzcmMpKSkgdGhpcy5mYWlsZWRJbWFnZXMuZGVsZXRlKGlkKTtcbiAgICB9XG4gIH1cblxuICBpbWFnZVNvdXJjZShwcm9kdWN0OiBQcm9kdWN0KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZmFpbGVkID0gdGhpcy5mYWlsZWRJbWFnZXMuZ2V0KHByb2R1Y3QuaWQpID8/IFtdO1xuICAgIHJldHVybiBwcm9kdWN0SW1hZ2VTb3VyY2VzKHByb2R1Y3QuaW1hZ2VVcmwpLmZpbmQoKHNyYykgPT4gIWZhaWxlZC5pbmNsdWRlcyhzcmMpKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNhcmQncyBwaG90byBoYXMgbG9hZGVkLCBzbyB0aGUgcGxhY2Vob2xkZXIgZmlsbCBzdGVwcyBhc2lkZS4gKi9cbiAgaW1hZ2VMb2FkZWQocHJvZHVjdDogUHJvZHVjdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNyYyA9IHRoaXMuaW1hZ2VTb3VyY2UocHJvZHVjdCk7XG4gICAgcmV0dXJuIHNyYyAhPT0gbnVsbCAmJiB0aGlzLmxvYWRlZEltYWdlcy5nZXQocHJvZHVjdC5pZCkgPT09IHNyYztcbiAgfVxuXG4gIG9uSW1hZ2VMb2FkKHByb2R1Y3Q6IFByb2R1Y3QsIHNyYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZWRJbWFnZXMuc2V0KHByb2R1Y3QuaWQsIHNyYyk7XG4gIH1cblxuICBvbkltYWdlRXJyb3IocHJvZHVjdDogUHJvZHVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHNyYyA9IHRoaXMuaW1hZ2VTb3VyY2UocHJvZHVjdCk7XG4gICAgaWYgKHNyYykgdGhpcy5mYWlsZWRJbWFnZXMuc2V0KHByb2R1Y3QuaWQsIFsuLi4odGhpcy5mYWlsZWRJbWFnZXMuZ2V0KHByb2R1Y3QuaWQpID8/IFtdKSwgc3JjXSk7XG4gIH1cblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9kdWN0PigpO1xuICAvKipcbiAgICogRm9jdXMgbW92ZWQgaW50byAvIG91dCBvZiB0aGUgc3RyaXAuIFRoZSBwYW5lbCBjbG9zZXMgb24gYmx1ciBieSBkZWZhdWx0XG4gICAqIGFuZCB0aGUgZWRpdG9yIGJsdXJzIHRoZSBtb21lbnQgYSBjYXJkIHRha2VzIGZvY3VzLCBzbyB0aGUgZHJvcGRvd25cbiAgICogcmVwb3J0cyBmb2N1cyBhcyBzdGlsbC1pbnNpZGUgcmF0aGVyIHRoYW4gc2h1dHRpbmcgb3V0IGZyb20gdW5kZXIgdGhlIGNhcmRcbiAgICogdGhlIHVzZXIganVzdCB0YWJiZWQgdG8uXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZm9jdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBkZXRhY2hXaGVlbDogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgbW91c2Ugd2hlZWwgb3ZlciB0aGUgcm93IHNjcm9sbHMgaXQgc2lkZXdheXMuIFRoZSByb3cgc2l0cyBpbnNpZGUgdGhlXG4gICAqIHNlY3Rpb24ncyBgKm5nSWZgLCBzbyB0aGUgcXVlcnkgZmlyZXMgd2l0aCB0aGUgZWxlbWVudCBhcyBwcm9kdWN0cyBhcnJpdmVcbiAgICogYW5kIHdpdGggYHVuZGVmaW5lZGAgYXMgdGhleSBnbzsgdGhlIGJpbmRpbmcgZm9sbG93cyBpdCBlaXRoZXIgd2F5LlxuICAgKi9cbiAgQFZpZXdDaGlsZChcInJvd1wiKVxuICBzZXQgcm93KHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmRldGFjaFdoZWVsPy4oKTtcbiAgICB0aGlzLmRldGFjaFdoZWVsID0gcmVmID8gYXR0YWNoUHJvZHVjdFJvd1doZWVsKHJlZi5uYXRpdmVFbGVtZW50KSA6IG51bGw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFjaFdoZWVsPy4oKTtcbiAgICB0aGlzLmRldGFjaFdoZWVsID0gbnVsbDtcbiAgfVxuXG4gIGdldCBsYWJlbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGlzdGJveElkfS1wcm9kdWN0cy1sYWJlbGA7XG4gIH1cblxuICBjYXJkSWQoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGlzdGJveElkfS1wcm9kdWN0LSR7aW5kZXh9YDtcbiAgfVxuXG4gIHRyYWNrQnlQcm9kdWN0ID0gKF86IG51bWJlciwgcHJvZHVjdDogUHJvZHVjdCk6IHN0cmluZyA9PiBwcm9kdWN0LmlkO1xuXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHByb2R1Y3Q6IFByb2R1Y3QpOiB2b2lkIHtcbiAgICAvLyBMZXQgdGhlIGJyb3dzZXIga2VlcCB0aGUgY2xpY2tzIHRoYXQgbWVhbiBcIm9wZW4gdGhpcyBzb21ld2hlcmUgZWxzZVwiIOKAlFxuICAgIC8vIGludGVyY2VwdGluZyB0aGVtIHdvdWxkIGRlZmVhdCB0aGUgcG9pbnQgb2YgcmVuZGVyaW5nIGFuIDxhPi4gVGhvc2UgYXJlXG4gICAgLy8gbmF2aWdhdGlvbnMgdGhlIHVzZXIgYXNrZWQgZm9yIGV4cGxpY2l0bHksIHNvIHRoZXkgZG9uJ3QgZW1pdC5cbiAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnNlbGVjdC5lbWl0KHByb2R1Y3QpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gXCJFbnRlclwiICYmIGV2ZW50LmtleSAhPT0gXCIgXCIpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2VsZWN0LmVtaXQocHJvZHVjdCk7XG4gIH1cblxuICBvbkNhcmRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBvbkNhcmRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChuZXh0Py5jbG9zZXN0KFwiW2RhdGEtYWlhLWRyb3Bkb3duXVwiKSkgcmV0dXJuO1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cbn1cbiIsIjwhLS0gYGdyb3VwYCBpcyB0aGUgb25lIHJvbGUgYSBsaXN0Ym94IGFjY2VwdHMgYXJvdW5kIGEgc2V0IG9mIG9wdGlvbnMsIHNvIHRoZVxuICAgICBzdHJpcCBzdGF5cyBpbnNpZGUgdGhlIGxpc3Rib3ggd2l0aG91dCBicmVha2luZyBpdHMgY29udGVudCBtb2RlbC4gLS0+XG48c2VjdGlvblxuICAqbmdJZj1cInByb2R1Y3RzLmxlbmd0aCA+IDBcIlxuICBjbGFzcz1cImFpYS1wcm9kdWN0c1wiXG4gIGRhdGEtYWlhLXByb2R1Y3RzPVwiXCJcbiAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdHMtbGF5b3V0XT1cImxheW91dFwiXG4gIHJvbGU9XCJncm91cFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbElkXCJcbj5cbiAgPCEtLSBkYXRhLWFpYS1wcm9kdWN0cy1sYWJlbDogdGhlIHNjcm9sbCBhcnJvdyBjZW50cmVzIGl0c2VsZiBvbiB0aGlzIHJvdy4gLS0+XG4gIDxkaXYgY2xhc3M9XCJhaWEtcHJvZHVjdHMtbGFiZWxcIiBbaWRdPVwibGFiZWxJZFwiIGRhdGEtYWlhLXByb2R1Y3RzLWxhYmVsPVwiXCI+e3sgc3RyaW5ncy5wcm9kdWN0cyB9fTwvZGl2PlxuXG4gIDwhLS0gI3JvdzogdGhlIGNvbXBvbmVudCBiaW5kcyB3aGVlbC10by1zaWRld2F5cyBzY3JvbGxpbmcgb24gaXQuIC0tPlxuICA8ZGl2ICNyb3cgY2xhc3M9XCJhaWEtcHJvZHVjdHMtcm93XCIgZGF0YS1haWEtcHJvZHVjdHMtcm93PVwiXCI+XG4gICAgPCEtLSBBIHJlYWwgPGEgaHJlZj4gcmF0aGVyIHRoYW4gYSA8ZGl2PjogaXQga2VlcHMgdGhlIGJyb3dzZXIncyBvd24gbGlua1xuICAgICAgICAgYWZmb3JkYW5jZXMg4oCUIGNtZC9jdHJsLWNsaWNrIGZvciBhIG5ldyB0YWIsIG1pZGRsZS1jbGljaywgcmlnaHQtY2xpY2sg4oaSXG4gICAgICAgICBcImNvcHkgbGluayBhZGRyZXNzXCIuIHJvbGU9XCJvcHRpb25cIiBvdmVycmlkZXMgaG93IGFzc2lzdGl2ZSB0ZWNoXG4gICAgICAgICBhbm5vdW5jZXMgaXQsIHdoaWNoIGlzIGNvcnJlY3QgaW5zaWRlIGEgbGlzdGJveDsgdGhlIGRlbGliZXJhdGUgdHJhZGVcbiAgICAgICAgIGlzIHRoYXQgQVQgbm8gbG9uZ2VyIGNhbGxzIGl0IGEgbGluay4gQW4gYXR0cmlidXRlIGJpbmRpbmcsIHNvIGFcbiAgICAgICAgIHByb2R1Y3Qgd2l0aG91dCBhIHVybCBnZXRzIG5vIGhyZWYgYXQgYWxsIHJhdGhlciB0aGFuIFwibnVsbFwiLiAtLT5cbiAgICA8YVxuICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlQcm9kdWN0XCJcbiAgICAgIFtpZF09XCJjYXJkSWQoaSlcIlxuICAgICAgY2xhc3M9XCJhaWEtcHJvZHVjdFwiXG4gICAgICBkYXRhLWFpYS1wcm9kdWN0PVwiXCJcbiAgICAgIFthdHRyLmRhdGEtYWlhLXByb2R1Y3Qtc29sZC1vdXRdPVwicHJvZHVjdC5hdmFpbGFibGUgPT09IGZhbHNlID8gJycgOiBudWxsXCJcbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICBbYXR0ci5ocmVmXT1cInByb2R1Y3QudXJsID8/IG51bGxcIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgcHJvZHVjdClcIlxuICAgICAgKGZvY3VzKT1cIm9uQ2FyZEZvY3VzKClcIlxuICAgICAgKGJsdXIpPVwib25DYXJkQmx1cigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImFpYS1wcm9kdWN0LW1lZGlhXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuZGF0YS1haWEtcHJvZHVjdC1wbGFjZWhvbGRlcl09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2ltYWdlJyA/ICcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmRhdGEtYWlhLXByb2R1Y3QtaW5pdGlhbF09XCIhaW1hZ2VTb3VyY2UocHJvZHVjdCkgJiYgaW1hZ2VGYWxsYmFjayA9PT0gJ2luaXRpYWwnID8gJycgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuZGF0YS1haWEtaW1hZ2UtbG9hZGVkXT1cImltYWdlTG9hZGVkKHByb2R1Y3QpID8gJycgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBhbHQ9XCJcIiBvbiBwdXJwb3NlOiB0aGUgdGl0bGUgaXMgYWxyZWFkeSB0aGUgY2FyZCdzIGFjY2Vzc2libGVcbiAgICAgICAgICAgICBuYW1lLCBhbmQgcmVwZWF0aW5nIGl0IHdvdWxkIGhhdmUgYSBzY3JlZW4gcmVhZGVyIHJlYWQgaXQgdHdpY2UuIC0tPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJpbWFnZVNvdXJjZShwcm9kdWN0KSBhcyBzcmNcIlxuICAgICAgICAgIGNsYXNzPVwiYWlhLXByb2R1Y3QtaW1hZ2VcIlxuICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZChwcm9kdWN0LCBzcmMpXCJcbiAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKHByb2R1Y3QpXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbWFnZVNvdXJjZShwcm9kdWN0KSAmJiBpbWFnZUZhbGxiYWNrID09PSAnaW5pdGlhbCdcIj57eyBpbml0aWFsKHByb2R1Y3QudGl0bGUpIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRXZlcnkgZmllbGQgYnV0IHRoZSB0aXRsZSBpcyBvcHRpb25hbCwgc28gYWJzZW50IG9uZXMgcmVuZGVyIG5vXG4gICAgICAgICAgIGVsZW1lbnQgYXQgYWxsIOKAlCB0aGUgY29sdW1uIGdhcCBjYW4ndCBsZWF2ZSBhIGhvbGUgZm9yIGEgYm94IHRoYXRcbiAgICAgICAgICAgaXNuJ3QgdGhlcmUuIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhaWEtcHJvZHVjdC1ib2R5XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC52ZW5kb3JcIiBjbGFzcz1cImFpYS1wcm9kdWN0LXZlbmRvclwiPnt7IHByb2R1Y3QudmVuZG9yIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFpYS1wcm9kdWN0LXRpdGxlXCI+e3sgcHJvZHVjdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnByaWNlXCIgY2xhc3M9XCJhaWEtcHJvZHVjdC1wcmljZVwiPnt7IHByb2R1Y3QucHJpY2UgfX08L3NwYW4+XG4gICAgICAgIDwhLS0gSW4gdGhlIHRleHQgY29sdW1uIHJhdGhlciB0aGFuIHRoZSBhcmlhLWhpZGRlbiBtZWRpYSB0aWxlLCBzbyB0aGVcbiAgICAgICAgICAgICBjYXJkJ3MgYWNjZXNzaWJsZSBuYW1lIHNheXMgaXQ7IHRoZSBzdHlsZXNoZWV0IGxpZnRzIGl0IG92ZXIgdGhlXG4gICAgICAgICAgICAgaW1hZ2UuIC0tPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QuYXZhaWxhYmxlID09PSBmYWxzZVwiIGNsYXNzPVwiYWlhLXByb2R1Y3QtYmFkZ2VcIj57eyBzdHJpbmdzLnNvbGRPdXQgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
@@ -57,6 +57,8 @@ export class SuggestionItemComponent {
|
|
|
57
57
|
* placeholder fill once none is left.
|
|
58
58
|
*/
|
|
59
59
|
this.failedSrcs = [];
|
|
60
|
+
/** The `src` that last finished loading; the tile drops its fill for it. */
|
|
61
|
+
this.loadedSrc = null;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* Start delay of this row's entrance animation (ms) — each row rises in a
|
|
@@ -93,6 +95,14 @@ export class SuggestionItemComponent {
|
|
|
93
95
|
const sources = this.imageSources;
|
|
94
96
|
return sources.length > 0 && sources.every((src) => this.failedSrcs.includes(src));
|
|
95
97
|
}
|
|
98
|
+
/** Whether the shown picture has loaded, so the placeholder fill steps aside. */
|
|
99
|
+
get imageLoaded() {
|
|
100
|
+
return !this.imageFailed && this.imageSrc !== null && this.loadedSrc === this.imageSrc;
|
|
101
|
+
}
|
|
102
|
+
onImageLoad(src) {
|
|
103
|
+
this.loadedSrc = src;
|
|
104
|
+
this.cdr.markForCheck();
|
|
105
|
+
}
|
|
96
106
|
onImageError() {
|
|
97
107
|
const src = this.imageSrc;
|
|
98
108
|
if (src !== null && !this.failedSrcs.includes(src))
|
|
@@ -160,10 +170,10 @@ export class SuggestionItemComponent {
|
|
|
160
170
|
}
|
|
161
171
|
}
|
|
162
172
|
SuggestionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
-
SuggestionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionItemComponent, isStandalone: true, selector: "aia-suggestion-item", inputs: { option: "option", isHighlighted: "isHighlighted", id: "id", loading: "loading", showIcon: "showIcon", showImage: "showImage", showCount: "showCount", scrollHint: "scrollHint", enterDelayMs: "enterDelayMs" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight" }, ngImport: i0, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill under the picture, so a slow or\n failed load leaves a neutral square rather than a gap. The picture is\n decorative: the text is the option's accessible name. -->\n <span *ngIf=\"imageSrc as src\" class=\"aia-suggestion-image\" aria-hidden=\"true\">\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\"\n ><ng-container *ngFor=\"let part of parts; trackBy: trackByIndex\"\n ><strong *ngIf=\"part.bold; else plain\" class=\"aia-suggestion-match\">{{ part.text }}</strong\n ><ng-template #plain>{{ part.text }}</ng-template></ng-container\n ><ng-container *ngIf=\"option.parameterLabel\"\n >{{ \" \" }}<span class=\"aia-suggestion-parameter\">{{ option.parameterLabel }}</span></ng-container\n ></span\n >\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}[data-aia-fit] .aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:none}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-parameter{display:block;font-size:var(--aia-option-parameter-font-size, 12px);font-weight:400;line-height:16px;text-indent:0;color:var(--aia-option-parameter-color, inherit);opacity:var(--aia-option-parameter-opacity, .6)}.aia-suggestion-match{color:var(--aia-smart-suggestion-accent, #b84549);font-weight:600}.aia-suggestion-item[data-aia-loading] .aia-suggestion-parameter{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image img{display:block;width:100%;height:100%;object-fit:contain}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-parameter){--aia-option-row-height: 53px}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
173
|
+
SuggestionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionItemComponent, isStandalone: true, selector: "aia-suggestion-item", inputs: { option: "option", isHighlighted: "isHighlighted", id: "id", loading: "loading", showIcon: "showIcon", showImage: "showImage", showCount: "showCount", scrollHint: "scrollHint", enterDelayMs: "enterDelayMs" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight" }, ngImport: i0, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill until the picture loads, so a slow\n or failed load leaves a neutral square rather than a gap. The picture\n is decorative: the text is the option's accessible name. -->\n <span\n *ngIf=\"imageSrc as src\"\n class=\"aia-suggestion-image\"\n aria-hidden=\"true\"\n [attr.data-aia-image-loaded]=\"imageLoaded ? '' : null\"\n >\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (load)=\"onImageLoad(src)\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\"\n ><ng-container *ngFor=\"let part of parts; trackBy: trackByIndex\"\n ><strong *ngIf=\"part.bold; else plain\" class=\"aia-suggestion-match\">{{ part.text }}</strong\n ><ng-template #plain>{{ part.text }}</ng-template></ng-container\n ><ng-container *ngIf=\"option.parameterLabel\"\n >{{ \" \" }}<span class=\"aia-suggestion-parameter\">{{ option.parameterLabel }}</span></ng-container\n ></span\n >\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}[data-aia-fit] .aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:none}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-parameter{display:block;font-size:var(--aia-option-parameter-font-size, 12px);font-weight:400;line-height:16px;text-indent:0;color:var(--aia-option-parameter-color, inherit);opacity:var(--aia-option-parameter-opacity, .6)}.aia-suggestion-match{color:var(--aia-smart-suggestion-accent, #b84549);font-weight:600}.aia-suggestion-item[data-aia-loading] .aia-suggestion-parameter{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image[data-aia-image-loaded]{background:transparent}.aia-suggestion-image img{display:block;width:auto;max-width:100%;height:100%;margin:0 auto;border-radius:var(--aia-option-picture-radius, 6px);object-fit:contain}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image{background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-parameter){--aia-option-row-height: 53px}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
164
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionItemComponent, decorators: [{
|
|
165
175
|
type: Component,
|
|
166
|
-
args: [{ selector: "aia-suggestion-item", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill
|
|
176
|
+
args: [{ selector: "aia-suggestion-item", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n [id]=\"id\"\n role=\"option\"\n data-aia-option=\"\"\n [attr.data-aia-loading]=\"loading ? '' : null\"\n [attr.data-aia-icon]=\"iconHtml && option.icon ? option.icon : null\"\n [attr.data-aia-image]=\"imageSrc ? '' : null\"\n [attr.data-aia-item-count]=\"countLabel !== null ? option.item_count : null\"\n [attr.aria-selected]=\"isHighlighted\"\n class=\"aia-suggestion-item\"\n [style.--aia-option-enter-delay]=\"(enterDelay ?? 0) + 'ms'\"\n [class.aia-suggestion-item-highlighted]=\"isHighlighted && !loading\"\n [class.aia-suggestion-item-tappable]=\"option.is_tappable\"\n [class.aia-suggestion-item-non-tappable]=\"!option.is_tappable\"\n [class.aia-suggestion-item-pressed]=\"pressed\"\n [class.aia-suggestion-item-scroll-hint]=\"scrollHint\"\n [attr.tabindex]=\"loading || !option.is_tappable ? -1 : 0\"\n (click)=\"onSelect()\"\n (keydown)=\"onKeyDown($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <span class=\"aia-suggestion-content\">\n <!-- The tile keeps a placeholder fill until the picture loads, so a slow\n or failed load leaves a neutral square rather than a gap. The picture\n is decorative: the text is the option's accessible name. -->\n <span\n *ngIf=\"imageSrc as src\"\n class=\"aia-suggestion-image\"\n aria-hidden=\"true\"\n [attr.data-aia-image-loaded]=\"imageLoaded ? '' : null\"\n >\n <img\n [src]=\"src\"\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n referrerpolicy=\"no-referrer\"\n draggable=\"false\"\n [hidden]=\"imageFailed\"\n (load)=\"onImageLoad(src)\"\n (error)=\"onImageError()\"\n />\n </span>\n <span\n *ngIf=\"iconHtml\"\n class=\"aia-suggestion-icon\"\n aria-hidden=\"true\"\n [innerHTML]=\"iconHtml\"\n ></span>\n <span class=\"aia-suggestion-text\"\n ><ng-container *ngFor=\"let part of parts; trackBy: trackByIndex\"\n ><strong *ngIf=\"part.bold; else plain\" class=\"aia-suggestion-match\">{{ part.text }}</strong\n ><ng-template #plain>{{ part.text }}</ng-template></ng-container\n ><ng-container *ngIf=\"option.parameterLabel\"\n >{{ \" \" }}<span class=\"aia-suggestion-parameter\">{{ option.parameterLabel }}</span></ng-container\n ></span\n >\n <span *ngIf=\"option.tag\" class=\"aia-suggestion-tag\">{{ option.tag }}</span>\n <!-- Part of the row's accessible name, read after the option's text. -->\n <span *ngIf=\"countLabel !== null\" class=\"aia-suggestion-count\">{{ countLabel }}</span>\n </span>\n</div>\n", styles: [".aia-suggestion-item{position:relative;overflow:hidden;overflow:clip;display:flex;align-items:flex-start;font-family:inherit;font-size:var(--aia-option-font-size, 16px);font-weight:450;line-height:21px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));white-space:normal;word-break:break-word;border-radius:8px;padding:8px 10px}@keyframes aiaSuggestionFadeIn{0%{opacity:0}}@keyframes aiaSuggestionRiseIn{0%{transform:translateY(16px)}}@media (prefers-reduced-motion: reduce){.aia-suggestion-item,.aia-suggestion-content{animation-duration:0s;animation-delay:0s}}.aia-suggestion-content{position:relative;z-index:2;animation:aiaSuggestionRiseIn .28s cubic-bezier(.25,.46,.45,.94) both,aiaSuggestionFadeIn .15s ease-out both;animation-delay:var(--aia-option-enter-delay, 0ms)}.aia-suggestion-item-tappable{cursor:pointer}.aia-suggestion-item-tappable:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.aia-suggestion-item-non-tappable{cursor:default}.aia-suggestion-item-highlighted{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.aia-suggestion-tag{font-size:11px;margin-left:6px;opacity:.5}.aia-suggestion-item-pressed{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));animation:aiaPressCompress .17s ease forwards}[role=listbox]:has(.aia-suggestion-item-pressed) .aia-suggestion-item:not(.aia-suggestion-item-pressed){opacity:.35;transition:opacity 60ms ease}@keyframes aiaPressCompress{0%{transform:scale(1)}25%{transform:scale(.93)}60%{transform:scale(.93)}to{transform:scale(1)}}.aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:linear-gradient(to bottom,rgb(0 0 0),rgb(0 0 0 / .6))}[data-aia-fit] .aia-suggestion-item-scroll-hint .aia-suggestion-content{mask-image:none}.aia-suggestion-item[data-aia-loading]{cursor:default;animation:aiaSuggestionSkeletonPulse 1.4s ease-in-out infinite}.aia-suggestion-item[data-aia-loading] .aia-suggestion-text{color:transparent;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));border-radius:999px;-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:aiaSkeletonBarIn .1s ease-out}.aia-suggestion-item[data-aia-loading] .aia-suggestion-tag{display:none}.aia-suggestion-parameter{display:block;font-size:var(--aia-option-parameter-font-size, 12px);font-weight:400;line-height:16px;text-indent:0;color:var(--aia-option-parameter-color, inherit);opacity:var(--aia-option-parameter-opacity, .6)}.aia-suggestion-match{color:var(--aia-smart-suggestion-accent, #b84549);font-weight:600}.aia-suggestion-item[data-aia-loading] .aia-suggestion-parameter{display:none}.aia-suggestion-icon{display:inline-flex;align-items:center;height:21px;margin-right:8px;vertical-align:top;will-change:transform}.aia-suggestion-icon svg{display:block;width:1em;height:1em}.aia-suggestion-item[data-aia-loading] .aia-suggestion-icon{visibility:hidden}.aia-suggestion-content:not(:has(.aia-suggestion-count)):has(.aia-suggestion-icon){padding-left:calc(1em + 8px);text-indent:calc(-1em - 8px)}.aia-suggestion-content:has(.aia-suggestion-image),.aia-suggestion-content:has(.aia-suggestion-count){display:flex;flex:1 1 auto;align-items:flex-start;min-width:0}.aia-suggestion-content:has(.aia-suggestion-image) .aia-suggestion-text,.aia-suggestion-content:has(.aia-suggestion-count) .aia-suggestion-text{flex:1 1 auto;min-width:0}.aia-suggestion-item[data-aia-loading] .aia-suggestion-content .aia-suggestion-text{flex:0 1 auto}.aia-suggestion-content:has(.aia-suggestion-image){align-items:center;gap:var(--aia-option-image-gap, 12px)}.aia-suggestion-image{flex:0 0 auto;display:block;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);border-radius:var(--aia-option-image-radius, 12px);overflow:hidden;background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-image[data-aia-image-loaded]{background:transparent}.aia-suggestion-image img{display:block;width:auto;max-width:100%;height:100%;margin:0 auto;border-radius:var(--aia-option-picture-radius, 6px);object-fit:contain}.aia-suggestion-image img[hidden]{display:none}.aia-suggestion-count{flex:0 0 auto;margin-left:auto;padding-left:12px;font-size:var(--aia-option-count-font-size, 12px);font-weight:400;line-height:21px;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--aia-option-count-color, inherit);opacity:var(--aia-option-count-opacity, .6)}.aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit, \"items\")}.aia-suggestion-item[data-aia-item-count=\"1\"] .aia-suggestion-count:after{content:\" \" var(--aia-option-count-unit-one, var(--aia-option-count-unit, \"item\"))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image{background:var(--aia-option-image-bg, var(--aia-skeleton-bg, rgba(189, 189, 189, .083)))}.aia-suggestion-item[data-aia-loading] .aia-suggestion-image img{visibility:hidden}.aia-suggestion-item[data-aia-loading] .aia-suggestion-count{display:none}[data-aia-group]:has(.aia-suggestion-parameter){--aia-option-row-height: 53px}[data-aia-group]:has(.aia-suggestion-image){--aia-option-row-height: calc(var(--aia-option-image-size, 40px) + 16px)}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)){display:flex;flex:1 1 auto;align-items:center;gap:var(--aia-option-image-gap, 12px);min-width:0;min-height:var(--aia-option-image-size, 40px);padding-left:0;text-indent:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon{flex:0 0 auto;justify-content:center;width:var(--aia-option-image-size, 40px);height:var(--aia-option-image-size, 40px);margin-right:0}[data-aia-group]:has(.aia-suggestion-image) .aia-suggestion-content:not(:has(.aia-suggestion-image)) .aia-suggestion-icon svg{width:var(--aia-option-tile-icon-size, 1.5em);height:var(--aia-option-tile-icon-size, 1.5em)}@keyframes aiaSuggestionSkeletonPulse{0%,to{filter:brightness(1)}50%{filter:brightness(.55)}}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-content,[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading] .aia-suggestion-text{animation:none}[data-aia-skeleton-exiting] .aia-suggestion-item[data-aia-loading]{animation:aiaSkeletonOut .1s ease-in forwards}@keyframes aiaSkeletonBarIn{0%{background-color:transparent;color:inherit}}@keyframes aiaSkeletonOut{to{opacity:0}}\n"] }]
|
|
167
177
|
}], propDecorators: { option: [{
|
|
168
178
|
type: Input
|
|
169
179
|
}], isHighlighted: [{
|
|
@@ -189,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
189
199
|
}], unhighlight: [{
|
|
190
200
|
type: Output
|
|
191
201
|
}] } });
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1pdGVtL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24taXRlbS9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFdBQVcsRUFFWCxxQkFBcUIsR0FDdEIsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQVVILE1BQU0sT0FBTyx1QkFBdUI7SUFUcEM7UUFXVyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUN6Qiw4RUFBOEU7UUFDckUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixvSEFBb0g7UUFDM0csY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiwyRkFBMkY7UUFDbEYsY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiw4RkFBOEY7UUFDckYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVM1Qjs7OztXQUlHO1FBQ0gsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFFZCxXQUFNLEdB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QkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCB0eXBlIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7XG4gIGZvcm1hdE9wdGlvbkNvdW50LFxuICBoaWdobGlnaHRQYXJ0cyxcbiAgb3B0aW9uSW1hZ2VTb3VyY2VzLFxuICBvcHRpb25MYWJlbCxcbiAgdHlwZSBTdWdnZXN0aW9uT3B0aW9uLFxuICBzYW5pdGl6ZU9wdGlvbkljb25TdmcsXG59IGZyb20gXCJAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYVwiO1xuXG4vKipcbiAqIEludGVybmFsIHNpbmdsZS1vcHRpb24gY2VsbCB1c2VkIGluc2lkZSB0aGUgc3VnZ2VzdGlvbiBncmlkLiBNaXJyb3JzXG4gKiBgcGFja2FnZXMvcmVhY3Qvc3JjL2NvbXBvbmVudHMvU3VnZ2VzdGlvbkl0ZW0udHN4YC4gSGFuZGxlczpcbiAqXG4gKiAtIFRhcHBhYmxlIHZzIG5vbi10YXBwYWJsZSBjdXJzb3IgKyBob3ZlciBzdHlsaW5nXG4gKiAtIFByZXNzZWQtc3RhdGUgY29tcHJlc3MgYW5pbWF0aW9uICgxNzBtcywgc2luZ2xlLWZsaWdodClcbiAqIC0gS2V5Ym9hcmQgYWN0aXZhdGlvbiAoRW50ZXIvU3BhY2UpXG4gKiAtIEFSSUEgYHJvbGU9XCJvcHRpb25cImAgKyBgYXJpYS1zZWxlY3RlZGAgZm9yIHRoZSBsaXN0Ym94IHBhdHRlcm5cbiAqIC0gTG9hZGluZyBza2VsZXRvbiB3aGVuIGBsb2FkaW5nPXRydWVgXG4gKiAtIFNlcnZlci1wcm92aWRlZCBpY29uIChgaWNvbl9zdmdgKSwgYWxsb3dsaXN0ZWQgdGhyb3VnaCB0aGUgY29yZSdzXG4gKiAgIGBzYW5pdGl6ZU9wdGlvbkljb25TdmdgIGJlZm9yZSBpdCBpcyBib3VuZCBhcyBIVE1MXG4gKiAtIFNlcnZlci1wcm92aWRlZCBwaWN0dXJlIChgaW1hZ2VfdXJsYCkgYXMgYSBzcXVhcmUgdGh1bWJuYWlsIGluIHBsYWNlIG9mXG4gKiAgIHRoZSBpY29uLCBhbmQgaXRlbSBjb3VudCAoYGl0ZW1fY291bnRgKSBhdCB0aGUgcm93J3MgdHJhaWxpbmcgZWRnZVxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWlhLXN1Z2dlc3Rpb24taXRlbVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50LmNzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgU3VnZ2VzdGlvbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBvcHRpb24hOiBTdWdnZXN0aW9uT3B0aW9uO1xuICBASW5wdXQoKSBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlkID0gXCJcIjtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKiogV2hldGhlciB0byBkcmF3IHRoZSBvcHRpb24ncyBgaWNvbl9zdmdgIGJlZm9yZSBpdHMgdGV4dC4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0ljb24gPSB0cnVlO1xuICAvKiogV2hldGhlciB0byBkcmF3IHRoZSBvcHRpb24ncyBgaW1hZ2VfdXJsYCBhcyBhIHRodW1ibmFpbCBiZWZvcmUgaXRzIHRleHQsIGluIHBsYWNlIG9mIHRoZSBpY29uLiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93SW1hZ2UgPSB0cnVlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBvcHRpb24ncyBgaXRlbV9jb3VudGAgYXQgdGhlIHJvdydzIHRyYWlsaW5nIGVkZ2UuIERlZmF1bHQ6IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dDb3VudCA9IHRydWU7XG4gIC8qKiBGYWRlIHRoaXMgb3B0aW9uJ3MgdGV4dCB0b3dhcmQgaXRzIGJvdHRvbSBlZGdlIChsYXN0IHZpc2libGUgcm93IG9mIGEgc2Nyb2xsYWJsZSBncmlkKS4gKi9cbiAgQElucHV0KCkgc2Nyb2xsSGludCA9IGZhbHNlO1xuICAvKipcbiAgICogU3RhcnQgZGVsYXkgb2YgdGhpcyByb3cncyBlbnRyYW5jZSBhbmltYXRpb24gKG1zKSDigJQgZWFjaCByb3cgcmlzZXMgaW4gYVxuICAgKiBiZWF0IGFmdGVyIHRoZSBvbmUgbmVhcmVyIHRoZSBpbnB1dC4gQ2FwdHVyZWQgb25jZSwgb24gZmlyc3QgcmVuZGVyLCBzbyBhXG4gICAqIGxhdGVyIGNoYW5nZS1kZXRlY3Rpb24gcGFzcyBjYW4ndCByZXN0YXJ0IGEgcm93IG1pZC1yaXNlLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGVudGVyRGVsYXlNcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZW50ZXJEZWxheSA9PT0gbnVsbCkgdGhpcy5lbnRlckRlbGF5ID0gdmFsdWU7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBjYXB0dXJlZCBkZWxheTsgYG51bGxgIHVudGlsIHRoZSBmaXJzdCBgZW50ZXJEZWxheU1zYCBiaW5kaW5nIGxhbmRzLlxuICAgKiBUaGUgdGVtcGxhdGUgYmluZHMgaXQgdG8gYC0tYWlhLW9wdGlvbi1lbnRlci1kZWxheWAgKHRoZSBjb3JlJ3NcbiAgICogT1BUSU9OX0VOVEVSX0RFTEFZX1ZBUiksIHdoaWNoIHRoZSBzdHlsZXNoZWV0J3MgZW50cmFuY2UgcnVsZSByZWFkcy5cbiAgICovXG4gIGVudGVyRGVsYXk6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFN1Z2dlc3Rpb25PcHRpb24+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBoaWdobGlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlciBsZWZ0IHRoaXMgcm93LiBUaGUgb3duZXIgY2xlYXJzIHRoZSBoaWdobGlnaHQgaWYgaXQgaXMgc3RpbGxcbiAgICogb24gdGhpcyByb3c6IGEgaG92ZXIgaGlnaGxpZ2h0IGVuZHMgd2l0aCB0aGUgaG92ZXIsIHNvIEVudGVyIGFmdGVyd2FyZHNcbiAgICogc3VibWl0cyBpbnN0ZWFkIG9mIHBpY2tpbmcgYSByb3cgdGhlIHBvaW50ZXIgaXMgbm8gbG9uZ2VyIG9uLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVuaGlnaGxpZ2h0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByZXNzZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgcHJlc3NlZFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpY29uU291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaWNvblNhZmU6IFNhZmVIdG1sIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgYHNyY2BzIHRoYXQgZmFpbGVkIHRvIGxvYWQ6IHRoZSByb3cgbW92ZXMgb24gdG8gdGhlIG5leHQgc291cmNlIChhXG4gICAqIFNob3BpZnkgdGh1bWJuYWlsIGZhbGxzIGJhY2sgdG8gdGhlIG9yaWdpbmFsKSwgYW5kIHRoZSB0aWxlIGtlZXBzIGl0c1xuICAgKiBwbGFjZWhvbGRlciBmaWxsIG9uY2Ugbm9uZSBpcyBsZWZ0LlxuICAgKi9cbiAgcHJpdmF0ZSBmYWlsZWRTcmNzOiByZWFkb25seSBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBUaGUgbGFiZWwgc3BsaXQgc28gdGhlIHR5cGVkIGZyYWdtZW50J3MgbWF0Y2ggY2FuIGJlIGRyYXduIGluIGJvbGQuICovXG4gIGdldCBwYXJ0cygpOiB7IHRleHQ6IHN0cmluZzsgYm9sZDogYm9vbGVhbiB9W10ge1xuICAgIHJldHVybiBoaWdobGlnaHRQYXJ0cyh0aGlzLmxhYmVsLCB0aGlzLm9wdGlvbi5tYXRjaGVkVGV4dCk7XG4gIH1cblxuICAvKiogYHBhcnRzYCBpcyByZWJ1aWx0IG9uIGV2ZXJ5IGNoZWNrLCBzbyBpdHMgbm9kZXMgYXJlIGtlcHQgYnkgcG9zaXRpb24uICovXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKiogVGhlIG9wdGlvbidzIHRleHQuIGBpY29uYCBpcyB0aGUgaWNvbidzIG5hbWUgYW5kIGlzIG5ldmVyIHNob3duIGFzIHRleHQuICovXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBvcHRpb25MYWJlbCh0aGlzLm9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBpY3R1cmUncyBgc3JjYCwgb3IgYG51bGxgIHdoZW4gdGhlIHJvdyBkcmF3cyBub25lOiBpbWFnZXMgb2ZmLCBub1xuICAgKiBgaW1hZ2VfdXJsYCwgb3Igb25lIHRoYXQgaXMgbm90IGFuIGh0dHAocykgVVJMLiBBIHBpY3R1cmUgc3RhbmRzIGluIGZvclxuICAgKiB0aGUgaWNvbiDigJQgYSByb3cgbmV2ZXIgbGVhZHMgd2l0aCB0d28gdmlzdWFscy5cbiAgICovXG4gIGdldCBpbWFnZVNyYygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzb3VyY2VzID0gdGhpcy5pbWFnZVNvdXJjZXM7XG4gICAgcmV0dXJuIChcbiAgICAgIHNvdXJjZXMuZmluZCgoc3JjKSA9PiAhdGhpcy5mYWlsZWRTcmNzLmluY2x1ZGVzKHNyYykpID8/IHNvdXJjZXNbc291cmNlcy5sZW5ndGggLSAxXSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGV2ZXJ5IHNvdXJjZSBvZiB0aGUgcGljdHVyZSBmYWlsZWQgdG8gbG9hZCAodGhlIHRpbGUncyBmaWxsIHN0YXlzKS4gKi9cbiAgZ2V0IGltYWdlRmFpbGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNvdXJjZXMgPSB0aGlzLmltYWdlU291cmNlcztcbiAgICByZXR1cm4gc291cmNlcy5sZW5ndGggPiAwICYmIHNvdXJjZXMuZXZlcnkoKHNyYykgPT4gdGhpcy5mYWlsZWRTcmNzLmluY2x1ZGVzKHNyYykpO1xuICB9XG5cbiAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgIGNvbnN0IHNyYyA9IHRoaXMuaW1hZ2VTcmM7XG4gICAgaWYgKHNyYyAhPT0gbnVsbCAmJiAhdGhpcy5mYWlsZWRTcmNzLmluY2x1ZGVzKHNyYykpIHRoaXMuZmFpbGVkU3JjcyA9IFsuLi50aGlzLmZhaWxlZFNyY3MsIHNyY107XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBpbWFnZVNvdXJjZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnNob3dJbWFnZSA/IG9wdGlvbkltYWdlU291cmNlcyh0aGlzLm9wdGlvbi5pbWFnZV91cmwpIDogW107XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvdW50IGFzIHByaW50ZWQgKFwiMSwyODRcIiksIG9yIGBudWxsYCB3aGVuIHRoZSByb3cgc2hvd3Mgbm9uZS4gVGhlXG4gICAqIHVuaXQgd29yZCBhZnRlciBpdCBpcyB0aGUgc3R5bGVzaGVldCdzIChgLS1haWEtb3B0aW9uLWNvdW50LXVuaXRgKS5cbiAgICovXG4gIGdldCBjb3VudExhYmVsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNob3dDb3VudCA/IGZvcm1hdE9wdGlvbkNvdW50KHRoaXMub3B0aW9uLml0ZW1fY291bnQpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uJ3MgaWNvbiBhcyBiaW5kYWJsZSBIVE1MLCBvciBgbnVsbGAgd2hlbiBpdCBoYXMgbm9uZSAob3IgaXRzXG4gICAqIG1hcmt1cCBmYWlsZWQgdGhlIGFsbG93bGlzdCkuIEFuZ3VsYXIncyBvd24gSFRNTCBzYW5pdGl6ZXIgc3RyaXBzIGA8c3ZnPmBcbiAgICogd2hvbGVzYWxlLCBzbyB0aGUgY29yZSdzIGFsbG93bGlzdGVkIG91dHB1dCBpcyBtYXJrZWQgdHJ1c3RlZCBpbnN0ZWFkIOKAlFxuICAgKiBpdCBpcyBuZXZlciB0aGUgc2VydmVyJ3MgcmF3IHN0cmluZy4gUmVjb21wdXRlZCBvbmx5IHdoZW4gdGhlIG1hcmt1cFxuICAgKiBjaGFuZ2VzOyB0aGUgZ2V0dGVyIHJ1bnMgb24gZXZlcnkgT25QdXNoIGNoZWNrLlxuICAgKi9cbiAgZ2V0IGljb25IdG1sKCk6IFNhZmVIdG1sIHwgbnVsbCB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5zaG93SWNvbiAmJiAhdGhpcy5pbWFnZVNyYyA/IHRoaXMub3B0aW9uLmljb25fc3ZnIDogdW5kZWZpbmVkO1xuICAgIGlmIChzdmcgIT09IHRoaXMuaWNvblNvdXJjZSkge1xuICAgICAgdGhpcy5pY29uU291cmNlID0gc3ZnO1xuICAgICAgY29uc3QgaHRtbCA9IHN2ZyA/IHNhbml0aXplT3B0aW9uSWNvblN2ZyhzdmcpIDogbnVsbDtcbiAgICAgIHRoaXMuaWNvblNhZmUgPSBodG1sID8gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCkgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pY29uU2FmZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXNzZWRUaW1lciAhPT0gdW5kZWZpbmVkKSBjbGVhclRpbWVvdXQodGhpcy5wcmVzc2VkVGltZXIpO1xuICB9XG5cbiAgb25TZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCAhdGhpcy5vcHRpb24uaXNfdGFwcGFibGUgfHwgdGhpcy5wcmVzc2VkKSByZXR1cm47XG4gICAgdGhpcy5wcmVzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMub3B0aW9uKTtcbiAgICBpZiAodGhpcy5wcmVzc2VkVGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NlZFRpbWVyKTtcbiAgICB0aGlzLnByZXNzZWRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmVzc2VkID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9LCAxNzApO1xuICB9XG5cbiAgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlKSByZXR1cm47XG4gICAgdGhpcy5oaWdobGlnaHQuZW1pdCgpO1xuICB9XG5cbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMudW5oaWdobGlnaHQuZW1pdCgpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCAhdGhpcy5vcHRpb24uaXNfdGFwcGFibGUpIHJldHVybjtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub25TZWxlY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2lkXT1cImlkXCJcbiAgcm9sZT1cIm9wdGlvblwiXG4gIGRhdGEtYWlhLW9wdGlvbj1cIlwiXG4gIFthdHRyLmRhdGEtYWlhLWxvYWRpbmddPVwibG9hZGluZyA/ICcnIDogbnVsbFwiXG4gIFthdHRyLmRhdGEtYWlhLWljb25dPVwiaWNvbkh0bWwgJiYgb3B0aW9uLmljb24gPyBvcHRpb24uaWNvbiA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pbWFnZV09XCJpbWFnZVNyYyA/ICcnIDogbnVsbFwiXG4gIFthdHRyLmRhdGEtYWlhLWl0ZW0tY291bnRdPVwiY291bnRMYWJlbCAhPT0gbnVsbCA/IG9wdGlvbi5pdGVtX2NvdW50IDogbnVsbFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNIaWdobGlnaHRlZFwiXG4gIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24taXRlbVwiXG4gIFtzdHlsZS4tLWFpYS1vcHRpb24tZW50ZXItZGVsYXldPVwiKGVudGVyRGVsYXkgPz8gMCkgKyAnbXMnXCJcbiAgW2NsYXNzLmFpYS1zdWdnZXN0aW9uLWl0ZW0taGlnaGxpZ2h0ZWRdPVwiaXNIaWdobGlnaHRlZCAmJiAhbG9hZGluZ1wiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXRhcHBhYmxlXT1cIm9wdGlvbi5pc190YXBwYWJsZVwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLW5vbi10YXBwYWJsZV09XCIhb3B0aW9uLmlzX3RhcHBhYmxlXCJcbiAgW2NsYXNzLmFpYS1zdWdnZXN0aW9uLWl0ZW0tcHJlc3NlZF09XCJwcmVzc2VkXCJcbiAgW2NsYXNzLmFpYS1zdWdnZXN0aW9uLWl0ZW0tc2Nyb2xsLWhpbnRdPVwic2Nyb2xsSGludFwiXG4gIFthdHRyLnRhYmluZGV4XT1cImxvYWRpbmcgfHwgIW9wdGlvbi5pc190YXBwYWJsZSA/IC0xIDogMFwiXG4gIChjbGljayk9XCJvblNlbGVjdCgpXCJcbiAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi1jb250ZW50XCI+XG4gICAgPCEtLSBUaGUgdGlsZSBrZWVwcyBhIHBsYWNlaG9sZGVyIGZpbGwgdW5kZXIgdGhlIHBpY3R1cmUsIHNvIGEgc2xvdyBvclxuICAgICAgICAgZmFpbGVkIGxvYWQgbGVhdmVzIGEgbmV1dHJhbCBzcXVhcmUgcmF0aGVyIHRoYW4gYSBnYXAuIFRoZSBwaWN0dXJlIGlzXG4gICAgICAgICBkZWNvcmF0aXZlOiB0aGUgdGV4dCBpcyB0aGUgb3B0aW9uJ3MgYWNjZXNzaWJsZSBuYW1lLiAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImltYWdlU3JjIGFzIHNyY1wiIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24taW1hZ2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgIGRlY29kaW5nPVwiYXN5bmNcIlxuICAgICAgICByZWZlcnJlcnBvbGljeT1cIm5vLXJlZmVycmVyXCJcbiAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICBbaGlkZGVuXT1cImltYWdlRmFpbGVkXCJcbiAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCJcbiAgICAgIC8+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImljb25IdG1sXCJcbiAgICAgIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24taWNvblwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgW2lubmVySFRNTF09XCJpY29uSHRtbFwiXG4gICAgPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLXRleHRcIlxuICAgICAgPjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnQgb2YgcGFydHM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgID48c3Ryb25nICpuZ0lmPVwicGFydC5ib2xkOyBlbHNlIHBsYWluXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi1tYXRjaFwiPnt7IHBhcnQudGV4dCB9fTwvc3Ryb25nXG4gICAgICAgID48bmctdGVtcGxhdGUgI3BsYWluPnt7IHBhcnQudGV4dCB9fTwvbmctdGVtcGxhdGU+PC9uZy1jb250YWluZXJcbiAgICAgID48bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uLnBhcmFtZXRlckxhYmVsXCJcbiAgICAgICAgPnt7IFwiIFwiIH19PHNwYW4gY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi1wYXJhbWV0ZXJcIj57eyBvcHRpb24ucGFyYW1ldGVyTGFiZWwgfX08L3NwYW4+PC9uZy1jb250YWluZXJcbiAgICAgID48L3NwYW5cbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udGFnXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10YWdcIj57eyBvcHRpb24udGFnIH19PC9zcGFuPlxuICAgIDwhLS0gUGFydCBvZiB0aGUgcm93J3MgYWNjZXNzaWJsZSBuYW1lLCByZWFkIGFmdGVyIHRoZSBvcHRpb24ncyB0ZXh0LiAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImNvdW50TGFiZWwgIT09IG51bGxcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWNvdW50XCI+e3sgY291bnRMYWJlbCB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1pdGVtL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24taXRlbS9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFdBQVcsRUFFWCxxQkFBcUIsR0FDdEIsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQVVILE1BQU0sT0FBTyx1QkFBdUI7SUFUcEM7UUFXVyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUN6Qiw4RUFBOEU7UUFDckUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixvSEFBb0g7UUFDM0csY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiwyRkFBMkY7UUFDbEYsY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQiw4RkFBOEY7UUFDckYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVM1Qjs7OztXQUlHO1FBQ0gsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFFZCxXQUFNLEdB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TUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFLNUIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1PLFlBQVk7c0JBQXhCLEtBQUs7Z0JBVWEsTUFBTTtzQkFBeEIsTUFBTTtnQkFDWSxTQUFTO3NCQUEzQixNQUFNO2dCQU1ZLFdBQVc7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxuICB0eXBlIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgdHlwZSBTYWZlSHRtbCB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQge1xuICBmb3JtYXRPcHRpb25Db3VudCxcbiAgaGlnaGxpZ2h0UGFydHMsXG4gIG9wdGlvbkltYWdlU291cmNlcyxcbiAgb3B0aW9uTGFiZWwsXG4gIHR5cGUgU3VnZ2VzdGlvbk9wdGlvbixcbiAgc2FuaXRpemVPcHRpb25JY29uU3ZnLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcblxuLyoqXG4gKiBJbnRlcm5hbCBzaW5nbGUtb3B0aW9uIGNlbGwgdXNlZCBpbnNpZGUgdGhlIHN1Z2dlc3Rpb24gZ3JpZC4gTWlycm9yc1xuICogYHBhY2thZ2VzL3JlYWN0L3NyYy9jb21wb25lbnRzL1N1Z2dlc3Rpb25JdGVtLnRzeGAuIEhhbmRsZXM6XG4gKlxuICogLSBUYXBwYWJsZSB2cyBub24tdGFwcGFibGUgY3Vyc29yICsgaG92ZXIgc3R5bGluZ1xuICogLSBQcmVzc2VkLXN0YXRlIGNvbXByZXNzIGFuaW1hdGlvbiAoMTcwbXMsIHNpbmdsZS1mbGlnaHQpXG4gKiAtIEtleWJvYXJkIGFjdGl2YXRpb24gKEVudGVyL1NwYWNlKVxuICogLSBBUklBIGByb2xlPVwib3B0aW9uXCJgICsgYGFyaWEtc2VsZWN0ZWRgIGZvciB0aGUgbGlzdGJveCBwYXR0ZXJuXG4gKiAtIExvYWRpbmcgc2tlbGV0b24gd2hlbiBgbG9hZGluZz10cnVlYFxuICogLSBTZXJ2ZXItcHJvdmlkZWQgaWNvbiAoYGljb25fc3ZnYCksIGFsbG93bGlzdGVkIHRocm91Z2ggdGhlIGNvcmUnc1xuICogICBgc2FuaXRpemVPcHRpb25JY29uU3ZnYCBiZWZvcmUgaXQgaXMgYm91bmQgYXMgSFRNTFxuICogLSBTZXJ2ZXItcHJvdmlkZWQgcGljdHVyZSAoYGltYWdlX3VybGApIGFzIGEgc3F1YXJlIHRodW1ibmFpbCBpbiBwbGFjZSBvZlxuICogICB0aGUgaWNvbiwgYW5kIGl0ZW0gY291bnQgKGBpdGVtX2NvdW50YCkgYXQgdGhlIHJvdydzIHRyYWlsaW5nIGVkZ2VcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFpYS1zdWdnZXN0aW9uLWl0ZW1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL3N1Z2dlc3Rpb24taXRlbS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vc3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudC5jc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFN1Z2dlc3Rpb25JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3B0aW9uITogU3VnZ2VzdGlvbk9wdGlvbjtcbiAgQElucHV0KCkgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpZCA9IFwiXCI7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gZHJhdyB0aGUgb3B0aW9uJ3MgYGljb25fc3ZnYCBiZWZvcmUgaXRzIHRleHQuIERlZmF1bHQ6IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dJY29uID0gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdG8gZHJhdyB0aGUgb3B0aW9uJ3MgYGltYWdlX3VybGAgYXMgYSB0aHVtYm5haWwgYmVmb3JlIGl0cyB0ZXh0LCBpbiBwbGFjZSBvZiB0aGUgaWNvbi4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0ltYWdlID0gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgb3B0aW9uJ3MgYGl0ZW1fY291bnRgIGF0IHRoZSByb3cncyB0cmFpbGluZyBlZGdlLiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93Q291bnQgPSB0cnVlO1xuICAvKiogRmFkZSB0aGlzIG9wdGlvbidzIHRleHQgdG93YXJkIGl0cyBib3R0b20gZWRnZSAobGFzdCB2aXNpYmxlIHJvdyBvZiBhIHNjcm9sbGFibGUgZ3JpZCkuICovXG4gIEBJbnB1dCgpIHNjcm9sbEhpbnQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFN0YXJ0IGRlbGF5IG9mIHRoaXMgcm93J3MgZW50cmFuY2UgYW5pbWF0aW9uIChtcykg4oCUIGVhY2ggcm93IHJpc2VzIGluIGFcbiAgICogYmVhdCBhZnRlciB0aGUgb25lIG5lYXJlciB0aGUgaW5wdXQuIENhcHR1cmVkIG9uY2UsIG9uIGZpcnN0IHJlbmRlciwgc28gYVxuICAgKiBsYXRlciBjaGFuZ2UtZGV0ZWN0aW9uIHBhc3MgY2FuJ3QgcmVzdGFydCBhIHJvdyBtaWQtcmlzZS5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBlbnRlckRlbGF5TXModmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmVudGVyRGVsYXkgPT09IG51bGwpIHRoaXMuZW50ZXJEZWxheSA9IHZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgY2FwdHVyZWQgZGVsYXk7IGBudWxsYCB1bnRpbCB0aGUgZmlyc3QgYGVudGVyRGVsYXlNc2AgYmluZGluZyBsYW5kcy5cbiAgICogVGhlIHRlbXBsYXRlIGJpbmRzIGl0IHRvIGAtLWFpYS1vcHRpb24tZW50ZXItZGVsYXlgICh0aGUgY29yZSdzXG4gICAqIE9QVElPTl9FTlRFUl9ERUxBWV9WQVIpLCB3aGljaCB0aGUgc3R5bGVzaGVldCdzIGVudHJhbmNlIHJ1bGUgcmVhZHMuXG4gICAqL1xuICBlbnRlckRlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdWdnZXN0aW9uT3B0aW9uPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGlnaGxpZ2h0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogVGhlIHBvaW50ZXIgbGVmdCB0aGlzIHJvdy4gVGhlIG93bmVyIGNsZWFycyB0aGUgaGlnaGxpZ2h0IGlmIGl0IGlzIHN0aWxsXG4gICAqIG9uIHRoaXMgcm93OiBhIGhvdmVyIGhpZ2hsaWdodCBlbmRzIHdpdGggdGhlIGhvdmVyLCBzbyBFbnRlciBhZnRlcndhcmRzXG4gICAqIHN1Ym1pdHMgaW5zdGVhZCBvZiBwaWNraW5nIGEgcm93IHRoZSBwb2ludGVyIGlzIG5vIGxvbmdlciBvbi5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB1bmhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcmVzc2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHByZXNzZWRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaWNvblNvdXJjZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGljb25TYWZlOiBTYWZlSHRtbCB8IG51bGwgPSBudWxsO1xuICAvKipcbiAgICogVGhlIGBzcmNgcyB0aGF0IGZhaWxlZCB0byBsb2FkOiB0aGUgcm93IG1vdmVzIG9uIHRvIHRoZSBuZXh0IHNvdXJjZSAoYVxuICAgKiBTaG9waWZ5IHRodW1ibmFpbCBmYWxscyBiYWNrIHRvIHRoZSBvcmlnaW5hbCksIGFuZCB0aGUgdGlsZSBrZWVwcyBpdHNcbiAgICogcGxhY2Vob2xkZXIgZmlsbCBvbmNlIG5vbmUgaXMgbGVmdC5cbiAgICovXG4gIHByaXZhdGUgZmFpbGVkU3JjczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXTtcbiAgLyoqIFRoZSBgc3JjYCB0aGF0IGxhc3QgZmluaXNoZWQgbG9hZGluZzsgdGhlIHRpbGUgZHJvcHMgaXRzIGZpbGwgZm9yIGl0LiAqL1xuICBwcml2YXRlIGxvYWRlZFNyYzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBsYWJlbCBzcGxpdCBzbyB0aGUgdHlwZWQgZnJhZ21lbnQncyBtYXRjaCBjYW4gYmUgZHJhd24gaW4gYm9sZC4gKi9cbiAgZ2V0IHBhcnRzKCk6IHsgdGV4dDogc3RyaW5nOyBib2xkOiBib29sZWFuIH1bXSB7XG4gICAgcmV0dXJuIGhpZ2hsaWdodFBhcnRzKHRoaXMubGFiZWwsIHRoaXMub3B0aW9uLm1hdGNoZWRUZXh0KTtcbiAgfVxuXG4gIC8qKiBgcGFydHNgIGlzIHJlYnVpbHQgb24gZXZlcnkgY2hlY2ssIHNvIGl0cyBub2RlcyBhcmUga2VwdCBieSBwb3NpdGlvbi4gKi9cbiAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKiBUaGUgb3B0aW9uJ3MgdGV4dC4gYGljb25gIGlzIHRoZSBpY29uJ3MgbmFtZSBhbmQgaXMgbmV2ZXIgc2hvd24gYXMgdGV4dC4gKi9cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG9wdGlvbkxhYmVsKHRoaXMub3B0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGljdHVyZSdzIGBzcmNgLCBvciBgbnVsbGAgd2hlbiB0aGUgcm93IGRyYXdzIG5vbmU6IGltYWdlcyBvZmYsIG5vXG4gICAqIGBpbWFnZV91cmxgLCBvciBvbmUgdGhhdCBpcyBub3QgYW4gaHR0cChzKSBVUkwuIEEgcGljdHVyZSBzdGFuZHMgaW4gZm9yXG4gICAqIHRoZSBpY29uIOKAlCBhIHJvdyBuZXZlciBsZWFkcyB3aXRoIHR3byB2aXN1YWxzLlxuICAgKi9cbiAgZ2V0IGltYWdlU3JjKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHNvdXJjZXMgPSB0aGlzLmltYWdlU291cmNlcztcbiAgICByZXR1cm4gKFxuICAgICAgc291cmNlcy5maW5kKChzcmMpID0+ICF0aGlzLmZhaWxlZFNyY3MuaW5jbHVkZXMoc3JjKSkgPz8gc291cmNlc1tzb3VyY2VzLmxlbmd0aCAtIDFdID8/IG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgZXZlcnkgc291cmNlIG9mIHRoZSBwaWN0dXJlIGZhaWxlZCB0byBsb2FkICh0aGUgdGlsZSdzIGZpbGwgc3RheXMpLiAqL1xuICBnZXQgaW1hZ2VGYWlsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc291cmNlcyA9IHRoaXMuaW1hZ2VTb3VyY2VzO1xuICAgIHJldHVybiBzb3VyY2VzLmxlbmd0aCA+IDAgJiYgc291cmNlcy5ldmVyeSgoc3JjKSA9PiB0aGlzLmZhaWxlZFNyY3MuaW5jbHVkZXMoc3JjKSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgc2hvd24gcGljdHVyZSBoYXMgbG9hZGVkLCBzbyB0aGUgcGxhY2Vob2xkZXIgZmlsbCBzdGVwcyBhc2lkZS4gKi9cbiAgZ2V0IGltYWdlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pbWFnZUZhaWxlZCAmJiB0aGlzLmltYWdlU3JjICE9PSBudWxsICYmIHRoaXMubG9hZGVkU3JjID09PSB0aGlzLmltYWdlU3JjO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoc3JjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRlZFNyYyA9IHNyYztcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSB0aGlzLmltYWdlU3JjO1xuICAgIGlmIChzcmMgIT09IG51bGwgJiYgIXRoaXMuZmFpbGVkU3Jjcy5pbmNsdWRlcyhzcmMpKSB0aGlzLmZhaWxlZFNyY3MgPSBbLi4udGhpcy5mYWlsZWRTcmNzLCBzcmNdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW1hZ2VTb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zaG93SW1hZ2UgPyBvcHRpb25JbWFnZVNvdXJjZXModGhpcy5vcHRpb24uaW1hZ2VfdXJsKSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBhcyBwcmludGVkIChcIjEsMjg0XCIpLCBvciBgbnVsbGAgd2hlbiB0aGUgcm93IHNob3dzIG5vbmUuIFRoZVxuICAgKiB1bml0IHdvcmQgYWZ0ZXIgaXQgaXMgdGhlIHN0eWxlc2hlZXQncyAoYC0tYWlhLW9wdGlvbi1jb3VudC11bml0YCkuXG4gICAqL1xuICBnZXQgY291bnRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q291bnQgPyBmb3JtYXRPcHRpb25Db3VudCh0aGlzLm9wdGlvbi5pdGVtX2NvdW50KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG9wdGlvbidzIGljb24gYXMgYmluZGFibGUgSFRNTCwgb3IgYG51bGxgIHdoZW4gaXQgaGFzIG5vbmUgKG9yIGl0c1xuICAgKiBtYXJrdXAgZmFpbGVkIHRoZSBhbGxvd2xpc3QpLiBBbmd1bGFyJ3Mgb3duIEhUTUwgc2FuaXRpemVyIHN0cmlwcyBgPHN2Zz5gXG4gICAqIHdob2xlc2FsZSwgc28gdGhlIGNvcmUncyBhbGxvd2xpc3RlZCBvdXRwdXQgaXMgbWFya2VkIHRydXN0ZWQgaW5zdGVhZCDigJRcbiAgICogaXQgaXMgbmV2ZXIgdGhlIHNlcnZlcidzIHJhdyBzdHJpbmcuIFJlY29tcHV0ZWQgb25seSB3aGVuIHRoZSBtYXJrdXBcbiAgICogY2hhbmdlczsgdGhlIGdldHRlciBydW5zIG9uIGV2ZXJ5IE9uUHVzaCBjaGVjay5cbiAgICovXG4gIGdldCBpY29uSHRtbCgpOiBTYWZlSHRtbCB8IG51bGwge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc2hvd0ljb24gJiYgIXRoaXMuaW1hZ2VTcmMgPyB0aGlzLm9wdGlvbi5pY29uX3N2ZyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc3ZnICE9PSB0aGlzLmljb25Tb3VyY2UpIHtcbiAgICAgIHRoaXMuaWNvblNvdXJjZSA9IHN2ZztcbiAgICAgIGNvbnN0IGh0bWwgPSBzdmcgPyBzYW5pdGl6ZU9wdGlvbkljb25Tdmcoc3ZnKSA6IG51bGw7XG4gICAgICB0aGlzLmljb25TYWZlID0gaHRtbCA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaWNvblNhZmU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVzc2VkVGltZXIgIT09IHVuZGVmaW5lZCkgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NlZFRpbWVyKTtcbiAgfVxuXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlIHx8IHRoaXMucHJlc3NlZCkgcmV0dXJuO1xuICAgIHRoaXMucHJlc3NlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLm9wdGlvbik7XG4gICAgaWYgKHRoaXMucHJlc3NlZFRpbWVyICE9PSB1bmRlZmluZWQpIGNsZWFyVGltZW91dCh0aGlzLnByZXNzZWRUaW1lcik7XG4gICAgdGhpcy5wcmVzc2VkVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJlc3NlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSwgMTcwKTtcbiAgfVxuXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8ICF0aGlzLm9wdGlvbi5pc190YXBwYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0LmVtaXQoKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgIXRoaXMub3B0aW9uLmlzX3RhcHBhYmxlKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9uU2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtpZF09XCJpZFwiXG4gIHJvbGU9XCJvcHRpb25cIlxuICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICBbYXR0ci5kYXRhLWFpYS1sb2FkaW5nXT1cImxvYWRpbmcgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pY29uXT1cImljb25IdG1sICYmIG9wdGlvbi5pY29uID8gb3B0aW9uLmljb24gOiBudWxsXCJcbiAgW2F0dHIuZGF0YS1haWEtaW1hZ2VdPVwiaW1hZ2VTcmMgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1pdGVtLWNvdW50XT1cImNvdW50TGFiZWwgIT09IG51bGwgPyBvcHRpb24uaXRlbV9jb3VudCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWl0ZW1cIlxuICBbc3R5bGUuLS1haWEtb3B0aW9uLWVudGVyLWRlbGF5XT1cIihlbnRlckRlbGF5ID8/IDApICsgJ21zJ1wiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLWhpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWQgJiYgIWxvYWRpbmdcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS10YXBwYWJsZV09XCJvcHRpb24uaXNfdGFwcGFibGVcIlxuICBbY2xhc3MuYWlhLXN1Z2dlc3Rpb24taXRlbS1ub24tdGFwcGFibGVdPVwiIW9wdGlvbi5pc190YXBwYWJsZVwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXByZXNzZWRdPVwicHJlc3NlZFwiXG4gIFtjbGFzcy5haWEtc3VnZ2VzdGlvbi1pdGVtLXNjcm9sbC1oaW50XT1cInNjcm9sbEhpbnRcIlxuICBbYXR0ci50YWJpbmRleF09XCJsb2FkaW5nIHx8ICFvcHRpb24uaXNfdGFwcGFibGUgPyAtMSA6IDBcIlxuICAoY2xpY2spPVwib25TZWxlY3QoKVwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24tY29udGVudFwiPlxuICAgIDwhLS0gVGhlIHRpbGUga2VlcHMgYSBwbGFjZWhvbGRlciBmaWxsIHVudGlsIHRoZSBwaWN0dXJlIGxvYWRzLCBzbyBhIHNsb3dcbiAgICAgICAgIG9yIGZhaWxlZCBsb2FkIGxlYXZlcyBhIG5ldXRyYWwgc3F1YXJlIHJhdGhlciB0aGFuIGEgZ2FwLiBUaGUgcGljdHVyZVxuICAgICAgICAgaXMgZGVjb3JhdGl2ZTogdGhlIHRleHQgaXMgdGhlIG9wdGlvbidzIGFjY2Vzc2libGUgbmFtZS4gLS0+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwiaW1hZ2VTcmMgYXMgc3JjXCJcbiAgICAgIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24taW1hZ2VcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIFthdHRyLmRhdGEtYWlhLWltYWdlLWxvYWRlZF09XCJpbWFnZUxvYWRlZCA/ICcnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cInNyY1wiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgZGVjb2Rpbmc9XCJhc3luY1wiXG4gICAgICAgIHJlZmVycmVycG9saWN5PVwibm8tcmVmZXJyZXJcIlxuICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgIFtoaWRkZW5dPVwiaW1hZ2VGYWlsZWRcIlxuICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZChzcmMpXCJcbiAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCJcbiAgICAgIC8+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImljb25IdG1sXCJcbiAgICAgIGNsYXNzPVwiYWlhLXN1Z2dlc3Rpb24taWNvblwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgW2lubmVySFRNTF09XCJpY29uSHRtbFwiXG4gICAgPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLXRleHRcIlxuICAgICAgPjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnQgb2YgcGFydHM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgID48c3Ryb25nICpuZ0lmPVwicGFydC5ib2xkOyBlbHNlIHBsYWluXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi1tYXRjaFwiPnt7IHBhcnQudGV4dCB9fTwvc3Ryb25nXG4gICAgICAgID48bmctdGVtcGxhdGUgI3BsYWluPnt7IHBhcnQudGV4dCB9fTwvbmctdGVtcGxhdGU+PC9uZy1jb250YWluZXJcbiAgICAgID48bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uLnBhcmFtZXRlckxhYmVsXCJcbiAgICAgICAgPnt7IFwiIFwiIH19PHNwYW4gY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi1wYXJhbWV0ZXJcIj57eyBvcHRpb24ucGFyYW1ldGVyTGFiZWwgfX08L3NwYW4+PC9uZy1jb250YWluZXJcbiAgICAgID48L3NwYW5cbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udGFnXCIgY2xhc3M9XCJhaWEtc3VnZ2VzdGlvbi10YWdcIj57eyBvcHRpb24udGFnIH19PC9zcGFuPlxuICAgIDwhLS0gUGFydCBvZiB0aGUgcm93J3MgYWNjZXNzaWJsZSBuYW1lLCByZWFkIGFmdGVyIHRoZSBvcHRpb24ncyB0ZXh0LiAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImNvdW50TGFiZWwgIT09IG51bGxcIiBjbGFzcz1cImFpYS1zdWdnZXN0aW9uLWNvdW50XCI+e3sgY291bnRMYWJlbCB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|