@datarailsshared/datarailsshared 1.6.208 → 1.6.210

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.
@@ -9,42 +9,55 @@ import * as i3 from "@angular/forms";
9
9
  import * as i4 from "@angular/common";
10
10
  import * as i5 from "../dr-input/dr-input.component";
11
11
  const _c0 = ["dynamicInputRef"];
12
- function DrSelectAddItemComponent_div_5_p_1_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "p", 12);
12
+ function DrSelectAddItemComponent_div_1_Template(rf, ctx) { if (rf & 1) {
13
+ const _r3 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵelementStart(0, "div", 3);
15
+ i0.ɵɵlistener("click", function DrSelectAddItemComponent_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onDynamicAdding()); });
16
+ i0.ɵɵelement(1, "i", 4);
17
+ i0.ɵɵelementStart(2, "p", 5);
18
+ i0.ɵɵtext(3);
19
+ i0.ɵɵelementEnd()();
20
+ } if (rf & 2) {
21
+ const ctx_r0 = i0.ɵɵnextContext();
22
+ i0.ɵɵadvance(3);
23
+ i0.ɵɵtextInterpolate(ctx_r0.dynamicAddLabel);
24
+ } }
25
+ function DrSelectAddItemComponent_div_2_p_1_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "p", 13);
14
27
  i0.ɵɵtext(1);
15
28
  i0.ɵɵelementEnd();
16
29
  } if (rf & 2) {
17
- const ctx_r1 = i0.ɵɵnextContext(2);
30
+ const ctx_r4 = i0.ɵɵnextContext(2);
18
31
  i0.ɵɵadvance(1);
19
- i0.ɵɵtextInterpolate(ctx_r1.alertMsg);
32
+ i0.ɵɵtextInterpolate(ctx_r4.alertMsg);
20
33
  } }
21
- function DrSelectAddItemComponent_div_5_dr_button_5_Template(rf, ctx) { if (rf & 1) {
22
- const _r5 = i0.ɵɵgetCurrentView();
23
- i0.ɵɵelementStart(0, "dr-button", 13);
24
- i0.ɵɵlistener("click", function DrSelectAddItemComponent_div_5_dr_button_5_Template_dr_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onDynamicAdd(ctx_r4.dynamicValue)); });
34
+ function DrSelectAddItemComponent_div_2_dr_button_5_Template(rf, ctx) { if (rf & 1) {
35
+ const _r8 = i0.ɵɵgetCurrentView();
36
+ i0.ɵɵelementStart(0, "dr-button", 14);
37
+ i0.ɵɵlistener("click", function DrSelectAddItemComponent_div_2_dr_button_5_Template_dr_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.onDynamicAdd(ctx_r7.dynamicValue)); });
25
38
  i0.ɵɵelementEnd();
26
39
  } }
27
- function DrSelectAddItemComponent_div_5_Template(rf, ctx) { if (rf & 1) {
28
- const _r7 = i0.ɵɵgetCurrentView();
29
- i0.ɵɵelementStart(0, "div", 5);
30
- i0.ɵɵtemplate(1, DrSelectAddItemComponent_div_5_p_1_Template, 2, 1, "p", 6);
31
- i0.ɵɵelementStart(2, "dr-input", 7, 8);
32
- i0.ɵɵlistener("ngModelChange", function DrSelectAddItemComponent_div_5_Template_dr_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.dynamicValue = $event); })("keydown", function DrSelectAddItemComponent_div_5_Template_dr_input_keydown_2_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.onDynamicAdd(ctx_r8.dynamicValue, $event)); });
40
+ function DrSelectAddItemComponent_div_2_Template(rf, ctx) { if (rf & 1) {
41
+ const _r10 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "div", 6);
43
+ i0.ɵɵtemplate(1, DrSelectAddItemComponent_div_2_p_1_Template, 2, 1, "p", 7);
44
+ i0.ɵɵelementStart(2, "dr-input", 8, 9);
45
+ i0.ɵɵlistener("ngModelChange", function DrSelectAddItemComponent_div_2_Template_dr_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.dynamicValue = $event); })("keydown", function DrSelectAddItemComponent_div_2_Template_dr_input_keydown_2_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.onDynamicAdd(ctx_r11.dynamicValue, $event)); });
33
46
  i0.ɵɵelementEnd();
