.ps-chat{--ps-chat-accent: var(--ps-color-primary, #305cde);--ps-chat-accent-contrast: var(--ps-color-text-inverse, #ffffff);--ps-chat-surface: var(--ps-color-surface, #ffffff);--ps-chat-surface-alt: var(--ps-color-surface-alt, #f4f6fa);--ps-chat-border: var(--ps-color-border, #dde3ee);--ps-chat-text: var(--ps-color-text, #1a2233);--ps-chat-text-muted: var(--ps-color-text-3, #6b7280);--ps-chat-radius: 14px;font-family:var(--ps-font-primary, inherit);color:var(--ps-chat-text);box-sizing:border-box}.ps-chat *,.ps-chat *::before,.ps-chat *::after{box-sizing:inherit}.ps-chat__panel{display:flex;flex-direction:column;height:var(--ps-chat-height, 520px);background:var(--ps-chat-surface);border:1px solid var(--ps-chat-border);border-radius:var(--ps-chat-radius);box-shadow:0 10px 34px rgba(15,23,42,.12);overflow:hidden}.ps-chat--inline .ps-chat__panel{width:100%;max-width:var(--ps-chat-panel-max, 520px);margin:0 auto}.ps-chat--launcher{position:fixed;right:22px;bottom:22px;z-index:2147480000}.ps-chat--launcher .ps-chat__panel{position:absolute;right:0;bottom:74px;width:min(380px,100vw - 32px);height:min(var(--ps-chat-height, 520px),100vh - 120px)}.ps-chat__launcher{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border:none;border-radius:50%;background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast);cursor:pointer;box-shadow:0 6px 22px rgba(15,23,42,.28);transition:transform .15s ease,box-shadow .15s ease;position:relative}.ps-chat__launcher:hover{transform:scale(1.06);box-shadow:0 8px 26px rgba(15,23,42,.34)}.ps-chat__launcher-dot{position:absolute;top:3px;right:3px;width:12px;height:12px;border-radius:50%;background:#e5484d;border:2px solid var(--ps-chat-accent-contrast)}.ps-chat__header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast)}.ps-chat__header-text{display:flex;flex-direction:column;min-width:0}.ps-chat__title{font-size:15px;font-weight:700;line-height:1.2}.ps-chat__vehicle{font-size:12px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-chat__header-actions{display:flex;gap:6px}.ps-chat__icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:8px;background:rgba(255,255,255,.16);color:inherit;cursor:pointer}.ps-chat__icon-btn:hover{background:rgba(255,255,255,.28)}.ps-chat__icon-label{display:none}.ps-chat__messages{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px;background:var(--ps-chat-surface-alt);scroll-behavior:smooth}.ps-chat__bubble{max-width:86%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.45;white-space:pre-line;word-wrap:break-word}.ps-chat__bubble--bot{align-self:flex-start;background:var(--ps-chat-surface);border:1px solid var(--ps-chat-border);border-bottom-left-radius:5px}.ps-chat__bubble--user{align-self:flex-end;background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast);border-bottom-right-radius:5px}.ps-chat__bubble--error{border-color:#f3c1c3;background:#fdf2f2}.ps-chat__bubble--bot{position:relative}.ps-chat__flag{position:absolute;right:-22px;bottom:2px;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:5px;background:rgba(0,0,0,0);color:var(--ps-chat-text-muted);opacity:0;cursor:pointer;transition:opacity .12s ease,color .12s ease}.ps-chat__bubble--bot:hover .ps-chat__flag{opacity:.65}.ps-chat__flag:hover{opacity:1 !important;color:#e5484d}.ps-chat__flag--done{opacity:1 !important;color:#e5484d;cursor:default}.ps-chat__typing{display:flex;gap:4px;padding:12px 14px}.ps-chat__typing span{width:6px;height:6px;border-radius:50%;background:var(--ps-chat-text-muted);animation:ps-chat-typing 1.1s infinite ease-in-out}.ps-chat__typing span:nth-child(2){animation-delay:.15s}.ps-chat__typing span:nth-child(3){animation-delay:.3s}.ps-chat__chips{align-self:flex-start;max-width:100%}.ps-chat__chips-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ps-chat-text-muted);margin:2px 0 5px 2px}.ps-chat__chips-strip{display:flex;flex-wrap:wrap;gap:6px}.ps-chat__chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--ps-chat-accent);border-radius:999px;background:var(--ps-chat-surface);color:var(--ps-chat-accent);font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s ease,color .12s ease}.ps-chat__chip:hover:not(:disabled){background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast)}.ps-chat__chip:disabled{border-color:var(--ps-chat-border);color:var(--ps-chat-text-muted);cursor:default;opacity:.75}.ps-chat__chip--picked:disabled{background:var(--ps-chat-accent);border-color:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast);opacity:1}.ps-chat__chip--ghost{border-style:dashed;border-color:var(--ps-chat-border);color:var(--ps-chat-text-muted)}.ps-chat__chip--ghost:hover:not(:disabled){background:var(--ps-chat-surface-alt);color:var(--ps-chat-text)}.ps-chat__chip-count{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:999px;background:var(--ps-chat-surface-alt);color:var(--ps-chat-text-muted)}.ps-chat__chip:hover:not(:disabled) .ps-chat__chip-count{background:rgba(255,255,255,.25);color:inherit}.ps-chat__products{align-self:stretch}.ps-chat__caveat,.ps-chat__more{font-size:11.5px;color:var(--ps-chat-text-muted);margin-top:6px}.ps-chat__caveat{color:#9a6700}.ps-chat__composer{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--ps-chat-border);background:var(--ps-chat-surface)}.ps-chat__input{flex:1;min-width:0;padding:9px 13px;border:1px solid var(--ps-chat-border);border-radius:999px;font-size:13.5px;color:var(--ps-chat-text);background:var(--ps-chat-surface-alt);outline:none}.ps-chat__input:focus{border-color:var(--ps-chat-accent);background:var(--ps-chat-surface)}.ps-chat__input:disabled{opacity:.6}.ps-chat__send{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:none;border-radius:50%;background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast);cursor:pointer;flex:0 0 auto}.ps-chat__send:hover:not(:disabled){filter:brightness(1.08)}.ps-chat__send:disabled{opacity:.55;cursor:default}.ps-chat__results{max-width:860px;margin:14px auto 0;background:var(--ps-chat-surface);border:1px solid var(--ps-chat-border);border-radius:var(--ps-chat-radius);padding:14px 16px 16px}.ps-chat__results-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.ps-chat__results-title{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ps-chat-text)}.ps-chat__results-count{font-size:12px;font-weight:600;color:var(--ps-chat-text-muted)}.ps-chat__results-pills{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}.ps-chat__pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--ps-chat-accent, #0364ae);background:color-mix(in srgb, var(--ps-chat-accent, #0364ae) 8%, transparent);color:var(--ps-chat-text);font-size:12px;font-weight:600;line-height:1.4}.ps-chat__pill--context{border-color:var(--ps-chat-border);background:var(--ps-chat-surface);color:var(--ps-chat-text-muted)}.ps-chat__pill-x{appearance:none;border:0;background:none;padding:0 2px;margin:0;cursor:pointer;font-size:15px;font-weight:700;line-height:1;color:var(--ps-chat-text-muted)}.ps-chat__pill-x:hover{color:var(--ps-chat-text)}.ps-chat__results-grid .ps-chat-cards--grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(190px, 1fr));gap:10px;overflow:visible;padding:0}.ps-chat__results-grid .ps-chat-cards--grid .ps-chat-card{flex:none}.ps-chat__results-more{display:block;margin:12px auto 0;padding:8px 22px;border:1px solid var(--ps-chat-accent);border-radius:999px;background:var(--ps-chat-surface);color:var(--ps-chat-accent);font-size:13px;font-weight:700;cursor:pointer}.ps-chat__results-more:hover{background:var(--ps-chat-accent);color:var(--ps-chat-accent-contrast)}@media(max-width: 520px){.ps-chat--launcher{right:12px;bottom:12px}.ps-chat--launcher .ps-chat__panel{width:calc(100vw - 24px);height:min(var(--ps-chat-height, 520px),100vh - 96px)}}@media(max-width: 767.98px){.ps-chat--inline .ps-chat__panel{height:auto;overflow:visible;max-width:none}.ps-chat--inline .ps-chat__header{border-radius:var(--ps-chat-radius) var(--ps-chat-radius) 0 0}.ps-chat--inline .ps-chat__messages{flex:none;overflow-y:visible;min-height:120px}.ps-chat--inline .ps-chat__messages>*{scroll-margin-bottom:96px}.ps-chat--inline .ps-chat__composer{position:sticky;bottom:0;z-index:5;border-radius:0 0 var(--ps-chat-radius) var(--ps-chat-radius)}}.ps-chat-modal{position:fixed;inset:0;z-index:2147480500;display:flex;align-items:center;justify-content:center}.ps-chat-modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55)}.ps-chat-modal__panel{position:relative;width:min(560px,100vw - 28px);max-height:calc(100vh - 60px);display:flex;flex-direction:column;background:var(--ps-chat-surface, #fff);border-radius:14px;box-shadow:0 18px 60px rgba(15,23,42,.35);overflow:hidden}.ps-chat-modal__close{position:absolute;top:10px;right:10px;z-index:2;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:8px;background:rgba(15,23,42,.06);color:var(--ps-chat-text, #1a2233);cursor:pointer}.ps-chat-modal__close:hover{background:rgba(15,23,42,.14)}.ps-chat-modal__body{overflow-y:auto;padding:16px}.ps-chat-modal__loading{padding:40px 0;text-align:center;color:var(--ps-chat-text-muted, #6b7280);font-size:13.5px}.ps-chat-modal__pdp{display:block;padding:12px 16px;border-top:1px solid var(--ps-chat-border, #dde3ee);text-align:center;font-size:13.5px;font-weight:700;color:var(--ps-chat-accent, #305cde);text-decoration:none}.ps-chat-modal__pdp:hover{text-decoration:underline}.ps-chat-cards{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:4px 2px 8px;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.ps-chat-card{position:relative;flex:0 0 200px;display:flex;flex-direction:column;background:var(--ps-chat-surface, #fff);border:1px solid var(--ps-chat-border, #dde3ee);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--ps-chat-text, #1a2233);transition:box-shadow .14s ease,transform .14s ease}.ps-chat-card:hover{box-shadow:0 6px 18px rgba(15,23,42,.14);transform:translateY(-1px);text-decoration:none;color:var(--ps-chat-text, #1a2233)}.ps-chat-card__image{position:relative;height:108px;display:flex;align-items:center;justify-content:center;background:#fff;border-bottom:1px solid var(--ps-chat-border, #dde3ee)}.ps-chat-card__image img{max-width:100%;max-height:100%;object-fit:contain}.ps-chat-card__image-fallback{color:var(--ps-chat-text-muted, #9aa3b2)}.ps-chat-card__expand{position:absolute;top:6px;right:6px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:5px 10px;min-height:28px;border:1px solid var(--ps-chat-accent, #305cde);border-radius:999px;background:var(--ps-chat-accent, #305cde);color:var(--ps-chat-accent-contrast, #fff);font-size:11px;font-weight:700;line-height:1;white-space:nowrap;cursor:pointer;opacity:0;box-shadow:0 2px 6px rgba(16,24,40,.18);transition:opacity .12s ease,transform .12s ease}.ps-chat-card__expand svg{flex:0 0 auto}.ps-chat-card:hover .ps-chat-card__expand,.ps-chat-card__expand:focus-visible{opacity:1}.ps-chat-card__expand:hover{transform:scale(1.04)}@media(hover: none),(pointer: coarse){.ps-chat-card__expand{opacity:1;min-height:38px;padding:9px 14px;font-size:12px}}.ps-chat-card__badge{position:absolute;top:7px;left:7px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:999px;background:var(--ps-chat-accent, #305cde);color:var(--ps-chat-accent-contrast, #fff)}.ps-chat-card__badge--universal{background:#9a6700}.ps-chat-card__badge--unverified{background:#b45309}.ps-chat-card__badge--fit{background:#1a7f37}.ps-chat-card__body{display:flex;flex-direction:column;gap:3px;padding:9px 11px 11px;flex:1}.ps-chat-card__brand{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ps-chat-text-muted, #6b7280)}.ps-chat-card__title{font-size:12.5px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ps-chat-card__note{font-size:11px;color:var(--ps-chat-text-muted, #6b7280);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ps-chat-card__series{font-size:11px;font-weight:600;color:var(--ps-chat-text, #111827);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ps-chat-card__footer{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:auto;padding-top:6px}.ps-chat-card__price{font-size:15px;font-weight:800;color:var(--ps-chat-text, #1a2233)}.ps-chat-card__availability{font-size:10.5px;font-weight:600;color:#1a7f37;text-align:right}@keyframes ps-chat-typing{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-3px);opacity:1}}.ps-chat--overlay{--ps-chat-height: min(68vh, 720px)}.ps-chat--overlay.ps-chat--inline[data-ps-chat-variant=default] .ps-chat__panel{max-width:860px}.ps-chat--overlay .ps-chat__bubble{max-width:min(86%,620px)}.ps-chat--overlay .ps-chat__results{max-width:none}@media(max-width: 767.98px){.ps-chat--overlay{--ps-chat-height: calc(100dvh - 230px)}}.ps-chat--dropdown{--ps-chat-height: min(52vh, 420px);--ps-chat-radius: 6px}.ps-chat--dropdown.ps-chat--inline .ps-chat__panel{max-width:none;border:0;box-shadow:none;background:rgba(0,0,0,0)}.ps-chat--dropdown .ps-chat__bubble{max-width:min(92%,460px)}.ps-chat--dropdown .ps-chat__results{max-width:none;margin-top:10px}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9jb21wb25lbnQtYWktY2hhdGJvdC1zaGFyZWQuZjBiMjI5YmYyZDNiZTcwZjZiMmEuY3NzIiwibWFwcGluZ3MiOiJBQU9BLFNBQ0UsbURBQ0EsaUVBQ0Esb0RBQ0EsNERBQ0Esa0RBQ0EsOENBQ0Esc0RBQ0EsdUJBRUEsNENBQ0EsMEJBQ0Esc0JBRUEsZ0RBRVcsbUJBR1gsZ0JBQ0UsYUFDQSxzQkFDQSxvQ0FDQSxrQ0FDQSx1Q0FDQSxvQ0FDQSwwQ0FDQSxnQkFlRixpQ0FDRSxXQUNBLDBDQUNBLGNBSUYsbUJBQ0UsZUFDQSxXQUNBLFlBQ0EsbUJBR0YsbUNBQ0Usa0JBQ0EsUUFDQSxZQUNBLDhCQUNBLHVEQUdGLG1CQUNFLGFBQ0EsbUJBQ0EsdUJBQ0EsV0FDQSxZQUNBLFlBQ0Esa0JBQ0EsaUNBQ0EscUNBQ0EsZUFDQSx5Q0FDQSxvREFDQSxrQkFFQSx3RkFHRix1QkFDRSxrQkFDQSxRQUNBLFVBQ0EsV0FDQSxZQUNBLGtCQUNBLG1CQUNBLGdEQUlGLGlCQUNFLGFBQ0EsbUJBQ0EsOEJBQ0EsU0FDQSxrQkFDQSxpQ0FDQSxxQ0FHRixzQkFDRSxhQUNBLHNCQUNBLFlBR0YsZ0JBQ0UsZUFDQSxnQkFDQSxnQkFHRixrQkFDRSxlQUNBLFlBQ0EsbUJBQ0EsZ0JBQ0EsdUJBR0YsOENBRUEsbUJBQ0UsYUFDQSxtQkFDQSx1QkFDQSxXQUNBLFlBQ0EsWUFDQSxrQkFDQSxpQ0FDQSxjQUNBLGVBRUEsMERBTUYsa0NBR0EsbUJBQ0UsT0FDQSxnQkFDQSxhQUNBLGFBQ0Esc0JBQ0EsUUFDQSxzQ0FDQSx1QkFHRixpQkFDRSxjQUNBLGlCQUNBLG1CQUNBLGlCQUNBLGlCQUNBLHFCQUNBLHFCQUdGLHNCQUNFLHNCQUNBLGtDQUNBLHVDQUNBLDhCQUdGLHVCQUNFLG9CQUNBLGlDQUNBLHFDQUNBLCtCQUdGLHdCQUNFLHFCQUNBLG1CQUdGLHdDQUVBLGVBQ0Usa0JBQ0EsWUFDQSxXQUNBLGFBQ0EsbUJBQ0EsdUJBQ0EsV0FDQSxZQUNBLFlBQ0Esa0JBQ0Es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QkFDQSxnQkFDQSxnREFDQSxvQkFDQSwwQ0FDQSwyQ0FDQSxlQUNBLGdCQUNBLGNBQ0EsbUJBQ0EsZUFDQSxVQUNBLHdDQUNBLGlEQUVBLHdDQUdGLDhFQUMwQixVQUUxQixrREFHQSxzQ0FDRSxzQkFDRSxVQUNBLGdCQUNBLGlCQUNBLGdCQUlKLHFCQUNFLGtCQUNBLFFBQ0EsU0FDQSxlQUNBLGdCQUNBLHlCQUNBLHFCQUNBLGdCQUNBLG9CQUNBLDBDQUNBLDJDQUVBLG1EQUdBLG9EQUlBLDZDQUdGLG9CQUNFLGFBQ0Esc0JBQ0EsUUFDQSxzQkFDQSxPQUdGLHFCQUNFLGlCQUNBLGdCQUNBLHlCQUNBLHFCQUNBLHlDQUdGLHFCQUNFLGlCQUNBLGdCQUNBLGlCQUNBLG9CQUNBLHFCQUNBLDRCQUNBLGdCQUdGLG9CQUNFLGVBQ0EseUNBQ0Esb0JBQ0EscUJBQ0EsNEJBQ0EsZ0JBS0Ysc0JBQ0UsZUFDQSxnQkFDQSxtQ0FDQSxvQkFDQSxxQkFDQSw0QkFDQSxnQkFHRixzQkFDRSxhQUNBLHFCQUNBLDhCQUNBLFFBQ0EsZ0JBQ0EsZ0JBR0YscUJBQ0UsZUFDQSxnQkFDQSxtQ0FHRiw0QkFDRSxpQkFDQSxnQkFDQSxjQUNBLGlCQUlKLDBCQUNFLCtDQUNBLDBDQVVGLGtCQUVFLG1DQXNCQSxnRkFDRSxnQkFHRixtQ0FDRSx5QkFJRixvQ0FDRSxlQUdGLDRCQXJDRixrQkF1Q0ksd0NBY0osbUJBRUUsbUNBQ0Esc0JBRUEsbURBQ0UsZUFDQSxTQUNBLGdCQUNBLHlCQUdGLG9DQUNFLHlCQUlGLHFDQUNFLGVBQ0EsZ0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9iZWFjaHNpZGVhdXRvcGFydHMvLi4vLi4vLi4vYXV0by1wcmVzcy9yZXNvdXJjZXMvY29tcG9uZW50cy9haS1jaGF0Ym90L19zaGFyZWQvY29yZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIEFJIENoYXRib3Qg4oCUIGRlZmF1bHQgdmFyaWFudC5cbiAgU2NvcGVkIHVuZGVyIC5wcy1jaGF0ICh0aGUgY29tcG9uZW50IHJvb3QgZW1pdHMgcHMtY2hhdC0taW5saW5lfGxhdW5jaGVyKS5cbiAgVGhlbWVhYmxlIHZpYSAtLXBzLWNoYXQtKiB0b2tlbnMgd2l0aCBmYWxsYmFja3MgdG8gdGhlIHNpdGUncyAtLXBzLWNvbG9yLSpcbiAgZGVzaWduIHRva2Vucywgc28gYnVpbGRlciBTdHlsZS10YWIgdG9rZW5zIGNhbiByZXN0eWxlIGl0IHBlciBzaXRlLlxuKi9cblxuLnBzLWNoYXQge1xuICAtLXBzLWNoYXQtYWNjZW50OiB2YXIoLS1wcy1jb2xvci1wcmltYXJ5LCAjMzA1Y2RlKTtcbiAgLS1wcy1jaGF0LWFjY2VudC1jb250cmFzdDogdmFyKC0tcHMtY29sb3ItdGV4dC1pbnZlcnNlLCAjZmZmZmZmKTtcbiAgLS1wcy1jaGF0LXN1cmZhY2U6IHZhcigtLXBzLWNvbG9yLXN1cmZhY2UsICNmZmZmZmYpO1xuICAtLXBzLWNoYXQtc3VyZmFjZS1hbHQ6IHZhcigtLXBzLWNvbG9yLXN1cmZhY2UtYWx0LCAjZjRmNmZhKTtcbiAgLS1wcy1jaGF0LWJvcmRlcjogdmFyKC0tcHMtY29sb3ItYm9yZGVyLCAjZGRlM2VlKTtcbiAgLS1wcy1jaGF0LXRleHQ6IHZhcigtLXBzLWNvbG9yLXRleHQsICMxYTIyMzMpO1xuICAtLXBzLWNoYXQtdGV4dC1tdXRlZDogdmFyKC0tcHMtY29sb3ItdGV4dC0zLCAjNmI3MjgwKTtcbiAgLS1wcy1jaGF0LXJhZGl1czogMTRweDtcblxuICBmb250LWZhbWlseTogdmFyKC0tcHMtZm9udC1wcmltYXJ5LCBpbmhlcml0KTtcbiAgY29sb3I6IHZhcigtLXBzLWNoYXQtdGV4dCk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcGFuZWwgc2hlbGwgKi9cbiAgJl9fcGFuZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBoZWlnaHQ6IHZhcigtLXBzLWNoYXQtaGVpZ2h0LCA1MjBweCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcy1jaGF0LWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcHMtY2hhdC1yYWRpdXMpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAzNHB4IHJnYmEoMTUsIDIzLCA0MiwgMC4xMik7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8qIElubGluZSBwYW5lbCB3aWR0aC4gVGhlIGNhcCBpcyBhIFRPS0VOIHNvIHRoZSBjbGFzc2ljIHBhbmVsJ3MgYnVpbGRlclxuICAgICBcIlBhbmVsIFdpZHRoXCIgc2V0dGluZyAoU3RhbmRhcmQgLyBTdHJldGNoIHRvIGNvbnRhaW5lciAvIEN1c3RvbSkgY2FuIG1vdmVcbiAgICAgaXQgcGVyIHBsYWNlbWVudCDigJQgZGVmYXVsdC5ibGFkZS5waHAgd3JpdGVzIC0tcHMtY2hhdC1wYW5lbC1tYXggb24gdGhlXG4gICAgIHJvb3Q7IFwic3RyZXRjaFwiIHdyaXRlcyBgbm9uZWAuIDUyMHB4IHN0YXlzIHRoZSBmYWxsYmFjaywgc28gYSBibG9jayBzYXZlZFxuICAgICBiZWZvcmUgdGhlIHNldHRpbmcgZXhpc3RlZCByZW5kZXJzIGJ5dGUtaWRlbnRpY2FsbHkuXG5cbiAgICAgVGhlIGludGVncmF0ZWQgdmFyaWFudCBkZWxpYmVyYXRlbHkgZG9lcyBOT1QgcmVhZCB0aGlzOiBpdCBzZXRzXG4gICAgIGBtYXgtd2lkdGg6IG5vbmVgIG9uIHRoZSBwYW5lbCBhbmQgZ292ZXJucyBpdHMgb3duIHJlYWRpbmcgbWVhc3VyZSB3aXRoXG4gICAgIC0tcHMtY2hhdC1pbnQtbWVhc3VyZS4gV2lkdGggaXMgYSBDTEFTU0lDLXBhbmVsIGNvbmNlcm4gKHRoZSBzZXR0aW5nIGlzXG4gICAgIHZhcmlhbnQtc2NvcGVkIHRvIG1hdGNoKS5cblxuICAgICBNb2JpbGUgYWx3YXlzIGZpbGxzIOKAlCBzZWUgdGhlIGZsb3cgYmxvY2sgYmVsb3csIHdoaWNoIGNsZWFycyB0aGUgY2FwLiAqL1xuICAmLS1pbmxpbmUgJl9fcGFuZWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogdmFyKC0tcHMtY2hhdC1wYW5lbC1tYXgsIDUyMHB4KTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsYXVuY2hlciBtb2RlICovXG4gICYtLWxhdW5jaGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDIycHg7XG4gICAgYm90dG9tOiAyMnB4O1xuICAgIHotaW5kZXg6IDIxNDc0ODAwMDA7XG4gIH1cblxuICAmLS1sYXVuY2hlciAmX19wYW5lbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogNzRweDtcbiAgICB3aWR0aDogbWluKDM4MHB4LCBjYWxjKDEwMHZ3IC0gMzJweCkpO1xuICAgIGhlaWdodDogbWluKHZhcigtLXBzLWNoYXQtaGVpZ2h0LCA1MjBweCksIGNhbGMoMTAwdmggLSAxMjBweCkpO1xuICB9XG5cbiAgJl9fbGF1bmNoZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LWNvbnRyYXN0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMjJweCByZ2JhKDE1LCAyMywgNDIsIDAuMjgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNik7IGJveC1zaGFkb3c6IDAgOHB4IDI2cHggcmdiYSgxNSwgMjMsIDQyLCAwLjM0KTsgfVxuICB9XG5cbiAgJl9fbGF1bmNoZXItZG90IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzcHg7XG4gICAgcmlnaHQ6IDNweDtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6ICNlNTQ4NGQ7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcHMtY2hhdC1hY2NlbnQtY29udHJhc3QpO1xuICB9XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhlYWRlciAqL1xuICAmX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiAxMHB4O1xuICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LWNvbnRyYXN0KTtcbiAgfVxuXG4gICZfX2hlYWRlci10ZXh0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgJl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIH1cblxuICAmX192ZWhpY2xlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgb3BhY2l0eTogMC44NTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIH1cblxuICAmX19oZWFkZXItYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNnB4OyB9XG5cbiAgJl9faWNvbi1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpOyB9XG4gIH1cblxuICAvLyBUaGUgcmVzZXQgYnV0dG9uIHNoaXBzIGEgdGV4dCBsYWJlbCBmb3Igc2tpbnMgdGhhdCBzaG93IGEgbGFiZWxsZWQgYWN0aW9uXG4gIC8vICh0aGUgaW50ZWdyYXRlZCB2YXJpYW50KS4gVGhlIGNsYXNzaWMgcGFuZWwgaXMgaWNvbi1vbmx5LCBzbyBoaWRlIGl0IGhlcmVcbiAgLy8gcmF0aGVyIHRoYW4gYnJhbmNoaW5nIHRoZSBtYXJrdXAuXG4gICZfX2ljb24tbGFiZWwgeyBkaXNwbGF5OiBub25lOyB9XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1lc3NhZ2VzICovXG4gICZfX21lc3NhZ2VzIHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogMTRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1zdXJmYWNlLWFsdCk7XG4gICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIH1cblxuICAmX19idWJibGUge1xuICAgIG1heC13aWR0aDogODYlO1xuICAgIHBhZGRpbmc6IDlweCAxM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgZm9udC1zaXplOiAxMy41cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgfVxuXG4gICZfX2J1YmJsZS0tYm90IHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHMtY2hhdC1ib3JkZXIpO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDtcbiAgfVxuXG4gICZfX2J1YmJsZS0tdXNlciB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1hY2NlbnQpO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LWFjY2VudC1jb250cmFzdCk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcbiAgfVxuXG4gICZfX2J1YmJsZS0tZXJyb3Ige1xuICAgIGJvcmRlci1jb2xvcjogI2YzYzFjMztcbiAgICBiYWNrZ3JvdW5kOiAjZmRmMmYyO1xuICB9XG5cbiAgJl9fYnViYmxlLS1ib3QgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuICAmX19mbGFnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IC0yMnB4O1xuICAgIGJvdHRvbTogMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTJzIGVhc2UsIGNvbG9yIDAuMTJzIGVhc2U7XG4gIH1cblxuICAmX19idWJibGUtLWJvdDpob3ZlciAmX19mbGFnIHsgb3BhY2l0eTogMC42NTsgfVxuXG4gICZfX2ZsYWc6aG92ZXIgeyBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7IGNvbG9yOiAjZTU0ODRkOyB9XG5cbiAgJl9fZmxhZy0tZG9uZSB7XG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZTU0ODRkO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gICZfX3R5cGluZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG5cbiAgICBzcGFuIHtcbiAgICAgIHdpZHRoOiA2cHg7XG4gICAgICBoZWlnaHQ6IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtdGV4dC1tdXRlZCk7XG4gICAgICBhbmltYXRpb246IHBzLWNoYXQtdHlwaW5nIDEuMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7XG5cbiAgICAgICY6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjE1czsgfVxuICAgICAgJjpudGgtY2hpbGQoMykgeyBhbmltYXRpb24tZGVsYXk6IDAuM3M7IH1cbiAgICB9XG4gIH1cblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2hpcHMgKi9cbiAgJl9fY2hpcHMgeyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OyBtYXgtd2lkdGg6IDEwMCU7IH1cblxuICAmX19jaGlwcy1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMnB4IDAgNXB4IDJweDtcbiAgfVxuXG4gIC8qIE5PIElOTkVSIFNDUk9MTCBCT1gg4oCUIGV2ZXJ5IGNob2ljZSBpcyBvbiBzY3JlZW4sIHdyYXBwaW5nXG4gICAgIChvd25lciByZXBvcnQgMjAyNi0xMC0xNiwgamlzYXV0by5jb20sIGlQaG9uZSBTYWZhcmksIHNlYXJjaCBvdmVybGF5IEFJXG4gICAgIG1vZGUpLiBUaGUgc3RyaXAgdXNlZCB0byBiZSBjYXBwZWQgYXQgMTMycHggd2l0aCBvdmVyZmxvdy15OmF1dG8uIEFcbiAgICAgNi1jaG9pY2UgcGFydC10eXBlIGxpc3Qgb24gYSBwaG9uZSAob25lIGxvbmcgY2hpcCBwZXIgcm93KSB3YXMgY3V0IG9mZlxuICAgICBtaWQtY2hpcCBpbnNpZGUgdGhlIG92ZXJsYXkncyBvd24gc2Nyb2xsaW5nIGJvZHk6IGEgc2Nyb2xsIGJveCBpbnNpZGUgYVxuICAgICBzY3JvbGwgYm94LiBpT1MgaGFuZHMgYSBmaW5nZXIgdGhhdCBsYW5kcyB3aGlsZSB0aGUgT1VURVIgc2Nyb2xsZXIgaXNcbiAgICAgc3RpbGwgY29hc3Rpbmcgb3IgYm91bmNpbmcgdG8gdGhhdCBvdXRlciBzY3JvbGxlciwgc28gZHJhZ2dpbmcgdGhlIGNoaXBzXG4gICAgIG1vdmVkIHRoZSB3aG9sZSBzY3JlZW4gYW5kIG9ubHkgc2Nyb2xsZWQgdGhlIGxpc3Qgb25jZSB0aGUgcGFnZSBoYWQgZnVsbHlcbiAgICAgc3RvcHBlZCAoXCJmaW5pY2t5XCIpLiBObyBDU1MgY2hhbmdlcyB0aGF0IGhhbmQtb2ZmIChvdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgIG9ubHkgc3RvcHMgY2hhaW5pbmcgYXQgdGhlIGVuZHMpLCBzbyB0aGUgZml4IGlzIHRvIGhhdmUgbm8gaW5uZXIgc2Nyb2xsZXJcbiAgICAgYXQgYWxsLiBPbiBkZXNrdG9wIHRoZSBjYXAgaGlkIGNoaXBzIHRvbzogb3ZlcmxheSBzY3JvbGxiYXJzIGdhdmUgbm8gc2lnblxuICAgICB0aGF0IG1vcmUgY2hvaWNlcyBleGlzdGVkLlxuXG4gICAgIFNob3dpbmcgZXZlcnkgY2hpcCBpcyBzYWZlIGJlY2F1c2UgdGhlIFNFUlZFUiBjYXBzIGVhY2ggbGlzdDpcbiAgICAgQ2hhdFJlc3BvbnNlRm9ybWF0dGVyOjpjaGlwT3B0aW9ucygpIHNlbmRzIGF0IG1vc3QgMTQgKCsgYSBcIk5vdCBzdXJlXCJcbiAgICAgY2hpcCkgYW5kIHBhcnQtdHlwZSBzdWdnZXN0aW9ucyBhdCBtb3N0IDguIElmIHRob3NlIGNhcHMgYXJlIGV2ZXIgcmFpc2VkLFxuICAgICBmb2xkIHRoZSBleHRyYXMgYmVoaW5kIGEgXCJTaG93IG1vcmVcIiBjaGlwLiBOZXZlciBicmluZyBiYWNrIGFuIGlubmVyXG4gICAgIHNjcm9sbCBib3guIFNhbWUgcHJpbmNpcGxlIGFzIHRoZSBtb2JpbGUgc2luZ2xlLXNjcm9sbCBmbG93IGJsb2NrIGJlbG93LiAqL1xuICAmX19jaGlwcy1zdHJpcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA2cHg7XG4gIH1cblxuICAmX19jaGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYWNjZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LWFjY2VudCk7XG4gICAgZm9udC1zaXplOiAxMi41cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjEycyBlYXNlLCBjb2xvciAwLjEycyBlYXNlO1xuXG4gICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LWFjY2VudCk7XG4gICAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC1hY2NlbnQtY29udHJhc3QpO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcy1jaGF0LWJvcmRlcik7XG4gICAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkKTtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgfVxuXG4gICAgJi0tcGlja2VkOmRpc2FibGVkIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtYWNjZW50KTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHMtY2hhdC1hY2NlbnQpO1xuICAgICAgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LWNvbnRyYXN0KTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgJi0tZ2hvc3Qge1xuICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXBzLWNoYXQtYm9yZGVyKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQtbXV0ZWQpO1xuXG4gICAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1zdXJmYWNlLWFsdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2NoaXAtY291bnQge1xuICAgIGZvbnQtc2l6ZTogMTAuNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgcGFkZGluZzogMXB4IDZweDtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UtYWx0KTtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkKTtcbiAgfVxuXG4gICZfX2NoaXA6aG92ZXI6bm90KDpkaXNhYmxlZCkgJl9fY2hpcC1jb3VudCB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7IGNvbG9yOiBpbmhlcml0OyB9XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHByb2R1Y3QgY2FyZHMgKi9cbiAgJl9fcHJvZHVjdHMgeyBhbGlnbi1zZWxmOiBzdHJldGNoOyB9XG5cbiAgJl9fY2F2ZWF0LFxuICAmX19tb3JlIHtcbiAgICBmb250LXNpemU6IDExLjVweDtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gIH1cblxuICAmX19jYXZlYXQgeyBjb2xvcjogIzlhNjcwMDsgfVxuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjb21wb3NlciAqL1xuICAmX19jb21wb3NlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UpO1xuICB9XG5cbiAgJl9faW5wdXQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHBhZGRpbmc6IDlweCAxM3B4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBmb250LXNpemU6IDEzLjVweDtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UtYWx0KTtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJjpmb2N1cyB7IGJvcmRlci1jb2xvcjogdmFyKC0tcHMtY2hhdC1hY2NlbnQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UpOyB9XG4gICAgJjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNjsgfVxuICB9XG5cbiAgJl9fc2VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzOHB4O1xuICAgIGhlaWdodDogMzhweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtYWNjZW50KTtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC1hY2NlbnQtY29udHJhc3QpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wOCk7IH1cbiAgICAmOmRpc2FibGVkIHsgb3BhY2l0eTogMC41NTsgY3Vyc29yOiBkZWZhdWx0OyB9XG4gIH1cblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29tcGFuaW9uIHJlc3VsdHMgcGFuZWwgKi9cbiAgJl9fcmVzdWx0cyB7XG4gICAgbWF4LXdpZHRoOiA4NjBweDtcbiAgICBtYXJnaW46IDE0cHggYXV0byAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHMtY2hhdC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXBzLWNoYXQtcmFkaXVzKTtcbiAgICBwYWRkaW5nOiAxNHB4IDE2cHggMTZweDtcbiAgfVxuXG4gICZfX3Jlc3VsdHMtaGVhZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICB9XG5cbiAgJl9fcmVzdWx0cy10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQpO1xuICB9XG5cbiAgJl9fcmVzdWx0cy1jb3VudCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtdGV4dC1tdXRlZCk7XG4gIH1cblxuICAvLyBwaWNrZWQtbmFycm93aW5nIHBpbGxzIG92ZXIgdGhlIGdyaWQ6IGZpeGVkIGNvbnRleHQgKHZlaGljbGUvcGFydCkgcmVhZHNcbiAgLy8gbXV0ZWQ7IHJlbW92YWJsZSBmaWx0ZXJzIGNhcnJ5IHRoZSDDlyBhbmQgYSBsaXZlIGJvcmRlclxuICAmX19yZXN1bHRzLXBpbGxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDZweDtcbiAgICBtYXJnaW46IDAgMCAxMHB4O1xuICB9XG5cbiAgJl9fcGlsbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcy1jaGF0LWFjY2VudCwgIzAzNjRhZSk7XG4gICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXBzLWNoYXQtYWNjZW50LCAjMDM2NGFlKSA4JSwgdHJhbnNwYXJlbnQpO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQpO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG5cbiAgICAmLS1jb250ZXh0IHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHMtY2hhdC1ib3JkZXIpO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1zdXJmYWNlKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQtbXV0ZWQpO1xuICAgIH1cbiAgfVxuXG4gICZfX3BpbGwteCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBwYWRkaW5nOiAwIDJweDtcbiAgICBtYXJnaW46IDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQtbXV0ZWQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAmX19yZXN1bHRzLWdyaWQgLnBzLWNoYXQtY2FyZHMtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTkwcHgsIDFmcikpO1xuICAgIGdhcDogMTBweDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgJl9fcmVzdWx0cy1ncmlkIC5wcy1jaGF0LWNhcmRzLS1ncmlkIC5wcy1jaGF0LWNhcmQgeyBmbGV4OiBub25lOyB9XG5cbiAgJl9fcmVzdWx0cy1tb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDEycHggYXV0byAwO1xuICAgIHBhZGRpbmc6IDhweCAyMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYWNjZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LWFjY2VudCk7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXBzLWNoYXQtYWNjZW50KTsgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LWNvbnRyYXN0KTsgfVxuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDUyMHB4KSB7XG4gICAgJi0tbGF1bmNoZXIgeyByaWdodDogMTJweDsgYm90dG9tOiAxMnB4OyB9XG5cbiAgICAmLS1sYXVuY2hlciAmX19wYW5lbCB7XG4gICAgICB3aWR0aDogY2FsYygxMDB2dyAtIDI0cHgpO1xuICAgICAgaGVpZ2h0OiBtaW4odmFyKC0tcHMtY2hhdC1oZWlnaHQsIDUyMHB4KSwgY2FsYygxMDB2aCAtIDk2cHgpKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbW9iaWxlIHNpbmdsZS1zY3JvbGwgZmxvd1xuICAgICAob3duZXIgcmVwb3J0IDIwMjYtMDgtMjUsIHBhcnRzb250aGVnbyBtb2JpbGUpOiBhbiBJTkxJTkUgYXNzaXN0YW50IG9uIGFcbiAgICAgcGhvbmUgaGFkIHR3byBuZXN0ZWQgc2Nyb2xsYmFycyDigJQgdGhlIGZpeGVkLWhlaWdodCBwYW5lbCBzY3JvbGxlZCB0aGVcbiAgICAgY29udmVyc2F0aW9uIGludGVybmFsbHkgd2hpbGUgdGhlIHBhZ2Ugc2Nyb2xsZWQgdGhlIHBhbmVsICsgdGhlIG1hdGNoaW5nLVxuICAgICBwcm9kdWN0cyBncmlkIGJlbG93IGl0LiBDcmFtcGVkIGFuZCBmaWRkbHk6IHlvdSBzY3J1YiBhIDUwMHB4IHdpbmRvdyxcbiAgICAgdGhlbiBzd2l0Y2ggc2Nyb2xsYmFycyB0byByZWFjaCB0aGUgcHJvZHVjdHMuXG5cbiAgICAgT24gcGhvbmVzIHRoZSBpbmxpbmUgcGFuZWwgdGhlcmVmb3JlIHN0b3BzIGJlaW5nIGEgc2Nyb2xsIGNvbnRhaW5lcjogdGhlXG4gICAgIHBhbmVsIGdyb3dzIHdpdGggaXRzIGNvbnRlbnQsIGV2ZXJ5IGJ1YmJsZSBzaXRzIGluIHRoZSBQQUdFIGZsb3csIGFuZCBvbmVcbiAgICAgcGFnZSBzY3JvbGxiYXIgcnVucyBmcm9tIHRoZSBmaXJzdCBtZXNzYWdlIHRocm91Z2ggdGhlIG1hdGNoaW5nIHByb2R1Y3RzLlxuICAgICBUaGUgY29tcG9zZXIgZ29lcyBgcG9zaXRpb246IHN0aWNreTsgYm90dG9tOiAwYCwgc28gdGhlIGlucHV0IHN0YXlzIGluXG4gICAgIHJlYWNoIHRoZSB3aG9sZSB0aW1lIHRoZSBjb252ZXJzYXRpb24gaXMgb24gc2NyZWVuIGFuZCBuYXR1cmFsbHkgcGFya3MgYXRcbiAgICAgdGhlIHBhbmVsJ3MgZW5kIHdoZW4geW91IHNjcm9sbCBwYXN0IGl0IGludG8gdGhlIHByb2R1Y3RzLlxuXG4gICAgIENvbnN1bWVyIGNvbnRyYWN0OiBQc0NoYXRXaWRnZXQuc2Nyb2xsVG9FbmQoKSBkZXRlY3RzIHRoaXMgbW9kZSBieSB0aGVcbiAgICAgbWVzc2FnZXMgYXJlYSdzIGNvbXB1dGVkIG92ZXJmbG93LXkgKGB2aXNpYmxlYCA9IGZsb3cgbW9kZSkgYW5kIHNjcm9sbHNcbiAgICAgdGhlIFBBR0UgdG8gdGhlIG5ld2VzdCBidWJibGUg4oCUIGJ1dCBvbmx5IG9uIHVzZXItaW5pdGlhdGVkIHR1cm5zLCBuZXZlclxuICAgICBvbiBib290IHJlcGxheSAoYSBwYWdlIG11c3Qgbm90IGp1bXAgdG8gbWlkLXBhZ2UgY2hhdCBoaXN0b3J5IG9uIGxvYWQpLlxuICAgICBUaGUgc2Nyb2xsLW1hcmdpbiBiZWxvdyBpcyB3aGF0IGtlZXBzIHRoYXQgbmV3ZXN0IGJ1YmJsZSB2aXNpYmxlIEFCT1ZFXG4gICAgIHRoZSBzdGlja3kgY29tcG9zZXI7IGtlZXAgdGhlIHR3byBpbiBzeW5jLlxuXG4gICAgIFNjb3BlOlxuICAgICAtIGAtLWlubGluZWAgb25seTogdGhlIGxhdW5jaGVyIHBvcG92ZXIgZmxvYXRzIG92ZXIgdGhlIHBhZ2UgYW5kIE1VU1RcbiAgICAgICBrZWVwIGl0cyBvd24gaW50ZXJuYWwgc2Nyb2xsLlxuICAgICAtIFRoaXMgSU5DTFVERVMgdGhlIHNpdGUtc2VhcmNoIG92ZXJsYXkgZW1iZWQgKC5wcy1jaGF0LS1vdmVybGF5KS4gSXRcbiAgICAgICB3YXMgZXhjbHVkZWQgYXQgZmlyc3QgKFwidGhlIG92ZXJsYXkgb3ducyB0aGUgdmlld3BvcnRcIikg4oCUIHdyb25nOiB0aGVcbiAgICAgICBvd25lciB0ZXN0cyBUSEFUIHN1cmZhY2UsIGFuZCBpdCBoYWQgdGhlIHNhbWUgdHdvIG5lc3RlZCBzY3JvbGxiYXJzXG4gICAgICAgKHBhbmVsIHNjcm9sbGluZyBpbnNpZGUgdGhlIG1vZGFsLWJvZHkgc2Nyb2xsaW5nKS4gSW4gdGhlIGZ1bGxzY3JlZW5cbiAgICAgICBzZWFyY2ggbW9kYWwgdGhlIHNjcm9sbHBvcnQgaXMgYC5tb2RhbC1ib2R5YCwgc28gdGhlc2Ugc2FtZSBydWxlcyBnaXZlXG4gICAgICAgb25lIG1vZGFsIHNjcm9sbGJhciBmcm9tIHRoZSBmaXJzdCBidWJibGUgdGhyb3VnaCBtYXRjaGluZyBwcm9kdWN0cyxcbiAgICAgICB3aXRoIHRoZSBjb21wb3NlciBzdGlja2luZyB0byB0aGUgbW9kYWwncyB2aXNpYmxlIGJvdHRvbS4gYHBvc2l0aW9uOlxuICAgICAgIHN0aWNreWAgcGlucyB0byB0aGUgTkVBUkVTVCBzY3JvbGxpbmcgYW5jZXN0b3Ig4oCUIHRoZSBwYWdlIG91dHNpZGUgdGhlXG4gICAgICAgbW9kYWwsIGAubW9kYWwtYm9keWAgaW5zaWRlIGl0IOKAlCBzbyBvbmUgcnVsZSBzZXJ2ZXMgYm90aCBob3N0cy5cbiAgICAgLSBUaGUgaW50ZWdyYXRlZCB2YXJpYW50IG1pcnJvcnMgdGhpcyBibG9jayBpbiBpdHMgb3duIHN0eWxlc2hlZXQg4oCUIGl0c1xuICAgICAgIHBhbmVsL21lc3NhZ2VzIHNpemluZyBydWxlcyBsb2FkIGFmdGVyIHRoaXMgb25lIGFuZCB3b3VsZCBvdGhlcndpc2VcbiAgICAgICByZS1hc3NlcnQgYW4gaW50ZXJuYWwgc2Nyb2xsYm94IChzZWUgaW50ZWdyYXRlZC9pbmRleC5zY3NzKS4gKi9cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgJi0taW5saW5lICZfX3BhbmVsIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIC8qIG92ZXJmbG93OmhpZGRlbiB3b3VsZCBtYWtlIHRoZSBzdGlja3kgY29tcG9zZXIgc3RpY2sgdG8gdGhlIChub24tXG4gICAgICAgICBzY3JvbGxpbmcpIHBhbmVsIGluc3RlYWQgb2YgdGhlIHNjcm9sbHBvcnQg4oCUIGFuZCBjbGlwIG5vdGhpbmcgdXNlZnVsICovXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIC8qIFBob25lcyBhbHdheXMgZmlsbCB0aGUgd2lkdGggdGhleSBhcmUgZ2l2ZW4g4oCUIHRoZSBidWlsZGVyJ3MgUGFuZWxcbiAgICAgICAgIFdpZHRoIHNldHRpbmcgaXMgYSBERVNLVE9QIGNvbnRyb2wgKG93bmVyIGRlY2lzaW9uIDIwMjYtMDgtMjg6IFwibW9iaWxlXG4gICAgICAgICBpdCBhdXRvbWF0aWNhbGx5IGZpdHMgdG8gdGhlIHNpemUgb2YgdGhlIHNjcmVlblwiKS4gV2l0aG91dCB0aGlzLCBhXG4gICAgICAgICBjdXN0b20gd2lkdGggbmFycm93ZXIgdGhhbiB0aGUgcGhvbmUgKGUuZy4gNDAwcHgpIHdvdWxkIGxldHRlcmJveCB0aGVcbiAgICAgICAgIGFzc2lzdGFudCBvbiBhIDM5MHB4IHNjcmVlbiwgd2hpY2ggbm8gbWVyY2hhbnQgaW50ZW5kcy4gKi9cbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG5cbiAgICAmLS1pbmxpbmUgJl9faGVhZGVyIHtcbiAgICAgIC8qIHRoZSBwYW5lbCBubyBsb25nZXIgY2xpcHMgY2hpbGRyZW4gdG8gaXRzIHJvdW5kZWQgY29ybmVycyAqL1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcHMtY2hhdC1yYWRpdXMpIHZhcigtLXBzLWNoYXQtcmFkaXVzKSAwIDA7XG4gICAgfVxuXG4gICAgJi0taW5saW5lICZfX21lc3NhZ2VzIHtcbiAgICAgIGZsZXg6IG5vbmU7XG4gICAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuICAgICAgbWluLWhlaWdodDogMTIwcHg7IC8qIGFuIGVtcHR5LzEtbGluZSBjaGF0IHN0aWxsIHJlYWRzIGFzIGEgcGFuZWwgKi9cbiAgICB9XG5cbiAgICAvKiBzY3JvbGxJbnRvVmlldyB0YXJnZXQgbWFyZ2luOiBuZXdlc3QgYnViYmxlL2NoaXBzIGxhbmQgQUJPVkUgdGhlXG4gICAgICAgc3RpY2t5IGNvbXBvc2VyIChtZWFzdXJlZCA4MXB4IHRhbGwgYXQgbW9iaWxlIHNpemVzKSB3aXRoIGJyZWF0aGluZ1xuICAgICAgIHJvb20g4oCUIG11c3Qgc3RheSA+PSB0aGUgY29tcG9zZXIncyByZWFsIGhlaWdodCBvciB0aGUgbmV3ZXN0IG1lc3NhZ2VcbiAgICAgICBoaWRlcyBiZWhpbmQgaXQgKi9cbiAgICAmLS1pbmxpbmUgJl9fbWVzc2FnZXMgPiAqIHsgc2Nyb2xsLW1hcmdpbi1ib3R0b206IDk2cHg7IH1cblxuICAgICYtLWlubGluZSAmX19jb21wb3NlciB7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgei1pbmRleDogNTsgLyogYWJvdmUgYnViYmxlcy9jYXJkcyBzbGlkaW5nIGJlbmVhdGggaXQgKi9cbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1wcy1jaGF0LXJhZGl1cykgdmFyKC0tcHMtY2hhdC1yYWRpdXMpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNhcmQgcXVpY2stdmlldyBtb2RhbCAqL1xuLnBzLWNoYXQtbW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAyMTQ3NDgwNTAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAmX19iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC41NSk7XG4gIH1cblxuICAmX19wYW5lbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiBtaW4oNTYwcHgsIGNhbGMoMTAwdncgLSAyOHB4KSk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UsICNmZmYpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgYm94LXNoYWRvdzogMCAxOHB4IDYwcHggcmdiYSgxNSwgMjMsIDQyLCAwLjM1KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgJl9fY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgei1pbmRleDogMjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjA2KTtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LCAjMWEyMjMzKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjE0KTsgfVxuICB9XG5cbiAgJl9fYm9keSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiAxNnB4O1xuICB9XG5cbiAgJl9fbG9hZGluZyB7XG4gICAgcGFkZGluZzogNDBweCAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkLCAjNmI3MjgwKTtcbiAgICBmb250LXNpemU6IDEzLjVweDtcbiAgfVxuXG4gICZfX3BkcCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1wcy1jaGF0LWJvcmRlciwgI2RkZTNlZSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTMuNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LCAjMzA1Y2RlKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNoYXQgcHJvZHVjdCBjYXJkc1xuICAgKHNlcnZlci1yZW5kZXJlZCBieSBjb21wb25lbnRzL2FpLWNoYXRib3QvX2NoYXQtY2FyZHMuYmxhZGUucGhwKSAqL1xuLnBzLWNoYXQtY2FyZHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEwcHg7XG4gIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgLyogVE9VQ0ggU0NST0xMIFRSQVAsIHJvdW5kIDIgKG93bmVyIHJlcG9ydHMgMjAyNi0wOC0xOSBhbmQgMjAyNi0wOC0yNSxcbiAgICAgcGFydHNvbnRoZWdvIHByb2R1Y3Rpb24sIG1vYmlsZSkuIEEgc2hvcHBlciBzd2lwaW5nIHRoaXMgc3RyaXAgc2lkZXdheXNcbiAgICAgYW5kIHRhcHBpbmcgUXVpY2sgdmlldyBpcyBmaW5lLCBidXQgYSBWRVJUSUNBTCBkcmFnIHN0YXJ0aW5nIG9uIHRoZSBjYXJkc1xuICAgICBtdXN0IHNjcm9sbCB0aGUgY29udmVyc2F0aW9uIOKAlCB0d2ljZSBub3cgYSBydWxlIGhlcmUgaGFzIHNpbGVudGx5IGVhdGVuXG4gICAgIHRoYXQgZ2VzdHVyZTpcblxuICAgICAxLiAoMjAyNi0wOC0xOSkgYG92ZXJmbG93LXg6IGF1dG9gIGFsb25lIGRvZXMgTk9UIGxlYXZlIHRoZSBvdGhlciBheGlzXG4gICAgICAgIGFsb25lLiBQZXIgc3BlYywgd2hlbiBvbmUgYXhpcyBpcyBhIHNjcm9sbCB2YWx1ZSBhbmQgdGhlIG90aGVyIGlzXG4gICAgICAgIGB2aXNpYmxlYCwgdGhlIHZpc2libGUgb25lIGNvbXB1dGVzIHRvIGBhdXRvYCDigJQgc28gdGhpcyBzdHJpcCB3YXNcbiAgICAgICAgcXVpZXRseSBhIFZFUlRJQ0FMIHNjcm9sbCBjb250YWluZXIgdG9vLiBXaXRoIG5vIHZlcnRpY2FsIG92ZXJmbG93IHRvXG4gICAgICAgIGNvbnN1bWUsIGl0IHN3YWxsb3dlZCB0aGUgZ2VzdHVyZSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgdXAuXG4gICAgICAgIGBvdmVyZmxvdy15OiBoaWRkZW5gIGlzIHRoZSBmaXgsIGFuZCB0aGUgV0hPTEUgZml4OiBhIG9uZS1heGlzIHNjcm9sbFxuICAgICAgICBjb250YWluZXIgbGV0cyB0aGUgYnJvd3NlcidzIG5hdGl2ZSBheGlzLWxvY2tpbmcgc2VuZCB2ZXJ0aWNhbCBkcmFnc1xuICAgICAgICB0byB0aGUgbmVhcmVzdCBzY3JvbGxhYmxlIGFuY2VzdG9yLCBleGFjdGx5IGxpa2UgZXZlcnkgcHJvZHVjdFxuICAgICAgICBjYXJvdXNlbCBvbiB0aGUgd2ViLlxuXG4gICAgIDIuICgyMDI2LTA4LTI1KSBUaGUgZmlyc3QgZml4IEFMU08gYWRkZWQgYHRvdWNoLWFjdGlvbjogcGFuLXhcbiAgICAgICAgcGluY2gtem9vbWAgXCJzbyB2ZXJ0aWNhbCBkcmFncyBnbyB0byB0aGUgbWVzc2FnZSBsaXN0XCIg4oCUIHdoaWNoIGlzIHRoZVxuICAgICAgICBPUFBPU0lURSBvZiB3aGF0IHRvdWNoLWFjdGlvbiBkb2VzLiBgcGFuLXhgIG1lYW5zIHRvdWNoZXMgc3RhcnRpbmcgb25cbiAgICAgICAgdGhpcyBlbGVtZW50IG1heSBiZSB1c2VkIGZvciBob3Jpem9udGFsIHBhbm5pbmcgT05MWTsgdGhlIGJyb3dzZXJcbiAgICAgICAgd2lsbCBub3QgdXNlIHRoZW0gdG8gc2Nyb2xsIEFOWSBhbmNlc3RvciB2ZXJ0aWNhbGx5LiBSZXN1bHQ6IGRlYWRcbiAgICAgICAgdmVydGljYWwgc3dpcGVzIG92ZXIgdGhlIGNhcmRzLCB0aGUgdmVyeSBzeW1wdG9tIGJlaW5nIGZpeGVkLiBUaGVyZVxuICAgICAgICBtdXN0IGJlIE5PIHRvdWNoLWFjdGlvbiByZXN0cmljdGlvbiBoZXJlIOKAlCB0YXBzLCBzaWRld2F5cyBzd2lwZXMsIGFuZFxuICAgICAgICB2ZXJ0aWNhbCBkcmFncyBhbGwgYmVsb25nIHRvIHRoZSBkZWZhdWx0IChgYXV0b2ApIGJlaGF2aW9yLiAqL1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIHBhZGRpbmc6IDRweCAycHggOHB4O1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgLyoga2VlcCBhIHNpZGV3YXlzIGZsaW5nIGZyb20gdHVybmluZyBpbnRvIHRoZSBicm93c2VyJ3MgYmFjay1nZXN0dXJlICovXG4gIG92ZXJzY3JvbGwtYmVoYXZpb3IteDogY29udGFpbjtcbn1cblxuLnBzLWNoYXQtY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogYW5jaG9ycyB0aGUgcXVpY2stdmlldyBidXR0b24gKi9cbiAgZmxleDogMCAwIDIwMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LXN1cmZhY2UsICNmZmYpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcy1jaGF0LWJvcmRlciwgI2RkZTNlZSk7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IHZhcigtLXBzLWNoYXQtdGV4dCwgIzFhMjIzMyk7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xNHMgZWFzZSwgdHJhbnNmb3JtIDAuMTRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMThweCByZ2JhKDE1LCAyMywgNDIsIDAuMTQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtdGV4dCwgIzFhMjIzMyk7XG4gIH1cblxuICAmX19pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMTA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYm9yZGVyLCAjZGRlM2VlKTtcblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICB9XG4gIH1cblxuICAmX19pbWFnZS1mYWxsYmFjayB7IGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQtbXV0ZWQsICM5YWEzYjIpOyB9XG5cbiAgLy8gUXVpY2sgdmlldzogYSByZWFsIGxhYmVsZWQgcGlsbCwgbm90IGEgbXlzdGVyeSBpY29uLiBEZXNrdG9wIHJldmVhbHMgaXRcbiAgLy8gb24gaG92ZXIvZm9jdXM7IHRvdWNoIGRldmljZXMgKG5vIGhvdmVyKSBrZWVwIGl0IEFMV0FZUyB2aXNpYmxlIHdpdGggYVxuICAvLyBmaW5nZXItc2l6ZWQgdGFwIHRhcmdldCDigJQgbWlzLXRhcHMgdGhlcmUgbmF2aWdhdGUgdG8gdGhlIFBEUCBvdGhlcndpc2UuXG4gICZfX2V4cGFuZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNnB4O1xuICAgIHJpZ2h0OiA2cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDVweDtcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICBtaW4taGVpZ2h0OiAyOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBzLWNoYXQtYWNjZW50LCAjMzA1Y2RlKTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcy1jaGF0LWFjY2VudCwgIzMwNWNkZSk7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtYWNjZW50LWNvbnRyYXN0LCAjZmZmKTtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDE2LCAyNCwgNDAsIDAuMTgpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZSwgdHJhbnNmb3JtIDAuMTJzIGVhc2U7XG5cbiAgICBzdmcgeyBmbGV4OiAwIDAgYXV0bzsgfVxuICB9XG5cbiAgJjpob3ZlciAmX19leHBhbmQsXG4gICZfX2V4cGFuZDpmb2N1cy12aXNpYmxlIHsgb3BhY2l0eTogMTsgfVxuXG4gICZfX2V4cGFuZDpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNCk7IH1cblxuICAvLyBubyBob3ZlciB0byByZXZlYWwgd2l0aCDihpIgYWx3YXlzIHZpc2libGUgd2l0aCBhIGJpZ2dlciB0YXAgdGFyZ2V0XG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpLCAocG9pbnRlcjogY29hcnNlKSB7XG4gICAgJl9fZXhwYW5kIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBtaW4taGVpZ2h0OiAzOHB4O1xuICAgICAgcGFkZGluZzogOXB4IDE0cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuICB9XG5cbiAgJl9fYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDdweDtcbiAgICBsZWZ0OiA3cHg7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICAgIHBhZGRpbmc6IDJweCA3cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHMtY2hhdC1hY2NlbnQsICMzMDVjZGUpO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LWFjY2VudC1jb250cmFzdCwgI2ZmZik7XG5cbiAgICAmLS11bml2ZXJzYWwgeyBiYWNrZ3JvdW5kOiAjOWE2NzAwOyB9XG4gICAgLy8gdW5pdmVyc2FsID0gMiDigJQgTk8gZml0bWVudCBkYXRhLCBub3QgdW5pdmVyc2FsICgyMDI2LTA5LTI5KTogdGhlIGNhcmRcbiAgICAvLyBoZWxwZXJzJyB2ZXJpZnkgYW1iZXIsIHNvIGNoYXQgY2FyZHMgYWdyZWUgd2l0aCB0aGUgc3RvcmVmcm9udCBjYXJkc1xuICAgICYtLXVudmVyaWZpZWQgeyBiYWNrZ3JvdW5kOiAjYjQ1MzA5OyB9XG4gICAgLy8gd2hlZWwvdGlyZSBmaXRtZW50IHR5cGVzIChPRSBGaXQgLyBPRSBDb21wYXRpYmxlIC8gT3B0aW9uYWwgLyBQbHVzXG4gICAgLy8gU2l6ZSkg4oCUIHRoZSBwcm9kdWN0IE1BVENIRUQgdGhlIHNob3BwZXIncyB2ZWhpY2xlLCBzbyBpdCByZWFkcyBhcyBhXG4gICAgLy8gcG9zaXRpdmUsIG5vdCB0aGUgdW5pdmVyc2FsIGFtYmVyXG4gICAgJi0tZml0IHsgYmFja2dyb3VuZDogIzFhN2YzNzsgfVxuICB9XG5cbiAgJl9fYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogM3B4O1xuICAgIHBhZGRpbmc6IDlweCAxMXB4IDExcHg7XG4gICAgZmxleDogMTtcbiAgfVxuXG4gICZfX2JyYW5kIHtcbiAgICBmb250LXNpemU6IDEwLjVweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LW11dGVkLCAjNmI3MjgwKTtcbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDEyLjVweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAmX19ub3RlIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6IHZhcigtLXBzLWNoYXQtdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIHdoZWVsL3RpcmUgc2VyaWVzIGxpbmUgKE1vZGVsIMK3IEZpbmlzaCDCtyBEaWFtZXRlcikg4oCUIHdoYXQgdGVsbHMgdHdvXG4gIC8vIHNhbWUtbmFtZSB3aGVlbHMgYXBhcnQgb24gdGhlIGNhcmRcbiAgJl9fc2VyaWVzIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tcHMtY2hhdC10ZXh0LCAjMTExODI3KTtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgJl9fZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiA4cHg7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBwYWRkaW5nLXRvcDogNnB4O1xuICB9XG5cbiAgJl9fcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIGNvbG9yOiB2YXIoLS1wcy1jaGF0LXRleHQsICMxYTIyMzMpO1xuICB9XG5cbiAgJl9fYXZhaWxhYmlsaXR5IHtcbiAgICBmb250LXNpemU6IDEwLjVweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjMWE3ZjM3O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcHMtY2hhdC10eXBpbmcge1xuICAwJSwgNjAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyBvcGFjaXR5OiAwLjU7IH1cbiAgMzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOyBvcGFjaXR5OiAxOyB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBvdmVybGF5IGVtYmVkXG4gICAucHMtY2hhdC0tb3ZlcmxheSDigJQgdGhlIHdpZGdldCBob3N0ZWQgaW5zaWRlIHRoZSBzaXRlLXNlYXJjaCBmdWxsc2NyZWVuXG4gICBvdmVybGF5J3MgQUkgbW9kZSAoc2l0ZS1zZWFyY2ggcGFzc2VzIHBhbmVsQ2xhc3MgKyBhdXRvSGVpZ2h0KS4gVGhlIG92ZXJsYXlcbiAgIGdpdmVzIHRoZSBjaGF0IHRoZSB3aG9sZSBzY3JlZW46IGEgd2lkZXIsIHRhbGxlciBjb252ZXJzYXRpb24gY29sdW1uIGFuZCBhXG4gICBmdWxsLXdpZHRoIGxpdmUtcmVzdWx0cyBncmlkLiBLZXB0IGhlcmUgKG5vdCBpbiBzaXRlLXNlYXJjaCkgc28gYW55IGZ1dHVyZVxuICAgaG9zdCBjYW4gcmV1c2UgdGhlIHNhbWUgY29udGV4dCBjbGFzcy4gTXVzdCBzdGF5IEFGVEVSIHRoZSBiYXNlIHJ1bGVzIOKAlFxuICAgZXF1YWwtc3BlY2lmaWNpdHkgb3ZlcnJpZGVzIHdpbiBieSBvcmRlci4gKi9cbi5wcy1jaGF0LS1vdmVybGF5IHtcbiAgLyogYXV0b0hlaWdodCBvbWl0cyB0aGUgaW5saW5lIC0tcHMtY2hhdC1oZWlnaHQsIHNvIHRoaXMgdmFsdWUgYXBwbGllcyAqL1xuICAtLXBzLWNoYXQtaGVpZ2h0OiBtaW4oNjh2aCwgNzIwcHgpO1xuXG4gIC8qIFRoZSBjbGFzc2ljIHBhbmVsIGtlZXBzIGEgZml4ZWQgcmVhZGluZyBjb2x1bW4gaW5zaWRlIHRoZSBvdmVybGF5LiBUaGVcbiAgICAgOm5vdCgpIGlzIGxvYWQtYmVhcmluZywgbm90IGRlY29yYXRpdmU6IHRoZSBpbnRlZ3JhdGVkIHZhcmlhbnQgc2V0c1xuICAgICBtYXgtd2lkdGg6bm9uZSBhdCB0aGUgU0FNRSBzcGVjaWZpY2l0eSwgYW5kIGEgcGFnZSBob2xkaW5nIGJvdGggdmFyaWFudHNcbiAgICAgZW1pdHMgdGhpcyBzaGFyZWQgc3R5bGVzaGVldCB0d2ljZSAob25jZSBwZXIgcmVuZGVyQXNzZXRUYWdzIGNhbGwg4oCUIHNlZVxuICAgICB0aGUgbm90ZSBpbiBfc2hhcmVkL1BzQ2hhdFdpZGdldC5qcyksIHNvIHRoZSBsYXRlciBjb3B5IHdvdWxkIHJlLWFzc2VydFxuICAgICA4NjBweCBvdmVyIHRoZSBpbnRlZ3JhdGVkIHNraW4uIEV4Y2x1ZGluZyB0aGUgdmFyaWFudCBoZXJlIG1ha2VzIHRoZVxuICAgICBvdXRjb21lIGluZGVwZW5kZW50IG9mIGFzc2V0IG9yZGVyIGluc3RlYWQgb2YgYSBjb2luIGZsaXAuICovXG4gIC8qIFNjb3BlZCB0byB0aGUgQ0xBU1NJQyBza2luIG9uIHB1cnBvc2Ug4oCUIHRoZSBmaXhlZCByZWFkaW5nIGNvbHVtbiBiZWxvbmdzXG4gICAgIHRvIHRoZSBwYW5lbCBsb29rLCBhbmQgZXZlcnkgb3RoZXIgc2tpbiBvd25zIGl0cyBvd24gd2lkdGguXG5cbiAgICAgVGhlIGF0dHJpYnV0ZSBxdWFsaWZpZXIgaXMgbG9hZC1iZWFyaW5nLCBub3QgZGVjb3JhdGl2ZS4gVGhlIGludGVncmF0ZWRcbiAgICAgdmFyaWFudCBzZXRzIG1heC13aWR0aDpub25lIGF0IHdoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHRoZSBTQU1FXG4gICAgIHNwZWNpZmljaXR5LCBhbmQgYSBwYWdlIGhvbGRpbmcgYm90aCB2YXJpYW50cyBlbWl0cyB0aGlzIHNoYXJlZCBzdHlsZXNoZWV0XG4gICAgIHR3aWNlIChvbmNlIHBlciByZW5kZXJBc3NldFRhZ3MgY2FsbCDigJQgc2VlIHRoZSBub3RlIGluXG4gICAgIF9zaGFyZWQvUHNDaGF0V2lkZ2V0LmpzKSwgc28gdGhlIGxhdGVyIGNvcHkgd291bGQgcmUtYXNzZXJ0IDg2MHB4IG92ZXIgdGhlXG4gICAgIGludGVncmF0ZWQgc2tpbi4gU2NvcGluZyBoZXJlIG1ha2VzIHRoZSBvdXRjb21lIGluZGVwZW5kZW50IG9mIGFzc2V0IG9yZGVyXG4gICAgIGluc3RlYWQgb2YgYSBjb2luIGZsaXAsIGFuZCBmdXR1cmUgc2tpbnMgYXJlIGV4Y2x1ZGVkIGF1dG9tYXRpY2FsbHkuXG5cbiAgICAgZGVmYXVsdC5ibGFkZS5waHAgYWx3YXlzIGVtaXRzIGRhdGEtcHMtY2hhdC12YXJpYW50IGZyb20gYSB2YWxpZGF0ZWRcbiAgICAgYWxsb3ctbGlzdCwgc28gdGhlcmUgaXMgbm8gYXR0cmlidXRlLWxlc3Mgcm9vdCB0byBtaXNzLiAqL1xuICAmLnBzLWNoYXQtLWlubGluZVtkYXRhLXBzLWNoYXQtdmFyaWFudD0nZGVmYXVsdCddIC5wcy1jaGF0X19wYW5lbCB7XG4gICAgbWF4LXdpZHRoOiA4NjBweDtcbiAgfVxuXG4gIC5wcy1jaGF0X19idWJibGUge1xuICAgIG1heC13aWR0aDogbWluKDg2JSwgNjIwcHgpO1xuICB9XG5cbiAgLyogdGhlIHByb2R1Y3QgZ3JpZCBpcyB0aGUgcGllY2UgdGhhdCB0cnVseSB1c2VzIHRoZSBmdWxsIHNjcmVlbiB3aWR0aCAqL1xuICAucHMtY2hhdF9fcmVzdWx0cyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLyogZnVsbHNjcmVlbi1zbS1kb3duIG1vZGFsOiBmaWxsIHdoYXQgdGhlIG92ZXJsYXkgY2hyb21lIGxlYXZlcyAqL1xuICAgIC0tcHMtY2hhdC1oZWlnaHQ6IGNhbGMoMTAwZHZoIC0gMjMwcHgpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkcm9wZG93biBlbWJlZFxuICAgLnBzLWNoYXQtLWRyb3Bkb3duIOKAlCB0aGUgd2lkZ2V0IGhvc3RlZCBpbnNpZGUgdGhlIENPTVBBQ1Qgc2l0ZS1zZWFyY2hcbiAgIHBhbmVsJ3MgQUkgYm9keSAoc2l0ZS1zZWFyY2gvY29tcGFjdCBwYXNzZXMgcGFuZWxDbGFzcyArIGF1dG9IZWlnaHQsIHRoZVxuICAgc2FtZSB3YXkgdGhlIG92ZXJsYXkgZG9lcykuIFRoZSBjb25zdHJhaW50IGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgb3ZlcmxheSdzOlxuICAgYSB+NTIwcHgtd2lkZSBkcm9wZG93biB0aGF0IG11c3Qgbm90IG92ZXJmbG93IHRoZSBwYW5lbCBpdCBsaXZlcyBpbiwgc28gdGhlXG4gICBjaGF0IGRyb3BzIGl0cyBvd24gY2FyZCBjaHJvbWUgKHRoZSBwYW5lbCBhbHJlYWR5IElTIGEgY2FyZCkgYW5kIGxldHMgdGhlXG4gICBkcm9wZG93biBvd24gdGhlIGJvcmRlciwgcmFkaXVzIGFuZCBzaGFkb3cuXG4gICBMaXZlcyBoZXJlLCBiZXNpZGUgaXRzIHNpYmxpbmcsIGJlY2F1c2UgY29udGV4dCBjbGFzc2VzIGFyZSB0aGUgY2hhdGJvdCdzXG4gICBjb250cmFjdCB3aXRoIGl0cyBob3N0cyDigJQgYSBob3N0IGJ1bmRsZSBjb3VsZCBub3QgcmVsaWFibHkgb3V0LW9yZGVyIHRoZVxuICAgYmFzZSBydWxlcyAodGhlIGNoYXQgQ1NTIGlzIGVtaXR0ZWQgYXQgaW5jbHVkZSB0aW1lLCBBRlRFUiB0aGUgaG9zdCdzKS4gKi9cbi5wcy1jaGF0LS1kcm9wZG93biB7XG4gIC8qIGF1dG9IZWlnaHQgb21pdHMgdGhlIGlubGluZSAtLXBzLWNoYXQtaGVpZ2h0LCBzbyB0aGlzIHZhbHVlIGFwcGxpZXMgKi9cbiAgLS1wcy1jaGF0LWhlaWdodDogbWluKDUydmgsIDQyMHB4KTtcbiAgLS1wcy1jaGF0LXJhZGl1czogNnB4O1xuXG4gICYucHMtY2hhdC0taW5saW5lIC5wcy1jaGF0X19wYW5lbCB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLnBzLWNoYXRfX2J1YmJsZSB7XG4gICAgbWF4LXdpZHRoOiBtaW4oOTIlLCA0NjBweCk7XG4gIH1cblxuICAvKiBhIDE5MHB4LW1pbiBncmlkIG9ubHkgZml0cyAyIGNvbHVtbnMgaGVyZTsgbGV0IGl0IHVzZSB0aGUgZnVsbCB3aWR0aCAqL1xuICAucHMtY2hhdF9fcmVzdWx0cyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gIH1cblxuICAvKiBQaG9uZXM6IHRoZSBiYXNlIC0taW5saW5lIHJ1bGVzIGhhbmQgc2Nyb2xsaW5nIHRvIHRoZSBuZWFyZXN0IHNjcm9sbGluZ1xuICAgICBhbmNlc3RvciB3aXRoIGEgc3RpY2t5IGNvbXBvc2VyLiBUaGF0IGFuY2VzdG9yIGlzIHRoZSBjb21wYWN0IHNoZWV0LCB3aGljaFxuICAgICBpcyBleGFjdGx5IHJpZ2h0IOKAlCBzbyBET04nVCByZS1hc3NlcnQgYSBmaXhlZCBoZWlnaHQgaGVyZSwganVzdCBsZXQgdGhlXG4gICAgIHNoZWV0IHNjcm9sbCB0aGUgY29udmVyc2F0aW9uLiAqL1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/