@dev-tcloud/tcloud-ui 0.0.60 → 0.0.61

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.
@@ -52,13 +52,35 @@ export class TCloudUiFiltersComponent {
52
52
  this.first_active_filter = true;
53
53
  }
54
54
  }
55
- console.log('this.filters', this.filters);
56
- this.init();
55
+ this.toSubmit();
57
56
  });
58
57
  }
59
58
  ngAfterViewInit() {
60
59
  // child is set
61
60
  }
61
+ /*
62
+ auto_filter(){
63
+ setTimeout(() => {
64
+ if( this.filters ){
65
+ const filters = JSON.parse(JSON.stringify( this.filters ));
66
+ for(let i = 0; i < (filters).length; i++){
67
+ if( filters[i].value ){
68
+ if( filters[i].type === 'datetime-local' ){
69
+ try {
70
+ filters[i].searchText = new Date( `${filters[i].value}` );
71
+ } catch (error) {}
72
+ }else{
73
+ filters[i].searchText = filters[i].value;
74
+ }
75
+ this.first_active_filter = true;
76
+ }
77
+ }
78
+ console.log('auto_filter onSubmit', filters);
79
+ this.onSubmit.emit(filters);
80
+ }
81
+ });
82
+ }
83
+ */
62
84
  ngOnChanges(changes) {
63
85
  if (changes && changes['data']) {
64
86
  const data = changes['data'].currentValue;
@@ -122,9 +144,16 @@ export class TCloudUiFiltersComponent {
122
144
  if ((!filter.searchText || filter.searchText && filter.searchText === '') && filter.type !== "boolean") {
123
145
  delete (filters[i]);
124
146
  }
147
+ if (filter.type === "boolean") {
148
+ if (!filter.searchText) {
149
+ filter.searchText = false;
150
+ }
151
+ }
125
152
  });
126
153
  }
127
- this.onSubmit.emit(JSON.parse(JSON.stringify(this.filters)));
154
+ filters = filters.filter(Boolean);
155
+ console.log('onSubmit', filters);
156
+ this.onSubmit.emit(filters);
128
157
  }
