tango-app-ui-analyse-trax 4.0.48 → 4.0.49

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.
@@ -37,7 +37,8 @@ export class AuditV2ScheduleDetailComponent {
37
37
  edit = new EventEmitter();
38
38
  loading = true;
39
39
  name = '';
40
- audits = '';
40
+ /** The schedule's audits by name; the summary line shows a count when there are several (names in its tooltip). */
41
+ auditNames = [];
41
42
  published = false;
42
43
  metrics = { visits: 0, users: 0, completed: 0, pending: 0 };
43
44
  rows = [];
@@ -64,7 +65,7 @@ export class AuditV2ScheduleDetailComponent {
64
65
  }
65
66
  this.name = d.schedule?.name || 'Schedule';
66
67
  this.published = !!d.schedule?.publish;
67
- this.audits = (d.schedule?.checkLists || []).map((c) => c.checkListName).filter(Boolean).join(' · ');
68
+ this.auditNames = (d.schedule?.checkLists || []).map((c) => c.checkListName).filter(Boolean);
68
69
  this.metrics = { ...this.metrics, ...(d.metrics || {}) };
69
70
  this.rows = (d.rows || []).map((r) => {
70
71
  const email = String(r.userEmail || '');
@@ -160,8 +161,13 @@ export class AuditV2ScheduleDetailComponent {
160
161
  }
161
162
  get rangeLabel() {
162
163
  const m = this.shownMetrics;
164
+ const n = this.auditNames.length;
163
165
  return m.visits + (m.visits === 1 ? ' visit' : ' visits') + ' · ' + m.users + (m.users === 1 ? ' user' : ' users')
164
- + (this.audits ? ' · ' + this.audits : '');
166
+ + (n === 1 ? ' · ' + this.auditNames[0] : n > 1 ? ' · ' + n + ' audits' : '');
167
+ }
168
+ /** Every audit name, as the summary line's tooltip when it shows only the count. */
169
+ get auditsTip() {
170
+ return this.auditNames.length > 1 ? this.auditNames.join(', ') : null;
165
171
  }
166
172
  /** Column sort ('' = the schedule's order); a header click toggles ascending / descending (QA 10 Oct). */
167
173
  sortKey = '';
@@ -223,11 +229,11 @@ export class AuditV2ScheduleDetailComponent {
223
229
  fg(s) { return STATUS[s].fg; }
224
230
  dot(s) { return STATUS[s].dot; }
225
231
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditV2ScheduleDetailComponent, deps: [{ token: i1.TraxService }, { token: i2.ToastService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
226
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditV2ScheduleDetailComponent, selector: "lib-audit-v2-schedule-detail", inputs: { clientId: "clientId", scheduleId: "scheduleId", canEdit: "canEdit", fromDate: "fromDate", toDate: "toDate" }, outputs: { back: "back", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <span class=\"av2-sk sd-sk-crumb\"></span>\n <span class=\"av2-sk av2-sk--title sd-sk-name\"></span>\n </div>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\"><span class=\"av2-sk av2-sk--value sd-sk-value\"></span></div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <lib-audit-v2-shimmer></lib-audit-v2-shimmer>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <div class=\"sd-crumb\"><a href=\"#\" (click)=\"goBack($event)\">Schedule</a> \u203A {{ name }}</div>\n <div class=\"sd-name\">{{ name }}</div>\n </div>\n <button type=\"button\" class=\"av2-btn av2-btn--ghost av2-btn--sm\" *ngIf=\"canEdit\" (click)=\"edit.emit(scheduleId)\">Edit rows</button>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\">{{ m.value }}</div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <div class=\"sd-tablehead\">\n <div class=\"sd-titletext\">\n <div class=\"sd-card-title\">Scheduled info</div>\n <div class=\"sd-sub\">\n {{ rangeLabel }}\n <ng-container *ngIf=\"rangeText\">\n \u00B7 {{ rangeOn ? 'Visits on ' + rangeText : 'All dates' }}\n <a class=\"sd-range-link\" (click)=\"toggleShowAll()\">{{ rangeOn ? 'Show all dates' : 'Show ' + rangeText + ' only' }}</a>\n </ng-container>\n </div>\n </div>\n <label class=\"sd-search\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line></svg>\n <input type=\"text\" [(ngModel)]=\"query\" (ngModelChange)=\"onQuery()\" placeholder=\"Search users or stores\">\n </label>\n </div>\n\n <div class=\"sd-scroll\">\n <div class=\"sd-grid sd-grid--head\">\n <div class=\"av2-sortable\" (click)=\"sortBy('date')\">Schedule date <lib-audit-v2-sort-icon [active]=\"sortKey === 'date'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('email')\">User email <lib-audit-v2-sort-icon [active]=\"sortKey === 'email'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('store')\">Store <lib-audit-v2-sort-icon [active]=\"sortKey === 'store'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('window')\">Visit window <lib-audit-v2-sort-icon [active]=\"sortKey === 'window'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('audit')\">Audit <lib-audit-v2-sort-icon [active]=\"sortKey === 'audit'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('status')\">Status <lib-audit-v2-sort-icon [active]=\"sortKey === 'status'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n </div>\n <div class=\"sd-grid sd-grid--row\" *ngFor=\"let r of paged\">\n <div>{{ r.date }}</div>\n <div class=\"sd-user\">\n <span class=\"sd-avatar\">{{ r.initials }}</span>\n <span class=\"sd-ellipsis\" [av2Tip]=\"r.email\">{{ r.email }}</span>\n </div>\n <!-- Store name (QA: the store code was shown); the id only for a row without a name. -->\n <div class=\"sd-store sd-ellipsis\" [av2Tip]=\"r.storeName || ''\">{{ r.storeName || '\u2014' }}</div>\n <div [class.sd-muted]=\"!r.hasWindow\" [class.sd-missed]=\"r.status === 'missed' && r.hasWindow\" [attr.title]=\"r.windowTip || null\">{{ r.window }}</div>\n <div class=\"sd-ellipsis\" [av2Tip]=\"r.audit\">{{ r.audit }}</div>\n <div>\n <span class=\"sd-pill\" [style.background]=\"bg(r.status)\" [style.color]=\"fg(r.status)\" [title]=\"r.note\">\n <span class=\"sd-dot\" [style.background]=\"dot(r.status)\"></span>{{ label(r.status) }}\n </span>\n </div>\n </div>\n <div *ngIf=\"!filtered.length\" class=\"av2-empty\">\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"av2-empty-text\">\n <div class=\"av2-empty-title\">No data found</div>\n <div class=\"av2-empty-sub\">{{ rows.length ? 'No visits match this search.' : 'No rows yet. Use Edit rows to add users, stores and dates.' }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-foot\">\n <span>{{ countLabel }}</span>\n <lib-pagination *ngIf=\"filtered.length\" [itemsPerPage]=\"pageSize\" [pageSize]=\"pageSize\"\n [paginationSizes]=\"pageSizes\" [currentPage]=\"page\" [totalItems]=\"filtered.length\"\n (pageChange)=\"onPage($event)\" (pageSizeChange)=\"onPageSize($event)\"></lib-pagination>\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}:host{display:flex;flex-direction:column;gap:20px}.sd-sk-crumb{width:140px;height:12px;margin:4px 0}.sd-sk-name{height:22px;margin:4px 0}.sd-sk-value{height:32px;margin:3px 0}.sd-titlebar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.sd-titletext{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}.sd-crumb{font-size:13px;line-height:20px;color:#667085}.sd-crumb a{font-weight:600;color:#00a3ff;text-decoration:none;cursor:pointer}.sd-name{font-size:20px;line-height:30px;font-weight:700;color:#101828}.sd-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.sd-card{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;display:flex;flex-direction:column}.sd-tablehead{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:20px 24px}.sd-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828}.sd-sub{font-size:14px;line-height:20px;color:#667085}.sd-search{flex:0 1 260px;min-width:180px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;margin:0;border-radius:8px;box-shadow:inset 0 0 0 1px #d0d5dd;color:#667085}.sd-search input{flex:1;min-width:0;height:34px;border:none;outline:none;background:transparent;font-size:13px;font-family:inherit;color:#101828}.sd-scroll{overflow-x:auto}.sd-grid{min-width:1180px;display:grid;grid-template-columns:1fr 1.6fr .9fr 1.1fr 1.5fr 1fr;gap:12px;align-items:center;padding:14px 24px}.sd-grid--head{padding:10px 24px;background:#f9fafb;border-top:1px solid #EAECF0;border-bottom:1px solid #EAECF0;font-size:12px;font-weight:600;color:#475467}.sd-grid--row{border-bottom:1px solid #F2F4F7;font-size:13px;color:#344054}.sd-user{display:flex;align-items:center;gap:8px;min-width:0}.sd-avatar{width:24px;height:24px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.sd-ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-store{font-weight:600;color:#101828}.sd-muted{color:#98a2b3}.sd-missed{color:#d92d20}.sd-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:9999px;font-size:12px;font-weight:600}.sd-dot{width:6px;height:6px;border-radius:9999px;display:block}.sd-empty{padding:36px 24px;text-align:center;font-size:13px;color:#667085}.sd-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;font-size:14px;color:#667085}.sd-range-link{margin-left:6px;color:#00a3ff;font-weight:500;cursor:pointer}.sd-range-link:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.AuditV2TipDirective, selector: "[av2Tip]", inputs: ["av2Tip"] }, { kind: "component", type: i6.AuditV2ShimmerComponent, selector: "lib-audit-v2-shimmer", inputs: ["rows"] }, { kind: "component", type: i7.AuditV2SortIconComponent, selector: "lib-audit-v2-sort-icon", inputs: ["active", "dir"] }] });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditV2ScheduleDetailComponent, selector: "lib-audit-v2-schedule-detail", inputs: { clientId: "clientId", scheduleId: "scheduleId", canEdit: "canEdit", fromDate: "fromDate", toDate: "toDate" }, outputs: { back: "back", edit: "edit" }, ngImport: i0, template: "<ng-container *ngIf=\"loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <span class=\"av2-sk sd-sk-crumb\"></span>\n <span class=\"av2-sk av2-sk--title sd-sk-name\"></span>\n </div>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\"><span class=\"av2-sk av2-sk--value sd-sk-value\"></span></div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <lib-audit-v2-shimmer></lib-audit-v2-shimmer>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <div class=\"sd-crumb\"><a href=\"#\" (click)=\"goBack($event)\">Schedule</a> \u203A {{ name }}</div>\n <div class=\"sd-name\">{{ name }}</div>\n </div>\n <button type=\"button\" class=\"av2-btn av2-btn--ghost av2-btn--sm\" *ngIf=\"canEdit\" (click)=\"edit.emit(scheduleId)\">Edit rows</button>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\">{{ m.value }}</div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <div class=\"sd-tablehead\">\n <div class=\"sd-titletext\">\n <div class=\"sd-card-title\">Scheduled info</div>\n <div class=\"sd-sub\">\n <span [attr.title]=\"auditsTip\">{{ rangeLabel }}</span>\n <ng-container *ngIf=\"rangeText\">\n \u00B7 {{ rangeOn ? 'Visits on ' + rangeText : 'All dates' }}\n <a class=\"sd-range-link\" (click)=\"toggleShowAll()\">{{ rangeOn ? 'Show all dates' : 'Show ' + rangeText + ' only' }}</a>\n </ng-container>\n </div>\n </div>\n <label class=\"sd-search\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line></svg>\n <input type=\"text\" [(ngModel)]=\"query\" (ngModelChange)=\"onQuery()\" placeholder=\"Search users or stores\">\n </label>\n </div>\n\n <div class=\"sd-scroll\">\n <div class=\"sd-grid sd-grid--head\">\n <div class=\"av2-sortable\" (click)=\"sortBy('date')\">Schedule date <lib-audit-v2-sort-icon [active]=\"sortKey === 'date'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('email')\">User email <lib-audit-v2-sort-icon [active]=\"sortKey === 'email'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('store')\">Store <lib-audit-v2-sort-icon [active]=\"sortKey === 'store'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('window')\">Visit window <lib-audit-v2-sort-icon [active]=\"sortKey === 'window'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('audit')\">Audit <lib-audit-v2-sort-icon [active]=\"sortKey === 'audit'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('status')\">Status <lib-audit-v2-sort-icon [active]=\"sortKey === 'status'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n </div>\n <div class=\"sd-grid sd-grid--row\" *ngFor=\"let r of paged\">\n <div>{{ r.date }}</div>\n <div class=\"sd-user\">\n <span class=\"sd-avatar\">{{ r.initials }}</span>\n <span class=\"sd-ellipsis\" [av2Tip]=\"r.email\">{{ r.email }}</span>\n </div>\n <!-- Store name (QA: the store code was shown); the id only for a row without a name. -->\n <div class=\"sd-store sd-ellipsis\" [av2Tip]=\"r.storeName || ''\">{{ r.storeName || '\u2014' }}</div>\n <div [class.sd-muted]=\"!r.hasWindow\" [class.sd-missed]=\"r.status === 'missed' && r.hasWindow\" [attr.title]=\"r.windowTip || null\">{{ r.window }}</div>\n <div class=\"sd-ellipsis\" [av2Tip]=\"r.audit\">{{ r.audit }}</div>\n <div>\n <span class=\"sd-pill\" [style.background]=\"bg(r.status)\" [style.color]=\"fg(r.status)\" [title]=\"r.note\">\n <span class=\"sd-dot\" [style.background]=\"dot(r.status)\"></span>{{ label(r.status) }}\n </span>\n </div>\n </div>\n <div *ngIf=\"!filtered.length\" class=\"av2-empty\">\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"av2-empty-text\">\n <div class=\"av2-empty-title\">No data found</div>\n <div class=\"av2-empty-sub\">{{ rows.length ? 'No visits match this search.' : 'No rows yet. Use Edit rows to add users, stores and dates.' }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-foot\">\n <span>{{ countLabel }}</span>\n <lib-pagination *ngIf=\"filtered.length\" [itemsPerPage]=\"pageSize\" [pageSize]=\"pageSize\"\n [paginationSizes]=\"pageSizes\" [currentPage]=\"page\" [totalItems]=\"filtered.length\"\n (pageChange)=\"onPage($event)\" (pageSizeChange)=\"onPageSize($event)\"></lib-pagination>\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}:host{display:flex;flex-direction:column;gap:20px}.sd-sk-crumb{width:140px;height:12px;margin:4px 0}.sd-sk-name{height:22px;margin:4px 0}.sd-sk-value{height:32px;margin:3px 0}.sd-titlebar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.sd-titletext{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}.sd-crumb{font-size:13px;line-height:20px;color:#667085}.sd-crumb a{font-weight:600;color:#00a3ff;text-decoration:none;cursor:pointer}.sd-name{font-size:20px;line-height:30px;font-weight:700;color:#101828}.sd-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.sd-card{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;display:flex;flex-direction:column}.sd-tablehead{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:20px 24px}.sd-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828}.sd-sub{font-size:14px;line-height:20px;color:#667085}.sd-search{flex:0 1 260px;min-width:180px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;margin:0;border-radius:8px;box-shadow:inset 0 0 0 1px #d0d5dd;color:#667085}.sd-search input{flex:1;min-width:0;height:34px;border:none;outline:none;background:transparent;font-size:13px;font-family:inherit;color:#101828}.sd-scroll{overflow-x:auto}.sd-grid{min-width:1180px;display:grid;grid-template-columns:1fr 1.6fr .9fr 1.1fr 1.5fr 1fr;gap:12px;align-items:center;padding:14px 24px}.sd-grid--head{padding:10px 24px;background:#f9fafb;border-top:1px solid #EAECF0;border-bottom:1px solid #EAECF0;font-size:12px;font-weight:600;color:#475467}.sd-grid--row{border-bottom:1px solid #F2F4F7;font-size:13px;color:#344054}.sd-user{display:flex;align-items:center;gap:8px;min-width:0}.sd-avatar{width:24px;height:24px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.sd-ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-store{font-weight:600;color:#101828}.sd-muted{color:#98a2b3}.sd-missed{color:#d92d20}.sd-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:9999px;font-size:12px;font-weight:600}.sd-dot{width:6px;height:6px;border-radius:9999px;display:block}.sd-empty{padding:36px 24px;text-align:center;font-size:13px;color:#667085}.sd-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;font-size:14px;color:#667085}.sd-range-link{margin-left:6px;color:#00a3ff;font-weight:500;cursor:pointer}.sd-range-link:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.AuditV2TipDirective, selector: "[av2Tip]", inputs: ["av2Tip"] }, { kind: "component", type: i6.AuditV2ShimmerComponent, selector: "lib-audit-v2-shimmer", inputs: ["rows"] }, { kind: "component", type: i7.AuditV2SortIconComponent, selector: "lib-audit-v2-sort-icon", inputs: ["active", "dir"] }] });
227
233
  }
228
234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditV2ScheduleDetailComponent, decorators: [{
229
235
  type: Component,
230
- args: [{ selector: 'lib-audit-v2-schedule-detail', template: "<ng-container *ngIf=\"loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <span class=\"av2-sk sd-sk-crumb\"></span>\n <span class=\"av2-sk av2-sk--title sd-sk-name\"></span>\n </div>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\"><span class=\"av2-sk av2-sk--value sd-sk-value\"></span></div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <lib-audit-v2-shimmer></lib-audit-v2-shimmer>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <div class=\"sd-crumb\"><a href=\"#\" (click)=\"goBack($event)\">Schedule</a> \u203A {{ name }}</div>\n <div class=\"sd-name\">{{ name }}</div>\n </div>\n <button type=\"button\" class=\"av2-btn av2-btn--ghost av2-btn--sm\" *ngIf=\"canEdit\" (click)=\"edit.emit(scheduleId)\">Edit rows</button>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\">{{ m.value }}</div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <div class=\"sd-tablehead\">\n <div class=\"sd-titletext\">\n <div class=\"sd-card-title\">Scheduled info</div>\n <div class=\"sd-sub\">\n {{ rangeLabel }}\n <ng-container *ngIf=\"rangeText\">\n \u00B7 {{ rangeOn ? 'Visits on ' + rangeText : 'All dates' }}\n <a class=\"sd-range-link\" (click)=\"toggleShowAll()\">{{ rangeOn ? 'Show all dates' : 'Show ' + rangeText + ' only' }}</a>\n </ng-container>\n </div>\n </div>\n <label class=\"sd-search\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line></svg>\n <input type=\"text\" [(ngModel)]=\"query\" (ngModelChange)=\"onQuery()\" placeholder=\"Search users or stores\">\n </label>\n </div>\n\n <div class=\"sd-scroll\">\n <div class=\"sd-grid sd-grid--head\">\n <div class=\"av2-sortable\" (click)=\"sortBy('date')\">Schedule date <lib-audit-v2-sort-icon [active]=\"sortKey === 'date'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('email')\">User email <lib-audit-v2-sort-icon [active]=\"sortKey === 'email'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('store')\">Store <lib-audit-v2-sort-icon [active]=\"sortKey === 'store'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('window')\">Visit window <lib-audit-v2-sort-icon [active]=\"sortKey === 'window'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('audit')\">Audit <lib-audit-v2-sort-icon [active]=\"sortKey === 'audit'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('status')\">Status <lib-audit-v2-sort-icon [active]=\"sortKey === 'status'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n </div>\n <div class=\"sd-grid sd-grid--row\" *ngFor=\"let r of paged\">\n <div>{{ r.date }}</div>\n <div class=\"sd-user\">\n <span class=\"sd-avatar\">{{ r.initials }}</span>\n <span class=\"sd-ellipsis\" [av2Tip]=\"r.email\">{{ r.email }}</span>\n </div>\n <!-- Store name (QA: the store code was shown); the id only for a row without a name. -->\n <div class=\"sd-store sd-ellipsis\" [av2Tip]=\"r.storeName || ''\">{{ r.storeName || '\u2014' }}</div>\n <div [class.sd-muted]=\"!r.hasWindow\" [class.sd-missed]=\"r.status === 'missed' && r.hasWindow\" [attr.title]=\"r.windowTip || null\">{{ r.window }}</div>\n <div class=\"sd-ellipsis\" [av2Tip]=\"r.audit\">{{ r.audit }}</div>\n <div>\n <span class=\"sd-pill\" [style.background]=\"bg(r.status)\" [style.color]=\"fg(r.status)\" [title]=\"r.note\">\n <span class=\"sd-dot\" [style.background]=\"dot(r.status)\"></span>{{ label(r.status) }}\n </span>\n </div>\n </div>\n <div *ngIf=\"!filtered.length\" class=\"av2-empty\">\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"av2-empty-text\">\n <div class=\"av2-empty-title\">No data found</div>\n <div class=\"av2-empty-sub\">{{ rows.length ? 'No visits match this search.' : 'No rows yet. Use Edit rows to add users, stores and dates.' }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-foot\">\n <span>{{ countLabel }}</span>\n <lib-pagination *ngIf=\"filtered.length\" [itemsPerPage]=\"pageSize\" [pageSize]=\"pageSize\"\n [paginationSizes]=\"pageSizes\" [currentPage]=\"page\" [totalItems]=\"filtered.length\"\n (pageChange)=\"onPage($event)\" (pageSizeChange)=\"onPageSize($event)\"></lib-pagination>\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}:host{display:flex;flex-direction:column;gap:20px}.sd-sk-crumb{width:140px;height:12px;margin:4px 0}.sd-sk-name{height:22px;margin:4px 0}.sd-sk-value{height:32px;margin:3px 0}.sd-titlebar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.sd-titletext{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}.sd-crumb{font-size:13px;line-height:20px;color:#667085}.sd-crumb a{font-weight:600;color:#00a3ff;text-decoration:none;cursor:pointer}.sd-name{font-size:20px;line-height:30px;font-weight:700;color:#101828}.sd-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.sd-card{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;display:flex;flex-direction:column}.sd-tablehead{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:20px 24px}.sd-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828}.sd-sub{font-size:14px;line-height:20px;color:#667085}.sd-search{flex:0 1 260px;min-width:180px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;margin:0;border-radius:8px;box-shadow:inset 0 0 0 1px #d0d5dd;color:#667085}.sd-search input{flex:1;min-width:0;height:34px;border:none;outline:none;background:transparent;font-size:13px;font-family:inherit;color:#101828}.sd-scroll{overflow-x:auto}.sd-grid{min-width:1180px;display:grid;grid-template-columns:1fr 1.6fr .9fr 1.1fr 1.5fr 1fr;gap:12px;align-items:center;padding:14px 24px}.sd-grid--head{padding:10px 24px;background:#f9fafb;border-top:1px solid #EAECF0;border-bottom:1px solid #EAECF0;font-size:12px;font-weight:600;color:#475467}.sd-grid--row{border-bottom:1px solid #F2F4F7;font-size:13px;color:#344054}.sd-user{display:flex;align-items:center;gap:8px;min-width:0}.sd-avatar{width:24px;height:24px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.sd-ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-store{font-weight:600;color:#101828}.sd-muted{color:#98a2b3}.sd-missed{color:#d92d20}.sd-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:9999px;font-size:12px;font-weight:600}.sd-dot{width:6px;height:6px;border-radius:9999px;display:block}.sd-empty{padding:36px 24px;text-align:center;font-size:13px;color:#667085}.sd-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;font-size:14px;color:#667085}.sd-range-link{margin-left:6px;color:#00a3ff;font-weight:500;cursor:pointer}.sd-range-link:hover{text-decoration:underline}\n"] }]
236
+ args: [{ selector: 'lib-audit-v2-schedule-detail', template: "<ng-container *ngIf=\"loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <span class=\"av2-sk sd-sk-crumb\"></span>\n <span class=\"av2-sk av2-sk--title sd-sk-name\"></span>\n </div>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\"><span class=\"av2-sk av2-sk--value sd-sk-value\"></span></div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <lib-audit-v2-shimmer></lib-audit-v2-shimmer>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!loading\">\n <div class=\"sd-titlebar\">\n <div class=\"sd-titletext\">\n <div class=\"sd-crumb\"><a href=\"#\" (click)=\"goBack($event)\">Schedule</a> \u203A {{ name }}</div>\n <div class=\"sd-name\">{{ name }}</div>\n </div>\n <button type=\"button\" class=\"av2-btn av2-btn--ghost av2-btn--sm\" *ngIf=\"canEdit\" (click)=\"edit.emit(scheduleId)\">Edit rows</button>\n </div>\n\n <div class=\"sd-metrics\">\n <div class=\"av2-ocard\" *ngFor=\"let m of cards\">\n <div class=\"av2-ocard-head\">\n <div class=\"av2-ocard-count\">{{ m.value }}</div>\n <div class=\"av2-ocard-text\">{{ m.label }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-card\">\n <div class=\"sd-tablehead\">\n <div class=\"sd-titletext\">\n <div class=\"sd-card-title\">Scheduled info</div>\n <div class=\"sd-sub\">\n <span [attr.title]=\"auditsTip\">{{ rangeLabel }}</span>\n <ng-container *ngIf=\"rangeText\">\n \u00B7 {{ rangeOn ? 'Visits on ' + rangeText : 'All dates' }}\n <a class=\"sd-range-link\" (click)=\"toggleShowAll()\">{{ rangeOn ? 'Show all dates' : 'Show ' + rangeText + ' only' }}</a>\n </ng-container>\n </div>\n </div>\n <label class=\"sd-search\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line></svg>\n <input type=\"text\" [(ngModel)]=\"query\" (ngModelChange)=\"onQuery()\" placeholder=\"Search users or stores\">\n </label>\n </div>\n\n <div class=\"sd-scroll\">\n <div class=\"sd-grid sd-grid--head\">\n <div class=\"av2-sortable\" (click)=\"sortBy('date')\">Schedule date <lib-audit-v2-sort-icon [active]=\"sortKey === 'date'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('email')\">User email <lib-audit-v2-sort-icon [active]=\"sortKey === 'email'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('store')\">Store <lib-audit-v2-sort-icon [active]=\"sortKey === 'store'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('window')\">Visit window <lib-audit-v2-sort-icon [active]=\"sortKey === 'window'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('audit')\">Audit <lib-audit-v2-sort-icon [active]=\"sortKey === 'audit'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n <div class=\"av2-sortable\" (click)=\"sortBy('status')\">Status <lib-audit-v2-sort-icon [active]=\"sortKey === 'status'\" [dir]=\"sortDir\"></lib-audit-v2-sort-icon></div>\n </div>\n <div class=\"sd-grid sd-grid--row\" *ngFor=\"let r of paged\">\n <div>{{ r.date }}</div>\n <div class=\"sd-user\">\n <span class=\"sd-avatar\">{{ r.initials }}</span>\n <span class=\"sd-ellipsis\" [av2Tip]=\"r.email\">{{ r.email }}</span>\n </div>\n <!-- Store name (QA: the store code was shown); the id only for a row without a name. -->\n <div class=\"sd-store sd-ellipsis\" [av2Tip]=\"r.storeName || ''\">{{ r.storeName || '\u2014' }}</div>\n <div [class.sd-muted]=\"!r.hasWindow\" [class.sd-missed]=\"r.status === 'missed' && r.hasWindow\" [attr.title]=\"r.windowTip || null\">{{ r.window }}</div>\n <div class=\"sd-ellipsis\" [av2Tip]=\"r.audit\">{{ r.audit }}</div>\n <div>\n <span class=\"sd-pill\" [style.background]=\"bg(r.status)\" [style.color]=\"fg(r.status)\" [title]=\"r.note\">\n <span class=\"sd-dot\" [style.background]=\"dot(r.status)\"></span>{{ label(r.status) }}\n </span>\n </div>\n </div>\n <div *ngIf=\"!filtered.length\" class=\"av2-empty\">\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\n <div class=\"av2-empty-text\">\n <div class=\"av2-empty-title\">No data found</div>\n <div class=\"av2-empty-sub\">{{ rows.length ? 'No visits match this search.' : 'No rows yet. Use Edit rows to add users, stores and dates.' }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"sd-foot\">\n <span>{{ countLabel }}</span>\n <lib-pagination *ngIf=\"filtered.length\" [itemsPerPage]=\"pageSize\" [pageSize]=\"pageSize\"\n [paginationSizes]=\"pageSizes\" [currentPage]=\"page\" [totalItems]=\"filtered.length\"\n (pageChange)=\"onPage($event)\" (pageSizeChange)=\"onPageSize($event)\"></lib-pagination>\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}:host{display:flex;flex-direction:column;gap:20px}.sd-sk-crumb{width:140px;height:12px;margin:4px 0}.sd-sk-name{height:22px;margin:4px 0}.sd-sk-value{height:32px;margin:3px 0}.sd-titlebar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.sd-titletext{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}.sd-crumb{font-size:13px;line-height:20px;color:#667085}.sd-crumb a{font-weight:600;color:#00a3ff;text-decoration:none;cursor:pointer}.sd-name{font-size:20px;line-height:30px;font-weight:700;color:#101828}.sd-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.sd-card{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;display:flex;flex-direction:column}.sd-tablehead{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:20px 24px}.sd-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828}.sd-sub{font-size:14px;line-height:20px;color:#667085}.sd-search{flex:0 1 260px;min-width:180px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;margin:0;border-radius:8px;box-shadow:inset 0 0 0 1px #d0d5dd;color:#667085}.sd-search input{flex:1;min-width:0;height:34px;border:none;outline:none;background:transparent;font-size:13px;font-family:inherit;color:#101828}.sd-scroll{overflow-x:auto}.sd-grid{min-width:1180px;display:grid;grid-template-columns:1fr 1.6fr .9fr 1.1fr 1.5fr 1fr;gap:12px;align-items:center;padding:14px 24px}.sd-grid--head{padding:10px 24px;background:#f9fafb;border-top:1px solid #EAECF0;border-bottom:1px solid #EAECF0;font-size:12px;font-weight:600;color:#475467}.sd-grid--row{border-bottom:1px solid #F2F4F7;font-size:13px;color:#344054}.sd-user{display:flex;align-items:center;gap:8px;min-width:0}.sd-avatar{width:24px;height:24px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.sd-ellipsis{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-store{font-weight:600;color:#101828}.sd-muted{color:#98a2b3}.sd-missed{color:#d92d20}.sd-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:9999px;font-size:12px;font-weight:600}.sd-dot{width:6px;height:6px;border-radius:9999px;display:block}.sd-empty{padding:36px 24px;text-align:center;font-size:13px;color:#667085}.sd-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;font-size:14px;color:#667085}.sd-range-link{margin-left:6px;color:#00a3ff;font-weight:500;cursor:pointer}.sd-range-link:hover{text-decoration:underline}\n"] }]
231
237
  }], ctorParameters: () => [{ type: i1.TraxService }, { type: i2.ToastService }, { type: i0.ChangeDetectorRef }], propDecorators: { clientId: [{
232
238
  type: Input
233
239
  }], scheduleId: [{
@@ -243,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
243
249
  }], edit: [{
244
250
  type: Output
245
251
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtdjIvc2NoZWR1bGUvYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtdjIvc2NoZWR1bGUvYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7OztBQXdCMUIsTUFBTSxNQUFNLEdBQWdGO0lBQzFGLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7SUFDL0UsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0lBQzVFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxF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Q0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUIsT0FBTztZQUNMLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzdELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25FLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9ELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Y0FDOUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1B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QUMsQ0FBQzt3R0FqTjFDLDhCQUE4Qjs0RkFBOUIsOEJBQThCLHFPQzNDM0MseXpLQXFHQTs7NEZEMURhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSw4QkFBOEI7MklBSy9CLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xuXG50eXBlIFZpc2l0U3RhdHVzID0gJ3N1Ym1pdHRlZCcgfCAnbGl2ZScgfCAnb3BlbicgfCAnbWlzc2VkJztcblxuaW50ZXJmYWNlIERldGFpbFJvdyB7XG4gIGRhdGU6IHN0cmluZztcbiAgLyoqIFlZWVktTU0tREQsIGZvciBzb3J0aW5nLiAqL1xuICBkYXRlSXNvOiBzdHJpbmc7XG4gIC8qKiBXaW5kb3cgc3RhcnQgJ0hIOm1tJyAodGhlIHN0b3JlJ3Mgb3BlbiB0aW1lIHdoZW4gYmxhbmspLCBmb3Igc29ydGluZy4gKi9cbiAgc3RhcnQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgaW5pdGlhbHM6IHN0cmluZztcbiAgc3RvcmVJZDogc3RyaW5nO1xuICBzdG9yZU5hbWU6IHN0cmluZztcbiAgd2luZG93OiBzdHJpbmc7XG4gIC8qKiBXaGVyZSBhIGJsYW5rIHJvdydzIHdpbmRvdyBjb21lcyBmcm9tIChzdG9yZSBob3VycyBvciB0aGUgZGVmYXVsdCk7ICcnIGZvciB0aGUgcm93J3Mgb3duIHdpbmRvdy4gKi9cbiAgd2luZG93VGlwOiBzdHJpbmc7XG4gIGhhc1dpbmRvdzogYm9vbGVhbjtcbiAgYXVkaXQ6IHN0cmluZztcbiAgc3RhdHVzOiBWaXNpdFN0YXR1cztcbiAgbm90ZTogc3RyaW5nO1xufVxuXG5jb25zdCBTVEFUVVM6IFJlY29yZDxWaXNpdFN0YXR1cywgeyBsYWJlbDogc3RyaW5nOyBiZzogc3RyaW5nOyBmZzogc3RyaW5nOyBkb3Q6IHN0cmluZyB9PiA9IHtcbiAgc3VibWl0dGVkOiB7IGxhYmVsOiAnU3VibWl0dGVkJywgYmc6ICcjRUNGREYzJywgZmc6ICcjMDI3QTQ4JywgZG90OiAnIzEyQjc2QScgfSxcbiAgbGl2ZTogeyBsYWJlbDogJ0luIHByb2dyZXNzJywgYmc6ICcjRUZGOEZGJywgZmc6ICcjMTc1Q0QzJywgZG90OiAnIzJFOTBGQScgfSxcbiAgb3BlbjogeyBsYWJlbDogJ05vdCBzdGFydGVkJywgYmc6ICcjRjJGNEY3JywgZmc6ICcjMzQ0MDU0JywgZG90OiAnIzk4QTJCMycgfSxcbiAgbWlzc2VkOiB7IGxhYmVsOiAnTWlzc2VkJywgYmc6ICcjRkVGM0YyJywgZmc6ICcjQjQyMzE4JywgZG90OiAnI0YwNDQzOCcgfVxufTtcblxuLyoqXG4gKiBNYW5hZ2Ug4oC6IFNjaGVkdWxlIEluZm8g4oC6IChzY2hlZHVsZSk6IGV2ZXJ5IHJvdyBvZiBvbmUgc2NoZWR1bGUgd2l0aCB0aGUgc3RhdHVzIG9mIHRoZSBhdWRpdFxuICogVHJheCByYWlzZWQgZm9yIGl0IChQT1NUIC90cmF4L2F1ZGl0L3NjaGVkdWxlL2RldGFpbCkuIFwiRWRpdCByb3dzXCIgaGFuZHMgb3ZlciB0byB0aGUgZWRpdG9yLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LXYyLXNjaGVkdWxlLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC12Mi1zY2hlZHVsZS1kZXRhaWwuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEF1ZGl0VjJTY2hlZHVsZURldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY2xpZW50SWQgPSAnJztcbiAgQElucHV0KCkgc2NoZWR1bGVJZCA9ICcnO1xuICAvKiogRWRpdCByb3dzIG5lZWRzIHRoZSBDaGVja2xpc3QgZWRpdCBwZXJtaXNzaW9uIChNYW5hZ2UgcGFzc2VzIGl0IGluKS4gKi9cbiAgQElucHV0KCkgY2FuRWRpdCA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGhlYWRlcidzIGRhdGUgcmFuZ2UgKGFueSBkYXlqcy1yZWFkYWJsZSBkYXRlKTogVmlldyBzaG93cyB0aGUgdmlzaXRzIG9mIHRoZXNlIGRhdGVzIG9ubHkgKFFBIDEwIE9jdCksIHdpdGhcbiAgICogXCJTaG93IGFsbCBkYXRlc1wiIGZvciB0aGUgd2hvbGUgc2NoZWR1bGUuIFdpdGhvdXQgYSByYW5nZSBldmVyeSByb3cgc2hvd3MuXG4gICAqL1xuICBASW5wdXQoKSBmcm9tRGF0ZSA9ICcnO1xuICBASW5wdXQoKSB0b0RhdGUgPSAnJztcbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgbG9hZGluZyA9IHRydWU7XG4gIG5hbWUgPSAnJztcbiAgYXVkaXRzID0gJyc7XG4gIHB1Ymxpc2hlZCA9IGZhbHNlO1xuICBtZXRyaWNzID0geyB2aXNpdHM6IDAsIHVzZXJzOiAwLCBjb21wbGV0ZWQ6IDAsIHBlbmRpbmc6IDAgfTtcbiAgcm93czogRGV0YWlsUm93W10gPSBbXTtcbiAgcXVlcnkgPSAnJztcbiAgcGFnZSA9IDE7XG4gIHBhZ2VTaXplID0gMTA7XG4gIHJlYWRvbmx5IHBhZ2VTaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmF4U2VydmljZTogVHJheFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdFNjaGVkdWxlRGV0YWlsKHsgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsIHNjaGVkdWxlSWQ6IHRoaXMuc2NoZWR1bGVJZCB9KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBkID0gcmVzPy5jb2RlID09PSAyMDAgPyByZXMuZGF0YSA6IG51bGw7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgaWYgKCFkKSB7IHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnQ291bGQgbm90IGxvYWQgdGhpcyBzY2hlZHVsZScpOyB0aGlzLmJhY2suZW1pdCgpOyByZXR1cm47IH1cbiAgICAgICAgICB0aGlzLm5hbWUgPSBkLnNjaGVkdWxlPy5uYW1lIHx8ICdTY2hlZHVsZSc7XG4gICAgICAgICAgdGhpcy5wdWJsaXNoZWQgPSAhIWQuc2NoZWR1bGU/LnB1Ymxpc2g7XG4gICAgICAgICAgdGhpcy5hdWRpdHMgPSAoZC5zY2hlZHVsZT8uY2hlY2tMaXN0cyB8fCBbXSkubWFwKChjOiBhbnkpID0+IGMuY2hlY2tMaXN0TmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDCtyAnKTtcbiAgICAgICAgICB0aGlzLm1ldHJpY3MgPSB7IC4uLnRoaXMubWV0cmljcywgLi4uKGQubWV0cmljcyB8fCB7fSkgfTtcbiAgICAgICAgICB0aGlzLnJvd3MgPSAoZC5yb3dzIHx8IFtdKS5tYXAoKHI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZW1haWwgPSBTdHJpbmcoci51c2VyRW1haWwgfHwgJycpO1xuICAgICAgICAgICAgY29uc3QgaGFzV2luZG93ID0gISEoci5zdGFydCAmJiByLmVuZCk7XG4gICAgICAgICAgICAvLyBObyB3aW5kb3cgb24gdGhlIHJvdzogdGhlIHZpc2l0IGdldHMgdGhlIHN0b3JlJ3Mgb3BlbiAtIGNsb3NlIHRpbWUsIGVsc2UgMTA6MDAgLSAyMjowMCAodGhlIEFQSSdzXG4gICAgICAgICAgICAvLyB3aW5kb3dTdGFydCAvIHdpbmRvd0VuZDsgYW4gb2xkZXIgQVBJIHdpdGhvdXQgdGhlbSBsZWF2ZXMgdGhlIGRlZmF1bHQpLlxuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBoYXNXaW5kb3cgPyBTdHJpbmcoci5zdGFydCkgOiBTdHJpbmcoci53aW5kb3dTdGFydCB8fCAnMTA6MDAnKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IGhhc1dpbmRvdyA/IFN0cmluZyhyLmVuZCkgOiBTdHJpbmcoci53aW5kb3dFbmQgfHwgJzIyOjAwJyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRlOiByLmRhdGUgPyBkYXlqcyhyLmRhdGUpLmZvcm1hdCgnREQtTU0tWVlZWScpIDogJ+KAlCcsXG4gICAgICAgICAgICAgIGRhdGVJc286IHIuZGF0ZSA/IGRheWpzKHIuZGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiAnJyxcbiAgICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICAgIGVtYWlsOiBlbWFpbCB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgaW5pdGlhbHM6IGVtYWlsLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICAgIHN0b3JlSWQ6IHIuc3RvcmVJZCB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgc3RvcmVOYW1lOiByLnN0b3JlTmFtZSB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgd2luZG93OiBzdGFydCArICcg4oCTICcgKyBlbmQsXG4gICAgICAgICAgICAgIHdpbmRvd1RpcDogaGFzV2luZG93ID8gJycgOiAoci53aW5kb3dTb3VyY2UgPT09ICdzdG9yZScgPyAnU3RvcmUgb3BlbiDigJMgY2xvc2UgdGltZScgOiAnRGVmYXVsdCB3aW5kb3cgKHRoZSBzdG9yZSBoYXMgbm8gb3BlbiAvIGNsb3NlIHRpbWUpJyksXG4gICAgICAgICAgICAgIGhhc1dpbmRvdyxcbiAgICAgICAgICAgICAgYXVkaXQ6IHIuY2hlY2tMaXN0TmFtZSB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgc3RhdHVzOiAoci5zdGF0dXMgYXMgVmlzaXRTdGF0dXMpIHx8ICdvcGVuJyxcbiAgICAgICAgICAgICAgbm90ZTogci5ub3RlIHx8ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4geyB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdDb3VsZCBub3QgbG9hZCB0aGlzIHNjaGVkdWxlJyk7IHRoaXMuYmFjay5lbWl0KCk7IH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFwiU2hvdyBhbGwgZGF0ZXNcIjogdGhlIHdob2xlIHNjaGVkdWxlIGluc3RlYWQgb2YgdGhlIGhlYWRlcidzIHJhbmdlLiAqL1xuICBzaG93QWxsID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBnZXQgcmFuZ2VJc28oKTogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSB8IG51bGwge1xuICAgIGlmICghdGhpcy5mcm9tRGF0ZSkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGZyb20gPSBkYXlqcyh0aGlzLmZyb21EYXRlKTtcbiAgICBjb25zdCB0byA9IHRoaXMudG9EYXRlID8gZGF5anModGhpcy50b0RhdGUpIDogZnJvbTtcbiAgICByZXR1cm4gZnJvbS5pc1ZhbGlkKCkgJiYgdG8uaXNWYWxpZCgpID8geyBmcm9tOiBmcm9tLmZvcm1hdCgnWVlZWS1NTS1ERCcpLCB0bzogdG8uZm9ybWF0KCdZWVlZLU1NLUREJykgfSA6IG51bGw7XG4gIH1cblxuICAvKiogVGhlIHJhbmdlIGlzIGFwcGxpZWQgKGdpdmVuLCBhbmQgXCJTaG93IGFsbCBkYXRlc1wiIG5vdCBjaG9zZW4pLiAqL1xuICBnZXQgcmFuZ2VPbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0FsbCAmJiAhIXRoaXMucmFuZ2VJc287XG4gIH1cblxuICAvKiogVGhlIGhlYWRlcidzIHJhbmdlIGFzIHRoZSBwYWdlIHNob3dzIGRhdGVzLiAqL1xuICBnZXQgcmFuZ2VUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgciA9IHRoaXMucmFuZ2VJc287XG4gICAgaWYgKCFyKSB7IHJldHVybiAnJzsgfVxuICAgIGNvbnN0IGYgPSBkYXlqcyhyLmZyb20pLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgIGNvbnN0IHQgPSBkYXlqcyhyLnRvKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcbiAgICByZXR1cm4gZiA9PT0gdCA/IGYgOiBmICsgJyDigJMgJyArIHQ7XG4gIH1cblxuICB0b2dnbGVTaG93QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FsbCA9ICF0aGlzLnNob3dBbGw7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgfVxuXG4gIC8qKiBUaGUgcm93cyBvZiB0aGUgcmFuZ2UgKGV2ZXJ5IHJvdyB3aGVuIGl0IGlzIG9mZikuICovXG4gIHByaXZhdGUgZ2V0IHNjb3BlZCgpOiBEZXRhaWxSb3dbXSB7XG4gICAgY29uc3QgciA9IHRoaXMucmFuZ2VJc287XG4gICAgaWYgKCF0aGlzLnJhbmdlT24gfHwgIXIpIHsgcmV0dXJuIHRoaXMucm93czsgfVxuICAgIHJldHVybiB0aGlzLnJvd3MuZmlsdGVyKHggPT4gISF4LmRhdGVJc28gJiYgeC5kYXRlSXNvID49IHIuZnJvbSAmJiB4LmRhdGVJc28gPD0gci50byk7XG4gIH1cblxuICAvKiogVGhlIGNhcmRzIGNvdW50IHRoZSBzaG93biBkYXRlczogdGhlIEFQSSdzIHRvdGFscyBmb3IgdGhlIHdob2xlIHNjaGVkdWxlLCBlbHNlIHRoZSBzYW1lIHN1bXMgb3ZlciB0aGUgcmFuZ2UuICovXG4gIHByaXZhdGUgZ2V0IHNob3duTWV0cmljcygpOiB7IHZpc2l0czogbnVtYmVyOyB1c2VyczogbnVtYmVyOyBjb21wbGV0ZWQ6IG51bWJlcjsgcGVuZGluZzogbnVtYmVyIH0ge1xuICAgIGlmICghdGhpcy5yYW5nZU9uKSB7IHJldHVybiB0aGlzLm1ldHJpY3M7IH1cbiAgICBjb25zdCByb3dzID0gdGhpcy5zY29wZWQ7XG4gICAgY29uc3QgY29tcGxldGVkID0gcm93cy5maWx0ZXIoeCA9PiB4LnN0YXR1cyA9PT0gJ3N1Ym1pdHRlZCcpLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgdmlzaXRzOiByb3dzLmxlbmd0aCxcbiAgICAgIHVzZXJzOiBuZXcgU2V0KHJvd3MubWFwKHggPT4geC5lbWFpbC50b0xvd2VyQ2FzZSgpKSkuc2l6ZSxcbiAgICAgIGNvbXBsZXRlZCxcbiAgICAgIHBlbmRpbmc6IHJvd3MubGVuZ3RoIC0gY29tcGxldGVkXG4gICAgfTtcbiAgfVxuXG4gIGdldCBjYXJkcygpOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IGhlYWQ6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgbSA9IHRoaXMuc2hvd25NZXRyaWNzO1xuICAgIHJldHVybiBbXG4gICAgICB7IGxhYmVsOiAnVmlzaXRzJywgdmFsdWU6IFN0cmluZyhtLnZpc2l0cyksIGhlYWQ6ICcjRjVGQUZGJyB9LFxuICAgICAgeyBsYWJlbDogJ1VzZXJzJywgdmFsdWU6IFN0cmluZyhtLnVzZXJzKSwgaGVhZDogJyNGNUZBRkYnIH0sXG4gICAgICB7IGxhYmVsOiAnQ29tcGxldGVkJywgdmFsdWU6IFN0cmluZyhtLmNvbXBsZXRlZCksIGhlYWQ6ICcjRjZGRUY5JyB9LFxuICAgICAgeyBsYWJlbDogJ1BlbmRpbmcnLCB2YWx1ZTogU3RyaW5nKG0ucGVuZGluZyksIGhlYWQ6ICcjRkZGQ0Y1JyB9LFxuICAgICAgeyBsYWJlbDogJ1N0YXR1cycsIHZhbHVlOiB0aGlzLnB1Ymxpc2hlZCA/ICdMaXZlJyA6ICdEcmFmdCcsIGhlYWQ6ICcjRjlGQUZCJyB9XG4gICAgXTtcbiAgfVxuXG4gIGdldCByYW5nZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbSA9IHRoaXMuc2hvd25NZXRyaWNzO1xuICAgIHJldHVybiBtLnZpc2l0cyArIChtLnZpc2l0cyA9PT0gMSA/ICcgdmlzaXQnIDogJyB2aXNpdHMnKSArICcgwrcgJyArIG0udXNlcnMgKyAobS51c2VycyA9PT0gMSA/ICcgdXNlcicgOiAnIHVzZXJzJylcbiAgICAgICsgKHRoaXMuYXVkaXRzID8gJyDCtyAnICsgdGhpcy5hdWRpdHMgOiAnJyk7XG4gIH1cblxuICAvKiogQ29sdW1uIHNvcnQgKCcnID0gdGhlIHNjaGVkdWxlJ3Mgb3JkZXIpOyBhIGhlYWRlciBjbGljayB0b2dnbGVzIGFzY2VuZGluZyAvIGRlc2NlbmRpbmcgKFFBIDEwIE9jdCkuICovXG4gIHNvcnRLZXkgPSAnJztcbiAgc29ydERpcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcblxuICBzb3J0Qnkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnREaXIgPSB0aGlzLnNvcnRLZXkgPT09IGtleSAmJiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYyc7XG4gICAgdGhpcy5zb3J0S2V5ID0ga2V5O1xuICAgIHRoaXMucGFnZSA9IDE7XG4gIH1cblxuICBnZXQgZmlsdGVyZWQoKTogRGV0YWlsUm93W10ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnNjb3BlZDtcbiAgICBjb25zdCBsaXN0ID0gcVxuICAgICAgPyBiYXNlLmZpbHRlcihyID0+IChyLmVtYWlsICsgJyAnICsgci5zdG9yZUlkICsgJyAnICsgci5zdG9yZU5hbWUgKyAnICcgKyByLmF1ZGl0KS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKVxuICAgICAgOiBiYXNlO1xuICAgIHJldHVybiB0aGlzLnNvcnRlZChsaXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydGVkKGxpc3Q6IERldGFpbFJvd1tdKTogRGV0YWlsUm93W10ge1xuICAgIGlmICghdGhpcy5zb3J0S2V5KSB7IHJldHVybiBsaXN0OyB9XG4gICAgY29uc3QgZGlyID0gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICBjb25zdCB2YWx1ZSA9IChyOiBEZXRhaWxSb3cpOiBzdHJpbmcgPT4ge1xuICAgICAgc3dpdGNoICh0aGlzLnNvcnRLZXkpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiByLmRhdGVJc287XG4gICAgICAgIGNhc2UgJ2VtYWlsJzogcmV0dXJuIHIuZW1haWw7XG4gICAgICAgIGNhc2UgJ3N0b3JlJzogcmV0dXJuIHIuc3RvcmVOYW1lO1xuICAgICAgICBjYXNlICd3aW5kb3cnOiByZXR1cm4gci5zdGFydDtcbiAgICAgICAgY2FzZSAnYXVkaXQnOiByZXR1cm4gci5hdWRpdDtcbiAgICAgICAgY2FzZSAnc3RhdHVzJzogcmV0dXJuIHRoaXMubGFiZWwoci5zdGF0dXMpO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gWy4uLmxpc3RdLnNvcnQoKGEsIGIpID0+IHZhbHVlKGEpLmxvY2FsZUNvbXBhcmUodmFsdWUoYiksIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlLCBzZW5zaXRpdml0eTogJ2Jhc2UnIH0pICogZGlyKTtcbiAgfVxuXG4gIGdldCBwYWdlZCgpOiBEZXRhaWxSb3dbXSB7XG4gICAgY29uc3Qgc3RhcnQgPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkLnNsaWNlKHN0YXJ0LCBzdGFydCArIHRoaXMucGFnZVNpemUpO1xuICB9XG5cbiAgZ2V0IGNvdW50TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZC5sZW5ndGggKyAnIG9mICcgKyB0aGlzLnJvd3MubGVuZ3RoICsgKHRoaXMucm93cy5sZW5ndGggPT09IDEgPyAnIHZpc2l0JyA6ICcgdmlzaXRzJyk7XG4gIH1cblxuICBvblF1ZXJ5KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZSA9IDE7XG4gIH1cblxuICBvblBhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlID0gcGFnZTtcbiAgfVxuXG4gIG9uUGFnZVNpemUoc2l6ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IE51bWJlcihzaXplKSB8fCAxMDtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICB9XG5cbiAgZ29CYWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuXG4gIGxhYmVsKHM6IFZpc2l0U3RhdHVzKTogc3RyaW5nIHsgcmV0dXJuIFNUQVRVU1tzXS5sYWJlbDsgfVxuICBiZyhzOiBWaXNpdFN0YXR1cyk6IHN0cmluZyB7IHJldHVybiBTVEFUVVNbc10uYmc7IH1cbiAgZmcoczogVmlzaXRTdGF0dXMpOiBzdHJpbmcgeyByZXR1cm4gU1RBVFVTW3NdLmZnOyB9XG4gIGRvdChzOiBWaXNpdFN0YXR1cyk6IHN0cmluZyB7IHJldHVybiBTVEFUVVNbc10uZG90OyB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwic2QtdGl0bGViYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2QtdGl0bGV0ZXh0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zayBzZC1zay1jcnVtYlwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXNrIGF2Mi1zay0tdGl0bGUgc2Qtc2stbmFtZVwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNkLW1ldHJpY3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXYyLW9jYXJkXCIgKm5nRm9yPVwibGV0IG0gb2YgY2FyZHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmQtaGVhZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLW9jYXJkLWNvdW50XCI+PHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS12YWx1ZSBzZC1zay12YWx1ZVwiPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZC10ZXh0XCI+e3sgbS5sYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZC1jYXJkXCI+XG4gICAgPGxpYi1hdWRpdC12Mi1zaGltbWVyPjwvbGliLWF1ZGl0LXYyLXNoaW1tZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwic2QtdGl0bGViYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2QtdGl0bGV0ZXh0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2QtY3J1bWJcIj48YSBocmVmPVwiI1wiIChjbGljayk9XCJnb0JhY2soJGV2ZW50KVwiPlNjaGVkdWxlPC9hPiDigLoge3sgbmFtZSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNkLW5hbWVcIj57eyBuYW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhdjItYnRuIGF2Mi1idG4tLWdob3N0IGF2Mi1idG4tLXNtXCIgKm5nSWY9XCJjYW5FZGl0XCIgKGNsaWNrKT1cImVkaXQuZW1pdChzY2hlZHVsZUlkKVwiPkVkaXQgcm93czwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2QtbWV0cmljc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmRcIiAqbmdGb3I9XCJsZXQgbSBvZiBjYXJkc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZC1oZWFkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmQtY291bnRcIj57eyBtLnZhbHVlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmQtdGV4dFwiPnt7IG0ubGFiZWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2QtY2FyZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZC10YWJsZWhlYWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZC10aXRsZXRleHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkLWNhcmQtdGl0bGVcIj5TY2hlZHVsZWQgaW5mbzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Qtc3ViXCI+XG4gICAgICAgICAge3sgcmFuZ2VMYWJlbCB9fVxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyYW5nZVRleHRcIj5cbiAgICAgICAgICAgIMK3IHt7IHJhbmdlT24gPyAnVmlzaXRzIG9uICcgKyByYW5nZVRleHQgOiAnQWxsIGRhdGVzJyB9fVxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZC1yYW5nZS1saW5rXCIgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGwoKVwiPnt7IHJhbmdlT24gPyAnU2hvdyBhbGwgZGF0ZXMnIDogJ1Nob3cgJyArIHJhbmdlVGV4dCArICcgb25seScgfX08L2E+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZC1zZWFyY2hcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI3XCI+PC9jaXJjbGU+PGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+PC9zdmc+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicXVlcnlcIiAobmdNb2RlbENoYW5nZSk9XCJvblF1ZXJ5KClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCB1c2VycyBvciBzdG9yZXNcIj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2Qtc2Nyb2xsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2QtZ3JpZCBzZC1ncmlkLS1oZWFkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydEJ5KCdkYXRlJylcIj5TY2hlZHVsZSBkYXRlIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ2RhdGUnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnZW1haWwnKVwiPlVzZXIgZW1haWwgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnZW1haWwnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnc3RvcmUnKVwiPlN0b3JlIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ3N0b3JlJ1wiIFtkaXJdPVwic29ydERpclwiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zb3J0YWJsZVwiIChjbGljayk9XCJzb3J0QnkoJ3dpbmRvdycpXCI+VmlzaXQgd2luZG93IDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ3dpbmRvdydcIiBbZGlyXT1cInNvcnREaXJcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydEJ5KCdhdWRpdCcpXCI+QXVkaXQgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnYXVkaXQnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnc3RhdHVzJylcIj5TdGF0dXMgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnc3RhdHVzJ1wiIFtkaXJdPVwic29ydERpclwiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNkLWdyaWQgc2QtZ3JpZC0tcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgcGFnZWRcIj5cbiAgICAgICAgPGRpdj57eyByLmRhdGUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkLXVzZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkLWF2YXRhclwiPnt7IHIuaW5pdGlhbHMgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZC1lbGxpcHNpc1wiIFthdjJUaXBdPVwici5lbWFpbFwiPnt7IHIuZW1haWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFN0b3JlIG5hbWUgKFFBOiB0aGUgc3RvcmUgY29kZSB3YXMgc2hvd24pOyB0aGUgaWQgb25seSBmb3IgYSByb3cgd2l0aG91dCBhIG5hbWUuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Qtc3RvcmUgc2QtZWxsaXBzaXNcIiBbYXYyVGlwXT1cInIuc3RvcmVOYW1lIHx8ICcnXCI+e3sgci5zdG9yZU5hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBbY2xhc3Muc2QtbXV0ZWRdPVwiIXIuaGFzV2luZG93XCIgW2NsYXNzLnNkLW1pc3NlZF09XCJyLnN0YXR1cyA9PT0gJ21pc3NlZCcgJiYgci5oYXNXaW5kb3dcIiBbYXR0ci50aXRsZV09XCJyLndpbmRvd1RpcCB8fCBudWxsXCI+e3sgci53aW5kb3cgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkLWVsbGlwc2lzXCIgW2F2MlRpcF09XCJyLmF1ZGl0XCI+e3sgci5hdWRpdCB9fTwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2QtcGlsbFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImJnKHIuc3RhdHVzKVwiIFtzdHlsZS5jb2xvcl09XCJmZyhyLnN0YXR1cylcIiBbdGl0bGVdPVwici5ub3RlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkLWRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRvdChyLnN0YXR1cylcIj48L3NwYW4+e3sgbGFiZWwoci5zdGF0dXMpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZC5sZW5ndGhcIiBjbGFzcz1cImF2Mi1lbXB0eVwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwiYXYyLWVtcHR5LWltZ1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS1zdWJcIj57eyByb3dzLmxlbmd0aCA/ICdObyB2aXNpdHMgbWF0Y2ggdGhpcyBzZWFyY2guJyA6ICdObyByb3dzIHlldC4gVXNlIEVkaXQgcm93cyB0byBhZGQgdXNlcnMsIHN0b3JlcyBhbmQgZGF0ZXMuJyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNkLWZvb3RcIj5cbiAgICAgIDxzcGFuPnt7IGNvdW50TGFiZWwgfX08L3NwYW4+XG4gICAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCJmaWx0ZXJlZC5sZW5ndGhcIiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdlU2l6ZXNcIiBbY3VycmVudFBhZ2VdPVwicGFnZVwiIFt0b3RhbEl0ZW1zXT1cImZpbHRlcmVkLmxlbmd0aFwiXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemUoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtdjIvc2NoZWR1bGUvYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtdjIvc2NoZWR1bGUvYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7OztBQXdCMUIsTUFBTSxNQUFNLEdBQWdGO0lBQzFGLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7SUFDL0UsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtJQUM1RSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0lBQzVFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7Q0FDMUUsQ0FBQztBQUVGOzs7R0FHRztBQU1ILE1BQU0sT0FBTyw4QkFBOEI7SUE0Qi9CO0lBQ0E7SUFDQTtJQTdCRCxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN6QiwyRUFBMkU7SUFDbEUsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6Qjs7O09BR0c7SUFDTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNYLElBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRTVDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDZixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ1YsbUhBQW1IO0lBQ25ILFVBQVUsR0FBYSxFQUFFLENBQUM7SUFDMUIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUQsSUFBSSxHQUFnQixFQUFFLENBQUM7SUFDdkIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVoRCxZQUNVLFdBQXdCLEVBQ3hCLEtBQW1CLEVBQ25CLEVBQXFCO1FBRnJCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7SUFDM0IsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztvQkFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUFDLE9BQU87aUJBQUU7Z0JBQy9GLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksVUFBVSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QyxvR0FBb0c7b0JBQ3BHLDBFQUEwRTtvQkFDMUUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDN0UsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDdkUsT0FBTzt3QkFDTCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7d0JBQ3ZELE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDekQsS0FBSzt3QkFDTCxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUc7d0JBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7d0JBQ3pDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUc7d0JBQ3pCLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEdBQUc7d0JBQzdCLE1BQU0sRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLEdBQUc7d0JBQzNCLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDO3dCQUM1SSxTQUFTO3dCQUNULEtBQUssRUFBRSxDQUFDLENBQUMsYUFBYSxJQUFJLEdBQUc7d0JBQzdCLE1BQU0sRUFBRyxDQUFDLENBQUMsTUFBc0IsSUFBSSxNQUFNO3dCQUMzQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO3FCQUNuQixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNuSCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFaEIsSUFBWSxRQUFRO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7U0FBRTtRQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xILENBQUM7SUFFRCxxRUFBcUU7SUFDckUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxJQUFJLFNBQVM7UUFDWCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsSUFBWSxNQUFNO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBRTtRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsSUFBWSxZQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUU7UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEUsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDekQsU0FBUztZQUNULE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVM7U0FDakMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVCLE9BQU87WUFDTCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM3RCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMzRCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMvRCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7U0FDL0UsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2NBQzlHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsb0ZBQW9GO0lBQ3BGLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hFLENBQUM7SUFFRCwwR0FBMEc7SUFDMUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLE9BQU8sR0FBbUIsS0FBSyxDQUFDO0lBRWhDLE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9FLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFpQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFZLEVBQVUsRUFBRTtZQUNyQyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUM5QixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM5QixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFZO1FBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBYyxJQUFZLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsRUFBRSxDQUFDLENBQWMsSUFBWSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELEVBQUUsQ0FBQyxDQUFjLElBQVksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxHQUFHLENBQUMsQ0FBYyxJQUFZLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0dBeE4xQyw4QkFBOEI7NEZBQTlCLDhCQUE4QixxT0MzQzNDLGkyS0FxR0E7OzRGRDFEYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsOEJBQThCOzJJQUsvQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcblxudHlwZSBWaXNpdFN0YXR1cyA9ICdzdWJtaXR0ZWQnIHwgJ2xpdmUnIHwgJ29wZW4nIHwgJ21pc3NlZCc7XG5cbmludGVyZmFjZSBEZXRhaWxSb3cge1xuICBkYXRlOiBzdHJpbmc7XG4gIC8qKiBZWVlZLU1NLURELCBmb3Igc29ydGluZy4gKi9cbiAgZGF0ZUlzbzogc3RyaW5nO1xuICAvKiogV2luZG93IHN0YXJ0ICdISDptbScgKHRoZSBzdG9yZSdzIG9wZW4gdGltZSB3aGVuIGJsYW5rKSwgZm9yIHNvcnRpbmcuICovXG4gIHN0YXJ0OiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGluaXRpYWxzOiBzdHJpbmc7XG4gIHN0b3JlSWQ6IHN0cmluZztcbiAgc3RvcmVOYW1lOiBzdHJpbmc7XG4gIHdpbmRvdzogc3RyaW5nO1xuICAvKiogV2hlcmUgYSBibGFuayByb3cncyB3aW5kb3cgY29tZXMgZnJvbSAoc3RvcmUgaG91cnMgb3IgdGhlIGRlZmF1bHQpOyAnJyBmb3IgdGhlIHJvdydzIG93biB3aW5kb3cuICovXG4gIHdpbmRvd1RpcDogc3RyaW5nO1xuICBoYXNXaW5kb3c6IGJvb2xlYW47XG4gIGF1ZGl0OiBzdHJpbmc7XG4gIHN0YXR1czogVmlzaXRTdGF0dXM7XG4gIG5vdGU6IHN0cmluZztcbn1cblxuY29uc3QgU1RBVFVTOiBSZWNvcmQ8VmlzaXRTdGF0dXMsIHsgbGFiZWw6IHN0cmluZzsgYmc6IHN0cmluZzsgZmc6IHN0cmluZzsgZG90OiBzdHJpbmcgfT4gPSB7XG4gIHN1Ym1pdHRlZDogeyBsYWJlbDogJ1N1Ym1pdHRlZCcsIGJnOiAnI0VDRkRGMycsIGZnOiAnIzAyN0E0OCcsIGRvdDogJyMxMkI3NkEnIH0sXG4gIGxpdmU6IHsgbGFiZWw6ICdJbiBwcm9ncmVzcycsIGJnOiAnI0VGRjhGRicsIGZnOiAnIzE3NUNEMycsIGRvdDogJyMyRTkwRkEnIH0sXG4gIG9wZW46IHsgbGFiZWw6ICdOb3Qgc3RhcnRlZCcsIGJnOiAnI0YyRjRGNycsIGZnOiAnIzM0NDA1NCcsIGRvdDogJyM5OEEyQjMnIH0sXG4gIG1pc3NlZDogeyBsYWJlbDogJ01pc3NlZCcsIGJnOiAnI0ZFRjNGMicsIGZnOiAnI0I0MjMxOCcsIGRvdDogJyNGMDQ0MzgnIH1cbn07XG5cbi8qKlxuICogTWFuYWdlIOKAuiBTY2hlZHVsZSBJbmZvIOKAuiAoc2NoZWR1bGUpOiBldmVyeSByb3cgb2Ygb25lIHNjaGVkdWxlIHdpdGggdGhlIHN0YXR1cyBvZiB0aGUgYXVkaXRcbiAqIFRyYXggcmFpc2VkIGZvciBpdCAoUE9TVCAvdHJheC9hdWRpdC9zY2hlZHVsZS9kZXRhaWwpLiBcIkVkaXQgcm93c1wiIGhhbmRzIG92ZXIgdG8gdGhlIGVkaXRvci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LXYyLXNjaGVkdWxlLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC12Mi1zY2hlZHVsZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXVkaXQtdjItc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBdWRpdFYyU2NoZWR1bGVEZXRhaWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNsaWVudElkID0gJyc7XG4gIEBJbnB1dCgpIHNjaGVkdWxlSWQgPSAnJztcbiAgLyoqIEVkaXQgcm93cyBuZWVkcyB0aGUgQ2hlY2tsaXN0IGVkaXQgcGVybWlzc2lvbiAoTWFuYWdlIHBhc3NlcyBpdCBpbikuICovXG4gIEBJbnB1dCgpIGNhbkVkaXQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSBoZWFkZXIncyBkYXRlIHJhbmdlIChhbnkgZGF5anMtcmVhZGFibGUgZGF0ZSk6IFZpZXcgc2hvd3MgdGhlIHZpc2l0cyBvZiB0aGVzZSBkYXRlcyBvbmx5IChRQSAxMCBPY3QpLCB3aXRoXG4gICAqIFwiU2hvdyBhbGwgZGF0ZXNcIiBmb3IgdGhlIHdob2xlIHNjaGVkdWxlLiBXaXRob3V0IGEgcmFuZ2UgZXZlcnkgcm93IHNob3dzLlxuICAgKi9cbiAgQElucHV0KCkgZnJvbURhdGUgPSAnJztcbiAgQElucHV0KCkgdG9EYXRlID0gJyc7XG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuICBuYW1lID0gJyc7XG4gIC8qKiBUaGUgc2NoZWR1bGUncyBhdWRpdHMgYnkgbmFtZTsgdGhlIHN1bW1hcnkgbGluZSBzaG93cyBhIGNvdW50IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgKG5hbWVzIGluIGl0cyB0b29sdGlwKS4gKi9cbiAgYXVkaXROYW1lczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGlzaGVkID0gZmFsc2U7XG4gIG1ldHJpY3MgPSB7IHZpc2l0czogMCwgdXNlcnM6IDAsIGNvbXBsZXRlZDogMCwgcGVuZGluZzogMCB9O1xuICByb3dzOiBEZXRhaWxSb3dbXSA9IFtdO1xuICBxdWVyeSA9ICcnO1xuICBwYWdlID0gMTtcbiAgcGFnZVNpemUgPSAxMDtcbiAgcmVhZG9ubHkgcGFnZVNpemVzID0gWzEwLCAyMCwgMzBdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmF1ZGl0U2NoZWR1bGVEZXRhaWwoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCwgc2NoZWR1bGVJZDogdGhpcy5zY2hlZHVsZUlkIH0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGQgPSByZXM/LmNvZGUgPT09IDIwMCA/IHJlcy5kYXRhIDogbnVsbDtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoIWQpIHsgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdDb3VsZCBub3QgbG9hZCB0aGlzIHNjaGVkdWxlJyk7IHRoaXMuYmFjay5lbWl0KCk7IHJldHVybjsgfVxuICAgICAgICAgIHRoaXMubmFtZSA9IGQuc2NoZWR1bGU/Lm5hbWUgfHwgJ1NjaGVkdWxlJztcbiAgICAgICAgICB0aGlzLnB1Ymxpc2hlZCA9ICEhZC5zY2hlZHVsZT8ucHVibGlzaDtcbiAgICAgICAgICB0aGlzLmF1ZGl0TmFtZXMgPSAoZC5zY2hlZHVsZT8uY2hlY2tMaXN0cyB8fCBbXSkubWFwKChjOiBhbnkpID0+IGMuY2hlY2tMaXN0TmFtZSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgIHRoaXMubWV0cmljcyA9IHsgLi4udGhpcy5tZXRyaWNzLCAuLi4oZC5tZXRyaWNzIHx8IHt9KSB9O1xuICAgICAgICAgIHRoaXMucm93cyA9IChkLnJvd3MgfHwgW10pLm1hcCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbWFpbCA9IFN0cmluZyhyLnVzZXJFbWFpbCB8fCAnJyk7XG4gICAgICAgICAgICBjb25zdCBoYXNXaW5kb3cgPSAhIShyLnN0YXJ0ICYmIHIuZW5kKTtcbiAgICAgICAgICAgIC8vIE5vIHdpbmRvdyBvbiB0aGUgcm93OiB0aGUgdmlzaXQgZ2V0cyB0aGUgc3RvcmUncyBvcGVuIC0gY2xvc2UgdGltZSwgZWxzZSAxMDowMCAtIDIyOjAwICh0aGUgQVBJJ3NcbiAgICAgICAgICAgIC8vIHdpbmRvd1N0YXJ0IC8gd2luZG93RW5kOyBhbiBvbGRlciBBUEkgd2l0aG91dCB0aGVtIGxlYXZlcyB0aGUgZGVmYXVsdCkuXG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGhhc1dpbmRvdyA/IFN0cmluZyhyLnN0YXJ0KSA6IFN0cmluZyhyLndpbmRvd1N0YXJ0IHx8ICcxMDowMCcpO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gaGFzV2luZG93ID8gU3RyaW5nKHIuZW5kKSA6IFN0cmluZyhyLndpbmRvd0VuZCB8fCAnMjI6MDAnKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGU6IHIuZGF0ZSA/IGRheWpzKHIuZGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZJykgOiAn4oCUJyxcbiAgICAgICAgICAgICAgZGF0ZUlzbzogci5kYXRlID8gZGF5anMoci5kYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6ICcnLFxuICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgZW1haWw6IGVtYWlsIHx8ICfigJQnLFxuICAgICAgICAgICAgICBpbml0aWFsczogZW1haWwuc2xpY2UoMCwgMikudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgICAgc3RvcmVJZDogci5zdG9yZUlkIHx8ICfigJQnLFxuICAgICAgICAgICAgICBzdG9yZU5hbWU6IHIuc3RvcmVOYW1lIHx8ICfigJQnLFxuICAgICAgICAgICAgICB3aW5kb3c6IHN0YXJ0ICsgJyDigJMgJyArIGVuZCxcbiAgICAgICAgICAgICAgd2luZG93VGlwOiBoYXNXaW5kb3cgPyAnJyA6IChyLndpbmRvd1NvdXJjZSA9PT0gJ3N0b3JlJyA/ICdTdG9yZSBvcGVuIOKAkyBjbG9zZSB0aW1lJyA6ICdEZWZhdWx0IHdpbmRvdyAodGhlIHN0b3JlIGhhcyBubyBvcGVuIC8gY2xvc2UgdGltZSknKSxcbiAgICAgICAgICAgICAgaGFzV2luZG93LFxuICAgICAgICAgICAgICBhdWRpdDogci5jaGVja0xpc3ROYW1lIHx8ICfigJQnLFxuICAgICAgICAgICAgICBzdGF0dXM6IChyLnN0YXR1cyBhcyBWaXNpdFN0YXR1cykgfHwgJ29wZW4nLFxuICAgICAgICAgICAgICBub3RlOiByLm5vdGUgfHwgJydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7IHRoaXMubG9hZGluZyA9IGZhbHNlOyB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0NvdWxkIG5vdCBsb2FkIHRoaXMgc2NoZWR1bGUnKTsgdGhpcy5iYWNrLmVtaXQoKTsgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogXCJTaG93IGFsbCBkYXRlc1wiOiB0aGUgd2hvbGUgc2NoZWR1bGUgaW5zdGVhZCBvZiB0aGUgaGVhZGVyJ3MgcmFuZ2UuICovXG4gIHNob3dBbGwgPSBmYWxzZTtcblxuICBwcml2YXRlIGdldCByYW5nZUlzbygpOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmZyb21EYXRlKSB7IHJldHVybiBudWxsOyB9XG4gICAgY29uc3QgZnJvbSA9IGRheWpzKHRoaXMuZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvID0gdGhpcy50b0RhdGUgPyBkYXlqcyh0aGlzLnRvRGF0ZSkgOiBmcm9tO1xuICAgIHJldHVybiBmcm9tLmlzVmFsaWQoKSAmJiB0by5pc1ZhbGlkKCkgPyB7IGZyb206IGZyb20uZm9ybWF0KCdZWVlZLU1NLUREJyksIHRvOiB0by5mb3JtYXQoJ1lZWVktTU0tREQnKSB9IDogbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgcmFuZ2UgaXMgYXBwbGllZCAoZ2l2ZW4sIGFuZCBcIlNob3cgYWxsIGRhdGVzXCIgbm90IGNob3NlbikuICovXG4gIGdldCByYW5nZU9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zaG93QWxsICYmICEhdGhpcy5yYW5nZUlzbztcbiAgfVxuXG4gIC8qKiBUaGUgaGVhZGVyJ3MgcmFuZ2UgYXMgdGhlIHBhZ2Ugc2hvd3MgZGF0ZXMuICovXG4gIGdldCByYW5nZVRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByID0gdGhpcy5yYW5nZUlzbztcbiAgICBpZiAoIXIpIHsgcmV0dXJuICcnOyB9XG4gICAgY29uc3QgZiA9IGRheWpzKHIuZnJvbSkuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XG4gICAgY29uc3QgdCA9IGRheWpzKHIudG8pLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgIHJldHVybiBmID09PSB0ID8gZiA6IGYgKyAnIOKAkyAnICsgdDtcbiAgfVxuXG4gIHRvZ2dsZVNob3dBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QWxsID0gIXRoaXMuc2hvd0FsbDtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICB9XG5cbiAgLyoqIFRoZSByb3dzIG9mIHRoZSByYW5nZSAoZXZlcnkgcm93IHdoZW4gaXQgaXMgb2ZmKS4gKi9cbiAgcHJpdmF0ZSBnZXQgc2NvcGVkKCk6IERldGFpbFJvd1tdIHtcbiAgICBjb25zdCByID0gdGhpcy5yYW5nZUlzbztcbiAgICBpZiAoIXRoaXMucmFuZ2VPbiB8fCAhcikgeyByZXR1cm4gdGhpcy5yb3dzOyB9XG4gICAgcmV0dXJuIHRoaXMucm93cy5maWx0ZXIoeCA9PiAhIXguZGF0ZUlzbyAmJiB4LmRhdGVJc28gPj0gci5mcm9tICYmIHguZGF0ZUlzbyA8PSByLnRvKTtcbiAgfVxuXG4gIC8qKiBUaGUgY2FyZHMgY291bnQgdGhlIHNob3duIGRhdGVzOiB0aGUgQVBJJ3MgdG90YWxzIGZvciB0aGUgd2hvbGUgc2NoZWR1bGUsIGVsc2UgdGhlIHNhbWUgc3VtcyBvdmVyIHRoZSByYW5nZS4gKi9cbiAgcHJpdmF0ZSBnZXQgc2hvd25NZXRyaWNzKCk6IHsgdmlzaXRzOiBudW1iZXI7IHVzZXJzOiBudW1iZXI7IGNvbXBsZXRlZDogbnVtYmVyOyBwZW5kaW5nOiBudW1iZXIgfSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlT24pIHsgcmV0dXJuIHRoaXMubWV0cmljczsgfVxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnNjb3BlZDtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSByb3dzLmZpbHRlcih4ID0+IHguc3RhdHVzID09PSAnc3VibWl0dGVkJykubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICB2aXNpdHM6IHJvd3MubGVuZ3RoLFxuICAgICAgdXNlcnM6IG5ldyBTZXQocm93cy5tYXAoeCA9PiB4LmVtYWlsLnRvTG93ZXJDYXNlKCkpKS5zaXplLFxuICAgICAgY29tcGxldGVkLFxuICAgICAgcGVuZGluZzogcm93cy5sZW5ndGggLSBjb21wbGV0ZWRcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGNhcmRzKCk6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGVhZDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBtID0gdGhpcy5zaG93bk1ldHJpY3M7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgbGFiZWw6ICdWaXNpdHMnLCB2YWx1ZTogU3RyaW5nKG0udmlzaXRzKSwgaGVhZDogJyNGNUZBRkYnIH0sXG4gICAgICB7IGxhYmVsOiAnVXNlcnMnLCB2YWx1ZTogU3RyaW5nKG0udXNlcnMpLCBoZWFkOiAnI0Y1RkFGRicgfSxcbiAgICAgIHsgbGFiZWw6ICdDb21wbGV0ZWQnLCB2YWx1ZTogU3RyaW5nKG0uY29tcGxldGVkKSwgaGVhZDogJyNGNkZFRjknIH0sXG4gICAgICB7IGxhYmVsOiAnUGVuZGluZycsIHZhbHVlOiBTdHJpbmcobS5wZW5kaW5nKSwgaGVhZDogJyNGRkZDRjUnIH0sXG4gICAgICB7IGxhYmVsOiAnU3RhdHVzJywgdmFsdWU6IHRoaXMucHVibGlzaGVkID8gJ0xpdmUnIDogJ0RyYWZ0JywgaGVhZDogJyNGOUZBRkInIH1cbiAgICBdO1xuICB9XG5cbiAgZ2V0IHJhbmdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtID0gdGhpcy5zaG93bk1ldHJpY3M7XG4gICAgY29uc3QgbiA9IHRoaXMuYXVkaXROYW1lcy5sZW5ndGg7XG4gICAgcmV0dXJuIG0udmlzaXRzICsgKG0udmlzaXRzID09PSAxID8gJyB2aXNpdCcgOiAnIHZpc2l0cycpICsgJyDCtyAnICsgbS51c2VycyArIChtLnVzZXJzID09PSAxID8gJyB1c2VyJyA6ICcgdXNlcnMnKVxuICAgICAgKyAobiA9PT0gMSA/ICcgwrcgJyArIHRoaXMuYXVkaXROYW1lc1swXSA6IG4gPiAxID8gJyDCtyAnICsgbiArICcgYXVkaXRzJyA6ICcnKTtcbiAgfVxuXG4gIC8qKiBFdmVyeSBhdWRpdCBuYW1lLCBhcyB0aGUgc3VtbWFyeSBsaW5lJ3MgdG9vbHRpcCB3aGVuIGl0IHNob3dzIG9ubHkgdGhlIGNvdW50LiAqL1xuICBnZXQgYXVkaXRzVGlwKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmF1ZGl0TmFtZXMubGVuZ3RoID4gMSA/IHRoaXMuYXVkaXROYW1lcy5qb2luKCcsICcpIDogbnVsbDtcbiAgfVxuXG4gIC8qKiBDb2x1bW4gc29ydCAoJycgPSB0aGUgc2NoZWR1bGUncyBvcmRlcik7IGEgaGVhZGVyIGNsaWNrIHRvZ2dsZXMgYXNjZW5kaW5nIC8gZGVzY2VuZGluZyAoUUEgMTAgT2N0KS4gKi9cbiAgc29ydEtleSA9ICcnO1xuICBzb3J0RGlyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnO1xuXG4gIHNvcnRCeShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc29ydERpciA9IHRoaXMuc29ydEtleSA9PT0ga2V5ICYmIHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB0aGlzLnNvcnRLZXkgPSBrZXk7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZCgpOiBEZXRhaWxSb3dbXSB7XG4gICAgY29uc3QgcSA9IHRoaXMucXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuc2NvcGVkO1xuICAgIGNvbnN0IGxpc3QgPSBxXG4gICAgICA/IGJhc2UuZmlsdGVyKHIgPT4gKHIuZW1haWwgKyAnICcgKyByLnN0b3JlSWQgKyAnICcgKyByLnN0b3JlTmFtZSArICcgJyArIHIuYXVkaXQpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpXG4gICAgICA6IGJhc2U7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkKGxpc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0ZWQobGlzdDogRGV0YWlsUm93W10pOiBEZXRhaWxSb3dbXSB7XG4gICAgaWYgKCF0aGlzLnNvcnRLZXkpIHsgcmV0dXJuIGxpc3Q7IH1cbiAgICBjb25zdCBkaXIgPSB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gMSA6IC0xO1xuICAgIGNvbnN0IHZhbHVlID0gKHI6IERldGFpbFJvdyk6IHN0cmluZyA9PiB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc29ydEtleSkge1xuICAgICAgICBjYXNlICdkYXRlJzogcmV0dXJuIHIuZGF0ZUlzbztcbiAgICAgICAgY2FzZSAnZW1haWwnOiByZXR1cm4gci5lbWFpbDtcbiAgICAgICAgY2FzZSAnc3RvcmUnOiByZXR1cm4gci5zdG9yZU5hbWU7XG4gICAgICAgIGNhc2UgJ3dpbmRvdyc6IHJldHVybiByLnN0YXJ0O1xuICAgICAgICBjYXNlICdhdWRpdCc6IHJldHVybiByLmF1ZGl0O1xuICAgICAgICBjYXNlICdzdGF0dXMnOiByZXR1cm4gdGhpcy5sYWJlbChyLnN0YXR1cyk7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBbLi4ubGlzdF0uc29ydCgoYSwgYikgPT4gdmFsdWUoYSkubG9jYWxlQ29tcGFyZSh2YWx1ZShiKSwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUsIHNlbnNpdGl2aXR5OiAnYmFzZScgfSkgKiBkaXIpO1xuICB9XG5cbiAgZ2V0IHBhZ2VkKCk6IERldGFpbFJvd1tdIHtcbiAgICBjb25zdCBzdGFydCA9ICh0aGlzLnBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWQuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICBnZXQgY291bnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkLmxlbmd0aCArICcgb2YgJyArIHRoaXMucm93cy5sZW5ndGggKyAodGhpcy5yb3dzLmxlbmd0aCA9PT0gMSA/ICcgdmlzaXQnIDogJyB2aXNpdHMnKTtcbiAgfVxuXG4gIG9uUXVlcnkoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgfVxuXG4gIG9uUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2UgPSBwYWdlO1xuICB9XG5cbiAgb25QYWdlU2l6ZShzaXplOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplID0gTnVtYmVyKHNpemUpIHx8IDEwO1xuICAgIHRoaXMucGFnZSA9IDE7XG4gIH1cblxuICBnb0JhY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgbGFiZWwoczogVmlzaXRTdGF0dXMpOiBzdHJpbmcgeyByZXR1cm4gU1RBVFVTW3NdLmxhYmVsOyB9XG4gIGJnKHM6IFZpc2l0U3RhdHVzKTogc3RyaW5nIHsgcmV0dXJuIFNUQVRVU1tzXS5iZzsgfVxuICBmZyhzOiBWaXNpdFN0YXR1cyk6IHN0cmluZyB7IHJldHVybiBTVEFUVVNbc10uZmc7IH1cbiAgZG90KHM6IFZpc2l0U3RhdHVzKTogc3RyaW5nIHsgcmV0dXJuIFNUQVRVU1tzXS5kb3Q7IH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJzZC10aXRsZWJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZC10aXRsZXRleHRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXNrIHNkLXNrLWNydW1iXCI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc2sgYXYyLXNrLS10aXRsZSBzZC1zay1uYW1lXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2QtbWV0cmljc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmRcIiAqbmdGb3I9XCJsZXQgbSBvZiBjYXJkc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZC1oZWFkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItb2NhcmQtY291bnRcIj48c3BhbiBjbGFzcz1cImF2Mi1zayBhdjItc2stLXZhbHVlIHNkLXNrLXZhbHVlXCI+PC9zcGFuPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLW9jYXJkLXRleHRcIj57eyBtLmxhYmVsIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNkLWNhcmRcIj5cbiAgICA8bGliLWF1ZGl0LXYyLXNoaW1tZXI+PC9saWItYXVkaXQtdjItc2hpbW1lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJzZC10aXRsZWJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZC10aXRsZXRleHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZC1jcnVtYlwiPjxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cImdvQmFjaygkZXZlbnQpXCI+U2NoZWR1bGU8L2E+IOKAuiB7eyBuYW1lIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2QtbmFtZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF2Mi1idG4gYXYyLWJ0bi0tZ2hvc3QgYXYyLWJ0bi0tc21cIiAqbmdJZj1cImNhbkVkaXRcIiAoY2xpY2spPVwiZWRpdC5lbWl0KHNjaGVkdWxlSWQpXCI+RWRpdCByb3dzPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZC1tZXRyaWNzXCI+XG4gICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZFwiICpuZ0Zvcj1cImxldCBtIG9mIGNhcmRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLW9jYXJkLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZC1jb3VudFwiPnt7IG0udmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1vY2FyZC10ZXh0XCI+e3sgbS5sYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZC1jYXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cInNkLXRhYmxlaGVhZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNkLXRpdGxldGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2QtY2FyZC10aXRsZVwiPlNjaGVkdWxlZCBpbmZvPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZC1zdWJcIj5cbiAgICAgICAgICA8c3BhbiBbYXR0ci50aXRsZV09XCJhdWRpdHNUaXBcIj57eyByYW5nZUxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyYW5nZVRleHRcIj5cbiAgICAgICAgICAgIMK3IHt7IHJhbmdlT24gPyAnVmlzaXRzIG9uICcgKyByYW5nZVRleHQgOiAnQWxsIGRhdGVzJyB9fVxuICAgICAgICAgICAgPGEgY2xhc3M9XCJzZC1yYW5nZS1saW5rXCIgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGwoKVwiPnt7IHJhbmdlT24gPyAnU2hvdyBhbGwgZGF0ZXMnIDogJ1Nob3cgJyArIHJhbmdlVGV4dCArICcgb25seScgfX08L2E+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZC1zZWFyY2hcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI3XCI+PC9jaXJjbGU+PGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+PC9zdmc+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicXVlcnlcIiAobmdNb2RlbENoYW5nZSk9XCJvblF1ZXJ5KClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCB1c2VycyBvciBzdG9yZXNcIj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2Qtc2Nyb2xsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2QtZ3JpZCBzZC1ncmlkLS1oZWFkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydEJ5KCdkYXRlJylcIj5TY2hlZHVsZSBkYXRlIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ2RhdGUnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnZW1haWwnKVwiPlVzZXIgZW1haWwgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnZW1haWwnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnc3RvcmUnKVwiPlN0b3JlIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ3N0b3JlJ1wiIFtkaXJdPVwic29ydERpclwiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1zb3J0YWJsZVwiIChjbGljayk9XCJzb3J0QnkoJ3dpbmRvdycpXCI+VmlzaXQgd2luZG93IDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwic29ydEtleSA9PT0gJ3dpbmRvdydcIiBbZGlyXT1cInNvcnREaXJcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydEJ5KCdhdWRpdCcpXCI+QXVkaXQgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnYXVkaXQnXCIgW2Rpcl09XCJzb3J0RGlyXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRCeSgnc3RhdHVzJylcIj5TdGF0dXMgPGxpYi1hdWRpdC12Mi1zb3J0LWljb24gW2FjdGl2ZV09XCJzb3J0S2V5ID09PSAnc3RhdHVzJ1wiIFtkaXJdPVwic29ydERpclwiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNkLWdyaWQgc2QtZ3JpZC0tcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgcGFnZWRcIj5cbiAgICAgICAgPGRpdj57eyByLmRhdGUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkLXVzZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkLWF2YXRhclwiPnt7IHIuaW5pdGlhbHMgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZC1lbGxpcHNpc1wiIFthdjJUaXBdPVwici5lbWFpbFwiPnt7IHIuZW1haWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFN0b3JlIG5hbWUgKFFBOiB0aGUgc3RvcmUgY29kZSB3YXMgc2hvd24pOyB0aGUgaWQgb25seSBmb3IgYSByb3cgd2l0aG91dCBhIG5hbWUuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Qtc3RvcmUgc2QtZWxsaXBzaXNcIiBbYXYyVGlwXT1cInIuc3RvcmVOYW1lIHx8ICcnXCI+e3sgci5zdG9yZU5hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBbY2xhc3Muc2QtbXV0ZWRdPVwiIXIuaGFzV2luZG93XCIgW2NsYXNzLnNkLW1pc3NlZF09XCJyLnN0YXR1cyA9PT0gJ21pc3NlZCcgJiYgci5oYXNXaW5kb3dcIiBbYXR0ci50aXRsZV09XCJyLndpbmRvd1RpcCB8fCBudWxsXCI+e3sgci53aW5kb3cgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNkLWVsbGlwc2lzXCIgW2F2MlRpcF09XCJyLmF1ZGl0XCI+e3sgci5hdWRpdCB9fTwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2QtcGlsbFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImJnKHIuc3RhdHVzKVwiIFtzdHlsZS5jb2xvcl09XCJmZyhyLnN0YXR1cylcIiBbdGl0bGVdPVwici5ub3RlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkLWRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRvdChyLnN0YXR1cylcIj48L3NwYW4+e3sgbGFiZWwoci5zdGF0dXMpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZC5sZW5ndGhcIiBjbGFzcz1cImF2Mi1lbXB0eVwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwiYXYyLWVtcHR5LWltZ1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS1zdWJcIj57eyByb3dzLmxlbmd0aCA/ICdObyB2aXNpdHMgbWF0Y2ggdGhpcyBzZWFyY2guJyA6ICdObyByb3dzIHlldC4gVXNlIEVkaXQgcm93cyB0byBhZGQgdXNlcnMsIHN0b3JlcyBhbmQgZGF0ZXMuJyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNkLWZvb3RcIj5cbiAgICAgIDxzcGFuPnt7IGNvdW50TGFiZWwgfX08L3NwYW4+XG4gICAgICA8bGliLXBhZ2luYXRpb24gKm5nSWY9XCJmaWx0ZXJlZC5sZW5ndGhcIiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW3BhZ2luYXRpb25TaXplc109XCJwYWdlU2l6ZXNcIiBbY3VycmVudFBhZ2VdPVwicGFnZVwiIFt0b3RhbEl0ZW1zXT1cImZpbHRlcmVkLmxlbmd0aFwiXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemUoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=