34
- i0.ɵɵelementStart(4, "div", 9);
35
- i0.ɵɵtemplate(5, DrSelectAddItemComponent_div_5_dr_button_5_Template, 1, 0, "dr-button", 10);
36
- i0.ɵɵelementStart(6, "dr-button", 11);
37
- i0.ɵɵlistener("click", function DrSelectAddItemComponent_div_5_Template_dr_button_click_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onDynamicAddingClose()); });
47
+ i0.ɵɵelementStart(4, "div", 10);
48
+ i0.ɵɵtemplate(5, DrSelectAddItemComponent_div_2_dr_button_5_Template, 1, 0, "dr-button", 11);
49
+ i0.ɵɵelementStart(6, "dr-button", 12);
50
+ i0.ɵɵlistener("click", function DrSelectAddItemComponent_div_2_Template_dr_button_click_6_listener() { i0.ɵɵrestoreView(_r10); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onDynamicAddingClose()); });
38
51
  i0.ɵɵelementEnd()()();
39
52
  } if (rf & 2) {
40
- const ctx_r0 = i0.ɵɵnextContext();
53
+ const ctx_r1 = i0.ɵɵnextContext();
41
54
  i0.ɵɵadvance(1);
42
- i0.ɵɵproperty("ngIf", ctx_r0.alertMsg && !ctx_r0.isDynamicValueValid() && ctx_r0.isDirty);
55
+ i0.ɵɵproperty("ngIf", ctx_r1.alertMsg && !ctx_r1.isDynamicValueValid() && ctx_r1.isDirty);
43
56
  i0.ɵɵadvance(1);
44
- i0.ɵɵclassProp("dynamic-add__field__input--error", !ctx_r0.isDynamicValueValid() && ctx_r0.isDirty);
45
- i0.ɵɵproperty("ngModel", ctx_r0.dynamicValue);
57
+ i0.ɵɵclassProp("dynamic-add__field__input--error", !ctx_r1.isDynamicValueValid() && ctx_r1.isDirty);
58
+ i0.ɵɵproperty("ngModel", ctx_r1.dynamicValue);
46
59
  i0.ɵɵadvance(3);
47
- i0.ɵɵproperty("ngIf", ctx_r0.dynamicValue && ctx_r0.isDynamicValueValid());
60
+ i0.ɵɵproperty("ngIf", ctx_r1.dynamicValue && ctx_r1.isDynamicValueValid());
48
61
  } }