129
158
  collectionFind(obj, path) {
130
159
  const pathArray = path.split(".");
@@ -415,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
415
444
  }], onSubmit: [{
416
445
  type: Output
417
446
  }] } });
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPaEYsTUFBTSxPQUFPLHdCQUF3QjtJQTRDbkMsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0M1QixnQkFBVyxHQUFHLEVBQVMsQ0FBQztRQUl4QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBZ0J0QixnQkFBVyxHQUFXLFNBQVMsQ0FBQztRQVEvQixtQkFBYyxHQUFXLGNBQWMsQ0FBQztRQUN4QyxzQkFBaUIsR0FBWSxJQUFJLENBQUMsQ0FBQywyRUFBMkU7UUFDOUcsb0JBQWUsR0FBWSxLQUFLLENBQUMsQ0FBQyxtRkFBbUY7UUFDckgsOEJBQXlCLEdBQVksSUFBSSxDQUFDLENBQUMsb0ZBQW9GO1FBRTlILFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FB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dCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVENDb25kaXRpb24sIFRDRGF0YUZpbHRlcnMsIFRDRmlsdGVyc1R5cGUgfSBmcm9tICcuL3RjbG91ZC11aS1maWx0ZXJzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGNsb3VkLXVpLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktZmlsdGVycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRDbG91ZFVpRmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBkYXRlcGlja2VycyA9IFtdIGFzIGFueTtcblxuICBAVmlld0NoaWxkKCdfZm9ybXVsYXJpbycpICBfZm9ybXVsYXJpbzogTmdGb3JtIHwgdW5kZWZpbmVkO1xuXG4gIGlucHV0czogc3RyaW5nW10gPSBbXTtcblxuICBzaG93X2ZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZWFyY2hfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgX2RhdGE6IGFueSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2V0IGRhdGEoZGF0YTogYW55KXtcbiAgICAvLyB0aGlzLl9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cbiAgZ2V0IGRhdGEoKTogYW55eyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcnM6IFRDRGF0YUZpbHRlcnMgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueSl7XG4gICAgLy90aGlzLl9maWx0ZXJzID0gZmlsdGVycztcbiAgfVxuICBnZXQgZmlsdGVycygpOiBhbnl7IHJldHVybiB0aGlzLl9maWx0ZXJzOyB9XG5cbiAgcHJpdmF0ZSBfc3VibWl0VGV4dDogc3RyaW5nID0gJ0ZpbHRyYXInO1xuICBASW5wdXQoKSBzZXQgc3VibWl0VGV4dCh2OiBzdHJpbmcpeyBcbiAgICBpZiggdiAmJiB2ICE9PSB0aGlzLl9zdWJtaXRUZXh0ICl7XG4gICAgICB0aGlzLl9zdWJtaXRUZXh0ID0gdjtcbiAgICB9XG4gIH1cbiAgZ2V0IHN1Ym1pdFRleHQoKTpzdHJpbmd7IHJldHVybiB0aGlzLl9zdWJtaXRUZXh0OyB9XG5cbiAgQElucHV0KCkgYnRuU3VibWl0Q2xhc3M6IHN0cmluZyA9ICdidG4tbmV3LWdyZXknO1xuICBASW5wdXQoKSB1c2VPbkNoYW5nZVN1Ym1pdDogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU9uQ2hhbmdlU3VibWl0IC0gU3VibWl0IGF1dG9tYXRpY28gcXVhbmRvIGZvciBhbHRlcmFkbyBxdWFucXVlciBpbnB1dFxuICBASW5wdXQoKSB1c2VCdXR0b25TdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gdXNlQnV0dG9uU3VibWl0IC0gRXhpYmUgdW0gYm90w6NvIGRlIHN1Ym1pdCBlIG7Do28gZXhlY3V0YSBhIGJ1c2NhIGF1dG9tYXRpY2FtZW50ZVxuICBASW5wdXQoKSB1c2VOb3JtYWxpemVDYXNlU2Vuc2l0aXZlOiBib29sZWFuID0gdHJ1ZTsgLy8gdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZSAtIE7Do28gdmFsaWRhIGNhaXhhIGFsdGEgb3UgYmFpeGEgZSBjYXJhY3RlcmVzIGVzcGVjaWFpc1xuXG4gIEBPdXRwdXQoKSByZXN1bHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIGZpcnN0X2FjdGl2ZV9maWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRhdGVwaXBlOiBEYXRlUGlwZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSApe1xuICAgICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyApe1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSBuZXcgRGF0ZSggYCR7dGhpcy5maWx0ZXJzW2ldLnZhbHVlfWAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSB0aGlzLmZpbHRlcnNbaV0udmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmZpbHRlcnMnLCB0aGlzLmZpbHRlcnMpO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gY2hpbGQgaXMgc2V0XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICBcbiAgICBcbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydkYXRhJ10gKXtcbiAgICAgIGNvbnN0IGRhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYoIHRoaXMuX2RhdGEgIT09IGRhdGEgKXtcbiAgICAgICAgdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICB0aGlzLnNlYXJjaF9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCBjaGFuZ2VzICYmIGNoYW5nZXNbJ2ZpbHRlcnMnXSApe1xuICAgICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiggdGhpcy5fZmlsdGVycyAhPT0gZmlsdGVycyApe1xuICAgICAgICB0aGlzLl9maWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XG4gICAgICB0aGlzLnNob3dfZmlsdGVycyA9IHRydWU7XG4gICAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcbiAgICAgICAgKHRoaXMuZmlsdGVycykuZm9yRWFjaCgoZmlsdGVyOiBUQ0RhdGFGaWx0ZXJzKSA9PiB7ICAgICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zZWFyY2hJbihmaWx0ZXIsICdzeW5jJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBcbiAgICAgIC8vIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIGlmKCAhdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApe1xuICAgICAgICB0aGlzLnJlc3VsdC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMudXNlQnV0dG9uU3VibWl0ICl7XG4gICAgICAgIHRoaXMuc3RhcnRfZmlsdGVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xuICAgIGlmKCB0aGlzLnVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgKXtcbiAgICAgIGNvbnN0IHYgPSAoICggKGAke3RleHR9YCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICB0b1N1Ym1pdCgpe1xuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFN1Ym1pdEZpbHRlcnMoKXtcbiAgICBsZXQgZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSk7XG4gICAgaWYoIGZpbHRlcnMgJiYgKGZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcbiAgICAgIChmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXI6IFRDRGF0YUZpbHRlcnMsIGk6IG51bWJlcikgPT4ge1xuXG4gICAgICAgIGlmKCBmaWx0ZXIud2lkdGggKXsgZGVsZXRlKGZpbHRlcnNbaV0ud2lkdGgpOyB9XG4gICAgICAgIGlmKCBmaWx0ZXIucGxhY2Vob2xkZXIgKXsgZGVsZXRlKGZpbHRlcnNbaV0ucGxhY2Vob2xkZXIpOyB9XG4gICAgICAgIGlmKCBmaWx0ZXIuZGVzY3JpcHRpb24gKXsgZGVsZXRlKGZpbHRlcnNbaV0uZGVzY3JpcHRpb24pOyB9XG5cbiAgICAgICAgaWYoICghZmlsdGVyLnNlYXJjaFRleHQgfHwgZmlsdGVyLnNlYXJjaFRleHQgJiYgZmlsdGVyLnNlYXJjaFRleHQgPT09ICcnKSAmJiBmaWx0ZXIudHlwZSAhPT0gXCJib29sZWFuXCIgKXtcbiAgICAgICAgICBkZWxldGUoZmlsdGVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5vblN1Ym1pdC5lbWl0KEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSkpO1xuICB9XG5cblxuICBwcml2YXRlIGNvbGxlY3Rpb25GaW5kKG9iajogYW55LCBwYXRoOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBwYXRoQXJyYXlbaV07XG5cbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ1snKSAmJiBrZXkuaW5jbHVkZXMoJ10nKSkge1xuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IHBhdGhBcnJheS5zbGljZShpICsgMSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZignWycpICsgMSwga2V5LmluZGV4T2YoJ10nKSk7XG4gICAgICAgIGNvbnN0IGFycmF5S2V5ID0ga2V5LnN1YnN0cmluZygwLCBrZXkuaW5kZXhPZignWycpKTtcbiAgICAgICAgaWYoIGN1cnJlbnQgJiYgY3VycmVudFthcnJheUtleV0gJiYgY3VycmVudFthcnJheUtleV1baW5kZXhdICl7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFthcnJheUtleV1baW5kZXhdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiW11cIikpIHtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkucmVwbGFjZShcIltdXCIsIFwiXCIpO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFthcnJheUtleV0gfHwgW107XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGN1cnJlbnQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5jb2xsZWN0aW9uRmluZChjdXJyZW50W2pdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiggIWN1cnJlbnQgfHwgKGN1cnJlbnQgJiYgIWN1cnJlbnRba2V5XSkgKXtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gICAgXG4gIHN0YXJ0X2ZpbHRlcl9mYzogYW55ID0gdW5kZWZpbmVkO1xuXG5cbiAgc2VhcmNoSW4oaXRlbTogVENEYXRhRmlsdGVycywgZXZlbnQ/OiBhbnksIHZhbHVlPzogYW55KXtcblxuICAgIC8vY29uc29sZS5sb2coJ2l0ZW0gVENEYXRhRmlsdGVycycsIGl0ZW0pO1xuICAgIHRoaXMuc3RhcnRfZmlsdGVyX2ZjID0gdW5kZWZpbmVkO1xuXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYoIGV2ZW50ID09PSAnc3luYycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKCB0eXBlb2YgZXZlbnQgPT09ICdib29sZWFuJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudDtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiggZXZlbnQgPT09IHVuZGVmaW5lZCB8fCBldmVudCA9PT0gbnVsbCB8fCBldmVudCA9PT0gJycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoIGV2ZW50Py5kYXRlcGlja2VydGltZSAgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ/LmlubmVyVmFsdWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoZXZlbnQ/LnRhcmdldD8udmFsdWUgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZihldmVudD8udGFyZ2V0Py52YWx1ZSA9PT0gJycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgXG4gICAgaWYoIHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgfHwgdGhpcy5maXJzdF9hY3RpdmVfZmlsdGVyICl7ICAgICAgXG4gICAgICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHRoaXMuc3RhcnRfZmlsdGVyKCk7XG4gICAgICB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiggIXRoaXMudXNlQnV0dG9uU3VibWl0ICl7XG4gICAgICB0aGlzLmVtaXRTdWJtaXRGaWx0ZXJzKCk7XG4gICAgfSBcbiAgfVxuXG5cbiAgLy8gc2VhcmNoSW4oaXRlbTogVENEYXRhRmlsdGVycywgZXZlbnQ/OiBhbnksIHZhbHVlPzogYW55KXtcblxuICAvLyAgIGlmKCB2YWx1ZSApe1xuICAvLyAgICAgY29uc29sZS5sb2coJ3NlYXJjaEluIGl0ZW0nLCBpdGVtKTtcbiAgLy8gICAgIGNvbnNvbGUubG9nKCdzZWFyY2hJbiBldmVudCcsIGV2ZW50KTtcbiAgLy8gICB9XG4gICAgXG4gICAgXG4gIC8vICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB1bmRlZmluZWQ7XG5cbiAgLy8gICBpZiggZXZlbnQgIT09IHVuZGVmaW5lZCApe1xuICAvLyAgICAgaWYoIHR5cGVvZiBldmVudCA9PT0gJ2Jvb2xlYW4nICl7XG4gIC8vICAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50O1xuICAvLyAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIC8vICAgICB9ZWxzZXtcbiAgLy8gICAgICAgaWYoIGV2ZW50ID09PSBudWxsICl7XG4gIC8vICAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gIC8vICAgICAgIH1lbHNle1xuXG4gIC8vICAgICAgICAgaWYoIGV2ZW50LmRlZmF1bHRWYWx1ZSApe1xuICAvLyAgICAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQuZGVmYXVsdFZhbHVlO1xuICAvLyAgICAgICAgIH1lbHNlIGlmKCBldmVudC50YXJnZXQgKXtcbiAgLy8gICAgICAgICAgIGlmKCBldmVudC50YXJnZXQudmFsdWVBc0RhdGUgKXtcbiAgLy8gICAgICAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVBc0RhdGU7XG4gIC8vICAgICAgICAgICB9ZWxzZXtcbiAgLy8gICAgICAgICAgICAgaWYoIGV2ZW50LnRhcmdldC52YWx1ZSApe1xuICAvLyAgICAgICAgICAgICAgIC8vIGl0ZW0uc2VhcmNoVGV4dCA9IChldmVudC50YXJnZXQudmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gIC8vICAgICAgICAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBcbiAgLy8gICAgICAgICAgICAgfSAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgIH0gXG4gIC8vICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgaWYoIHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgKXsgICAgICBcbiAgLy8gICAgIHRoaXMuc3RhcnRfZmlsdGVyX2ZjID0gdGhpcy5zdGFydF9maWx0ZXIoKTtcbiAgLy8gICB9XG5cbiAgLy8gICBpZiggIXRoaXMudXNlQnV0dG9uU3VibWl0ICl7XG4gIC8vICAgICB0aGlzLmVtaXRTdWJtaXRGaWx0ZXJzKCk7XG4gIC8vICAgfSBcbiAgLy8gfVxuICBcbiAgc3RhcnRfZmlsdGVyKCk6IHZvaWR7XG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xuXG4gICAgICB0aGlzLnNldERhdGFJbmRleChpLCB0cnVlKTtcblxuICAgICAgZm9yKCBsZXQgaiA9IDA7IGogPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGorKyApeyAgICAgICAgXG4gICAgICAgIGNvbnN0IGZpbHRlcl9pdGVtID0gdGhpcy5maWx0ZXJzW2pdOyAgIFxuXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdzdHJpbmcnICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgIT09ICcnICYmIGZpbHRlcl9pdGVtLnR5cGUgIT09IFRDRmlsdGVyc1R5cGUubnVtYmVyICl7XG4gICAgICAgICAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpOyAgICAgICAgXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWUgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICl7XG4gICAgICAgICAgICBpdGVtX3ZhbHVlID0gdGhpcy5ub3JtYWxpemUoaXRlbV92YWx1ZSk7ICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZS5pbmNsdWRlcyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSB8fCBpdGVtX3ZhbHVlID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICkgKXtcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBcbiAgICAgICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dC52YWx1ZU9mKCkpICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZXRpbWUgKXtcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZTogYW55ID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcblxuICAgICAgICAgIHRyeSB7IGl0ZW1fdmFsdWUgPSBuZXcgRGF0ZShpdGVtX3ZhbHVlKTsgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgIGl0ZW1fdmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTiggaXRlbV92YWx1ZS52YWx1ZU9mKCkpICl7XG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBkdF90YXJnZXQgICA9IChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KS5nZXRUaW1lKCkgKyAoMyAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAgICAgICAgIGNvbnN0IGR0X2N1cnJlbnQgID0gKGl0ZW1fdmFsdWUpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5jb25kaXRpb24gKXtcbiAgICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXJfaXRlbS5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmd0OiAgICBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPiAgKyhkdF9jdXJyZW50KSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdDogICAgaXNfYWNjZXB0ID0gISggKyhkdF90YXJnZXQpIDwgICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3RlOiAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA+PSArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0ZTogICBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPD0gKyhkdF9jdXJyZW50KSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gISggKyhkdF90YXJnZXQpID09PSArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPT0gKyhkdF9jdXJyZW50KSApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gKyhpdGVtX3ZhbHVlKSApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoICFpc19hY2NlcHQgKXtcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIFxuXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIHR5cGVvZiArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnbnVtYmVyJyAmJiBmaWx0ZXJfaXRlbS50eXBlID09PSBUQ0ZpbHRlcnNUeXBlLm51bWJlciApe1xuXG4gICAgICAgICAgXG5cbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIHR5cGVvZiArKGl0ZW1fdmFsdWUpID09PSAnbnVtYmVyJyApeyAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IGlzX2FjY2VwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3Q6ICAgIGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPiAgKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdDogICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA8ICArKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmd0ZTogICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLTAuMSA+PSArKGl0ZW1fdmFsdWUpICk7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHRlOiAgIGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkrMC4xIDw9ICsoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZXF1YWw6IGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICsoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT0gKyhpdGVtX3ZhbHVlKSApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gKyhpdGVtX3ZhbHVlKSApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoICFpc19hY2NlcHQgKXtcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgXG4gICAgICAgIGlmKCB0eXBlb2YgKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnYm9vbGVhbicgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApe1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlOiBhbnkgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICYmIChpdGVtX3ZhbHVlKS5sZW5ndGggPiAwICl7ICBcbiAgICAgICAgICAgIGxldCBxdGRfaXNfdHJ1ZSA9IDA7ICAgICAgICAgIFxuICAgICAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAoKGl0ZW1fdmFsdWUpLmxlbmd0aCk7IGkrKyApe1xuICAgICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbV92YWx1ZVtpXTtcbiAgICAgICAgICAgICAgaWYoIGl0ZW0gPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKXtcbiAgICAgICAgICAgICAgICBxdGRfaXNfdHJ1ZSsrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggcXRkX2lzX3RydWUgPT09IDAgKXtcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaWYoICEoIGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgXG4gICAgICB9XG5cbiAgICB9IC8vIGVuZCBmb3JcbiAgICBcbiAgICB0aGlzLnRvUmVzdWx0KCk7XG4gICAgICBcbiAgfVxuXG4gIHByaXZhdGUgdG9SZXN1bHQoKXtcblxuXG4gICAgY29uc3Qgc2VhcmNoX2RhdGEgPSBbXTtcblxuICAgIGxldCBpc19maWx0ZXIgPSBmYWxzZTtcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaSsrICl7XG4gICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgJiYgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgIT09ICcnICl7XG4gICAgICAgIGlzX2ZpbHRlciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoIGlzX2ZpbHRlciApe1xuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xuICAgICAgICBpZiggdGhpcy5kYXRhICYmIHRoaXMuZGF0YVtpXSAmJiB0aGlzLmRhdGFbaV1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSApe1xuICAgICAgICAgIChzZWFyY2hfZGF0YSkucHVzaCh0aGlzLmRhdGFbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlc3VsdC5lbWl0KHNlYXJjaF9kYXRhKTtcbiAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQuZW1pdCh0aGlzLmRhdGEpO1xuICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7Li4udGhpcy5maWx0ZXJzfSk7XG4gIH1cblxuICBzZXREYXRhSW5kZXgoaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gKXtcbiAgICBpZiggdGhpcy5kYXRhICYmIHRoaXMuZGF0YVtpbmRleF0gKXtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd19maWx0ZXJzXCIgY2xhc3M9XCJhcmVhLWZpbHRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyczsgbGV0IGkgPSBpbmRleFwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS50eXBlIHx8IChpdGVtLnR5cGUgJiYgaXRlbS50eXBlICE9PSAnYm9vbGVhbicpXCI+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXQgdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkYXRldGltZS1sb2NhbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIihpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gbnVsbCAmJiBpdGVtLnZhbHVlICE9PSAnJylcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRjbG91ZC11aS1kYXRlcGlja2VyLXRpbWUgI19pbnB1dCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIiBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIChldmVudENoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQsICd0ZXN0ZScpXCIgPjwvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBpdGVtLnZhbHVlID0gJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgIT09ICdzZWxlY3QnICYmIGl0ZW0udHlwZSAhPT0gJ2RhdGV0aW1lLWxvY2FsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvblwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LnZhbHVlICE9PSAnJ1wiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7eyAoaXRlbS50eXBlID09PSAnbnVtYmVyJykgPyAndGV4dCcgOiBpdGVtLnR5cGUgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hJbihpdGVtLCAkZXZlbnQpXCI+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3NlbGVjdCcgJiYgaXRlbS5kYXRhICYmIChpdGVtLmRhdGEpLmxlbmd0aCA+IDBcIiA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQudmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdiBvZiBpdGVtLmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidi52YWx1ZVwiPnt7IHYuZGVzY3JpcHRpb24gfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiX2lucHV0LnZhbHVlID09PSAnJ1wiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgX2lucHV0LnZhbHVlID0gJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICBcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAmJiBpdGVtLnR5cGUgPT09ICdib29sZWFuJ1wiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC5jaGVja2VkID09PSB0cnVlXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJlYS1pbnB1dC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgX2lucHV0LmNoZWNrZWQpXCI+ICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbWItMSBtci0xXCIgKm5nSWY9XCJ1c2VCdXR0b25TdWJtaXRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0Yy1idG4ge3sgYnRuU3VibWl0Q2xhc3MgfX1cIiAoY2xpY2spPVwidG9TdWJtaXQoKVwiID57eyBzdWJtaXRUZXh0IH19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuXG48IS0tIDxwcmU+e3sgaW5wdXRzIHwganNvbiB9fTwvcHJlPiAtLT5cbiAgICA8IS0tIDxwcmU+IHt7IGRhdGEgfCBqc29uIH19IDwvcHJlPlxuXG48cD5GSUxURVJTPC9wPlxuPHByZT4ge3sgZmlsdGVycyB8IGpzb24gfX08L3ByZT4gLS0+Il19
447
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPaEYsTUFBTSxPQUFPLHdCQUF3QjtJQTRDbkMsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0M1QixnQkFBVyxHQUFHLEVBQVMsQ0FBQztRQUl4QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBZ0J0QixnQkFBVyxHQUFXLFNBQVMsQ0FBQztRQVEvQixtQkFBYyxHQUFXLGNBQWMsQ0FBQztRQUN4QyxzQkFBaUIsR0FBWSxJQUFJLENBQUMsQ0FBQywyRUFBMkU7UUFDOUcsb0JBQWUsR0FBWSxLQUFLLENBQUMsQ0FBQyxtRkFBbUY7UUFDckgsOEJBQXlCLEdBQVksSUFBSSxDQUFDLENBQUMsb0ZBQW9GO1FBRTlILFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FB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QkFBdkIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRDQ29uZGl0aW9uLCBUQ0RhdGFGaWx0ZXJzLCBUQ0ZpbHRlcnNUeXBlIH0gZnJvbSAnLi90Y2xvdWQtdWktZmlsdGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgZGF0ZXBpY2tlcnMgPSBbXSBhcyBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnX2Zvcm11bGFyaW8nKSAgX2Zvcm11bGFyaW86IE5nRm9ybSB8IHVuZGVmaW5lZDtcblxuICBpbnB1dHM6IHN0cmluZ1tdID0gW107XG5cbiAgc2hvd19maWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2VhcmNoX2RhdGE6IGFueSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBkYXRhKGRhdGE6IGFueSl7XG4gICAgLy8gdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG4gIGdldCBkYXRhKCk6IGFueXsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cblxuICBwcml2YXRlIF9maWx0ZXJzOiBUQ0RhdGFGaWx0ZXJzIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZmlsdGVycyhmaWx0ZXJzOiBhbnkpe1xuICAgIC8vdGhpcy5fZmlsdGVycyA9IGZpbHRlcnM7XG4gIH1cbiAgZ2V0IGZpbHRlcnMoKTogYW55eyByZXR1cm4gdGhpcy5fZmlsdGVyczsgfVxuXG4gIHByaXZhdGUgX3N1Ym1pdFRleHQ6IHN0cmluZyA9ICdGaWx0cmFyJztcbiAgQElucHV0KCkgc2V0IHN1Ym1pdFRleHQodjogc3RyaW5nKXsgXG4gICAgaWYoIHYgJiYgdiAhPT0gdGhpcy5fc3VibWl0VGV4dCApe1xuICAgICAgdGhpcy5fc3VibWl0VGV4dCA9IHY7XG4gICAgfVxuICB9XG4gIGdldCBzdWJtaXRUZXh0KCk6c3RyaW5neyByZXR1cm4gdGhpcy5fc3VibWl0VGV4dDsgfVxuXG4gIEBJbnB1dCgpIGJ0blN1Ym1pdENsYXNzOiBzdHJpbmcgPSAnYnRuLW5ldy1ncmV5JztcbiAgQElucHV0KCkgdXNlT25DaGFuZ2VTdWJtaXQ6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VPbkNoYW5nZVN1Ym1pdCAtIFN1Ym1pdCBhdXRvbWF0aWNvIHF1YW5kbyBmb3IgYWx0ZXJhZG8gcXVhbnF1ZXIgaW5wdXRcbiAgQElucHV0KCkgdXNlQnV0dG9uU3VibWl0OiBib29sZWFuID0gZmFsc2U7IC8vIHVzZUJ1dHRvblN1Ym1pdCAtIEV4aWJlIHVtIGJvdMOjbyBkZSBzdWJtaXQgZSBuw6NvIGV4ZWN1dGEgYSBidXNjYSBhdXRvbWF0aWNhbWVudGVcbiAgQElucHV0KCkgdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgLSBOw6NvIHZhbGlkYSBjYWl4YSBhbHRhIG91IGJhaXhhIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXNcblxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBmaXJzdF9hY3RpdmVfZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlcGlwZTogRGF0ZVBpcGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0udmFsdWUgKXtcbiAgICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLnR5cGUgPT09ICdkYXRldGltZS1sb2NhbCcgKXtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ID0gbmV3IERhdGUoIGAke3RoaXMuZmlsdGVyc1tpXS52YWx1ZX1gICk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ID0gdGhpcy5maWx0ZXJzW2ldLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9ICAgICAgXG4gICAgICB0aGlzLnRvU3VibWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gY2hpbGQgaXMgc2V0XG4gIH1cblxuICAvKlxuICBhdXRvX2ZpbHRlcigpe1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYoIHRoaXMuZmlsdGVycyApe1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSggdGhpcy5maWx0ZXJzICkpO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgKGZpbHRlcnMpLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICBpZiggZmlsdGVyc1tpXS52YWx1ZSApe1xuICAgICAgICAgICAgaWYoIGZpbHRlcnNbaV0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyApe1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZpbHRlcnNbaV0uc2VhcmNoVGV4dCA9IG5ldyBEYXRlKCBgJHtmaWx0ZXJzW2ldLnZhbHVlfWAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgZmlsdGVyc1tpXS5zZWFyY2hUZXh0ID0gZmlsdGVyc1tpXS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdhdXRvX2ZpbHRlciBvblN1Ym1pdCcsIGZpbHRlcnMpO1xuICAgICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgKi9cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICBcbiAgICBcbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydkYXRhJ10gKXtcbiAgICAgIGNvbnN0IGRhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYoIHRoaXMuX2RhdGEgIT09IGRhdGEgKXtcbiAgICAgICAgdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICB0aGlzLnNlYXJjaF9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCBjaGFuZ2VzICYmIGNoYW5nZXNbJ2ZpbHRlcnMnXSApe1xuICAgICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiggdGhpcy5fZmlsdGVycyAhPT0gZmlsdGVycyApe1xuICAgICAgICB0aGlzLl9maWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XG4gICAgICB0aGlzLnNob3dfZmlsdGVycyA9IHRydWU7XG4gICAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcbiAgICAgICAgKHRoaXMuZmlsdGVycykuZm9yRWFjaCgoZmlsdGVyOiBUQ0RhdGFGaWx0ZXJzKSA9PiB7ICAgICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zZWFyY2hJbihmaWx0ZXIsICdzeW5jJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBcbiAgICAgIC8vIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIGlmKCAhdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApe1xuICAgICAgICB0aGlzLnJlc3VsdC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGlmKCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0IHx8IHRoaXMudXNlQnV0dG9uU3VibWl0ICl7XG4gICAgICAgIHRoaXMuc3RhcnRfZmlsdGVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xuICAgIGlmKCB0aGlzLnVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgKXtcbiAgICAgIGNvbnN0IHYgPSAoICggKGAke3RleHR9YCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICB0b1N1Ym1pdCgpe1xuICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFN1Ym1pdEZpbHRlcnMoKXtcbiAgICBsZXQgZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSk7XG4gICAgaWYoIGZpbHRlcnMgJiYgKGZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcbiAgICAgIChmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXI6IFRDRGF0YUZpbHRlcnMsIGk6IG51bWJlcikgPT4ge1xuXG4gICAgICAgIGlmKCBmaWx0ZXIud2lkdGggKXsgZGVsZXRlKGZpbHRlcnNbaV0ud2lkdGgpOyB9XG4gICAgICAgIGlmKCBmaWx0ZXIucGxhY2Vob2xkZXIgKXsgZGVsZXRlKGZpbHRlcnNbaV0ucGxhY2Vob2xkZXIpOyB9XG4gICAgICAgIGlmKCBmaWx0ZXIuZGVzY3JpcHRpb24gKXsgZGVsZXRlKGZpbHRlcnNbaV0uZGVzY3JpcHRpb24pOyB9XG5cbiAgICAgICAgaWYoICghZmlsdGVyLnNlYXJjaFRleHQgfHwgZmlsdGVyLnNlYXJjaFRleHQgJiYgZmlsdGVyLnNlYXJjaFRleHQgPT09ICcnKSAmJiBmaWx0ZXIudHlwZSAhPT0gXCJib29sZWFuXCIgKXtcbiAgICAgICAgICBkZWxldGUoZmlsdGVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIGZpbHRlci50eXBlID09PSBcImJvb2xlYW5cIiApe1xuICAgICAgICAgIGlmKCAhZmlsdGVyLnNlYXJjaFRleHQgKXtcbiAgICAgICAgICAgIGZpbHRlci5zZWFyY2hUZXh0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgfSk7XG4gICAgfVxuICAgIGZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zb2xlLmxvZygnb25TdWJtaXQnLCBmaWx0ZXJzKTtcbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoZmlsdGVycyk7XG4gIH1cblxuXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVtpXTtcblxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKCdbJykgKyAxLCBrZXkuaW5kZXhPZignXScpKTtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xuICAgICAgICBpZiggY3VycmVudCAmJiBjdXJyZW50W2FycmF5S2V5XSAmJiBjdXJyZW50W2FycmF5S2V5XVtpbmRleF0gKXtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmluZChjdXJyZW50W2FycmF5S2V5XVtpbmRleF0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJbXVwiKSkge1xuICAgICAgICBjb25zdCBhcnJheUtleSA9IGtleS5yZXBsYWNlKFwiW11cIiwgXCJcIik7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2FycmF5S2V5XSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY3VycmVudC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKGN1cnJlbnRbal0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOyBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKCAhY3VycmVudCB8fCAoY3VycmVudCAmJiAhY3VycmVudFtrZXldKSApe1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbiAgICBcbiAgc3RhcnRfZmlsdGVyX2ZjOiBhbnkgPSB1bmRlZmluZWQ7XG5cblxuICBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gICAgLy9jb25zb2xlLmxvZygnaXRlbSBUQ0RhdGFGaWx0ZXJzJywgaXRlbSk7XG4gICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB1bmRlZmluZWQ7XG5cbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG5cbiAgICBpZiggZXZlbnQgPT09ICdzeW5jJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoIHR5cGVvZiBldmVudCA9PT0gJ2Jvb2xlYW4nICYmIGlzVmFsaWQgKXtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50O1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKCBldmVudCA9PT0gdW5kZWZpbmVkIHx8IGV2ZW50ID09PSBudWxsIHx8IGV2ZW50ID09PSAnJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiggZXZlbnQ/LmRhdGVwaWNrZXJ0aW1lICAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudD8uaW5uZXJWYWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZihldmVudD8udGFyZ2V0Py52YWx1ZSAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKGV2ZW50Py50YXJnZXQ/LnZhbHVlID09PSAnJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSAnJztcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBcbiAgICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCB8fCB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgKXsgICAgICBcbiAgICAgIHRoaXMuc3RhcnRfZmlsdGVyX2ZjID0gdGhpcy5zdGFydF9maWx0ZXIoKTtcbiAgICAgIHRoaXMuZmlyc3RfYWN0aXZlX2ZpbHRlciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgICB9IFxuICB9XG5cblxuICAvLyBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gIC8vICAgaWYoIHZhbHVlICl7XG4gIC8vICAgICBjb25zb2xlLmxvZygnc2VhcmNoSW4gaXRlbScsIGl0ZW0pO1xuICAvLyAgICAgY29uc29sZS5sb2coJ3NlYXJjaEluIGV2ZW50JywgZXZlbnQpO1xuICAvLyAgIH1cbiAgICBcbiAgICBcbiAgLy8gICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHVuZGVmaW5lZDtcblxuICAvLyAgIGlmKCBldmVudCAhPT0gdW5kZWZpbmVkICl7XG4gIC8vICAgICBpZiggdHlwZW9mIGV2ZW50ID09PSAnYm9vbGVhbicgKXtcbiAgLy8gICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ7XG4gIC8vICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgLy8gICAgIH1lbHNle1xuICAvLyAgICAgICBpZiggZXZlbnQgPT09IG51bGwgKXtcbiAgLy8gICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSAnJztcbiAgLy8gICAgICAgfWVsc2V7XG5cbiAgLy8gICAgICAgICBpZiggZXZlbnQuZGVmYXVsdFZhbHVlICl7XG4gIC8vICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudC5kZWZhdWx0VmFsdWU7XG4gIC8vICAgICAgICAgfWVsc2UgaWYoIGV2ZW50LnRhcmdldCApe1xuICAvLyAgICAgICAgICAgaWYoIGV2ZW50LnRhcmdldC52YWx1ZUFzRGF0ZSApe1xuICAvLyAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZUFzRGF0ZTtcbiAgLy8gICAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgICBpZiggZXZlbnQudGFyZ2V0LnZhbHVlICl7XG4gIC8vICAgICAgICAgICAgICAgLy8gaXRlbS5zZWFyY2hUZXh0ID0gKGV2ZW50LnRhcmdldC52YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgLy8gICAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgICB9ICAgICAgICAgICAgXG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfSBcbiAgLy8gICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApeyAgICAgIFxuICAvLyAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xuICAvLyAgIH1cblxuICAvLyAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgLy8gICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgLy8gICB9IFxuICAvLyB9XG4gIFxuICBzdGFydF9maWx0ZXIoKTogdm9pZHtcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG5cbiAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIHRydWUpO1xuXG4gICAgICBmb3IoIGxldCBqID0gMDsgaiA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaisrICl7ICAgICAgICBcbiAgICAgICAgY29uc3QgZmlsdGVyX2l0ZW0gPSB0aGlzLmZpbHRlcnNbal07ICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAhPT0gJycgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5udW1iZXIgKXtcbiAgICAgICAgICBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7ICAgICAgICBcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZShpdGVtX3ZhbHVlKTsgICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlLmluY2x1ZGVzKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIHx8IGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBcblxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0LnZhbHVlT2YoKSkgJiYgZmlsdGVyX2l0ZW0udHlwZSA9PT0gVENGaWx0ZXJzVHlwZS5kYXRldGltZSApe1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlOiBhbnkgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xuXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSAmJiAgaXRlbV92YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBpdGVtX3ZhbHVlLnZhbHVlT2YoKSkgKXtcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGR0X3RhcmdldCAgID0gKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSArICgzICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoaXRlbV92YWx1ZSkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3Q6ICAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA+ICArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPCAgKyhkdF9jdXJyZW50KSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gISggKyhkdF90YXJnZXQpID49ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHRlOiAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA8PSArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmVxdWFsOiBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPT09ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA9PSArKGR0X2N1cnJlbnQpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdudW1iZXInICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyICl7XG5cbiAgICAgICAgICBcblxuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcbiAgICAgICAgICBpZiggdHlwZW9mICsoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiggZmlsdGVyX2l0ZW0uY29uZGl0aW9uICl7XG4gICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyX2l0ZW0uY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+ICArKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgICsoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3RlOiAgIGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCktMC4xID49ICsoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSswLjEgPD0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgaWYoIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdib29sZWFuJyAmJiBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgKGl0ZW1fdmFsdWUpLmxlbmd0aCA+IDAgKXsgIFxuICAgICAgICAgICAgbGV0IHF0ZF9pc190cnVlID0gMDsgICAgICAgICAgXG4gICAgICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICgoaXRlbV92YWx1ZSkubGVuZ3RoKTsgaSsrICl7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICBpZiggaXRlbSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApe1xuICAgICAgICAgICAgICAgIHF0ZF9pc190cnVlKys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCBxdGRfaXNfdHJ1ZSA9PT0gMCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICBcbiAgICAgIH1cblxuICAgIH0gLy8gZW5kIGZvclxuICAgIFxuICAgIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xuXG5cbiAgICBjb25zdCBzZWFyY2hfZGF0YSA9IFtdO1xuXG4gICAgbGV0IGlzX2ZpbHRlciA9IGZhbHNlO1xuICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKysgKXtcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAmJiB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAhPT0gJycgKXtcbiAgICAgICAgaXNfZmlsdGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggaXNfZmlsdGVyICl7XG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2ldICYmIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddICl7XG4gICAgICAgICAgKHNlYXJjaF9kYXRhKS5wdXNoKHRoaXMuZGF0YVtpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdWx0LmVtaXQoc2VhcmNoX2RhdGEpO1xuICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3VsdC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgfVxuXG4gIHNldERhdGFJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiApe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2luZGV4XSApe1xuICAgICAgdGhpcy5kYXRhW2luZGV4XVsndGNfZmlsdGVyX2FjY2VwdCddID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cImFyZWEtZmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX1cIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvblwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZSAjX2lucHV0IFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIG5hbWU9XCJpbnB1dF97e2krMX19XCIgKGV2ZW50Q2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dCwgJ3Rlc3RlJylcIiA+PC90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbGVhci1maWx0ZXItdGV4dFwiIFtjbGFzcy50by1oaWRlXT1cIiEoaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0udmFsdWUgIT09IG51bGwgJiYgaXRlbS52YWx1ZSAhPT0gJycpXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBpdGVtLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7IGl0ZW0udmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAhPT0gJ3NlbGVjdCcgJiYgaXRlbS50eXBlICE9PSAnZGF0ZXRpbWUtbG9jYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQudmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IChpdGVtLnBsYWNlaG9sZGVyICE9PSAnJykgPyBpdGVtLnBsYWNlaG9sZGVyIDogJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IChpdGVtLnR5cGUgPT09ICdudW1iZXInKSA/ICd0ZXh0JyA6IGl0ZW0udHlwZSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbGVhci1maWx0ZXItdGV4dFwiIFtjbGFzcy50by1oaWRlXT1cIl9pbnB1dC52YWx1ZSA9PT0gJydcIiAoY2xpY2spPVwic2VhcmNoSW4oaXRlbSwgbnVsbCk7IF9pbnB1dC52YWx1ZSA9ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnc2VsZWN0JyAmJiBpdGVtLmRhdGEgJiYgKGl0ZW0uZGF0YSkubGVuZ3RoID4gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIGl0ZW0uZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ2LnZhbHVlXCI+e3sgdi5kZXNjcmlwdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgIFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICYmIGl0ZW0udHlwZSA9PT0gJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvblwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LmNoZWNrZWQgPT09IHRydWVcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWlucHV0LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGMtZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5wbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IChpdGVtLnBsYWNlaG9sZGVyICE9PSAnJykgPyBpdGVtLnBsYWNlaG9sZGVyIDogJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQuY2hlY2tlZClcIj4gICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtYi0xIG1yLTFcIiAqbmdJZj1cInVzZUJ1dHRvblN1Ym1pdFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLWJ0biB7eyBidG5TdWJtaXRDbGFzcyB9fVwiIChjbGljayk9XCJ0b1N1Ym1pdCgpXCIgPnt7IHN1Ym1pdFRleHQgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxuICAgIDwhLS0gPHByZT4ge3sgZGF0YSB8IGpzb24gfX0gPC9wcmU+XG5cbjxwPkZJTFRFUlM8L3A+XG48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT4iXX0=
@@ -3179,13 +3179,35 @@ class TCloudUiFiltersComponent {
3179
3179
  this.first_active_filter = true;
3180
3180
  }
