tango-app-ui-store-builder 1.0.60 → 1.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.mjs +7 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +20 -10
- package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +20 -1
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +20 -7
- package/esm2022/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.mjs +130 -168
- package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +3 -6
- package/esm2022/lib/components/planogram/plano-analytics/zone-analytics/zone-analytics.component.mjs +17 -40
- package/esm2022/lib/data/fixture-template.data.mjs +13 -4
- package/esm2022/lib/functions/plano.function.mjs +13 -1
- package/fesm2022/tango-app-ui-store-builder.mjs +230 -229
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.d.ts +1 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.d.ts +1 -0
- package/lib/components/collection-update-ai/services/data.service.d.ts +13 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +2 -0
- package/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.d.ts +16 -14
- package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +0 -1
- package/lib/components/planogram/plano-analytics/zone-analytics/zone-analytics.component.d.ts +6 -16
- package/lib/functions/plano.function.d.ts +1 -0
- package/package.json +1 -1
|
@@ -446,6 +446,10 @@ export class FindReplaceLayoutComponent {
|
|
|
446
446
|
shouldShowReschedule() {
|
|
447
447
|
return this.findReplaceData?.status === 'scheduled';
|
|
448
448
|
}
|
|
449
|
+
onEdit() {
|
|
450
|
+
// Enable edit mode in data service
|
|
451
|
+
this.dataService.setEditMode(true);
|
|
452
|
+
}
|
|
449
453
|
async onReschedule() {
|
|
450
454
|
if (!this.findReplaceData?._id) {
|
|
451
455
|
return;
|
|
@@ -556,10 +560,10 @@ export class FindReplaceLayoutComponent {
|
|
|
556
560
|
this.destroy$.complete();
|
|
557
561
|
}
|
|
558
562
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FindReplaceLayoutComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.CollectionUpdateAiDataService }, { token: i3.StoreBuilderService }, { token: i4.NgbModal }, { token: i5.PageInfoService }, { token: i6.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
559
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FindReplaceLayoutComponent, isStandalone: true, selector: "lib-find-replace-layout", ngImport: i0, template: " <!-- Batch Running UI -->\r\n <div *ngIf=\"isBatchRunning()\" class=\"batch-processing-container\">\r\n <!-- SVG Illustration -->\r\n <div class=\"batch-illustration\">\r\n <svg fill=\"none\" preserveAspectRatio=\"none\" viewBox=\"0 0 331 183\">\r\n <g id=\"Group 2891\">\r\n <path d=\"M247.99 46C268.149 46 284.49 62.3416 284.49 82.5C284.49 91.0788 290.281 101 298.859 101H312C322.493 101 331 109.507 331 120C331 130.493 322.493 139 312 139H272.962C268.634 139 265.721 144.171 265.721 148.5C265.721 158.165 257.886 166 248.221 166H119.221C109.556 166 101.721 158.165 101.721 148.5C101.721 144.171 98.8077 139 94.479 139H19C8.50659 139 0 130.493 0 120C0 109.507 8.50659 101 19 101H65.121C73.6998 101 79.4902 91.0788 79.4902 82.5C79.4902 62.3416 95.8319 46 115.99 46H247.99Z\" fill=\"#EAECF0\" id=\"Union\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2270\" rx=\"4\" width=\"64\" x=\"176.19\" y=\"76\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2269\" rx=\"4\" width=\"64\" x=\"119.19\" y=\"16\" />\r\n <path d=\"M225.605 121.414C226.386 120.633 226.386 119.367 225.605 118.586L212.877 105.858C212.096 105.077 210.829 105.077 210.048 105.858C209.267 106.639 209.267 107.905 210.048 108.686L221.362 120L210.048 131.314C209.267 132.095 209.267 133.361 210.048 134.142C210.829 134.923 212.096 134.923 212.877 134.142L225.605 121.414ZM182.19 49.5C182.19 50.6046 183.086 51.5 184.19 51.5C185.295 51.5 186.19 50.6046 186.19 49.5H184.19H182.19ZM124.19 15V17H178.19V15V13H124.19V15ZM224.19 120V118H124.19V120V122H224.19V120ZM118.19 114H120.19V21H118.19H116.19V114H118.19ZM184.19 21H182.19V49.5H184.19H186.19V21H184.19ZM124.19 120V118C121.981 118 120.19 116.209 120.19 114H118.19H116.19C116.19 118.418 119.772 122 124.19 122V120ZM178.19 15V17C180.4 17 182.19 18.7909 182.19 21H184.19H186.19C186.19 16.5817 182.609 13 178.19 13V15ZM124.19 15V13C119.772 13 116.19 16.5817 116.19 21H118.19H120.19C120.19 18.7909 121.981 17 124.19 17V15Z\" fill=\"#00A3FF\" id=\"Rectangle 2254\" />\r\n <path d=\"M132.776 74.5858C131.995 75.3668 131.995 76.6332 132.776 77.4142L145.504 90.1421C146.285 90.9232 147.552 90.9232 148.333 90.1421C149.114 89.3611 149.114 88.0947 148.333 87.3137L137.019 76L148.333 64.6863C149.114 63.9052 149.114 62.6389 148.333 61.8579C147.552 61.0768 146.285 61.0768 145.504 61.8579L132.776 74.5858ZM176.19 146.5C176.19 145.395 175.295 144.5 174.19 144.5C173.086 144.5 172.19 145.395 172.19 146.5L174.19 146.5L176.19 146.5ZM234.19 181L234.19 179L180.19 179L180.19 181L180.19 183L234.19 183L234.19 181ZM134.19 76L134.19 78L234.19 78L234.19 76L234.19 74L134.19 74L134.19 76ZM240.19 82L238.19 82L238.19 175L240.19 175L242.19 175L242.19 82L240.19 82ZM174.19 175L176.19 175L176.19 146.5L174.19 146.5L172.19 146.5L172.19 175L174.19 175ZM234.19 76L234.19 78C236.4 78 238.19 79.7909 238.19 82L240.19 82L242.19 82C242.19 77.5817 238.609 74 234.19 74L234.19 76ZM180.19 181L180.19 179C177.981 179 176.19 177.209 176.19 175L174.19 175L172.19 175C172.19 179.418 175.772 183 180.19 183L180.19 181ZM234.19 181L234.19 183C238.609 183 242.19 179.418 242.19 175L240.19 175L238.19 175C238.19 177.209 236.4 179 234.19 179L234.19 181Z\" fill=\"#00A3FF\" id=\"Rectangle 2256\" />\r\n <path d=\"M140.232 30L140.95 33.4281C141.316 35.1758 142.129 36.7989 143.309 38.139C144.489 39.4791 145.996 40.4906 147.684 41.0747L149.274 41.625L147.684 42.1752C145.996 42.7594 144.489 43.7709 143.309 45.111C142.129 46.4511 141.316 48.0742 140.95 49.8219L140.232 53.25L139.514 49.8219C139.148 48.0742 138.335 46.4511 137.155 45.111C135.975 43.7709 134.468 42.7594 132.78 42.1752L131.19 41.625L132.78 41.0747C134.468 40.4906 135.975 39.4791 137.155 38.139C138.335 36.7989 139.148 35.1758 139.514 33.4281L140.232 30Z\" id=\"Vector\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M217.232 143L217.95 146.428C218.316 148.176 219.129 149.799 220.309 151.139C221.489 152.479 222.996 153.491 224.684 154.075L226.274 154.625L224.684 155.175C222.996 155.759 221.489 156.771 220.309 158.111C219.129 159.451 218.316 161.074 217.95 162.822L217.232 166.25L216.514 162.822C216.148 161.074 215.335 159.451 214.155 158.111C212.975 156.771 211.468 155.759 209.78 155.175L208.19 154.625L209.78 154.075C211.468 153.491 212.975 152.479 214.155 151.139C215.335 149.799 216.148 148.176 216.514 146.428L217.232 143Z\" id=\"Vector_2\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M192.19 148L192.588 149.917C192.79 150.894 193.239 151.802 193.892 152.551C194.545 153.3 195.378 153.866 196.311 154.192L197.19 154.5L196.311 154.808C195.378 155.134 194.545 155.7 193.892 156.449C193.239 157.198 192.79 158.106 192.588 159.083L192.19 161L191.793 159.083C191.591 158.106 191.141 157.198 190.489 156.449C189.836 155.7 189.003 155.134 188.07 154.808L187.19 154.5L188.07 154.192C189.003 153.866 189.836 153.3 190.489 152.551C191.141 151.802 191.591 150.894 191.793 149.917L192.19 148Z\" id=\"Vector_3\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M107.19 2L107.588 3.91678C107.79 4.894 108.239 5.80152 108.892 6.55084C109.545 7.30016 110.378 7.86571 111.311 8.19233L112.19 8.5L111.311 8.80767C110.378 9.13429 109.545 9.69984 108.892 10.4492C108.239 11.1985 107.79 12.106 107.588 13.0832L107.19 15L106.793 13.0832C106.591 12.106 106.141 11.1985 105.489 10.4492C104.836 9.69984 104.003 9.13429 103.07 8.80767L102.19 8.5L103.07 8.19233C104.003 7.86571 104.836 7.30016 105.489 6.55084C106.141 5.80152 106.591 4.894 106.793 3.91678L107.19 2Z\" id=\"Vector_4\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M262.19 81L262.588 82.9168C262.79 83.894 263.239 84.8015 263.892 85.5508C264.545 86.3002 265.378 86.8657 266.311 87.1923L267.19 87.5L266.311 87.8077C265.378 88.1343 264.545 88.6998 263.892 89.4492C263.239 90.1985 262.79 91.106 262.588 92.0832L262.19 94L261.793 92.0832C261.591 91.106 261.141 90.1985 260.489 89.4492C259.836 88.6998 259.003 88.1343 258.07 87.8077L257.19 87.5L258.07 87.1923C259.003 86.8657 259.836 86.3002 260.489 85.5508C261.141 84.8015 261.591 83.894 261.793 82.9168L262.19 81Z\" id=\"Vector_5\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M154.5 134L154.778 135.327C154.92 136.004 155.234 136.632 155.691 137.151C156.148 137.669 156.731 138.061 157.384 138.287L158 138.5L157.384 138.713C156.731 138.939 156.148 139.331 155.691 139.849C155.234 140.368 154.92 140.996 154.778 141.673L154.5 143L154.222 141.673C154.08 140.996 153.766 140.368 153.309 139.849C152.852 139.331 152.269 138.939 151.616 138.713L151 138.5L151.616 138.287C152.269 138.061 152.852 137.669 153.309 137.151C153.766 136.632 154.08 136.004 154.222 135.327L154.5 134Z\" id=\"Vector_6\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M95.6904 101L96.2067 103.507C96.4698 104.784 97.0541 105.971 97.9024 106.951C98.7508 107.931 99.8343 108.671 101.047 109.098L102.19 109.5L101.047 109.902C99.8343 110.329 98.7508 111.069 97.9024 112.049C97.0541 113.029 96.4698 114.216 96.2067 115.493L95.6904 118L95.1741 115.493C94.911 114.216 94.3268 113.029 93.4784 112.049C92.6301 111.069 91.5466 110.329 90.3335 109.902L89.1904 109.5L90.3335 109.098C91.5466 108.671 92.6301 107.931 93.4784 106.951C94.3268 105.971 94.911 104.784 95.1741 103.507L95.6904 101Z\" id=\"Vector_7\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M142.232 28L142.95 31.4281C143.316 33.1758 144.129 34.7989 145.309 36.139C146.489 37.4791 147.996 38.4906 149.684 39.0747L151.274 39.625L149.684 40.1752C147.996 40.7594 146.489 41.7709 145.309 43.111C144.129 44.4511 143.316 46.0742 142.95 47.8219L142.232 51.25L141.514 47.8219C141.148 46.0742 140.335 44.4511 139.155 43.111C137.975 41.7709 136.468 40.7594 134.78 40.1752L133.19 39.625L134.78 39.0747C136.468 38.4906 137.975 37.4791 139.155 36.139C140.335 34.7989 141.148 33.1758 141.514 31.4281L142.232 28Z\" id=\"Vector_8\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n <!-- Content Section -->\r\n <div class=\"batch-content-section\">\r\n <!-- Text Section -->\r\n <div class=\"batch-text-section\">\r\n <p class=\"batch-title\">\r\n Batch processing<span class=\"loading-dots\">\r\n <span class=\"dot\">.</span><span class=\"dot\">.</span><span class=\"dot\">.</span>\r\n </span>\r\n </p>\r\n <p class=\"batch-description\">Running a batch for all {{ getStoreCount() }} stores. This might take a while. You can continue browsing and check back later.</p>\r\n </div>\r\n\r\n <!-- Button Container -->\r\n <div class=\"batch-button-container\">\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onCancel()\">Cancel</button>\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onBackToDashboard()\">Back To Dashboard</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Header -->\r\n <div *ngIf=\"!isBatchRunning()\" class=\"header-card\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Title -->\r\n <div class=\"title-container\">\r\n <input type=\"text\" class=\"header-title\" [(ngModel)]=\"title\" placeholder=\"Untitled\" [disabled]=\"isApproved()\">\r\n <div *ngIf=\"findReplaceData?.status === 'scheduled' && findReplaceData?.scheduleDate\" class=\"scheduled-details\">\r\n <span class=\"scheduled-badge\">Scheduled:</span>\r\n <span class=\"scheduled-date\">{{ formatScheduledDate(findReplaceData!.scheduleDate!) }}</span>\r\n </div>\r\n <div *ngIf=\"findReplaceData?.status === 'approved'\" class=\"completed-details\">\r\n <span class=\"completed-badge\">Completed</span>\r\n </div>\r\n </div>\r\n \r\n <!-- Stepper -->\r\n <div class=\"stepper-container\">\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnReview()\" \r\n (click)=\"goToStep1()\">\r\n <div class=\"stepper-circle active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">1</div>\r\n <p class=\"stepper-text active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">Prepare template</p>\r\n </div>\r\n <div class=\"stepper-line\" [class.active]=\"isStep2Active()\"></div>\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnPrepare()\" \r\n (click)=\"goToStep2()\">\r\n <div class=\"stepper-circle\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">2</div>\r\n <p class=\"stepper-text\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">Review and Approve</p>\r\n </div>\r\n </div>\r\n \r\n <!-- Action Buttons -->\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <button class=\"btn-cancel\" type=\"button\" (click)=\"onBackToDashboard()\">Cancel</button>\r\n <button class=\"btn-save-draft\" type=\"button\" (click)=\"onSaveDraft()\" [disabled]=\"loading || isApproved()\">Save As Draft</button>\r\n <!-- Ellipsis Menu -->\r\n <div class=\"dropdown ms-2\" *ngIf=\"hasAnyAction()\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngTemplateOutlet=\"verticalDots\"></ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\">\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onReschedule()\">Reschedule</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Main Content -->\r\n <router-outlet *ngIf=\"!isBatchRunning()\"></router-outlet>\r\n\r\n<ng-template #verticalDots>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\">\r\n <path\r\n d=\"M1 9C1 9.55228 1.44771 10 2 10C2.55228 10 3 9.55228 3 9C3 8.44772 2.55228 8 2 8C1.44771 8 1 8.44772 1 9Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M0.999999 16C0.999999 16.5523 1.44771 17 2 17C2.55228 17 3 16.5523 3 16C3 15.4477 2.55228 15 2 15C1.44771 15 0.999999 15.4477 0.999999 16Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 2C1 2.55228 1.44772 3 2 3C2.55228 3 3 2.55228 3 2C3 1.44772 2.55228 1 2 1C1.44772 1 1 1.44772 1 2Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n</ng-template>", styles: [".header-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:24px;box-shadow:0 1px 3px #0000001a}.title-container{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.header-title{font-size:18px;font-weight:600;color:#1d2939;margin:0;border:none;outline:none;background:transparent;flex:1;min-width:200px;width:50px;padding:0}.header-title:focus{outline:none;box-shadow:none;border:none}.header-title::placeholder{color:#98a2b3}.header-title:disabled{opacity:.6;cursor:not-allowed}.scheduled-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.scheduled-badge{display:inline-block;padding:4px 12px;background-color:#f4ebff;color:#7c3aed;border-radius:16px;font-size:14px;font-weight:500}.scheduled-date{font-size:14px;font-weight:400;color:#1d2939}.completed-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.completed-badge{display:inline-block;padding:4px 12px;background-color:#d1fadf;color:#12b76a;border-radius:16px;font-size:14px;font-weight:500}.stepper-container{display:flex;align-items:center;gap:8px;flex:1;justify-content:center}.stepper-step{display:flex;align-items:center;gap:8px}.stepper-circle{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.stepper-circle.active{background-color:#1d2939}.stepper-circle.inactive{background-color:#98a2b3}.stepper-text{font-size:14px;font-weight:600;margin:0}.stepper-text.active{color:#1d2939}.stepper-text.inactive{color:#98a2b3}.stepper-step.clickable{cursor:pointer}.stepper-circle.clickable-indicator{background-color:#009bf3!important}.stepper-text.clickable-indicator{color:#009bf3!important;text-decoration:underline}.stepper-line{width:50px;height:1.5px;background-color:#98a2b3}.stepper-line.active{background-color:#1d2939}.btn-cancel{padding:10px 16px;font-size:14px;font-weight:600;color:#667085;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease-in-out}.btn-cancel:hover{background:#f9fafb;color:#344054}.btn-cancel:active{background:#f2f4f7}.btn-cancel:focus{outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft{padding:10px 16px;font-size:14px;font-weight:600;color:#344054;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}.btn-save-draft:hover:not(:disabled){background:#f9fafb;border-color:#98a2b3}.btn-save-draft:active:not(:disabled){background:#f2f4f7}.btn-save-draft:focus:not(:disabled){outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft:disabled{opacity:.6;cursor:not-allowed;background:#f2f4f7;color:#98a2b3;border-color:#d0d5dd}.batch-processing-container{display:flex;flex-direction:column;align-items:center;padding:176px 16px;width:100%;min-height:75vh;background-color:#fff}.batch-illustration{width:331px;height:179px;position:relative;margin-bottom:28px}.batch-illustration svg{display:block;width:100%;height:100%}.batch-content-section{display:flex;flex-direction:column;gap:24px;align-items:center;width:554px;max-width:100%}.batch-text-section{display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.batch-title{font-size:20px;font-weight:600;line-height:30px;color:#1d2939;margin:0}.batch-description{font-size:14px;font-weight:500;line-height:20px;color:#1d2939;margin:0;max-width:554px}.batch-button-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.btn-batch-custom{background-color:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;transition:all .2s;white-space:nowrap;cursor:pointer}.btn-batch-custom:hover{background-color:#f9fafb;border-color:#b8bdc5;color:#344054}.btn-batch-custom:focus{outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 .2rem #00a3ff40}.loading-dots{display:inline-block}.loading-dots .dot{display:inline-block;animation:dot-bounce 1.4s infinite ease-in-out;animation-fill-mode:both}.loading-dots .dot:nth-child(1){animation-delay:-.32s}.loading-dots .dot:nth-child(2){animation-delay:-.16s}.loading-dots .dot:nth-child(3){animation-delay:0s}@keyframes dot-bounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (max-width: 768px){.batch-processing-container{padding:80px 16px}.batch-content-section{width:100%}.batch-description{max-width:100%}.batch-button-container{flex-direction:column;width:100%}.btn-batch-custom{width:100%}}::ng-deep .cancel-confirmation-modal .modal-dialog{max-width:480px}::ng-deep .cancel-confirmation-modal .modal-content{border:none;border-radius:12px;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;padding:0}::ng-deep .cancel-confirmation-modal .modal-header{border-bottom:none;padding:24px 16px 0}::ng-deep .cancel-confirmation-modal .modal-body{padding:0 16px}::ng-deep .cancel-confirmation-modal .modal-footer{border-top:none;padding:0 16px 24px}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
563
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FindReplaceLayoutComponent, isStandalone: true, selector: "lib-find-replace-layout", ngImport: i0, template: " <!-- Batch Running UI -->\r\n <div *ngIf=\"isBatchRunning()\" class=\"batch-processing-container\">\r\n <!-- SVG Illustration -->\r\n <div class=\"batch-illustration\">\r\n <svg fill=\"none\" preserveAspectRatio=\"none\" viewBox=\"0 0 331 183\">\r\n <g id=\"Group 2891\">\r\n <path d=\"M247.99 46C268.149 46 284.49 62.3416 284.49 82.5C284.49 91.0788 290.281 101 298.859 101H312C322.493 101 331 109.507 331 120C331 130.493 322.493 139 312 139H272.962C268.634 139 265.721 144.171 265.721 148.5C265.721 158.165 257.886 166 248.221 166H119.221C109.556 166 101.721 158.165 101.721 148.5C101.721 144.171 98.8077 139 94.479 139H19C8.50659 139 0 130.493 0 120C0 109.507 8.50659 101 19 101H65.121C73.6998 101 79.4902 91.0788 79.4902 82.5C79.4902 62.3416 95.8319 46 115.99 46H247.99Z\" fill=\"#EAECF0\" id=\"Union\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2270\" rx=\"4\" width=\"64\" x=\"176.19\" y=\"76\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2269\" rx=\"4\" width=\"64\" x=\"119.19\" y=\"16\" />\r\n <path d=\"M225.605 121.414C226.386 120.633 226.386 119.367 225.605 118.586L212.877 105.858C212.096 105.077 210.829 105.077 210.048 105.858C209.267 106.639 209.267 107.905 210.048 108.686L221.362 120L210.048 131.314C209.267 132.095 209.267 133.361 210.048 134.142C210.829 134.923 212.096 134.923 212.877 134.142L225.605 121.414ZM182.19 49.5C182.19 50.6046 183.086 51.5 184.19 51.5C185.295 51.5 186.19 50.6046 186.19 49.5H184.19H182.19ZM124.19 15V17H178.19V15V13H124.19V15ZM224.19 120V118H124.19V120V122H224.19V120ZM118.19 114H120.19V21H118.19H116.19V114H118.19ZM184.19 21H182.19V49.5H184.19H186.19V21H184.19ZM124.19 120V118C121.981 118 120.19 116.209 120.19 114H118.19H116.19C116.19 118.418 119.772 122 124.19 122V120ZM178.19 15V17C180.4 17 182.19 18.7909 182.19 21H184.19H186.19C186.19 16.5817 182.609 13 178.19 13V15ZM124.19 15V13C119.772 13 116.19 16.5817 116.19 21H118.19H120.19C120.19 18.7909 121.981 17 124.19 17V15Z\" fill=\"#00A3FF\" id=\"Rectangle 2254\" />\r\n <path d=\"M132.776 74.5858C131.995 75.3668 131.995 76.6332 132.776 77.4142L145.504 90.1421C146.285 90.9232 147.552 90.9232 148.333 90.1421C149.114 89.3611 149.114 88.0947 148.333 87.3137L137.019 76L148.333 64.6863C149.114 63.9052 149.114 62.6389 148.333 61.8579C147.552 61.0768 146.285 61.0768 145.504 61.8579L132.776 74.5858ZM176.19 146.5C176.19 145.395 175.295 144.5 174.19 144.5C173.086 144.5 172.19 145.395 172.19 146.5L174.19 146.5L176.19 146.5ZM234.19 181L234.19 179L180.19 179L180.19 181L180.19 183L234.19 183L234.19 181ZM134.19 76L134.19 78L234.19 78L234.19 76L234.19 74L134.19 74L134.19 76ZM240.19 82L238.19 82L238.19 175L240.19 175L242.19 175L242.19 82L240.19 82ZM174.19 175L176.19 175L176.19 146.5L174.19 146.5L172.19 146.5L172.19 175L174.19 175ZM234.19 76L234.19 78C236.4 78 238.19 79.7909 238.19 82L240.19 82L242.19 82C242.19 77.5817 238.609 74 234.19 74L234.19 76ZM180.19 181L180.19 179C177.981 179 176.19 177.209 176.19 175L174.19 175L172.19 175C172.19 179.418 175.772 183 180.19 183L180.19 181ZM234.19 181L234.19 183C238.609 183 242.19 179.418 242.19 175L240.19 175L238.19 175C238.19 177.209 236.4 179 234.19 179L234.19 181Z\" fill=\"#00A3FF\" id=\"Rectangle 2256\" />\r\n <path d=\"M140.232 30L140.95 33.4281C141.316 35.1758 142.129 36.7989 143.309 38.139C144.489 39.4791 145.996 40.4906 147.684 41.0747L149.274 41.625L147.684 42.1752C145.996 42.7594 144.489 43.7709 143.309 45.111C142.129 46.4511 141.316 48.0742 140.95 49.8219L140.232 53.25L139.514 49.8219C139.148 48.0742 138.335 46.4511 137.155 45.111C135.975 43.7709 134.468 42.7594 132.78 42.1752L131.19 41.625L132.78 41.0747C134.468 40.4906 135.975 39.4791 137.155 38.139C138.335 36.7989 139.148 35.1758 139.514 33.4281L140.232 30Z\" id=\"Vector\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M217.232 143L217.95 146.428C218.316 148.176 219.129 149.799 220.309 151.139C221.489 152.479 222.996 153.491 224.684 154.075L226.274 154.625L224.684 155.175C222.996 155.759 221.489 156.771 220.309 158.111C219.129 159.451 218.316 161.074 217.95 162.822L217.232 166.25L216.514 162.822C216.148 161.074 215.335 159.451 214.155 158.111C212.975 156.771 211.468 155.759 209.78 155.175L208.19 154.625L209.78 154.075C211.468 153.491 212.975 152.479 214.155 151.139C215.335 149.799 216.148 148.176 216.514 146.428L217.232 143Z\" id=\"Vector_2\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M192.19 148L192.588 149.917C192.79 150.894 193.239 151.802 193.892 152.551C194.545 153.3 195.378 153.866 196.311 154.192L197.19 154.5L196.311 154.808C195.378 155.134 194.545 155.7 193.892 156.449C193.239 157.198 192.79 158.106 192.588 159.083L192.19 161L191.793 159.083C191.591 158.106 191.141 157.198 190.489 156.449C189.836 155.7 189.003 155.134 188.07 154.808L187.19 154.5L188.07 154.192C189.003 153.866 189.836 153.3 190.489 152.551C191.141 151.802 191.591 150.894 191.793 149.917L192.19 148Z\" id=\"Vector_3\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M107.19 2L107.588 3.91678C107.79 4.894 108.239 5.80152 108.892 6.55084C109.545 7.30016 110.378 7.86571 111.311 8.19233L112.19 8.5L111.311 8.80767C110.378 9.13429 109.545 9.69984 108.892 10.4492C108.239 11.1985 107.79 12.106 107.588 13.0832L107.19 15L106.793 13.0832C106.591 12.106 106.141 11.1985 105.489 10.4492C104.836 9.69984 104.003 9.13429 103.07 8.80767L102.19 8.5L103.07 8.19233C104.003 7.86571 104.836 7.30016 105.489 6.55084C106.141 5.80152 106.591 4.894 106.793 3.91678L107.19 2Z\" id=\"Vector_4\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M262.19 81L262.588 82.9168C262.79 83.894 263.239 84.8015 263.892 85.5508C264.545 86.3002 265.378 86.8657 266.311 87.1923L267.19 87.5L266.311 87.8077C265.378 88.1343 264.545 88.6998 263.892 89.4492C263.239 90.1985 262.79 91.106 262.588 92.0832L262.19 94L261.793 92.0832C261.591 91.106 261.141 90.1985 260.489 89.4492C259.836 88.6998 259.003 88.1343 258.07 87.8077L257.19 87.5L258.07 87.1923C259.003 86.8657 259.836 86.3002 260.489 85.5508C261.141 84.8015 261.591 83.894 261.793 82.9168L262.19 81Z\" id=\"Vector_5\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M154.5 134L154.778 135.327C154.92 136.004 155.234 136.632 155.691 137.151C156.148 137.669 156.731 138.061 157.384 138.287L158 138.5L157.384 138.713C156.731 138.939 156.148 139.331 155.691 139.849C155.234 140.368 154.92 140.996 154.778 141.673L154.5 143L154.222 141.673C154.08 140.996 153.766 140.368 153.309 139.849C152.852 139.331 152.269 138.939 151.616 138.713L151 138.5L151.616 138.287C152.269 138.061 152.852 137.669 153.309 137.151C153.766 136.632 154.08 136.004 154.222 135.327L154.5 134Z\" id=\"Vector_6\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M95.6904 101L96.2067 103.507C96.4698 104.784 97.0541 105.971 97.9024 106.951C98.7508 107.931 99.8343 108.671 101.047 109.098L102.19 109.5L101.047 109.902C99.8343 110.329 98.7508 111.069 97.9024 112.049C97.0541 113.029 96.4698 114.216 96.2067 115.493L95.6904 118L95.1741 115.493C94.911 114.216 94.3268 113.029 93.4784 112.049C92.6301 111.069 91.5466 110.329 90.3335 109.902L89.1904 109.5L90.3335 109.098C91.5466 108.671 92.6301 107.931 93.4784 106.951C94.3268 105.971 94.911 104.784 95.1741 103.507L95.6904 101Z\" id=\"Vector_7\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M142.232 28L142.95 31.4281C143.316 33.1758 144.129 34.7989 145.309 36.139C146.489 37.4791 147.996 38.4906 149.684 39.0747L151.274 39.625L149.684 40.1752C147.996 40.7594 146.489 41.7709 145.309 43.111C144.129 44.4511 143.316 46.0742 142.95 47.8219L142.232 51.25L141.514 47.8219C141.148 46.0742 140.335 44.4511 139.155 43.111C137.975 41.7709 136.468 40.7594 134.78 40.1752L133.19 39.625L134.78 39.0747C136.468 38.4906 137.975 37.4791 139.155 36.139C140.335 34.7989 141.148 33.1758 141.514 31.4281L142.232 28Z\" id=\"Vector_8\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n <!-- Content Section -->\r\n <div class=\"batch-content-section\">\r\n <!-- Text Section -->\r\n <div class=\"batch-text-section\">\r\n <p class=\"batch-title\">\r\n Batch processing<span class=\"loading-dots\">\r\n <span class=\"dot\">.</span><span class=\"dot\">.</span><span class=\"dot\">.</span>\r\n </span>\r\n </p>\r\n <p class=\"batch-description\">Running a batch for all {{ getStoreCount() }} stores. This might take a while. You can continue browsing and check back later.</p>\r\n </div>\r\n\r\n <!-- Button Container -->\r\n <div class=\"batch-button-container\">\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onCancel()\">Cancel</button>\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onBackToDashboard()\">Back To Dashboard</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Header -->\r\n <div *ngIf=\"!isBatchRunning()\" class=\"header-card\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Title -->\r\n <div class=\"title-container\">\r\n <input type=\"text\" class=\"header-title\" [(ngModel)]=\"title\" placeholder=\"Untitled\" [disabled]=\"isApproved()\">\r\n <div *ngIf=\"findReplaceData?.status === 'scheduled' && findReplaceData?.scheduleDate\" class=\"scheduled-details\">\r\n <span class=\"scheduled-badge\">Scheduled:</span>\r\n <span class=\"scheduled-date\">{{ formatScheduledDate(findReplaceData!.scheduleDate!) }}</span>\r\n </div>\r\n <div *ngIf=\"findReplaceData?.status === 'approved'\" class=\"completed-details\">\r\n <span class=\"completed-badge\">Completed</span>\r\n </div>\r\n </div>\r\n \r\n <!-- Stepper -->\r\n <div class=\"stepper-container\">\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnReview()\" \r\n (click)=\"goToStep1()\">\r\n <div class=\"stepper-circle active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">1</div>\r\n <p class=\"stepper-text active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">Prepare template</p>\r\n </div>\r\n <div class=\"stepper-line\" [class.active]=\"isStep2Active()\"></div>\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnPrepare()\" \r\n (click)=\"goToStep2()\">\r\n <div class=\"stepper-circle\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">2</div>\r\n <p class=\"stepper-text\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">Review and Approve</p>\r\n </div>\r\n </div>\r\n \r\n <!-- Action Buttons -->\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <button class=\"btn-cancel\" type=\"button\" (click)=\"onBackToDashboard()\">Cancel</button>\r\n <button class=\"btn-save-draft\" type=\"button\" (click)=\"onSaveDraft()\" [disabled]=\"loading || isApproved()\">Save As Draft</button>\r\n <!-- Ellipsis Menu -->\r\n <div class=\"dropdown ms-2\" *ngIf=\"hasAnyAction()\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngTemplateOutlet=\"verticalDots\"></ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\">\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onReschedule()\">Reschedule</a>\r\n </li>\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onEdit()\">Edit</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Main Content -->\r\n <router-outlet *ngIf=\"!isBatchRunning()\"></router-outlet>\r\n\r\n<ng-template #verticalDots>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\">\r\n <path\r\n d=\"M1 9C1 9.55228 1.44771 10 2 10C2.55228 10 3 9.55228 3 9C3 8.44772 2.55228 8 2 8C1.44771 8 1 8.44772 1 9Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M0.999999 16C0.999999 16.5523 1.44771 17 2 17C2.55228 17 3 16.5523 3 16C3 15.4477 2.55228 15 2 15C1.44771 15 0.999999 15.4477 0.999999 16Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 2C1 2.55228 1.44772 3 2 3C2.55228 3 3 2.55228 3 2C3 1.44772 2.55228 1 2 1C1.44772 1 1 1.44772 1 2Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n</ng-template>", styles: [".header-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:24px;box-shadow:0 1px 3px #0000001a}.title-container{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.header-title{font-size:18px;font-weight:600;color:#1d2939;margin:0;border:none;outline:none;background:transparent;flex:1;min-width:200px;width:50px;padding:0}.header-title:focus{outline:none;box-shadow:none;border:none}.header-title::placeholder{color:#98a2b3}.header-title:disabled{opacity:.6;cursor:not-allowed}.scheduled-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.scheduled-badge{display:inline-block;padding:4px 12px;background-color:#f4ebff;color:#7c3aed;border-radius:16px;font-size:14px;font-weight:500}.scheduled-date{font-size:14px;font-weight:400;color:#1d2939}.completed-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.completed-badge{display:inline-block;padding:4px 12px;background-color:#d1fadf;color:#12b76a;border-radius:16px;font-size:14px;font-weight:500}.stepper-container{display:flex;align-items:center;gap:8px;flex:1;justify-content:center}.stepper-step{display:flex;align-items:center;gap:8px}.stepper-circle{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.stepper-circle.active{background-color:#1d2939}.stepper-circle.inactive{background-color:#98a2b3}.stepper-text{font-size:14px;font-weight:600;margin:0}.stepper-text.active{color:#1d2939}.stepper-text.inactive{color:#98a2b3}.stepper-step.clickable{cursor:pointer}.stepper-circle.clickable-indicator{background-color:#009bf3!important}.stepper-text.clickable-indicator{color:#009bf3!important;text-decoration:underline}.stepper-line{width:50px;height:1.5px;background-color:#98a2b3}.stepper-line.active{background-color:#1d2939}.btn-cancel{padding:10px 16px;font-size:14px;font-weight:600;color:#667085;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease-in-out}.btn-cancel:hover{background:#f9fafb;color:#344054}.btn-cancel:active{background:#f2f4f7}.btn-cancel:focus{outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft{padding:10px 16px;font-size:14px;font-weight:600;color:#344054;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}.btn-save-draft:hover:not(:disabled){background:#f9fafb;border-color:#98a2b3}.btn-save-draft:active:not(:disabled){background:#f2f4f7}.btn-save-draft:focus:not(:disabled){outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft:disabled{opacity:.6;cursor:not-allowed;background:#f2f4f7;color:#98a2b3;border-color:#d0d5dd}.batch-processing-container{display:flex;flex-direction:column;align-items:center;padding:176px 16px;width:100%;min-height:75vh;background-color:#fff}.batch-illustration{width:331px;height:179px;position:relative;margin-bottom:28px}.batch-illustration svg{display:block;width:100%;height:100%}.batch-content-section{display:flex;flex-direction:column;gap:24px;align-items:center;width:554px;max-width:100%}.batch-text-section{display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.batch-title{font-size:20px;font-weight:600;line-height:30px;color:#1d2939;margin:0}.batch-description{font-size:14px;font-weight:500;line-height:20px;color:#1d2939;margin:0;max-width:554px}.batch-button-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.btn-batch-custom{background-color:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;transition:all .2s;white-space:nowrap;cursor:pointer}.btn-batch-custom:hover{background-color:#f9fafb;border-color:#b8bdc5;color:#344054}.btn-batch-custom:focus{outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 .2rem #00a3ff40}.loading-dots{display:inline-block}.loading-dots .dot{display:inline-block;animation:dot-bounce 1.4s infinite ease-in-out;animation-fill-mode:both}.loading-dots .dot:nth-child(1){animation-delay:-.32s}.loading-dots .dot:nth-child(2){animation-delay:-.16s}.loading-dots .dot:nth-child(3){animation-delay:0s}@keyframes dot-bounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (max-width: 768px){.batch-processing-container{padding:80px 16px}.batch-content-section{width:100%}.batch-description{max-width:100%}.batch-button-container{flex-direction:column;width:100%}.btn-batch-custom{width:100%}}::ng-deep .cancel-confirmation-modal .modal-dialog{max-width:480px}::ng-deep .cancel-confirmation-modal .modal-content{border:none;border-radius:12px;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;padding:0}::ng-deep .cancel-confirmation-modal .modal-header{border-bottom:none;padding:24px 16px 0}::ng-deep .cancel-confirmation-modal .modal-body{padding:0 16px}::ng-deep .cancel-confirmation-modal .modal-footer{border-top:none;padding:0 16px 24px}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
560
564
|
}
|
|
561
565
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FindReplaceLayoutComponent, decorators: [{
|
|
562
566
|
type: Component,
|
|
563
|
-
args: [{ selector: 'lib-find-replace-layout', standalone: true, imports: [RouterOutlet, FormsModule, NgIf, CommonModule], template: " <!-- Batch Running UI -->\r\n <div *ngIf=\"isBatchRunning()\" class=\"batch-processing-container\">\r\n <!-- SVG Illustration -->\r\n <div class=\"batch-illustration\">\r\n <svg fill=\"none\" preserveAspectRatio=\"none\" viewBox=\"0 0 331 183\">\r\n <g id=\"Group 2891\">\r\n <path d=\"M247.99 46C268.149 46 284.49 62.3416 284.49 82.5C284.49 91.0788 290.281 101 298.859 101H312C322.493 101 331 109.507 331 120C331 130.493 322.493 139 312 139H272.962C268.634 139 265.721 144.171 265.721 148.5C265.721 158.165 257.886 166 248.221 166H119.221C109.556 166 101.721 158.165 101.721 148.5C101.721 144.171 98.8077 139 94.479 139H19C8.50659 139 0 130.493 0 120C0 109.507 8.50659 101 19 101H65.121C73.6998 101 79.4902 91.0788 79.4902 82.5C79.4902 62.3416 95.8319 46 115.99 46H247.99Z\" fill=\"#EAECF0\" id=\"Union\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2270\" rx=\"4\" width=\"64\" x=\"176.19\" y=\"76\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2269\" rx=\"4\" width=\"64\" x=\"119.19\" y=\"16\" />\r\n <path d=\"M225.605 121.414C226.386 120.633 226.386 119.367 225.605 118.586L212.877 105.858C212.096 105.077 210.829 105.077 210.048 105.858C209.267 106.639 209.267 107.905 210.048 108.686L221.362 120L210.048 131.314C209.267 132.095 209.267 133.361 210.048 134.142C210.829 134.923 212.096 134.923 212.877 134.142L225.605 121.414ZM182.19 49.5C182.19 50.6046 183.086 51.5 184.19 51.5C185.295 51.5 186.19 50.6046 186.19 49.5H184.19H182.19ZM124.19 15V17H178.19V15V13H124.19V15ZM224.19 120V118H124.19V120V122H224.19V120ZM118.19 114H120.19V21H118.19H116.19V114H118.19ZM184.19 21H182.19V49.5H184.19H186.19V21H184.19ZM124.19 120V118C121.981 118 120.19 116.209 120.19 114H118.19H116.19C116.19 118.418 119.772 122 124.19 122V120ZM178.19 15V17C180.4 17 182.19 18.7909 182.19 21H184.19H186.19C186.19 16.5817 182.609 13 178.19 13V15ZM124.19 15V13C119.772 13 116.19 16.5817 116.19 21H118.19H120.19C120.19 18.7909 121.981 17 124.19 17V15Z\" fill=\"#00A3FF\" id=\"Rectangle 2254\" />\r\n <path d=\"M132.776 74.5858C131.995 75.3668 131.995 76.6332 132.776 77.4142L145.504 90.1421C146.285 90.9232 147.552 90.9232 148.333 90.1421C149.114 89.3611 149.114 88.0947 148.333 87.3137L137.019 76L148.333 64.6863C149.114 63.9052 149.114 62.6389 148.333 61.8579C147.552 61.0768 146.285 61.0768 145.504 61.8579L132.776 74.5858ZM176.19 146.5C176.19 145.395 175.295 144.5 174.19 144.5C173.086 144.5 172.19 145.395 172.19 146.5L174.19 146.5L176.19 146.5ZM234.19 181L234.19 179L180.19 179L180.19 181L180.19 183L234.19 183L234.19 181ZM134.19 76L134.19 78L234.19 78L234.19 76L234.19 74L134.19 74L134.19 76ZM240.19 82L238.19 82L238.19 175L240.19 175L242.19 175L242.19 82L240.19 82ZM174.19 175L176.19 175L176.19 146.5L174.19 146.5L172.19 146.5L172.19 175L174.19 175ZM234.19 76L234.19 78C236.4 78 238.19 79.7909 238.19 82L240.19 82L242.19 82C242.19 77.5817 238.609 74 234.19 74L234.19 76ZM180.19 181L180.19 179C177.981 179 176.19 177.209 176.19 175L174.19 175L172.19 175C172.19 179.418 175.772 183 180.19 183L180.19 181ZM234.19 181L234.19 183C238.609 183 242.19 179.418 242.19 175L240.19 175L238.19 175C238.19 177.209 236.4 179 234.19 179L234.19 181Z\" fill=\"#00A3FF\" id=\"Rectangle 2256\" />\r\n <path d=\"M140.232 30L140.95 33.4281C141.316 35.1758 142.129 36.7989 143.309 38.139C144.489 39.4791 145.996 40.4906 147.684 41.0747L149.274 41.625L147.684 42.1752C145.996 42.7594 144.489 43.7709 143.309 45.111C142.129 46.4511 141.316 48.0742 140.95 49.8219L140.232 53.25L139.514 49.8219C139.148 48.0742 138.335 46.4511 137.155 45.111C135.975 43.7709 134.468 42.7594 132.78 42.1752L131.19 41.625L132.78 41.0747C134.468 40.4906 135.975 39.4791 137.155 38.139C138.335 36.7989 139.148 35.1758 139.514 33.4281L140.232 30Z\" id=\"Vector\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M217.232 143L217.95 146.428C218.316 148.176 219.129 149.799 220.309 151.139C221.489 152.479 222.996 153.491 224.684 154.075L226.274 154.625L224.684 155.175C222.996 155.759 221.489 156.771 220.309 158.111C219.129 159.451 218.316 161.074 217.95 162.822L217.232 166.25L216.514 162.822C216.148 161.074 215.335 159.451 214.155 158.111C212.975 156.771 211.468 155.759 209.78 155.175L208.19 154.625L209.78 154.075C211.468 153.491 212.975 152.479 214.155 151.139C215.335 149.799 216.148 148.176 216.514 146.428L217.232 143Z\" id=\"Vector_2\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M192.19 148L192.588 149.917C192.79 150.894 193.239 151.802 193.892 152.551C194.545 153.3 195.378 153.866 196.311 154.192L197.19 154.5L196.311 154.808C195.378 155.134 194.545 155.7 193.892 156.449C193.239 157.198 192.79 158.106 192.588 159.083L192.19 161L191.793 159.083C191.591 158.106 191.141 157.198 190.489 156.449C189.836 155.7 189.003 155.134 188.07 154.808L187.19 154.5L188.07 154.192C189.003 153.866 189.836 153.3 190.489 152.551C191.141 151.802 191.591 150.894 191.793 149.917L192.19 148Z\" id=\"Vector_3\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M107.19 2L107.588 3.91678C107.79 4.894 108.239 5.80152 108.892 6.55084C109.545 7.30016 110.378 7.86571 111.311 8.19233L112.19 8.5L111.311 8.80767C110.378 9.13429 109.545 9.69984 108.892 10.4492C108.239 11.1985 107.79 12.106 107.588 13.0832L107.19 15L106.793 13.0832C106.591 12.106 106.141 11.1985 105.489 10.4492C104.836 9.69984 104.003 9.13429 103.07 8.80767L102.19 8.5L103.07 8.19233C104.003 7.86571 104.836 7.30016 105.489 6.55084C106.141 5.80152 106.591 4.894 106.793 3.91678L107.19 2Z\" id=\"Vector_4\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M262.19 81L262.588 82.9168C262.79 83.894 263.239 84.8015 263.892 85.5508C264.545 86.3002 265.378 86.8657 266.311 87.1923L267.19 87.5L266.311 87.8077C265.378 88.1343 264.545 88.6998 263.892 89.4492C263.239 90.1985 262.79 91.106 262.588 92.0832L262.19 94L261.793 92.0832C261.591 91.106 261.141 90.1985 260.489 89.4492C259.836 88.6998 259.003 88.1343 258.07 87.8077L257.19 87.5L258.07 87.1923C259.003 86.8657 259.836 86.3002 260.489 85.5508C261.141 84.8015 261.591 83.894 261.793 82.9168L262.19 81Z\" id=\"Vector_5\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M154.5 134L154.778 135.327C154.92 136.004 155.234 136.632 155.691 137.151C156.148 137.669 156.731 138.061 157.384 138.287L158 138.5L157.384 138.713C156.731 138.939 156.148 139.331 155.691 139.849C155.234 140.368 154.92 140.996 154.778 141.673L154.5 143L154.222 141.673C154.08 140.996 153.766 140.368 153.309 139.849C152.852 139.331 152.269 138.939 151.616 138.713L151 138.5L151.616 138.287C152.269 138.061 152.852 137.669 153.309 137.151C153.766 136.632 154.08 136.004 154.222 135.327L154.5 134Z\" id=\"Vector_6\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M95.6904 101L96.2067 103.507C96.4698 104.784 97.0541 105.971 97.9024 106.951C98.7508 107.931 99.8343 108.671 101.047 109.098L102.19 109.5L101.047 109.902C99.8343 110.329 98.7508 111.069 97.9024 112.049C97.0541 113.029 96.4698 114.216 96.2067 115.493L95.6904 118L95.1741 115.493C94.911 114.216 94.3268 113.029 93.4784 112.049C92.6301 111.069 91.5466 110.329 90.3335 109.902L89.1904 109.5L90.3335 109.098C91.5466 108.671 92.6301 107.931 93.4784 106.951C94.3268 105.971 94.911 104.784 95.1741 103.507L95.6904 101Z\" id=\"Vector_7\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M142.232 28L142.95 31.4281C143.316 33.1758 144.129 34.7989 145.309 36.139C146.489 37.4791 147.996 38.4906 149.684 39.0747L151.274 39.625L149.684 40.1752C147.996 40.7594 146.489 41.7709 145.309 43.111C144.129 44.4511 143.316 46.0742 142.95 47.8219L142.232 51.25L141.514 47.8219C141.148 46.0742 140.335 44.4511 139.155 43.111C137.975 41.7709 136.468 40.7594 134.78 40.1752L133.19 39.625L134.78 39.0747C136.468 38.4906 137.975 37.4791 139.155 36.139C140.335 34.7989 141.148 33.1758 141.514 31.4281L142.232 28Z\" id=\"Vector_8\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n <!-- Content Section -->\r\n <div class=\"batch-content-section\">\r\n <!-- Text Section -->\r\n <div class=\"batch-text-section\">\r\n <p class=\"batch-title\">\r\n Batch processing<span class=\"loading-dots\">\r\n <span class=\"dot\">.</span><span class=\"dot\">.</span><span class=\"dot\">.</span>\r\n </span>\r\n </p>\r\n <p class=\"batch-description\">Running a batch for all {{ getStoreCount() }} stores. This might take a while. You can continue browsing and check back later.</p>\r\n </div>\r\n\r\n <!-- Button Container -->\r\n <div class=\"batch-button-container\">\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onCancel()\">Cancel</button>\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onBackToDashboard()\">Back To Dashboard</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Header -->\r\n <div *ngIf=\"!isBatchRunning()\" class=\"header-card\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Title -->\r\n <div class=\"title-container\">\r\n <input type=\"text\" class=\"header-title\" [(ngModel)]=\"title\" placeholder=\"Untitled\" [disabled]=\"isApproved()\">\r\n <div *ngIf=\"findReplaceData?.status === 'scheduled' && findReplaceData?.scheduleDate\" class=\"scheduled-details\">\r\n <span class=\"scheduled-badge\">Scheduled:</span>\r\n <span class=\"scheduled-date\">{{ formatScheduledDate(findReplaceData!.scheduleDate!) }}</span>\r\n </div>\r\n <div *ngIf=\"findReplaceData?.status === 'approved'\" class=\"completed-details\">\r\n <span class=\"completed-badge\">Completed</span>\r\n </div>\r\n </div>\r\n \r\n <!-- Stepper -->\r\n <div class=\"stepper-container\">\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnReview()\" \r\n (click)=\"goToStep1()\">\r\n <div class=\"stepper-circle active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">1</div>\r\n <p class=\"stepper-text active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">Prepare template</p>\r\n </div>\r\n <div class=\"stepper-line\" [class.active]=\"isStep2Active()\"></div>\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnPrepare()\" \r\n (click)=\"goToStep2()\">\r\n <div class=\"stepper-circle\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">2</div>\r\n <p class=\"stepper-text\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">Review and Approve</p>\r\n </div>\r\n </div>\r\n \r\n <!-- Action Buttons -->\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <button class=\"btn-cancel\" type=\"button\" (click)=\"onBackToDashboard()\">Cancel</button>\r\n <button class=\"btn-save-draft\" type=\"button\" (click)=\"onSaveDraft()\" [disabled]=\"loading || isApproved()\">Save As Draft</button>\r\n <!-- Ellipsis Menu -->\r\n <div class=\"dropdown ms-2\" *ngIf=\"hasAnyAction()\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngTemplateOutlet=\"verticalDots\"></ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\">\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onReschedule()\">Reschedule</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Main Content -->\r\n <router-outlet *ngIf=\"!isBatchRunning()\"></router-outlet>\r\n\r\n<ng-template #verticalDots>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\">\r\n <path\r\n d=\"M1 9C1 9.55228 1.44771 10 2 10C2.55228 10 3 9.55228 3 9C3 8.44772 2.55228 8 2 8C1.44771 8 1 8.44772 1 9Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M0.999999 16C0.999999 16.5523 1.44771 17 2 17C2.55228 17 3 16.5523 3 16C3 15.4477 2.55228 15 2 15C1.44771 15 0.999999 15.4477 0.999999 16Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 2C1 2.55228 1.44772 3 2 3C2.55228 3 3 2.55228 3 2C3 1.44772 2.55228 1 2 1C1.44772 1 1 1.44772 1 2Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n</ng-template>", styles: [".header-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:24px;box-shadow:0 1px 3px #0000001a}.title-container{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.header-title{font-size:18px;font-weight:600;color:#1d2939;margin:0;border:none;outline:none;background:transparent;flex:1;min-width:200px;width:50px;padding:0}.header-title:focus{outline:none;box-shadow:none;border:none}.header-title::placeholder{color:#98a2b3}.header-title:disabled{opacity:.6;cursor:not-allowed}.scheduled-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.scheduled-badge{display:inline-block;padding:4px 12px;background-color:#f4ebff;color:#7c3aed;border-radius:16px;font-size:14px;font-weight:500}.scheduled-date{font-size:14px;font-weight:400;color:#1d2939}.completed-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.completed-badge{display:inline-block;padding:4px 12px;background-color:#d1fadf;color:#12b76a;border-radius:16px;font-size:14px;font-weight:500}.stepper-container{display:flex;align-items:center;gap:8px;flex:1;justify-content:center}.stepper-step{display:flex;align-items:center;gap:8px}.stepper-circle{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.stepper-circle.active{background-color:#1d2939}.stepper-circle.inactive{background-color:#98a2b3}.stepper-text{font-size:14px;font-weight:600;margin:0}.stepper-text.active{color:#1d2939}.stepper-text.inactive{color:#98a2b3}.stepper-step.clickable{cursor:pointer}.stepper-circle.clickable-indicator{background-color:#009bf3!important}.stepper-text.clickable-indicator{color:#009bf3!important;text-decoration:underline}.stepper-line{width:50px;height:1.5px;background-color:#98a2b3}.stepper-line.active{background-color:#1d2939}.btn-cancel{padding:10px 16px;font-size:14px;font-weight:600;color:#667085;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease-in-out}.btn-cancel:hover{background:#f9fafb;color:#344054}.btn-cancel:active{background:#f2f4f7}.btn-cancel:focus{outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft{padding:10px 16px;font-size:14px;font-weight:600;color:#344054;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}.btn-save-draft:hover:not(:disabled){background:#f9fafb;border-color:#98a2b3}.btn-save-draft:active:not(:disabled){background:#f2f4f7}.btn-save-draft:focus:not(:disabled){outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft:disabled{opacity:.6;cursor:not-allowed;background:#f2f4f7;color:#98a2b3;border-color:#d0d5dd}.batch-processing-container{display:flex;flex-direction:column;align-items:center;padding:176px 16px;width:100%;min-height:75vh;background-color:#fff}.batch-illustration{width:331px;height:179px;position:relative;margin-bottom:28px}.batch-illustration svg{display:block;width:100%;height:100%}.batch-content-section{display:flex;flex-direction:column;gap:24px;align-items:center;width:554px;max-width:100%}.batch-text-section{display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.batch-title{font-size:20px;font-weight:600;line-height:30px;color:#1d2939;margin:0}.batch-description{font-size:14px;font-weight:500;line-height:20px;color:#1d2939;margin:0;max-width:554px}.batch-button-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.btn-batch-custom{background-color:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;transition:all .2s;white-space:nowrap;cursor:pointer}.btn-batch-custom:hover{background-color:#f9fafb;border-color:#b8bdc5;color:#344054}.btn-batch-custom:focus{outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 .2rem #00a3ff40}.loading-dots{display:inline-block}.loading-dots .dot{display:inline-block;animation:dot-bounce 1.4s infinite ease-in-out;animation-fill-mode:both}.loading-dots .dot:nth-child(1){animation-delay:-.32s}.loading-dots .dot:nth-child(2){animation-delay:-.16s}.loading-dots .dot:nth-child(3){animation-delay:0s}@keyframes dot-bounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (max-width: 768px){.batch-processing-container{padding:80px 16px}.batch-content-section{width:100%}.batch-description{max-width:100%}.batch-button-container{flex-direction:column;width:100%}.btn-batch-custom{width:100%}}::ng-deep .cancel-confirmation-modal .modal-dialog{max-width:480px}::ng-deep .cancel-confirmation-modal .modal-content{border:none;border-radius:12px;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;padding:0}::ng-deep .cancel-confirmation-modal .modal-header{border-bottom:none;padding:24px 16px 0}::ng-deep .cancel-confirmation-modal .modal-body{padding:0 16px}::ng-deep .cancel-confirmation-modal .modal-footer{border-top:none;padding:0 16px 24px}\n"] }]
|
|
567
|
+
args: [{ selector: 'lib-find-replace-layout', standalone: true, imports: [RouterOutlet, FormsModule, NgIf, CommonModule], template: " <!-- Batch Running UI -->\r\n <div *ngIf=\"isBatchRunning()\" class=\"batch-processing-container\">\r\n <!-- SVG Illustration -->\r\n <div class=\"batch-illustration\">\r\n <svg fill=\"none\" preserveAspectRatio=\"none\" viewBox=\"0 0 331 183\">\r\n <g id=\"Group 2891\">\r\n <path d=\"M247.99 46C268.149 46 284.49 62.3416 284.49 82.5C284.49 91.0788 290.281 101 298.859 101H312C322.493 101 331 109.507 331 120C331 130.493 322.493 139 312 139H272.962C268.634 139 265.721 144.171 265.721 148.5C265.721 158.165 257.886 166 248.221 166H119.221C109.556 166 101.721 158.165 101.721 148.5C101.721 144.171 98.8077 139 94.479 139H19C8.50659 139 0 130.493 0 120C0 109.507 8.50659 101 19 101H65.121C73.6998 101 79.4902 91.0788 79.4902 82.5C79.4902 62.3416 95.8319 46 115.99 46H247.99Z\" fill=\"#EAECF0\" id=\"Union\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2270\" rx=\"4\" width=\"64\" x=\"176.19\" y=\"76\" />\r\n <rect fill=\"#99DAFF\" height=\"104\" id=\"Rectangle 2269\" rx=\"4\" width=\"64\" x=\"119.19\" y=\"16\" />\r\n <path d=\"M225.605 121.414C226.386 120.633 226.386 119.367 225.605 118.586L212.877 105.858C212.096 105.077 210.829 105.077 210.048 105.858C209.267 106.639 209.267 107.905 210.048 108.686L221.362 120L210.048 131.314C209.267 132.095 209.267 133.361 210.048 134.142C210.829 134.923 212.096 134.923 212.877 134.142L225.605 121.414ZM182.19 49.5C182.19 50.6046 183.086 51.5 184.19 51.5C185.295 51.5 186.19 50.6046 186.19 49.5H184.19H182.19ZM124.19 15V17H178.19V15V13H124.19V15ZM224.19 120V118H124.19V120V122H224.19V120ZM118.19 114H120.19V21H118.19H116.19V114H118.19ZM184.19 21H182.19V49.5H184.19H186.19V21H184.19ZM124.19 120V118C121.981 118 120.19 116.209 120.19 114H118.19H116.19C116.19 118.418 119.772 122 124.19 122V120ZM178.19 15V17C180.4 17 182.19 18.7909 182.19 21H184.19H186.19C186.19 16.5817 182.609 13 178.19 13V15ZM124.19 15V13C119.772 13 116.19 16.5817 116.19 21H118.19H120.19C120.19 18.7909 121.981 17 124.19 17V15Z\" fill=\"#00A3FF\" id=\"Rectangle 2254\" />\r\n <path d=\"M132.776 74.5858C131.995 75.3668 131.995 76.6332 132.776 77.4142L145.504 90.1421C146.285 90.9232 147.552 90.9232 148.333 90.1421C149.114 89.3611 149.114 88.0947 148.333 87.3137L137.019 76L148.333 64.6863C149.114 63.9052 149.114 62.6389 148.333 61.8579C147.552 61.0768 146.285 61.0768 145.504 61.8579L132.776 74.5858ZM176.19 146.5C176.19 145.395 175.295 144.5 174.19 144.5C173.086 144.5 172.19 145.395 172.19 146.5L174.19 146.5L176.19 146.5ZM234.19 181L234.19 179L180.19 179L180.19 181L180.19 183L234.19 183L234.19 181ZM134.19 76L134.19 78L234.19 78L234.19 76L234.19 74L134.19 74L134.19 76ZM240.19 82L238.19 82L238.19 175L240.19 175L242.19 175L242.19 82L240.19 82ZM174.19 175L176.19 175L176.19 146.5L174.19 146.5L172.19 146.5L172.19 175L174.19 175ZM234.19 76L234.19 78C236.4 78 238.19 79.7909 238.19 82L240.19 82L242.19 82C242.19 77.5817 238.609 74 234.19 74L234.19 76ZM180.19 181L180.19 179C177.981 179 176.19 177.209 176.19 175L174.19 175L172.19 175C172.19 179.418 175.772 183 180.19 183L180.19 181ZM234.19 181L234.19 183C238.609 183 242.19 179.418 242.19 175L240.19 175L238.19 175C238.19 177.209 236.4 179 234.19 179L234.19 181Z\" fill=\"#00A3FF\" id=\"Rectangle 2256\" />\r\n <path d=\"M140.232 30L140.95 33.4281C141.316 35.1758 142.129 36.7989 143.309 38.139C144.489 39.4791 145.996 40.4906 147.684 41.0747L149.274 41.625L147.684 42.1752C145.996 42.7594 144.489 43.7709 143.309 45.111C142.129 46.4511 141.316 48.0742 140.95 49.8219L140.232 53.25L139.514 49.8219C139.148 48.0742 138.335 46.4511 137.155 45.111C135.975 43.7709 134.468 42.7594 132.78 42.1752L131.19 41.625L132.78 41.0747C134.468 40.4906 135.975 39.4791 137.155 38.139C138.335 36.7989 139.148 35.1758 139.514 33.4281L140.232 30Z\" id=\"Vector\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M217.232 143L217.95 146.428C218.316 148.176 219.129 149.799 220.309 151.139C221.489 152.479 222.996 153.491 224.684 154.075L226.274 154.625L224.684 155.175C222.996 155.759 221.489 156.771 220.309 158.111C219.129 159.451 218.316 161.074 217.95 162.822L217.232 166.25L216.514 162.822C216.148 161.074 215.335 159.451 214.155 158.111C212.975 156.771 211.468 155.759 209.78 155.175L208.19 154.625L209.78 154.075C211.468 153.491 212.975 152.479 214.155 151.139C215.335 149.799 216.148 148.176 216.514 146.428L217.232 143Z\" id=\"Vector_2\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M192.19 148L192.588 149.917C192.79 150.894 193.239 151.802 193.892 152.551C194.545 153.3 195.378 153.866 196.311 154.192L197.19 154.5L196.311 154.808C195.378 155.134 194.545 155.7 193.892 156.449C193.239 157.198 192.79 158.106 192.588 159.083L192.19 161L191.793 159.083C191.591 158.106 191.141 157.198 190.489 156.449C189.836 155.7 189.003 155.134 188.07 154.808L187.19 154.5L188.07 154.192C189.003 153.866 189.836 153.3 190.489 152.551C191.141 151.802 191.591 150.894 191.793 149.917L192.19 148Z\" id=\"Vector_3\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M107.19 2L107.588 3.91678C107.79 4.894 108.239 5.80152 108.892 6.55084C109.545 7.30016 110.378 7.86571 111.311 8.19233L112.19 8.5L111.311 8.80767C110.378 9.13429 109.545 9.69984 108.892 10.4492C108.239 11.1985 107.79 12.106 107.588 13.0832L107.19 15L106.793 13.0832C106.591 12.106 106.141 11.1985 105.489 10.4492C104.836 9.69984 104.003 9.13429 103.07 8.80767L102.19 8.5L103.07 8.19233C104.003 7.86571 104.836 7.30016 105.489 6.55084C106.141 5.80152 106.591 4.894 106.793 3.91678L107.19 2Z\" id=\"Vector_4\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M262.19 81L262.588 82.9168C262.79 83.894 263.239 84.8015 263.892 85.5508C264.545 86.3002 265.378 86.8657 266.311 87.1923L267.19 87.5L266.311 87.8077C265.378 88.1343 264.545 88.6998 263.892 89.4492C263.239 90.1985 262.79 91.106 262.588 92.0832L262.19 94L261.793 92.0832C261.591 91.106 261.141 90.1985 260.489 89.4492C259.836 88.6998 259.003 88.1343 258.07 87.8077L257.19 87.5L258.07 87.1923C259.003 86.8657 259.836 86.3002 260.489 85.5508C261.141 84.8015 261.591 83.894 261.793 82.9168L262.19 81Z\" id=\"Vector_5\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M154.5 134L154.778 135.327C154.92 136.004 155.234 136.632 155.691 137.151C156.148 137.669 156.731 138.061 157.384 138.287L158 138.5L157.384 138.713C156.731 138.939 156.148 139.331 155.691 139.849C155.234 140.368 154.92 140.996 154.778 141.673L154.5 143L154.222 141.673C154.08 140.996 153.766 140.368 153.309 139.849C152.852 139.331 152.269 138.939 151.616 138.713L151 138.5L151.616 138.287C152.269 138.061 152.852 137.669 153.309 137.151C153.766 136.632 154.08 136.004 154.222 135.327L154.5 134Z\" id=\"Vector_6\" stroke=\"#6BCAFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M95.6904 101L96.2067 103.507C96.4698 104.784 97.0541 105.971 97.9024 106.951C98.7508 107.931 99.8343 108.671 101.047 109.098L102.19 109.5L101.047 109.902C99.8343 110.329 98.7508 111.069 97.9024 112.049C97.0541 113.029 96.4698 114.216 96.2067 115.493L95.6904 118L95.1741 115.493C94.911 114.216 94.3268 113.029 93.4784 112.049C92.6301 111.069 91.5466 110.329 90.3335 109.902L89.1904 109.5L90.3335 109.098C91.5466 108.671 92.6301 107.931 93.4784 106.951C94.3268 105.971 94.911 104.784 95.1741 103.507L95.6904 101Z\" id=\"Vector_7\" stroke=\"#00A3FF\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n <path d=\"M142.232 28L142.95 31.4281C143.316 33.1758 144.129 34.7989 145.309 36.139C146.489 37.4791 147.996 38.4906 149.684 39.0747L151.274 39.625L149.684 40.1752C147.996 40.7594 146.489 41.7709 145.309 43.111C144.129 44.4511 143.316 46.0742 142.95 47.8219L142.232 51.25L141.514 47.8219C141.148 46.0742 140.335 44.4511 139.155 43.111C137.975 41.7709 136.468 40.7594 134.78 40.1752L133.19 39.625L134.78 39.0747C136.468 38.4906 137.975 37.4791 139.155 36.139C140.335 34.7989 141.148 33.1758 141.514 31.4281L142.232 28Z\" id=\"Vector_8\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" />\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n <!-- Content Section -->\r\n <div class=\"batch-content-section\">\r\n <!-- Text Section -->\r\n <div class=\"batch-text-section\">\r\n <p class=\"batch-title\">\r\n Batch processing<span class=\"loading-dots\">\r\n <span class=\"dot\">.</span><span class=\"dot\">.</span><span class=\"dot\">.</span>\r\n </span>\r\n </p>\r\n <p class=\"batch-description\">Running a batch for all {{ getStoreCount() }} stores. This might take a while. You can continue browsing and check back later.</p>\r\n </div>\r\n\r\n <!-- Button Container -->\r\n <div class=\"batch-button-container\">\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onCancel()\">Cancel</button>\r\n <button class=\"btn-batch-custom\" type=\"button\" (click)=\"onBackToDashboard()\">Back To Dashboard</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Header -->\r\n <div *ngIf=\"!isBatchRunning()\" class=\"header-card\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Title -->\r\n <div class=\"title-container\">\r\n <input type=\"text\" class=\"header-title\" [(ngModel)]=\"title\" placeholder=\"Untitled\" [disabled]=\"isApproved()\">\r\n <div *ngIf=\"findReplaceData?.status === 'scheduled' && findReplaceData?.scheduleDate\" class=\"scheduled-details\">\r\n <span class=\"scheduled-badge\">Scheduled:</span>\r\n <span class=\"scheduled-date\">{{ formatScheduledDate(findReplaceData!.scheduleDate!) }}</span>\r\n </div>\r\n <div *ngIf=\"findReplaceData?.status === 'approved'\" class=\"completed-details\">\r\n <span class=\"completed-badge\">Completed</span>\r\n </div>\r\n </div>\r\n \r\n <!-- Stepper -->\r\n <div class=\"stepper-container\">\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnReview()\" \r\n (click)=\"goToStep1()\">\r\n <div class=\"stepper-circle active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">1</div>\r\n <p class=\"stepper-text active\" [class.clickable-indicator]=\"isStepperClickable() && isOnReview()\">Prepare template</p>\r\n </div>\r\n <div class=\"stepper-line\" [class.active]=\"isStep2Active()\"></div>\r\n <div class=\"stepper-step\" \r\n [class.clickable]=\"isStepperClickable() && isOnPrepare()\" \r\n (click)=\"goToStep2()\">\r\n <div class=\"stepper-circle\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">2</div>\r\n <p class=\"stepper-text\" [class.active]=\"isStep2Active()\" [class.inactive]=\"!isStep2Active()\" [class.clickable-indicator]=\"isStepperClickable() && isOnPrepare()\">Review and Approve</p>\r\n </div>\r\n </div>\r\n \r\n <!-- Action Buttons -->\r\n <div class=\"d-flex gap-2 align-items-center\">\r\n <button class=\"btn-cancel\" type=\"button\" (click)=\"onBackToDashboard()\">Cancel</button>\r\n <button class=\"btn-save-draft\" type=\"button\" (click)=\"onSaveDraft()\" [disabled]=\"loading || isApproved()\">Save As Draft</button>\r\n <!-- Ellipsis Menu -->\r\n <div class=\"dropdown ms-2\" *ngIf=\"hasAnyAction()\">\r\n <button class=\"btn btn-link p-0\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngTemplateOutlet=\"verticalDots\"></ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\">\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onReschedule()\">Reschedule</a>\r\n </li>\r\n <li *ngIf=\"shouldShowReschedule()\">\r\n <a class=\"dropdown-item cursor-pointer\" (click)=\"onEdit()\">Edit</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Main Content -->\r\n <router-outlet *ngIf=\"!isBatchRunning()\"></router-outlet>\r\n\r\n<ng-template #verticalDots>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\">\r\n <path\r\n d=\"M1 9C1 9.55228 1.44771 10 2 10C2.55228 10 3 9.55228 3 9C3 8.44772 2.55228 8 2 8C1.44771 8 1 8.44772 1 9Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M0.999999 16C0.999999 16.5523 1.44771 17 2 17C2.55228 17 3 16.5523 3 16C3 15.4477 2.55228 15 2 15C1.44771 15 0.999999 15.4477 0.999999 16Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 2C1 2.55228 1.44772 3 2 3C2.55228 3 3 2.55228 3 2C3 1.44772 2.55228 1 2 1C1.44772 1 1 1.44772 1 2Z\"\r\n stroke=\"#101828\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n</ng-template>", styles: [".header-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:24px;box-shadow:0 1px 3px #0000001a}.title-container{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.header-title{font-size:18px;font-weight:600;color:#1d2939;margin:0;border:none;outline:none;background:transparent;flex:1;min-width:200px;width:50px;padding:0}.header-title:focus{outline:none;box-shadow:none;border:none}.header-title::placeholder{color:#98a2b3}.header-title:disabled{opacity:.6;cursor:not-allowed}.scheduled-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.scheduled-badge{display:inline-block;padding:4px 12px;background-color:#f4ebff;color:#7c3aed;border-radius:16px;font-size:14px;font-weight:500}.scheduled-date{font-size:14px;font-weight:400;color:#1d2939}.completed-details{display:flex;align-items:center;gap:8px;flex-shrink:0}.completed-badge{display:inline-block;padding:4px 12px;background-color:#d1fadf;color:#12b76a;border-radius:16px;font-size:14px;font-weight:500}.stepper-container{display:flex;align-items:center;gap:8px;flex:1;justify-content:center}.stepper-step{display:flex;align-items:center;gap:8px}.stepper-circle{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.stepper-circle.active{background-color:#1d2939}.stepper-circle.inactive{background-color:#98a2b3}.stepper-text{font-size:14px;font-weight:600;margin:0}.stepper-text.active{color:#1d2939}.stepper-text.inactive{color:#98a2b3}.stepper-step.clickable{cursor:pointer}.stepper-circle.clickable-indicator{background-color:#009bf3!important}.stepper-text.clickable-indicator{color:#009bf3!important;text-decoration:underline}.stepper-line{width:50px;height:1.5px;background-color:#98a2b3}.stepper-line.active{background-color:#1d2939}.btn-cancel{padding:10px 16px;font-size:14px;font-weight:600;color:#667085;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background-color .15s ease-in-out}.btn-cancel:hover{background:#f9fafb;color:#344054}.btn-cancel:active{background:#f2f4f7}.btn-cancel:focus{outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft{padding:10px 16px;font-size:14px;font-weight:600;color:#344054;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280d;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}.btn-save-draft:hover:not(:disabled){background:#f9fafb;border-color:#98a2b3}.btn-save-draft:active:not(:disabled){background:#f2f4f7}.btn-save-draft:focus:not(:disabled){outline:1px solid #00a3ff;outline-offset:1px}.btn-save-draft:disabled{opacity:.6;cursor:not-allowed;background:#f2f4f7;color:#98a2b3;border-color:#d0d5dd}.batch-processing-container{display:flex;flex-direction:column;align-items:center;padding:176px 16px;width:100%;min-height:75vh;background-color:#fff}.batch-illustration{width:331px;height:179px;position:relative;margin-bottom:28px}.batch-illustration svg{display:block;width:100%;height:100%}.batch-content-section{display:flex;flex-direction:column;gap:24px;align-items:center;width:554px;max-width:100%}.batch-text-section{display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center}.batch-title{font-size:20px;font-weight:600;line-height:30px;color:#1d2939;margin:0}.batch-description{font-size:14px;font-weight:500;line-height:20px;color:#1d2939;margin:0;max-width:554px}.batch-button-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.btn-batch-custom{background-color:#fff;color:#344054;border:1px solid #d0d5dd;border-radius:8px;padding:10px 18px;font-size:16px;font-weight:600;text-transform:capitalize;box-shadow:0 1px 2px #1018280d;transition:all .2s;white-space:nowrap;cursor:pointer}.btn-batch-custom:hover{background-color:#f9fafb;border-color:#b8bdc5;color:#344054}.btn-batch-custom:focus{outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 .2rem #00a3ff40}.loading-dots{display:inline-block}.loading-dots .dot{display:inline-block;animation:dot-bounce 1.4s infinite ease-in-out;animation-fill-mode:both}.loading-dots .dot:nth-child(1){animation-delay:-.32s}.loading-dots .dot:nth-child(2){animation-delay:-.16s}.loading-dots .dot:nth-child(3){animation-delay:0s}@keyframes dot-bounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (max-width: 768px){.batch-processing-container{padding:80px 16px}.batch-content-section{width:100%}.batch-description{max-width:100%}.batch-button-container{flex-direction:column;width:100%}.btn-batch-custom{width:100%}}::ng-deep .cancel-confirmation-modal .modal-dialog{max-width:480px}::ng-deep .cancel-confirmation-modal .modal-content{border:none;border-radius:12px;box-shadow:0 20px 24px -4px #10182814,0 8px 8px -4px #10182808;padding:0}::ng-deep .cancel-confirmation-modal .modal-header{border-bottom:none;padding:24px 16px 0}::ng-deep .cancel-confirmation-modal .modal-body{padding:0 16px}::ng-deep .cancel-confirmation-modal .modal-footer{border-top:none;padding:0 16px 24px}\n"] }]
|
|
564
568
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CollectionUpdateAiDataService }, { type: i3.StoreBuilderService }, { type: i4.NgbModal }, { type: i5.PageInfoService }, { type: i6.ToastService }] });
|
|
565
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1yZXBsYWNlLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9uLXVwZGF0ZS1haS9maW5kLXJlcGxhY2UtbGF5b3V0L2ZpbmQtcmVwbGFjZS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvZmluZC1yZXBsYWNlLWxheW91dC9maW5kLXJlcGxhY2UtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7Ozs7Ozs7Ozs7QUFXN0csTUFBTSxPQUFPLDBCQUEwQjtJQVEzQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWJWLGVBQWUsR0FBdUIsSUFBSSxDQUFDO0lBQ25DLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDakIscUJBQXFCLEdBQVEsSUFBSSxD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QUM7d0JBQ3JILE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3pELENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsMkJBQTJCO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBOWpCVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtRkNyQnZDLHU4YkF5SGMsd2dLRHhHRixZQUFZLDBKQUFFLFdBQVcsK21CQUFFLElBQUksNEZBQUUsWUFBWTs7NEZBSTVDLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJPdXRsZXQsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmluZFJlcGxhY2UgfSBmcm9tICcuLi9tb2RlbHMvZmluZC1yZXBsYWNlLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvblVwZGF0ZUFpRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nSWYsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBDYW5jZWxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC9jYW5jZWwtY29uZmlybWF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2NoZWR1bGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2ZpbmQtcmVwbGFjZS10YWJsZS9yZXNjaGVkdWxlLW1vZGFsL3Jlc2NoZWR1bGUtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZmluZC1yZXBsYWNlLWxheW91dCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUm91dGVyT3V0bGV0LCBGb3Jtc01vZHVsZSwgTmdJZiwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1yZXBsYWNlLWxheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2ZpbmQtcmVwbGFjZS1sYXlvdXQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaW5kUmVwbGFjZUxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBmaW5kUmVwbGFjZURhdGE6IEZpbmRSZXBsYWNlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYmF0Y2hQcm9ncmVzc0ludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNQb2xsaW5nQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogQ29sbGVjdGlvblVwZGF0ZUFpRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFNldCBicmVhZGNydW1ic1xyXG4gICAgdGhpcy5zZXRCcmVhZGNydW1icygpO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSB0byBkYXRhIGNoYW5nZXMgZnJvbSBzZXJ2aWNlXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEZpbmRSZXBsYWNlRGF0YSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdHVzID0gdGhpcy5maW5kUmVwbGFjZURhdGE/LnN0YXR1cztcclxuICAgICAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gVXBkYXRlIGJyZWFkY3J1bWJzIHdoZW4gdGl0bGUgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYnMoKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgYmF0Y2gtcnVubmluZyBzdGF0dXMgcG9sbGluZ1xyXG4gICAgICAgIGlmIChkYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgLy8gSWYgc3RhdHVzIGNoYW5nZWQgdG8gYmF0Y2gtcnVubmluZyBvciBwYWdlIHdhcyByZWZyZXNoZWQgd2l0aCBiYXRjaC1ydW5uaW5nIHN0YXR1c1xyXG4gICAgICAgICAgLy8gKHByZXZpb3VzU3RhdHVzIHdpbGwgYmUgdW5kZWZpbmVkL251bGwgb24gaW5pdGlhbCBsb2FkIG9yIGRpZmZlcmVudCBzdGF0dXMpXHJcbiAgICAgICAgICBpZiAocHJldmlvdXNTdGF0dXMgIT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgICAvLyBDYWxsIEFQSSBpbW1lZGlhdGVseSBvbiBzdGF0dXMgY2hhbmdlIG9yIHBhZ2UgcmVmcmVzaFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKCk7XHJcbiAgICAgICAgICAgIC8vIFN0YXJ0IHBvbGxpbmcgaWYgbm90IGFscmVhZHkgc3RhcnRlZFxyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0QmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIERvbid0IHJlc3RhcnQgcG9sbGluZyBpZiBpdCdzIGFscmVhZHkgYWN0aXZlICh0byBwcmV2ZW50IHJlc3RhcnRpbmcgb24gZGF0YSB1cGRhdGVzKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTdG9wIHBvbGxpbmcgaWYgc3RhdHVzIGlzIG5vdCBiYXRjaC1ydW5uaW5nXHJcbiAgICAgICAgICB0aGlzLnN0b3BCYXRjaFByb2dyZXNzUG9sbGluZygpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBIYW5kbGUgc3RhdHVzLWJhc2VkIHJvdXRpbmcgd2hlbiBiYXRjaCBydW5uaW5nIGNvbXBsZXRlc1xyXG4gICAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHJlZGlyZWN0IHRvIC9yZXZpZXcgd2hlbiBiYXRjaCBjb21wbGV0ZXMgKHN0YXR1cyBjaGFuZ2VzIHRvIHlldC10by1hcHByb3ZlL2FwcHJvdmVkKVxyXG4gICAgICAgICAgaWYgKGRhdGE/LnN0YXR1cyAmJiBwcmV2aW91c1N0YXR1cyA9PT0gJ2JhdGNoLXJ1bm5pbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RhdHVzQmFzZWRSb3V0aW5nKGRhdGEuc3RhdHVzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gSGFuZGxlIHN0YXR1cy1iYXNlZCByb3V0aW5nIGZvciBvdGhlciBzdGF0dXMgY2hhbmdlcyAobm90IGZyb20gYmF0Y2gtcnVubmluZylcclxuICAgICAgICAvLyBUaGlzIGhhbmRsZXMgaW5pdGlhbCBsb2FkIGFuZCBvdGhlciBzdGF0dXMgdHJhbnNpdGlvbnNcclxuICAgICAgICBpZiAoZGF0YT8uc3RhdHVzICYmIHByZXZpb3VzU3RhdHVzICE9PSAnYmF0Y2gtcnVubmluZycgJiYgcHJldmlvdXNTdGF0dXMgIT09IGRhdGEuc3RhdHVzKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVN0YXR1c0Jhc2VkUm91dGluZyhkYXRhLnN0YXR1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gbG9hZGluZyBzdGF0ZSBmcm9tIHNlcnZpY2VcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0TG9hZGluZ1N0YXRlKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHNhdmVkIElEIHRvIHVwZGF0ZSBVUkwgcXVlcnkgcGFyYW1zIGZvciBpbml0aWFsIHNhdmVzXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldFNhdmVkSWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGlkKSA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBubyBJRCBpbiBjdXJyZW50IHF1ZXJ5IHBhcmFtcyAoaW5pdGlhbCBzYXZlKVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xyXG4gICAgICAgIGlmICghY3VycmVudFBhcmFtcz8uWydpZCddICYmIGlkKSB7XHJcbiAgICAgICAgICAvLyBVcGRhdGUgVVJMIHdpdGggdGhlIG5ldyBJRCB3aXRob3V0IG5hdmlnYXRpbmdcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGlkOiBpZCB9LFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIExvYWQgZGF0YSBmcm9tIHJvdXRlIHBhcmFtc1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXM/LlsnaWQnXSkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZChwYXJhbXNbJ2lkJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRmluZFJlcGxhY2VEYXRhQnlJZChpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2FuY2VsKCkge1xyXG4gICAgLy8gQ2hlY2sgaWYgYmF0Y2ggaXMgcnVubmluZyAtIHNob3cgY29uZmlybWF0aW9uIG1vZGFsXHJcbiAgICBpZiAodGhpcy5pc0JhdGNoUnVubmluZygpKSB7XHJcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDYW5jZWxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHNpemU6ICdsZycsXHJcbiAgICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICAgIHdpbmRvd0NsYXNzOiAnY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbCdcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGFsUmVmLnJlc3VsdDtcclxuICAgICAgICAvLyBVc2VyIGNvbmZpcm1lZCBjYW5jZWxsYXRpb25cclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnByb2NlZWRXaXRoQ2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChkaXNtaXNzZWQpIHtcclxuICAgICAgICAvLyBVc2VyIGRpc21pc3NlZCB0aGUgbW9kYWwgKGNsaWNrZWQgXCJLZWVwIFByb2Nlc3NpbmdcIiBvciBvdXRzaWRlKVxyXG4gICAgICAgIC8vIERvIG5vdGhpbmcsIGp1c3QgY2xvc2UgdGhlIG1vZGFsXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIG5vdCBiYXRjaCBydW5uaW5nLCBwcm9jZWVkIGRpcmVjdGx5IHdpdGggY2FuY2VsXHJcbiAgICAgIHRoaXMucHJvY2VlZFdpdGhDYW5jZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2VlZFdpdGhDYW5jZWwoKSB7XHJcbiAgICAvLyBJZiB0aGVyZSdzIGEgZmluZFJlcGxhY2VJZCwgY2FsbCB0aGUgY2FuY2VsIEFQSSBhbmQgcmVmZXRjaCBkYXRhXHJcbiAgICBpZiAodGhpcy5maW5kUmVwbGFjZURhdGE/Ll9pZCkge1xyXG4gICAgICBjb25zdCBmaW5kUmVwbGFjZUlkID0gdGhpcy5maW5kUmVwbGFjZURhdGEuX2lkO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuY2FuY2VsRmluZFJlcGxhY2Uoe1xyXG4gICAgICAgIGZpbmRSZXBsYWNlSWQ6IGZpbmRSZXBsYWNlSWRcclxuICAgICAgfSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vIFJlZmV0Y2ggZmluZCBhbmQgcmVwbGFjZSBkYXRhIGFmdGVyIHN1Y2Nlc3NmdWwgY2FuY2VsXHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZChmaW5kUmVwbGFjZUlkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChnZXRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RmluZFJlcGxhY2VEYXRhKGdldFJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZpbmQgcmVwbGFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FuY2VsaW5nIGZpbmQgcmVwbGFjZTonLCByZXNwb25zZT8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FuY2VsaW5nIGZpbmQgcmVwbGFjZTonLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBubyBJRCwganVzdCBuYXZpZ2F0ZSBhd2F5XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS9wbGFub2dyYW0vZmluZC1yZXBsYWNlLXRhYmxlJ10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CYWNrVG9EYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvcGxhbm9ncmFtL2ZpbmQtcmVwbGFjZS10YWJsZSddKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZURyYWZ0KCkge1xyXG4gICAgY29uc3QgY3VycmVudFRpdGxlID0gdGhpcy5maW5kUmVwbGFjZURhdGE/Lm5hbWUgfHwgdGhpcy50aXRsZSB8fCAnJztcclxuICAgIGlmICghY3VycmVudFRpdGxlIHx8IGN1cnJlbnRUaXRsZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFdhcm5pbmdUb2FzdCgnUGxlYXNlIGVudGVyIGEgdGl0bGUgYmVmb3JlIHNhdmluZycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBQYXNzIHRydWUgdG8gc2hvd1RvYXN0IHBhcmFtZXRlciB0byBzaG93IHRoZSB0b2FzdCB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnRyaWdnZXJTYXZlRHJhZnQodW5kZWZpbmVkLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIGlzU3RlcDJBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV2aWV3U3RhdHVzZXM6IEFycmF5PEZpbmRSZXBsYWNlWydzdGF0dXMnXT4gPSBbJ3lldC10by1hcHByb3ZlJywgJ2FwcHJvdmVkJywgJ3NjaGVkdWxlZCddO1xyXG4gICAgcmV0dXJuIHJldmlld1N0YXR1c2VzLmluY2x1ZGVzKHRoaXMuZmluZFJlcGxhY2VEYXRhLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBpc0xpbmVBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1N0ZXAyQWN0aXZlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgc3RlcHBlciBzdGVwcyBhcmUgY2xpY2thYmxlIChzdGF0dXMgaXMgeWV0LXRvLWFwcHJvdmUgb3IgYXBwcm92ZWQpXHJcbiAgICovXHJcbiAgaXNTdGVwcGVyQ2xpY2thYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNTdGVwMkFjdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY3VycmVudGx5IG9uIHRoZSBwcmVwYXJlIHJvdXRlXHJcbiAgICovXHJcbiAgaXNPblByZXBhcmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvcHJlcGFyZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY3VycmVudGx5IG9uIHRoZSByZXZpZXcgcm91dGVcclxuICAgKi9cclxuICBpc09uUmV2aWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3JldmlldycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gcHJlcGFyZSBzdGVwXHJcbiAgICovXHJcbiAgZ29Ub1N0ZXAxKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgdGhpcy5pc09uUmV2aWV3KCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL3ByZXBhcmUnXSwge1xyXG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIHJldmlldyBzdGVwXHJcbiAgICovXHJcbiAgZ29Ub1N0ZXAyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgdGhpcy5pc09uUHJlcGFyZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi9yZXZpZXcnXSwge1xyXG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQmF0Y2hSdW5uaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJztcclxuICB9XHJcblxyXG4gIGdldEJhdGNoUHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRSZXBsYWNlRGF0YT8uYmF0Y2hQcm9ncmVzcyA/PyAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdG9yZUNvdW50IHx8IHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdG9yZXM/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUmVwbGFjZURhdGE/Lm5hbWUgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYWN0dWFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmZpbmRSZXBsYWNlRGF0YSkge1xyXG4gICAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YS5uYW1lID0gYWN0dWFsVmFsdWU7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgc2VydmljZSB3aXRoIHRoZSBuZXcgbmFtZVxyXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLnVwZGF0ZURhdGEoeyBuYW1lOiBhY3R1YWxWYWx1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgZGF0YSBpZiBpdCBkb2Vzbid0IGV4aXN0XHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UudXBkYXRlRGF0YSh7IFxyXG4gICAgICAgIG5hbWU6IGFjdHVhbFZhbHVlLFxyXG4gICAgICAgIHN0YXR1czogJ2RyYWZ0JyxcclxuICAgICAgICB0YXJnZXQ6ICdtZXJjaCdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRTY2hlZHVsZWREYXRlKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gZGF0ZVN0cmluZztcclxuICAgIFxyXG4gICAgLy8gRm9ybWF0OiBcIjExIEZlYiwgMjAyNlwiXHJcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ107XHJcbiAgICBjb25zdCBtb250aCA9IG1vbnRoTmFtZXNbZGF0ZS5nZXRNb250aCgpXTtcclxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBcclxuICAgIHJldHVybiBgJHtkYXl9ICR7bW9udGh9LCAke3llYXJ9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBzdGF0dXMtYmFzZWQgcm91dGluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlU3RhdHVzQmFzZWRSb3V0aW5nKHN0YXR1czogRmluZFJlcGxhY2VbJ3N0YXR1cyddKTogdm9pZCB7XHJcbiAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGNvbnN0IHJldmlld1N0YXR1c2VzOiBBcnJheTxGaW5kUmVwbGFjZVsnc3RhdHVzJ10+ID0gWyd5ZXQtdG8tYXBwcm92ZScsICdhcHByb3ZlZCcsICdzY2hlZHVsZWQnXTtcclxuICAgIFxyXG4gICAgLy8gUmVkaXJlY3QgdG8gL3JldmlldyBpZiBzdGF0dXMgaXMgaW4gcmV2aWV3IHN0YXR1c2VzXHJcbiAgICBpZiAocmV2aWV3U3RhdHVzZXMuaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgYWxyZWFkeSBvbiB0aGUgcmV2aWV3IHJvdXRlXHJcbiAgICAgIGlmICghY3VycmVudFVybC5pbmNsdWRlcygnL3JldmlldycpKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL3JldmlldyddLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBSZWRpcmVjdCB0byAvcHJlcGFyZSBpZiBzdGF0dXMgaXMgZHJhZnRcclxuICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xyXG4gICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgYWxyZWFkeSBvbiB0aGUgcHJlcGFyZSByb3V0ZVxyXG4gICAgICBpZiAoIWN1cnJlbnRVcmwuaW5jbHVkZXMoJy9wcmVwYXJlJykpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vcHJlcGFyZSddLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgYmF0Y2ggcHJvZ3Jlc3MgYW5kIHJlZmV0Y2ggZmluZCByZXBsYWNlIGRhdGFcclxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYm90aCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmZpbmRSZXBsYWNlRGF0YT8uX2lkKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUJhdGNoUHJvZ3Jlc3Moe1xyXG4gICAgICAgIGZpbmRSZXBsYWNlSWQ6IHRoaXMuZmluZFJlcGxhY2VEYXRhLl9pZFxyXG4gICAgICB9KVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEFmdGVyIHVwZGF0aW5nIGJhdGNoIHByb2dyZXNzLCByZWZldGNoIHRoZSBmaW5kIHJlcGxhY2UgZGF0YVxyXG4gICAgICAgICAgICBpZiAodGhpcy5maW5kUmVwbGFjZURhdGE/Ll9pZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UubG9hZEZpbmRSZXBsYWNlRGF0YUJ5SWQodGhpcy5maW5kUmVwbGFjZURhdGEuX2lkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChnZXRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RmluZFJlcGxhY2VEYXRhKGdldFJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBmaW5kIHJlcGxhY2UgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOyAvLyBSZXNvbHZlIGFueXdheSB0byBjb250aW51ZSBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgYmF0Y2ggcHJvZ3Jlc3M6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICByZXNvbHZlKCk7IC8vIFJlc29sdmUgYW55d2F5IHRvIGNvbnRpbnVlIHBvbGxpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgcG9sbGluZyBmb3IgYmF0Y2ggcHJvZ3Jlc3MgdXBkYXRlcyBldmVyeSAxMCBzZWNvbmRzXHJcbiAgICogVGltZXIgb25seSBzdGFydHMgYWZ0ZXIgYm90aCB1cGRhdGUgYW5kIGdldCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0QmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTogdm9pZCB7XHJcbiAgICAvLyBEb24ndCBzdGFydCBpZiBhbHJlYWR5IHBvbGxpbmdcclxuICAgIGlmICh0aGlzLmlzUG9sbGluZ0FjdGl2ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIGludGVydmFsL3RpbWVvdXRcclxuICAgIHRoaXMuc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk7XHJcblxyXG4gICAgLy8gTWFyayBwb2xsaW5nIGFzIGFjdGl2ZVxyXG4gICAgdGhpcy5pc1BvbGxpbmdBY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIFN0YXJ0IHRoZSBwb2xsaW5nIGN5Y2xlXHJcbiAgICB0aGlzLnNjaGVkdWxlTmV4dFBvbGwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjaGVkdWxlIHRoZSBuZXh0IHBvbGwgYWZ0ZXIgYm90aCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHNjaGVkdWxlTmV4dFBvbGwoKTogdm9pZCB7XHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgdGltZW91dFxyXG4gICAgaWYgKHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHBvbGxpbmdcclxuICAgIGlmICh0aGlzLmZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzICE9PSAnYmF0Y2gtcnVubmluZycpIHtcclxuICAgICAgdGhpcy5zdG9wQmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhbGwgdGhlIEFQSXMgYW5kIHNjaGVkdWxlIG5leHQgcG9sbCBhZnRlciB0aGV5IGNvbXBsZXRlXHJcbiAgICB0aGlzLnVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIC8vIE9ubHkgc2NoZWR1bGUgbmV4dCBwb2xsIGlmIHN0YXR1cyBpcyBzdGlsbCBiYXRjaC1ydW5uaW5nXHJcbiAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgLy8gU3RhcnQgdGltZXIgZm9yIG5leHQgcG9sbCAoMTAgc2Vjb25kcyBhZnRlciBib3RoIEFQSXMgY29tcGxldGUpXHJcbiAgICAgICAgICB0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlTmV4dFBvbGwoKTtcclxuICAgICAgICAgIH0sIDEwMDAwKTsgLy8gMTAgc2Vjb25kc1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTdG9wIHBvbGxpbmcgaWYgc3RhdHVzIGNoYW5nZWRcclxuICAgICAgICAgIHRoaXMuc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gcG9sbGluZyBjeWNsZTonLCBlcnJvcik7XHJcbiAgICAgICAgLy8gQ29udGludWUgcG9sbGluZyBldmVuIG9uIGVycm9yXHJcbiAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFByb2dyZXNzSW50ZXJ2YWwgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU5leHRQb2xsKCk7XHJcbiAgICAgICAgICB9LCAxMDAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgcG9sbGluZyBmb3IgYmF0Y2ggcHJvZ3Jlc3MgdXBkYXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQb2xsaW5nQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJyZWFkY3J1bWJzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0ZpbmQgJiBSZXBsYWNlJyxcclxuICAgICAgICBwYXRoOiAnL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZXM/dGFiPWZpbmQtcmVwbGFjZScsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnRmluZCAmIFJlcGxhY2UgVGFibGUnLFxyXG4gICAgICAgIHBhdGg6ICcvbWFuYWdlL3BsYW5vZ3JhbS9maW5kLXJlcGxhY2UtdGFibGUnLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnMpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlByZXBhcmUgJiBSZXZpZXdcIik7XHJcblxyXG4gIH1cclxuXHJcbiAgaXNBcHByb3ZlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzID09PSAnYXBwcm92ZWQnO1xyXG4gIH1cclxuXHJcbiAgaGFzQW55QWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkU2hvd1Jlc2NoZWR1bGUoKTtcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dSZXNjaGVkdWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdzY2hlZHVsZWQnO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25SZXNjaGVkdWxlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmZpbmRSZXBsYWNlRGF0YT8uX2lkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oUmVzY2hlZHVsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiAnbWQnLFxyXG4gICAgICBiYWNrZHJvcDogJ3N0YXRpYycsXHJcbiAgICAgIHdpbmRvd0NsYXNzOiAncmVzY2hlZHVsZS1tb2RhbCdcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFBhc3MgdGhlIGluaXRpYWwgc2NoZWR1bGUgdmFsdWVzIHRvIHRoZSBtb2RhbFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5pdGlhbFNjaGVkdWxlID0gdGhpcy5maW5kUmVwbGFjZURhdGE/LnNjaGVkdWxlIHx8IGZhbHNlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW5pdGlhbFNjaGVkdWxlRGF0ZSA9IHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zY2hlZHVsZURhdGUgfHwgbnVsbDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2RhbFJlZi5yZXN1bHQ7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAvLyBQcmVwYXJlIGRhdGEgZm9yIHNhdmVBc0RyYWZ0IEFQSVxyXG4gICAgICAgIGNvbnN0IGRyYWZ0RGF0YTogYW55ID0ge1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZmluZFJlcGxhY2VEYXRhLl9pZCxcclxuICAgICAgICAgIHNjaGVkdWxlOiByZXN1bHQuc2NoZWR1bGUsXHJcbiAgICAgICAgICBzY2hlZHVsZURhdGU6IHJlc3VsdC5zY2hlZHVsZURhdGVcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBDYWxsIHNhdmVBc0RyYWZ0IEFQSSBmaXJzdFxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnNhdmVBc0RyYWZ0KGRyYWZ0RGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09ICdzdWNjZXNzJyB8fCByZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vIElmIHNjaGVkdWxlIGlzIGZhbHNlLCBjYWxsIGFwcHJvdmVSZXBsYWNlIEFQSVxyXG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LnNjaGVkdWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuYXBwcm92ZVJlcGxhY2Uoe1xyXG4gICAgICAgICAgICAgICAgICBmaW5kUmVwbGFjZUlkOiB0aGlzLmZpbmRSZXBsYWNlRGF0YSEuX2lkXHJcbiAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICBuZXh0OiAoYXBwcm92ZVJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcHJvdmVSZXM/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IGFwcHJvdmVSZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGFwcHJvdmVSZXM/Lm1lc3NhZ2UgfHwgJ0ZpbmQgYW5kIHJlcGxhY2UgYXBwcm92ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBSZWxvYWQgdGhlIGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbmRSZXBsYWNlRGF0YT8uX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UubG9hZEZpbmRSZXBsYWNlRGF0YUJ5SWQodGhpcy5maW5kUmVwbGFjZURhdGEuX2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChnZXRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRSZXNwb25zZT8uY29kZSA9PT0gMjAwICYmIGdldFJlc3BvbnNlPy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zZXRGaW5kUmVwbGFjZURhdGEoZ2V0UmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZpbmQgcmVwbGFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChhcHByb3ZlUmVzPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gYXBwcm92ZSBmaW5kIGFuZCByZXBsYWNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBlcnJvcjogKGFwcHJvdmVFcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGFwcHJvdmVFcnI/LmVycm9yPy5lcnJvciB8fCBhcHByb3ZlRXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGFwcHJvdmUgZmluZCBhbmQgcmVwbGFjZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFwcHJvdmluZyBmaW5kIHJlcGxhY2U6JywgYXBwcm92ZUVycik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTY2hlZHVsZSBpcyB0cnVlLCBqdXN0IHNob3cgc3VjY2VzcyBtZXNzYWdlIGFuZCByZWxvYWRcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSB8fCAnRmluZCBhbmQgcmVwbGFjZSByZXNjaGVkdWxlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgZGF0YVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5faWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZCh0aGlzLmZpbmRSZXBsYWNlRGF0YS5faWQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dDogKGdldFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldEZpbmRSZXBsYWNlRGF0YShnZXRSZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZmluZCByZXBsYWNlIGRhdGE6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KHJlcz8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHJlc2NoZWR1bGUgZmluZCBhbmQgcmVwbGFjZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyPy5lcnJvcj8uZXJyb3IgfHwgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHJlc2NoZWR1bGUgZmluZCBhbmQgcmVwbGFjZScpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXNjaGVkdWxpbmcgZmluZCByZXBsYWNlOicsIGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vIFVzZXIgZGlzbWlzc2VkIHRoZSBtb2RhbFxyXG4gICAgICBjb25zb2xlLmxvZygnUmVzY2hlZHVsZSBtb2RhbCBkaXNtaXNzZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9wQmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTtcclxuICAgIC8vIENsZWFyIHNlcnZpY2UgZGF0YSB3aGVuIGV4aXRpbmcgdGhlIGNvbXBvbmVudFxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5jbGVhckRhdGEoKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCIgICAgPCEtLSBCYXRjaCBSdW5uaW5nIFVJIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImlzQmF0Y2hSdW5uaW5nKClcIiBjbGFzcz1cImJhdGNoLXByb2Nlc3NpbmctY29udGFpbmVyXCI+XHJcbiAgICAgICAgPCEtLSBTVkcgSWxsdXN0cmF0aW9uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1pbGx1c3RyYXRpb25cIj5cclxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCIgdmlld0JveD1cIjAgMCAzMzEgMTgzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwIDI4OTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI0Ny45OSA0NkMyNjguMTQ5IDQ2IDI4NC40OSA2Mi4zNDE2IDI4NC40OSA4Mi41QzI4NC40OSA5MS4wNzg4IDI5MC4yODEgMTAxIDI5OC44NTkgMTAxSDMxMkMzMjIuNDkzIDEwMSAzMzEgMTA5LjUwNyAzMzEgMTIwQzMzMSAxMzAuNDkzIDMyMi40OTMgMTM5IDMxMiAxMzlIMjcyLjk2MkMyNjguNjM0IDEzOSAyNjUuNzIxIDE0NC4xNzEgMjY1LjcyMSAxNDguNUMyNjUuNzIxIDE1OC4xNjUgMjU3Ljg4NiAxNjYgMjQ4LjIyMSAxNjZIMTE5LjIyMUMxMDkuNTU2IDE2NiAxMDEuNzIxIDE1OC4xNjUgMTAxLjcyMSAxNDguNUMxMDEuNzIxIDE0NC4xNzEgOTguODA3NyAxMzkgOTQuNDc5IDEzOUgxOUM4LjUwNjU5IDEzOSAwIDEzMC40OTMgMCAxMjBDMCAxMDkuNTA3IDguNTA2NTkgMTAxIDE5IDEwMUg2NS4xMjFDNzMuNjk5OCAxMDEgNzkuNDkwMiA5MS4wNzg4IDc5LjQ5MDIgODIuNUM3OS40OTAyIDYyLjM0MTYgOTUuODMxOSA0NiAxMTUuOTkgNDZIMjQ3Ljk5WlwiIGZpbGw9XCIjRUFFQ0YwXCIgaWQ9XCJVbmlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgZmlsbD1cIiM5OURBRkZcIiBoZWlnaHQ9XCIxMDRcIiBpZD1cIlJlY3RhbmdsZSAyMjcwXCIgcng9XCI0XCIgd2lkdGg9XCI2NFwiIHg9XCIxNzYuMTlcIiB5PVwiNzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGZpbGw9XCIjOTlEQUZGXCIgaGVpZ2h0PVwiMTA0XCIgaWQ9XCJSZWN0YW5nbGUgMjI2OVwiIHJ4PVwiNFwiIHdpZHRoPVwiNjRcIiB4PVwiMTE5LjE5XCIgeT1cIjE2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyNS42MDUgMTIxLjQxNEMyMjYuMzg2IDEyMC42MzMgMjI2LjM4NiAxMTkuMzY3IDIyNS42MDUgMTE4LjU4NkwyMTIuODc3IDEwNS44NThDMjEyLjA5NiAxMDUuMDc3IDIxMC44MjkgMTA1LjA3NyAyMTAuMDQ4IDEwNS44NThDMjA5LjI2NyAxMDYuNjM5IDIwOS4yNjcgMTA3LjkwNSAyMTAuMDQ4IDEwOC42ODZMMjIxLjM2MiAxMjBMMjEwLjA0OCAxMzEuMzE0QzIwOS4yNjcgMTMyLjA5NSAyMDkuMjY3IDEzMy4zNjEgMjEwLjA0OCAxMzQuMTQyQzIxMC44MjkgMTM0LjkyMyAyMTIuMDk2IDEzNC45MjMgMjEyLjg3NyAxMzQuMTQyTDIyNS42MDUgMTIxLjQxNFpNMTgyLjE5IDQ5LjVDMTgyLjE5IDUwLjYwNDYgMTgzLjA4NiA1MS41IDE4NC4xOSA1MS41QzE4NS4yOTUgNTEuNSAxODYuMTkgNTAuNjA0NiAxODYuMTkgNDkuNUgxODQuMTlIMTgyLjE5Wk0xMjQuMTkgMTVWMTdIMTc4LjE5VjE1VjEzSDEyNC4xOVYxNVpNMjI0LjE5IDEyMFYxMThIMTI0LjE5VjEyMFYxMjJIMjI0LjE5VjEyMFpNMTE4LjE5IDExNEgxMjAuMTlWMjFIMTE4LjE5SDExNi4xOVYxMTRIMTE4LjE5Wk0xODQuMTkgMjFIMTgyLjE5VjQ5LjVIMTg0LjE5SDE4Ni4xOVYyMUgxODQuMTlaTTEyNC4xOSAxMjBWMTE4QzEyMS45ODEgMTE4IDEyMC4xOSAxMTYuMjA5IDEyMC4xOSAxMTRIMTE4LjE5SDExNi4xOUMxMTYuMTkgMTE4LjQxOCAxMTkuNzcyIDEyMiAxMjQuMTkgMTIyVjEyMFpNMTc4LjE5IDE1VjE3QzE4MC40IDE3IDE4Mi4xOSAxOC43OTA5IDE4Mi4xOSAyMUgxODQuMTlIMTg2LjE5QzE4Ni4xOSAxNi41ODE3IDE4Mi42MDkgMTMgMTc4LjE5IDEzVjE1Wk0xMjQuMTkgMTVWMTNDMTE5Ljc3MiAxMyAxMTYuMTkgMTYuNTgxNyAxMTYuMTkgMjFIMTE4LjE5SDEyMC4xOUMxMjAuMTkgMTguNzkwOSAxMjEuOTgxIDE3IDEyNC4xOSAxN1YxNVpcIiBmaWxsPVwiIzAwQTNGRlwiIGlkPVwiUmVjdGFuZ2xlIDIyNTRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMyLjc3NiA3NC41ODU4QzEzMS45OTUgNzUuMzY2OCAxMzEuOTk1IDc2LjYzMzIgMTMyLjc3NiA3Ny40MTQyTDE0NS41MDQgOTAuMTQyMUMxNDYuMjg1IDkwLjkyMzIgMTQ3LjU1MiA5MC45MjMyIDE0OC4zMzMgOTAuMTQyMUMxNDkuMTE0IDg5LjM2MTEgMTQ5LjExNCA4OC4wOTQ3IDE0OC4zMzMgODcuMzEzN0wxMzcuMDE5IDc2TDE0OC4zMzMgNjQuNjg2M0MxNDkuMTE0IDYzLjkwNTIgMTQ5LjExNCA2Mi42Mzg5IDE0OC4zMzMgNjEuODU3OUMxNDcuNTUyIDYxLjA3NjggMTQ2LjI4NSA2MS4wNzY4IDE0NS41MDQgNjEuODU3OUwxMzIuNzc2IDc0LjU4NThaTTE3Ni4xOSAxNDYuNUMxNzYuMTkgMTQ1LjM5NSAxNzUuMjk1IDE0NC41IDE3NC4xOSAxNDQuNUMxNzMuMDg2IDE0NC41IDE3Mi4xOSAxNDUuMzk1IDE3Mi4xOSAxNDYuNUwxNzQuMTkgMTQ2LjVMMTc2LjE5IDE0Ni41Wk0yMzQuMTkgMTgxTDIzNC4xOSAxNzlMMTgwLjE5IDE3OUwxODAuMTkgMTgxTDE4MC4xOSAxODNMMjM0LjE5IDE4M0wyMzQuMTkgMTgxWk0xMzQuMTkgNzZMMTM0LjE5IDc4TDIzNC4xOSA3OEwyMzQuMTkgNzZMMjM0LjE5IDc0TDEzNC4xOSA3NEwxMzQuMTkgNzZaTTI0MC4xOSA4MkwyMzguMTkgODJMMjM4LjE5IDE3NUwyNDAuMTkgMTc1TDI0Mi4xOSAxNzVMMjQyLjE5IDgyTDI0MC4xOSA4MlpNMTc0LjE5IDE3NUwxNzYuMTkgMTc1TDE3Ni4xOSAxNDYuNUwxNzQuMTkgMTQ2LjVMMTcyLjE5IDE0Ni41TDE3Mi4xOSAxNzVMMTc0LjE5IDE3NVpNMjM0LjE5IDc2TDIzNC4xOSA3OEMyMzYuNCA3OCAyMzguMTkgNzkuNzkwOSAyMzguMTkgODJMMjQwLjE5IDgyTDI0Mi4xOSA4MkMyNDIuMTkgNzcuNTgxNyAyMzguNjA5IDc0IDIzNC4xOSA3NEwyMzQuMTkgNzZaTTE4MC4xOSAxODFMMTgwLjE5IDE3OUMxNzcuOTgxIDE3OSAxNzYuMTkgMTc3LjIwOSAxNzYuMTkgMTc1TDE3NC4xOSAxNzVMMTcyLjE5IDE3NUMxNzIuMTkgMTc5LjQxOCAxNzUuNzcyIDE4MyAxODAuMTkgMTgzTDE4MC4xOSAxODFaTTIzNC4xOSAxODFMMjM0LjE5IDE4M0MyMzguNjA5IDE4MyAyNDIuMTkgMTc5LjQxOCAyNDIuMTkgMTc1TDI0MC4xOSAxNzVMMjM4LjE5IDE3NUMyMzguMTkgMTc3LjIwOSAyMzYuNCAxNzkgMjM0LjE5IDE3OUwyMzQuMTkgMTgxWlwiIGZpbGw9XCIjMDBBM0ZGXCIgaWQ9XCJSZWN0YW5nbGUgMjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNDAuMjMyIDMwTDE0MC45NSAzMy40MjgxQzE0MS4zMTYgMzUuMTc1OCAxNDIuMTI5IDM2Ljc5ODkgMTQzLjMwOSAzOC4xMzlDMTQ0LjQ4OSAzOS40NzkxIDE0NS45OTYgNDAuNDkwNiAxNDcuNjg0IDQxLjA3NDdMMTQ5LjI3NCA0MS42MjVMMTQ3LjY4NCA0Mi4xNzUyQzE0NS45OTYgNDIuNzU5NCAxNDQuNDg5IDQzLjc3MDkgMTQzLjMwOSA0NS4xMTFDMTQyLjEyOSA0Ni40NTExIDE0MS4zMTYgNDguMDc0MiAxNDAuOTUgNDkuODIxOUwxNDAuMjMyIDUzLjI1TDEzOS41MTQgNDkuODIxOUMxMzkuMTQ4IDQ4LjA3NDIgMTM4LjMzNSA0Ni40NTExIDEzNy4xNTUgNDUuMTExQzEzNS45NzUgNDMuNzcwOSAxMzQuNDY4IDQyLjc1OTQgMTMyLjc4IDQyLjE3NTJMMTMxLjE5IDQxLjYyNUwxMzIuNzggNDEuMDc0N0MxMzQuNDY4IDQwLjQ5MDYgMTM1Ljk3NSAzOS40NzkxIDEzNy4xNTUgMzguMTM5QzEzOC4zMzUgMzYuNzk4OSAxMzkuMTQ4IDM1LjE3NTggMTM5LjUxNCAzMy40MjgxTDE0MC4yMzIgMzBaXCIgaWQ9XCJWZWN0b3JcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMTcuMjMyIDE0M0wyMTcuOTUgMTQ2LjQyOEMyMTguMzE2IDE0OC4xNzYgMjE5LjEyOSAxNDkuNzk5IDIyMC4zMDkgMTUxLjEzOUMyMjEuNDg5IDE1Mi40NzkgMjIyLjk5NiAxNTMuNDkxIDIyNC42ODQgMTU0LjA3NUwyMjYuMjc0IDE1NC42MjVMMjI0LjY4NCAxNTUuMTc1QzIyMi45OTYgMTU1Ljc1OSAyMjEuNDg5IDE1Ni43NzEgMjIwLjMwOSAxNTguMTExQzIxOS4xMjkgMTU5LjQ1MSAyMTguMzE2IDE2MS4wNzQgMjE3Ljk1IDE2Mi44MjJMMjE3LjIzMiAxNjYuMjVMMjE2LjUxNCAxNjIuODIyQzIxNi4xNDggMTYxLjA3NCAyMTUuMzM1IDE1OS40NTEgMjE0LjE1NSAxNTguMTExQzIxMi45NzUgMTU2Ljc3MSAyMTEuNDY4IDE1NS43NTkgMjA5Ljc4IDE1NS4xNzVMMjA4LjE5IDE1NC42MjVMMjA5Ljc4IDE1NC4wNzVDMjExLjQ2OCAxNTMuNDkxIDIxMi45NzUgMTUyLjQ3OSAyMTQuMTU1IDE1MS4xMzlDMjE1LjMzNSAxNDkuNzk5IDIxNi4xNDggMTQ4LjE3NiAyMTYuNTE0IDE0Ni40MjhMMjE3LjIzMiAxNDNaXCIgaWQ9XCJWZWN0b3JfMlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5Mi4xOSAxNDhMMTkyLjU4OCAxNDkuOTE3QzE5Mi43OSAxNTAuODk0IDE5My4yMzkgMTUxLjgwMiAxOTMuODkyIDE1Mi41NTFDMTk0LjU0NSAxNTMuMyAxOTUuMzc4IDE1My44NjYgMTk2LjMxMSAxNTQuMTkyTDE5Ny4xOSAxNTQuNUwxOTYuMzExIDE1NC44MDhDMTk1LjM3OCAxNTUuMTM0IDE5NC41NDUgMTU1LjcgMTkzLjg5MiAxNTYuNDQ5QzE5My4yMzkgMTU3LjE5OCAxOTIuNzkgMTU4LjEwNiAxOTIuNTg4IDE1OS4wODNMMTkyLjE5IDE2MUwxOTEuNzkzIDE1OS4wODNDMTkxLjU5MSAxNTguMTA2IDE5MS4xNDEgMTU3LjE5OCAxOTAuNDg5IDE1Ni40NDlDMTg5LjgzNiAxNTUuNyAxODkuMDAzIDE1NS4xMzQgMTg4LjA3IDE1NC44MDhMMTg3LjE5IDE1NC41TDE4OC4wNyAxNTQuMTkyQzE4OS4wMDMgMTUzLjg2NiAxODkuODM2IDE1My4zIDE5MC40ODkgMTUyLjU1MUMxOTEuMTQxIDE1MS44MDIgMTkxLjU5MSAxNTAuODk0IDE5MS43OTMgMTQ5LjkxN0wxOTIuMTkgMTQ4WlwiIGlkPVwiVmVjdG9yXzNcIiBzdHJva2U9XCIjNkJDQUZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMDcuMTkgMkwxMDcuNTg4IDMuOTE2NzhDMTA3Ljc5IDQuODk0IDEwOC4yMzkgNS44MDE1MiAxMDguODkyIDYuNTUwODRDMTA5LjU0NSA3LjMwMDE2IDExMC4zNzggNy44NjU3MSAxMTEuMzExIDguMTkyMzNMMTEyLjE5IDguNUwxMTEuMzExIDguODA3NjdDMTEwLjM3OCA5LjEzNDI5IDEwOS41NDUgOS42OTk4NCAxMDguODkyIDEwLjQ0OTJDMTA4LjIzOSAxMS4xOTg1IDEwNy43OSAxMi4xMDYgMTA3LjU4OCAxMy4wODMyTDEwNy4xOSAxNUwxMDYuNzkzIDEzLjA4MzJDMTA2LjU5MSAxMi4xMDYgMTA2LjE0MSAxMS4xOTg1IDEwNS40ODkgMTAuNDQ5MkMxMDQuODM2IDkuNjk5ODQgMTA0LjAwMyA5LjEzNDI5IDEwMy4wNyA4LjgwNzY3TDEwMi4xOSA4LjVMMTAzLjA3IDguMTkyMzNDMTA0LjAwMyA3Ljg2NTcxIDEwNC44MzYgNy4zMDAxNiAxMDUuNDg5IDYuNTUwODRDMTA2LjE0MSA1LjgwMTUyIDEwNi41OTEgNC44OTQgMTA2Ljc5MyAzLjkxNjc4TDEwNy4xOSAyWlwiIGlkPVwiVmVjdG9yXzRcIiBzdHJva2U9XCIjNkJDQUZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNjIuMTkgODFMMjYyLjU4OCA4Mi45MTY4QzI2Mi43OSA4My44OTQgMjYzLjIzOSA4NC44MDE1IDI2My44OTIgODUuNTUwOEMyNjQuNTQ1IDg2LjMwMDIgMjY1LjM3OCA4Ni44NjU3IDI2Ni4zMTEgODcuMTkyM0wyNjcuMTkgODcuNUwyNjYuMzExIDg3LjgwNzdDMjY1LjM3OCA4OC4xMzQzIDI2NC41NDUgODguNjk5OCAyNjMuODkyIDg5LjQ0OTJDMjYzLjIzOSA5MC4xOTg1IDI2Mi43OSA5MS4xMDYgMjYyLjU4OCA5Mi4wODMyTDI2Mi4xOSA5NEwyNjEuNzkzIDkyLjA4MzJDMjYxLjU5MSA5MS4xMDYgMjYxLjE0MSA5MC4xOTg1IDI2MC40ODkgODkuNDQ5MkMyNTkuODM2IDg4LjY5OTggMjU5LjAwMyA4OC4xMzQzIDI1OC4wNyA4Ny44MDc3TDI1Ny4xOSA4Ny41TDI1OC4wNyA4Ny4xOTIzQzI1OS4wMDMgODYuODY1NyAyNTkuODM2IDg2LjMwMDIgMjYwLjQ4OSA4NS41NTA4QzI2MS4xNDEgODQuODAxNSAyNjEuNTkxIDgzLjg5NCAyNjEuNzkzIDgyLjkxNjhMMjYyLjE5IDgxWlwiIGlkPVwiVmVjdG9yXzVcIiBzdHJva2U9XCIjNkJDQUZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNTQuNSAxMzRMMTU0Ljc3OCAxMzUuMzI3QzE1NC45MiAxMzYuMDA0IDE1NS4yMzQgMTM2LjYzMiAxNTUuNjkxIDEzNy4xNTFDMTU2LjE0OCAxMzcuNjY5IDE1Ni43MzEgMTM4LjA2MSAxNTcuMzg0IDEzOC4yODdMMTU4IDEzOC41TDE1Ny4zODQgMTM4LjcxM0MxNTYuNzMxIDEzOC45MzkgMTU2LjE0OCAxMzkuMzMxIDE1NS42OTEgMTM5Ljg0OUMxNTUuMjM0IDE0MC4zNjggMTU0LjkyIDE0MC45OTYgMTU0Ljc3OCAxNDEuNjczTDE1NC41IDE0M0wxNTQuMjIyIDE0MS42NzNDMTU0LjA4IDE0MC45OTYgMTUzLjc2NiAxNDAuMzY4IDE1My4zMDkgMTM5Ljg0OUMxNTIuODUyIDEzOS4zMzEgMTUyLjI2OSAxMzguOTM5IDE1MS42MTYgMTM4LjcxM0wxNTEgMTM4LjVMMTUxLjYxNiAxMzguMjg3QzE1Mi4yNjkgMTM4LjA2MSAxNTIuODUyIDEzNy42NjkgMTUzLjMwOSAxMzcuMTUxQzE1My43NjYgMTM2LjYzMiAxNTQuMDggMTM2LjAwNCAxNTQuMjIyIDEzNS4zMjdMMTU0LjUgMTM0WlwiIGlkPVwiVmVjdG9yXzZcIiBzdHJva2U9XCIjNkJDQUZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05NS42OTA0IDEwMUw5Ni4yMDY3IDEwMy41MDdDOTYuNDY5OCAxMDQuNzg0IDk3LjA1NDEgMTA1Ljk3MSA5Ny45MDI0IDEwNi45NTFDOTguNzUwOCAxMDcuOTMxIDk5LjgzNDMgMTA4LjY3MSAxMDEuMDQ3IDEwOS4wOThMMTAyLjE5IDEwOS41TDEwMS4wNDcgMTA5LjkwMkM5OS44MzQzIDExMC4zMjkgOTguNzUwOCAxMTEuMDY5IDk3LjkwMjQgMTEyLjA0OUM5Ny4wNTQxIDExMy4wMjkgOTYuNDY5OCAxMTQuMjE2IDk2LjIwNjcgMTE1LjQ5M0w5NS42OTA0IDExOEw5NS4xNzQxIDExNS40OTNDOTQuOTExIDExNC4yMTYgOTQuMzI2OCAxMTMuMDI5IDkzLjQ3ODQgMTEyLjA0OUM5Mi42MzAxIDExMS4wNjkgOTEuNTQ2NiAxMTAuMzI5IDkwLjMzMzUgMTA5LjkwMkw4OS4xOTA0IDEwOS41TDkwLjMzMzUgMTA5LjA5OEM5MS41NDY2IDEwOC42NzEgOTIuNjMwMSAxMDcuOTMxIDkzLjQ3ODQgMTA2Ljk1MUM5NC4zMjY4IDEwNS45NzEgOTQuOTExIDEwNC43ODQgOTUuMTc0MSAxMDMuNTA3TDk1LjY5MDQgMTAxWlwiIGlkPVwiVmVjdG9yXzdcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNDIuMjMyIDI4TDE0Mi45NSAzMS40MjgxQzE0My4zMTYgMzMuMTc1OCAxNDQuMTI5IDM0Ljc5ODkgMTQ1LjMwOSAzNi4xMzlDMTQ2LjQ4OSAzNy40NzkxIDE0Ny45OTYgMzguNDkwNiAxNDkuNjg0IDM5LjA3NDdMMTUxLjI3NCAzOS42MjVMMTQ5LjY4NCA0MC4xNzUyQzE0Ny45OTYgNDAuNzU5NCAxNDYuNDg5IDQxLjc3MDkgMTQ1LjMwOSA0My4xMTFDMTQ0LjEyOSA0NC40NTExIDE0My4zMTYgNDYuMDc0MiAxNDIuOTUgNDcuODIxOUwxNDIuMjMyIDUxLjI1TDE0MS41MTQgNDcuODIxOUMxNDEuMTQ4IDQ2LjA3NDIgMTQwLjMzNSA0NC40NTExIDEzOS4xNTUgNDMuMTExQzEzNy45NzUgNDEuNzcwOSAxMzYuNDY4IDQwLjc1OTQgMTM0Ljc4IDQwLjE3NTJMMTMzLjE5IDM5LjYyNUwxMzQuNzggMzkuMDc0N0MxMzYuNDY4IDM4LjQ5MDYgMTM3Ljk3NSAzNy40NzkxIDEzOS4xNTUgMzYuMTM5QzE0MC4zMzUgMzQuNzk4OSAxNDEuMTQ4IDMzLjE3NTggMTQxLjUxNCAzMS40MjgxTDE0Mi4yMzIgMjhaXCIgaWQ9XCJWZWN0b3JfOFwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIENvbnRlbnQgU2VjdGlvbiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtY29udGVudC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGV4dCBTZWN0aW9uIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtdGV4dC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImJhdGNoLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQmF0Y2ggcHJvY2Vzc2luZzxzcGFuIGNsYXNzPVwibG9hZGluZy1kb3RzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz1cImRvdFwiPi48L3NwYW4+PHNwYW4gY2xhc3M9XCJkb3RcIj4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYmF0Y2gtZGVzY3JpcHRpb25cIj5SdW5uaW5nIGEgYmF0Y2ggZm9yIGFsbCB7eyBnZXRTdG9yZUNvdW50KCkgfX0gc3RvcmVzLiBUaGlzIG1pZ2h0IHRha2UgYSB3aGlsZS4gWW91IGNhbiBjb250aW51ZSBicm93c2luZyBhbmQgY2hlY2sgYmFjayBsYXRlci48L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBCdXR0b24gQ29udGFpbmVyIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1iYXRjaC1jdXN0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYmF0Y2gtY3VzdG9tXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkJhY2tUb0Rhc2hib2FyZCgpXCI+QmFjayBUbyBEYXNoYm9hcmQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNCYXRjaFJ1bm5pbmcoKVwiIGNsYXNzPVwiaGVhZGVyLWNhcmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgPCEtLSBUaXRsZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBbKG5nTW9kZWwpXT1cInRpdGxlXCIgcGxhY2Vob2xkZXI9XCJVbnRpdGxlZFwiIFtkaXNhYmxlZF09XCJpc0FwcHJvdmVkKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaW5kUmVwbGFjZURhdGE/LnN0YXR1cyA9PT0gJ3NjaGVkdWxlZCcgJiYgZmluZFJlcGxhY2VEYXRhPy5zY2hlZHVsZURhdGVcIiBjbGFzcz1cInNjaGVkdWxlZC1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzY2hlZHVsZWQtYmFkZ2VcIj5TY2hlZHVsZWQ6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NoZWR1bGVkLWRhdGVcIj57eyBmb3JtYXRTY2hlZHVsZWREYXRlKGZpbmRSZXBsYWNlRGF0YSEuc2NoZWR1bGVEYXRlISkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaW5kUmVwbGFjZURhdGE/LnN0YXR1cyA9PT0gJ2FwcHJvdmVkJ1wiIGNsYXNzPVwiY29tcGxldGVkLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBsZXRlZC1iYWRnZVwiPkNvbXBsZXRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwhLS0gU3RlcHBlciAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1zdGVwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwiaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgaXNPblJldmlldygpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU3RlcDEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNpcmNsZSBhY3RpdmVcIiBbY2xhc3MuY2xpY2thYmxlLWluZGljYXRvcl09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUmV2aWV3KClcIj4xPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdGVwcGVyLXRleHQgYWN0aXZlXCIgW2NsYXNzLmNsaWNrYWJsZS1pbmRpY2F0b3JdPVwiaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgaXNPblJldmlldygpXCI+UHJlcGFyZSB0ZW1wbGF0ZTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZVwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdGVwMkFjdGl2ZSgpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1zdGVwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwiaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgaXNPblByZXBhcmUoKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1N0ZXAyKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1jaXJjbGVcIiBbY2xhc3MuYWN0aXZlXT1cImlzU3RlcDJBY3RpdmUoKVwiIFtjbGFzcy5pbmFjdGl2ZV09XCIhaXNTdGVwMkFjdGl2ZSgpXCIgW2NsYXNzLmNsaWNrYWJsZS1pbmRpY2F0b3JdPVwiaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgaXNPblByZXBhcmUoKVwiPjI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0ZXBwZXItdGV4dFwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdGVwMkFjdGl2ZSgpXCIgW2NsYXNzLmluYWN0aXZlXT1cIiFpc1N0ZXAyQWN0aXZlKClcIiBbY2xhc3MuY2xpY2thYmxlLWluZGljYXRvcl09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUHJlcGFyZSgpXCI+UmV2aWV3IGFuZCBBcHByb3ZlPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkJhY2tUb0Rhc2hib2FyZCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNhdmUtZHJhZnRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uU2F2ZURyYWZ0KClcIiBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBpc0FwcHJvdmVkKClcIj5TYXZlIEFzIERyYWZ0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEVsbGlwc2lzIE1lbnUgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24gbXMtMlwiICpuZ0lmPVwiaGFzQW55QWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2ZXJ0aWNhbERvdHNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cInNob3VsZFNob3dSZXNjaGVkdWxlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblJlc2NoZWR1bGUoKVwiPlJlc2NoZWR1bGU8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8IS0tIE1haW4gQ29udGVudCAtLT5cclxuICAgIDxyb3V0ZXItb3V0bGV0ICpuZ0lmPVwiIWlzQmF0Y2hSdW5uaW5nKClcIj48L3JvdXRlci1vdXRsZXQ+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZlcnRpY2FsRG90cz5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCA0IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTEgOUMxIDkuNTUyMjggMS40NDc3MSAxMCAyIDEwQzIuNTUyMjggMTAgMyA5LjU1MjI4IDMgOUMzIDguNDQ3NzIgMi41NTIyOCA4IDIgOEMxLjQ0NzcxIDggMSA4LjQ0NzcyIDEgOVpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCJcclxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTAuOTk5OTk5IDE2QzAuOTk5OTk5IDE2LjU1MjMgMS40NDc3MSAxNyAyIDE3QzIuNTUyMjggMTcgMyAxNi41NTIzIDMgMTZDMyAxNS40NDc3IDIuNTUyMjggMTUgMiAxNUMxLjQ0NzcxIDE1IDAuOTk5OTk5IDE1LjQ0NzcgMC45OTk5OTkgMTZaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiXHJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xIDJDMSAyLjU1MjI4IDEuNDQ3NzIgMyAyIDNDMi41NTIyOCAzIDMgMi41NTIyOCAzIDJDMyAxLjQ0NzcyIDIuNTUyMjggMSAyIDFDMS40NDc3MiAxIDEgMS40NDc3MiAxIDJaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiXHJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
569
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1yZXBsYWNlLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9uLXVwZGF0ZS1haS9maW5kLXJlcGxhY2UtbGF5b3V0L2ZpbmQtcmVwbGFjZS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbi11cGRhdGUtYWkvZmluZC1yZXBsYWNlLWxheW91dC9maW5kLXJlcGxhY2UtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7Ozs7Ozs7Ozs7QUFXN0csTUFBTSxPQUFPLDBCQUEwQjtJQVEzQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWJWLGVBQWUsR0FBdUIsSUFBSSxDQUFDO0lBQ25DLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3ZDLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDakIscUJBQXFCLEdBQVEsSUFBSSxD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YUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLHVDQUF1QyxDQUFDLENBQUM7d0JBQ3JILE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3pELENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsMkJBQTJCO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBbmtCVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtRkNyQnZDLGdwY0E0SGMsd2dLRDNHRixZQUFZLDBKQUFFLFdBQVcsK21CQUFFLElBQUksNEZBQUUsWUFBWTs7NEZBSTVDLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJPdXRsZXQsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmluZFJlcGxhY2UgfSBmcm9tICcuLi9tb2RlbHMvZmluZC1yZXBsYWNlLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvblVwZGF0ZUFpRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nSWYsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBDYW5jZWxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbC9jYW5jZWwtY29uZmlybWF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2NoZWR1bGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2ZpbmQtcmVwbGFjZS10YWJsZS9yZXNjaGVkdWxlLW1vZGFsL3Jlc2NoZWR1bGUtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZmluZC1yZXBsYWNlLWxheW91dCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUm91dGVyT3V0bGV0LCBGb3Jtc01vZHVsZSwgTmdJZiwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1yZXBsYWNlLWxheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2ZpbmQtcmVwbGFjZS1sYXlvdXQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaW5kUmVwbGFjZUxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBmaW5kUmVwbGFjZURhdGE6IEZpbmRSZXBsYWNlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYmF0Y2hQcm9ncmVzc0ludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNQb2xsaW5nQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogQ29sbGVjdGlvblVwZGF0ZUFpRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFNldCBicmVhZGNydW1ic1xyXG4gICAgdGhpcy5zZXRCcmVhZGNydW1icygpO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSB0byBkYXRhIGNoYW5nZXMgZnJvbSBzZXJ2aWNlXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEZpbmRSZXBsYWNlRGF0YSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdHVzID0gdGhpcy5maW5kUmVwbGFjZURhdGE/LnN0YXR1cztcclxuICAgICAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gVXBkYXRlIGJyZWFkY3J1bWJzIHdoZW4gdGl0bGUgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYnMoKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBIYW5kbGUgYmF0Y2gtcnVubmluZyBzdGF0dXMgcG9sbGluZ1xyXG4gICAgICAgIGlmIChkYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgLy8gSWYgc3RhdHVzIGNoYW5nZWQgdG8gYmF0Y2gtcnVubmluZyBvciBwYWdlIHdhcyByZWZyZXNoZWQgd2l0aCBiYXRjaC1ydW5uaW5nIHN0YXR1c1xyXG4gICAgICAgICAgLy8gKHByZXZpb3VzU3RhdHVzIHdpbGwgYmUgdW5kZWZpbmVkL251bGwgb24gaW5pdGlhbCBsb2FkIG9yIGRpZmZlcmVudCBzdGF0dXMpXHJcbiAgICAgICAgICBpZiAocHJldmlvdXNTdGF0dXMgIT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgICAvLyBDYWxsIEFQSSBpbW1lZGlhdGVseSBvbiBzdGF0dXMgY2hhbmdlIG9yIHBhZ2UgcmVmcmVzaFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKCk7XHJcbiAgICAgICAgICAgIC8vIFN0YXJ0IHBvbGxpbmcgaWYgbm90IGFscmVhZHkgc3RhcnRlZFxyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0QmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIERvbid0IHJlc3RhcnQgcG9sbGluZyBpZiBpdCdzIGFscmVhZHkgYWN0aXZlICh0byBwcmV2ZW50IHJlc3RhcnRpbmcgb24gZGF0YSB1cGRhdGVzKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTdG9wIHBvbGxpbmcgaWYgc3RhdHVzIGlzIG5vdCBiYXRjaC1ydW5uaW5nXHJcbiAgICAgICAgICB0aGlzLnN0b3BCYXRjaFByb2dyZXNzUG9sbGluZygpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBIYW5kbGUgc3RhdHVzLWJhc2VkIHJvdXRpbmcgd2hlbiBiYXRjaCBydW5uaW5nIGNvbXBsZXRlc1xyXG4gICAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHJlZGlyZWN0IHRvIC9yZXZpZXcgd2hlbiBiYXRjaCBjb21wbGV0ZXMgKHN0YXR1cyBjaGFuZ2VzIHRvIHlldC10by1hcHByb3ZlL2FwcHJvdmVkKVxyXG4gICAgICAgICAgaWYgKGRhdGE/LnN0YXR1cyAmJiBwcmV2aW91c1N0YXR1cyA9PT0gJ2JhdGNoLXJ1bm5pbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RhdHVzQmFzZWRSb3V0aW5nKGRhdGEuc3RhdHVzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gSGFuZGxlIHN0YXR1cy1iYXNlZCByb3V0aW5nIGZvciBvdGhlciBzdGF0dXMgY2hhbmdlcyAobm90IGZyb20gYmF0Y2gtcnVubmluZylcclxuICAgICAgICAvLyBUaGlzIGhhbmRsZXMgaW5pdGlhbCBsb2FkIGFuZCBvdGhlciBzdGF0dXMgdHJhbnNpdGlvbnNcclxuICAgICAgICBpZiAoZGF0YT8uc3RhdHVzICYmIHByZXZpb3VzU3RhdHVzICE9PSAnYmF0Y2gtcnVubmluZycgJiYgcHJldmlvdXNTdGF0dXMgIT09IGRhdGEuc3RhdHVzKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVN0YXR1c0Jhc2VkUm91dGluZyhkYXRhLnN0YXR1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gbG9hZGluZyBzdGF0ZSBmcm9tIHNlcnZpY2VcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0TG9hZGluZ1N0YXRlKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHNhdmVkIElEIHRvIHVwZGF0ZSBVUkwgcXVlcnkgcGFyYW1zIGZvciBpbml0aWFsIHNhdmVzXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldFNhdmVkSWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGlkKSA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBubyBJRCBpbiBjdXJyZW50IHF1ZXJ5IHBhcmFtcyAoaW5pdGlhbCBzYXZlKVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xyXG4gICAgICAgIGlmICghY3VycmVudFBhcmFtcz8uWydpZCddICYmIGlkKSB7XHJcbiAgICAgICAgICAvLyBVcGRhdGUgVVJMIHdpdGggdGhlIG5ldyBJRCB3aXRob3V0IG5hdmlnYXRpbmdcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGlkOiBpZCB9LFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIExvYWQgZGF0YSBmcm9tIHJvdXRlIHBhcmFtc1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXM/LlsnaWQnXSkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZChwYXJhbXNbJ2lkJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRmluZFJlcGxhY2VEYXRhQnlJZChpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmxvYWRBbmRTZXRGaW5kUmVwbGFjZURhdGFCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2FuY2VsKCkge1xyXG4gICAgLy8gQ2hlY2sgaWYgYmF0Y2ggaXMgcnVubmluZyAtIHNob3cgY29uZmlybWF0aW9uIG1vZGFsXHJcbiAgICBpZiAodGhpcy5pc0JhdGNoUnVubmluZygpKSB7XHJcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDYW5jZWxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHNpemU6ICdsZycsXHJcbiAgICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICAgIHdpbmRvd0NsYXNzOiAnY2FuY2VsLWNvbmZpcm1hdGlvbi1tb2RhbCdcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGFsUmVmLnJlc3VsdDtcclxuICAgICAgICAvLyBVc2VyIGNvbmZpcm1lZCBjYW5jZWxsYXRpb25cclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnByb2NlZWRXaXRoQ2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChkaXNtaXNzZWQpIHtcclxuICAgICAgICAvLyBVc2VyIGRpc21pc3NlZCB0aGUgbW9kYWwgKGNsaWNrZWQgXCJLZWVwIFByb2Nlc3NpbmdcIiBvciBvdXRzaWRlKVxyXG4gICAgICAgIC8vIERvIG5vdGhpbmcsIGp1c3QgY2xvc2UgdGhlIG1vZGFsXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIG5vdCBiYXRjaCBydW5uaW5nLCBwcm9jZWVkIGRpcmVjdGx5IHdpdGggY2FuY2VsXHJcbiAgICAgIHRoaXMucHJvY2VlZFdpdGhDYW5jZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2VlZFdpdGhDYW5jZWwoKSB7XHJcbiAgICAvLyBJZiB0aGVyZSdzIGEgZmluZFJlcGxhY2VJZCwgY2FsbCB0aGUgY2FuY2VsIEFQSSBhbmQgcmVmZXRjaCBkYXRhXHJcbiAgICBpZiAodGhpcy5maW5kUmVwbGFjZURhdGE/Ll9pZCkge1xyXG4gICAgICBjb25zdCBmaW5kUmVwbGFjZUlkID0gdGhpcy5maW5kUmVwbGFjZURhdGEuX2lkO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuY2FuY2VsRmluZFJlcGxhY2Uoe1xyXG4gICAgICAgIGZpbmRSZXBsYWNlSWQ6IGZpbmRSZXBsYWNlSWRcclxuICAgICAgfSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vIFJlZmV0Y2ggZmluZCBhbmQgcmVwbGFjZSBkYXRhIGFmdGVyIHN1Y2Nlc3NmdWwgY2FuY2VsXHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZChmaW5kUmVwbGFjZUlkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChnZXRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RmluZFJlcGxhY2VEYXRhKGdldFJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZpbmQgcmVwbGFjZSBkYXRhOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FuY2VsaW5nIGZpbmQgcmVwbGFjZTonLCByZXNwb25zZT8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FuY2VsaW5nIGZpbmQgcmVwbGFjZTonLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBubyBJRCwganVzdCBuYXZpZ2F0ZSBhd2F5XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS9wbGFub2dyYW0vZmluZC1yZXBsYWNlLXRhYmxlJ10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CYWNrVG9EYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvcGxhbm9ncmFtL2ZpbmQtcmVwbGFjZS10YWJsZSddKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZURyYWZ0KCkge1xyXG4gICAgY29uc3QgY3VycmVudFRpdGxlID0gdGhpcy5maW5kUmVwbGFjZURhdGE/Lm5hbWUgfHwgdGhpcy50aXRsZSB8fCAnJztcclxuICAgIGlmICghY3VycmVudFRpdGxlIHx8IGN1cnJlbnRUaXRsZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFdhcm5pbmdUb2FzdCgnUGxlYXNlIGVudGVyIGEgdGl0bGUgYmVmb3JlIHNhdmluZycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBQYXNzIHRydWUgdG8gc2hvd1RvYXN0IHBhcmFtZXRlciB0byBzaG93IHRoZSB0b2FzdCB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnRyaWdnZXJTYXZlRHJhZnQodW5kZWZpbmVkLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIGlzU3RlcDJBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV2aWV3U3RhdHVzZXM6IEFycmF5PEZpbmRSZXBsYWNlWydzdGF0dXMnXT4gPSBbJ3lldC10by1hcHByb3ZlJywgJ2FwcHJvdmVkJywgJ3NjaGVkdWxlZCddO1xyXG4gICAgcmV0dXJuIHJldmlld1N0YXR1c2VzLmluY2x1ZGVzKHRoaXMuZmluZFJlcGxhY2VEYXRhLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBpc0xpbmVBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1N0ZXAyQWN0aXZlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgc3RlcHBlciBzdGVwcyBhcmUgY2xpY2thYmxlIChzdGF0dXMgaXMgeWV0LXRvLWFwcHJvdmUgb3IgYXBwcm92ZWQpXHJcbiAgICovXHJcbiAgaXNTdGVwcGVyQ2xpY2thYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNTdGVwMkFjdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY3VycmVudGx5IG9uIHRoZSBwcmVwYXJlIHJvdXRlXHJcbiAgICovXHJcbiAgaXNPblByZXBhcmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCcvcHJlcGFyZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY3VycmVudGx5IG9uIHRoZSByZXZpZXcgcm91dGVcclxuICAgKi9cclxuICBpc09uUmV2aWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnL3JldmlldycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gcHJlcGFyZSBzdGVwXHJcbiAgICovXHJcbiAgZ29Ub1N0ZXAxKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgdGhpcy5pc09uUmV2aWV3KCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL3ByZXBhcmUnXSwge1xyXG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIHJldmlldyBzdGVwXHJcbiAgICovXHJcbiAgZ29Ub1N0ZXAyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNTdGVwcGVyQ2xpY2thYmxlKCkgJiYgdGhpcy5pc09uUHJlcGFyZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi9yZXZpZXcnXSwge1xyXG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQmF0Y2hSdW5uaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJztcclxuICB9XHJcblxyXG4gIGdldEJhdGNoUHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRSZXBsYWNlRGF0YT8uYmF0Y2hQcm9ncmVzcyA/PyAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdG9yZUNvdW50IHx8IHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdG9yZXM/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUmVwbGFjZURhdGE/Lm5hbWUgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYWN0dWFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmZpbmRSZXBsYWNlRGF0YSkge1xyXG4gICAgICB0aGlzLmZpbmRSZXBsYWNlRGF0YS5uYW1lID0gYWN0dWFsVmFsdWU7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgc2VydmljZSB3aXRoIHRoZSBuZXcgbmFtZVxyXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLnVwZGF0ZURhdGEoeyBuYW1lOiBhY3R1YWxWYWx1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgZGF0YSBpZiBpdCBkb2Vzbid0IGV4aXN0XHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UudXBkYXRlRGF0YSh7IFxyXG4gICAgICAgIG5hbWU6IGFjdHVhbFZhbHVlLFxyXG4gICAgICAgIHN0YXR1czogJ2RyYWZ0JyxcclxuICAgICAgICB0YXJnZXQ6ICdtZXJjaCdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRTY2hlZHVsZWREYXRlKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcbiAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gZGF0ZVN0cmluZztcclxuICAgIFxyXG4gICAgLy8gRm9ybWF0OiBcIjExIEZlYiwgMjAyNlwiXHJcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ107XHJcbiAgICBjb25zdCBtb250aCA9IG1vbnRoTmFtZXNbZGF0ZS5nZXRNb250aCgpXTtcclxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBcclxuICAgIHJldHVybiBgJHtkYXl9ICR7bW9udGh9LCAke3llYXJ9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBzdGF0dXMtYmFzZWQgcm91dGluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlU3RhdHVzQmFzZWRSb3V0aW5nKHN0YXR1czogRmluZFJlcGxhY2VbJ3N0YXR1cyddKTogdm9pZCB7XHJcbiAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGNvbnN0IHJldmlld1N0YXR1c2VzOiBBcnJheTxGaW5kUmVwbGFjZVsnc3RhdHVzJ10+ID0gWyd5ZXQtdG8tYXBwcm92ZScsICdhcHByb3ZlZCcsICdzY2hlZHVsZWQnXTtcclxuICAgIFxyXG4gICAgLy8gUmVkaXJlY3QgdG8gL3JldmlldyBpZiBzdGF0dXMgaXMgaW4gcmV2aWV3IHN0YXR1c2VzXHJcbiAgICBpZiAocmV2aWV3U3RhdHVzZXMuaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgYWxyZWFkeSBvbiB0aGUgcmV2aWV3IHJvdXRlXHJcbiAgICAgIGlmICghY3VycmVudFVybC5pbmNsdWRlcygnL3JldmlldycpKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuL3JldmlldyddLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBSZWRpcmVjdCB0byAvcHJlcGFyZSBpZiBzdGF0dXMgaXMgZHJhZnRcclxuICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xyXG4gICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgYWxyZWFkeSBvbiB0aGUgcHJlcGFyZSByb3V0ZVxyXG4gICAgICBpZiAoIWN1cnJlbnRVcmwuaW5jbHVkZXMoJy9wcmVwYXJlJykpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vcHJlcGFyZSddLCB7XHJcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgYmF0Y2ggcHJvZ3Jlc3MgYW5kIHJlZmV0Y2ggZmluZCByZXBsYWNlIGRhdGFcclxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYm90aCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmZpbmRSZXBsYWNlRGF0YT8uX2lkKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUJhdGNoUHJvZ3Jlc3Moe1xyXG4gICAgICAgIGZpbmRSZXBsYWNlSWQ6IHRoaXMuZmluZFJlcGxhY2VEYXRhLl9pZFxyXG4gICAgICB9KVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEFmdGVyIHVwZGF0aW5nIGJhdGNoIHByb2dyZXNzLCByZWZldGNoIHRoZSBmaW5kIHJlcGxhY2UgZGF0YVxyXG4gICAgICAgICAgICBpZiAodGhpcy5maW5kUmVwbGFjZURhdGE/Ll9pZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UubG9hZEZpbmRSZXBsYWNlRGF0YUJ5SWQodGhpcy5maW5kUmVwbGFjZURhdGEuX2lkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChnZXRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RmluZFJlcGxhY2VEYXRhKGdldFJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBmaW5kIHJlcGxhY2UgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOyAvLyBSZXNvbHZlIGFueXdheSB0byBjb250aW51ZSBwb2xsaW5nXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgYmF0Y2ggcHJvZ3Jlc3M6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICByZXNvbHZlKCk7IC8vIFJlc29sdmUgYW55d2F5IHRvIGNvbnRpbnVlIHBvbGxpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgcG9sbGluZyBmb3IgYmF0Y2ggcHJvZ3Jlc3MgdXBkYXRlcyBldmVyeSAxMCBzZWNvbmRzXHJcbiAgICogVGltZXIgb25seSBzdGFydHMgYWZ0ZXIgYm90aCB1cGRhdGUgYW5kIGdldCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0QmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTogdm9pZCB7XHJcbiAgICAvLyBEb24ndCBzdGFydCBpZiBhbHJlYWR5IHBvbGxpbmdcclxuICAgIGlmICh0aGlzLmlzUG9sbGluZ0FjdGl2ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIGludGVydmFsL3RpbWVvdXRcclxuICAgIHRoaXMuc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk7XHJcblxyXG4gICAgLy8gTWFyayBwb2xsaW5nIGFzIGFjdGl2ZVxyXG4gICAgdGhpcy5pc1BvbGxpbmdBY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIFN0YXJ0IHRoZSBwb2xsaW5nIGN5Y2xlXHJcbiAgICB0aGlzLnNjaGVkdWxlTmV4dFBvbGwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjaGVkdWxlIHRoZSBuZXh0IHBvbGwgYWZ0ZXIgYm90aCBBUEkgY2FsbHMgY29tcGxldGVcclxuICAgKi9cclxuICBwcml2YXRlIHNjaGVkdWxlTmV4dFBvbGwoKTogdm9pZCB7XHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgdGltZW91dFxyXG4gICAgaWYgKHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHBvbGxpbmdcclxuICAgIGlmICh0aGlzLmZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzICE9PSAnYmF0Y2gtcnVubmluZycpIHtcclxuICAgICAgdGhpcy5zdG9wQmF0Y2hQcm9ncmVzc1BvbGxpbmcoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhbGwgdGhlIEFQSXMgYW5kIHNjaGVkdWxlIG5leHQgcG9sbCBhZnRlciB0aGV5IGNvbXBsZXRlXHJcbiAgICB0aGlzLnVwZGF0ZUJhdGNoUHJvZ3Jlc3NBbmRSZWZldGNoKClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIC8vIE9ubHkgc2NoZWR1bGUgbmV4dCBwb2xsIGlmIHN0YXR1cyBpcyBzdGlsbCBiYXRjaC1ydW5uaW5nXHJcbiAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgLy8gU3RhcnQgdGltZXIgZm9yIG5leHQgcG9sbCAoMTAgc2Vjb25kcyBhZnRlciBib3RoIEFQSXMgY29tcGxldGUpXHJcbiAgICAgICAgICB0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlTmV4dFBvbGwoKTtcclxuICAgICAgICAgIH0sIDEwMDAwKTsgLy8gMTAgc2Vjb25kc1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTdG9wIHBvbGxpbmcgaWYgc3RhdHVzIGNoYW5nZWRcclxuICAgICAgICAgIHRoaXMuc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gcG9sbGluZyBjeWNsZTonLCBlcnJvcik7XHJcbiAgICAgICAgLy8gQ29udGludWUgcG9sbGluZyBldmVuIG9uIGVycm9yXHJcbiAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdiYXRjaC1ydW5uaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5iYXRjaFByb2dyZXNzSW50ZXJ2YWwgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU5leHRQb2xsKCk7XHJcbiAgICAgICAgICB9LCAxMDAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgcG9sbGluZyBmb3IgYmF0Y2ggcHJvZ3Jlc3MgdXBkYXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RvcEJhdGNoUHJvZ3Jlc3NQb2xsaW5nKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJhdGNoUHJvZ3Jlc3NJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuYmF0Y2hQcm9ncmVzc0ludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQb2xsaW5nQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJyZWFkY3J1bWJzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0ZpbmQgJiBSZXBsYWNlJyxcclxuICAgICAgICBwYXRoOiAnL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZXM/dGFiPWZpbmQtcmVwbGFjZScsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnRmluZCAmIFJlcGxhY2UgVGFibGUnLFxyXG4gICAgICAgIHBhdGg6ICcvbWFuYWdlL3BsYW5vZ3JhbS9maW5kLXJlcGxhY2UtdGFibGUnLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnMpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlByZXBhcmUgJiBSZXZpZXdcIik7XHJcblxyXG4gIH1cclxuXHJcbiAgaXNBcHByb3ZlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzID09PSAnYXBwcm92ZWQnO1xyXG4gIH1cclxuXHJcbiAgaGFzQW55QWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkU2hvd1Jlc2NoZWR1bGUoKTtcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dSZXNjaGVkdWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlcGxhY2VEYXRhPy5zdGF0dXMgPT09ICdzY2hlZHVsZWQnO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0KCk6IHZvaWQge1xyXG4gICAgLy8gRW5hYmxlIGVkaXQgbW9kZSBpbiBkYXRhIHNlcnZpY2VcclxuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RWRpdE1vZGUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblJlc2NoZWR1bGUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuZmluZFJlcGxhY2VEYXRhPy5faWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZXNjaGVkdWxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6ICdtZCcsXHJcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcclxuICAgICAgd2luZG93Q2xhc3M6ICdyZXNjaGVkdWxlLW1vZGFsJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gUGFzcyB0aGUgaW5pdGlhbCBzY2hlZHVsZSB2YWx1ZXMgdG8gdGhlIG1vZGFsXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbml0aWFsU2NoZWR1bGUgPSB0aGlzLmZpbmRSZXBsYWNlRGF0YT8uc2NoZWR1bGUgfHwgZmFsc2U7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbml0aWFsU2NoZWR1bGVEYXRlID0gdGhpcy5maW5kUmVwbGFjZURhdGE/LnNjaGVkdWxlRGF0ZSB8fCBudWxsO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vZGFsUmVmLnJlc3VsdDtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIC8vIFByZXBhcmUgZGF0YSBmb3Igc2F2ZUFzRHJhZnQgQVBJXHJcbiAgICAgICAgY29uc3QgZHJhZnREYXRhOiBhbnkgPSB7XHJcbiAgICAgICAgICBpZDogdGhpcy5maW5kUmVwbGFjZURhdGEuX2lkLFxyXG4gICAgICAgICAgc2NoZWR1bGU6IHJlc3VsdC5zY2hlZHVsZSxcclxuICAgICAgICAgIHNjaGVkdWxlRGF0ZTogcmVzdWx0LnNjaGVkdWxlRGF0ZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIENhbGwgc2F2ZUFzRHJhZnQgQVBJIGZpcnN0XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2Uuc2F2ZUFzRHJhZnQoZHJhZnREYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IHJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgLy8gSWYgc2NoZWR1bGUgaXMgZmFsc2UsIGNhbGwgYXBwcm92ZVJlcGxhY2UgQVBJXHJcbiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2NoZWR1bGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5hcHByb3ZlUmVwbGFjZSh7XHJcbiAgICAgICAgICAgICAgICAgIGZpbmRSZXBsYWNlSWQ6IHRoaXMuZmluZFJlcGxhY2VEYXRhIS5faWRcclxuICAgICAgICAgICAgICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgIG5leHQ6IChhcHByb3ZlUmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwcm92ZVJlcz8uc3RhdHVzID09PSAnc3VjY2VzcycgfHwgYXBwcm92ZVJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoYXBwcm92ZVJlcz8ubWVzc2FnZSB8fCAnRmluZCBhbmQgcmVwbGFjZSBhcHByb3ZlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmluZFJlcGxhY2VEYXRhPy5faWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5sb2FkRmluZFJlcGxhY2VEYXRhQnlJZCh0aGlzLmZpbmRSZXBsYWNlRGF0YS5faWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKGdldFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgZ2V0UmVzcG9uc2U/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldEZpbmRSZXBsYWNlRGF0YShnZXRSZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZmluZCByZXBsYWNlIGRhdGE6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGFwcHJvdmVSZXM/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBhcHByb3ZlIGZpbmQgYW5kIHJlcGxhY2UnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAoYXBwcm92ZUVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoYXBwcm92ZUVycj8uZXJyb3I/LmVycm9yIHx8IGFwcHJvdmVFcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gYXBwcm92ZSBmaW5kIGFuZCByZXBsYWNlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYXBwcm92aW5nIGZpbmQgcmVwbGFjZTonLCBhcHByb3ZlRXJyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFNjaGVkdWxlIGlzIHRydWUsIGp1c3Qgc2hvdyBzdWNjZXNzIG1lc3NhZ2UgYW5kIHJlbG9hZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QocmVzPy5tZXNzYWdlIHx8ICdGaW5kIGFuZCByZXBsYWNlIHJlc2NoZWR1bGVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgICAgICAgLy8gUmVsb2FkIHRoZSBkYXRhXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5kUmVwbGFjZURhdGE/Ll9pZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmxvYWRGaW5kUmVwbGFjZURhdGFCeUlkKHRoaXMuZmluZFJlcGxhY2VEYXRhLl9pZClcclxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAoZ2V0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0UmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiBnZXRSZXNwb25zZT8uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0RmluZFJlcGxhY2VEYXRhKGdldFJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBmaW5kIHJlcGxhY2UgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QocmVzPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gcmVzY2hlZHVsZSBmaW5kIGFuZCByZXBsYWNlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yPy5lcnJvciB8fCBlcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gcmVzY2hlZHVsZSBmaW5kIGFuZCByZXBsYWNlJyk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlc2NoZWR1bGluZyBmaW5kIHJlcGxhY2U6JywgZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gVXNlciBkaXNtaXNzZWQgdGhlIG1vZGFsXHJcbiAgICAgIGNvbnNvbGUubG9nKCdSZXNjaGVkdWxlIG1vZGFsIGRpc21pc3NlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3BCYXRjaFByb2dyZXNzUG9sbGluZygpO1xyXG4gICAgLy8gQ2xlYXIgc2VydmljZSBkYXRhIHdoZW4gZXhpdGluZyB0aGUgY29tcG9uZW50XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsZWFyRGF0YSgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIiAgICA8IS0tIEJhdGNoIFJ1bm5pbmcgVUkgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNCYXRjaFJ1bm5pbmcoKVwiIGNsYXNzPVwiYmF0Y2gtcHJvY2Vzc2luZy1jb250YWluZXJcIj5cclxuICAgICAgICA8IS0tIFNWRyBJbGx1c3RyYXRpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJhdGNoLWlsbHVzdHJhdGlvblwiPlxyXG4gICAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDMzMSAxODNcIj5cclxuICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXAgMjg5MVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjQ3Ljk5IDQ2QzI2OC4xNDkgNDYgMjg0LjQ5IDYyLjM0MTYgMjg0LjQ5IDgyLjVDMjg0LjQ5IDkxLjA3ODggMjkwLjI4MSAxMDEgMjk4Ljg1OSAxMDFIMzEyQzMyMi40OTMgMTAxIDMzMSAxMDkuNTA3IDMzMSAxMjBDMzMxIDEzMC40OTMgMzIyLjQ5MyAxMzkgMzEyIDEzOUgyNzIuOTYyQzI2OC42MzQgMTM5IDI2NS43MjEgMTQ0LjE3MSAyNjUuNzIxIDE0OC41QzI2NS43MjEgMTU4LjE2NSAyNTcuODg2IDE2NiAyNDguMjIxIDE2NkgxMTkuMjIxQzEwOS41NTYgMTY2IDEwMS43MjEgMTU4LjE2NSAxMDEuNzIxIDE0OC41QzEwMS43MjEgMTQ0LjE3MSA5OC44MDc3IDEzOSA5NC40NzkgMTM5SDE5QzguNTA2NTkgMTM5IDAgMTMwLjQ5MyAwIDEyMEMwIDEwOS41MDcgOC41MDY1OSAxMDEgMTkgMTAxSDY1LjEyMUM3My42OTk4IDEwMSA3OS40OTAyIDkxLjA3ODggNzkuNDkwMiA4Mi41Qzc5LjQ5MDIgNjIuMzQxNiA5NS44MzE5IDQ2IDExNS45OSA0NkgyNDcuOTlaXCIgZmlsbD1cIiNFQUVDRjBcIiBpZD1cIlVuaW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCBmaWxsPVwiIzk5REFGRlwiIGhlaWdodD1cIjEwNFwiIGlkPVwiUmVjdGFuZ2xlIDIyNzBcIiByeD1cIjRcIiB3aWR0aD1cIjY0XCIgeD1cIjE3Ni4xOVwiIHk9XCI3NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgZmlsbD1cIiM5OURBRkZcIiBoZWlnaHQ9XCIxMDRcIiBpZD1cIlJlY3RhbmdsZSAyMjY5XCIgcng9XCI0XCIgd2lkdGg9XCI2NFwiIHg9XCIxMTkuMTlcIiB5PVwiMTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjI1LjYwNSAxMjEuNDE0QzIyNi4zODYgMTIwLjYzMyAyMjYuMzg2IDExOS4zNjcgMjI1LjYwNSAxMTguNTg2TDIxMi44NzcgMTA1Ljg1OEMyMTIuMDk2IDEwNS4wNzcgMjEwLjgyOSAxMDUuMDc3IDIxMC4wNDggMTA1Ljg1OEMyMDkuMjY3IDEwNi42MzkgMjA5LjI2NyAxMDcuOTA1IDIxMC4wNDggMTA4LjY4NkwyMjEuMzYyIDEyMEwyMTAuMDQ4IDEzMS4zMTRDMjA5LjI2NyAxMzIuMDk1IDIwOS4yNjcgMTMzLjM2MSAyMTAuMDQ4IDEzNC4xNDJDMjEwLjgyOSAxMzQuOTIzIDIxMi4wOTYgMTM0LjkyMyAyMTIuODc3IDEzNC4xNDJMMjI1LjYwNSAxMjEuNDE0Wk0xODIuMTkgNDkuNUMxODIuMTkgNTAuNjA0NiAxODMuMDg2IDUxLjUgMTg0LjE5IDUxLjVDMTg1LjI5NSA1MS41IDE4Ni4xOSA1MC42MDQ2IDE4Ni4xOSA0OS41SDE4NC4xOUgxODIuMTlaTTEyNC4xOSAxNVYxN0gxNzguMTlWMTVWMTNIMTI0LjE5VjE1Wk0yMjQuMTkgMTIwVjExOEgxMjQuMTlWMTIwVjEyMkgyMjQuMTlWMTIwWk0xMTguMTkgMTE0SDEyMC4xOVYyMUgxMTguMTlIMTE2LjE5VjExNEgxMTguMTlaTTE4NC4xOSAyMUgxODIuMTlWNDkuNUgxODQuMTlIMTg2LjE5VjIxSDE4NC4xOVpNMTI0LjE5IDEyMFYxMThDMTIxLjk4MSAxMTggMTIwLjE5IDExNi4yMDkgMTIwLjE5IDExNEgxMTguMTlIMTE2LjE5QzExNi4xOSAxMTguNDE4IDExOS43NzIgMTIyIDEyNC4xOSAxMjJWMTIwWk0xNzguMTkgMTVWMTdDMTgwLjQgMTcgMTgyLjE5IDE4Ljc5MDkgMTgyLjE5IDIxSDE4NC4xOUgxODYuMTlDMTg2LjE5IDE2LjU4MTcgMTgyLjYwOSAxMyAxNzguMTkgMTNWMTVaTTEyNC4xOSAxNVYxM0MxMTkuNzcyIDEzIDExNi4xOSAxNi41ODE3IDExNi4xOSAyMUgxMTguMTlIMTIwLjE5QzEyMC4xOSAxOC43OTA5IDEyMS45ODEgMTcgMTI0LjE5IDE3VjE1WlwiIGZpbGw9XCIjMDBBM0ZGXCIgaWQ9XCJSZWN0YW5nbGUgMjI1NFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMzIuNzc2IDc0LjU4NThDMTMxLjk5NSA3NS4zNjY4IDEzMS45OTUgNzYuNjMzMiAxMzIuNzc2IDc3LjQxNDJMMTQ1LjUwNCA5MC4xNDIxQzE0Ni4yODUgOTAuOTIzMiAxNDcuNTUyIDkwLjkyMzIgMTQ4LjMzMyA5MC4xNDIxQzE0OS4xMTQgODkuMzYxMSAxNDkuMTE0IDg4LjA5NDcgMTQ4LjMzMyA4Ny4zMTM3TDEzNy4wMTkgNzZMMTQ4LjMzMyA2NC42ODYzQzE0OS4xMTQgNjMuOTA1MiAxNDkuMTE0IDYyLjYzODkgMTQ4LjMzMyA2MS44NTc5QzE0Ny41NTIgNjEuMDc2OCAxNDYuMjg1IDYxLjA3NjggMTQ1LjUwNCA2MS44NTc5TDEzMi43NzYgNzQuNTg1OFpNMTc2LjE5IDE0Ni41QzE3Ni4xOSAxNDUuMzk1IDE3NS4yOTUgMTQ0LjUgMTc0LjE5IDE0NC41QzE3My4wODYgMTQ0LjUgMTcyLjE5IDE0NS4zOTUgMTcyLjE5IDE0Ni41TDE3NC4xOSAxNDYuNUwxNzYuMTkgMTQ2LjVaTTIzNC4xOSAxODFMMjM0LjE5IDE3OUwxODAuMTkgMTc5TDE4MC4xOSAxODFMMTgwLjE5IDE4M0wyMzQuMTkgMTgzTDIzNC4xOSAxODFaTTEzNC4xOSA3NkwxMzQuMTkgNzhMMjM0LjE5IDc4TDIzNC4xOSA3NkwyMzQuMTkgNzRMMTM0LjE5IDc0TDEzNC4xOSA3NlpNMjQwLjE5IDgyTDIzOC4xOSA4MkwyMzguMTkgMTc1TDI0MC4xOSAxNzVMMjQyLjE5IDE3NUwyNDIuMTkgODJMMjQwLjE5IDgyWk0xNzQuMTkgMTc1TDE3Ni4xOSAxNzVMMTc2LjE5IDE0Ni41TDE3NC4xOSAxNDYuNUwxNzIuMTkgMTQ2LjVMMTcyLjE5IDE3NUwxNzQuMTkgMTc1Wk0yMzQuMTkgNzZMMjM0LjE5IDc4QzIzNi40IDc4IDIzOC4xOSA3OS43OTA5IDIzOC4xOSA4MkwyNDAuMTkgODJMMjQyLjE5IDgyQzI0Mi4xOSA3Ny41ODE3IDIzOC42MDkgNzQgMjM0LjE5IDc0TDIzNC4xOSA3NlpNMTgwLjE5IDE4MUwxODAuMTkgMTc5QzE3Ny45ODEgMTc5IDE3Ni4xOSAxNzcuMjA5IDE3Ni4xOSAxNzVMMTc0LjE5IDE3NUwxNzIuMTkgMTc1QzE3Mi4xOSAxNzkuNDE4IDE3NS43NzIgMTgzIDE4MC4xOSAxODNMMTgwLjE5IDE4MVpNMjM0LjE5IDE4MUwyMzQuMTkgMTgzQzIzOC42MDkgMTgzIDI0Mi4xOSAxNzkuNDE4IDI0Mi4xOSAxNzVMMjQwLjE5IDE3NUwyMzguMTkgMTc1QzIzOC4xOSAxNzcuMjA5IDIzNi40IDE3OSAyMzQuMTkgMTc5TDIzNC4xOSAxODFaXCIgZmlsbD1cIiMwMEEzRkZcIiBpZD1cIlJlY3RhbmdsZSAyMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0MC4yMzIgMzBMMTQwLjk1IDMzLjQyODFDMTQxLjMxNiAzNS4xNzU4IDE0Mi4xMjkgMzYuNzk4OSAxNDMuMzA5IDM4LjEzOUMxNDQuNDg5IDM5LjQ3OTEgMTQ1Ljk5NiA0MC40OTA2IDE0Ny42ODQgNDEuMDc0N0wxNDkuMjc0IDQxLjYyNUwxNDcuNjg0IDQyLjE3NTJDMTQ1Ljk5NiA0Mi43NTk0IDE0NC40ODkgNDMuNzcwOSAxNDMuMzA5IDQ1LjExMUMxNDIuMTI5IDQ2LjQ1MTEgMTQxLjMxNiA0OC4wNzQyIDE0MC45NSA0OS44MjE5TDE0MC4yMzIgNTMuMjVMMTM5LjUxNCA0OS44MjE5QzEzOS4xNDggNDguMDc0MiAxMzguMzM1IDQ2LjQ1MTEgMTM3LjE1NSA0NS4xMTFDMTM1Ljk3NSA0My43NzA5IDEzNC40NjggNDIuNzU5NCAxMzIuNzggNDIuMTc1MkwxMzEuMTkgNDEuNjI1TDEzMi43OCA0MS4wNzQ3QzEzNC40NjggNDAuNDkwNiAxMzUuOTc1IDM5LjQ3OTEgMTM3LjE1NSAzOC4xMzlDMTM4LjMzNSAzNi43OTg5IDEzOS4xNDggMzUuMTc1OCAxMzkuNTE0IDMzLjQyODFMMTQwLjIzMiAzMFpcIiBpZD1cIlZlY3RvclwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxNy4yMzIgMTQzTDIxNy45NSAxNDYuNDI4QzIxOC4zMTYgMTQ4LjE3NiAyMTkuMTI5IDE0OS43OTkgMjIwLjMwOSAxNTEuMTM5QzIyMS40ODkgMTUyLjQ3OSAyMjIuOTk2IDE1My40OTEgMjI0LjY4NCAxNTQuMDc1TDIyNi4yNzQgMTU0LjYyNUwyMjQuNjg0IDE1NS4xNzVDMjIyLjk5NiAxNTUuNzU5IDIyMS40ODkgMTU2Ljc3MSAyMjAuMzA5IDE1OC4xMTFDMjE5LjEyOSAxNTkuNDUxIDIxOC4zMTYgMTYxLjA3NCAyMTcuOTUgMTYyLjgyMkwyMTcuMjMyIDE2Ni4yNUwyMTYuNTE0IDE2Mi44MjJDMjE2LjE0OCAxNjEuMDc0IDIxNS4zMzUgMTU5LjQ1MSAyMTQuMTU1IDE1OC4xMTFDMjEyLjk3NSAxNTYuNzcxIDIxMS40NjggMTU1Ljc1OSAyMDkuNzggMTU1LjE3NUwyMDguMTkgMTU0LjYyNUwyMDkuNzggMTU0LjA3NUMyMTEuNDY4IDE1My40OTEgMjEyLjk3NSAxNTIuNDc5IDIxNC4xNTUgMTUxLjEzOUMyMTUuMzM1IDE0OS43OTkgMjE2LjE0OCAxNDguMTc2IDIxNi41MTQgMTQ2LjQyOEwyMTcuMjMyIDE0M1pcIiBpZD1cIlZlY3Rvcl8yXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkyLjE5IDE0OEwxOTIuNTg4IDE0OS45MTdDMTkyLjc5IDE1MC44OTQgMTkzLjIzOSAxNTEuODAyIDE5My44OTIgMTUyLjU1MUMxOTQuNTQ1IDE1My4zIDE5NS4zNzggMTUzLjg2NiAxOTYuMzExIDE1NC4xOTJMMTk3LjE5IDE1NC41TDE5Ni4zMTEgMTU0LjgwOEMxOTUuMzc4IDE1NS4xMzQgMTk0LjU0NSAxNTUuNyAxOTMuODkyIDE1Ni40NDlDMTkzLjIzOSAxNTcuMTk4IDE5Mi43OSAxNTguMTA2IDE5Mi41ODggMTU5LjA4M0wxOTIuMTkgMTYxTDE5MS43OTMgMTU5LjA4M0MxOTEuNTkxIDE1OC4xMDYgMTkxLjE0MSAxNTcuMTk4IDE5MC40ODkgMTU2LjQ0OUMxODkuODM2IDE1NS43IDE4OS4wMDMgMTU1LjEzNCAxODguMDcgMTU0LjgwOEwxODcuMTkgMTU0LjVMMTg4LjA3IDE1NC4xOTJDMTg5LjAwMyAxNTMuODY2IDE4OS44MzYgMTUzLjMgMTkwLjQ4OSAxNTIuNTUxQzE5MS4xNDEgMTUxLjgwMiAxOTEuNTkxIDE1MC44OTQgMTkxLjc5MyAxNDkuOTE3TDE5Mi4xOSAxNDhaXCIgaWQ9XCJWZWN0b3JfM1wiIHN0cm9rZT1cIiM2QkNBRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwNy4xOSAyTDEwNy41ODggMy45MTY3OEMxMDcuNzkgNC44OTQgMTA4LjIzOSA1LjgwMTUyIDEwOC44OTIgNi41NTA4NEMxMDkuNTQ1IDcuMzAwMTYgMTEwLjM3OCA3Ljg2NTcxIDExMS4zMTEgOC4xOTIzM0wxMTIuMTkgOC41TDExMS4zMTEgOC44MDc2N0MxMTAuMzc4IDkuMTM0MjkgMTA5LjU0NSA5LjY5OTg0IDEwOC44OTIgMTAuNDQ5MkMxMDguMjM5IDExLjE5ODUgMTA3Ljc5IDEyLjEwNiAxMDcuNTg4IDEzLjA4MzJMMTA3LjE5IDE1TDEwNi43OTMgMTMuMDgzMkMxMDYuNTkxIDEyLjEwNiAxMDYuMTQxIDExLjE5ODUgMTA1LjQ4OSAxMC40NDkyQzEwNC44MzYgOS42OTk4NCAxMDQuMDAzIDkuMTM0MjkgMTAzLjA3IDguODA3NjdMMTAyLjE5IDguNUwxMDMuMDcgOC4xOTIzM0MxMDQuMDAzIDcuODY1NzEgMTA0LjgzNiA3LjMwMDE2IDEwNS40ODkgNi41NTA4NEMxMDYuMTQxIDUuODAxNTIgMTA2LjU5MSA0Ljg5NCAxMDYuNzkzIDMuOTE2NzhMMTA3LjE5IDJaXCIgaWQ9XCJWZWN0b3JfNFwiIHN0cm9rZT1cIiM2QkNBRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI2Mi4xOSA4MUwyNjIuNTg4IDgyLjkxNjhDMjYyLjc5IDgzLjg5NCAyNjMuMjM5IDg0LjgwMTUgMjYzLjg5MiA4NS41NTA4QzI2NC41NDUgODYuMzAwMiAyNjUuMzc4IDg2Ljg2NTcgMjY2LjMxMSA4Ny4xOTIzTDI2Ny4xOSA4Ny41TDI2Ni4zMTEgODcuODA3N0MyNjUuMzc4IDg4LjEzNDMgMjY0LjU0NSA4OC42OTk4IDI2My44OTIgODkuNDQ5MkMyNjMuMjM5IDkwLjE5ODUgMjYyLjc5IDkxLjEwNiAyNjIuNTg4IDkyLjA4MzJMMjYyLjE5IDk0TDI2MS43OTMgOTIuMDgzMkMyNjEuNTkxIDkxLjEwNiAyNjEuMTQxIDkwLjE5ODUgMjYwLjQ4OSA4OS40NDkyQzI1OS44MzYgODguNjk5OCAyNTkuMDAzIDg4LjEzNDMgMjU4LjA3IDg3LjgwNzdMMjU3LjE5IDg3LjVMMjU4LjA3IDg3LjE5MjNDMjU5LjAwMyA4Ni44NjU3IDI1OS44MzYgODYuMzAwMiAyNjAuNDg5IDg1LjU1MDhDMjYxLjE0MSA4NC44MDE1IDI2MS41OTEgODMuODk0IDI2MS43OTMgODIuOTE2OEwyNjIuMTkgODFaXCIgaWQ9XCJWZWN0b3JfNVwiIHN0cm9rZT1cIiM2QkNBRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1NC41IDEzNEwxNTQuNzc4IDEzNS4zMjdDMTU0LjkyIDEzNi4wMDQgMTU1LjIzNCAxMzYuNjMyIDE1NS42OTEgMTM3LjE1MUMxNTYuMTQ4IDEzNy42NjkgMTU2LjczMSAxMzguMDYxIDE1Ny4zODQgMTM4LjI4N0wxNTggMTM4LjVMMTU3LjM4NCAxMzguNzEzQzE1Ni43MzEgMTM4LjkzOSAxNTYuMTQ4IDEzOS4zMzEgMTU1LjY5MSAxMzkuODQ5QzE1NS4yMzQgMTQwLjM2OCAxNTQuOTIgMTQwLjk5NiAxNTQuNzc4IDE0MS42NzNMMTU0LjUgMTQzTDE1NC4yMjIgMTQxLjY3M0MxNTQuMDggMTQwLjk5NiAxNTMuNzY2IDE0MC4zNjggMTUzLjMwOSAxMzkuODQ5QzE1Mi44NTIgMTM5LjMzMSAxNTIuMjY5IDEzOC45MzkgMTUxLjYxNiAxMzguNzEzTDE1MSAxMzguNUwxNTEuNjE2IDEzOC4yODdDMTUyLjI2OSAxMzguMDYxIDE1Mi44NTIgMTM3LjY2OSAxNTMuMzA5IDEzNy4xNTFDMTUzLjc2NiAxMzYuNjMyIDE1NC4wOCAxMzYuMDA0IDE1NC4yMjIgMTM1LjMyN0wxNTQuNSAxMzRaXCIgaWQ9XCJWZWN0b3JfNlwiIHN0cm9rZT1cIiM2QkNBRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTk1LjY5MDQgMTAxTDk2LjIwNjcgMTAzLjUwN0M5Ni40Njk4IDEwNC43ODQgOTcuMDU0MSAxMDUuOTcxIDk3LjkwMjQgMTA2Ljk1MUM5OC43NTA4IDEwNy45MzEgOTkuODM0MyAxMDguNjcxIDEwMS4wNDcgMTA5LjA5OEwxMDIuMTkgMTA5LjVMMTAxLjA0NyAxMDkuOTAyQzk5LjgzNDMgMTEwLjMyOSA5OC43NTA4IDExMS4wNjkgOTcuOTAyNCAxMTIuMDQ5Qzk3LjA1NDEgMTEzLjAyOSA5Ni40Njk4IDExNC4yMTYgOTYuMjA2NyAxMTUuNDkzTDk1LjY5MDQgMTE4TDk1LjE3NDEgMTE1LjQ5M0M5NC45MTEgMTE0LjIxNiA5NC4zMjY4IDExMy4wMjkgOTMuNDc4NCAxMTIuMDQ5QzkyLjYzMDEgMTExLjA2OSA5MS41NDY2IDExMC4zMjkgOTAuMzMzNSAxMDkuOTAyTDg5LjE5MDQgMTA5LjVMOTAuMzMzNSAxMDkuMDk4QzkxLjU0NjYgMTA4LjY3MSA5Mi42MzAxIDEwNy45MzEgOTMuNDc4NCAxMDYuOTUxQzk0LjMyNjggMTA1Ljk3MSA5NC45MTEgMTA0Ljc4NCA5NS4xNzQxIDEwMy41MDdMOTUuNjkwNCAxMDFaXCIgaWQ9XCJWZWN0b3JfN1wiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0Mi4yMzIgMjhMMTQyLjk1IDMxLjQyODFDMTQzLjMxNiAzMy4xNzU4IDE0NC4xMjkgMzQuNzk4OSAxNDUuMzA5IDM2LjEzOUMxNDYuNDg5IDM3LjQ3OTEgMTQ3Ljk5NiAzOC40OTA2IDE0OS42ODQgMzkuMDc0N0wxNTEuMjc0IDM5LjYyNUwxNDkuNjg0IDQwLjE3NTJDMTQ3Ljk5NiA0MC43NTk0IDE0Ni40ODkgNDEuNzcwOSAxNDUuMzA5IDQzLjExMUMxNDQuMTI5IDQ0LjQ1MTEgMTQzLjMxNiA0Ni4wNzQyIDE0Mi45NSA0Ny44MjE5TDE0Mi4yMzIgNTEuMjVMMTQxLjUxNCA0Ny44MjE5QzE0MS4xNDggNDYuMDc0MiAxNDAuMzM1IDQ0LjQ1MTEgMTM5LjE1NSA0My4xMTFDMTM3Ljk3NSA0MS43NzA5IDEzNi40NjggNDAuNzU5NCAxMzQuNzggNDAuMTc1MkwxMzMuMTkgMzkuNjI1TDEzNC43OCAzOS4wNzQ3QzEzNi40NjggMzguNDkwNiAxMzcuOTc1IDM3LjQ3OTEgMTM5LjE1NSAzNi4xMzlDMTQwLjMzNSAzNC43OTg5IDE0MS4xNDggMzMuMTc1OCAxNDEuNTE0IDMxLjQyODFMMTQyLjIzMiAyOFpcIiBpZD1cIlZlY3Rvcl84XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQ29udGVudCBTZWN0aW9uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1jb250ZW50LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPCEtLSBUZXh0IFNlY3Rpb24gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYmF0Y2gtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICBCYXRjaCBwcm9jZXNzaW5nPHNwYW4gY2xhc3M9XCJsb2FkaW5nLWRvdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj4uPC9zcGFuPjxzcGFuIGNsYXNzPVwiZG90XCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz1cImRvdFwiPi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJiYXRjaC1kZXNjcmlwdGlvblwiPlJ1bm5pbmcgYSBiYXRjaCBmb3IgYWxsIHt7IGdldFN0b3JlQ291bnQoKSB9fSBzdG9yZXMuIFRoaXMgbWlnaHQgdGFrZSBhIHdoaWxlLiBZb3UgY2FuIGNvbnRpbnVlIGJyb3dzaW5nIGFuZCBjaGVjayBiYWNrIGxhdGVyLjwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEJ1dHRvbiBDb250YWluZXIgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1idXR0b24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWJhdGNoLWN1c3RvbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1iYXRjaC1jdXN0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQmFja1RvRGFzaGJvYXJkKClcIj5CYWNrIFRvIERhc2hib2FyZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0JhdGNoUnVubmluZygpXCIgY2xhc3M9XCJoZWFkZXItY2FyZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICA8IS0tIFRpdGxlIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImhlYWRlci10aXRsZVwiIFsobmdNb2RlbCldPVwidGl0bGVcIiBwbGFjZWhvbGRlcj1cIlVudGl0bGVkXCIgW2Rpc2FibGVkXT1cImlzQXBwcm92ZWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzID09PSAnc2NoZWR1bGVkJyAmJiBmaW5kUmVwbGFjZURhdGE/LnNjaGVkdWxlRGF0ZVwiIGNsYXNzPVwic2NoZWR1bGVkLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjaGVkdWxlZC1iYWRnZVwiPlNjaGVkdWxlZDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzY2hlZHVsZWQtZGF0ZVwiPnt7IGZvcm1hdFNjaGVkdWxlZERhdGUoZmluZFJlcGxhY2VEYXRhIS5zY2hlZHVsZURhdGUhKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbmRSZXBsYWNlRGF0YT8uc3RhdHVzID09PSAnYXBwcm92ZWQnXCIgY2xhc3M9XCJjb21wbGV0ZWQtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGxldGVkLWJhZGdlXCI+Q29tcGxldGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPCEtLSBTdGVwcGVyIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLXN0ZXBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUmV2aWV3KClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9TdGVwMSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItY2lyY2xlIGFjdGl2ZVwiIFtjbGFzcy5jbGlja2FibGUtaW5kaWNhdG9yXT1cImlzU3RlcHBlckNsaWNrYWJsZSgpICYmIGlzT25SZXZpZXcoKVwiPjE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0ZXBwZXItdGV4dCBhY3RpdmVcIiBbY2xhc3MuY2xpY2thYmxlLWluZGljYXRvcl09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUmV2aWV3KClcIj5QcmVwYXJlIHRlbXBsYXRlPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0ZXAyQWN0aXZlKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLXN0ZXBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUHJlcGFyZSgpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvU3RlcDIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNpcmNsZVwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdGVwMkFjdGl2ZSgpXCIgW2NsYXNzLmluYWN0aXZlXT1cIiFpc1N0ZXAyQWN0aXZlKClcIiBbY2xhc3MuY2xpY2thYmxlLWluZGljYXRvcl09XCJpc1N0ZXBwZXJDbGlja2FibGUoKSAmJiBpc09uUHJlcGFyZSgpXCI+MjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RlcHBlci10ZXh0XCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0ZXAyQWN0aXZlKClcIiBbY2xhc3MuaW5hY3RpdmVdPVwiIWlzU3RlcDJBY3RpdmUoKVwiIFtjbGFzcy5jbGlja2FibGUtaW5kaWNhdG9yXT1cImlzU3RlcHBlckNsaWNrYWJsZSgpICYmIGlzT25QcmVwYXJlKClcIj5SZXZpZXcgYW5kIEFwcHJvdmU8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQmFja1RvRGFzaGJvYXJkKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2F2ZS1kcmFmdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25TYXZlRHJhZnQoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGlzQXBwcm92ZWQoKVwiPlNhdmUgQXMgRHJhZnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwhLS0gRWxsaXBzaXMgTWVudSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBtcy0yXCIgKm5nSWY9XCJoYXNBbnlBY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZlcnRpY2FsRG90c1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2hvdWxkU2hvd1Jlc2NoZWR1bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uUmVzY2hlZHVsZSgpXCI+UmVzY2hlZHVsZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2hvdWxkU2hvd1Jlc2NoZWR1bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uRWRpdCgpXCI+RWRpdDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDwhLS0gTWFpbiBDb250ZW50IC0tPlxyXG4gICAgPHJvdXRlci1vdXRsZXQgKm5nSWY9XCIhaXNCYXRjaFJ1bm5pbmcoKVwiPjwvcm91dGVyLW91dGxldD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmVydGljYWxEb3RzPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDQgMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMSA5QzEgOS41NTIyOCAxLjQ0NzcxIDEwIDIgMTBDMi41NTIyOCAxMCAzIDkuNTUyMjggMyA5QzMgOC40NDc3MiAyLjU1MjI4IDggMiA4QzEuNDQ3NzEgOCAxIDguNDQ3NzIgMSA5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIlxyXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMC45OTk5OTkgMTZDMC45OTk5OTkgMTYuNTUyMyAxLjQ0NzcxIDE3IDIgMTdDMi41NTIyOCAxNyAzIDE2LjU1MjMgMyAxNkMzIDE1LjQ0NzcgMi41NTIyOCAxNSAyIDE1QzEuNDQ3NzEgMTUgMC45OTk5OTkgMTUuNDQ3NyAwLjk5OTk5OSAxNlpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCJcclxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTEgMkMxIDIuNTUyMjggMS40NDc3MiAzIDIgM0MyLjU1MjI4IDMgMyAyLjU1MjI4IDMgMkMzIDEuNDQ3NzIgMi41NTIyOCAxIDIgMUMxLjQ0NzcyIDEgMSAxLjQ0NzcyIDEgMlpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCJcclxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|