49
62
  export class DrSelectAddItemComponent {
50
63
  set inputRef(input) {
@@ -57,6 +70,7 @@ export class DrSelectAddItemComponent {
57
70
  this.currentValues = [];
58
71
  this.dynamicAddLabel = 'Add new';
59
72
  this.values = [];
73
+ this.showOnlyInput = false;
60
74
  this.dynamicValueAdded = new EventEmitter();
61
75
  }
62
76
  ngOnChanges(changes) {
@@ -102,25 +116,21 @@ export class DrSelectAddItemComponent {
102
116
  } if (rf & 2) {
103
117
  let _t;
104
118
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputRef = _t.first);
105
- } }, inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values", alertMsg: "alertMsg" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 6, vars: 2, consts: [[1, "dr-select__dynamic-add", "dynamic-add"], [1, "dynamic-add__add-item", 3, "click"], [1, "dr-icon-add"], [1, "dynamic-add__add-item__text"], ["class", "dynamic-add__field", 4, "ngIf"], [1, "dynamic-add__field"], ["class", "dynamic-add__field__alert", 4, "ngIf"], ["placeholder", "Type...", 1, "dynamic-add__field__input", 3, "ngModel", "ngModelChange", "keydown"], ["dynamicInputRef", ""], [1, "dynamic-add__field__buttons"], ["theme", "icon", "icon", "dr-icon-approve", "iconSize", "18px", 3, "click", 4, "ngIf"], ["theme", "icon", "icon", "dr-icon-exit", "iconSize", "18px", 3, "click"], [1, "dynamic-add__field__alert"], ["theme", "icon", "icon", "dr-icon-approve", "iconSize", "18px", 3, "click"]], template: function DrSelectAddItemComponent_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
107
- i0.ɵɵlistener("click", function DrSelectAddItemComponent_Template_div_click_1_listener() { return ctx.onDynamicAdding(); });
108
- i0.ɵɵelement(2, "i", 2);
109
- i0.ɵɵelementStart(3, "p", 3);
110
- i0.ɵɵtext(4);
111
- i0.ɵɵelementEnd()();
112
- i0.ɵɵtemplate(5, DrSelectAddItemComponent_div_5_Template, 7, 5, "div", 4);
119
+ } }, inputs: { dynamicAddLabel: "dynamicAddLabel", bindValue: "bindValue", values: "values", alertMsg: "alertMsg", showOnlyInput: "showOnlyInput" }, outputs: { dynamicValueAdded: "dynamicValueAdded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[1, "dr-select__dynamic-add", "dynamic-add"], ["class", "dynamic-add__add-item", 3, "click", 4, "ngIf"], ["class", "dynamic-add__field", 4, "ngIf"], [1, "dynamic-add__add-item", 3, "click"], [1, "dr-icon-add"], [1, "dynamic-add__add-item__text"], [1, "dynamic-add__field"], ["class", "dynamic-add__field__alert", 4, "ngIf"], ["placeholder", "Type...", 1, "dynamic-add__field__input", 3, "ngModel", "ngModelChange", "keydown"], ["dynamicInputRef", ""], [1, "dynamic-add__field__buttons"], ["theme", "icon", "icon", "dr-icon-approve", "iconSize", "18px", 3, "click", 4, "ngIf"], ["theme", "icon", "icon", "dr-icon-exit", "iconSize", "18px", 3, "click"], [1, "dynamic-add__field__alert"], ["theme", "icon", "icon", "dr-icon-approve", "iconSize", "18px", 3, "click"]], template: function DrSelectAddItemComponent_Template(rf, ctx) { if (rf & 1) {
120
+ i0.ɵɵelementStart(0, "div", 0);
121
+ i0.ɵɵtemplate(1, DrSelectAddItemComponent_div_1_Template, 4, 1, "div", 1);
122
+ i0.ɵɵtemplate(2, DrSelectAddItemComponent_div_2_Template, 7, 5, "div", 2);
113
123
  i0.ɵɵelementEnd();
114
124
  } if (rf & 2) {
115
- i0.ɵɵadvance(4);
116
- i0.ɵɵtextInterpolate(ctx.dynamicAddLabel);
125
+ i0.ɵɵadvance(1);
126
+ i0.ɵɵproperty("ngIf", !(ctx.showOnlyInput && ctx.isDynamicAdding));
117
127
  i0.ɵɵadvance(1);
118
128
  i0.ɵɵproperty("ngIf", ctx.isDynamicAdding);
119
129
  } }, dependencies: [i2.DrButtonComponent, i3.NgControlStatus, i3.NgModel, i4.NgIf, i5.DrInputComponent], styles: [".dynamic-add__add-item[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #dfe0e3;padding:6px}.dynamic-add__add-item[_ngcontent-%COMP%]:hover{background:#f9f7ff}.dynamic-add__add-item__text[_ngcontent-%COMP%]{font-size:14px;line-height:22px;margin:0;color:#6d6e6f}.dynamic-add__add-item[_ngcontent-%COMP%] .dr-icon-add[_ngcontent-%COMP%]{color:#6d6e6f}.dynamic-add__field[_ngcontent-%COMP%]{position:relative}.dynamic-add__field__buttons[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center}.dynamic-add__field__alert[_ngcontent-%COMP%]{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px} .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add), .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none} .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom:none} .dynamic-add__field__input{padding-left:12px!important;height:36px!important;border:none!important;background:#f9f7ff!important;border-radius:0!important} .dynamic-add__field__input>input{background:#f9f7ff} .dynamic-add__field__input>input::placeholder{line-height:22px;font-size:14px;font-weight:400;color:#9ea1aa} .dynamic-add__field__input--error{background:#ffdfe4!important} .dynamic-add__field__input--error>input{background:#ffdfe4}"], changeDetection: 0 }); }
120
130
  }
