fx-form-builder-wrapper 2.0.17 → 2.0.23

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.
@@ -25,8 +25,6 @@ export class UploaderComponent extends FxBaseComponent {
25
25
  { label: 'Past Docs', value: 17 },
26
26
  { label: 'X-Rays', value: 14 },
27
27
  { label: 'Profile', value: 18 },
28
- { label: 'App Assistance', value: 19 },
29
- { label: 'Stage Linked Files', value: 20 }
30
28
  ];
31
29
  destroy$ = new Subject();
32
30
  http = inject(HttpClient);
@@ -364,12 +362,12 @@ export class UploaderComponent extends FxBaseComponent {
364
362
  id: uuidv4(),
365
363
  file: file,
366
364
  originalUrl: null,
367
- result: null, // will be filled for images only
365
+ result: null,
368
366
  name: file.name,
369
367
  title: '',
370
368
  notes: '',
371
369
  categoryId: '',
372
- type: fileType, // <-- keep detected type
370
+ type: fileType,
373
371
  };
374
372
  if (fileType === 'image') {
375
373
  const reader = new FileReader();
@@ -484,4 +482,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
484
482
  type: Component,
485
483
  args: [{ selector: 'fx-uploader', standalone: true, imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule, FileUploadModule], template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload flex flex-col items-start justify-center gap-4 p-2 pb-0 rounded-sm\">\r\n <div class=\"flex gap-8 items-center mb-2\">\r\n <p class=\"text-base font-semibold\">Patient Images</p>\r\n <div class=\"flex justify-center items-center gap-2 upload\" (click)=\"fileInput.click()\">\r\n <div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M14.001 3.00195C11.5322 3.00195 9.16722 3.86956 7.23641 5.38414L7.23598 4.59695C7.23598 4.52473 7.22175 4.45321 7.19411 4.38648C7.16647 4.31975 7.12596 4.25912 7.07489 4.20804C7.02381 4.15697 6.96318 4.11646 6.89645 4.08882C6.82972 4.06118 6.7582 4.04695 6.68598 4.04695C6.61375 4.04695 6.54223 4.06118 6.4755 4.08882C6.40877 4.11646 6.34814 4.15697 6.29707 4.20804C6.24599 4.25912 6.20548 4.31975 6.17784 4.38648C6.1502 4.45321 6.13598 4.52473 6.13598 4.59695L6.13642 6.68652C6.13643 6.83239 6.19438 6.97228 6.29752 7.07542C6.40067 7.17856 6.54055 7.23651 6.68642 7.23652H8.77598C8.8482 7.23652 8.91972 7.2223 8.98645 7.19466C9.05318 7.16702 9.11381 7.12651 9.16489 7.07543C9.21596 7.02436 9.25647 6.96373 9.28411 6.897C9.31175 6.83027 9.32598 6.75875 9.32598 6.68652C9.32598 6.6143 9.31175 6.54278 9.28411 6.47605C9.25647 6.40932 9.21596 6.34869 9.16489 6.29761C9.11381 6.24654 9.05318 6.20603 8.98645 6.17839C8.91972 6.15075 8.8482 6.13652 8.77598 6.13652H8.0584C9.7702 4.84387 11.8399 4.10195 14.001 4.10195C19.4751 4.10195 23.901 8.52782 23.901 14.002C23.901 19.4761 19.4751 23.902 14.001 23.902C8.52684 23.902 4.10098 19.4761 4.10098 14.002C4.10098 12.6381 4.38263 11.2888 4.92855 10.0389C4.98691 9.90532 4.98982 9.75399 4.93665 9.61822C4.88347 9.48246 4.77855 9.37336 4.64496 9.31492C4.57877 9.28596 4.50753 9.27032 4.4353 9.2689C4.36306 9.26747 4.29126 9.2803 4.22398 9.30663C4.15671 9.33297 4.09528 9.3723 4.04321 9.42238C3.99114 9.47247 3.94944 9.53232 3.92051 9.59852C3.31393 10.9872 3.00098 12.4866 3.00098 14.002C3.00098 20.0706 7.93236 25.002 14.001 25.002C20.0696 25.002 25.001 20.0706 25.001 14.002C25.001 7.93334 20.0696 3.00195 14.001 3.00195Z\"\r\n fill=\"#F3A041\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M13.9988 6.13965C9.6616 6.13965 6.13379 9.66746 6.13379 14.0046C6.13379 18.3418 9.6616 21.8696 13.9988 21.8696C18.336 21.8696 21.8638 18.3418 21.8638 14.0046C21.8638 9.66746 18.336 6.13965 13.9988 6.13965ZM13.9988 8.22965C14.1447 8.22965 14.2846 8.28759 14.3877 8.39074C14.4908 8.49388 14.5488 8.63378 14.5488 8.77965V13.7769L17.5227 16.7508C17.6258 16.8539 17.6837 16.9938 17.6837 17.1396C17.6837 17.2855 17.6258 17.4254 17.5227 17.5285C17.4195 17.6316 17.2796 17.6896 17.1338 17.6896C16.9879 17.6896 16.8481 17.6316 16.7449 17.5285L13.6099 14.3935C13.5068 14.2904 13.4488 14.1505 13.4488 14.0046V8.77965C13.4488 8.63378 13.5067 8.49388 13.6099 8.39074C13.713 8.28759 13.8529 8.22965 13.9988 8.22965Z\"\r\n fill=\"#F3A041\" />\r\n <rect width=\"28.56\" height=\"28\" rx=\"1.51479\" fill=\"#999999\" />\r\n <path\r\n d=\"M15.068 22.7391V17.6708H18.4968L14.2108 12.6025L9.9248 17.6708H13.3536V22.7391H9.06759V22.6969C8.92358 22.7053 8.78643 22.7391 8.63899 22.7391C6.93391 22.7391 5.29866 22.0717 4.09298 20.8835C2.8873 19.6954 2.20996 18.084 2.20996 16.4037C2.20996 13.1532 4.70443 10.5042 7.90523 10.141C8.18585 8.6953 8.96892 7.39118 10.1197 6.45292C11.2706 5.51465 12.7172 5.00089 14.2108 5C15.7047 5.00082 17.1515 5.51452 18.3026 6.45277C19.4537 7.39101 20.2371 8.69516 20.5181 10.141C23.7189 10.5042 26.21 13.1532 26.21 16.4037C26.21 18.084 25.5326 19.6954 24.3269 20.8835C23.1213 22.0717 21.486 22.7391 19.7809 22.7391C19.6369 22.7391 19.4981 22.7053 19.3523 22.6969V22.7391H15.068Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n <a type=\"button\" (click)=\"openFileDialog(fileInput)\" class=\"text-base cursor-pointer\">\r\n {{ setting('upload-text') }}\r\n </a>\r\n </div>\r\n </div>\r\n <!-- <input #fileInput type=\"file\" [multiple]=\"setting('multiple-upload')\" (change)=\"onFileSelected($event)\" hidden />\r\n <div class=\"separator\"></div>\r\n <div class=\"file-list flex items-center gap-4 flex-wrap\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\" \r\n class=\"flex flex-col items-center justify-center\" (click)=\"deleteFile(i)\">\r\n <div class=\"relative\">\r\n <div class=\"close_icon cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_6837_29683)\">\r\n <rect width=\"18\" height=\"18\" rx=\"9\" fill=\"#F3A041\" />\r\n <mask id=\"mask0_6837_29683\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"4\" y=\"4\" width=\"24\"\r\n height=\"24\">\r\n <rect x=\"4\" y=\"4\" width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\r\n </mask>\r\n <g mask=\"url(#mask0_6837_29683)\">\r\n <path\r\n d=\"M8.2045 8.99815L5.81802 6.61167L6.61351 5.81617L9 8.20266L11.3865 5.81617L12.182 6.61167L9.7955 8.99815L12.182 11.3846L11.3865 12.1801L9 9.79365L6.61351 12.1801L5.81802 11.3846L8.2045 8.99815Z\"\r\n fill=\"white\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_6837_29683\">\r\n <rect width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.result\" alt=\"\" />\r\n <div class=\"flex flex-col w-full\">\r\n <label class=\"font-semibold text-sm mb-1\">Title</label>\r\n <input [(ngModel)]=\"file.title\"\r\n name=\"title{{i}}\"\r\n (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\"\r\n class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n \r\n <label class=\"font-semibold text-sm mb-1\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\"\r\n name=\"notes{{i}}\"\r\n (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n <p>{{file?.name}}</p>\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <input #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n accept=\".csv,.pdf,.xls,.xlsx,.doc,.docx,.txt,image/*\"\r\n style=\"display: none;\" />\r\n\r\n\r\n\r\n \r\n <!-- <p-fileUpload mode=\"basic\" name=\"demo[]\" accept=\"image/*\" maxFileSize=\"1000000\" (onUpload)=\"onBasicUploadAuto($event)\" chooseLabel=\"Browse\" /> -->\r\n\r\n\r\n<!-- <div class=\"separator\"></div> -->\r\n\r\n<div class=\"file-list flex items-center gap-6 flex-wrap\" *ngIf=\"false\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"flex flex-col items-center justify-center\">\r\n\r\n <div class=\"input-container p-3 border rounded-lg shadow-sm bg-white w-64\">\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <rect width=\"18\" height=\"18\" rx=\"9\" fill=\"#F3A041\" />\r\n <path d=\"M8.2 9l-2.4-2.4.8-.8L9 8.2l2.4-2.4.8.8L9.8 9l2.4 2.4-.8.8L9 9.8l-2.4 2.4-.8-.8L8.2 9z\"\r\n fill=\"white\"/>\r\n </svg>\r\n </div>\r\n\r\n <!-- Thumbnail -->\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail w-full h-32 object-cover rounded mb-3\"\r\n [src]=\"file?.result\"\r\n alt=\"preview\" />\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail flex items-center justify-center border rounded mb-3 w-full h-32 bg-gray-50\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n <!-- CSV -->\r\n <svg *ngSwitchCase=\"'csv'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#22c55e\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#22c55e\" stroke-width=\"2\"/>\r\n <text x=\"14\" y=\"34\" font-size=\"10\" font-family=\"monospace\" fill=\"#22c55e\">CSV</text>\r\n </svg>\r\n\r\n <!-- TEXT -->\r\n <svg *ngSwitchCase=\"'text'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#3b82f6\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#3b82f6\" stroke-width=\"2\"/>\r\n <path d=\"M14 24h20M14 29h20M14 34h12\" stroke=\"#3b82f6\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n </svg>\r\n\r\n <!-- Generic -->\r\n <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#9ca3af\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#9ca3af\" stroke-width=\"2\"/>\r\n <path d=\"M16 30h16\" stroke=\"#9ca3af\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Metadata -->\r\n <div class=\"flex flex-col w-full\">\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm mb-1 input-title\">Title</label>\r\n <input [(ngModel)]=\"file.title\" name=\"title{{i}}\" (ngModelChange)=\"onMetaChange()\" placeholder=\"Enter title\"\r\n class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n </div>\r\n \r\n <div>\r\n <label class=\"font-semibold text-sm mb-1 input-title\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\" name=\"notes{{i}}\" (ngModelChange)=\"onMetaChange()\" placeholder=\"Enter notes\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n </div>\r\n \r\n <div>\r\n <label class=\"font-semibold text-sm mt-3 mb-1 input-title\">Category</label>\r\n <select [(ngModel)]=\"file.category\" name=\"category{{i}}\" (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Select Category\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c\">{{ c }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p class=\"mt-2 text-sm text-gray-600\">{{ file?.name }}</p>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<div class=\"file-list flex items-center gap-16 flex-wrap w-full\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div *ngFor=\"let file of uploadedFiles; let i = index\"\r\n class=\"input-container p-3 border rounded-lg shadow-sm bg-white w-[450px] flex upload_file\">\r\n\r\n <!-- Close icon -->\r\n <div class=\"close_icon cursor-pointer absolute top-2 right-2\" (click)=\"deleteFile(i)\">\r\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"22\" height=\"22\" rx=\"11\" fill=\"#F3A041\" />\r\n <path\r\n d=\"M7.08911 15.8889L6.11133 14.9111L10.0224 11L6.11133 7.08886L7.08911 6.11108L11.0002 10.0222L14.9113 6.11108L15.8891 7.08886L11.978 11L15.8891 14.9111L14.9113 15.8889L11.0002 11.9778L7.08911 15.8889Z\"\r\n fill=\"white\" />\r\n </svg>\r\n </div>\r\n\r\n <!-- Thumbnail on left -->\r\n <div class=\"w-28 h-28 flex-shrink-0\">\r\n <ng-container *ngIf=\"file.type === 'image'; else nonImageThumb\">\r\n <img class=\"file-thumbnail w-full h-full object-cover rounded\"\r\n [src]=\"file?.result\"\r\n alt=\"preview\" />\r\n </ng-container>\r\n\r\n <ng-template #nonImageThumb>\r\n <div class=\"file-thumbnail flex items-center justify-center border rounded w-full h-full bg-gray-50\">\r\n <ng-container [ngSwitch]=\"file.type\">\r\n <!-- CSV -->\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#22c55e\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#22c55e\" stroke-width=\"2\"/>\r\n <text x=\"14\" y=\"34\" font-size=\"10\" font-family=\"monospace\" fill=\"#22c55e\">CSV</text>\r\n </svg> -->\r\n\r\n <svg *ngSwitchCase=\"'csv'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\"\r\n fill=\"#F4F4F4\" />\r\n <path\r\n d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\"\r\n fill=\"#23A761\" />\r\n <path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\" />\r\n <path\r\n d=\"M6.94076 10.3433C6.85939 10.3433 6.78716 10.3588 6.72408 10.3899C6.66191 10.42 6.60934 10.464 6.56637 10.5216C6.52432 10.5793 6.49232 10.6489 6.47038 10.7305C6.44844 10.8122 6.43747 10.904 6.43747 11.006C6.43747 11.1435 6.45484 11.261 6.48958 11.3586C6.52523 11.4553 6.58009 11.5294 6.65414 11.5808C6.7282 11.6314 6.82373 11.6567 6.94076 11.6567C7.02212 11.6567 7.10349 11.6478 7.18486 11.6301C7.26714 11.6123 7.35628 11.587 7.45228 11.5542V11.9002C7.36359 11.9357 7.27628 11.961 7.19035 11.976C7.10441 11.992 7.00795 12 6.90099 12C6.69437 12 6.52432 11.9587 6.39084 11.8762C6.25827 11.7929 6.15999 11.6766 6.096 11.5276C6.032 11.3777 6 11.2029 6 11.0033C6 10.8561 6.02057 10.7212 6.06171 10.5988C6.10285 10.4764 6.16319 10.3704 6.24273 10.2808C6.32227 10.1912 6.42055 10.122 6.53758 10.0732C6.6546 10.0244 6.78899 10 6.94076 10C7.04041 10 7.14006 10.0124 7.23971 10.0373C7.34028 10.0612 7.43628 10.0945 7.5277 10.1371L7.39057 10.4724C7.3156 10.4378 7.24017 10.4076 7.16429 10.3819C7.08841 10.3562 7.0139 10.3433 6.94076 10.3433Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M9.06363 11.4331C9.06363 11.5485 9.03483 11.6487 8.97724 11.7339C8.91964 11.819 8.83553 11.8847 8.7249 11.9308C8.61519 11.9769 8.48172 12 8.32447 12C8.25498 12 8.18687 11.9956 8.12013 11.9867C8.05431 11.9778 7.99077 11.965 7.92951 11.9481C7.86917 11.9304 7.81157 11.9086 7.75672 11.8829V11.4997C7.8518 11.5405 7.95054 11.5773 8.05293 11.6101C8.15533 11.6429 8.25681 11.6593 8.35738 11.6593C8.42686 11.6593 8.48263 11.6505 8.52468 11.6327C8.56765 11.615 8.59874 11.5906 8.61794 11.5595C8.63714 11.5285 8.64674 11.493 8.64674 11.4531C8.64674 11.4043 8.62982 11.3626 8.596 11.328C8.56217 11.2934 8.51554 11.261 8.45612 11.2309C8.3976 11.2007 8.33132 11.1683 8.25727 11.1337C8.21064 11.1124 8.1599 11.0867 8.10505 11.0566C8.05019 11.0255 7.99808 10.9878 7.94871 10.9434C7.89934 10.8991 7.85866 10.8454 7.82666 10.7824C7.79558 10.7186 7.78003 10.6423 7.78003 10.5536C7.78003 10.4373 7.80746 10.338 7.86231 10.2555C7.91717 10.173 7.99534 10.11 8.09682 10.0665C8.19921 10.0222 8.31989 10 8.45886 10C8.56308 10 8.66228 10.012 8.75645 10.0359C8.85153 10.059 8.95072 10.0927 9.05403 10.1371L8.9169 10.4578C8.82456 10.4214 8.74182 10.3934 8.66868 10.3739C8.59554 10.3535 8.52103 10.3433 8.44515 10.3433C8.39212 10.3433 8.34686 10.3517 8.30938 10.3686C8.2719 10.3846 8.24355 10.4076 8.22436 10.4378C8.20516 10.4671 8.19556 10.5012 8.19556 10.5403C8.19556 10.5864 8.20927 10.6254 8.2367 10.6574C8.26504 10.6884 8.30709 10.7186 8.36286 10.7478C8.41955 10.7771 8.48994 10.8113 8.57405 10.8503C8.67645 10.8973 8.76376 10.9466 8.83598 10.998C8.90912 11.0486 8.96535 11.1084 9.00466 11.1776C9.04398 11.246 9.06363 11.3311 9.06363 11.4331Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M11 10.0279L10.3184 11.9734H9.85491L9.17471 10.0279H9.60395L9.98108 11.1856C9.98748 11.2051 9.99799 11.242 10.0126 11.2961C10.0272 11.3493 10.0419 11.4061 10.0565 11.4664C10.072 11.5258 10.0826 11.5751 10.088 11.6141C10.0935 11.5751 10.1031 11.5258 10.1168 11.4664C10.1315 11.407 10.1456 11.3506 10.1594 11.2974C10.174 11.2433 10.1845 11.206 10.1909 11.1856L10.5708 10.0279H11Z\"\r\n fill=\"white\" />\r\n <rect x=\"5\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"5\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"7\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n <rect x=\"9\" y=\"5\" width=\"3\" height=\"1\" rx=\"0.2\" fill=\"#CCCCCC\" />\r\n </svg>\r\n\r\n <!-- TEXT -->\r\n <!-- <svg *ngSwitchCase=\"'text'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#3b82f6\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#3b82f6\" stroke-width=\"2\"/>\r\n <path d=\"M14 24h20M14 29h20M14 34h12\" stroke=\"#3b82f6\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n </svg> -->\r\n <!-- <svg width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\" fill=\"#F4F4F4\"/>\r\n<path d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\" fill=\"#DD2025\"/>\r\n<path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\"/>\r\n<path d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\" fill=\"white\"/>\r\n<rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n</svg> -->\r\n\r\n<svg *ngSwitchCase=\"'text'\" width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\" fill=\"#F4F4F4\"/>\r\n<path d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\" fill=\"#1F5EBB\"/>\r\n<path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\"/>\r\n<path d=\"M7.04353 12H6.61105V10.3203H6.0572V9.96038H7.59738V10.3203H7.04353V12ZM9.56027 12H9.06641L8.59208 11.2285L8.11775 12H7.65458L8.33119 10.9481L7.69782 9.96038H8.17494L8.6144 10.6942L9.04548 9.96038H9.51144L8.87109 10.9718L9.56027 12ZM10.6038 12H10.1713V10.3203H9.61747V9.96038H11.1576V10.3203H10.6038V12Z\" fill=\"white\"/>\r\n<rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n</svg>\r\n\r\n\r\n <!-- Generic -->\r\n <!-- <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\">\r\n <rect x=\"8\" y=\"6\" width=\"28\" height=\"36\" rx=\"3\" stroke=\"#9ca3af\" stroke-width=\"2\"/>\r\n <path d=\"M28 6v8a2 2 0 0 0 2 2h6\" stroke=\"#9ca3af\" stroke-width=\"2\"/>\r\n <path d=\"M16 30h16\" stroke=\"#9ca3af\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n </svg> -->\r\n <svg *ngSwitchDefault width=\"180px\" height=\"180px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M11.1757 1.17574C11.0632 1.06321 10.9106 1 10.7515 1H3.6C3.26863 1 3 1.26863 3 1.6V14.4C3 14.7314 3.26863 15 3.6 15H13.4C13.7314 15 14 14.7314 14 14.4V4.24853C14 4.0894 13.9368 3.93679 13.8243 3.82426L11.1757 1.17574Z\" fill=\"#F4F4F4\"/>\r\n<path d=\"M15 12.7C15 12.8657 14.8657 13 14.7 13H2.3C2.13431 13 2 12.8657 2 12.7V9.3C2 9.13431 2.13431 9 2.3 9H14.7C14.8657 9 15 9.13431 15 9.3V12.7Z\" fill=\"#DD2025\"/>\r\n<path d=\"M11 1L12.5 2.5L14 4H11.2C11.0895 4 11 3.91046 11 3.8V1Z\" fill=\"#D9D9D9\"/>\r\n<path d=\"M6.6084 9.96038C6.87161 9.96038 7.06366 10.0171 7.18457 10.1306C7.30548 10.2431 7.36593 10.3984 7.36593 10.5965C7.36593 10.6858 7.35245 10.7714 7.32547 10.8532C7.2985 10.9342 7.25432 11.0062 7.19294 11.0695C7.13249 11.1327 7.05157 11.1829 6.9502 11.2201C6.84882 11.2564 6.72373 11.2746 6.57492 11.2746H6.38937V12H5.95689V9.96038H6.6084ZM6.58608 10.3147H6.38937V10.9202H6.53167C6.61258 10.9202 6.6828 10.9095 6.74233 10.8881C6.80185 10.8667 6.84789 10.8332 6.88044 10.7877C6.91299 10.7421 6.92927 10.6835 6.92927 10.6119C6.92927 10.5114 6.90137 10.437 6.84556 10.3887C6.78976 10.3394 6.70326 10.3147 6.58608 10.3147ZM9.44322 10.9607C9.44322 11.1904 9.39904 11.3824 9.31069 11.5368C9.22326 11.6903 9.09631 11.8061 8.92983 11.8842C8.76335 11.9614 8.56292 12 8.32854 12H7.75098V9.96038H8.39132C8.60524 9.96038 8.79078 9.99851 8.94796 10.0748C9.10514 10.1501 9.22698 10.2622 9.31348 10.411C9.39997 10.5589 9.44322 10.7421 9.44322 10.9607ZM8.994 10.9718C8.994 10.8211 8.97168 10.6975 8.92704 10.6007C8.88332 10.5031 8.81822 10.431 8.73172 10.3845C8.64616 10.338 8.54013 10.3147 8.41364 10.3147H8.18345V11.6429H8.369C8.58012 11.6429 8.73684 11.5866 8.83915 11.4741C8.94238 11.3615 8.994 11.1941 8.994 10.9718ZM10.2914 12H9.86593V9.96038H11.035V10.3147H10.2914V10.8407H10.9834V11.1936H10.2914V12Z\" fill=\"white\"/>\r\n<rect x=\"5\" y=\"5\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"6\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n<rect x=\"5\" y=\"7\" width=\"7\" height=\"0.5\" rx=\"0.25\" fill=\"#CCCCCC\"/>\r\n</svg>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Metadata on right -->\r\n <div class=\"flex flex-col flex-1 ml-4\">\r\n <!-- Title -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm mb-1 input-title\">Title</label>\r\n <input [(ngModel)]=\"file.title\"\r\n name=\"title{{i}}\"\r\n (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter title\"\r\n class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\" />\r\n\r\n </div>\r\n <!-- Notes -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm mb-1 input-title\">Notes</label>\r\n <textarea [(ngModel)]=\"file.notes\"\r\n name=\"notes{{i}}\"\r\n (ngModelChange)=\"onMetaChange()\"\r\n placeholder=\"Enter notes\"\r\n class=\" rounded px-3 py-2 mb-3 w-full outline-none focus:ring\"\r\n rows=\"2\"></textarea>\r\n\r\n </div>\r\n <!-- Category -->\r\n <div class=\"input-container\">\r\n <label class=\"font-semibold text-sm mb-1 input-title\">Category</label>\r\n <select [(ngModel)]=\"file.categoryId \"\r\n name=\"category{{i}}\"\r\n (ngModelChange)=\"onMetaChange()\"\r\n class=\" rounded px-3 py-2 w-full outline-none focus:ring\">\r\n <option value=\"\">Select Category</option>\r\n <option *ngFor=\"let c of categories\" [ngValue]=\"c.value\">{{ c.label }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n\r\n </div>\r\n</fx-component>", styles: [".custom-upload{border:1px solid #ccc}.custom-upload a{color:#fff}.custom-upload .file-list .file-thumbnail{width:160px;height:100%;max-height:185px!important;border:1px solid #ccc;background-color:#fff;padding:10px}.custom-upload .separator{height:56px;width:2px;background-color:#ccc;margin:10px}.custom-upload .upload{background-color:#999;padding:2px 12px 2px 6px;border-radius:4px;margin-left:40px}.close_icon{position:absolute;top:-8px;right:-8px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}.gap-8{gap:8px}.gap-16{gap:25px}.input-title{position:absolute;bottom:auto;right:auto;left:1rem;top:-9px;padding:0rem .25rem;font-weight:600;border-radius:.25rem;z-index:1;color:#454545;background-color:#fff}.input-container{position:relative;inset:auto;z-index:auto}.upload_file{width:32%!important}select:not([size]){padding:.35rem .75rem!important;border:1px solid #999!important}input,textarea,select{border:1px solid #999!important}input:focus,textarea:focus,select:focus{outline:0 none!important;outline-offset:0!important;box-shadow:0 0 0 .2rem #bfdbfe!important}\n"] }]