3181
3181
  }
3182
- console.log('this.filters', this.filters);
3183
- this.init();
3182
+ this.toSubmit();
3184
3183
  });
3185
3184
  }
3186
3185
  ngAfterViewInit() {
3187
3186
  // child is set
3188
3187
  }
3188
+ /*
3189
+ auto_filter(){
3190
+ setTimeout(() => {
3191
+ if( this.filters ){
3192
+ const filters = JSON.parse(JSON.stringify( this.filters ));
3193
+ for(let i = 0; i < (filters).length; i++){
3194
+ if( filters[i].value ){
3195
+ if( filters[i].type === 'datetime-local' ){
3196
+ try {
3197
+ filters[i].searchText = new Date( `${filters[i].value}` );
3198
+ } catch (error) {}
3199
+ }else{
3200
+ filters[i].searchText = filters[i].value;
3201
+ }
3202
+ this.first_active_filter = true;
3203
+ }
3204
+ }
3205
+ console.log('auto_filter onSubmit', filters);
3206
+ this.onSubmit.emit(filters);
3207
+ }
3208
+ });
3209
+ }
3210
+ */
3189
3211
  ngOnChanges(changes) {
3190
3212
  if (changes && changes['data']) {
3191
3213
  const data = changes['data'].currentValue;
@@ -3249,9 +3271,16 @@ class TCloudUiFiltersComponent {
3249
3271
  if ((!filter.searchText || filter.searchText && filter.searchText === '') && filter.type !== "boolean") {
3250
3272
  delete (filters[i]);
3251
3273
  }
3274
+ if (filter.type === "boolean") {
3275
+ if (!filter.searchText) {
3276
+ filter.searchText = false;
3277
+ }
3278
+ }
3252
3279
  });
3253
3280
  }
3254
- this.onSubmit.emit(JSON.parse(JSON.stringify(this.filters)));
3281
+ filters = filters.filter(Boolean);
3282
+ console.log('onSubmit', filters);
3283
+ this.onSubmit.emit(filters);
3255
3284
  }
3256
3285
  collectionFind(obj, path) {
3257
3286
  const pathArray = path.split(".");