121
131
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrSelectAddItemComponent, [{
122
132
  type: Component,
123
- args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\"\n class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"!isDynamicValueValid() && isDirty\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button\n *ngIf=\"dynamicValue && isDynamicValueValid()\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", styles: [".dynamic-add__add-item{cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #dfe0e3;padding:6px}.dynamic-add__add-item:hover{background:#f9f7ff}.dynamic-add__add-item__text{font-size:14px;line-height:22px;margin:0;color:#6d6e6f}.dynamic-add__add-item .dr-icon-add{color:#6d6e6f}.dynamic-add__field{position:relative}.dynamic-add__field__buttons{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom:none}::ng-deep .dynamic-add__field__input{padding-left:12px!important;height:36px!important;border:none!important;background:#f9f7ff!important;border-radius:0!important}::ng-deep .dynamic-add__field__input>input{background:#f9f7ff}::ng-deep .dynamic-add__field__input>input::placeholder{line-height:22px;font-size:14px;font-weight:400;color:#9ea1aa}::ng-deep .dynamic-add__field__input--error{background:#ffdfe4!important}::ng-deep .dynamic-add__field__input--error>input{background:#ffdfe4}\n"] }]
133
+ args: [{ selector: 'dr-select-add-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dr-select__dynamic-add dynamic-add\">\n <div *ngIf=\"!(showOnlyInput && isDynamicAdding)\" class=\"dynamic-add__add-item\" (click)=\"onDynamicAdding()\">\n <i class=\"dr-icon-add\"></i>\n <p class=\"dynamic-add__add-item__text\">{{ dynamicAddLabel }}</p>\n </div>\n <div *ngIf=\"isDynamicAdding\" class=\"dynamic-add__field\">\n <p *ngIf=\"alertMsg && !isDynamicValueValid() && isDirty\" class=\"dynamic-add__field__alert\">{{ alertMsg }}</p>\n <dr-input\n #dynamicInputRef\n class=\"dynamic-add__field__input\"\n [class.dynamic-add__field__input--error]=\"!isDynamicValueValid() && isDirty\"\n [(ngModel)]=\"dynamicValue\"\n (keydown)=\"onDynamicAdd(dynamicValue, $event)\"\n placeholder=\"Type...\"></dr-input>\n <div class=\"dynamic-add__field__buttons\">\n <dr-button\n *ngIf=\"dynamicValue && isDynamicValueValid()\"\n theme=\"icon\"\n icon=\"dr-icon-approve\"\n iconSize=\"18px\"\n (click)=\"onDynamicAdd(dynamicValue)\"></dr-button>\n <dr-button theme=\"icon\" icon=\"dr-icon-exit\" iconSize=\"18px\" (click)=\"onDynamicAddingClose()\"></dr-button>\n </div>\n </div>\n</div>\n", styles: [".dynamic-add__add-item{cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #dfe0e3;padding:6px}.dynamic-add__add-item:hover{background:#f9f7ff}.dynamic-add__add-item__text{font-size:14px;line-height:22px;margin:0;color:#6d6e6f}.dynamic-add__add-item .dr-icon-add{color:#6d6e6f}.dynamic-add__field{position:relative}.dynamic-add__field__buttons{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center}.dynamic-add__field__alert{font-size:12px;position:absolute;color:#bf1d30;z-index:100;right:30px}::ng-deep .ng-dropdown-panel .ng-dropdown-footer:has(.dynamic-add),::ng-deep .ng-dropdown-panel .ng-dropdown-header:has(.dynamic-add){padding:0;border:none}::ng-deep .ng-dropdown-panel .ng-dropdown-footer .dynamic-add__add-item{border-bottom:none}::ng-deep .dynamic-add__field__input{padding-left:12px!important;height:36px!important;border:none!important;background:#f9f7ff!important;border-radius:0!important}::ng-deep .dynamic-add__field__input>input{background:#f9f7ff}::ng-deep .dynamic-add__field__input>input::placeholder{line-height:22px;font-size:14px;font-weight:400;color:#9ea1aa}::ng-deep .dynamic-add__field__input--error{background:#ffdfe4!important}::ng-deep .dynamic-add__field__input--error>input{background:#ffdfe4}\n"] }]
124
134
  }], function () { return [{ type: i1.DrSelectComponent }]; }, { dynamicAddLabel: [{
125
135
  type: Input
126
136
  }], bindValue: [{
@@ -129,10 +139,12 @@ export class DrSelectAddItemComponent {
129
139
  type: Input
130
140
  }], alertMsg: [{
131
141
  type: Input
142
+ }], showOnlyInput: [{
143
+ type: Input
132
144
  }], dynamicValueAdded: [{
133
145
  type: Output
134
146
  }], inputRef: [{
135
147
  type: ViewChild,
136
148
  args: ['dynamicInputRef']
137
149
  }] }); })();
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7O0lDUDFELDZCQUN3QztJQUFBLFlBQWM7SUFBQSxpQkFBSTs7O0lBQWxCLGVBQWM7SUFBZCxxQ0FBYzs7OztJQVNsRCxxQ0FLeUM7SUFBckMscUxBQVMsZUFBQSx3Q0FBMEIsQ0FBQSxJQUFDO0lBQUMsaUJBQVk7Ozs7SUFoQjdELDhCQUF3RDtJQUNwRCwyRUFDMEQ7SUFDMUQsc0NBTTBCO0lBRnRCLDZPQUEwQixvS0FDZixlQUFBLGdEQUFrQyxDQUFBLElBRG5CO0lBRUosaUJBQVc7SUFDckMsOEJBQXlDO0lBQ3JDLDRGQUtxRDtJQUNyRCxxQ0FBNkY7SUFBakMsd0tBQVMsZUFBQSw2QkFBc0IsQ0FBQSxJQUFDO0lBQUMsaUJBQVksRUFBQSxFQUFBOzs7SUFoQnpHLGVBQW1E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Q1ksaUJBQWlCO2tCQUFsQyxNQUFNO1lBRTJCLFFBQVE7a0JBQXpDLFNBQVM7bUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vZHItc2VsZWN0L2RyLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgcmVkdWNlIGFzIF9yZWR1Y2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2RyLWlucHV0L2RyLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItc2VsZWN0LWFkZC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1zZWxlY3QtYWRkLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJTZWxlY3RBZGRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBpc0R5bmFtaWNBZGRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGR5bmFtaWNWYWx1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBjdXJyZW50VmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyBpc0RpcnR5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcHVibGljIGR5bmFtaWNBZGRMYWJlbCA9ICdBZGQgbmV3JztcbiAgICBASW5wdXQoKSBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJpdmF0ZSB2YWx1ZXM6IGFueVtdID0gW107XG4gICAgQElucHV0KCkgcHVibGljIGFsZXJ0TXNnOiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIHByaXZhdGUgZHluYW1pY1ZhbHVlQWRkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljSW5wdXRSZWYnKSBzZXQgaW5wdXRSZWYoaW5wdXQ6IERySW5wdXRDb21wb25lbnQpIHtcbiAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZHJTZWxlY3Q6IERyU2VsZWN0Q29tcG9uZW50KSB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EeW5hbWljQWRkaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHluYW1pY0FkZGluZ0Nsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0R5bmFtaWNWYWx1ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB0aGlzLmR5bmFtaWNWYWx1ZT8udHJpbSgpO1xuICAgICAgICBpZiAoIXRyaW1tZWRWYWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gIXRoaXMuY3VycmVudFZhbHVlcy5pbmNsdWRlcyh0cmltbWVkVmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkR5bmFtaWNBZGQodmFsdWU6IHN0cmluZywga2V5ZG93bkV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNEeW5hbWljVmFsdWVWYWxpZCgpKSByZXR1cm47XG4gICAgICAgIGlmIChrZXlkb3duRXZlbnQgJiYga2V5ZG93bkV2ZW50LmtleSAhPT0gJ0VudGVyJykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub25EeW5hbWljQWRkaW5nQ2xvc2UoKTtcbiAgICAgICAgdGhpcy5kclNlbGVjdC5jbG9zZSgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZUFkZGVkLmVtaXQodmFsdWU/LnRyaW0oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZXMgPSB0aGlzLmJpbmRWYWx1ZVxuICAgICAgICAgICAgPyBfcmVkdWNlKFxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMsXG4gICAgICAgICAgICAgICAgICAoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY3Vyclt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy52YWx1ZXM7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRyLXNlbGVjdF9fZHluYW1pYy1hZGQgZHluYW1pYy1hZGRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1hZGRfX2FkZC1pdGVtXCIgKGNsaWNrKT1cIm9uRHluYW1pY0FkZGluZygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZHItaWNvbi1hZGRcIj48L2k+XG4gICAgICAgIDxwIGNsYXNzPVwiZHluYW1pYy1hZGRfX2FkZC1pdGVtX190ZXh0XCI+e3sgZHluYW1pY0FkZExhYmVsIH19PC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJpc0R5bmFtaWNBZGRpbmdcIiBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZFwiPlxuICAgICAgICA8cCAqbmdJZj1cImFsZXJ0TXNnICYmICFpc0R5bmFtaWNWYWx1ZVZhbGlkKCkgJiYgaXNEaXJ0eVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHluYW1pYy1hZGRfX2ZpZWxkX19hbGVydFwiPnt7IGFsZXJ0TXNnIH19PC9wPlxuICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICNkeW5hbWljSW5wdXRSZWZcbiAgICAgICAgICAgIGNsYXNzPVwiZHluYW1pYy1hZGRfX2ZpZWxkX19pbnB1dFwiXG4gICAgICAgICAgICBbY2xhc3MuZHluYW1pYy1hZGRfX2ZpZWxkX19pbnB1dC0tZXJyb3JdPVwiIWlzRHluYW1pY1ZhbHVlVmFsaWQoKSAmJiBpc0RpcnR5XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHluYW1pY1ZhbHVlXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uRHluYW1pY0FkZChkeW5hbWljVmFsdWUsICRldmVudClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlLi4uXCI+PC9kci1pbnB1dD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZF9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgPGRyLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZHluYW1pY1ZhbHVlICYmIGlzRHluYW1pY1ZhbHVlVmFsaWQoKVwiXG4gICAgICAgICAgICAgICAgdGhlbWU9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZHItaWNvbi1hcHByb3ZlXCJcbiAgICAgICAgICAgICAgICBpY29uU2l6ZT1cIjE4cHhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkR5bmFtaWNBZGQoZHluYW1pY1ZhbHVlKVwiPjwvZHItYnV0dG9uPlxuICAgICAgICAgICAgPGRyLWJ1dHRvbiB0aGVtZT1cImljb25cIiBpY29uPVwiZHItaWNvbi1leGl0XCIgaWNvblNpemU9XCIxOHB4XCIgKGNsaWNrKT1cIm9uRHluYW1pY0FkZGluZ0Nsb3NlKClcIj48L2RyLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kci1zZWxlY3QtYWRkLWl0ZW0vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7OztJQ1o5RCw4QkFBMkc7SUFBNUIsa0tBQVMsZUFBQSx3QkFBaUIsQ0FBQSxJQUFDO0lBQ3RHLHVCQUEyQjtJQUMzQiw0QkFBdUM7SUFBQSxZQUFxQjtJQUFBLGlCQUFJLEVBQUE7OztJQUF6QixlQUFxQjtJQUFyQiw0Q0FBcUI7OztJQUc1RCw2QkFBMkY7SUFBQSxZQUFjO0lBQUEsaUJBQUk7OztJQUFsQixlQUFjO0lBQWQscUNBQWM7Ozs7SUFTckcscUNBS3lDO0lBQXJDLHFMQUFTLGVBQUEsd0NBQTBCLENBQUEsSUFBQztJQUFDLGlCQUFZOzs7O0lBZjdELDhCQUF3RDtJQUNwRCwyRUFBNkc7SUFDN0csc0NBTTBCO0lBRnRCLDhPQUEwQixzS0FDZixlQUFBLGtEQUFrQyxD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QUFlO2tCQUE5QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNXLE1BQU07a0JBQXRCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsYUFBYTtrQkFBNUIsS0FBSztZQUNZLGlCQUFpQjtrQkFBbEMsTUFBTTtZQUUyQixRQUFRO2tCQUF6QyxTQUFTO21CQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEclNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2RyLXNlbGVjdC9kci1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZHVjZSBhcyBfcmVkdWNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERySW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9kci1pbnB1dC9kci1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLXNlbGVjdC1hZGQtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLXNlbGVjdC1hZGQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItc2VsZWN0LWFkZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyU2VsZWN0QWRkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwdWJsaWMgaXNEeW5hbWljQWRkaW5nOiBib29sZWFuO1xuICAgIHB1YmxpYyBkeW5hbWljVmFsdWU6IHN0cmluZztcbiAgICBwdWJsaWMgY3VycmVudFZhbHVlczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgaXNEaXJ0eTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBkeW5hbWljQWRkTGFiZWwgPSAnQWRkIG5ldyc7XG4gICAgQElucHV0KCkgcHVibGljIGJpbmRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHByaXZhdGUgdmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGVydE1zZzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93T25seUlucHV0OiBib29sZWFuID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIHByaXZhdGUgZHluYW1pY1ZhbHVlQWRkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljSW5wdXRSZWYnKSBzZXQgaW5wdXRSZWYoaW5wdXQ6IERySW5wdXRDb21wb25lbnQpIHtcbiAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZHJTZWxlY3Q6IERyU2VsZWN0Q29tcG9uZW50KSB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EeW5hbWljQWRkaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHluYW1pY0FkZGluZ0Nsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHluYW1pY0FkZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0R5bmFtaWNWYWx1ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSB0aGlzLmR5bmFtaWNWYWx1ZT8udHJpbSgpO1xuICAgICAgICBpZiAoIXRyaW1tZWRWYWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gIXRoaXMuY3VycmVudFZhbHVlcy5pbmNsdWRlcyh0cmltbWVkVmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkR5bmFtaWNBZGQodmFsdWU6IHN0cmluZywga2V5ZG93bkV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNEeW5hbWljVmFsdWVWYWxpZCgpKSByZXR1cm47XG4gICAgICAgIGlmIChrZXlkb3duRXZlbnQgJiYga2V5ZG93bkV2ZW50LmtleSAhPT0gJ0VudGVyJykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub25EeW5hbWljQWRkaW5nQ2xvc2UoKTtcbiAgICAgICAgdGhpcy5kclNlbGVjdC5jbG9zZSgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZUFkZGVkLmVtaXQodmFsdWU/LnRyaW0oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50VmFsdWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZXMgPSB0aGlzLmJpbmRWYWx1ZVxuICAgICAgICAgICAgPyBfcmVkdWNlKFxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMsXG4gICAgICAgICAgICAgICAgICAoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY3Vyclt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy52YWx1ZXM7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRyLXNlbGVjdF9fZHluYW1pYy1hZGQgZHluYW1pYy1hZGRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIShzaG93T25seUlucHV0ICYmIGlzRHluYW1pY0FkZGluZylcIiBjbGFzcz1cImR5bmFtaWMtYWRkX19hZGQtaXRlbVwiIChjbGljayk9XCJvbkR5bmFtaWNBZGRpbmcoKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImRyLWljb24tYWRkXCI+PC9pPlxuICAgICAgICA8cCBjbGFzcz1cImR5bmFtaWMtYWRkX19hZGQtaXRlbV9fdGV4dFwiPnt7IGR5bmFtaWNBZGRMYWJlbCB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNEeW5hbWljQWRkaW5nXCIgY2xhc3M9XCJkeW5hbWljLWFkZF9fZmllbGRcIj5cbiAgICAgICAgPHAgKm5nSWY9XCJhbGVydE1zZyAmJiAhaXNEeW5hbWljVmFsdWVWYWxpZCgpICYmIGlzRGlydHlcIiBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZF9fYWxlcnRcIj57eyBhbGVydE1zZyB9fTwvcD5cbiAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAjZHluYW1pY0lucHV0UmVmXG4gICAgICAgICAgICBjbGFzcz1cImR5bmFtaWMtYWRkX19maWVsZF9faW5wdXRcIlxuICAgICAgICAgICAgW2NsYXNzLmR5bmFtaWMtYWRkX19maWVsZF9faW5wdXQtLWVycm9yXT1cIiFpc0R5bmFtaWNWYWx1ZVZhbGlkKCkgJiYgaXNEaXJ0eVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImR5bmFtaWNWYWx1ZVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbkR5bmFtaWNBZGQoZHluYW1pY1ZhbHVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZS4uLlwiPjwvZHItaW5wdXQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWFkZF9fZmllbGRfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgIDxkci1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImR5bmFtaWNWYWx1ZSAmJiBpc0R5bmFtaWNWYWx1ZVZhbGlkKClcIlxuICAgICAgICAgICAgICAgIHRoZW1lPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImRyLWljb24tYXBwcm92ZVwiXG4gICAgICAgICAgICAgICAgaWNvblNpemU9XCIxOHB4XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EeW5hbWljQWRkKGR5bmFtaWNWYWx1ZSlcIj48L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkci1idXR0b24gdGhlbWU9XCJpY29uXCIgaWNvbj1cImRyLWljb24tZXhpdFwiIGljb25TaXplPVwiMThweFwiIChjbGljayk9XCJvbkR5bmFtaWNBZGRpbmdDbG9zZSgpXCI+PC9kci1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=