486
484
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FxBuilderWrapperService }] });
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxKLE9BQU8sRUFBNkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFTbkUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFrQmhDO0lBQStCO0lBakJuRCx1REFBdUQ7SUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxhQUFhLEdBQWUsRUFBRSxDQUFDO0lBQy9CLGFBQWEsR0FBUTtRQUMxQixhQUFhLEVBQUUsRUFBRTtRQUNq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WUFDNUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMzQixDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU87UUFDUCxJQUNFLElBQUksS0FBSyxvQkFBb0I7WUFDN0IsSUFBSSxLQUFLLHlFQUF5RTtZQUNsRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzNCLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUEyQjtRQUN4Qyw0Q0FBNEM7UUFDNUMsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDckIsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFrQjtRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBcGlCUSxpQkFBaUI7NEZBQWpCLGlCQUFpQiw4RkNqQjlCLHFvMUJBK1RlLGdzQ0RsVEgsWUFBWSw0Z0JBQUUsV0FBVyw0RUFBRSxXQUFXLHlnQ0FBRSxtQkFBbUIsOEJBQUMsZ0JBQWdCOzs0RkFJM0UsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxnQkFBZ0IsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhDb21wb25lbnQsIEZ4U2VsZWN0U2V0dGluZywgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4VmFsaWRhdGlvbiwgRnhWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0fSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSwgVXBsb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC11cGxvYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsRmlsZVVwbG9hZE1vZHVsZSBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VwbG9hZGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRlckNvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICAvLyBwdWJsaWMgdXBsb2FkRmlsZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIHVwbG9hZEZpbGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIHVwbG9hZGVkRmlsZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwdWJsaWMgZm9ybWF0dGVkRGF0YTogYW55ID0ge1xyXG4gICAgdXBsb2FkZWRGaWxlczogW10sXHJcbiAgICBkZWxldGVkRmlsZXM6IFtdXHJcbiAgfTtcclxuICBjYXRlZ29yaWVzID0gW1xyXG4gIHsgbGFiZWw6ICdPcmFsIEltYWdlcycsIHZhbHVlOiAxNiB9LFxyXG4gIHsgbGFiZWw6ICdQYXN0IERvY3MnLCB2YWx1ZTogMTcgfSxcclxuICB7IGxhYmVsOiAnWC1SYXlzJywgdmFsdWU6IDE0IH0sXHJcbiAgeyBsYWJlbDogJ1Byb2ZpbGUnLCB2YWx1ZTogMTggfSxcclxuICB7IGxhYmVsOiAnQXBwIEFzc2lzdGFuY2UnLCB2YWx1ZTogMTkgfSxcclxuICB7IGxhYmVsOiAnU3RhZ2UgTGlua2VkIEZpbGVzJywgdmFsdWU6IDIwIH1cclxuXTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKGZ4RGF0YSk9PntcclxuICAgICAgdGhpcy5fcmVnaXN0ZXIodGhpcy51cGxvYWRGaWxlQ29udHJvbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHVwbG9hZGVkSW1hZ2VzOiB7IFtrZXk6IHN0cmluZ106IHsgcmVzdWx0OiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBudWxsIH1bXSB9ID0ge307XHJcbiAgZGVsZXRlZEZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIC8vIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICBcclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuICBcclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICBcclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlcykpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTxzdHJpbmc+W10gPSBbXTtcclxuICBcclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgodXJsOiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKHVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuICBcclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VVcmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1t1cGxvYWRlcktleV0gPSBpbWFnZVVybHMubWFwKHJlc3VsdCA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGxcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuICAvLyAgICAgICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkSW1hZ2VzXVxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnVwbG9hZGVkSW1hZ2VzKS5mbGF0KCk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG4gIFxyXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIC8vICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gIC8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmcsIG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgodXJsOiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKHVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8ganVzdCBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogdXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4vLyAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbi8vICAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbi8vICAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICBcclxuLy8gICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuICBcclxuLy8gICAgICAgICAvLyBFeHRyYWN0IHVwbG9hZGVyIGtleXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgVVJMIGFycmF5c1xyXG4vLyAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuLy8gICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuLy8gICAgICAgICAgICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gdmFsdWU7XHJcbi8vICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfVxyXG4gIFxyXG4vLyAgICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4vLyAgICAgICAgICAgLy8gY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBhbnk7IHRpdGxlOnN0cmluZyA7IG5vdGVzOnN0cmluZyB9PltdID0gW107XHJcbiAgXHJcbi8vICAgICAgICAgICAvLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOmFueSkgPT4ge1xyXG4vLyAgICAgICAgICAgLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuLy8gICAgICAgICAgIC8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4vLyAgICAgICAgICAgLy8gICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4vLyAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbi8vICAgICAgICAgICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwgICAgICAgICAgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuLy8gICAgICAgICAgIC8vICAgICAgIH0pKVxyXG4vLyAgICAgICAgICAgLy8gICAgICk7XHJcbi8vICAgICAgICAgICAvLyAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuLy8gICAgICAgICAgIC8vICAgfVxyXG4vLyAgICAgICAgICAgLy8gfSk7XHJcblxyXG4vLyAgICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBhbnk7IHRpdGxlOiBzdHJpbmc7IG5vdGVzOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuLy8gdXJscy5mb3JFYWNoKChvcmlnaW5hbFVybDogYW55KSA9PiB7XHJcbi8vICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbi8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4vLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbi8vICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4vLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwsIC8vIHByZXNlcnZlIG9yaWdpbmFsXHJcbi8vICAgICAgICAgdGl0bGU6IG9yaWdpbmFsVXJsPy50aXRsZSB8fCAnJywgLy8gZGVmYXVsdCBlbXB0eSBpZiBub3QgcHJlc2VudFxyXG4vLyAgICAgICAgIG5vdGVzOiBvcmlnaW5hbFVybD8ubm90ZXMgfHwgJydcclxuLy8gICAgICAgfSkpXHJcbi8vICAgICApO1xyXG4vLyAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuLy8gICB9XHJcbi8vIH0pO1xyXG5cclxuICBcclxuLy8gICAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoID4gMCkge1xyXG4vLyAgICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbi8vICAgICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4vLyAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbi8vICAgICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuLy8gICAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuLy8gICAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbi8vICAgICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHQsXHJcbi8vICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4vLyAgICAgICAgICAgICAgICAgICBub3RlczogJydcclxuLy8gICAgICAgICAgICAgICAgIH0pKTtcclxuICBcclxuLy8gICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbi8vICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuLy8gICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuLy8gICAgICAgICAgICAgICB9LFxyXG4vLyAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbi8vICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4vLyAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgfSk7XHJcbi8vICAgICAgICAgICB9XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICB9KTtcclxuLy8gICB9XHJcbiAgXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcbiAgXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiB7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfVtdIH0gPSB2YXJpYWJsZXMudXBsb2FkZWRGaWxlcztcclxuICBcclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nOyBvcmlnaW5hbFVybDogc3RyaW5nIH0+W10gPSBbXTtcclxuICBcclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gZmlsZU9iaj8ub3JpZ2luYWxVcmw7XHJcbiAgLy8gICAgICAgICAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuICBcclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHRcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuICBcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcbiAgXHJcblxyXG4gIC8vIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yKGxldCBpID0gMDsgaSA8IGlucHV0Py5maWxlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbaV07XHJcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaCh7XHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZT8ubmFtZSxcclxuICAvLyAgICAgICAgICAgaWQ6IHV1aWR2NCgpXHJcbiAgLy8gICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2codGhpcy51cGxvYWRGaWxlQ29udHJvbCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zdCBuZXdGaWxlID0ge1xyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIG9yaWdpbmFsVXJsOiBudWxsLFxyXG4gIC8vICAgICAgICAgICByZXN1bHQ6IGUudGFyZ2V0Py5yZXN1bHQsXHJcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAvLyAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gIC8vICAgICAgICAgICBub3RlczogJycsXHJcbiAgLy8gICAgICAgICAgIGNhdGVnb3J5OiAnJyxcclxuICAvLyAgICAgICAgICAgdHlwZTogdGhpcy5kZXRlY3RGaWxlVHlwZShmaWxlKSxcclxuICAvLyAgICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgLy8gICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICB9O1xyXG5cclxuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbi8vICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbi8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbi8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbi8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4vLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcblxyXG4gICAgIFxyXG4vLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbi8vICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4vLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gdmFsdWU7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICB9XHJcblxyXG4vLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuLy8gICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB1cmxzXHJcbi8vICAgICAgICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iaikgXHJcbi8vICAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuLy8gICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlT2JqPy5vcmlnaW5hbFVybCB8fCBmaWxlT2JqPy5uYW1lKTtcclxuXHJcbi8vICAgICAgICAgICAgIHJldHVybiB7XHJcbi8vICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4vLyAgICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4vLyAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBmaWxlT2JqLm9yaWdpbmFsVXJsLCAgICBcclxuLy8gICAgICAgICAgICAgICByZXN1bHQ6IGZpbGVPYmo/LnR5cGUgPT09ICdpbWFnZScgPyBmaWxlT2JqLm9yaWdpbmFsVXJsLnByZXZpZXdVcmwgOiBudWxsLFxyXG4vLyAgICAgICAgICAgICAgIG5hbWU6IGZpbGVPYmo/Lm5hbWUgfHwgJycsXHJcbi8vICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVPYmo/LnRpdGxlIHx8ICcnLFxyXG4vLyAgICAgICAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICBjYXRlZ29yeTogZmlsZU9iaj8uY2F0ZWdvcnkgfHwgJycsXHJcbi8vICAgICAgICAgICAgICAgdHlwZTogZmlsZU9iaj8udHlwZSwgICAgICAgICAgICAgICAgXHJcbi8vICAgICAgICAgICAgIH07XHJcbi8vICAgICAgICAgICB9KTtcclxuXHJcbi8vICAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbi8vICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4vLyAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbi8vICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICB9XHJcbi8vICAgICB9KTtcclxuLy8gfVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcbiAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcblxyXG4gICAgICBcclxuICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgKHZhbHVlIGFzIGFueSk/LnVwbG9hZGVkRmlsZXMpIHtcclxuICAgIHVwbG9hZGVkRmlsZXNNYXBba2V5XSA9ICh2YWx1ZSBhcyBhbnkpLnVwbG9hZGVkRmlsZXM7XHJcbiAgfVxyXG59XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgZmlsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZmlsZXNcclxuICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKVxyXG4gICAgICAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsT2JqID0gZmlsZU9iai5vcmlnaW5hbFVybDtcclxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBvcmlnaW5hbFVybE9iaj8uZmlsZU5hbWUgfHwgJyc7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVVcmwgPSBvcmlnaW5hbFVybE9iaj8uZmlsZVVybCB8fCAnJztcclxuICAgICAgICAgICAgY29uc3QgcHJldmlld1VybCA9IG9yaWdpbmFsVXJsT2JqPy5wcmV2aWV3VXJsO1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gZmlsZU9iaj8udHlwZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGRldGVjdCB0eXBlIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5kZXRlY3RGaWxlVHlwZUZyb21VcmwoZmlsZU5hbWUgfHwgZmlsZVVybCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgICAgICBmaWxlOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgbG9jYWxcclxuICAgICAgICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmxPYmosICAgICAgIC8vIGtlZXAgd2hvbGUgb2JqZWN0XHJcbiAgICAgICAgICAgICAgcmVzdWx0OiB0eXBlID09PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgICAgICA/IChwcmV2aWV3VXJsKSAgICAgICAgLy8gcHJlZmVyIHByZXZpZXdVcmwsIGZhbGxiYWNrIHRvIGZpbGVVcmxcclxuICAgICAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAgICAgICBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4gICAgICAgICAgICAgIGNhdGVnb3J5SWQgOiBmaWxlT2JqPy5jYXRlZ29yeUlkICB8fCAnJyxcclxuICAgICAgICAgICAgICB0eXBlOiB0eXBlLCAgICAgICAgICAgICAgICAgICAgLy8gY29tcHV0ZWQgdHlwZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnNvbGUubG9nKFwiaW5wdXRcIixpbnB1dCk7XHJcbiAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG5cclxuICBBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IG5ld0ZpbGU6IGFueSA9IHtcclxuICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICBvcmlnaW5hbFVybDogbnVsbCxcclxuICAgICAgcmVzdWx0OiBudWxsLCAgICAgICAgICAvLyB3aWxsIGJlIGZpbGxlZCBmb3IgaW1hZ2VzIG9ubHlcclxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIG5vdGVzOiAnJyxcclxuICAgICAgY2F0ZWdvcnlJZCA6ICcnLFxyXG4gICAgICB0eXBlOiBmaWxlVHlwZSwgICAgICAgIC8vIDwtLSBrZWVwIGRldGVjdGVkIHR5cGVcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsgLy8gb25seSBpbWFnZXMgbmVlZCBwcmV2aWV3XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBub24taW1hZ2Ug4oaSIHB1c2ggZGlyZWN0bHlcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG4gIG9uTWV0YUNoYW5nZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlPy5pZCAhPT0gaWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZGVsZXRlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBbZGVsZXRlZEZpbGVdID0gdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcbiAgXHJcbiAgICAvLyBFbnN1cmUgZm9ybWF0dGVkRGF0YSBleGlzdHMgYW5kIGluaXRpYWxpemUgaWYgdW5kZWZpbmVkXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB0aGlzLmZvcm1hdHRlZERhdGEgfHwgeyB1cGxvYWRlZEZpbGVzOiBbXSwgZGVsZXRlZEZpbGVzOiBbXSB9O1xyXG4gIFxyXG4gICAgLy8gQWRkIHRoZSBkZWxldGVkIGZpbGUgdG8gdGhlIGRlbGV0ZWRGaWxlcyBhcnJheVxyXG4gICAgdGhpcy5kZWxldGVkRmlsZXMgPSBbLi4udGhpcy5kZWxldGVkRmlsZXMsIGRlbGV0ZWRGaWxlXTtcclxuICBcclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuICBcclxuICAgIC8vIFVwZGF0ZSBmb3JtYXR0ZWREYXRhXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB7XHJcbiAgICAgIC4uLnRoaXMuZm9ybWF0dGVkRGF0YSxcclxuICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy51cGxvYWRlZEZpbGVzLFxyXG4gICAgICBkZWxldGVkRmlsZXM6IHRoaXMuZGVsZXRlZEZpbGVzXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgdXBsb2FkRmlsZUNvbnRyb2xcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndXBsb2FkLXRleHQnLCAkdGl0bGU6ICdVcGxvYWQgVGV4dCcsIHZhbHVlOiAnVXBsb2FkIEZpbGUnfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoe2tleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZCcsIHZhbHVlOiBmYWxzZX0sIFt7b3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnRGlzYWJsZScsIHZhbHVlOiBmYWxzZX1dKVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9ucygpOiBGeFZhbGlkYXRpb25bXSB7XHJcbiAgICByZXR1cm4gW0Z4VmFsaWRhdG9yU2VydmljZS5yZXF1aXJlZF07XHJcbiAgfVxyXG5cclxuZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdvdGhlcicge1xyXG4gIGNvbnN0IG1pbWUgPSAoZmlsZS50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAvLyBJbWFnZXNcclxuICBpZiAobWltZS5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCAvXFwuKHBuZ3xqcGU/Z3xnaWZ8d2VicHxibXB8c3ZnKSQvaS50ZXN0KG5hbWUpKSB7XHJcbiAgICByZXR1cm4gJ2ltYWdlJztcclxuICB9XHJcblxyXG4gIC8vIENTVlxyXG4gIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgcmV0dXJuICdjc3YnO1xyXG4gIH1cclxuXHJcbiAgLy8gVGV4dCBmaWxlc1xyXG4gIGlmIChtaW1lID09PSAndGV4dC9wbGFpbicgfHwgbmFtZS5lbmRzV2l0aCgnLnR4dCcpKSB7XHJcbiAgICByZXR1cm4gJ3RleHQnO1xyXG4gIH1cclxuXHJcbiAgLy8gUERGXHJcbiAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi9wZGYnIHx8IG5hbWUuZW5kc1dpdGgoJy5wZGYnKSkge1xyXG4gICAgcmV0dXJuICdwZGYnO1xyXG4gIH1cclxuXHJcbiAgLy8gRXhjZWxcclxuICBpZiAoXHJcbiAgICBtaW1lID09PSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyB8fFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB8fFxyXG4gICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICkge1xyXG4gICAgcmV0dXJuICdleGNlbCc7XHJcbiAgfVxyXG5cclxuICAvLyBXb3JkXHJcbiAgaWYgKFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcgfHxcclxuICAgIC9cXC4oZG9jfGRvY3gpJC9pLnRlc3QobmFtZSlcclxuICApIHtcclxuICAgIHJldHVybiAnd29yZCc7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gJ290aGVyJztcclxufVxyXG5cclxub3BlbkZpbGVEaWFsb2coZmlsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICBmaWxlSW5wdXQudmFsdWUgPSAnJztcclxuICBmaWxlSW5wdXQuY2xpY2soKTtcclxufVxyXG5cclxub25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgZ2FwLTQgcC0yIHBiLTAgcm91bmRlZC1zbVwiPlxyXG4gICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtOCBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlBhdGllbnQgSW1hZ2VzPC9wPlxyXG4gICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBnYXAtMiB1cGxvYWRcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI5XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwiIzk5OTk5OVwiIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE1LjA2OCAyMi43MzkxVjE3LjY3MDhIMTguNDk2OEwxNC4yMTA4IDEyLjYwMjVMOS45MjQ4IDE3LjY3MDhIMTMuMzUzNlYyMi43MzkxSDkuMDY3NTlWMjIuNjk2OUM4LjkyMzU4IDIyLjcwNTMgOC43ODY0MyAyMi43MzkxIDguNjM4OTkgMjIuNzM5MUM2LjkzMzkxIDIyLjczOTEgNS4yOTg2NiAyMi4wNzE3IDQuMDkyOTggMjAuODgzNUMyLjg4NzMgMTkuNjk1NCAyLjIwOTk2IDE4LjA4NCAyLjIwOTk2IDE2LjQwMzdDMi4yMDk5NiAxMy4xNTMyIDQuNzA0NDMgMTAuNTA0MiA3LjkwNTIzIDEwLjE0MUM4LjE4NTg1IDguNjk1MyA4Ljk2ODkyIDcuMzkxMTggMTAuMTE5NyA2LjQ1MjkyQzExLjI3MDYgNS41MTQ2NSAxMi43MTcyIDUuMDAwODkgMTQuMjEwOCA1QzE1LjcwNDcgNS4wMDA4MiAxNy4xNTE1IDUuNTE0NTIgMTguMzAyNiA2LjQ1Mjc3QzE5LjQ1MzcgNy4zOTEwMSAyMC4yMzcxIDguNjk1MTYgMjAuNTE4MSAxMC4xNDFDMjMuNzE4OSAxMC41MDQyIDI2LjIxIDEzLjE1MzIgMjYuMjEgMTYuNDAzN0MyNi4yMSAxOC4wODQgMjUuNTMyNiAxOS42OTU0IDI0LjMyNjkgMjAuODgzNUMyMy4xMjEzIDIyLjA3MTcgMjEuNDg2IDIyLjczOTEgMTkuNzgwOSAyMi43MzkxQzE5LjYzNjkgMjIuNzM5MSAxOS40OTgxIDIyLjcwNTMgMTkuMzUyMyAyMi42OTY5VjIyLjczOTFIMTUuMDY4WlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dClcIiBjbGFzcz1cInRleHQtYmFzZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ3VwbG9hZC10ZXh0JykgfX1cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgIDwvZGl2PlxyXG4gICAgPCEtLSA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIFttdWx0aXBsZV09XCJzZXR0aW5nKCdtdWx0aXBsZS11cGxvYWQnKVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIGhpZGRlbiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBmbGV4LXdyYXBcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGVkRmlsZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiIFxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlX2ljb24gY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNjgzN18yOTY4MylcIj5cclxuICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzY4MzdfMjk2ODNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICA8ZyBtYXNrPVwidXJsKCNtYXNrMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjA0NSA4Ljk5ODE1TDUuODE4MDIgNi42MTE2N0w2LjYxMzUxIDUuODE2MTdMOSA4LjIwMjY2TDExLjM4NjUgNS44MTYxN0wxMi4xODIgNi42MTE2N0w5Ljc5NTUgOC45OTgxNUwxMi4xODIgMTEuMzg0NkwxMS4zODY1IDEyLjE4MDFMOSA5Ljc5MzY1TDYuNjEzNTEgMTIuMTgwMUw1LjgxODAyIDExLjM4NDZMOC4yMDQ1IDguOTk4MTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82ODM3XzI5NjgzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogNHB4XCIgW3NyY109XCJmaWxlPy5yZXN1bHRcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMVwiPlRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJmaWxlLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRpdGxle3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIC8+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVze3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiMlwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPHA+e3tmaWxlPy5uYW1lfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDxpbnB1dCAjZmlsZUlucHV0XHJcbiAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIlxyXG4gICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKlwiXHJcbiAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgLz5cclxuXHJcblxyXG5cclxuICAgICBcclxuICAgIDwhLS0gPHAtZmlsZVVwbG9hZCBtb2RlPVwiYmFzaWNcIiBuYW1lPVwiZGVtb1tdXCIgIGFjY2VwdD1cImltYWdlLypcIiBtYXhGaWxlU2l6ZT1cIjEwMDAwMDBcIiAob25VcGxvYWQpPVwib25CYXNpY1VwbG9hZEF1dG8oJGV2ZW50KVwiICBjaG9vc2VMYWJlbD1cIkJyb3dzZVwiIC8+IC0tPlxyXG5cclxuXHJcbjwhLS0gPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgZmxleC13cmFwXCIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgcC0zIGJvcmRlciByb3VuZGVkLWxnIHNoYWRvdy1zbSBiZy13aGl0ZSB3LTY0XCI+XHJcbiAgICAgICAgPCEtLSBDbG9zZSBpY29uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiOVwiIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjIgOWwtMi40LTIuNC44LS44TDkgOC4ybDIuNC0yLjQuOC44TDkuOCA5bDIuNCAyLjQtLjguOEw5IDkuOGwtMi40IDIuNC0uOC0uOEw4LjIgOXpcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBUaHVtYm5haWwgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUudHlwZSA9PT0gJ2ltYWdlJzsgZWxzZSBub25JbWFnZVRodW1iXCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwiZmlsZS10aHVtYm5haWwgdy1mdWxsIGgtMzIgb2JqZWN0LWNvdmVyIHJvdW5kZWQgbWItM1wiXHJcbiAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZT8ucmVzdWx0XCJcclxuICAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2VUaHVtYj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXRodW1ibmFpbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXIgcm91bmRlZCBtYi0zIHctZnVsbCBoLTMyIGJnLWdyYXktNTBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS50eXBlXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBDU1YgLS0+XHJcbiAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NzdidcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOFwiIHk9XCI2XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjM2XCIgcng9XCIzXCIgc3Ryb2tlPVwiIzIyYzU1ZVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI4IDZ2OGEyIDIgMCAwIDAgMiAyaDZcIiBzdHJva2U9XCIjMjJjNTVlXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDx0ZXh0IHg9XCIxNFwiIHk9XCIzNFwiIGZvbnQtc2l6ZT1cIjEwXCIgZm9udC1mYW1pbHk9XCJtb25vc3BhY2VcIiBmaWxsPVwiIzIyYzU1ZVwiPkNTVjwvdGV4dD5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBURVhUIC0tPlxyXG4gICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjZcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjNcIiBzdHJva2U9XCIjM2I4MmY2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjggNnY4YTIgMiAwIDAgMCAyIDJoNlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAyNGgyME0xNCAyOWgyME0xNCAzNGgxMlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBHZW5lcmljIC0tPlxyXG4gICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoRGVmYXVsdCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOFwiIHk9XCI2XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjM2XCIgcng9XCIzXCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI4IDZ2OGEyIDIgMCAwIDAgMiAyaDZcIiBzdHJva2U9XCIjOWNhM2FmXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMzBoMTZcIiBzdHJva2U9XCIjOWNhM2FmXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBNZXRhZGF0YSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG1iLTEgaW5wdXQtdGl0bGVcIj5UaXRsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImZpbGUudGl0bGVcIiBuYW1lPVwidGl0bGV7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciB0aXRsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMSBpbnB1dC10aXRsZVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwiZmlsZS5ub3Rlc1wiIG5hbWU9XCJub3Rlc3t7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG5vdGVzXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIlxyXG4gICAgICAgICAgICAgIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG10LTMgbWItMSBpbnB1dC10aXRsZVwiPkNhdGVnb3J5PC9sYWJlbD5cclxuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlcIiBuYW1lPVwiY2F0ZWdvcnl7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjYXRlZ29yaWVzXCIgW25nVmFsdWVdPVwiY1wiPnt7IGMgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3sgZmlsZT8ubmFtZSB9fTwvcD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTE2IGZsZXgtd3JhcCB3LWZ1bGxcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkZWRGaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHVwbG9hZGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBwLTMgYm9yZGVyIHJvdW5kZWQtbGcgc2hhZG93LXNtIGJnLXdoaXRlIHctWzQ1MHB4XSBmbGV4IHVwbG9hZF9maWxlXCI+XHJcblxyXG4gICAgICA8IS0tIENsb3NlIGljb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICA8c3ZnIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICA8cmVjdCB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjExXCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTcuMDg5MTEgMTUuODg4OUw2LjExMTMzIDE0LjkxMTFMMTAuMDIyNCAxMUw2LjExMTMzIDcuMDg4ODZMNy4wODkxMSA2LjExMTA4TDExLjAwMDIgMTAuMDIyMkwxNC45MTEzIDYuMTExMDhMMTUuODg5MSA3LjA4ODg2TDExLjk3OCAxMUwxNS44ODkxIDE0LjkxMTFMMTQuOTExMyAxNS44ODg5TDExLjAwMDIgMTEuOTc3OEw3LjA4OTExIDE1Ljg4ODlaXCJcclxuICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gVGh1bWJuYWlsIG9uIGxlZnQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTI4IGgtMjggZmxleC1zaHJpbmstMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlLnR5cGUgPT09ICdpbWFnZSc7IGVsc2Ugbm9uSW1hZ2VUaHVtYlwiPlxyXG4gICAgICAgICAgPGltZyBjbGFzcz1cImZpbGUtdGh1bWJuYWlsIHctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWRcIlxyXG4gICAgICAgICAgICAgICBbc3JjXT1cImZpbGU/LnJlc3VsdFwiXHJcbiAgICAgICAgICAgICAgIGFsdD1cInByZXZpZXdcIiAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vbkltYWdlVGh1bWI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS10aHVtYm5haWwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyIHJvdW5kZWQgdy1mdWxsIGgtZnVsbCBiZy1ncmF5LTUwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpbGUudHlwZVwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gQ1NWIC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHN2ZyAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiM1wiIHN0cm9rZT1cIiMyMmM1NWVcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOCA2djhhMiAyIDAgMCAwIDIgMmg2XCIgc3Ryb2tlPVwiIzIyYzU1ZVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8dGV4dCB4PVwiMTRcIiB5PVwiMzRcIiBmb250LXNpemU9XCIxMFwiIGZvbnQtZmFtaWx5PVwibW9ub3NwYWNlXCIgZmlsbD1cIiMyMmM1NWVcIj5DU1Y8L3RleHQ+XHJcbiAgICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY3N2J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyM0E3NjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTYuOTQwNzYgMTAuMzQzM0M2Ljg1OTM5IDEwLjM0MzMgNi43ODcxNiAxMC4zNTg4IDYuNzI0MDggMTAuMzg5OUM2LjY2MTkxIDEwLjQyIDYuNjA5MzQgMTAuNDY0IDYuNTY2MzcgMTAuNTIxNkM2LjUyNDMyIDEwLjU3OTMgNi40OTIzMiAxMC42NDg5IDYuNDcwMzggMTAuNzMwNUM2LjQ0ODQ0IDEwLjgxMjIgNi40Mzc0NyAxMC45MDQgNi40Mzc0NyAxMS4wMDZDNi40Mzc0NyAxMS4xNDM1IDYuNDU0ODQgMTEuMjYxIDYuNDg5NTggMTEuMzU4NkM2LjUyNTIzIDExLjQ1NTMgNi41ODAwOSAxMS41Mjk0IDYuNjU0MTQgMTEuNTgwOEM2LjcyODIgMTEuNjMxNCA2LjgyMzczIDExLjY1NjcgNi45NDA3NiAxMS42NTY3QzcuMDIyMTIgMTEuNjU2NyA3LjEwMzQ5IDExLjY0NzggNy4xODQ4NiAxMS42MzAxQzcuMjY3MTQgMTEuNjEyMyA3LjM1NjI4IDExLjU4NyA3LjQ1MjI4IDExLjU1NDJWMTEuOTAwMkM3LjM2MzU5IDExLjkzNTcgNy4yNzYyOCAxMS45NjEgNy4xOTAzNSAxMS45NzZDNy4xMDQ0MSAxMS45OTIgNy4wMDc5NSAxMiA2LjkwMDk5IDEyQzYuNjk0MzcgMTIgNi41MjQzMiAxMS45NTg3IDYuMzkwODQgMTEuODc2MkM2LjI1ODI3IDExLjc5MjkgNi4xNTk5OSAxMS42NzY2IDYuMDk2IDExLjUyNzZDNi4wMzIgMTEuMzc3NyA2IDExLjIwMjkgNiAxMS4wMDMzQzYgMTAuODU2MSA2LjAyMDU3IDEwLjcyMTIgNi4wNjE3MSAxMC41OTg4QzYuMTAyODUgMTAuNDc2NCA2LjE2MzE5IDEwLjM3MDQgNi4yNDI3MyAxMC4yODA4QzYuMzIyMjcgMTAuMTkxMiA2LjQyMDU1IDEwLjEyMiA2LjUzNzU4IDEwLjA3MzJDNi42NTQ2IDEwLjAyNDQgNi43ODg5OSAxMCA2Ljk0MDc2IDEwQzcuMDQwNDEgMTAgNy4xNDAwNiAxMC4wMTI0IDcuMjM5NzEgMTAuMDM3M0M3LjM0MDI4IDEwLjA2MTIgNy40MzYyOCAxMC4wOTQ1IDcuNTI3NyAxMC4xMzcxTDcuMzkwNTcgMTAuNDcyNEM3LjMxNTYgMTAuNDM3OCA3LjI0MDE3IDEwLjQwNzYgNy4xNjQyOSAxMC4zODE5QzcuMDg4NDEgMTAuMzU2MiA3LjAxMzkgMTAuMzQzMyA2Ljk0MDc2IDEwLjM0MzNaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNOS4wNjM2MyAxMS40MzMxQzkuMDYzNjMgMTEuNTQ4NSA5LjAzNDgzIDExLjY0ODcgOC45NzcyNCAxMS43MzM5QzguOTE5NjQgMTEuODE5IDguODM1NTMgMTEuODg0NyA4LjcyNDkgMTEuOTMwOEM4LjYxNTE5IDExLjk3NjkgOC40ODE3MiAxMiA4LjMyNDQ3IDEyQzguMjU0OTggMTIgOC4xODY4NyAxMS45OTU2IDguMTIwMTMgMTEuOTg2N0M4LjA1NDMxIDExLjk3NzggNy45OTA3NyAxMS45NjUgNy45Mjk1MSAxMS45NDgxQzcuODY5MTcgMTEuOTMwNCA3LjgxMTU3IDExLjkwODYgNy43NTY3MiAxMS44ODI5VjExLjQ5OTdDNy44NTE4IDExLjU0MDUgNy45NTA1NCAxMS41NzczIDguMDUyOTMgMTEuNjEwMUM4LjE1NTMzIDExLjY0MjkgOC4yNTY4MSAxMS42NTkzIDguMzU3MzggMTEuNjU5M0M4LjQyNjg2IDExLjY1OTMgOC40ODI2MyAxMS42NTA1IDguNTI0NjggMTEuNjMyN0M4LjU2NzY1IDExLjYxNSA4LjU5ODc0IDExLjU5MDYgOC42MTc5NCAxMS41NTk1QzguNjM3MTQgMTEuNTI4NSA4LjY0Njc0IDExLjQ5MyA4LjY0Njc0IDExLjQ1MzFDOC42NDY3NCAxMS40MDQzIDguNjI5ODIgMTEuMzYyNiA4LjU5NiAxMS4zMjhDOC41NjIxNyAxMS4yOTM0IDguNTE1NTQgMTEuMjYxIDguNDU2MTIgMTEuMjMwOUM4LjM5NzYgMTEuMjAwNyA4LjMzMTMyIDExLjE2ODMgOC4yNTcyNyAxMS4xMzM3QzguMjEwNjQgMTEuMTEyNCA4LjE1OTkgMTEuMDg2NyA4LjEwNTA1IDExLjA1NjZDOC4wNTAxOSAxMS4wMjU1IDcuOTk4MDggMTAuOTg3OCA3Ljk0ODcxIDEwLjk0MzRDNy44OTkzNCAxMC44OTkxIDcuODU4NjYgMTAuODQ1NCA3LjgyNjY2IDEwLjc4MjRDNy43OTU1OCAxMC43MTg2IDcuNzgwMDMgMTAuNjQyMyA3Ljc4MDAzIDEwLjU1MzZDNy43ODAwMyAxMC40MzczIDcuODA3NDYgMTAuMzM4IDcuODYyMzEgMTAuMjU1NUM3LjkxNzE3IDEwLjE3MyA3Ljk5NTM0IDEwLjExIDguMDk2ODIgMTAuMDY2NUM4LjE5OTIxIDEwLjAyMjIgOC4zMTk4OSAxMCA4LjQ1ODg2IDEwQzguNTYzMDggMTAgOC42NjIyOCAxMC4wMTIgOC43NTY0NSAxMC4wMzU5QzguODUxNTMgMTAuMDU5IDguOTUwNzIgMTAuMDkyNyA5LjA1NDAzIDEwLjEzNzFMOC45MTY5IDEwLjQ1NzhDOC44MjQ1NiAxMC40MjE0IDguNzQxODIgMTAuMzkzNCA4LjY2ODY4IDEwLjM3MzlDOC41OTU1NCAxMC4zNTM1IDguNTIxMDMgMTAuMzQzMyA4LjQ0NTE1IDEwLjM0MzNDOC4zOTIxMiAxMC4zNDMzIDguMzQ2ODYgMTAuMzUxNyA4LjMwOTM4IDEwLjM2ODZDOC4yNzE5IDEwLjM4NDYgOC4yNDM1NSAxMC40MDc2IDguMjI0MzYgMTAuNDM3OEM4LjIwNTE2IDEwLjQ2NzEgOC4xOTU1NiAxMC41MDEyIDguMTk1NTYgMTAuNTQwM0M4LjE5NTU2IDEwLjU4NjQgOC4yMDkyNyAxMC42MjU0IDguMjM2NyAxMC42NTc0QzguMjY1MDQgMTAuNjg4NCA4LjMwNzA5IDEwLjcxODYgOC4zNjI4NiAxMC43NDc4QzguNDE5NTUgMTAuNzc3MSA4LjQ4OTk0IDEwLjgxMTMgOC41NzQwNSAxMC44NTAzQzguNjc2NDUgMTAuODk3MyA4Ljc2Mzc2IDEwLjk0NjYgOC44MzU5OCAxMC45OThDOC45MDkxMiAxMS4wNDg2IDguOTY1MzUgMTEuMTA4NCA5LjAwNDY2IDExLjE3NzZDOS4wNDM5OCAxMS4yNDYgOS4wNjM2MyAxMS4zMzExIDkuMDYzNjMgMTEuNDMzMVpcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMC4wMjc5TDEwLjMxODQgMTEuOTczNEg5Ljg1NDkxTDkuMTc0NzEgMTAuMDI3OUg5LjYwMzk1TDkuOTgxMDggMTEuMTg1NkM5Ljk4NzQ4IDExLjIwNTEgOS45OTc5OSAxMS4yNDIgMTAuMDEyNiAxMS4yOTYxQzEwLjAyNzIgMTEuMzQ5MyAxMC4wNDE5IDExLjQwNjEgMTAuMDU2NSAxMS40NjY0QzEwLjA3MiAxMS41MjU4IDEwLjA4MjYgMTEuNTc1MSAxMC4wODggMTEuNjE0MUMxMC4wOTM1IDExLjU3NTEgMTAuMTAzMSAxMS41MjU4IDEwLjExNjggMTEuNDY2NEMxMC4xMzE1IDExLjQwNyAxMC4xNDU2IDExLjM1MDYgMTAuMTU5NCAxMS4yOTc0QzEwLjE3NCAxMS4yNDMzIDEwLjE4NDUgMTEuMjA2IDEwLjE5MDkgMTEuMTg1NkwxMC41NzA4IDEwLjAyNzlIMTFaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gVEVYVCAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjZcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjNcIiBzdHJva2U9XCIjM2I4MmY2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjggNnY4YTIgMiAwIDAgMCAyIDJoNlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAyNGgyME0xNCAyOWgyME0xNCAzNGgxMlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3ZnICB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCIgZmlsbD1cIiNGNEY0RjRcIi8+XHJcbjxwYXRoIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCIgZmlsbD1cIiNERDIwMjVcIi8+XHJcbjxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XHJcbjxwYXRoIGQ9XCJNNi42MDg0IDkuOTYwMzhDNi44NzE2MSA5Ljk2MDM4IDcuMDYzNjYgMTAuMDE3MSA3LjE4NDU3IDEwLjEzMDZDNy4zMDU0OCAxMC4yNDMxIDcuMzY1OTMgMTAuMzk4NCA3LjM2NTkzIDEwLjU5NjVDNy4zNjU5MyAxMC42ODU4IDcuMzUyNDUgMTAuNzcxNCA3LjMyNTQ3IDEwLjg1MzJDNy4yOTg1IDEwLjkzNDIgNy4yNTQzMiAxMS4wMDYyIDcuMTkyOTQgMTEuMDY5NUM3LjEzMjQ5IDExLjEzMjcgNy4wNTE1NyAxMS4xODI5IDYuOTUwMiAxMS4yMjAxQzYuODQ4ODIgMTEuMjU2NCA2LjcyMzczIDExLjI3NDYgNi41NzQ5MiAxMS4yNzQ2SDYuMzg5MzdWMTJINS45NTY4OVY5Ljk2MDM4SDYuNjA4NFpNNi41ODYwOCAxMC4zMTQ3SDYuMzg5MzdWMTAuOTIwMkg2LjUzMTY3QzYuNjEyNTggMTAuOTIwMiA2LjY4MjggMTAuOTA5NSA2Ljc0MjMzIDEwLjg4ODFDNi44MDE4NSAxMC44NjY3IDYuODQ3ODkgMTAuODMzMiA2Ljg4MDQ0IDEwLjc4NzdDNi45MTI5OSAxMC43NDIxIDYuOTI5MjcgMTAuNjgzNSA2LjkyOTI3IDEwLjYxMTlDNi45MjkyNyAxMC41MTE0IDYuOTAxMzcgMTAuNDM3IDYuODQ1NTYgMTAuMzg4N0M2Ljc4OTc2IDEwLjMzOTQgNi43MDMyNiAxMC4zMTQ3IDYuNTg2MDggMTAuMzE0N1pNOS40NDMyMiAxMC45NjA3QzkuNDQzMjIgMTEuMTkwNCA5LjM5OTA0IDExLjM4MjQgOS4zMTA2OSAxMS41MzY4QzkuMjIzMjYgMTEuNjkwMyA5LjA5NjMxIDExLjgwNjEgOC45Mjk4MyAxMS44ODQyQzguNzYzMzUgMTEuOTYxNCA4LjU2MjkyIDEyIDguMzI4NTQgMTJINy43NTA5OFY5Ljk2MDM4SDguMzkxMzJDOC42MDUyNCA5Ljk2MDM4IDguNzkwNzggOS45OTg1MSA4Ljk0Nzk2IDEwLjA3NDhDOS4xMDUxNCAxMC4xNTAxIDkuMjI2OTggMTAuMjYyMiA5LjMxMzQ4IDEwLjQxMUM5LjM5OTk3IDEwLjU1ODkgOS40NDMyMiAxMC43NDIxIDkuNDQzMjIgMTAuOTYwN1pNOC45OTQgMTAuOTcxOEM4Ljk5NCAxMC44MjExIDguOTcxNjggMTAuNjk3NSA4LjkyNzA0IDEwLjYwMDdDOC44ODMzMiAxMC41MDMxIDguODE4MjIgMTAuNDMxIDguNzMxNzIgMTAuMzg0NUM4LjY0NjE2IDEwLjMzOCA4LjU0MDEzIDEwLjMxNDcgOC40MTM2NCAxMC4zMTQ3SDguMTgzNDVWMTEuNjQyOUg4LjM2OUM4LjU4MDEyIDExLjY0MjkgOC43MzY4NCAxMS41ODY2IDguODM5MTUgMTEuNDc0MUM4Ljk0MjM4IDExLjM2MTUgOC45OTQgMTEuMTk0MSA4Ljk5NCAxMC45NzE4Wk0xMC4yOTE0IDEySDkuODY1OTNWOS45NjAzOEgxMS4wMzVWMTAuMzE0N0gxMC4yOTE0VjEwLjg0MDdIMTAuOTgzNFYxMS4xOTM2SDEwLjI5MTRWMTJaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48L3N2Zz4gLS0+XHJcblxyXG48c3ZnICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCIgZmlsbD1cIiNGNEY0RjRcIi8+XHJcbjxwYXRoIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCIgZmlsbD1cIiMxRjVFQkJcIi8+XHJcbjxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XHJcbjxwYXRoIGQ9XCJNNy4wNDM1MyAxMkg2LjYxMTA1VjEwLjMyMDNINi4wNTcyVjkuOTYwMzhINy41OTczOFYxMC4zMjAzSDcuMDQzNTNWMTJaTTkuNTYwMjcgMTJIOS4wNjY0MUw4LjU5MjA4IDExLjIyODVMOC4xMTc3NSAxMkg3LjY1NDU4TDguMzMxMTkgMTAuOTQ4MUw3LjY5NzgyIDkuOTYwMzhIOC4xNzQ5NEw4LjYxNDQgMTAuNjk0Mkw5LjA0NTQ4IDkuOTYwMzhIOS41MTE0NEw4Ljg3MTA5IDEwLjk3MThMOS41NjAyNyAxMlpNMTAuNjAzOCAxMkgxMC4xNzEzVjEwLjMyMDNIOS42MTc0N1Y5Ljk2MDM4SDExLjE1NzZWMTAuMzIwM0gxMC42MDM4VjEyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPC9zdmc+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEdlbmVyaWMgLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3ZnICpuZ1N3aXRjaERlZmF1bHQgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiM1wiIHN0cm9rZT1cIiM5Y2EzYWZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOCA2djhhMiAyIDAgMCAwIDIgMmg2XCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDMwaDE2XCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgICpuZ1N3aXRjaERlZmF1bHQgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG48cGF0aCBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiIGZpbGw9XCIjRjRGNEY0XCIvPlxyXG48cGF0aCBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiIGZpbGw9XCIjREQyMDI1XCIvPlxyXG48cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxyXG48cGF0aCBkPVwiTTYuNjA4NCA5Ljk2MDM4QzYuODcxNjEgOS45NjAzOCA3LjA2MzY2IDEwLjAxNzEgNy4xODQ1NyAxMC4xMzA2QzcuMzA1NDggMTAuMjQzMSA3LjM2NTkzIDEwLjM5ODQgNy4zNjU5MyAxMC41OTY1QzcuMzY1OTMgMTAuNjg1OCA3LjM1MjQ1IDEwLjc3MTQgNy4zMjU0NyAxMC44NTMyQzcuMjk4NSAxMC45MzQyIDcuMjU0MzIgMTEuMDA2MiA3LjE5Mjk0IDExLjA2OTVDNy4xMzI0OSAxMS4xMzI3IDcuMDUxNTcgMTEuMTgyOSA2Ljk1MDIgMTEuMjIwMUM2Ljg0ODgyIDExLjI1NjQgNi43MjM3MyAxMS4yNzQ2IDYuNTc0OTIgMTEuMjc0Nkg2LjM4OTM3VjEySDUuOTU2ODlWOS45NjAzOEg2LjYwODRaTTYuNTg2MDggMTAuMzE0N0g2LjM4OTM3VjEwLjkyMDJINi41MzE2N0M2LjYxMjU4IDEwLjkyMDIgNi42ODI4IDEwLjkwOTUgNi43NDIzMyAxMC44ODgxQzYuODAxODUgMTAuODY2NyA2Ljg0Nzg5IDEwLjgzMzIgNi44ODA0NCAxMC43ODc3QzYuOTEyOTkgMTAuNzQyMSA2LjkyOTI3IDEwLjY4MzUgNi45MjkyNyAxMC42MTE5QzYuOTI5MjcgMTAuNTExNCA2LjkwMTM3IDEwLjQzNyA2Ljg0NTU2IDEwLjM4ODdDNi43ODk3NiAxMC4zMzk0IDYuNzAzMjYgMTAuMzE0NyA2LjU4NjA4IDEwLjMxNDdaTTkuNDQzMjIgMTAuOTYwN0M5LjQ0MzIyIDExLjE5MDQgOS4zOTkwNCAxMS4zODI0IDkuMzEwNjkgMTEuNTM2OEM5LjIyMzI2IDExLjY5MDMgOS4wOTYzMSAxMS44MDYxIDguOTI5ODMgMTEuODg0MkM4Ljc2MzM1IDExLjk2MTQgOC41NjI5MiAxMiA4LjMyODU0IDEySDcuNzUwOThWOS45NjAzOEg4LjM5MTMyQzguNjA1MjQgOS45NjAzOCA4Ljc5MDc4IDkuOTk4NTEgOC45NDc5NiAxMC4wNzQ4QzkuMTA1MTQgMTAuMTUwMSA5LjIyNjk4IDEwLjI2MjIgOS4zMTM0OCAxMC40MTFDOS4zOTk5NyAxMC41NTg5IDkuNDQzMjIgMTAuNzQyMSA5LjQ0MzIyIDEwLjk2MDdaTTguOTk0IDEwLjk3MThDOC45OTQgMTAuODIxMSA4Ljk3MTY4IDEwLjY5NzUgOC45MjcwNCAxMC42MDA3QzguODgzMzIgMTAuNTAzMSA4LjgxODIyIDEwLjQzMSA4LjczMTcyIDEwLjM4NDVDOC42NDYxNiAxMC4zMzggOC41NDAxMyAxMC4zMTQ3IDguNDEzNjQgMTAuMzE0N0g4LjE4MzQ1VjExLjY0MjlIOC4zNjlDOC41ODAxMiAxMS42NDI5IDguNzM2ODQgMTEuNTg2NiA4LjgzOTE1IDExLjQ3NDFDOC45NDIzOCAxMS4zNjE1IDguOTk0IDExLjE5NDEgOC45OTQgMTAuOTcxOFpNMTAuMjkxNCAxMkg5Ljg2NTkzVjkuOTYwMzhIMTEuMDM1VjEwLjMxNDdIMTAuMjkxNFYxMC44NDA3SDEwLjk4MzRWMTEuMTkzNkgxMC4yOTE0VjEyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE1ldGFkYXRhIG9uIHJpZ2h0IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LTEgbWwtNFwiPlxyXG4gICAgICAgIDwhLS0gVGl0bGUgLS0+XHJcbiAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBtYi0xIGlucHV0LXRpdGxlXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImZpbGUudGl0bGVcIlxyXG4gICAgICAgICAgICAgICBuYW1lPVwidGl0bGV7e2l9fVwiXHJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0aXRsZVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIG1iLTMgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCIgLz5cclxuXHJcbiAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMSBpbnB1dC10aXRsZVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVze3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBDYXRlZ29yeSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG1iLTEgaW5wdXQtdGl0bGVcIj5DYXRlZ29yeTwvbGFiZWw+XHJcbiAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlJZCBcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImNhdGVnb3J5e3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENhdGVnb3J5PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNhdGVnb3JpZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlXCI+e3sgYy5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuICA8L2Rpdj5cclxuPC9meC1jb21wb25lbnQ+Il19
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxKLE9BQU8sRUFBNkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFTbkUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFnQmhDO0lBQStCO0lBZm5ELHVEQUF1RDtJQUNoRCxpQkFBaUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsYUFBYSxHQUFRO1FBQzFCLGFBQWEsRUFBRSxFQUFFO1FBQ2pC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eUVBQXlFO1lBQ2xGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDM0IsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQTJCO1FBQ3hDLDRDQUE0QztRQUM1QyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNyQixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWtCO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzt3R0FsaUJRLGlCQUFpQjs0RkFBakIsaUJBQWlCLDhGQ2pCOUIscW8xQkErVGUsZ3NDRGxUSCxZQUFZLDRnQkFBRSxXQUFXLDRFQUFFLFdBQVcseWdDQUFFLG1CQUFtQiw4QkFBQyxnQkFBZ0I7OzRGQUkzRSxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFDLGdCQUFnQixDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRnhCYXNlQ29tcG9uZW50LCBGeENvbXBvbmVudCwgRnhTZWxlY3RTZXR0aW5nLCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhWYWxpZGF0aW9uLCBGeFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjR9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlLCBVcGxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Z4LXVwbG9hZGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZ4Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSxGaWxlVXBsb2FkTW9kdWxlIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIC8vIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkRmlsZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkZWRGaWxlczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBmb3JtYXR0ZWREYXRhOiBhbnkgPSB7XHJcbiAgICB1cGxvYWRlZEZpbGVzOiBbXSxcclxuICAgIGRlbGV0ZWRGaWxlczogW11cclxuICB9O1xyXG4gIGNhdGVnb3JpZXMgPSBbXHJcbiAgeyBsYWJlbDogJ09yYWwgSW1hZ2VzJywgdmFsdWU6IDE2IH0sXHJcbiAgeyBsYWJlbDogJ1Bhc3QgRG9jcycsIHZhbHVlOiAxNyB9LFxyXG4gIHsgbGFiZWw6ICdYLVJheXMnLCB2YWx1ZTogMTQgfSxcclxuICB7IGxhYmVsOiAnUHJvZmlsZScsIHZhbHVlOiAxOCB9LFxyXG5dO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNkcilcclxuICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoZnhEYXRhKT0+e1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgdXBsb2FkZWRJbWFnZXM6IHsgW2tleTogc3RyaW5nXTogeyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGwgfVtdIH0gPSB7fTtcclxuICBkZWxldGVkRmlsZXM6IGFueVtdID0gW107XHJcbiAgLy8gcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZVVybHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3VwbG9hZGVyS2V5XSA9IGltYWdlVXJscy5tYXAocmVzdWx0ID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdCxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRJbWFnZXNdXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMudXBsb2FkZWRJbWFnZXMpLmZsYXQoKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcbiAgXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZywgb3JpZ2luYWxVcmw6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBqdXN0IGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiB1cmxcclxuICAvLyAgICAgICAgICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4vLyAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbi8vICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG4gIFxyXG4vLyAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gIFxyXG4vLyAgICAgICAgIC8vIEV4dHJhY3QgdXBsb2FkZXIga2V5cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBVUkwgYXJyYXlzXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4vLyAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4vLyAgICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbiAgXHJcbi8vICAgICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbi8vICAgICAgICAgICAvLyBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6c3RyaW5nIDsgbm90ZXM6c3RyaW5nIH0+W10gPSBbXTtcclxuICBcclxuLy8gICAgICAgICAgIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6YW55KSA9PiB7XHJcbi8vICAgICAgICAgICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4vLyAgICAgICAgICAgLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgICAgICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbi8vICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuLy8gICAgICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCAgICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbFxyXG4vLyAgICAgICAgICAgLy8gICAgICAgfSkpXHJcbi8vICAgICAgICAgICAvLyAgICAgKTtcclxuLy8gICAgICAgICAgIC8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgICAgICAgICAgLy8gICB9XHJcbi8vICAgICAgICAgICAvLyB9KTtcclxuXHJcbi8vICAgICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6IHN0cmluZzsgbm90ZXM6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4vLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOiBhbnkpID0+IHtcclxuLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuLy8gICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbi8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbi8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuLy8gICAgICAgICB0aXRsZTogb3JpZ2luYWxVcmw/LnRpdGxlIHx8ICcnLCAvLyBkZWZhdWx0IGVtcHR5IGlmIG5vdCBwcmVzZW50XHJcbi8vICAgICAgICAgbm90ZXM6IG9yaWdpbmFsVXJsPy5ub3RlcyB8fCAnJ1xyXG4vLyAgICAgICB9KSlcclxuLy8gICAgICk7XHJcbi8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4vLyAgIH1cclxuLy8gfSk7XHJcblxyXG4gIFxyXG4vLyAgICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbi8vICAgICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuLy8gICAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuLy8gICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4vLyAgICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4vLyAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuLy8gICAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdCxcclxuLy8gICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbi8vICAgICAgICAgICAgICAgICAgIG5vdGVzOiAnJ1xyXG4vLyAgICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuLy8gICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4vLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4vLyAgICAgICAgICAgICAgIH0sXHJcbi8vICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbi8vICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICB9KTtcclxuLy8gICAgICAgICAgIH1cclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH0pO1xyXG4vLyAgIH1cclxuICBcclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICBcclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgb3JpZ2luYWxVcmw6IHN0cmluZyB9W10gfSA9IHZhcmlhYmxlcy51cGxvYWRlZEZpbGVzO1xyXG4gIFxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG4gIFxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmwgPSBmaWxlT2JqPy5vcmlnaW5hbFVybDtcclxuICAvLyAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG4gIFxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuICBcclxuXHJcbiAgLy8gcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXQ/LmZpbGVzPy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKHtcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgcmVzdWx0OiBlLnRhcmdldD8ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlPy5uYW1lLFxyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KClcclxuICAvLyAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMudXBsb2FkZWRGaWxlcyk7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAvLyAgIGlmIChpbnB1dC5maWxlcykge1xyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzW2ldO1xyXG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAvLyAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7XHJcbiAgLy8gICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAvLyAgICAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gIC8vICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgLy8gICAgICAgICAgIG5vdGVzOiAnJyxcclxuICAvLyAgICAgICAgICAgY2F0ZWdvcnk6ICcnLFxyXG4gIC8vICAgICAgICAgICB0eXBlOiB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpLFxyXG4gIC8vICAgICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAvLyAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbi8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4vLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgXHJcbi8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbi8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuXHJcbi8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4vLyAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHVybHNcclxuLy8gICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKSBcclxuLy8gICAgICAgICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4vLyAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGVGcm9tVXJsKGZpbGVPYmo/Lm9yaWdpbmFsVXJsIHx8IGZpbGVPYmo/Lm5hbWUpO1xyXG5cclxuLy8gICAgICAgICAgICAgcmV0dXJuIHtcclxuLy8gICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbi8vICAgICAgICAgICAgICAgZmlsZTogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbi8vICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGZpbGVPYmoub3JpZ2luYWxVcmwsICAgIFxyXG4vLyAgICAgICAgICAgICAgIHJlc3VsdDogZmlsZU9iaj8udHlwZSA9PT0gJ2ltYWdlJyA/IGZpbGVPYmoub3JpZ2luYWxVcmwucHJldmlld1VybCA6IG51bGwsXHJcbi8vICAgICAgICAgICAgICAgbmFtZTogZmlsZU9iaj8ubmFtZSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbi8vICAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4vLyAgICAgICAgICAgICAgIGNhdGVnb3J5OiBmaWxlT2JqPy5jYXRlZ29yeSB8fCAnJyxcclxuLy8gICAgICAgICAgICAgICB0eXBlOiBmaWxlT2JqPy50eXBlLCAgICAgICAgICAgICAgICBcclxuLy8gICAgICAgICAgICAgfTtcclxuLy8gICAgICAgICAgIH0pO1xyXG5cclxuLy8gICAgICAgICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbi8vICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgIH1cclxuLy8gICAgIH0pO1xyXG4vLyB9XHJcblxyXG5uZ09uSW5pdCgpOiB2b2lkIHtcclxuICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcbiAgICAgIFxyXG4gICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiAodmFsdWUgYXMgYW55KT8udXBsb2FkZWRGaWxlcykge1xyXG4gICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICB9XHJcbn1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCBmaWxlc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopXHJcbiAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9yaWdpbmFsVXJsT2JqPy5maWxlTmFtZSB8fCAnJztcclxuICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG9yaWdpbmFsVXJsT2JqPy5maWxlVXJsIHx8ICcnO1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2aWV3VXJsID0gb3JpZ2luYWxVcmxPYmo/LnByZXZpZXdVcmw7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICAgICAgLy8gZGV0ZWN0IHR5cGUgYmFzZWQgb24gZmlsZSBleHRlbnNpb25cclxuICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlTmFtZSB8fCBmaWxlVXJsKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBsb2NhbFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaiwgICAgICAgLy8ga2VlcCB3aG9sZSBvYmplY3RcclxuICAgICAgICAgICAgICByZXN1bHQ6IHR5cGUgPT09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgID8gKHByZXZpZXdVcmwpICAgICAgICAvLyBwcmVmZXIgcHJldmlld1VybCwgZmFsbGJhY2sgdG8gZmlsZVVybFxyXG4gICAgICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlJZCA6IGZpbGVPYmo/LmNhdGVnb3J5SWQgIHx8ICcnLFxyXG4gICAgICAgICAgICAgIHR5cGU6IHR5cGUsICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCB0eXBlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xyXG4gIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc29sZS5sb2coXCJpbnB1dFwiLGlucHV0KTtcclxuICBpZiAoIWlucHV0LmZpbGVzKSByZXR1cm47XHJcblxyXG4gIEFycmF5LmZyb20oaW5wdXQuZmlsZXMpLmZvckVhY2goZmlsZSA9PiB7XHJcbiAgICBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGUoZmlsZSk7XHJcblxyXG4gICAgY29uc3QgbmV3RmlsZTogYW55ID0ge1xyXG4gICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgIG9yaWdpbmFsVXJsOiBudWxsLFxyXG4gICAgICByZXN1bHQ6IG51bGwsICAgICBcclxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIG5vdGVzOiAnJyxcclxuICAgICAgY2F0ZWdvcnlJZCA6ICcnLFxyXG4gICAgICB0eXBlOiBmaWxlVHlwZSwgICBcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcclxuICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsgLy8gb25seSBpbWFnZXMgbmVlZCBwcmV2aWV3XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBub24taW1hZ2Ug4oaSIHB1c2ggZGlyZWN0bHlcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG4gIG9uTWV0YUNoYW5nZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlPy5pZCAhPT0gaWQpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gZGVsZXRlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBbZGVsZXRlZEZpbGVdID0gdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcbiAgXHJcbiAgICAvLyBFbnN1cmUgZm9ybWF0dGVkRGF0YSBleGlzdHMgYW5kIGluaXRpYWxpemUgaWYgdW5kZWZpbmVkXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB0aGlzLmZvcm1hdHRlZERhdGEgfHwgeyB1cGxvYWRlZEZpbGVzOiBbXSwgZGVsZXRlZEZpbGVzOiBbXSB9O1xyXG4gIFxyXG4gICAgLy8gQWRkIHRoZSBkZWxldGVkIGZpbGUgdG8gdGhlIGRlbGV0ZWRGaWxlcyBhcnJheVxyXG4gICAgdGhpcy5kZWxldGVkRmlsZXMgPSBbLi4udGhpcy5kZWxldGVkRmlsZXMsIGRlbGV0ZWRGaWxlXTtcclxuICBcclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuICBcclxuICAgIC8vIFVwZGF0ZSBmb3JtYXR0ZWREYXRhXHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEgPSB7XHJcbiAgICAgIC4uLnRoaXMuZm9ybWF0dGVkRGF0YSxcclxuICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy51cGxvYWRlZEZpbGVzLFxyXG4gICAgICBkZWxldGVkRmlsZXM6IHRoaXMuZGVsZXRlZEZpbGVzXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgdXBsb2FkRmlsZUNvbnRyb2xcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICB9XHJcbiAgXHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndXBsb2FkLXRleHQnLCAkdGl0bGU6ICdVcGxvYWQgVGV4dCcsIHZhbHVlOiAnVXBsb2FkIEZpbGUnfSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoe2tleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZCcsIHZhbHVlOiBmYWxzZX0sIFt7b3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnRGlzYWJsZScsIHZhbHVlOiBmYWxzZX1dKVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9ucygpOiBGeFZhbGlkYXRpb25bXSB7XHJcbiAgICByZXR1cm4gW0Z4VmFsaWRhdG9yU2VydmljZS5yZXF1aXJlZF07XHJcbiAgfVxyXG5cclxuZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdvdGhlcicge1xyXG4gIGNvbnN0IG1pbWUgPSAoZmlsZS50eXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAvLyBJbWFnZXNcclxuICBpZiAobWltZS5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCAvXFwuKHBuZ3xqcGU/Z3xnaWZ8d2VicHxibXB8c3ZnKSQvaS50ZXN0KG5hbWUpKSB7XHJcbiAgICByZXR1cm4gJ2ltYWdlJztcclxuICB9XHJcblxyXG4gIC8vIENTVlxyXG4gIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgcmV0dXJuICdjc3YnO1xyXG4gIH1cclxuXHJcbiAgLy8gVGV4dCBmaWxlc1xyXG4gIGlmIChtaW1lID09PSAndGV4dC9wbGFpbicgfHwgbmFtZS5lbmRzV2l0aCgnLnR4dCcpKSB7XHJcbiAgICByZXR1cm4gJ3RleHQnO1xyXG4gIH1cclxuXHJcbiAgLy8gUERGXHJcbiAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi9wZGYnIHx8IG5hbWUuZW5kc1dpdGgoJy5wZGYnKSkge1xyXG4gICAgcmV0dXJuICdwZGYnO1xyXG4gIH1cclxuXHJcbiAgLy8gRXhjZWxcclxuICBpZiAoXHJcbiAgICBtaW1lID09PSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyB8fFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB8fFxyXG4gICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICkge1xyXG4gICAgcmV0dXJuICdleGNlbCc7XHJcbiAgfVxyXG5cclxuICAvLyBXb3JkXHJcbiAgaWYgKFxyXG4gICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcgfHxcclxuICAgIC9cXC4oZG9jfGRvY3gpJC9pLnRlc3QobmFtZSlcclxuICApIHtcclxuICAgIHJldHVybiAnd29yZCc7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gJ290aGVyJztcclxufVxyXG5cclxub3BlbkZpbGVEaWFsb2coZmlsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICBmaWxlSW5wdXQudmFsdWUgPSAnJztcclxuICBmaWxlSW5wdXQuY2xpY2soKTtcclxufVxyXG5cclxub25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgZ2FwLTQgcC0yIHBiLTAgcm91bmRlZC1zbVwiPlxyXG4gICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtOCBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlBhdGllbnQgSW1hZ2VzPC9wPlxyXG4gICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBnYXAtMiB1cGxvYWRcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI5XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgZD1cIk0xNC4wMDEgMy4wMDE5NUMxMS41MzIyIDMuMDAxOTUgOS4xNjcyMiAzLjg2OTU2IDcuMjM2NDEgNS4zODQxNEw3LjIzNTk4IDQuNTk2OTVDNy4yMzU5OCA0LjUyNDczIDcuMjIxNzUgNC40NTMyMSA3LjE5NDExIDQuMzg2NDhDNy4xNjY0NyA0LjMxOTc1IDcuMTI1OTYgNC4yNTkxMiA3LjA3NDg5IDQuMjA4MDRDNy4wMjM4MSA0LjE1Njk3IDYuOTYzMTggNC4xMTY0NiA2Ljg5NjQ1IDQuMDg4ODJDNi44Mjk3MiA0LjA2MTE4IDYuNzU4MiA0LjA0Njk1IDYuNjg1OTggNC4wNDY5NUM2LjYxMzc1IDQuMDQ2OTUgNi41NDIyMyA0LjA2MTE4IDYuNDc1NSA0LjA4ODgyQzYuNDA4NzcgNC4xMTY0NiA2LjM0ODE0IDQuMTU2OTcgNi4yOTcwNyA0LjIwODA0QzYuMjQ1OTkgNC4yNTkxMiA2LjIwNTQ4IDQuMzE5NzUgNi4xNzc4NCA0LjM4NjQ4QzYuMTUwMiA0LjQ1MzIxIDYuMTM1OTggNC41MjQ3MyA2LjEzNTk4IDQuNTk2OTVMNi4xMzY0MiA2LjY4NjUyQzYuMTM2NDMgNi44MzIzOSA2LjE5NDM4IDYuOTcyMjggNi4yOTc1MiA3LjA3NTQyQzYuNDAwNjcgNy4xNzg1NiA2LjU0MDU1IDcuMjM2NTEgNi42ODY0MiA3LjIzNjUySDguNzc1OThDOC44NDgyIDcuMjM2NTIgOC45MTk3MiA3LjIyMjMgOC45ODY0NSA3LjE5NDY2QzkuMDUzMTggNy4xNjcwMiA5LjExMzgxIDcuMTI2NTEgOS4xNjQ4OSA3LjA3NTQzQzkuMjE1OTYgNy4wMjQzNiA5LjI1NjQ3IDYuOTYzNzMgOS4yODQxMSA2Ljg5N0M5LjMxMTc1IDYuODMwMjcgOS4zMjU5OCA2Ljc1ODc1IDkuMzI1OTggNi42ODY1MkM5LjMyNTk4IDYuNjE0MyA5LjMxMTc1IDYuNTQyNzggOS4yODQxMSA2LjQ3NjA1QzkuMjU2NDcgNi40MDkzMiA5LjIxNTk2IDYuMzQ4NjkgOS4xNjQ4OSA2LjI5NzYxQzkuMTEzODEgNi4yNDY1NCA5LjA1MzE4IDYuMjA2MDMgOC45ODY0NSA2LjE3ODM5QzguOTE5NzIgNi4xNTA3NSA4Ljg0ODIgNi4xMzY1MiA4Ljc3NTk4IDYuMTM2NTJIOC4wNTg0QzkuNzcwMiA0Ljg0Mzg3IDExLjgzOTkgNC4xMDE5NSAxNC4wMDEgNC4xMDE5NUMxOS40NzUxIDQuMTAxOTUgMjMuOTAxIDguNTI3ODIgMjMuOTAxIDE0LjAwMkMyMy45MDEgMTkuNDc2MSAxOS40NzUxIDIzLjkwMiAxNC4wMDEgMjMuOTAyQzguNTI2ODQgMjMuOTAyIDQuMTAwOTggMTkuNDc2MSA0LjEwMDk4IDE0LjAwMkM0LjEwMDk4IDEyLjYzODEgNC4zODI2MyAxMS4yODg4IDQuOTI4NTUgMTAuMDM4OUM0Ljk4NjkxIDkuOTA1MzIgNC45ODk4MiA5Ljc1Mzk5IDQuOTM2NjUgOS42MTgyMkM0Ljg4MzQ3IDkuNDgyNDYgNC43Nzg1NSA5LjM3MzM2IDQuNjQ0OTYgOS4zMTQ5MkM0LjU3ODc3IDkuMjg1OTYgNC41MDc1MyA5LjI3MDMyIDQuNDM1MyA5LjI2ODlDNC4zNjMwNiA5LjI2NzQ3IDQuMjkxMjYgOS4yODAzIDQuMjIzOTggOS4zMDY2M0M0LjE1NjcxIDkuMzMyOTcgNC4wOTUyOCA5LjM3MjMgNC4wNDMyMSA5LjQyMjM4QzMuOTkxMTQgOS40NzI0NyAzLjk0OTQ0IDkuNTMyMzIgMy45MjA1MSA5LjU5ODUyQzMuMzEzOTMgMTAuOTg3MiAzLjAwMDk4IDEyLjQ4NjYgMy4wMDA5OCAxNC4wMDJDMy4wMDA5OCAyMC4wNzA2IDcuOTMyMzYgMjUuMDAyIDE0LjAwMSAyNS4wMDJDMjAuMDY5NiAyNS4wMDIgMjUuMDAxIDIwLjA3MDYgMjUuMDAxIDE0LjAwMkMyNS4wMDEgNy45MzMzNCAyMC4wNjk2IDMuMDAxOTUgMTQuMDAxIDMuMDAxOTVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICBkPVwiTTEzLjk5ODggNi4xMzk2NUM5LjY2MTYgNi4xMzk2NSA2LjEzMzc5IDkuNjY3NDYgNi4xMzM3OSAxNC4wMDQ2QzYuMTMzNzkgMTguMzQxOCA5LjY2MTYgMjEuODY5NiAxMy45OTg4IDIxLjg2OTZDMTguMzM2IDIxLjg2OTYgMjEuODYzOCAxOC4zNDE4IDIxLjg2MzggMTQuMDA0NkMyMS44NjM4IDkuNjY3NDYgMTguMzM2IDYuMTM5NjUgMTMuOTk4OCA2LjEzOTY1Wk0xMy45OTg4IDguMjI5NjVDMTQuMTQ0NyA4LjIyOTY1IDE0LjI4NDYgOC4yODc1OSAxNC4zODc3IDguMzkwNzRDMTQuNDkwOCA4LjQ5Mzg4IDE0LjU0ODggOC42MzM3OCAxNC41NDg4IDguNzc5NjVWMTMuNzc2OUwxNy41MjI3IDE2Ljc1MDhDMTcuNjI1OCAxNi44NTM5IDE3LjY4MzcgMTYuOTkzOCAxNy42ODM3IDE3LjEzOTZDMTcuNjgzNyAxNy4yODU1IDE3LjYyNTggMTcuNDI1NCAxNy41MjI3IDE3LjUyODVDMTcuNDE5NSAxNy42MzE2IDE3LjI3OTYgMTcuNjg5NiAxNy4xMzM4IDE3LjY4OTZDMTYuOTg3OSAxNy42ODk2IDE2Ljg0ODEgMTcuNjMxNiAxNi43NDQ5IDE3LjUyODVMMTMuNjA5OSAxNC4zOTM1QzEzLjUwNjggMTQuMjkwNCAxMy40NDg4IDE0LjE1MDUgMTMuNDQ4OCAxNC4wMDQ2VjguNzc5NjVDMTMuNDQ4OCA4LjYzMzc4IDEzLjUwNjcgOC40OTM4OCAxMy42MDk5IDguMzkwNzRDMTMuNzEzIDguMjg3NTkgMTMuODUyOSA4LjIyOTY1IDEzLjk5ODggOC4yMjk2NVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwiIzk5OTk5OVwiIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE1LjA2OCAyMi43MzkxVjE3LjY3MDhIMTguNDk2OEwxNC4yMTA4IDEyLjYwMjVMOS45MjQ4IDE3LjY3MDhIMTMuMzUzNlYyMi43MzkxSDkuMDY3NTlWMjIuNjk2OUM4LjkyMzU4IDIyLjcwNTMgOC43ODY0MyAyMi43MzkxIDguNjM4OTkgMjIuNzM5MUM2LjkzMzkxIDIyLjczOTEgNS4yOTg2NiAyMi4wNzE3IDQuMDkyOTggMjAuODgzNUMyLjg4NzMgMTkuNjk1NCAyLjIwOTk2IDE4LjA4NCAyLjIwOTk2IDE2LjQwMzdDMi4yMDk5NiAxMy4xNTMyIDQuNzA0NDMgMTAuNTA0MiA3LjkwNTIzIDEwLjE0MUM4LjE4NTg1IDguNjk1MyA4Ljk2ODkyIDcuMzkxMTggMTAuMTE5NyA2LjQ1MjkyQzExLjI3MDYgNS41MTQ2NSAxMi43MTcyIDUuMDAwODkgMTQuMjEwOCA1QzE1LjcwNDcgNS4wMDA4MiAxNy4xNTE1IDUuNTE0NTIgMTguMzAyNiA2LjQ1Mjc3QzE5LjQ1MzcgNy4zOTEwMSAyMC4yMzcxIDguNjk1MTYgMjAuNTE4MSAxMC4xNDFDMjMuNzE4OSAxMC41MDQyIDI2LjIxIDEzLjE1MzIgMjYuMjEgMTYuNDAzN0MyNi4yMSAxOC4wODQgMjUuNTMyNiAxOS42OTU0IDI0LjMyNjkgMjAuODgzNUMyMy4xMjEzIDIyLjA3MTcgMjEuNDg2IDIyLjczOTEgMTkuNzgwOSAyMi43MzkxQzE5LjYzNjkgMjIuNzM5MSAxOS40OTgxIDIyLjcwNTMgMTkuMzUyMyAyMi42OTY5VjIyLjczOTFIMTUuMDY4WlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dClcIiBjbGFzcz1cInRleHQtYmFzZSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ3VwbG9hZC10ZXh0JykgfX1cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgIDwvZGl2PlxyXG4gICAgPCEtLSA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIFttdWx0aXBsZV09XCJzZXR0aW5nKCdtdWx0aXBsZS11cGxvYWQnKVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIGhpZGRlbiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBmbGV4LXdyYXBcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGVkRmlsZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiIFxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlX2ljb24gY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNjgzN18yOTY4MylcIj5cclxuICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzY4MzdfMjk2ODNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICA8ZyBtYXNrPVwidXJsKCNtYXNrMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjA0NSA4Ljk5ODE1TDUuODE4MDIgNi42MTE2N0w2LjYxMzUxIDUuODE2MTdMOSA4LjIwMjY2TDExLjM4NjUgNS44MTYxN0wxMi4xODIgNi42MTE2N0w5Ljc5NTUgOC45OTgxNUwxMi4xODIgMTEuMzg0NkwxMS4zODY1IDEyLjE4MDFMOSA5Ljc5MzY1TDYuNjEzNTEgMTIuMTgwMUw1LjgxODAyIDExLjM4NDZMOC4yMDQ1IDguOTk4MTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82ODM3XzI5NjgzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmaWxlLXRodW1ibmFpbFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogNHB4XCIgW3NyY109XCJmaWxlPy5yZXN1bHRcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMVwiPlRpdGxlPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJmaWxlLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRpdGxle3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIC8+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVze3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiMlwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPHA+e3tmaWxlPy5uYW1lfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDxpbnB1dCAjZmlsZUlucHV0XHJcbiAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICBbbXVsdGlwbGVdPVwic2V0dGluZygnbXVsdGlwbGUtdXBsb2FkJylcIlxyXG4gICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICBhY2NlcHQ9XCIuY3N2LC5wZGYsLnhscywueGxzeCwuZG9jLC5kb2N4LC50eHQsaW1hZ2UvKlwiXHJcbiAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgLz5cclxuXHJcblxyXG5cclxuICAgICBcclxuICAgIDwhLS0gPHAtZmlsZVVwbG9hZCBtb2RlPVwiYmFzaWNcIiBuYW1lPVwiZGVtb1tdXCIgIGFjY2VwdD1cImltYWdlLypcIiBtYXhGaWxlU2l6ZT1cIjEwMDAwMDBcIiAob25VcGxvYWQpPVwib25CYXNpY1VwbG9hZEF1dG8oJGV2ZW50KVwiICBjaG9vc2VMYWJlbD1cIkJyb3dzZVwiIC8+IC0tPlxyXG5cclxuXHJcbjwhLS0gPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgZmxleC13cmFwXCIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgcC0zIGJvcmRlciByb3VuZGVkLWxnIHNoYWRvdy1zbSBiZy13aGl0ZSB3LTY0XCI+XHJcbiAgICAgICAgPCEtLSBDbG9zZSBpY29uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiOVwiIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjIgOWwtMi40LTIuNC44LS44TDkgOC4ybDIuNC0yLjQuOC44TDkuOCA5bDIuNCAyLjQtLjguOEw5IDkuOGwtMi40IDIuNC0uOC0uOEw4LjIgOXpcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBUaHVtYm5haWwgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUudHlwZSA9PT0gJ2ltYWdlJzsgZWxzZSBub25JbWFnZVRodW1iXCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwiZmlsZS10aHVtYm5haWwgdy1mdWxsIGgtMzIgb2JqZWN0LWNvdmVyIHJvdW5kZWQgbWItM1wiXHJcbiAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZT8ucmVzdWx0XCJcclxuICAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uSW1hZ2VUaHVtYj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXRodW1ibmFpbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXIgcm91bmRlZCBtYi0zIHctZnVsbCBoLTMyIGJnLWdyYXktNTBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS50eXBlXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSBDU1YgLS0+XHJcbiAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ2NzdidcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOFwiIHk9XCI2XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjM2XCIgcng9XCIzXCIgc3Ryb2tlPVwiIzIyYzU1ZVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI4IDZ2OGEyIDIgMCAwIDAgMiAyaDZcIiBzdHJva2U9XCIjMjJjNTVlXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDx0ZXh0IHg9XCIxNFwiIHk9XCIzNFwiIGZvbnQtc2l6ZT1cIjEwXCIgZm9udC1mYW1pbHk9XCJtb25vc3BhY2VcIiBmaWxsPVwiIzIyYzU1ZVwiPkNTVjwvdGV4dD5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBURVhUIC0tPlxyXG4gICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjZcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjNcIiBzdHJva2U9XCIjM2I4MmY2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjggNnY4YTIgMiAwIDAgMCAyIDJoNlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAyNGgyME0xNCAyOWgyME0xNCAzNGgxMlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBHZW5lcmljIC0tPlxyXG4gICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoRGVmYXVsdCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOFwiIHk9XCI2XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjM2XCIgcng9XCIzXCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI4IDZ2OGEyIDIgMCAwIDAgMiAyaDZcIiBzdHJva2U9XCIjOWNhM2FmXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMzBoMTZcIiBzdHJva2U9XCIjOWNhM2FmXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBNZXRhZGF0YSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LWZ1bGxcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG1iLTEgaW5wdXQtdGl0bGVcIj5UaXRsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImZpbGUudGl0bGVcIiBuYW1lPVwidGl0bGV7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciB0aXRsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgbWItMyB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMSBpbnB1dC10aXRsZVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwiZmlsZS5ub3Rlc1wiIG5hbWU9XCJub3Rlc3t7aX19XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIiBwbGFjZWhvbGRlcj1cIkVudGVyIG5vdGVzXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiB3LWZ1bGwgb3V0bGluZS1ub25lIGZvY3VzOnJpbmdcIlxyXG4gICAgICAgICAgICAgIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG10LTMgbWItMSBpbnB1dC10aXRsZVwiPkNhdGVnb3J5PC9sYWJlbD5cclxuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlcIiBuYW1lPVwiY2F0ZWdvcnl7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDYXRlZ29yeVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYyBvZiBjYXRlZ29yaWVzXCIgW25nVmFsdWVdPVwiY1wiPnt7IGMgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwXCI+e3sgZmlsZT8ubmFtZSB9fTwvcD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTE2IGZsZXgtd3JhcCB3LWZ1bGxcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkZWRGaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHVwbG9hZGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBwLTMgYm9yZGVyIHJvdW5kZWQtbGcgc2hhZG93LXNtIGJnLXdoaXRlIHctWzQ1MHB4XSBmbGV4IHVwbG9hZF9maWxlXCI+XHJcblxyXG4gICAgICA8IS0tIENsb3NlIGljb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZV9pY29uIGN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxyXG4gICAgICA8c3ZnIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjIgMjJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICA8cmVjdCB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjExXCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTcuMDg5MTEgMTUuODg4OUw2LjExMTMzIDE0LjkxMTFMMTAuMDIyNCAxMUw2LjExMTMzIDcuMDg4ODZMNy4wODkxMSA2LjExMTA4TDExLjAwMDIgMTAuMDIyMkwxNC45MTEzIDYuMTExMDhMMTUuODg5MSA3LjA4ODg2TDExLjk3OCAxMUwxNS44ODkxIDE0LjkxMTFMMTQuOTExMyAxNS44ODg5TDExLjAwMDIgMTEuOTc3OEw3LjA4OTExIDE1Ljg4ODlaXCJcclxuICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gVGh1bWJuYWlsIG9uIGxlZnQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTI4IGgtMjggZmxleC1zaHJpbmstMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlLnR5cGUgPT09ICdpbWFnZSc7IGVsc2Ugbm9uSW1hZ2VUaHVtYlwiPlxyXG4gICAgICAgICAgPGltZyBjbGFzcz1cImZpbGUtdGh1bWJuYWlsIHctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWRcIlxyXG4gICAgICAgICAgICAgICBbc3JjXT1cImZpbGU/LnJlc3VsdFwiXHJcbiAgICAgICAgICAgICAgIGFsdD1cInByZXZpZXdcIiAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vbkltYWdlVGh1bWI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS10aHVtYm5haWwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyIHJvdW5kZWQgdy1mdWxsIGgtZnVsbCBiZy1ncmF5LTUwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpbGUudHlwZVwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gQ1NWIC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHN2ZyAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiM1wiIHN0cm9rZT1cIiMyMmM1NWVcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOCA2djhhMiAyIDAgMCAwIDIgMmg2XCIgc3Ryb2tlPVwiIzIyYzU1ZVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8dGV4dCB4PVwiMTRcIiB5PVwiMzRcIiBmb250LXNpemU9XCIxMFwiIGZvbnQtZmFtaWx5PVwibW9ub3NwYWNlXCIgZmlsbD1cIiMyMmM1NWVcIj5DU1Y8L3RleHQ+XHJcbiAgICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInY3N2J1wiIHdpZHRoPVwiMTgwcHhcIiBoZWlnaHQ9XCIxODBweFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiMyM0E3NjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTYuOTQwNzYgMTAuMzQzM0M2Ljg1OTM5IDEwLjM0MzMgNi43ODcxNiAxMC4zNTg4IDYuNzI0MDggMTAuMzg5OUM2LjY2MTkxIDEwLjQyIDYuNjA5MzQgMTAuNDY0IDYuNTY2MzcgMTAuNTIxNkM2LjUyNDMyIDEwLjU3OTMgNi40OTIzMiAxMC42NDg5IDYuNDcwMzggMTAuNzMwNUM2LjQ0ODQ0IDEwLjgxMjIgNi40Mzc0NyAxMC45MDQgNi40Mzc0NyAxMS4wMDZDNi40Mzc0NyAxMS4xNDM1IDYuNDU0ODQgMTEuMjYxIDYuNDg5NTggMTEuMzU4NkM2LjUyNTIzIDExLjQ1NTMgNi41ODAwOSAxMS41Mjk0IDYuNjU0MTQgMTEuNTgwOEM2LjcyODIgMTEuNjMxNCA2LjgyMzczIDExLjY1NjcgNi45NDA3NiAxMS42NTY3QzcuMDIyMTIgMTEuNjU2NyA3LjEwMzQ5IDExLjY0NzggNy4xODQ4NiAxMS42MzAxQzcuMjY3MTQgMTEuNjEyMyA3LjM1NjI4IDExLjU4NyA3LjQ1MjI4IDExLjU1NDJWMTEuOTAwMkM3LjM2MzU5IDExLjkzNTcgNy4yNzYyOCAxMS45NjEgNy4xOTAzNSAxMS45NzZDNy4xMDQ0MSAxMS45OTIgNy4wMDc5NSAxMiA2LjkwMDk5IDEyQzYuNjk0MzcgMTIgNi41MjQzMiAxMS45NTg3IDYuMzkwODQgMTEuODc2MkM2LjI1ODI3IDExLjc5MjkgNi4xNTk5OSAxMS42NzY2IDYuMDk2IDExLjUyNzZDNi4wMzIgMTEuMzc3NyA2IDExLjIwMjkgNiAxMS4wMDMzQzYgMTAuODU2MSA2LjAyMDU3IDEwLjcyMTIgNi4wNjE3MSAxMC41OTg4QzYuMTAyODUgMTAuNDc2NCA2LjE2MzE5IDEwLjM3MDQgNi4yNDI3MyAxMC4yODA4QzYuMzIyMjcgMTAuMTkxMiA2LjQyMDU1IDEwLjEyMiA2LjUzNzU4IDEwLjA3MzJDNi42NTQ2IDEwLjAyNDQgNi43ODg5OSAxMCA2Ljk0MDc2IDEwQzcuMDQwNDEgMTAgNy4xNDAwNiAxMC4wMTI0IDcuMjM5NzEgMTAuMDM3M0M3LjM0MDI4IDEwLjA2MTIgNy40MzYyOCAxMC4wOTQ1IDcuNTI3NyAxMC4xMzcxTDcuMzkwNTcgMTAuNDcyNEM3LjMxNTYgMTAuNDM3OCA3LjI0MDE3IDEwLjQwNzYgNy4xNjQyOSAxMC4zODE5QzcuMDg4NDEgMTAuMzU2MiA3LjAxMzkgMTAuMzQzMyA2Ljk0MDc2IDEwLjM0MzNaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNOS4wNjM2MyAxMS40MzMxQzkuMDYzNjMgMTEuNTQ4NSA5LjAzNDgzIDExLjY0ODcgOC45NzcyNCAxMS43MzM5QzguOTE5NjQgMTEuODE5IDguODM1NTMgMTEuODg0NyA4LjcyNDkgMTEuOTMwOEM4LjYxNTE5IDExLjk3NjkgOC40ODE3MiAxMiA4LjMyNDQ3IDEyQzguMjU0OTggMTIgOC4xODY4NyAxMS45OTU2IDguMTIwMTMgMTEuOTg2N0M4LjA1NDMxIDExLjk3NzggNy45OTA3NyAxMS45NjUgNy45Mjk1MSAxMS45NDgxQzcuODY5MTcgMTEuOTMwNCA3LjgxMTU3IDExLjkwODYgNy43NTY3MiAxMS44ODI5VjExLjQ5OTdDNy44NTE4IDExLjU0MDUgNy45NTA1NCAxMS41NzczIDguMDUyOTMgMTEuNjEwMUM4LjE1NTMzIDExLjY0MjkgOC4yNTY4MSAxMS42NTkzIDguMzU3MzggMTEuNjU5M0M4LjQyNjg2IDExLjY1OTMgOC40ODI2MyAxMS42NTA1IDguNTI0NjggMTEuNjMyN0M4LjU2NzY1IDExLjYxNSA4LjU5ODc0IDExLjU5MDYgOC42MTc5NCAxMS41NTk1QzguNjM3MTQgMTEuNTI4NSA4LjY0Njc0IDExLjQ5MyA4LjY0Njc0IDExLjQ1MzFDOC42NDY3NCAxMS40MDQzIDguNjI5ODIgMTEuMzYyNiA4LjU5NiAxMS4zMjhDOC41NjIxNyAxMS4yOTM0IDguNTE1NTQgMTEuMjYxIDguNDU2MTIgMTEuMjMwOUM4LjM5NzYgMTEuMjAwNyA4LjMzMTMyIDExLjE2ODMgOC4yNTcyNyAxMS4xMzM3QzguMjEwNjQgMTEuMTEyNCA4LjE1OTkgMTEuMDg2NyA4LjEwNTA1IDExLjA1NjZDOC4wNTAxOSAxMS4wMjU1IDcuOTk4MDggMTAuOTg3OCA3Ljk0ODcxIDEwLjk0MzRDNy44OTkzNCAxMC44OTkxIDcuODU4NjYgMTAuODQ1NCA3LjgyNjY2IDEwLjc4MjRDNy43OTU1OCAxMC43MTg2IDcuNzgwMDMgMTAuNjQyMyA3Ljc4MDAzIDEwLjU1MzZDNy43ODAwMyAxMC40MzczIDcuODA3NDYgMTAuMzM4IDcuODYyMzEgMTAuMjU1NUM3LjkxNzE3IDEwLjE3MyA3Ljk5NTM0IDEwLjExIDguMDk2ODIgMTAuMDY2NUM4LjE5OTIxIDEwLjAyMjIgOC4zMTk4OSAxMCA4LjQ1ODg2IDEwQzguNTYzMDggMTAgOC42NjIyOCAxMC4wMTIgOC43NTY0NSAxMC4wMzU5QzguODUxNTMgMTAuMDU5IDguOTUwNzIgMTAuMDkyNyA5LjA1NDAzIDEwLjEzNzFMOC45MTY5IDEwLjQ1NzhDOC44MjQ1NiAxMC40MjE0IDguNzQxODIgMTAuMzkzNCA4LjY2ODY4IDEwLjM3MzlDOC41OTU1NCAxMC4zNTM1IDguNTIxMDMgMTAuMzQzMyA4LjQ0NTE1IDEwLjM0MzNDOC4zOTIxMiAxMC4zNDMzIDguMzQ2ODYgMTAuMzUxNyA4LjMwOTM4IDEwLjM2ODZDOC4yNzE5IDEwLjM4NDYgOC4yNDM1NSAxMC40MDc2IDguMjI0MzYgMTAuNDM3OEM4LjIwNTE2IDEwLjQ2NzEgOC4xOTU1NiAxMC41MDEyIDguMTk1NTYgMTAuNTQwM0M4LjE5NTU2IDEwLjU4NjQgOC4yMDkyNyAxMC42MjU0IDguMjM2NyAxMC42NTc0QzguMjY1MDQgMTAuNjg4NCA4LjMwNzA5IDEwLjcxODYgOC4zNjI4NiAxMC43NDc4QzguNDE5NTUgMTAuNzc3MSA4LjQ4OTk0IDEwLjgxMTMgOC41NzQwNSAxMC44NTAzQzguNjc2NDUgMTAuODk3MyA4Ljc2Mzc2IDEwLjk0NjYgOC44MzU5OCAxMC45OThDOC45MDkxMiAxMS4wNDg2IDguOTY1MzUgMTEuMTA4NCA5LjAwNDY2IDExLjE3NzZDOS4wNDM5OCAxMS4yNDYgOS4wNjM2MyAxMS4zMzExIDkuMDYzNjMgMTEuNDMzMVpcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxMC4wMjc5TDEwLjMxODQgMTEuOTczNEg5Ljg1NDkxTDkuMTc0NzEgMTAuMDI3OUg5LjYwMzk1TDkuOTgxMDggMTEuMTg1NkM5Ljk4NzQ4IDExLjIwNTEgOS45OTc5OSAxMS4yNDIgMTAuMDEyNiAxMS4yOTYxQzEwLjAyNzIgMTEuMzQ5MyAxMC4wNDE5IDExLjQwNjEgMTAuMDU2NSAxMS40NjY0QzEwLjA3MiAxMS41MjU4IDEwLjA4MjYgMTEuNTc1MSAxMC4wODggMTEuNjE0MUMxMC4wOTM1IDExLjU3NTEgMTAuMTAzMSAxMS41MjU4IDEwLjExNjggMTEuNDY2NEMxMC4xMzE1IDExLjQwNyAxMC4xNDU2IDExLjM1MDYgMTAuMTU5NCAxMS4yOTc0QzEwLjE3NCAxMS4yNDMzIDEwLjE4NDUgMTEuMjA2IDEwLjE5MDkgMTEuMTg1NkwxMC41NzA4IDEwLjAyNzlIMTFaXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI5XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gVEVYVCAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI4XCIgeT1cIjZcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjNcIiBzdHJva2U9XCIjM2I4MmY2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjggNnY4YTIgMiAwIDAgMCAyIDJoNlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAyNGgyME0xNCAyOWgyME0xNCAzNGgxMlwiIHN0cm9rZT1cIiMzYjgyZjZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3ZnICB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCIgZmlsbD1cIiNGNEY0RjRcIi8+XHJcbjxwYXRoIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCIgZmlsbD1cIiNERDIwMjVcIi8+XHJcbjxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XHJcbjxwYXRoIGQ9XCJNNi42MDg0IDkuOTYwMzhDNi44NzE2MSA5Ljk2MDM4IDcuMDYzNjYgMTAuMDE3MSA3LjE4NDU3IDEwLjEzMDZDNy4zMDU0OCAxMC4yNDMxIDcuMzY1OTMgMTAuMzk4NCA3LjM2NTkzIDEwLjU5NjVDNy4zNjU5MyAxMC42ODU4IDcuMzUyNDUgMTAuNzcxNCA3LjMyNTQ3IDEwLjg1MzJDNy4yOTg1IDEwLjkzNDIgNy4yNTQzMiAxMS4wMDYyIDcuMTkyOTQgMTEuMDY5NUM3LjEzMjQ5IDExLjEzMjcgNy4wNTE1NyAxMS4xODI5IDYuOTUwMiAxMS4yMjAxQzYuODQ4ODIgMTEuMjU2NCA2LjcyMzczIDExLjI3NDYgNi41NzQ5MiAxMS4yNzQ2SDYuMzg5MzdWMTJINS45NTY4OVY5Ljk2MDM4SDYuNjA4NFpNNi41ODYwOCAxMC4zMTQ3SDYuMzg5MzdWMTAuOTIwMkg2LjUzMTY3QzYuNjEyNTggMTAuOTIwMiA2LjY4MjggMTAuOTA5NSA2Ljc0MjMzIDEwLjg4ODFDNi44MDE4NSAxMC44NjY3IDYuODQ3ODkgMTAuODMzMiA2Ljg4MDQ0IDEwLjc4NzdDNi45MTI5OSAxMC43NDIxIDYuOTI5MjcgMTAuNjgzNSA2LjkyOTI3IDEwLjYxMTlDNi45MjkyNyAxMC41MTE0IDYuOTAxMzcgMTAuNDM3IDYuODQ1NTYgMTAuMzg4N0M2Ljc4OTc2IDEwLjMzOTQgNi43MDMyNiAxMC4zMTQ3IDYuNTg2MDggMTAuMzE0N1pNOS40NDMyMiAxMC45NjA3QzkuNDQzMjIgMTEuMTkwNCA5LjM5OTA0IDExLjM4MjQgOS4zMTA2OSAxMS41MzY4QzkuMjIzMjYgMTEuNjkwMyA5LjA5NjMxIDExLjgwNjEgOC45Mjk4MyAxMS44ODQyQzguNzYzMzUgMTEuOTYxNCA4LjU2MjkyIDEyIDguMzI4NTQgMTJINy43NTA5OFY5Ljk2MDM4SDguMzkxMzJDOC42MDUyNCA5Ljk2MDM4IDguNzkwNzggOS45OTg1MSA4Ljk0Nzk2IDEwLjA3NDhDOS4xMDUxNCAxMC4xNTAxIDkuMjI2OTggMTAuMjYyMiA5LjMxMzQ4IDEwLjQxMUM5LjM5OTk3IDEwLjU1ODkgOS40NDMyMiAxMC43NDIxIDkuNDQzMjIgMTAuOTYwN1pNOC45OTQgMTAuOTcxOEM4Ljk5NCAxMC44MjExIDguOTcxNjggMTAuNjk3NSA4LjkyNzA0IDEwLjYwMDdDOC44ODMzMiAxMC41MDMxIDguODE4MjIgMTAuNDMxIDguNzMxNzIgMTAuMzg0NUM4LjY0NjE2IDEwLjMzOCA4LjU0MDEzIDEwLjMxNDcgOC40MTM2NCAxMC4zMTQ3SDguMTgzNDVWMTEuNjQyOUg4LjM2OUM4LjU4MDEyIDExLjY0MjkgOC43MzY4NCAxMS41ODY2IDguODM5MTUgMTEuNDc0MUM4Ljk0MjM4IDExLjM2MTUgOC45OTQgMTEuMTk0MSA4Ljk5NCAxMC45NzE4Wk0xMC4yOTE0IDEySDkuODY1OTNWOS45NjAzOEgxMS4wMzVWMTAuMzE0N0gxMC4yOTE0VjEwLjg0MDdIMTAuOTgzNFYxMS4xOTM2SDEwLjI5MTRWMTJaXCIgZmlsbD1cIndoaXRlXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48L3N2Zz4gLS0+XHJcblxyXG48c3ZnICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCIgZmlsbD1cIiNGNEY0RjRcIi8+XHJcbjxwYXRoIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCIgZmlsbD1cIiMxRjVFQkJcIi8+XHJcbjxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XHJcbjxwYXRoIGQ9XCJNNy4wNDM1MyAxMkg2LjYxMTA1VjEwLjMyMDNINi4wNTcyVjkuOTYwMzhINy41OTczOFYxMC4zMjAzSDcuMDQzNTNWMTJaTTkuNTYwMjcgMTJIOS4wNjY0MUw4LjU5MjA4IDExLjIyODVMOC4xMTc3NSAxMkg3LjY1NDU4TDguMzMxMTkgMTAuOTQ4MUw3LjY5NzgyIDkuOTYwMzhIOC4xNzQ5NEw4LjYxNDQgMTAuNjk0Mkw5LjA0NTQ4IDkuOTYwMzhIOS41MTE0NEw4Ljg3MTA5IDEwLjk3MThMOS41NjAyNyAxMlpNMTAuNjAzOCAxMkgxMC4xNzEzVjEwLjMyMDNIOS42MTc0N1Y5Ljk2MDM4SDExLjE1NzZWMTAuMzIwM0gxMC42MDM4VjEyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPC9zdmc+XHJcblxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEdlbmVyaWMgLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3ZnICpuZ1N3aXRjaERlZmF1bHQgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiM1wiIHN0cm9rZT1cIiM5Y2EzYWZcIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOCA2djhhMiAyIDAgMCAwIDIgMmg2XCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDMwaDE2XCIgc3Ryb2tlPVwiIzljYTNhZlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgICpuZ1N3aXRjaERlZmF1bHQgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG48cGF0aCBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiIGZpbGw9XCIjRjRGNEY0XCIvPlxyXG48cGF0aCBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiIGZpbGw9XCIjREQyMDI1XCIvPlxyXG48cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxyXG48cGF0aCBkPVwiTTYuNjA4NCA5Ljk2MDM4QzYuODcxNjEgOS45NjAzOCA3LjA2MzY2IDEwLjAxNzEgNy4xODQ1NyAxMC4xMzA2QzcuMzA1NDggMTAuMjQzMSA3LjM2NTkzIDEwLjM5ODQgNy4zNjU5MyAxMC41OTY1QzcuMzY1OTMgMTAuNjg1OCA3LjM1MjQ1IDEwLjc3MTQgNy4zMjU0NyAxMC44NTMyQzcuMjk4NSAxMC45MzQyIDcuMjU0MzIgMTEuMDA2MiA3LjE5Mjk0IDExLjA2OTVDNy4xMzI0OSAxMS4xMzI3IDcuMDUxNTcgMTEuMTgyOSA2Ljk1MDIgMTEuMjIwMUM2Ljg0ODgyIDExLjI1NjQgNi43MjM3MyAxMS4yNzQ2IDYuNTc0OTIgMTEuMjc0Nkg2LjM4OTM3VjEySDUuOTU2ODlWOS45NjAzOEg2LjYwODRaTTYuNTg2MDggMTAuMzE0N0g2LjM4OTM3VjEwLjkyMDJINi41MzE2N0M2LjYxMjU4IDEwLjkyMDIgNi42ODI4IDEwLjkwOTUgNi43NDIzMyAxMC44ODgxQzYuODAxODUgMTAuODY2NyA2Ljg0Nzg5IDEwLjgzMzIgNi44ODA0NCAxMC43ODc3QzYuOTEyOTkgMTAuNzQyMSA2LjkyOTI3IDEwLjY4MzUgNi45MjkyNyAxMC42MTE5QzYuOTI5MjcgMTAuNTExNCA2LjkwMTM3IDEwLjQzNyA2Ljg0NTU2IDEwLjM4ODdDNi43ODk3NiAxMC4zMzk0IDYuNzAzMjYgMTAuMzE0NyA2LjU4NjA4IDEwLjMxNDdaTTkuNDQzMjIgMTAuOTYwN0M5LjQ0MzIyIDExLjE5MDQgOS4zOTkwNCAxMS4zODI0IDkuMzEwNjkgMTEuNTM2OEM5LjIyMzI2IDExLjY5MDMgOS4wOTYzMSAxMS44MDYxIDguOTI5ODMgMTEuODg0MkM4Ljc2MzM1IDExLjk2MTQgOC41NjI5MiAxMiA4LjMyODU0IDEySDcuNzUwOThWOS45NjAzOEg4LjM5MTMyQzguNjA1MjQgOS45NjAzOCA4Ljc5MDc4IDkuOTk4NTEgOC45NDc5NiAxMC4wNzQ4QzkuMTA1MTQgMTAuMTUwMSA5LjIyNjk4IDEwLjI2MjIgOS4zMTM0OCAxMC40MTFDOS4zOTk5NyAxMC41NTg5IDkuNDQzMjIgMTAuNzQyMSA5LjQ0MzIyIDEwLjk2MDdaTTguOTk0IDEwLjk3MThDOC45OTQgMTAuODIxMSA4Ljk3MTY4IDEwLjY5NzUgOC45MjcwNCAxMC42MDA3QzguODgzMzIgMTAuNTAzMSA4LjgxODIyIDEwLjQzMSA4LjczMTcyIDEwLjM4NDVDOC42NDYxNiAxMC4zMzggOC41NDAxMyAxMC4zMTQ3IDguNDEzNjQgMTAuMzE0N0g4LjE4MzQ1VjExLjY0MjlIOC4zNjlDOC41ODAxMiAxMS42NDI5IDguNzM2ODQgMTEuNTg2NiA4LjgzOTE1IDExLjQ3NDFDOC45NDIzOCAxMS4zNjE1IDguOTk0IDExLjE5NDEgOC45OTQgMTAuOTcxOFpNMTAuMjkxNCAxMkg5Ljg2NTkzVjkuOTYwMzhIMTEuMDM1VjEwLjMxNDdIMTAuMjkxNFYxMC44NDA3SDEwLjk4MzRWMTEuMTkzNkgxMC4yOTE0VjEyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIvPlxyXG48cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIi8+XHJcbjxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE1ldGFkYXRhIG9uIHJpZ2h0IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LTEgbWwtNFwiPlxyXG4gICAgICAgIDwhLS0gVGl0bGUgLS0+XHJcbiAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBtYi0xIGlucHV0LXRpdGxlXCI+VGl0bGU8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImZpbGUudGl0bGVcIlxyXG4gICAgICAgICAgICAgICBuYW1lPVwidGl0bGV7e2l9fVwiXHJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0aXRsZVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIG1iLTMgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCIgLz5cclxuXHJcbiAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIE5vdGVzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbWItMSBpbnB1dC10aXRsZVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJmaWxlLm5vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVze3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgbm90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCI+PC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBDYXRlZ29yeSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG1iLTEgaW5wdXQtdGl0bGVcIj5DYXRlZ29yeTwvbGFiZWw+XHJcbiAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlJZCBcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImNhdGVnb3J5e3tpfX1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIgcm91bmRlZCBweC0zIHB5LTIgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENhdGVnb3J5PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNhdGVnb3JpZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlXCI+e3sgYy5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuICA8L2Rpdj5cclxuPC9meC1jb21wb25lbnQ+Il19
@@ -8,6 +8,7 @@ import { UploaderComponent } from './components/uploader/uploader.component';
8
8
  import { ToggleComponent } from './components/toggle/toggle.component';
9
9
  import { UploaderCheckboxComponent } from './components/uploader-checkbox/uploader-checkbox.component';
10
10
  import { DatePickerComponent } from './components/date-picker/date-picker.component';
11
+ import { DropdownWithOtherComponent } from './components/dropdown-with-other/dropdown-with-other.component';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "./fx-builder-wrapper.service";
13
14
  export class FxBuilderWrapperComponent {
@@ -47,6 +48,9 @@ export class FxBuilderWrapperComponent {
47
48
  if (!Boolean(this.fxWrapperService.getComponent('lib-date-picker'))) {
48
49
  this.fxWrapperService.registerCustomComponent('Date Picker', 'lib-date-picker', DatePickerComponent);
49
50
  }
51
+ if (!Boolean(this.fxWrapperService.getComponent('dropdown-with-other'))) {
52
+ this.fxWrapperService.registerCustomComponent('Smartlist with Other', 'dropdown-with-other', DropdownWithOtherComponent);
53
+ }
50
54
  }
51
55
  ;
52
56
  getParsedForm() {
@@ -84,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
84
88
  type: Input,
85
89
  args: [{ alias: 'fx-form', required: true }]
86
90
  }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtYnVpbGRlci13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z4LWJ1aWxkZXItd3JhcHBlci9zcmMvbGliL2Z4LWJ1aWxkZXItd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUEwQixrQkFBa0IsRUFBVSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBaUJyRixNQUFNLE9BQU8seUJBQXlCO0lBYWhCO0lBWlcsZ0JBQWdCLENBQXNCO0lBQ3hCLE1BQU0sR0FBVyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDL0UsTUFBTSxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDN0IsZUFBZSxHQUEyQjtRQUMvQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxJQUFJO1FBQ1osY0FBYyxFQUFFLElBQUk7S0FDckIsQ0FBQTtJQUVr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dWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlckNvbmZpZ3VyYXRpb24sIEZ4Q29tcG9uZW50QnVpbGRlciwgRnhGb3JtLCBGeE1vZGUsIEZ4U2NvcGUsIEZ4VXRpbHMgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgRGlzcGF0Y2hUb0NsaW5pY0NvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLWNvbnRyb2xzL2Rpc3BhdGNoLXRvLWNsaW5pYy9kaXNwYXRjaC10by1jbGluaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9nZ2xlLWJ1dHRvbi90b2dnbGUtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b2dnbGUvdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXBsb2FkZXItY2hlY2tib3gvdXBsb2FkZXItY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1idWlsZGVyLXdyYXBwZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRnhDb21wb25lbnRCdWlsZGVyXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGZ4LWNvbXBvbmVudC1idWlsZGVyIFxyXG4gICAgICAgICNjb21wb25lbnRCdWlsZGVyIFxyXG4gICAgICAgIFtmeC1mb3JtXT1cImZ4Rm9ybVwiIFxyXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cImZ4Q29uZmlndXJhdGlvblwiIFxyXG4gICAgICAgIFtzY29wZV09XCJGeFNjb3BlLkJVSUxERVJcIlxyXG4gICAgICAgID5cclxuICAgIDwvZngtY29tcG9uZW50LWJ1aWxkZXI+XHJcbiAgYCxcclxuICBzdHlsZVVybDogJy4vZm9ybS1idWlsZGVyLmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEJ1aWxkZXJXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdjb21wb25lbnRCdWlsZGVyJykgY29tcG9uZW50QnVpbGRlciE6IEZ4Q29tcG9uZW50QnVpbGRlcjtcclxuICBASW5wdXQoeyBhbGlhczogJ2Z4LWZvcm0nLCByZXF1aXJlZDogdHJ1ZSB9KSBmeEZvcm06IEZ4Rm9ybSA9IEZ4VXRpbHMuY3JlYXRlTmV3Rm9ybSgpO1xyXG4gIHB1YmxpYyBmeE1vZGU6IEZ4TW9kZSA9IEZ4TW9kZS5FRElUO1xyXG4gIHB1YmxpYyBmeENvbmZpZ3VyYXRpb246IEZ4QnVpbGRlckNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBzZXR0aW5nczogdHJ1ZSxcclxuICAgIGxvZ2ljczogdHJ1ZSxcclxuICAgIGN1c3RvbUNvbnRyb2xzOiB0cnVlLFxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZ4U2NvcGUgPSBGeFNjb3BlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBGeE1vZGUgPSBGeE1vZGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgnZGlzcGF0Y2gtdG8tY2xpbmljJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRGlzcGF0Y2ggVG8gQ2xpbmljJywgJ2Rpc3BhdGNoLXRvLWNsaW5pYycsIERpc3BhdGNoVG9DbGluaWNDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2R5bmFtaWMtdGFibGUnKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdEeW5hbWljIFRhYmxlJywgJ2R5bmFtaWMtdGFibGUnLCBEeW5hbWljVGFibGVDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3RvZ2dsZS1idXR0b24nKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdUb2dnbGUgQnV0dG9uJywgJ3RvZ2dsZS1idXR0b24nLCBUb2dnbGVCdXR0b25Db21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3VwbG9hZGVyJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVXBsb2FkZXInLCAndXBsb2FkZXInLCBVcGxvYWRlckNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndXBsb2FkZXItY2hlY2tib3gnKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdVcGxvYWRlciB3aXRoIENoZWNrYm94JywgJ3VwbG9hZGVyLWNoZWNrYm94JywgVXBsb2FkZXJDaGVja2JveENvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndG9nZ2xlJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVG9nZ2xlJywgJ3RvZ2dsZScsIFRvZ2dsZUNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgnbGliLWRhdGUtcGlja2VyJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRGF0ZSBQaWNrZXInLCAnbGliLWRhdGUtcGlja2VyJywgRGF0ZVBpY2tlckNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGdldFBhcnNlZEZvcm0oKTogRnhGb3JtIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEJ1aWxkZXIuZ2V0UGFyc2VkRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEluaXRpYWxpemVkRnhGb3JtKCk6IEZ4Rm9ybSB7XHJcbiAgICByZXR1cm4gRnhVdGlscy5jcmVhdGVOZXdGb3JtKCk7IFxyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtYnVpbGRlci13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z4LWJ1aWxkZXItd3JhcHBlci9zcmMvbGliL2Z4LWJ1aWxkZXItd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUEwQixrQkFBa0IsRUFBVSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7O0FBaUI1RyxNQUFNLE9BQU8seUJBQXlCO0lBYWhCO0lBWlcsZ0JBQWdCLENBQXNCO0lBQ3hCLE1BQU0sR0FBVyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDL0UsTUFBTSxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDN0IsZUFBZSxHQUEyQjtRQUMvQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0s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LG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsWUFDakM7Ozs7Ozs7O0dBUVQ7NEZBSThCLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ2dCLE1BQU07c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRnhCdWlsZGVyQ29uZmlndXJhdGlvbiwgRnhDb21wb25lbnRCdWlsZGVyLCBGeEZvcm0sIEZ4TW9kZSwgRnhTY29wZSwgRnhVdGlscyB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tY29udHJvbHMvZGlzcGF0Y2gtdG8tY2xpbmljL2Rpc3BhdGNoLXRvLWNsaW5pYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXBsb2FkZXIvdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91cGxvYWRlci1jaGVja2JveC91cGxvYWRlci1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duV2l0aE90aGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1idWlsZGVyLXdyYXBwZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRnhDb21wb25lbnRCdWlsZGVyXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGZ4LWNvbXBvbmVudC1idWlsZGVyIFxyXG4gICAgICAgICNjb21wb25lbnRCdWlsZGVyIFxyXG4gICAgICAgIFtmeC1mb3JtXT1cImZ4Rm9ybVwiIFxyXG4gICAgICAgIFtjb25maWd1cmF0aW9uXT1cImZ4Q29uZmlndXJhdGlvblwiIFxyXG4gICAgICAgIFtzY29wZV09XCJGeFNjb3BlLkJVSUxERVJcIlxyXG4gICAgICAgID5cclxuICAgIDwvZngtY29tcG9uZW50LWJ1aWxkZXI+XHJcbiAgYCxcclxuICBzdHlsZVVybDogJy4vZm9ybS1idWlsZGVyLmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEJ1aWxkZXJXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdjb21wb25lbnRCdWlsZGVyJykgY29tcG9uZW50QnVpbGRlciE6IEZ4Q29tcG9uZW50QnVpbGRlcjtcclxuICBASW5wdXQoeyBhbGlhczogJ2Z4LWZvcm0nLCByZXF1aXJlZDogdHJ1ZSB9KSBmeEZvcm06IEZ4Rm9ybSA9IEZ4VXRpbHMuY3JlYXRlTmV3Rm9ybSgpO1xyXG4gIHB1YmxpYyBmeE1vZGU6IEZ4TW9kZSA9IEZ4TW9kZS5FRElUO1xyXG4gIHB1YmxpYyBmeENvbmZpZ3VyYXRpb246IEZ4QnVpbGRlckNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBzZXR0aW5nczogdHJ1ZSxcclxuICAgIGxvZ2ljczogdHJ1ZSxcclxuICAgIGN1c3RvbUNvbnRyb2xzOiB0cnVlLFxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEZ4U2NvcGUgPSBGeFNjb3BlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBGeE1vZGUgPSBGeE1vZGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgnZGlzcGF0Y2gtdG8tY2xpbmljJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRGlzcGF0Y2ggVG8gQ2xpbmljJywgJ2Rpc3BhdGNoLXRvLWNsaW5pYycsIERpc3BhdGNoVG9DbGluaWNDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2R5bmFtaWMtdGFibGUnKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdEeW5hbWljIFRhYmxlJywgJ2R5bmFtaWMtdGFibGUnLCBEeW5hbWljVGFibGVDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3RvZ2dsZS1idXR0b24nKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdUb2dnbGUgQnV0dG9uJywgJ3RvZ2dsZS1idXR0b24nLCBUb2dnbGVCdXR0b25Db21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3VwbG9hZGVyJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVXBsb2FkZXInLCAndXBsb2FkZXInLCBVcGxvYWRlckNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndXBsb2FkZXItY2hlY2tib3gnKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdVcGxvYWRlciB3aXRoIENoZWNrYm94JywgJ3VwbG9hZGVyLWNoZWNrYm94JywgVXBsb2FkZXJDaGVja2JveENvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndG9nZ2xlJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVG9nZ2xlJywgJ3RvZ2dsZScsIFRvZ2dsZUNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgnbGliLWRhdGUtcGlja2VyJykpKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRGF0ZSBQaWNrZXInLCAnbGliLWRhdGUtcGlja2VyJywgRGF0ZVBpY2tlckNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgICAgICAgaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2Ryb3Bkb3duLXdpdGgtb3RoZXInKSkpIHtcclxuICAgICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdTbWFydGxpc3Qgd2l0aCBPdGhlcicsICdkcm9wZG93bi13aXRoLW90aGVyJywgRHJvcGRvd25XaXRoT3RoZXJDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJzZWRGb3JtKCk6IEZ4Rm9ybSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRCdWlsZGVyLmdldFBhcnNlZEZvcm0oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJbml0aWFsaXplZEZ4Rm9ybSgpOiBGeEZvcm0ge1xyXG4gICAgcmV0dXJuIEZ4VXRpbHMuY3JlYXRlTmV3Rm9ybSgpOyBcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=