simpo-component-library 3.7.5 → 3.7.6

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.
Files changed (29) hide show
  1. package/esm2022/lib/ecommerce/sections/categories-with-image-background-columns/categories-with-image-background-columns.component.mjs +5 -3
  2. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +5 -5
  3. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +5 -5
  4. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  5. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +19 -5
  6. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +268 -15
  7. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +2 -1
  8. package/esm2022/lib/ecommerce/styles/category.modal.mjs +2 -1
  9. package/esm2022/lib/ecommerce/styles/product.modal.mjs +11 -1
  10. package/esm2022/lib/elements/my-bookings/my-bookings.component.mjs +19 -2
  11. package/esm2022/lib/sections/footer/footer.component.mjs +10 -7
  12. package/esm2022/lib/sections/header-section/header-section.component.mjs +33 -7
  13. package/esm2022/lib/services/rest.service.mjs +37 -2
  14. package/esm2022/lib/utils/list-route.util.mjs +56 -0
  15. package/fesm2022/simpo-component-library.mjs +454 -45
  16. package/fesm2022/simpo-component-library.mjs.map +1 -1
  17. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +4 -0
  18. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +46 -1
  19. package/lib/ecommerce/styles/Collection.modal.d.ts +1 -0
  20. package/lib/ecommerce/styles/category.modal.d.ts +1 -0
  21. package/lib/ecommerce/styles/product.modal.d.ts +42 -0
  22. package/lib/elements/my-bookings/my-bookings.component.d.ts +8 -0
  23. package/lib/sections/footer/footer.component.d.ts +2 -2
  24. package/lib/sections/header-section/header-section.component.d.ts +3 -0
  25. package/lib/services/rest.service.d.ts +13 -2
  26. package/lib/utils/list-route.util.d.ts +21 -0
  27. package/package.json +1 -1
  28. package/simpo-component-library-3.7.6.tgz +0 -0
  29. package/simpo-component-library-3.7.5.tgz +0 -0
@@ -3,10 +3,11 @@ export class Collection extends BaseCollection {
3
3
  constructor(json) {
4
4
  super(json);
5
5
  this.itemIds = [];
6
+ this.slugName = json?.["slugName"];
6
7
  this.collectionId = json?.["collectionId"];
7
8
  this.collectionName = json?.["collectionName"];
8
9
  this.featuredCollection = json?.["featuredCategory"];
9
10
  this.itemIds = json?.["itemIds"];
10
11
  } // should be featuredCollection but need to changein BE
11
12
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvbi5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3N0eWxlcy9Db2xsZWN0aW9uLm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sVUFBVyxTQUFRLGNBQWM7SUFLMUMsWUFBWSxJQUEwQjtRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFGaEIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUdwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyx1REFBdUQ7Q0FDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29sbGVjdGlvbiB9IGZyb20gXCIuL0Jhc2VDb2xsZWN0aW9uLm1vZGFsXCI7XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uIGV4dGVuZHMgQmFzZUNvbGxlY3Rpb24ge1xuICAgIGNvbGxlY3Rpb25JZDogc3RyaW5nO1xuICAgIGNvbGxlY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgZmVhdHVyZWRDb2xsZWN0aW9uOiBib29sZWFuO1xuICAgIGl0ZW1JZHMgOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0cnVjdG9yKGpzb24/Ontba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gICAgICAgIHN1cGVyKGpzb24pO1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb25JZCA9IGpzb24/LltcImNvbGxlY3Rpb25JZFwiXTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uTmFtZSA9IGpzb24/LltcImNvbGxlY3Rpb25OYW1lXCJdO1xuICAgICAgICB0aGlzLmZlYXR1cmVkQ29sbGVjdGlvbiA9IGpzb24/LltcImZlYXR1cmVkQ2F0ZWdvcnlcIl07XG4gICAgICAgIHRoaXMuaXRlbUlkcyA9IGpzb24/LltcIml0ZW1JZHNcIl07XG4gICAgfSAvLyBzaG91bGQgYmUgZmVhdHVyZWRDb2xsZWN0aW9uIGJ1dCBuZWVkIHRvIGNoYW5nZWluIEJFXG59Il19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvbi5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3N0eWxlcy9Db2xsZWN0aW9uLm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxNQUFNLE9BQU8sVUFBVyxTQUFRLGNBQWM7SUFPMUMsWUFBWSxJQUEwQjtRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFKaEIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUtwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLHVEQUF1RDtDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2xsZWN0aW9uIH0gZnJvbSBcIi4vQmFzZUNvbGxlY3Rpb24ubW9kYWxcIjtcblxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb24gZXh0ZW5kcyBCYXNlQ29sbGVjdGlvbiB7XG4gICAgY29sbGVjdGlvbklkOiBzdHJpbmc7XG4gICAgY29sbGVjdGlvbk5hbWU6IHN0cmluZztcbiAgICBmZWF0dXJlZENvbGxlY3Rpb246IGJvb2xlYW47XG4gICAgaXRlbUlkcyA6IHN0cmluZ1tdID0gW107XG4gICAgLy8gVVJMLXNhZmUgbmFtZSBzZXQgYnkgdGhlIGJhY2tlbmQgKGBTdW1tZXIgV2VhcmAgLT4gYHN1bW1lci13ZWFyYCkuXG4gICAgc2x1Z05hbWU6IHN0cmluZztcbiAgICBjb25zdHJ1Y3Rvcihqc29uPzp7W2tleTogc3RyaW5nXTogYW55fSkge1xuICAgICAgICBzdXBlcihqc29uKTtcbiAgICAgICAgdGhpcy5zbHVnTmFtZSA9IGpzb24/LltcInNsdWdOYW1lXCJdO1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb25JZCA9IGpzb24/LltcImNvbGxlY3Rpb25JZFwiXTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uTmFtZSA9IGpzb24/LltcImNvbGxlY3Rpb25OYW1lXCJdO1xuICAgICAgICB0aGlzLmZlYXR1cmVkQ29sbGVjdGlvbiA9IGpzb24/LltcImZlYXR1cmVkQ2F0ZWdvcnlcIl07XG4gICAgICAgIHRoaXMuaXRlbUlkcyA9IGpzb24/LltcIml0ZW1JZHNcIl07XG4gICAgfSAvLyBzaG91bGQgYmUgZmVhdHVyZWRDb2xsZWN0aW9uIGJ1dCBuZWVkIHRvIGNoYW5nZWluIEJFXG59Il19
@@ -2,6 +2,7 @@ import { BaseCollection } from "./BaseCollection.modal";
2
2
  export class Category extends BaseCollection {
3
3
  constructor(json) {
4
4
  super(json);
5
+ this.slugName = json?.["slugName"];
5
6
  this.categoryId = json?.["categoryId"];
6
7
  this.categoryName = json?.["categoryName"];
7
8
  this.featuredCategory = json?.["featuredCategory"];
@@ -13,4 +14,4 @@ export class Category extends BaseCollection {
13
14
  // createdTimeStamp: string
14
15
  // updatedTimeStamp: string
15
16
  // }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zdHlsZXMvY2F0ZWdvcnkubW9kYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRXZELE1BQU0sT0FBTyxRQUFTLFNBQVEsY0FBYztJQUsxQyxZQUFZLElBQTBCO1FBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFFRCxvQ0FBb0M7QUFDcEMsd0JBQXdCO0FBQ3hCLDBCQUEwQjtBQUMxQiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29sbGVjdGlvbiB9IGZyb20gXCIuL0Jhc2VDb2xsZWN0aW9uLm1vZGFsXCJcblxuZXhwb3J0IGNsYXNzIENhdGVnb3J5IGV4dGVuZHMgQmFzZUNvbGxlY3Rpb24ge1xuICBjYXRlZ29yeUlkOiBzdHJpbmc7XG4gIGNhdGVnb3J5TmFtZTogc3RyaW5nO1xuICBmZWF0dXJlZENhdGVnb3J5OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGpzb24/Ontba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gICAgc3VwZXIoanNvbik7XG4gICAgdGhpcy5jYXRlZ29yeUlkID0ganNvbj8uW1wiY2F0ZWdvcnlJZFwiXTtcbiAgICB0aGlzLmNhdGVnb3J5TmFtZSA9IGpzb24/LltcImNhdGVnb3J5TmFtZVwiXTtcbiAgICB0aGlzLmZlYXR1cmVkQ2F0ZWdvcnkgPSBqc29uPy5bXCJmZWF0dXJlZENhdGVnb3J5XCJdO1xuICB9XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZERldGFpbHMge1xuLy8gICBjcmVhdGVkQnlJZDogc3RyaW5nXG4vLyAgIGNyZWF0ZWRCeU5hbWU6IHN0cmluZ1xuLy8gICBjcmVhdGVkVGltZVN0YW1wOiBzdHJpbmdcbi8vICAgdXBkYXRlZFRpbWVTdGFtcDogc3RyaW5nXG4vLyB9XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zdHlsZXMvY2F0ZWdvcnkubW9kYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRXZELE1BQU0sT0FBTyxRQUFTLFNBQVEsY0FBYztJQU8xQyxZQUFZLElBQTBCO1FBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQUVELG9DQUFvQztBQUNwQyx3QkFBd0I7QUFDeEIsMEJBQTBCO0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2xsZWN0aW9uIH0gZnJvbSBcIi4vQmFzZUNvbGxlY3Rpb24ubW9kYWxcIlxuXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnkgZXh0ZW5kcyBCYXNlQ29sbGVjdGlvbiB7XG4gIGNhdGVnb3J5SWQ6IHN0cmluZztcbiAgY2F0ZWdvcnlOYW1lOiBzdHJpbmc7XG4gIGZlYXR1cmVkQ2F0ZWdvcnk6IGJvb2xlYW47XG4gIC8vIFVSTC1zYWZlIG5hbWUgc2V0IGJ5IHRoZSBiYWNrZW5kIChgTWVucyBXZWFyYCAtPiBgbWVucy13ZWFyYCkuIE5vdCB0aGUgcHJvZHVjdCBgc2x1Z2lmaWVkTmFtZWAuXG4gIHNsdWdOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoanNvbj86e1trZXk6IHN0cmluZ106IGFueX0pIHtcbiAgICBzdXBlcihqc29uKTtcbiAgICB0aGlzLnNsdWdOYW1lID0ganNvbj8uW1wic2x1Z05hbWVcIl07XG4gICAgdGhpcy5jYXRlZ29yeUlkID0ganNvbj8uW1wiY2F0ZWdvcnlJZFwiXTtcbiAgICB0aGlzLmNhdGVnb3J5TmFtZSA9IGpzb24/LltcImNhdGVnb3J5TmFtZVwiXTtcbiAgICB0aGlzLmZlYXR1cmVkQ2F0ZWdvcnkgPSBqc29uPy5bXCJmZWF0dXJlZENhdGVnb3J5XCJdO1xuICB9XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZERldGFpbHMge1xuLy8gICBjcmVhdGVkQnlJZDogc3RyaW5nXG4vLyAgIGNyZWF0ZWRCeU5hbWU6IHN0cmluZ1xuLy8gICBjcmVhdGVkVGltZVN0YW1wOiBzdHJpbmdcbi8vICAgdXBkYXRlZFRpbWVTdGFtcDogc3RyaW5nXG4vLyB9XG4iXX0=
@@ -33,12 +33,22 @@ export class Product {
33
33
  this.quantity = json?.["quantity"] ?? 0;
34
34
  this.whislist = false;
35
35
  this.itemVariant = json?.["itemVariant"] ?? [];
36
+ // Variants saved with `options: [{name, value}]` expose them to the variant picker through
37
+ // `properties`. Existing `properties` keys win; variants without `options` are untouched.
38
+ this.itemVariant.forEach((variant) => {
39
+ variant.properties = variant.properties ?? {};
40
+ variant.options?.forEach((option) => {
41
+ if (option?.name && !(option.name in variant.properties))
42
+ variant.properties[option.name] = option.value;
43
+ });
44
+ });
36
45
  this.makingChargePercentage = json?.["makingChargePercentage"] ?? 0;
37
46
  this.jewelleryPrice = json?.["jewelleryPrice"] ?? 0;
38
47
  this.materials = json?.["materials"];
39
48
  this.baseWeight = json?.["baseWeight"] ?? 0;
40
49
  this.jewelryPriceBreakup = json?.["jewelryPriceBreakup"] ?? {};
41
50
  this.configs = json?.["configs"] ?? {};
51
+ this.customFieldValues = json?.["customFieldValues"] ?? {};
42
52
  this.totalReviewCount = json?.["totalReviewCount"] ?? 0;
43
53
  this.averageRating = json?.["averageRating"] ?? 0;
44
54
  if (this.itemVariant?.length > 0) {
@@ -67,4 +77,4 @@ export class checkItemAlreadyAdded {
67
77
  this.businessId = localStorage.getItem('bId') ?? '';
68
78
  }
69
79
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3N0eWxlcy9wcm9kdWN0Lm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxPQUFPO0lBcURsQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBRTNCLFlBQVksSUFBNkI7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUF1QixDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFrQixDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUMsWUFB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QUFnQixDQUFDO1lBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXNNRCxNQUFNLE9BQU8seUJBQXlCO0lBT3BDLFlBQVksTUFBYyxFQUFFLFFBQTRDLEVBQUUsU0FBZ0I7UUFDeEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUN2QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQVksTUFBYyxFQUFFLFNBQWlCLEVBQUUsTUFBYyxFQUFFLFFBQTRDO1FBQ3pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFByb2R1Y3Qge1xuICBpdGVtSWQ6IHN0cmluZ1xuICB2YXJpZW50SWQ6IHN0cmluZ1xuICBidXNpbmVzc0lkOiBzdHJpbmdcbiAgc3RvcmVJZDogc3RyaW5nW11cbiAgbmFtZTogc3RyaW5nXG4gIHNsdWdpZmllZE5hbWU6IHN0cmluZ1xuICBpdGVtQ2F0ZWdvcmlzYXRpb246IEl0ZW1DYXRlZ29yaXNhdGlvblxuICBpdGVtSW52ZW50b3J5OiBJdGVtSW52ZW50b3J5XG4gIGl0ZW1TdGF0dXM6IHN0cmluZ1xuICBpdGVtVHlwZTogc3RyaW5nXG4gIGl0ZW1WYXJpYW50OiBJdGVtVmFyaWFudFtdXG4gIGl0ZW1JbWFnZXM6IEl0ZW1JbWFnZVtdXG4gIGl0ZW1QYWNrczogSXRlbVBhY2syW11cbiAgYWRkT25Ub0l0ZW06IEFkZE9uVG9JdGVtW11cbiAgcHJvcGVydGllczogYW55O1xuICB1bml0OiBVbml0O1xuICBxdWFudGl0eTogbnVtYmVyO1xuICBwcmljZTogUHJpY2U7XG4gIHBydmlld0lkeDogbnVtYmVyO1xuICB3aGlzbGlzdDogYm9vbGVhbjtcbiAgbWF0ZXJpYWxzOiBhbnk7XG4gIG1ha2luZ0NoYXJnZVBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgamV3ZWxsZXJ5UHJpY2U6IG51bWJlclxuICBiYXNlV2VpZ2h0OiBudW1iZXJcbiAgdG90YWxSZXZpZXdDb3VudDogbnVtYmVyO1xuICBhdmVyYWdlUmF0aW5nOiBudW1iZXI7XG4gIHByb2R1Y3RJZD86IHN0cmluZztcblxuICAvLyBjcmVhdGVkRGV0YWlsczogQ3JlYXRlZERldGFpbHMyXG4gIC8vIGF2YWlsYWJsZU9ubGluZTogYm9vbGVhblxuICBjYXRlZ29yeUlkOiBzdHJpbmdcbiAgLy8gZnVsZmlsbG1lbnRJZDogc3RyaW5nXG4gIC8vIGxvY2F0aW9uSWQ6IHN0cmluZ1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yXG4gIHJhdGluZzogbnVtYmVyO1xuICByZXZpZXdDb3VudDogbnVtYmVyO1xuICAvLyByZXR1cm5XaW5kb3c6IG51bWJlclxuICAvLyB0aW1lVG9TaGlwOiBudW1iZXJcbiAgLy8gcmF0ZWFibGU6IGJvb2xlYW5cbiAgLy8gbWF0Y2hlZDogYm9vbGVhblxuICAvLyByZWxhdGVkOiBib29sZWFuXG4gIHJlY29tbWVuZGVkOiBib29sZWFuXG4gIHJldHVybmFibGU6IGJvb2xlYW5cbiAgLy8gYWN0aXZlOiBib29sZWFuXG4gIC8vIGNhbmNlbGxhYmxlOiBib29sZWFuXG4gIC8vIHNlbGxlclJldHVyblBpY2tVcDogYm9vbGVhblxuICBhdmFpbGFibGVPbkNvZDogYm9vbGVhblxuICBicmllZjogc3RyaW5nXG4gIGl0ZW1Db2RlOiBzdHJpbmdcbiAgdGFnczogc3RyaW5nW11cbiAgamV3ZWxyeVByaWNlQnJlYWt1cDogYW55XG4gIGNvbmZpZ3M6IGFueTtcbiAgLy8gY3JlYXRlZFRpbWVTdGFtcDogc3RyaW5nXG4gIC8vIHVwZGF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGpzb24/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5pdGVtSWQgPSBqc29uPy5bXCJpdGVtSWRcIl07XG4gICAgdGhpcy5zdG9yZUlkID0ganNvbj8uW1wic3RvcmVJZFwiXTtcbiAgICB0aGlzLnZhcmllbnRJZCA9IGpzb24/LltcIml0ZW1JZFwiXTtcbiAgICB0aGlzLmJ1c2luZXNzSWQgPSBqc29uPy5bXCJidXNpbmVzc0lkXCJdO1xuICAgIHRoaXMubmFtZSA9IGpzb24/LltcIm5hbWVcIl07XG4gICAgdGhpcy5zbHVnaWZpZWROYW1lID0ganNvbj8uW1wic2x1Z2lmaWVkTmFtZVwiXTtcbiAgICB0aGlzLml0ZW1DYXRlZ29yaXNhdGlvbiA9IGpzb24/LltcIml0ZW1DYXRlZ29yaXNhdGlvblwiXSBhcyBJdGVtQ2F0ZWdvcmlzYXRpb247XG4gICAgdGhpcy5pdGVtSW52ZW50b3J5ID0ganNvbj8uW1wiaXRlbUludmVudG9yeVwiXSBhcyBJdGVtSW52ZW50b3J5O1xuICAgIHRoaXMuaXRlbVN0YXR1cyA9IGpzb24/LltcIml0ZW1TdGF0dXNcIl07XG4gICAgdGhpcy5pdGVtVHlwZSA9IGpzb24/LltcIml0ZW1UeXBlXCJdO1xuICAgIHRoaXMuaXRlbVZhcmlhbnQgPSBqc29uPy5bXCJpdGVtVmFyaWFudFwiXTtcbiAgICB0aGlzLml0ZW1JbWFnZXMgPSBqc29uPy5bXCJpdGVtSW1hZ2VzXCJdO1xuICAgIHRoaXMuaXRlbVBhY2tzID0ganNvbj8uW1wiaXRlbVBhY2tzXCJdO1xuICAgIHRoaXMuYWRkT25Ub0l0ZW0gPSBqc29uPy5bXCJhZGRPblRvSXRlbVwiXTtcbiAgICB0aGlzLnNsdWdpZmllZE5hbWUgPSBqc29uPy5bXCJzbHVnaWZpZWROYW1lXCJdO1xuICAgIHRoaXMudW5pdCA9IGpzb24/LltcInVuaXRcIl07XG4gICAgdGhpcy5wcmljZSA9IGpzb24/LltcInByaWNlXCJdO1xuICAgIHRoaXMuY2F0ZWdvcnlJZCA9IGpzb24/LltcImNhdGVnb3J5SWRcIl07XG4gICAgdGhpcy5kZXNjcmlwdG9yID0ganNvbj8uW1wiZGVzY3JpcHRvclwiXTtcbiAgICB0aGlzLnJhdGluZyA9IGpzb24/LltcInJhdGluZ1wiXTtcbiAgICB0aGlzLnJldmlld0NvdW50ID0ganNvbj8uW1wicmV2aWV3Q291bnRcIl07XG4gICAgdGhpcy5icmllZiA9IGpzb24/LltcImJyaWVmXCJdO1xuICAgIHRoaXMuaXRlbUNvZGUgPSBqc29uPy5bXCJpdGVtQ29kZVwiXTtcbiAgICB0aGlzLnRhZ3MgPSBqc29uPy5bXCJ0YWdzXCJdID8/IFtdO1xuICAgIHRoaXMucmVjb21tZW5kZWQgPSBqc29uPy5bXCJyZWNvbW1lbmRlZFwiXTtcbiAgICB0aGlzLnJldHVybmFibGUgPSBqc29uPy5bXCJyZXR1cm5hYmxlXCJdO1xuICAgIHRoaXMuYXZhaWxhYmxlT25Db2QgPSBqc29uPy5bXCJhdmFpbGFibGVPbkNvZFwiXTtcbiAgICB0aGlzLnBydmlld0lkeCA9IDA7XG4gICAgdGhpcy5xdWFudGl0eSA9IGpzb24/LltcInF1YW50aXR5XCJdID8/IDA7XG4gICAgdGhpcy53aGlzbGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuaXRlbVZhcmlhbnQgPSBqc29uPy5bXCJpdGVtVmFyaWFudFwiXSA/PyBbXTtcbiAgICB0aGlzLm1ha2luZ0NoYXJnZVBlcmNlbnRhZ2UgPSBqc29uPy5bXCJtYWtpbmdDaGFyZ2VQZXJjZW50YWdlXCJdID8/IDBcbiAgICB0aGlzLmpld2VsbGVyeVByaWNlID0ganNvbj8uW1wiamV3ZWxsZXJ5UHJpY2VcIl0gPz8gMFxuICAgIHRoaXMubWF0ZXJpYWxzID0ganNvbj8uW1wibWF0ZXJpYWxzXCJdXG4gICAgdGhpcy5iYXNlV2VpZ2h0ID0ganNvbj8uW1wiYmFzZVdlaWdodFwiXSA/PyAwXG4gICAgdGhpcy5qZXdlbHJ5UHJpY2VCcmVha3VwID0ganNvbj8uW1wiamV3ZWxyeVByaWNlQnJlYWt1cFwiXSA/PyB7fVxuICAgIHRoaXMuY29uZmlncyA9IGpzb24/LltcImNvbmZpZ3NcIl0gPz8ge31cbiAgICB0aGlzLnRvdGFsUmV2aWV3Q291bnQgPSBqc29uPy5bXCJ0b3RhbFJldmlld0NvdW50XCJdID8/IDA7XG4gICAgdGhpcy5hdmVyYWdlUmF0aW5nID0ganNvbj8uW1wiYXZlcmFnZVJhdGluZ1wiXSA/PyAwO1xuICAgIGlmICh0aGlzLml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLml0ZW1WYXJpYW50Py5bMF0/LnZhcmlhbnRJbWFnZXM7XG4gICAgICB0aGlzLnByaWNlID0gdGhpcy5pdGVtVmFyaWFudD8uWzBdPy5pdGVtVmFyaWFudFByaWNlO1xuICAgICAgdGhpcy52YXJpZW50SWQgPSB0aGlzLml0ZW1WYXJpYW50Py5bMF0/LnZhcmlhbnRJZDtcbiAgICAgIHRoaXMuaXRlbUludmVudG9yeSA9IHRoaXMuaXRlbVZhcmlhbnQ/LlswXT8uaXRlbUludmVudG9yeTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ2F0ZWdvcmlzYXRpb24ge1xuICBpdGVtQ2F0ZWdvcmllczogSXRlbUNhdGVnb3J5W11cbiAgcHJvZHVjdFRhZ3M6IFByb2R1Y3RUYWdbXVxuICBpdGVtQ29sbGVjdGlvbjogSXRlbUNvbGxlY3Rpb25bXVxuICBpdGVtQnJhbmQ/OiBJdGVtQnJhbmRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ2F0ZWdvcnkge1xuICByZWZJZDogc3RyaW5nXG4gIHJlZk5hbWU6IHN0cmluZ1xuICBpbWdVcmw6IHN0cmluZ1xuICBtYXhRdWFudGl0eTogbnVtYmVyXG4gIHByaWNlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQnJhbmQge1xuICByZWZJZDogc3RyaW5nXG4gIHJlZk5hbWU6IHN0cmluZ1xuICBpbWdVcmw6IHN0cmluZ1xuICBtYXhRdWFudGl0eTogbnVtYmVyXG4gIHByaWNlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0VGFnIHtcbiAgdGFnSWQ6IHN0cmluZ1xuICBidXNpbmVzc0lkOiBzdHJpbmdcbiAgc3RvcmVJZDogc3RyaW5nW11cbiAgY29sbGVjdGlvbklkOiBzdHJpbmdcbiAgc3ViQ2F0ZWdvcnlJZDogc3RyaW5nXG4gIGNhdGVnb3J5SWQ6IHN0cmluZ1xuICBpdGVtSWQ6IHN0cmluZ1xuICB0YWdOYW1lOiBzdHJpbmdcbiAgYWN0aXZlOiBib29sZWFuXG4gIG90aGVyRGV0YWlsczogYW55O1xuICBjcmVhdGVkRGV0YWlsczogQ3JlYXRlZERldGFpbHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVkRGV0YWlscyB7XG4gIGNyZWF0ZWRCeUlkOiBzdHJpbmdcbiAgY3JlYXRlZEJ5TmFtZTogc3RyaW5nXG4gIGNyZWF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xuICB1cGRhdGVkVGltZVN0YW1wOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ29sbGVjdGlvbiB7XG4gIHJlZklkOiBzdHJpbmdcbiAgcmVmTmFtZTogc3RyaW5nXG4gIGltZ1VybDogc3RyaW5nXG4gIG1heFF1YW50aXR5OiBudW1iZXJcbiAgcHJpY2U6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1JbnZlbnRvcnkge1xuICBvcGVuaW5nU3RvY2s6IG51bWJlclxuICBza3U6IHN0cmluZ1xuICBiYXJjb2RlOiBzdHJpbmdcbiAgcHJlc2VudFN0b2NrRGF0ZTogc3RyaW5nXG4gIGxvd1N0b2NrQWxlcnQ6IGJvb2xlYW5cbiAgbG93U3RvY2tRdWFudGl0eTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVZhcmlhbnQge1xuICB2YXJpYW50SWQ6IHN0cmluZ1xuICBpdGVtSWQ6IHN0cmluZ1xuICBxdWFudGl0eTogbnVtYmVyXG4gIHdpc2hsaXN0OiBib29sZWFuXG4gIHZhcmlhbnROYW1lOiBzdHJpbmdcbiAgdmFyaWFudEltYWdlczogSXRlbUltYWdlW11cbiAgaXRlbVBhY2tzOiBJdGVtUGFja1tdXG4gIHByb3BlcnRpZXM6IGFueTtcbiAgaXRlbVZhcmlhbnRQcmljZTogSXRlbVZhcmlhbnRQcmljZVxuICBpdGVtSW52ZW50b3J5OiBJdGVtSW52ZW50b3J5MlxuICBpdGVtU3RhdHVzOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtUGFjayB7XG4gIGl0ZW1QYWNrSWQ6IHN0cmluZ1xuICBwYWNrTmFtZTogc3RyaW5nXG4gIGFjdGl2ZTogYm9vbGVhblxuICBhY3R1YWxQcmljZTogbnVtYmVyXG4gIG9mZmVyZWRQcmljZTogbnVtYmVyXG4gIHBhY2tRdWFudGl0eTogbnVtYmVyXG4gIG1heE9yZGVyUXVhbnRpdHk6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1WYXJpYW50UHJpY2Uge1xuICBjdXJyZW5jeTogc3RyaW5nXG4gIHZhbHVlOiBudW1iZXJcbiAgZXN0aW1hdGVkVmFsdWU6IG51bWJlclxuICBjb21wdXRlZFZhbHVlOiBudW1iZXJcbiAgbGlzdGVkVmFsdWU6IG51bWJlclxuICBvZmZlcmVkVmFsdWU6IG51bWJlclxuICBtaW5pbXVtVmFsdWU6IG51bWJlclxuICBtYXhpbXVtVmFsdWU6IG51bWJlclxuICBwdXJjaGFzZVByaWNlOiBudW1iZXJcbiAgd2hvbGVTYWxlUHJpY2U6IG51bWJlclxuICBtYXhXaG9sZVNhbGVMaW1pdDogbnVtYmVyXG4gIG1hcmdpbjogbnVtYmVyXG4gIHByb2ZpdDogbnVtYmVyXG4gIGRpc2NvdW50ZWRQcmljZTogbnVtYmVyXG4gIHRheFJlZjogVGF4UmVmXG4gIHRheEFtb3VudDogbnVtYmVyXG4gIHNlbGxpbmdQcmljZTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGF4UmVmIHtcbiAgdGF4SWQ6IHN0cmluZ1xuICB0YXhQZXJjZW50OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtSW52ZW50b3J5MiB7XG4gIG9wZW5pbmdTdG9jazogbnVtYmVyXG4gIHNrdTogc3RyaW5nXG4gIGJhcmNvZGU6IHN0cmluZ1xuICBwcmVzZW50U3RvY2tEYXRlOiBzdHJpbmdcbiAgbG93U3RvY2tBbGVydDogYm9vbGVhblxuICBsb3dTdG9ja1F1YW50aXR5OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtSW1hZ2Uge1xuICBpbWdVcmw6IHN0cmluZztcbiAgYmx1cmhhc2g6IHN0cmluZztcbiAgaW1nRGVzYzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1QYWNrMiB7XG4gIGl0ZW1QYWNrSWQ6IHN0cmluZ1xuICBwYWNrTmFtZTogc3RyaW5nXG4gIGFjdGl2ZTogYm9vbGVhblxuICBhY3R1YWxQcmljZTogbnVtYmVyXG4gIG9mZmVyZWRQcmljZTogbnVtYmVyXG4gIHBhY2tRdWFudGl0eTogbnVtYmVyXG4gIG1heE9yZGVyUXVhbnRpdHk6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE9uVG9JdGVtIHtcbiAgcmVmSWQ6IHN0cmluZ1xuICByZWZOYW1lOiBzdHJpbmdcbiAgaW1nVXJsOiBzdHJpbmdcbiAgbWF4UXVhbnRpdHk6IG51bWJlclxuICBwcmljZTogbnVtYmVyXG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBVbml0IHtcbiAgaWQ6IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2Uge1xuICBjdXJyZW5jeTogc3RyaW5nXG4gIHZhbHVlOiBudW1iZXJcbiAgZXN0aW1hdGVkVmFsdWU6IG51bWJlclxuICBjb21wdXRlZFZhbHVlOiBudW1iZXJcbiAgbGlzdGVkVmFsdWU6IG51bWJlclxuICBvZmZlcmVkVmFsdWU6IG51bWJlclxuICBtaW5pbXVtVmFsdWU6IG51bWJlclxuICBtYXhpbXVtVmFsdWU6IG51bWJlclxuICBwdXJjaGFzZVByaWNlOiBudW1iZXJcbiAgd2hvbGVTYWxlUHJpY2U6IG51bWJlclxuICBtYXhXaG9sZVNhbGVMaW1pdDogbnVtYmVyXG4gIG1hcmdpbjogbnVtYmVyXG4gIHByb2ZpdDogbnVtYmVyXG4gIGRpc2NvdW50ZWRQcmljZTogbnVtYmVyXG4gIHRheFJlZjogVGF4UmVmMlxuICB0YXhBbW91bnQ6IG51bWJlclxuICBzZWxsaW5nUHJpY2U6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRheFJlZjIge1xuICB0YXhJZDogc3RyaW5nXG4gIHRheFBlcmNlbnQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZWREZXRhaWxzMiB7XG4gIGNyZWF0ZWRCeUlkOiBzdHJpbmdcbiAgY3JlYXRlZEJ5TmFtZTogc3RyaW5nXG4gIGNyZWF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xuICB1cGRhdGVkVGltZVN0YW1wOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yIHtcbiAgbmFtZTogc3RyaW5nXG4gIGNvZGU6IHN0cmluZ1xuICBzeW1ib2w6IHN0cmluZ1xuICBzaG9ydERlc2M6IHN0cmluZ1xuICBsb25nRGVzYzogc3RyaW5nXG4gIGl0ZW1JbWFnZXM6IEl0ZW1JbWFnZTJbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1JbWFnZTIge1xuICBpbWdVcmw6IHN0cmluZ1xuICBpbWdEZXNjOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIHN5bmNJdGVtVG9TZXJ2ZXJEQlJlcXVlc3Qge1xuICBidXNpbmVzc0lkOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGNhcnRUeXBlOiAnQ0FSVCcgfCAnV0lTSExJU0gnIHwgJ1RSSUFMX0NBUlQnXG4gIGNhcnRJdGVtczogYW55W11cbiAgcGxhdGZvcm06IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNIJyB8ICdUUklBTF9DQVJUJywgY2FydEl0ZW1zOiBhbnlbXSkge1xuICAgIHRoaXMuYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiSWQnKSA/PyAnJ1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkXG4gICAgdGhpcy5jYXJ0VHlwZSA9IGNhcnRUeXBlXG4gICAgdGhpcy5jYXJ0SXRlbXMgPSBjYXJ0SXRlbXNcbiAgICB0aGlzLnBsYXRmb3JtID0gJ1dFQidcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgY2hlY2tJdGVtQWxyZWFkeUFkZGVkIHtcbiAgaXRlbUlkOiBzdHJpbmdcbiAgdmFyaWFudElkOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgYnVzaW5lc3NJZDogc3RyaW5nXG4gIGNhcnRUeXBlOiAnQ0FSVCcgfCAnV0lTSExJU0gnIHwgJ1RSSUFMX0NBUlQnXG5cbiAgY29uc3RydWN0b3IoaXRlbUlkOiBzdHJpbmcsIHZhcmlhbnRJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgY2FydFR5cGU6ICdDQVJUJyB8ICdXSVNITElTSCcgfCAnVFJJQUxfQ0FSVCcpIHtcbiAgICB0aGlzLml0ZW1JZCA9IGl0ZW1JZFxuICAgIHRoaXMudmFyaWFudElkID0gdmFyaWFudElkXG4gICAgdGhpcy51c2VySWQgPSB1c2VySWRcbiAgICB0aGlzLmNhcnRUeXBlID0gY2FydFR5cGVcbiAgICB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgPz8gJydcbiAgfVxufVxuXG5cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3N0eWxlcy9wcm9kdWN0Lm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxPQUFPO0lBc0RsQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBRTNCLFlBQVksSUFBNkI7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUF1QixDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFrQixDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUMsWUFB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QUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtJQU9oQyxZQUFZLE1BQWMsRUFBRSxTQUFpQixFQUFFLE1BQWMsRUFBRSxRQUE0QztRQUN6RyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBQcm9kdWN0IHtcbiAgaXRlbUlkOiBzdHJpbmdcbiAgdmFyaWVudElkOiBzdHJpbmdcbiAgYnVzaW5lc3NJZDogc3RyaW5nXG4gIHN0b3JlSWQ6IHN0cmluZ1tdXG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnaWZpZWROYW1lOiBzdHJpbmdcbiAgaXRlbUNhdGVnb3Jpc2F0aW9uOiBJdGVtQ2F0ZWdvcmlzYXRpb25cbiAgaXRlbUludmVudG9yeTogSXRlbUludmVudG9yeVxuICBpdGVtU3RhdHVzOiBzdHJpbmdcbiAgaXRlbVR5cGU6IHN0cmluZ1xuICBpdGVtVmFyaWFudDogSXRlbVZhcmlhbnRbXVxuICBpdGVtSW1hZ2VzOiBJdGVtSW1hZ2VbXVxuICBpdGVtUGFja3M6IEl0ZW1QYWNrMltdXG4gIGFkZE9uVG9JdGVtOiBBZGRPblRvSXRlbVtdXG4gIHByb3BlcnRpZXM6IGFueTtcbiAgdW5pdDogVW5pdDtcbiAgcXVhbnRpdHk6IG51bWJlcjtcbiAgcHJpY2U6IFByaWNlO1xuICBwcnZpZXdJZHg6IG51bWJlcjtcbiAgd2hpc2xpc3Q6IGJvb2xlYW47XG4gIG1hdGVyaWFsczogYW55O1xuICBtYWtpbmdDaGFyZ2VQZXJjZW50YWdlOiBudW1iZXI7XG4gIGpld2VsbGVyeVByaWNlOiBudW1iZXJcbiAgYmFzZVdlaWdodDogbnVtYmVyXG4gIHRvdGFsUmV2aWV3Q291bnQ6IG51bWJlcjtcbiAgYXZlcmFnZVJhdGluZzogbnVtYmVyO1xuICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG5cbiAgLy8gY3JlYXRlZERldGFpbHM6IENyZWF0ZWREZXRhaWxzMlxuICAvLyBhdmFpbGFibGVPbmxpbmU6IGJvb2xlYW5cbiAgY2F0ZWdvcnlJZDogc3RyaW5nXG4gIC8vIGZ1bGZpbGxtZW50SWQ6IHN0cmluZ1xuICAvLyBsb2NhdGlvbklkOiBzdHJpbmdcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvclxuICByYXRpbmc6IG51bWJlcjtcbiAgcmV2aWV3Q291bnQ6IG51bWJlcjtcbiAgLy8gcmV0dXJuV2luZG93OiBudW1iZXJcbiAgLy8gdGltZVRvU2hpcDogbnVtYmVyXG4gIC8vIHJhdGVhYmxlOiBib29sZWFuXG4gIC8vIG1hdGNoZWQ6IGJvb2xlYW5cbiAgLy8gcmVsYXRlZDogYm9vbGVhblxuICByZWNvbW1lbmRlZDogYm9vbGVhblxuICByZXR1cm5hYmxlOiBib29sZWFuXG4gIC8vIGFjdGl2ZTogYm9vbGVhblxuICAvLyBjYW5jZWxsYWJsZTogYm9vbGVhblxuICAvLyBzZWxsZXJSZXR1cm5QaWNrVXA6IGJvb2xlYW5cbiAgYXZhaWxhYmxlT25Db2Q6IGJvb2xlYW5cbiAgYnJpZWY6IHN0cmluZ1xuICBpdGVtQ29kZTogc3RyaW5nXG4gIHRhZ3M6IHN0cmluZ1tdXG4gIGpld2VscnlQcmljZUJyZWFrdXA6IGFueVxuICBjb25maWdzOiBhbnk7XG4gIGN1c3RvbUZpZWxkVmFsdWVzOiB7IFtpZGVudGlmaWVyOiBzdHJpbmddOiBhbnkgfTtcbiAgLy8gY3JlYXRlZFRpbWVTdGFtcDogc3RyaW5nXG4gIC8vIHVwZGF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGpzb24/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5pdGVtSWQgPSBqc29uPy5bXCJpdGVtSWRcIl07XG4gICAgdGhpcy5zdG9yZUlkID0ganNvbj8uW1wic3RvcmVJZFwiXTtcbiAgICB0aGlzLnZhcmllbnRJZCA9IGpzb24/LltcIml0ZW1JZFwiXTtcbiAgICB0aGlzLmJ1c2luZXNzSWQgPSBqc29uPy5bXCJidXNpbmVzc0lkXCJdO1xuICAgIHRoaXMubmFtZSA9IGpzb24/LltcIm5hbWVcIl07XG4gICAgdGhpcy5zbHVnaWZpZWROYW1lID0ganNvbj8uW1wic2x1Z2lmaWVkTmFtZVwiXTtcbiAgICB0aGlzLml0ZW1DYXRlZ29yaXNhdGlvbiA9IGpzb24/LltcIml0ZW1DYXRlZ29yaXNhdGlvblwiXSBhcyBJdGVtQ2F0ZWdvcmlzYXRpb247XG4gICAgdGhpcy5pdGVtSW52ZW50b3J5ID0ganNvbj8uW1wiaXRlbUludmVudG9yeVwiXSBhcyBJdGVtSW52ZW50b3J5O1xuICAgIHRoaXMuaXRlbVN0YXR1cyA9IGpzb24/LltcIml0ZW1TdGF0dXNcIl07XG4gICAgdGhpcy5pdGVtVHlwZSA9IGpzb24/LltcIml0ZW1UeXBlXCJdO1xuICAgIHRoaXMuaXRlbVZhcmlhbnQgPSBqc29uPy5bXCJpdGVtVmFyaWFudFwiXTtcbiAgICB0aGlzLml0ZW1JbWFnZXMgPSBqc29uPy5bXCJpdGVtSW1hZ2VzXCJdO1xuICAgIHRoaXMuaXRlbVBhY2tzID0ganNvbj8uW1wiaXRlbVBhY2tzXCJdO1xuICAgIHRoaXMuYWRkT25Ub0l0ZW0gPSBqc29uPy5bXCJhZGRPblRvSXRlbVwiXTtcbiAgICB0aGlzLnNsdWdpZmllZE5hbWUgPSBqc29uPy5bXCJzbHVnaWZpZWROYW1lXCJdO1xuICAgIHRoaXMudW5pdCA9IGpzb24/LltcInVuaXRcIl07XG4gICAgdGhpcy5wcmljZSA9IGpzb24/LltcInByaWNlXCJdO1xuICAgIHRoaXMuY2F0ZWdvcnlJZCA9IGpzb24/LltcImNhdGVnb3J5SWRcIl07XG4gICAgdGhpcy5kZXNjcmlwdG9yID0ganNvbj8uW1wiZGVzY3JpcHRvclwiXTtcbiAgICB0aGlzLnJhdGluZyA9IGpzb24/LltcInJhdGluZ1wiXTtcbiAgICB0aGlzLnJldmlld0NvdW50ID0ganNvbj8uW1wicmV2aWV3Q291bnRcIl07XG4gICAgdGhpcy5icmllZiA9IGpzb24/LltcImJyaWVmXCJdO1xuICAgIHRoaXMuaXRlbUNvZGUgPSBqc29uPy5bXCJpdGVtQ29kZVwiXTtcbiAgICB0aGlzLnRhZ3MgPSBqc29uPy5bXCJ0YWdzXCJdID8/IFtdO1xuICAgIHRoaXMucmVjb21tZW5kZWQgPSBqc29uPy5bXCJyZWNvbW1lbmRlZFwiXTtcbiAgICB0aGlzLnJldHVybmFibGUgPSBqc29uPy5bXCJyZXR1cm5hYmxlXCJdO1xuICAgIHRoaXMuYXZhaWxhYmxlT25Db2QgPSBqc29uPy5bXCJhdmFpbGFibGVPbkNvZFwiXTtcbiAgICB0aGlzLnBydmlld0lkeCA9IDA7XG4gICAgdGhpcy5xdWFudGl0eSA9IGpzb24/LltcInF1YW50aXR5XCJdID8/IDA7XG4gICAgdGhpcy53aGlzbGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuaXRlbVZhcmlhbnQgPSBqc29uPy5bXCJpdGVtVmFyaWFudFwiXSA/PyBbXTtcbiAgICAvLyBWYXJpYW50cyBzYXZlZCB3aXRoIGBvcHRpb25zOiBbe25hbWUsIHZhbHVlfV1gIGV4cG9zZSB0aGVtIHRvIHRoZSB2YXJpYW50IHBpY2tlciB0aHJvdWdoXG4gICAgLy8gYHByb3BlcnRpZXNgLiBFeGlzdGluZyBgcHJvcGVydGllc2Aga2V5cyB3aW47IHZhcmlhbnRzIHdpdGhvdXQgYG9wdGlvbnNgIGFyZSB1bnRvdWNoZWQuXG4gICAgdGhpcy5pdGVtVmFyaWFudC5mb3JFYWNoKCh2YXJpYW50OiBJdGVtVmFyaWFudCkgPT4ge1xuICAgICAgdmFyaWFudC5wcm9wZXJ0aWVzID0gdmFyaWFudC5wcm9wZXJ0aWVzID8/IHt9O1xuICAgICAgdmFyaWFudC5vcHRpb25zPy5mb3JFYWNoKChvcHRpb246IEl0ZW1WYXJpYW50T3B0aW9uKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb24/Lm5hbWUgJiYgIShvcHRpb24ubmFtZSBpbiB2YXJpYW50LnByb3BlcnRpZXMpKVxuICAgICAgICAgIHZhcmlhbnQucHJvcGVydGllc1tvcHRpb24ubmFtZV0gPSBvcHRpb24udmFsdWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm1ha2luZ0NoYXJnZVBlcmNlbnRhZ2UgPSBqc29uPy5bXCJtYWtpbmdDaGFyZ2VQZXJjZW50YWdlXCJdID8/IDBcbiAgICB0aGlzLmpld2VsbGVyeVByaWNlID0ganNvbj8uW1wiamV3ZWxsZXJ5UHJpY2VcIl0gPz8gMFxuICAgIHRoaXMubWF0ZXJpYWxzID0ganNvbj8uW1wibWF0ZXJpYWxzXCJdXG4gICAgdGhpcy5iYXNlV2VpZ2h0ID0ganNvbj8uW1wiYmFzZVdlaWdodFwiXSA/PyAwXG4gICAgdGhpcy5qZXdlbHJ5UHJpY2VCcmVha3VwID0ganNvbj8uW1wiamV3ZWxyeVByaWNlQnJlYWt1cFwiXSA/PyB7fVxuICAgIHRoaXMuY29uZmlncyA9IGpzb24/LltcImNvbmZpZ3NcIl0gPz8ge31cbiAgICB0aGlzLmN1c3RvbUZpZWxkVmFsdWVzID0ganNvbj8uW1wiY3VzdG9tRmllbGRWYWx1ZXNcIl0gPz8ge31cbiAgICB0aGlzLnRvdGFsUmV2aWV3Q291bnQgPSBqc29uPy5bXCJ0b3RhbFJldmlld0NvdW50XCJdID8/IDA7XG4gICAgdGhpcy5hdmVyYWdlUmF0aW5nID0ganNvbj8uW1wiYXZlcmFnZVJhdGluZ1wiXSA/PyAwO1xuICAgIGlmICh0aGlzLml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLml0ZW1WYXJpYW50Py5bMF0/LnZhcmlhbnRJbWFnZXM7XG4gICAgICB0aGlzLnByaWNlID0gdGhpcy5pdGVtVmFyaWFudD8uWzBdPy5pdGVtVmFyaWFudFByaWNlO1xuICAgICAgdGhpcy52YXJpZW50SWQgPSB0aGlzLml0ZW1WYXJpYW50Py5bMF0/LnZhcmlhbnRJZDtcbiAgICAgIHRoaXMuaXRlbUludmVudG9yeSA9IHRoaXMuaXRlbVZhcmlhbnQ/LlswXT8uaXRlbUludmVudG9yeTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ2F0ZWdvcmlzYXRpb24ge1xuICBpdGVtQ2F0ZWdvcmllczogSXRlbUNhdGVnb3J5W11cbiAgcHJvZHVjdFRhZ3M6IFByb2R1Y3RUYWdbXVxuICBpdGVtQ29sbGVjdGlvbjogSXRlbUNvbGxlY3Rpb25bXVxuICBpdGVtQnJhbmQ/OiBJdGVtQnJhbmRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ2F0ZWdvcnkge1xuICByZWZJZDogc3RyaW5nXG4gIHJlZk5hbWU6IHN0cmluZ1xuICBpbWdVcmw6IHN0cmluZ1xuICBtYXhRdWFudGl0eTogbnVtYmVyXG4gIHByaWNlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQnJhbmQge1xuICByZWZJZDogc3RyaW5nXG4gIHJlZk5hbWU6IHN0cmluZ1xuICBpbWdVcmw6IHN0cmluZ1xuICBtYXhRdWFudGl0eTogbnVtYmVyXG4gIHByaWNlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0VGFnIHtcbiAgdGFnSWQ6IHN0cmluZ1xuICBidXNpbmVzc0lkOiBzdHJpbmdcbiAgc3RvcmVJZDogc3RyaW5nW11cbiAgY29sbGVjdGlvbklkOiBzdHJpbmdcbiAgc3ViQ2F0ZWdvcnlJZDogc3RyaW5nXG4gIGNhdGVnb3J5SWQ6IHN0cmluZ1xuICBpdGVtSWQ6IHN0cmluZ1xuICB0YWdOYW1lOiBzdHJpbmdcbiAgYWN0aXZlOiBib29sZWFuXG4gIG90aGVyRGV0YWlsczogYW55O1xuICBjcmVhdGVkRGV0YWlsczogQ3JlYXRlZERldGFpbHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVkRGV0YWlscyB7XG4gIGNyZWF0ZWRCeUlkOiBzdHJpbmdcbiAgY3JlYXRlZEJ5TmFtZTogc3RyaW5nXG4gIGNyZWF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xuICB1cGRhdGVkVGltZVN0YW1wOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtQ29sbGVjdGlvbiB7XG4gIHJlZklkOiBzdHJpbmdcbiAgcmVmTmFtZTogc3RyaW5nXG4gIGltZ1VybDogc3RyaW5nXG4gIG1heFF1YW50aXR5OiBudW1iZXJcbiAgcHJpY2U6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1JbnZlbnRvcnkge1xuICBvcGVuaW5nU3RvY2s6IG51bWJlclxuICBza3U6IHN0cmluZ1xuICBiYXJjb2RlOiBzdHJpbmdcbiAgcHJlc2VudFN0b2NrRGF0ZTogc3RyaW5nXG4gIGxvd1N0b2NrQWxlcnQ6IGJvb2xlYW5cbiAgbG93U3RvY2tRdWFudGl0eTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVZhcmlhbnQge1xuICB2YXJpYW50SWQ6IHN0cmluZ1xuICBpdGVtSWQ6IHN0cmluZ1xuICBxdWFudGl0eTogbnVtYmVyXG4gIHdpc2hsaXN0OiBib29sZWFuXG4gIHZhcmlhbnROYW1lOiBzdHJpbmdcbiAgdmFyaWFudEltYWdlczogSXRlbUltYWdlW11cbiAgaXRlbVBhY2tzOiBJdGVtUGFja1tdXG4gIHByb3BlcnRpZXM6IGFueTtcbiAgb3B0aW9ucz86IEl0ZW1WYXJpYW50T3B0aW9uW11cbiAgaXRlbVZhcmlhbnRQcmljZTogSXRlbVZhcmlhbnRQcmljZVxuICBpdGVtSW52ZW50b3J5OiBJdGVtSW52ZW50b3J5MlxuICBpdGVtU3RhdHVzOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtVmFyaWFudE9wdGlvbiB7XG4gIG5hbWU6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG59XG5cbi8vIEdFVCBwcm9kdWN0L2N1c3RvbS1maWVsZC9xdWVyeS1vcHRpb25zXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNob2ljZSB7XG4gIHZhbHVlOiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICBjb3VudDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGVmIHtcbiAgaWRlbnRpZmllcjogc3RyaW5nXG4gIGxhYmVsOiBzdHJpbmdcbiAgdHlwZTogc3RyaW5nXG4gIGNvbnRyb2w6ICdNVUxUSV9TRUxFQ1QnIHwgJ1NFTEVDVCcgfCAnUkFOR0UnIHwgJ0JPT0xFQU4nIHwgJ0xPT0tVUCcgfCBzdHJpbmdcbiAgY2hvaWNlczogRmlsdGVyQ2hvaWNlW11cbiAgbWluPzogbnVtYmVyIHwgbnVsbFxuICBtYXg/OiBudW1iZXIgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXAge1xuICBrZXk6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIGZpbHRlcnM6IEZpbHRlckRlZltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydE9wdGlvbiB7XG4gIGtleTogc3RyaW5nXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb25zIHtcbiAgc29ydHM6IFNvcnRPcHRpb25bXVxuICBncm91cHM6IEZpbHRlckdyb3VwW11cbiAgZmlsdGVyczogRmlsdGVyRGVmW11cbn1cblxuLy8gU2VudCBvbiBpdGVtVjIvc2VhcmNoLiBDaG9pY2UgZmlsdGVycyB1c2UgYHZhbHVlc2AsIHJhbmdlIGZpbHRlcnMgdXNlIHN0cmluZyBgbWluYC9gbWF4YC5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRmllbGRGaWx0ZXIge1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgdmFsdWVzPzogc3RyaW5nW11cbiAgbWluPzogc3RyaW5nXG4gIG1heD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1QYWNrIHtcbiAgaXRlbVBhY2tJZDogc3RyaW5nXG4gIHBhY2tOYW1lOiBzdHJpbmdcbiAgYWN0aXZlOiBib29sZWFuXG4gIGFjdHVhbFByaWNlOiBudW1iZXJcbiAgb2ZmZXJlZFByaWNlOiBudW1iZXJcbiAgcGFja1F1YW50aXR5OiBudW1iZXJcbiAgbWF4T3JkZXJRdWFudGl0eTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVZhcmlhbnRQcmljZSB7XG4gIGN1cnJlbmN5OiBzdHJpbmdcbiAgdmFsdWU6IG51bWJlclxuICBlc3RpbWF0ZWRWYWx1ZTogbnVtYmVyXG4gIGNvbXB1dGVkVmFsdWU6IG51bWJlclxuICBsaXN0ZWRWYWx1ZTogbnVtYmVyXG4gIG9mZmVyZWRWYWx1ZTogbnVtYmVyXG4gIG1pbmltdW1WYWx1ZTogbnVtYmVyXG4gIG1heGltdW1WYWx1ZTogbnVtYmVyXG4gIHB1cmNoYXNlUHJpY2U6IG51bWJlclxuICB3aG9sZVNhbGVQcmljZTogbnVtYmVyXG4gIG1heFdob2xlU2FsZUxpbWl0OiBudW1iZXJcbiAgbWFyZ2luOiBudW1iZXJcbiAgcHJvZml0OiBudW1iZXJcbiAgZGlzY291bnRlZFByaWNlOiBudW1iZXJcbiAgdGF4UmVmOiBUYXhSZWZcbiAgdGF4QW1vdW50OiBudW1iZXJcbiAgc2VsbGluZ1ByaWNlOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXhSZWYge1xuICB0YXhJZDogc3RyaW5nXG4gIHRheFBlcmNlbnQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1JbnZlbnRvcnkyIHtcbiAgb3BlbmluZ1N0b2NrOiBudW1iZXJcbiAgc2t1OiBzdHJpbmdcbiAgYmFyY29kZTogc3RyaW5nXG4gIHByZXNlbnRTdG9ja0RhdGU6IHN0cmluZ1xuICBsb3dTdG9ja0FsZXJ0OiBib29sZWFuXG4gIGxvd1N0b2NrUXVhbnRpdHk6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1JbWFnZSB7XG4gIGltZ1VybDogc3RyaW5nO1xuICBibHVyaGFzaDogc3RyaW5nO1xuICBpbWdEZXNjOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVBhY2syIHtcbiAgaXRlbVBhY2tJZDogc3RyaW5nXG4gIHBhY2tOYW1lOiBzdHJpbmdcbiAgYWN0aXZlOiBib29sZWFuXG4gIGFjdHVhbFByaWNlOiBudW1iZXJcbiAgb2ZmZXJlZFByaWNlOiBudW1iZXJcbiAgcGFja1F1YW50aXR5OiBudW1iZXJcbiAgbWF4T3JkZXJRdWFudGl0eTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkT25Ub0l0ZW0ge1xuICByZWZJZDogc3RyaW5nXG4gIHJlZk5hbWU6IHN0cmluZ1xuICBpbWdVcmw6IHN0cmluZ1xuICBtYXhRdWFudGl0eTogbnVtYmVyXG4gIHByaWNlOiBudW1iZXJcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFVuaXQge1xuICBpZDogc3RyaW5nXG4gIGtleTogc3RyaW5nXG4gIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIGN1cnJlbmN5OiBzdHJpbmdcbiAgdmFsdWU6IG51bWJlclxuICBlc3RpbWF0ZWRWYWx1ZTogbnVtYmVyXG4gIGNvbXB1dGVkVmFsdWU6IG51bWJlclxuICBsaXN0ZWRWYWx1ZTogbnVtYmVyXG4gIG9mZmVyZWRWYWx1ZTogbnVtYmVyXG4gIG1pbmltdW1WYWx1ZTogbnVtYmVyXG4gIG1heGltdW1WYWx1ZTogbnVtYmVyXG4gIHB1cmNoYXNlUHJpY2U6IG51bWJlclxuICB3aG9sZVNhbGVQcmljZTogbnVtYmVyXG4gIG1heFdob2xlU2FsZUxpbWl0OiBudW1iZXJcbiAgbWFyZ2luOiBudW1iZXJcbiAgcHJvZml0OiBudW1iZXJcbiAgZGlzY291bnRlZFByaWNlOiBudW1iZXJcbiAgdGF4UmVmOiBUYXhSZWYyXG4gIHRheEFtb3VudDogbnVtYmVyXG4gIHNlbGxpbmdQcmljZTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGF4UmVmMiB7XG4gIHRheElkOiBzdHJpbmdcbiAgdGF4UGVyY2VudDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZERldGFpbHMyIHtcbiAgY3JlYXRlZEJ5SWQ6IHN0cmluZ1xuICBjcmVhdGVkQnlOYW1lOiBzdHJpbmdcbiAgY3JlYXRlZFRpbWVTdGFtcDogc3RyaW5nXG4gIHVwZGF0ZWRUaW1lU3RhbXA6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3Ige1xuICBuYW1lOiBzdHJpbmdcbiAgY29kZTogc3RyaW5nXG4gIHN5bWJvbDogc3RyaW5nXG4gIHNob3J0RGVzYzogc3RyaW5nXG4gIGxvbmdEZXNjOiBzdHJpbmdcbiAgaXRlbUltYWdlczogSXRlbUltYWdlMltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUltYWdlMiB7XG4gIGltZ1VybDogc3RyaW5nXG4gIGltZ0Rlc2M6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3Mgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCB7XG4gIGJ1c2luZXNzSWQ6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZztcbiAgY2FydFR5cGU6ICdDQVJUJyB8ICdXSVNITElTSCcgfCAnVFJJQUxfQ0FSVCdcbiAgY2FydEl0ZW1zOiBhbnlbXVxuICBwbGF0Zm9ybTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IodXNlcklkOiBzdHJpbmcsIGNhcnRUeXBlOiAnQ0FSVCcgfCAnV0lTSExJU0gnIHwgJ1RSSUFMX0NBUlQnLCBjYXJ0SXRlbXM6IGFueVtdKSB7XG4gICAgdGhpcy5idXNpbmVzc0lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2JJZCcpID8/ICcnXG4gICAgdGhpcy51c2VySWQgPSB1c2VySWRcbiAgICB0aGlzLmNhcnRUeXBlID0gY2FydFR5cGVcbiAgICB0aGlzLmNhcnRJdGVtcyA9IGNhcnRJdGVtc1xuICAgIHRoaXMucGxhdGZvcm0gPSAnV0VCJ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBjaGVja0l0ZW1BbHJlYWR5QWRkZWQge1xuICBpdGVtSWQ6IHN0cmluZ1xuICB2YXJpYW50SWQ6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xuICBidXNpbmVzc0lkOiBzdHJpbmdcbiAgY2FydFR5cGU6ICdDQVJUJyB8ICdXSVNITElTSCcgfCAnVFJJQUxfQ0FSVCdcblxuICBjb25zdHJ1Y3RvcihpdGVtSWQ6IHN0cmluZywgdmFyaWFudElkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNIJyB8ICdUUklBTF9DQVJUJykge1xuICAgIHRoaXMuaXRlbUlkID0gaXRlbUlkXG4gICAgdGhpcy52YXJpYW50SWQgPSB2YXJpYW50SWRcbiAgICB0aGlzLnVzZXJJZCA9IHVzZXJJZFxuICAgIHRoaXMuY2FydFR5cGUgPSBjYXJ0VHlwZVxuICAgIHRoaXMuYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiSWQnKSA/PyAnJ1xuICB9XG59XG5cblxuIl19
@@ -203,12 +203,25 @@ export class MyBookingsComponent {
203
203
  return !!this.selected && this.selected.status === 'BOOKED' && !!this.selected.canReschedule;
204
204
  }
205
205
  get canAddServiceSelected() {
206
- return !!this.selected && this.selected.status === 'BOOKED';
206
+ return !!this.selected && this.selected.status === 'BOOKED' && !!this.selected.addServiceAvailable;
207
207
  }
208
208
  viewBookingDetail(b) {
209
209
  this.selected = b;
210
210
  this.currentTab = 'DETAIL';
211
211
  this.reschedulePanelOpen = false;
212
+ this.checkAddServiceAvailability(b);
213
+ }
214
+ /** Lazy, cached on the row - only ever queried once per booking (re-queried after a successful
215
+ * add, since what's addable just changed). Best-effort: a failure just leaves the action
216
+ * hidden, same as this component's other non-critical lookups. */
217
+ checkAddServiceAvailability(b) {
218
+ if (b.status !== 'BOOKED' || b.addServiceAvailable !== undefined)
219
+ return;
220
+ this.restService.getAddServiceOptions(b.groupId).subscribe((res) => {
221
+ b.addServiceAvailable = (res ?? []).length > 0;
222
+ }, () => {
223
+ b.addServiceAvailable = false;
224
+ });
212
225
  }
213
226
  backToList() {
214
227
  this.currentTab = 'LIST';
@@ -364,6 +377,10 @@ export class MyBookingsComponent {
364
377
  : this.addServiceSelected.length + ' services added';
365
378
  this.messageService.add({ severity: 'success', summary });
366
379
  this.refreshSelectedServiceLines();
380
+ if (this.selected) {
381
+ this.selected.addServiceAvailable = undefined;
382
+ this.checkAddServiceAvailability(this.selected);
383
+ }
367
384
  }, (error) => {
368
385
  this.addServiceSubmitting = false;
369
386
  this.addServiceError = error?.error?.message || 'Unable to add these services';
@@ -435,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
435
452
  type: ViewChild,
436
453
  args: ['reschDayStrip']
437
454
  }] } });
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktYm9va2luZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9teS1ib29raW5ncy9teS1ib29raW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL215LWJvb2tpbmdzL215LWJvb2tpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQThCNUM7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLFdBQXdCLEVBQ3hCLGNBQXFDLEVBQ3JDLGNBQThCLEVBQzlCLGFBQTRCO1FBSDVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUEyQi9DLGVBQVUsR0FBc0IsTUFBTSxDQUFDO1FBQ3ZDLFlBQU8sR0FBd0IsVUFBVSxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFD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RyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksK0JBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BJLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FsYVUsbUJBQW1CO21HQUFuQixtQkFBbUIsMEZBSm5CLENBQUMsY0FBYyxDQUFDLDZJQzlDN0Isa3BjQXlSQSw4OE5ENU9ZLFlBQVksNlZBQUUsYUFBYSxtTEFBRSxXQUFXOzs0RkFLdkMsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxhQUN4QyxDQUFDLGNBQWMsQ0FBQzs2S0FZbEIsSUFBSTtzQkFBWixLQUFLO2dCQXNDc0IsZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XG5cbmludGVyZmFjZSBCb29raW5nUm93IHtcbiAgZ3JvdXBJZDogc3RyaW5nO1xuICBtb2RlOiAnU1RPUkVfVklTSVQnIHwgJ0hPTUVfVklTSVQnIHwgJ1ZJREVPX0NBTEwnO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBzdGFydFRpbWU/OiBzdHJpbmc7XG4gIGVuZFRpbWU/OiBzdHJpbmc7XG4gIHN0YXR1czogJ1BFTkRJTkcnIHwgJ0JPT0tFRCcgfCAnSE9MRCcgfCAnT05HT0lORycgfCAnQ09NUExFVEVEJyB8ICdDQU5DRUxMRUQnO1xuICBzdG9yZU5hbWU/OiBzdHJpbmc7XG4gIGN1c3RvbWVyRGV0YWlsPzogeyBuYW1lOiBzdHJpbmc7IHBob25lTnVtYmVyOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmcgfTtcbiAgYWRkcmVzc0RldGFpbHM/OiB7IHJlY2VpdmVyTmFtZTogc3RyaW5nOyByZWNlaXZlclBob25lOiBzdHJpbmc7IGFkZHJlc3NMaW5lMTogc3RyaW5nOyBhZGRyZXNzTGluZTI/OiBzdHJpbmc7IGNpdHk6IHN0cmluZzsgc3RhdGU6IHN0cmluZzsgemlwQ29kZTogc3RyaW5nIH07XG4gIHByb2R1Y3RMaW5lcz86IHsgaXRlbU5hbWU6IHN0cmluZzsgcXVhbnRpdHk6IG51bWJlciB9W107XG4gIC8qKiBOb3QgcGFydCBvZiB0aGUgR0VUIC9ib29raW5nL2dyb3VwL215IHJlc3BvbnNlIC0gc2VydmljZXMgbGl2ZSBvbiB0aGUgc2VwYXJhdGVcbiAgICogQm9va2luZ0RldGFpbCBjb2xsZWN0aW9uIChGSydkIHZpYSBzZXJ2aWNlTGluZUlkcywgbm90IGRlbm9ybWFsaXplZCBvbnRvIEJvb2tpbmdHcm91cCksIHNvXG4gICAqIHRoaXMgaXMgZmlsbGVkIGluIGNsaWVudC1zaWRlIGFmdGVyIGxvYWQoKSB2aWEgYSBwZXItcm93IEdFVCAuLi4vbGluZXMgY2FsbC4gKi9cbiAgc2VydmljZXM/OiB7IG5hbWU6IHN0cmluZzsgZHVyYXRpb25NaW51dGVzOiBudW1iZXI7IHByaWNlOiBudW1iZXIgfVtdO1xuICB2aWRlb0NhbGxMaW5rPzogc3RyaW5nO1xuICB0b3RhbENvbGxlY3RlZEF0Qm9va2luZz86IG51bWJlcjtcbiAgdG90YWxQYXlhYmxlPzogbnVtYmVyO1xuICBob21lVmlzaXRDaGFyZ2U/OiBudW1iZXI7XG4gIC8qKiBUcmFuc2llbnQsIGNvbXB1dGVkIG9uIGV2ZXJ5IGJhY2tlbmQgcmVhZCBvZiB0aGlzIGdyb3VwIC0gc2VlIEJvb2tpbmdHcm91cCNjYW5SZXNjaGVkdWxlLiAqL1xuICBjYW5SZXNjaGVkdWxlPzogYm9vbGVhbjtcbiAgcmVzY2hlZHVsZUJsb2NrZWRSZWFzb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogXCJNeSBCb29raW5nc1wiIC0gYSBjdXN0b21lcidzIG93biBib29raW5nIGhpc3RvcnkgKFVwY29taW5nL1Bhc3QpLCBhIGRldGFpbCB2aWV3IHBlciBib29raW5nLFxuICogYW5kIGNhbmNlbGxhdGlvbi4gVGhlIGxpc3QgZW5kcG9pbnQgcmV0dXJucyBmdWxsIEJvb2tpbmdHcm91cCByZWNvcmRzIC0gZW5vdWdoIGZvclxuICogZGF0ZS9zdGF0dXMvYWRkcmVzcy9wcm9kdWN0cyAtIGJ1dCBzZXJ2aWNlcyBib29rZWQgYXJlbid0IG9uIHRoYXQgcmVjb3JkIChzZWUgQm9va2luZ1Jvdy5zZXJ2aWNlc1xuICogYWJvdmUpLCBzbyBsb2FkKCkgaXNzdWVzIG9uZSBleHRyYSBHRVQgLi4uL2xpbmVzIGNhbGwgcGVyIHJvdyB0byBmaWxsIHRoZW0gaW4uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLW15LWJvb2tpbmdzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgVG9hc3RNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9teS1ib29raW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9teS1ib29raW5ncy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNeUJvb2tpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzU2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgKSB7IH1cblxuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIHN0eWxlczogYW55O1xuXG4gIC8qKiBTYW1lIGNvbnRyYXN0IGFsZ29yaXRobSBhcyBDb2xvckRpcmVjdGl2ZSAoZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZS50cykgLSByZWltcGxlbWVudGVkIGFzXG4gICAqIGEgcHVyZSBnZXR0ZXIgcmF0aGVyIHRoYW4gcmV1c2luZyB0aGF0IGRpcmVjdGl2ZSBkaXJlY3RseSwgc2luY2UgaXRzIFtzaW1wb0NvbG9yXSBvbmx5IGV2ZXJcbiAgICogKnNldHMqIGEgY29tcHV0ZWQgY29sb3IgYW5kIG5ldmVyIGNsZWFycyBpdCwgd2hpY2ggd291bGQgbGVhdmUgYSBzdGFsZSBjb2xvciBzdHVjayBvbiBhXG4gICAqIGNoaXAgYWZ0ZXIgaXQgdG9nZ2xlcyBmcm9tIGFjdGl2ZSBiYWNrIHRvIGluYWN0aXZlLiBFdmVyeSBhY2NlbnQtY29sb3JlZCBlbGVtZW50IGhlcmUgaXNcbiAgICogZWl0aGVyIGFsd2F5cy1vbiAobmV2ZXIgdG9nZ2xlcykgb3IgZHJpdmVuIGJ5IHRoaXMgc2FtZSBnZXR0ZXIsIHNvIHRoZXJlJ3MgZXhhY3RseSBvbmVcbiAgICogZGVmaW5pdGlvbiBvZiBcIndoYXQgdGV4dCBjb2xvciBnb2VzIG9uIHRoZSBhY2NlbnQgY29sb3JcIiBpbiB0aGlzIGZpbGUuICovXG4gIGdldCBjb250cmFzdENvbG9yKCk6IHN0cmluZyB7XG4gICAgbGV0IGhleCA9IHRoaXMuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcjtcbiAgICBpZiAoIWhleCkgcmV0dXJuICcjZmZmZmZmJztcbiAgICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICAgIGxldCBleHBhbmRlZCA9ICcjJztcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgaGV4Lmxlbmd0aDsgaSsrKSBleHBhbmRlZCArPSBoZXhbaV0gKyBoZXhbaV07XG4gICAgICBoZXggPSBleHBhbmRlZDtcbiAgICB9XG4gICAgY29uc3QgciA9IHBhcnNlSW50KGhleC5zbGljZSgxLCAzKSwgMTYpO1xuICAgIGNvbnN0IGcgPSBwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KTtcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoaGV4LnNsaWNlKDUsIDcpLCAxNik7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IChyICogMjk5ICsgZyAqIDU4NyArIGIgKiAxMTQpIC8gMTAwMDtcbiAgICByZXR1cm4gYnJpZ2h0bmVzcyA+IDEzMCA/ICcjMDAwMDAwJyA6ICcjZmZmZmZmJztcbiAgfVxuXG4gIGN1cnJlbnRUYWI6ICdMSVNUJyB8ICdERVRBSUwnID0gJ0xJU1QnO1xuICBwcm9mVGFiOiAndXBjb21pbmcnIHwgJ3Bhc3QnID0gJ3VwY29taW5nJztcbiAgbG9hZGluZyA9IHRydWU7XG4gIGNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgY2FuY2VsQ29uZmlybU9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGFsbEJvb2tpbmdzOiBCb29raW5nUm93W10gPSBbXTtcbiAgdXBjb21pbmc6IEJvb2tpbmdSb3dbXSA9IFtdO1xuICBwYXN0OiBCb29raW5nUm93W10gPSBbXTtcbiAgc2VsZWN0ZWQ6IEJvb2tpbmdSb3cgfCBudWxsID0gbnVsbDtcbiAgY2FuY2VsbGF0aW9uUG9saWN5OiB7IHRpdGxlOiBzdHJpbmc7IHBvbGljeURldGFpbHM6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIHJlc2NoZWR1bGVDdXRvZmZIb3VycyA9IDI0O1xuXG4gIC8vIFJlc2NoZWR1bGUgcGFuZWwgLSBkYXRlIHN0cmlwICsgc2xvdCBncmlkLCBtYXRjaGluZyB0aGUgYWRtaW4gc2lkZSdzIFJlc2NoZWR1bGVBcHBvaW50bWVudENvbXBvbmVudC5cbiAgQFZpZXdDaGlsZCgncmVzY2hEYXlTdHJpcCcpIHJlc2NoRGF5U3RyaXBSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcmVzY2hlZHVsZVBhbmVsT3BlbiA9IGZhbHNlO1xuICByZXNjaERheXM6IHsgaXNvOiBzdHJpbmc7IGRvdzogc3RyaW5nOyBudW06IHN0cmluZyB9W10gPSBbXTtcbiAgcmVzY2hTZWxlY3RlZElzbyA9ICcnO1xuICByZXNjaFNlbGVjdGVkVGltZSA9ICcnO1xuICByZXNjaFNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICByZXNjaExvYWRpbmdTbG90cyA9IGZhbHNlO1xuICByZXNjaENvbmZpcm1pbmcgPSBmYWxzZTtcbiAgcmVzY2hFcnJvciA9ICcnO1xuICByZXNjaE5vU2xvdHMgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiSWQnKSA/PyAnJztcbiAgICBjb25zdCB1c2VySWQgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik/LnVzZXJJZCA/PyAnJztcbiAgICBpZiAoIWJ1c2luZXNzSWQgfHwgIXVzZXJJZCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0TXlCb29raW5ncyhidXNpbmVzc0lkLCB1c2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsQm9va2luZ3MgPSAocmVzID8/IFtdKSBhcyBCb29raW5nUm93W107XG4gICAgICB0aGlzLnNwbGl0Qm9va2luZ3MoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkU2VydmljZUxpbmVzKCk7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldENhbmNlbGxhdGlvblBvbGljeShidXNpbmVzc0lkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxhdGlvblBvbGljeSA9IChyZXMgPz8gW10pWzBdID8/IG51bGw7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgLy8gTm9uLWZhdGFsIC0gdGhlIGRldGFpbCB2aWV3IGp1c3Qgd29uJ3Qgc2hvdyBhIHBvbGljeSBub3RlLlxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRCdXNpbmVzc0FwcG9pbnRtZW50U2V0dGluZ3MoYnVzaW5lc3NJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yZXNjaGVkdWxlQ3V0b2ZmSG91cnMgPSByZXM/LnJlc2NoZWR1bGVDdXRvZmZIb3VycyA/PyAyNDtcbiAgICB9LCAoKSA9PiB7XG4gICAgICAvLyBOb24tZmF0YWwgLSBmYWxscyBiYWNrIHRvIHRoZSBkZWZhdWx0IGN1dG9mZiB1c2VkIGZvciBkaXNwbGF5IG9ubHk7IHRoZSBiYWNrZW5kIGlzIHRoZVxuICAgICAgLy8gcmVhbCBzb3VyY2Ugb2YgdHJ1dGggYW5kIGVuZm9yY2VzIGl0cyBvd24gYWN0dWFsIGNvbmZpZ3VyZWQgdmFsdWUgcmVnYXJkbGVzcy5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNVcGNvbWluZyhiOiBCb29raW5nUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiAoYi5zdGF0dXMgPT09ICdIT0xEJyB8fCBiLnN0YXR1cyA9PT0gJ0JPT0tFRCcgfHwgYi5zdGF0dXMgPT09ICdQRU5ESU5HJyB8fCBiLnN0YXR1cyA9PT0gJ09OR09JTkcnKSAmJiBuZXcgRGF0ZShiLmJvb2tpbmdEYXRlKSA+PSB0b2RheTtcbiAgfVxuXG4gIHByaXZhdGUgc3BsaXRCb29raW5ncygpIHtcbiAgICB0aGlzLnVwY29taW5nID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+IHRoaXMuaXNVcGNvbWluZyhiKSk7XG4gICAgdGhpcy5wYXN0ID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+ICF0aGlzLmlzVXBjb21pbmcoYikpO1xuICB9XG5cbiAgLyoqIE9uZSBib29raW5nIGhpc3RvcnkgbG9hZCwgYm91bmRlZCB0byB0aGlzIGN1c3RvbWVyJ3Mgb3duIGJvb2tpbmdzIC0gYSBwZXItcm93IGNhbGwgaGVyZSBpc1xuICAgKiBmaW5lLCB1bmxpa2UgYW4gdW5ib3VuZGVkL3BhZ2luYXRlZCBsaXN0LiBGYWlsdXJlcyBhcmUgc3dhbGxvd2VkIHBlci1yb3cgKGZhbGxzIGJhY2sgdG8gbm9cbiAgICogc2VydmljZSBuYW1lcyBmb3IgdGhhdCByb3cpIHJhdGhlciB0aGFuIGJsb2NraW5nIHRoZSB3aG9sZSBwYWdlIG9uIG9uZSBiYWQgZ3JvdXAuICovXG4gIHByaXZhdGUgbG9hZFNlcnZpY2VMaW5lcygpIHtcbiAgICBpZiAoIXRoaXMuYWxsQm9va2luZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgZm9ya0pvaW4oXG4gICAgICB0aGlzLmFsbEJvb2tpbmdzLm1hcCgoYikgPT5cbiAgICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRHcm91cExpbmVzKGIuZ3JvdXBJZCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKFtdKSkpXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoKGFsbExpbmVzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5hbGxCb29raW5ncy5mb3JFYWNoKChiLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gYWxsTGluZXNbaV0gPz8gW107XG4gICAgICAgIGIuc2VydmljZXMgPSBsaW5lcy5mbGF0TWFwKChsOiBhbnkpID0+IChsLnNlcnZpY2VzID8/IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsIGR1cmF0aW9uTWludXRlczogcy5kdXJhdGlvbk1pbnV0ZXMsIHByaWNlOiBzLnByaWNlXG4gICAgICAgIH0pKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCByb3dzKCk6IEJvb2tpbmdSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZlRhYiA9PT0gJ3VwY29taW5nJyA/IHRoaXMudXBjb21pbmcgOiB0aGlzLnBhc3Q7XG4gIH1cbiAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5yb3dzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHNldFByb2ZUYWIodGFiOiAndXBjb21pbmcnIHwgJ3Bhc3QnKSB7XG4gICAgdGhpcy5wcm9mVGFiID0gdGFiO1xuICB9XG5cbiAgcHJvZHVjdE5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5wcm9kdWN0TGluZXMgPz8gW10pLm1hcCgocCkgPT4gcC5pdGVtTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gIH1cbiAgc2VydmljZU5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5zZXJ2aWNlcyA/PyBbXSkubWFwKChzKSA9PiBzLm5hbWUpLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuICB9XG4gIHRpdGxlKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZGVMYWJlbCA9IGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ0hvbWUgVmlzaXQnIDogYi5tb2RlID09PSAnVklERU9fQ0FMTCcgPyAnVmlkZW8gQ2FsbCcgOiAnU3RvcmUgVmlzaXQnO1xuICAgIGNvbnN0IGl0ZW1zID0gW3RoaXMuc2VydmljZU5hbWVzKGIpLCB0aGlzLnByb2R1Y3ROYW1lcyhiKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gICAgcmV0dXJuIGl0ZW1zID8gYCR7bW9kZUxhYmVsfSDCtyAke2l0ZW1zfWAgOiBtb2RlTGFiZWw7XG4gIH1cbiAgd2hlbihiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYi5ib29raW5nRGF0ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1JTicsIHsgd2Vla2RheTogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuIGIuc3RhcnRUaW1lID8gYCR7ZGF0ZX0gwrcgJHtiLnN0YXJ0VGltZX1gIDogZGF0ZTtcbiAgfVxuICBkZXRhaWwoYjogQm9va2luZ1Jvdyk6IHN0cmluZyB7XG4gICAgaWYgKGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnICYmIGIuYWRkcmVzc0RldGFpbHMpIHJldHVybiBgJHtiLmFkZHJlc3NEZXRhaWxzLmNpdHl9LCAke2IuYWRkcmVzc0RldGFpbHMuc3RhdGV9YDtcbiAgICBpZiAoYi5tb2RlID09PSAnU1RPUkVfVklTSVQnICYmIGIuc3RvcmVOYW1lKSByZXR1cm4gYi5zdG9yZU5hbWU7XG4gICAgcmV0dXJuIGIuY3VzdG9tZXJEZXRhaWw/Lm5hbWUgPz8gJyc7XG4gIH1cbiAgc3RhdHVzTGFiZWwoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdGF0dXMgPT09ICdDT01QTEVURUQnKSByZXR1cm4gJ0NvbXBsZXRlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NBTkNFTExFRCcpIHJldHVybiAnQ2FuY2VsbGVkJztcbiAgICBpZiAoc3RhdHVzID09PSAnSE9MRCcgfHwgc3RhdHVzID09PSAnUEVORElORycpIHJldHVybiAnUGF5bWVudCBQZW5kaW5nJztcbiAgICBpZiAoc3RhdHVzID09PSAnT05HT0lORycpIHJldHVybiAnSW4gUHJvZ3Jlc3MnO1xuICAgIHJldHVybiAnQ29uZmlybWVkJztcbiAgfVxuICBzdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NPTVBMRVRFRCcpIHJldHVybiAnc3RhdHVzLWNvbXBsZXRlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NBTkNFTExFRCcpIHJldHVybiAnc3RhdHVzLWNhbmNlbGxlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0hPTEQnIHx8IHN0YXR1cyA9PT0gJ1BFTkRJTkcnKSByZXR1cm4gJ3N0YXR1cy1wZW5kaW5nJztcbiAgICBpZiAoc3RhdHVzID09PSAnT05HT0lORycpIHJldHVybiAnc3RhdHVzLW9uZ29pbmcnO1xuICAgIHJldHVybiAnc3RhdHVzLWNvbmZpcm1lZCc7XG4gIH1cbiAgcGFpZExhYmVsKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiBiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nICYmIGIudG90YWxDb2xsZWN0ZWRBdEJvb2tpbmcgPiAwID8gYOKCuSR7Yi50b3RhbENvbGxlY3RlZEF0Qm9va2luZ31gIDogJ05vdGhpbmcg4oCUIGZyZWUnO1xuICB9XG4gIHNlcnZpY2VQcmljZVRvdGFsKGI6IEJvb2tpbmdSb3cpOiBudW1iZXIge1xuICAgIHJldHVybiAoYi5zZXJ2aWNlcyA/PyBbXSkucmVkdWNlKChzdW0sIHMpID0+IHN1bSArIChzLnByaWNlIHx8IDApLCAwKTtcbiAgfVxuICB0b3RhbER1ZShiOiBCb29raW5nUm93KTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGIudG90YWxQYXlhYmxlID8/IDApICsgKGIuaG9tZVZpc2l0Q2hhcmdlID8/IDApO1xuICB9XG4gIHBlbmRpbmdBbW91bnQoYjogQm9va2luZ1Jvdyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMudG90YWxEdWUoYikgLSAoYi50b3RhbENvbGxlY3RlZEF0Qm9va2luZyA/PyAwKSk7XG4gIH1cbiAgZ2V0IGNhbkNhbmNlbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQgJiYgKHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnSE9MRCcgfHwgdGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdCT09LRUQnIHx8IHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnUEVORElORycpO1xuICB9XG4gIGdldCBjYW5SZXNjaGVkdWxlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9PT0gJ0JPT0tFRCcgJiYgISF0aGlzLnNlbGVjdGVkLmNhblJlc2NoZWR1bGU7XG4gIH1cbiAgZ2V0IGNhbkFkZFNlcnZpY2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkICYmIHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnQk9PS0VEJztcbiAgfVxuXG4gIHZpZXdCb29raW5nRGV0YWlsKGI6IEJvb2tpbmdSb3cpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gYjtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnREVUQUlMJztcbiAgICB0aGlzLnJlc2NoZWR1bGVQYW5lbE9wZW4gPSBmYWxzZTtcbiAgfVxuICBiYWNrVG9MaXN0KCkge1xuICAgIHRoaXMuY3VycmVudFRhYiA9ICdMSVNUJztcbiAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcbiAgICB0aGlzLnJlc2NoZWR1bGVQYW5lbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNjaGVkdWxlXG5cbiAgb3BlblJlc2NoZWR1bGVQYW5lbCgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICB0aGlzLnJlc2NoZWR1bGVQYW5lbE9wZW4gPSB0cnVlO1xuICAgIHRoaXMucmVzY2hTZWxlY3RlZFRpbWUgPSAnJztcbiAgICB0aGlzLnJlc2NoRXJyb3IgPSAnJztcbiAgICB0aGlzLmJ1aWxkUmVzY2hEYXlTdHJpcCgpO1xuICAgIGlmICh0aGlzLnJlc2NoRGF5cy5sZW5ndGgpIHRoaXMuc2VsZWN0UmVzY2hEYXkodGhpcy5yZXNjaERheXNbMF0pO1xuICB9XG4gIGNsb3NlUmVzY2hlZHVsZVBhbmVsKCkge1xuICAgIHRoaXMucmVzY2hlZHVsZVBhbmVsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlc2NoRGF5U3RyaXAoKSB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHRoaXMucmVzY2hEYXlzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodG9kYXkpO1xuICAgICAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgaSk7XG4gICAgICB0aGlzLnJlc2NoRGF5cy5wdXNoKHtcbiAgICAgICAgaXNvOiBkLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRvdzogZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUlOJywgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pLFxuICAgICAgICBudW06IGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1JTicsIHsgZGF5OiAnbnVtZXJpYycgfSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogTW91c2UgdXNlcnMgaGF2ZSBubyBzd2lwZS90cmFja3BhZCBnZXN0dXJlIGZvciB0aGUgaG9yaXpvbnRhbGx5LXNjcm9sbGluZyBkYXkgc3RyaXAgLSBnaXZlXG4gICAqIHRoZW0gZXhwbGljaXQgcHJldi9uZXh0IGFycm93cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gc2hpZnQrd2hlZWwgKG1hdGNoZXMgdGhlIGFkbWluIHNpZGUnc1xuICAgKiBSZXNjaGVkdWxlQXBwb2ludG1lbnRDb21wb25lbnQjc2Nyb2xsRGF5cykuICovXG4gIHNjcm9sbFJlc2NoRGF5cyhkaXJlY3Rpb246IG51bWJlcikge1xuICAgIGNvbnN0IGVsID0gdGhpcy5yZXNjaERheVN0cmlwUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBlbC5zY3JvbGxCeSh7IGxlZnQ6IGRpcmVjdGlvbiAqIDE2MCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICB9XG5cbiAgc2VsZWN0UmVzY2hEYXkoZGF5OiB7IGlzbzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnJlc2NoU2VsZWN0ZWRJc28gPSBkYXkuaXNvO1xuICAgIHRoaXMucmVzY2hTZWxlY3RlZFRpbWUgPSAnJztcbiAgICB0aGlzLnJlc2NoRXJyb3IgPSAnJztcbiAgICB0aGlzLmZldGNoUmVzY2hTbG90cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJlc2NoU2xvdHMoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSByZXR1cm47XG4gICAgdGhpcy5yZXNjaExvYWRpbmdTbG90cyA9IHRydWU7XG4gICAgdGhpcy5yZXNjaE5vU2xvdHMgPSBmYWxzZTtcbiAgICB0aGlzLnJlc2NoU2xvdHMgPSBbXTtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFJlc2NoZWR1bGVTbG90cyh0aGlzLnNlbGVjdGVkLmdyb3VwSWQsIHRoaXMucmVzY2hTZWxlY3RlZElzbykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yZXNjaExvYWRpbmdTbG90cyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNjaFNsb3RzID0gcmVzID8/IFtdO1xuICAgICAgdGhpcy5yZXNjaE5vU2xvdHMgPSB0aGlzLnJlc2NoU2xvdHMubGVuZ3RoID09PSAwO1xuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMucmVzY2hMb2FkaW5nU2xvdHMgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzY2hOb1Nsb3RzID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdFJlc2NoVGltZSh0aW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2NoU2VsZWN0ZWRUaW1lID0gdGltZTtcbiAgfVxuXG4gIGdldCByZXNjaEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnJlc2NoU2VsZWN0ZWRJc28gfHwgIXRoaXMucmVzY2hTZWxlY3RlZFRpbWUgfHwgdGhpcy5yZXNjaENvbmZpcm1pbmc7XG4gIH1cblxuICBjb25maXJtUmVzY2hlZHVsZSgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5yZXNjaEludmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnJlc2NoQ29uZmlybWluZyA9IHRydWU7XG4gICAgdGhpcy5yZXNjaEVycm9yID0gJyc7XG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXNjaGVkdWxlQm9va2luZyh0aGlzLnNlbGVjdGVkLmdyb3VwSWQsIHRoaXMucmVzY2hTZWxlY3RlZElzbywgdGhpcy5yZXNjaFNlbGVjdGVkVGltZSkuc3Vic2NyaWJlKChncm91cDogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlc2NoQ29uZmlybWluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNjaGVkdWxlUGFuZWxPcGVuID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmJvb2tpbmdEYXRlID0gZ3JvdXA/LmJvb2tpbmdEYXRlID8/IHRoaXMucmVzY2hTZWxlY3RlZElzbztcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5zdGFydFRpbWUgPSBncm91cD8uc3RhcnRUaW1lID8/IHRoaXMuc2VsZWN0ZWQuc3RhcnRUaW1lO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVuZFRpbWUgPSBncm91cD8uZW5kVGltZSA/PyB0aGlzLnNlbGVjdGVkLmVuZFRpbWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FuUmVzY2hlZHVsZSA9IGdyb3VwPy5jYW5SZXNjaGVkdWxlID8/IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLnJlc2NoZWR1bGVCbG9ja2VkUmVhc29uID0gZ3JvdXA/LnJlc2NoZWR1bGVCbG9ja2VkUmVhc29uID8/ICcnO1xuICAgICAgfVxuICAgICAgdGhpcy5zcGxpdEJvb2tpbmdzKCk7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdCb29raW5nIHJlc2NoZWR1bGVkJyB9KTtcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yZXNjaENvbmZpcm1pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzY2hFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnJvcj8uZXJyb3I/LmRldGFpbCB8fCAnVW5hYmxlIHRvIHJlc2NoZWR1bGUgdGhpcyBib29raW5nJztcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGQgU2VydmljZVxuXG4gIGFkZFNlcnZpY2VQYW5lbE9wZW4gPSBmYWxzZTtcbiAgYWRkU2VydmljZUxvYWRpbmcgPSBmYWxzZTtcbiAgYWRkU2VydmljZU9wdGlvbnM6IGFueVtdID0gW107XG4gIGFkZFNlcnZpY2VTZWxlY3RlZDogYW55W10gPSBbXTtcbiAgYWRkU2VydmljZVN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgYWRkU2VydmljZUVycm9yID0gJyc7XG5cbiAgb3BlbkFkZFNlcnZpY2VQYW5lbCgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICB0aGlzLmFkZFNlcnZpY2VQYW5lbE9wZW4gPSB0cnVlO1xuICAgIHRoaXMuYWRkU2VydmljZUVycm9yID0gJyc7XG4gICAgdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQgPSBbXTtcbiAgICB0aGlzLmFkZFNlcnZpY2VMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFkZFNlcnZpY2VPcHRpb25zKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlT3B0aW9ucyA9IHJlcyA/PyBbXTtcbiAgICB9LCAoKSA9PiB7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VPcHRpb25zID0gW107XG4gICAgfSk7XG4gIH1cbiAgY2xvc2VBZGRTZXJ2aWNlUGFuZWwoKSB7XG4gICAgdGhpcy5hZGRTZXJ2aWNlUGFuZWxPcGVuID0gZmFsc2U7XG4gIH1cblxuICBpc0FkZFNlcnZpY2VTZWxlY3RlZChzZXJ2aWNlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQuc29tZSgocykgPT4gcy5zZXJ2aWNlSWQgPT09IHNlcnZpY2Uuc2VydmljZUlkKTtcbiAgfVxuICB0b2dnbGVBZGRTZXJ2aWNlKHNlcnZpY2U6IGFueSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQuZmluZEluZGV4KChzKSA9PiBzLnNlcnZpY2VJZCA9PT0gc2VydmljZS5zZXJ2aWNlSWQpO1xuICAgIGlmIChpbmRleCA+IC0xKSB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGVsc2UgdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQucHVzaChzZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKiBNaXJyb3JzIGFwcG9pbnRtZW50X3NlcnZpY2UncyBEZXBvc2l0VXRpbHMjZ2V0U2VydmljZURlcG9zaXRBbW91bnQgZXhhY3RseSAtIGZpeGVkIGFtb3VudFxuICAgKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcGVyY2VudCwgMCB3aGVuIG5vIGRlcG9zaXQgaXMgY29uZmlndXJlZC4gT25seSB1c2VkIHRvIGRlY2lkZSB3aGljaFxuICAgKiBlbmRwb2ludCB0byBjYWxsIChhIGxpdmUgQ2FzaGZyZWUgY2hlY2tvdXQgdnMuIHRoZSBkaXJlY3QgYWRkKSAtIHRoZSBiYWNrZW5kIHJlLWRlcml2ZXMgdGhpc1xuICAgKiBpdHNlbGYgYW5kIG5ldmVyIHRydXN0cyBhIGNsaWVudC1jb21wdXRlZCBhbW91bnQuICovXG4gIHByaXZhdGUgc2VydmljZURlcG9zaXQoc2VydmljZTogYW55KTogbnVtYmVyIHtcbiAgICBjb25zdCBkID0gc2VydmljZT8uZGVwb3NpdEFtb3VudDtcbiAgICBpZiAoIWQ/LmRlcG9zaXRSZXF1aXJlZCkgcmV0dXJuIDA7XG4gICAgaWYgKGQuZml4ZWRBbW91bnQgPiAwKSByZXR1cm4gZC5maXhlZEFtb3VudDtcbiAgICBjb25zdCBwcmljZSA9IHNlcnZpY2U/LnByaWNlRGV0YWlscz8udG90YWxQcmljZSA/PyAwO1xuICAgIHJldHVybiAoKGQuZGVwb3NpdFBlcmNlbnQgPz8gMCkgLyAxMDApICogcHJpY2U7XG4gIH1cblxuICAvKiogU3VtbWVkIGFjcm9zcyBldmVyeSBjdXJyZW50bHktY2hlY2tlZCBzZXJ2aWNlIC0gZHJpdmVzIGJvdGggdGhlIHJ1bm5pbmcgdG90YWwgc2hvd24gaW4gdGhlXG4gICAqIHBhbmVsIGFuZCB3aGljaCBlbmRwb2ludCBhZGRTZXJ2aWNlKCkgY2FsbHMgKHNhbWUgdG90YWwgdGhlIGJhY2tlbmQgaW5kZXBlbmRlbnRseSByZS1kZXJpdmVzXG4gICAqIGFuZCBhY3R1YWxseSBlbmZvcmNlcykuICovXG4gIGdldCBhZGRTZXJ2aWNlVG90YWxEZXBvc2l0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2VydmljZVNlbGVjdGVkLnJlZHVjZSgoc3VtLCBzKSA9PiBzdW0gKyB0aGlzLnNlcnZpY2VEZXBvc2l0KHMpLCAwKTtcbiAgfVxuXG4gIGFkZFNlcnZpY2UoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMuYWRkU2VydmljZVN1Ym1pdHRpbmcgfHwgIXRoaXMuYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IHNlcnZpY2VJZHMgPSB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5tYXAoKHMpID0+IHMuc2VydmljZUlkKTtcbiAgICBjb25zdCBkZXBvc2l0ID0gdGhpcy5hZGRTZXJ2aWNlVG90YWxEZXBvc2l0O1xuICAgIHRoaXMuYWRkU2VydmljZVN1Ym1pdHRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYWRkU2VydmljZUVycm9yID0gJyc7XG5cbiAgICBpZiAoZGVwb3NpdCA8PSAwKSB7XG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZFNlcnZpY2VUb0Jvb2tpbmcodGhpcy5zZWxlY3RlZC5ncm91cElkLCBzZXJ2aWNlSWRzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFNlcnZpY2VTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkU2VydmljZVBhbmVsT3BlbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoID09PSAxXG4gICAgICAgICAgPyB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZFswXS5uYW1lICsgJyBhZGRlZCdcbiAgICAgICAgICA6IHRoaXMuYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCArICcgc2VydmljZXMgYWRkZWQnO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnkgfSk7XG4gICAgICAgIHRoaXMucmVmcmVzaFNlbGVjdGVkU2VydmljZUxpbmVzKCk7XG4gICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFkZFNlcnZpY2VTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkU2VydmljZUVycm9yID0gZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gYWRkIHRoZXNlIHNlcnZpY2VzJztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlcG9zaXQgcmVxdWlyZWQgLSBub3RoaW5nIGlzIGF0dGFjaGVkIHRvIHRoZSBib29raW5nIHVudGlsIHRoaXMgcGF5bWVudCBpcyB2ZXJpZmllZFxuICAgIC8vIChCb29raW5nR3JvdXBTZXJ2aWNlI2NvbmZpcm1TZXJ2aWNlQWRkT24pLCBzYW1lIGxpdmUtY2hlY2tvdXQgcGF0dGVybiB0aGUgb3JpZ2luYWwgYm9va2luZ1xuICAgIC8vIGZsb3cgYWxyZWFkeSB1c2VzIChzZWUgdGhpcyBjb21wb25lbnQncyBvd24gY29uZmlybVJlc2NoZWR1bGUvY2FuY2VsQm9va2luZyBuZWlnaGJvcnMgLVxuICAgIC8vIG5vbmUgb2YgdGhvc2UgdG91Y2ggcGF5bWVudCAtIGFuZCBhcHBvaW50bWVudC1ib29raW5nLmNvbXBvbmVudC50cydzIGhvbGRCb29raW5nIHN1Y2Nlc3NcbiAgICAvLyBoYW5kbGVyIGZvciB0aGUgYWN0dWFsIHByZWNlZGVudCkuIE9uZSBjaGVja291dCBmb3IgdGhlIHdob2xlIGJhdGNoJ3Mgc3VtbWVkIGRlcG9zaXQuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZW5lcmF0ZUFkZFNlcnZpY2VQYXltZW50VG9rZW4odGhpcy5zZWxlY3RlZC5ncm91cElkLCBzZXJ2aWNlSWRzKS5zdWJzY3JpYmUoKG9yZGVyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWRkU2VydmljZVN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhZGRPblBheW1lbnRJZCcsIG9yZGVyLnBnT3JkZXJJZCk7XG4gICAgICB0aGlzLmV2ZW50c1NlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHsgZGF0YTogeyBvcmRlclNpZ25hdHVyZTogb3JkZXIub3JkZXJTaWduYXR1cmUgfSB9KTtcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlRXJyb3IgPSBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1VuYWJsZSB0byBzdGFydCBwYXltZW50IGZvciB0aGVzZSBzZXJ2aWNlcyc7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hTZWxlY3RlZFNlcnZpY2VMaW5lcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICBjb25zdCBncm91cElkID0gdGhpcy5zZWxlY3RlZC5ncm91cElkO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0R3JvdXBMaW5lcyhncm91cElkKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSkuc3Vic2NyaWJlKChsaW5lczogYW55KSA9PiB7XG4gICAgICBjb25zdCBib29raW5nID0gdGhpcy5hbGxCb29raW5ncy5maW5kKChiKSA9PiBiLmdyb3VwSWQgPT09IGdyb3VwSWQpO1xuICAgICAgY29uc3Qgc2VydmljZXMgPSAobGluZXMgPz8gW10pLmZsYXRNYXAoKGw6IGFueSkgPT4gKGwuc2VydmljZXMgPz8gW10pLm1hcCgoczogYW55KSA9PiAoe1xuICAgICAgICBuYW1lOiBzLm5hbWUsIGR1cmF0aW9uTWludXRlczogcy5kdXJhdGlvbk1pbnV0ZXMsIHByaWNlOiBzLnByaWNlXG4gICAgICB9KSkpO1xuICAgICAgaWYgKGJvb2tpbmcpIGJvb2tpbmcuc2VydmljZXMgPSBzZXJ2aWNlcztcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkPy5ncm91cElkID09PSBncm91cElkKSB0aGlzLnNlbGVjdGVkLnNlcnZpY2VzID0gc2VydmljZXM7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuQ2FuY2VsQ29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICB0aGlzLmNhbmNlbENvbmZpcm1PcGVuID0gdHJ1ZTtcbiAgfVxuICBjbG9zZUNhbmNlbENvbmZpcm0oKSB7XG4gICAgdGhpcy5jYW5jZWxDb25maXJtT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgY2FuY2VsQm9va2luZygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5jYW5jZWxsaW5nKSByZXR1cm47XG4gICAgdGhpcy5jYW5jZWxsaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmNhbmNlbEJvb2tpbmdHcm91cCh0aGlzLnNlbGVjdGVkLmdyb3VwSWQsICdDYW5jZWxsZWQgYnkgY3VzdG9tZXInKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jYW5jZWxsaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNhbmNlbENvbmZpcm1PcGVuID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkgdGhpcy5zZWxlY3RlZC5zdGF0dXMgPSAnQ0FOQ0VMTEVEJztcbiAgICAgIHRoaXMuc3BsaXRCb29raW5ncygpO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnQm9va2luZyBjYW5jZWxsZWQnIH0pO1xuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogZXJyb3I/LmVycm9yPy5kZXRhaWwgPz8gJ0NvdWxkIG5vdCBjYW5jZWwgdGhpcyBib29raW5nJyB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIj48L3AtdG9hc3Q+XG5cbjxkaXYgY2xhc3M9XCJtYi1yb290XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnTElTVCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItdGl0bGVcIj5NeSBCb29raW5nczwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1iLXRhYnNcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItdGFiXCIgW2NsYXNzLmFjdGl2ZV09XCJwcm9mVGFiID09PSAndXBjb21pbmcnXCIgKGNsaWNrKT1cInNldFByb2ZUYWIoJ3VwY29taW5nJylcIj5VcGNvbWluZzwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cInByb2ZUYWIgPT09ICdwYXN0J1wiIChjbGljayk9XCJzZXRQcm9mVGFiKCdwYXN0JylcIj5QYXN0PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItbG9hZGluZ1wiICpuZ0lmPVwibG9hZGluZ1wiPkxvYWRpbmcgeW91ciBib29raW5nc+KApjwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1iLXJvd3NcIiAqbmdJZj1cIiFsb2FkaW5nICYmICFpc0VtcHR5XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXJvd1wiICpuZ0Zvcj1cImxldCBiIG9mIHJvd3NcIiAoY2xpY2spPVwidmlld0Jvb2tpbmdEZXRhaWwoYilcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1zdHJpcGVcIiBbbmdDbGFzc109XCJiLm1vZGUgPT09ICdIT01FX1ZJU0lUJyA/ICdzdHJpcGUtaG9tZScgOiBiLm1vZGUgPT09ICdWSURFT19DQUxMJyA/ICdzdHJpcGUtdmlkZW8nIDogJ3N0cmlwZS1zdG9yZSdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1pbmZvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy10b3BcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yb3ctdGl0bGVcIj57e3RpdGxlKGIpfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXdoZW5cIj57e3doZW4oYil9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yb3ctZGV0YWlsXCI+e3tkZXRhaWwoYil9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1lbmRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLXN0YXR1c1wiIFtuZ0NsYXNzXT1cInN0YXR1c0NsYXNzKGIuc3RhdHVzKVwiPnt7c3RhdHVzTGFiZWwoYi5zdGF0dXMpfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItZW1wdHlcIiAqbmdJZj1cImlzRW1wdHlcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1iLWVtcHR5LWljb25cIj5ldmVudF9idXN5PC9tYXQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1lbXB0eS10aXRsZVwiPk5vIHt7cHJvZlRhYn19IGJvb2tpbmdzIHlldC48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdERVRBSUwnICYmIHNlbGVjdGVkXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1iYWNrXCIgKGNsaWNrKT1cImJhY2tUb0xpc3QoKVwiPlxuICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPiBCYWNrIHRvIE15IEJvb2tpbmdzXG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWNhcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdGl0bGUtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC10aXRsZVwiPnt7dGl0bGUoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLXN0YXR1c1wiIFtuZ0NsYXNzXT1cInN0YXR1c0NsYXNzKHNlbGVjdGVkLnN0YXR1cylcIj57e3N0YXR1c0xhYmVsKHNlbGVjdGVkLnN0YXR1cyl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtd2hlblwiPnt7d2hlbihzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiICpuZ0lmPVwic2VsZWN0ZWQuc2VydmljZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlNlcnZpY2VzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3tzZXJ2aWNlTmFtZXMoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5wcm9kdWN0TGluZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlByb2R1Y3RzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3twcm9kdWN0TmFtZXMoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5jdXN0b21lckRldGFpbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPkNvbnRhY3Q8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3NlbGVjdGVkLmN1c3RvbWVyRGV0YWlsPy5uYW1lfX0gwrcge3tzZWxlY3RlZC5jdXN0b21lckRldGFpbD8ucGhvbmVOdW1iZXJ9fSDCtyB7e3NlbGVjdGVkLmN1c3RvbWVyRGV0YWlsPy5lbWFpbH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiICpuZ0lmPVwic2VsZWN0ZWQubW9kZSA9PT0gJ0hPTUVfVklTSVQnICYmIHNlbGVjdGVkLmFkZHJlc3NEZXRhaWxzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+QWRkcmVzczwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPnt7c2VsZWN0ZWQuYWRkcmVzc0RldGFpbHM/LmFkZHJlc3NMaW5lMX19LCB7e3NlbGVjdGVkLmFkZHJlc3NEZXRhaWxzPy5jaXR5fX0sIHt7c2VsZWN0ZWQuYWRkcmVzc0RldGFpbHM/LnN0YXRlfX0ge3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uemlwQ29kZX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiICpuZ0lmPVwic2VydmljZVByaWNlVG90YWwoc2VsZWN0ZWQpID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlNlcnZpY2UgcHJpY2U8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3NlcnZpY2VQcmljZVRvdGFsKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiICpuZ0lmPVwic2VsZWN0ZWQuaG9tZVZpc2l0Q2hhcmdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+SG9tZSB2aXNpdCBjaGFyZ2U8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3NlbGVjdGVkLmhvbWVWaXNpdENoYXJnZX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlRvdGFsPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+4oK5e3t0b3RhbER1ZShzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5QYWlkPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3twYWlkTGFiZWwoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJwZW5kaW5nQW1vdW50KHNlbGVjdGVkKSA+IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5QZW5kaW5nIGF0IGFwcG9pbnRtZW50PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+4oK5e3twZW5kaW5nQW1vdW50KHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi12aWRlby1saW5rXCIgKm5nSWY9XCJzZWxlY3RlZC5tb2RlID09PSAnVklERU9fQ0FMTCcgJiYgc2VsZWN0ZWQudmlkZW9DYWxsTGluayAmJiBzZWxlY3RlZC5zdGF0dXMgIT09ICdDQU5DRUxMRUQnXCI+XG4gICAgICAgIDxtYXQtaWNvbj52aWRlb2NhbTwvbWF0LWljb24+XG4gICAgICAgIDxhIFtocmVmXT1cInNlbGVjdGVkLnZpZGVvQ2FsbExpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e3NlbGVjdGVkLnZpZGVvQ2FsbExpbmt9fTwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5XCIgKm5nSWY9XCJjYW5SZXNjaGVkdWxlU2VsZWN0ZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeS10aXRsZVwiPlJlc2NoZWR1bGUgcG9saWN5PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPllvdSBjYW4gcmVzY2hlZHVsZSB0aGlzIGJvb2tpbmcgdXAgdG8ge3tyZXNjaGVkdWxlQ3V0b2ZmSG91cnN9fSBob3Vye3tyZXNjaGVkdWxlQ3V0b2ZmSG91cnMgPT09IDEgPyAnJyA6ICdzJ319IGJlZm9yZSB0aGUgYXBwb2ludG1lbnQgdGltZS48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeVwiICpuZ0lmPVwiY2FuQ2FuY2VsU2VsZWN0ZWQgJiYgY2FuY2VsbGF0aW9uUG9saWN5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGl0bGVcIj57e2NhbmNlbGxhdGlvblBvbGljeS50aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnBvbGljeURldGFpbHN9fTwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1hY3Rpb25zLXJvd1wiICpuZ0lmPVwic2VsZWN0ZWQuc3RhdHVzID09PSAnQk9PS0VEJyB8fCBjYW5DYW5jZWxTZWxlY3RlZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJtYi1yZXNjaGVkdWxlLWJ0blwiXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZC5zdGF0dXMgPT09ICdCT09LRUQnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJlc2NoZWR1bGVTZWxlY3RlZFwiXG4gICAgICAgICAgW3RpdGxlXT1cIiFjYW5SZXNjaGVkdWxlU2VsZWN0ZWQgPyBzZWxlY3RlZC5yZXNjaGVkdWxlQmxvY2tlZFJlYXNvbiA6ICcnXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuUmVzY2hlZHVsZVBhbmVsKClcIlxuICAgICAgICA+UmVzY2hlZHVsZSBib29raW5nPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cIm1iLXJlc2NoZWR1bGUtYnRuXCJcbiAgICAgICAgICAqbmdJZj1cImNhbkFkZFNlcnZpY2VTZWxlY3RlZFwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkFkZFNlcnZpY2VQYW5lbCgpXCJcbiAgICAgICAgPkFkZCBzZXJ2aWNlPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cIm1iLWNhbmNlbC1idG5cIlxuICAgICAgICAgICpuZ0lmPVwiY2FuQ2FuY2VsU2VsZWN0ZWRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjYW5jZWxsaW5nXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FuY2VsQ29uZmlybSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7Y2FuY2VsbGluZyA/ICdDYW5jZWxsaW5n4oCmJyA6ICdDYW5jZWwgYm9va2luZyd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItY2FuY2VsbGVkLW5vdGVcIiAqbmdJZj1cInNlbGVjdGVkLnN0YXR1cyA9PT0gJ0NBTkNFTExFRCdcIj5UaGlzIGJvb2tpbmcgaGFzIGJlZW4gY2FuY2VsbGVkLjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYmFja2Ryb3BcIiAqbmdJZj1cInJlc2NoZWR1bGVQYW5lbE9wZW5cIiAoY2xpY2spPVwiY2xvc2VSZXNjaGVkdWxlUGFuZWwoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXRpdGxlXCI+Q2hvb3NlIGEgbmV3IGRhdGUgJmFtcDsgdGltZTwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXJlc2NoLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlUmVzY2hlZHVsZVBhbmVsKClcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWRheXN0cmlwLXJvd1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtbmF2XCIgKGNsaWNrKT1cInNjcm9sbFJlc2NoRGF5cygtMSlcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMi4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHBhdGggZD1cIk0xNSAxOGwtNi02IDYtNlwiPjwvcGF0aD48L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZGF5c3RyaXBcIiAjcmVzY2hEYXlTdHJpcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWItcmVzY2gtZGF5XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiByZXNjaERheXNcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRheS5pc28gPT09IHJlc2NoU2VsZWN0ZWRJc29cIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXkuaXNvID09PSByZXNjaFNlbGVjdGVkSXNvID8gc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6IG51bGxcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF5LmlzbyA9PT0gcmVzY2hTZWxlY3RlZElzbyA/IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiBudWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJlc2NoRGF5KGRheSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLXJlc2NoLWRheS1kb3dcIiBbc3R5bGUuY29sb3JdPVwiZGF5LmlzbyA9PT0gcmVzY2hTZWxlY3RlZElzbyA/IGNvbnRyYXN0Q29sb3IgOiBudWxsXCI+e3tkYXkuZG93fX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItcmVzY2gtZGF5LW51bVwiIFtzdHlsZS5jb2xvcl09XCJkYXkuaXNvID09PSByZXNjaFNlbGVjdGVkSXNvID8gY29udHJhc3RDb2xvciA6IG51bGxcIj57e2RheS5udW19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtbmF2XCIgKGNsaWNrKT1cInNjcm9sbFJlc2NoRGF5cygxKVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTkgMThsNi02LTYtNlwiPjwvcGF0aD48L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXNsb3RzLWxvYWRpbmdcIiAqbmdJZj1cInJlc2NoTG9hZGluZ1Nsb3RzXCI+TG9hZGluZyBhdmFpbGFibGUgdGltZXPigKY8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXNsb3RzLWVtcHR5XCIgKm5nSWY9XCIhcmVzY2hMb2FkaW5nU2xvdHMgJiYgcmVzY2hOb1Nsb3RzXCI+Tm8gc2xvdHMgYXZhaWxhYmxlIG9uIHRoaXMgZGF0ZS4gVHJ5IGFub3RoZXIgZGF0ZS48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXNsb3RzXCIgKm5nSWY9XCIhcmVzY2hMb2FkaW5nU2xvdHMgJiYgcmVzY2hTbG90cy5sZW5ndGhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWItcmVzY2gtc2xvdFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2xvdCBvZiByZXNjaFNsb3RzXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2xvdCA9PT0gcmVzY2hTZWxlY3RlZFRpbWVcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwic2xvdCA9PT0gcmVzY2hTZWxlY3RlZFRpbWUgPyBzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic2xvdCA9PT0gcmVzY2hTZWxlY3RlZFRpbWUgPyBzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2xvdCA9PT0gcmVzY2hTZWxlY3RlZFRpbWUgPyBjb250cmFzdENvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVzY2hUaW1lKHNsb3QpXCJcbiAgICAgICAgICA+e3tzbG90fX08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWVycm9yXCIgKm5nSWY9XCJyZXNjaEVycm9yXCI+e3tyZXNjaEVycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlUmVzY2hlZHVsZVBhbmVsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWItcmVzY2gtY29uZmlybVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJlc2NoSW52YWxpZFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwicmVzY2hJbnZhbGlkID8gbnVsbCA6IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJyZXNjaEludmFsaWQgPyBudWxsIDogY29udHJhc3RDb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1SZXNjaGVkdWxlKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3tyZXNjaENvbmZpcm1pbmcgPyAnQ29uZmlybWluZ+KApicgOiAnQ29uZmlybSBuZXcgc2xvdCd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYmFja2Ryb3BcIiAqbmdJZj1cImNhbmNlbENvbmZpcm1PcGVuXCIgKGNsaWNrKT1cImNsb3NlQ2FuY2VsQ29uZmlybSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtdGl0bGVcIj5DYW5jZWwgdGhpcyBib29raW5nPzwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXJlc2NoLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlQ2FuY2VsQ29uZmlybSgpXCI+JnRpbWVzOzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRleHRcIj5UaGlzIGNhbid0IGJlIHVuZG9uZS48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeVwiICpuZ0lmPVwiY2FuY2VsbGF0aW9uUG9saWN5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeS10aXRsZVwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnRpdGxlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRleHRcIj57e2NhbmNlbGxhdGlvblBvbGljeS5wb2xpY3lEZXRhaWxzfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1jYW5jZWxcIiAoY2xpY2spPVwiY2xvc2VDYW5jZWxDb25maXJtKClcIj5LZWVwIGJvb2tpbmc8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1jb25maXJtXCIgW2Rpc2FibGVkXT1cImNhbmNlbGxpbmdcIiAoY2xpY2spPVwiY2FuY2VsQm9va2luZygpXCI+XG4gICAgICAgICAge3tjYW5jZWxsaW5nID8gJ0NhbmNlbGxpbmfigKYnIDogJ1llcywgY2FuY2VsIGJvb2tpbmcnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWJhY2tkcm9wXCIgKm5nSWY9XCJhZGRTZXJ2aWNlUGFuZWxPcGVuXCIgKGNsaWNrKT1cImNsb3NlQWRkU2VydmljZVBhbmVsKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC10aXRsZVwiPkFkZCBzZXJ2aWNlKHMpPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VBZGRTZXJ2aWNlUGFuZWwoKVwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtc2xvdHMtbG9hZGluZ1wiICpuZ0lmPVwiYWRkU2VydmljZUxvYWRpbmdcIj5Mb2FkaW5nIHNlcnZpY2Vz4oCmPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1zbG90cy1lbXB0eVwiICpuZ0lmPVwiIWFkZFNlcnZpY2VMb2FkaW5nICYmIGFkZFNlcnZpY2VPcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIE5vIHNlcnZpY2VzIGF2YWlsYWJsZSB0byBhZGQgcmlnaHQgbm93LlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItYWRkc3ZjLWxpc3RcIiAqbmdJZj1cIiFhZGRTZXJ2aWNlTG9hZGluZyAmJiBhZGRTZXJ2aWNlT3B0aW9ucy5sZW5ndGhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWItYWRkc3ZjLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNBZGRTZXJ2aWNlU2VsZWN0ZWQoc2VydmljZSlcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlcnZpY2Ugb2YgYWRkU2VydmljZU9wdGlvbnNcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFkZFNlcnZpY2VTdWJtaXR0aW5nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBZGRTZXJ2aWNlKHNlcnZpY2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJtYi1hZGRzdmMtY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0FkZFNlcnZpY2VTZWxlY3RlZChzZXJ2aWNlKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2hhbmdlKT1cInRvZ2dsZUFkZFNlcnZpY2Uoc2VydmljZSlcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImYxXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1hZGRzdmMtbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7c2VydmljZS5uYW1lfX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLWFkZHN2Yy1tZXRhXCIgKm5nSWY9XCJzZXJ2aWNlLmR1cmF0aW9uXCI+e3tzZXJ2aWNlLmR1cmF0aW9ufX0gbWluPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWFkZHN2Yy1wcmljZVwiICpuZ0lmPVwic2VydmljZS5wcmljZURldGFpbHM/LnRvdGFsUHJpY2VcIj7igrl7e3NlcnZpY2UucHJpY2VEZXRhaWxzLnRvdGFsUHJpY2V9fTwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItYWRkc3ZjLXRvdGFsXCIgKm5nSWY9XCJhZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoICYmIGFkZFNlcnZpY2VUb3RhbERlcG9zaXQgPiAwXCI+XG4gICAgICAgICAgRGVwb3NpdCBkdWUgbm93OiDigrl7e2FkZFNlcnZpY2VUb3RhbERlcG9zaXR9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZXJyb3JcIiAqbmdJZj1cImFkZFNlcnZpY2VFcnJvclwiPnt7YWRkU2VydmljZUVycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZm9vdGVyXCIgKm5nSWY9XCIhYWRkU2VydmljZUxvYWRpbmcgJiYgYWRkU2VydmljZU9wdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlQWRkU2VydmljZVBhbmVsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWItcmVzY2gtY29uZmlybVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoIHx8IGFkZFNlcnZpY2VTdWJtaXR0aW5nXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCIhYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCA/IG51bGwgOiBzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiIWFkZFNlcnZpY2VTZWxlY3RlZC5sZW5ndGggPyBudWxsIDogY29udHJhc3RDb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFNlcnZpY2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7e2FkZFNlcnZpY2VTdWJtaXR0aW5nID8gJ0FkZGluZ+KApicgOiAnQWRkICcgKyAoYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCB8fCAnJykgKyAnIHNlcnZpY2UnICsgKGFkZFNlcnZpY2VTZWxlY3RlZC5sZW5ndGggPT09IDEgPyAnJyA6ICdzJyl9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktYm9va2luZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9teS1ib29raW5ncy9teS1ib29raW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL215LWJvb2tpbmdzL215LWJvb2tpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQWtDNUM7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ21CLFdBQXdCLEVBQ3hCLGNBQXFDLEVBQ3JDLGNBQThCLEVBQzlCLGFBQTRCO1FBSDVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUEyQi9DLGVBQVUsR0FBc0IsTUFBTSxDQUFDO1FBQ3ZDLFlBQU8sR0FBd0IsVUFBVSxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFD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QyxLQUFVLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksK0JBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BJLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FuYlUsbUJBQW1CO21HQUFuQixtQkFBbUIsMEZBSm5CLENBQUMsY0FBYyxDQUFDLDZJQ2xEN0Isa3BjQXlSQSw4OE5EeE9ZLFlBQVksNlZBQUUsYUFBYSxtTEFBRSxXQUFXOzs0RkFLdkMsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxhQUN4QyxDQUFDLGNBQWMsQ0FBQzs2S0FZbEIsSUFBSTtzQkFBWixLQUFLO2dCQXNDc0IsZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XG5cbmludGVyZmFjZSBCb29raW5nUm93IHtcbiAgZ3JvdXBJZDogc3RyaW5nO1xuICBtb2RlOiAnU1RPUkVfVklTSVQnIHwgJ0hPTUVfVklTSVQnIHwgJ1ZJREVPX0NBTEwnO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBzdGFydFRpbWU/OiBzdHJpbmc7XG4gIGVuZFRpbWU/OiBzdHJpbmc7XG4gIHN0YXR1czogJ1BFTkRJTkcnIHwgJ0JPT0tFRCcgfCAnSE9MRCcgfCAnT05HT0lORycgfCAnQ09NUExFVEVEJyB8ICdDQU5DRUxMRUQnO1xuICBzdG9yZU5hbWU/OiBzdHJpbmc7XG4gIGN1c3RvbWVyRGV0YWlsPzogeyBuYW1lOiBzdHJpbmc7IHBob25lTnVtYmVyOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmcgfTtcbiAgYWRkcmVzc0RldGFpbHM/OiB7IHJlY2VpdmVyTmFtZTogc3RyaW5nOyByZWNlaXZlclBob25lOiBzdHJpbmc7IGFkZHJlc3NMaW5lMTogc3RyaW5nOyBhZGRyZXNzTGluZTI/OiBzdHJpbmc7IGNpdHk6IHN0cmluZzsgc3RhdGU6IHN0cmluZzsgemlwQ29kZTogc3RyaW5nIH07XG4gIHByb2R1Y3RMaW5lcz86IHsgaXRlbU5hbWU6IHN0cmluZzsgcXVhbnRpdHk6IG51bWJlciB9W107XG4gIC8qKiBOb3QgcGFydCBvZiB0aGUgR0VUIC9ib29raW5nL2dyb3VwL215IHJlc3BvbnNlIC0gc2VydmljZXMgbGl2ZSBvbiB0aGUgc2VwYXJhdGVcbiAgICogQm9va2luZ0RldGFpbCBjb2xsZWN0aW9uIChGSydkIHZpYSBzZXJ2aWNlTGluZUlkcywgbm90IGRlbm9ybWFsaXplZCBvbnRvIEJvb2tpbmdHcm91cCksIHNvXG4gICAqIHRoaXMgaXMgZmlsbGVkIGluIGNsaWVudC1zaWRlIGFmdGVyIGxvYWQoKSB2aWEgYSBwZXItcm93IEdFVCAuLi4vbGluZXMgY2FsbC4gKi9cbiAgc2VydmljZXM/OiB7IG5hbWU6IHN0cmluZzsgZHVyYXRpb25NaW51dGVzOiBudW1iZXI7IHByaWNlOiBudW1iZXIgfVtdO1xuICB2aWRlb0NhbGxMaW5rPzogc3RyaW5nO1xuICB0b3RhbENvbGxlY3RlZEF0Qm9va2luZz86IG51bWJlcjtcbiAgdG90YWxQYXlhYmxlPzogbnVtYmVyO1xuICBob21lVmlzaXRDaGFyZ2U/OiBudW1iZXI7XG4gIC8qKiBUcmFuc2llbnQsIGNvbXB1dGVkIG9uIGV2ZXJ5IGJhY2tlbmQgcmVhZCBvZiB0aGlzIGdyb3VwIC0gc2VlIEJvb2tpbmdHcm91cCNjYW5SZXNjaGVkdWxlLiAqL1xuICBjYW5SZXNjaGVkdWxlPzogYm9vbGVhbjtcbiAgcmVzY2hlZHVsZUJsb2NrZWRSZWFzb24/OiBzdHJpbmc7XG4gIC8qKiBOb3QgcGFydCBvZiB0aGUgR0VUIC9ib29raW5nL2dyb3VwL215IHJlc3BvbnNlIGVpdGhlciAtIHJlc29sdmVkIGxhemlseSwgb25jZSwgdGhlIGZpcnN0XG4gICAqIHRpbWUgdGhpcyBib29raW5nJ3MgZGV0YWlsIGlzIHZpZXdlZCAoc2VlIHZpZXdCb29raW5nRGV0YWlsKCkpLCBzbyB0aGUgXCJBZGQgc2VydmljZVwiIGFjdGlvblxuICAgKiBvbmx5IHNob3dzIHdoZW4gdGhlcmUncyBhY3R1YWxseSBzb21ldGhpbmcgbGVmdCB0byBhZGQuIHVuZGVmaW5lZCA9IG5vdCBjaGVja2VkIHlldC4gKi9cbiAgYWRkU2VydmljZUF2YWlsYWJsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogXCJNeSBCb29raW5nc1wiIC0gYSBjdXN0b21lcidzIG93biBib29raW5nIGhpc3RvcnkgKFVwY29taW5nL1Bhc3QpLCBhIGRldGFpbCB2aWV3IHBlciBib29raW5nLFxuICogYW5kIGNhbmNlbGxhdGlvbi4gVGhlIGxpc3QgZW5kcG9pbnQgcmV0dXJucyBmdWxsIEJvb2tpbmdHcm91cCByZWNvcmRzIC0gZW5vdWdoIGZvclxuICogZGF0ZS9zdGF0dXMvYWRkcmVzcy9wcm9kdWN0cyAtIGJ1dCBzZXJ2aWNlcyBib29rZWQgYXJlbid0IG9uIHRoYXQgcmVjb3JkIChzZWUgQm9va2luZ1Jvdy5zZXJ2aWNlc1xuICogYWJvdmUpLCBzbyBsb2FkKCkgaXNzdWVzIG9uZSBleHRyYSBHRVQgLi4uL2xpbmVzIGNhbGwgcGVyIHJvdyB0byBmaWxsIHRoZW0gaW4uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLW15LWJvb2tpbmdzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgVG9hc3RNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9teS1ib29raW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9teS1ib29raW5ncy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNeUJvb2tpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzU2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgKSB7IH1cblxuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIHN0eWxlczogYW55O1xuXG4gIC8qKiBTYW1lIGNvbnRyYXN0IGFsZ29yaXRobSBhcyBDb2xvckRpcmVjdGl2ZSAoZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZS50cykgLSByZWltcGxlbWVudGVkIGFzXG4gICAqIGEgcHVyZSBnZXR0ZXIgcmF0aGVyIHRoYW4gcmV1c2luZyB0aGF0IGRpcmVjdGl2ZSBkaXJlY3RseSwgc2luY2UgaXRzIFtzaW1wb0NvbG9yXSBvbmx5IGV2ZXJcbiAgICogKnNldHMqIGEgY29tcHV0ZWQgY29sb3IgYW5kIG5ldmVyIGNsZWFycyBpdCwgd2hpY2ggd291bGQgbGVhdmUgYSBzdGFsZSBjb2xvciBzdHVjayBvbiBhXG4gICAqIGNoaXAgYWZ0ZXIgaXQgdG9nZ2xlcyBmcm9tIGFjdGl2ZSBiYWNrIHRvIGluYWN0aXZlLiBFdmVyeSBhY2NlbnQtY29sb3JlZCBlbGVtZW50IGhlcmUgaXNcbiAgICogZWl0aGVyIGFsd2F5cy1vbiAobmV2ZXIgdG9nZ2xlcykgb3IgZHJpdmVuIGJ5IHRoaXMgc2FtZSBnZXR0ZXIsIHNvIHRoZXJlJ3MgZXhhY3RseSBvbmVcbiAgICogZGVmaW5pdGlvbiBvZiBcIndoYXQgdGV4dCBjb2xvciBnb2VzIG9uIHRoZSBhY2NlbnQgY29sb3JcIiBpbiB0aGlzIGZpbGUuICovXG4gIGdldCBjb250cmFzdENvbG9yKCk6IHN0cmluZyB7XG4gICAgbGV0IGhleCA9IHRoaXMuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcjtcbiAgICBpZiAoIWhleCkgcmV0dXJuICcjZmZmZmZmJztcbiAgICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICAgIGxldCBleHBhbmRlZCA9ICcjJztcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgaGV4Lmxlbmd0aDsgaSsrKSBleHBhbmRlZCArPSBoZXhbaV0gKyBoZXhbaV07XG4gICAgICBoZXggPSBleHBhbmRlZDtcbiAgICB9XG4gICAgY29uc3QgciA9IHBhcnNlSW50KGhleC5zbGljZSgxLCAzKSwgMTYpO1xuICAgIGNvbnN0IGcgPSBwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KTtcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoaGV4LnNsaWNlKDUsIDcpLCAxNik7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IChyICogMjk5ICsgZyAqIDU4NyArIGIgKiAxMTQpIC8gMTAwMDtcbiAgICByZXR1cm4gYnJpZ2h0bmVzcyA+IDEzMCA/ICcjMDAwMDAwJyA6ICcjZmZmZmZmJztcbiAgfVxuXG4gIGN1cnJlbnRUYWI6ICdMSVNUJyB8ICdERVRBSUwnID0gJ0xJU1QnO1xuICBwcm9mVGFiOiAndXBjb21pbmcnIHwgJ3Bhc3QnID0gJ3VwY29taW5nJztcbiAgbG9hZGluZyA9IHRydWU7XG4gIGNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgY2FuY2VsQ29uZmlybU9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGFsbEJvb2tpbmdzOiBCb29raW5nUm93W10gPSBbXTtcbiAgdXBjb21pbmc6IEJvb2tpbmdSb3dbXSA9IFtdO1xuICBwYXN0OiBCb29raW5nUm93W10gPSBbXTtcbiAgc2VsZWN0ZWQ6IEJvb2tpbmdSb3cgfCBudWxsID0gbnVsbDtcbiAgY2FuY2VsbGF0aW9uUG9saWN5OiB7IHRpdGxlOiBzdHJpbmc7IHBvbGljeURldGFpbHM6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIHJlc2NoZWR1bGVDdXRvZmZIb3VycyA9IDI0O1xuXG4gIC8vIFJlc2NoZWR1bGUgcGFuZWwgLSBkYXRlIHN0cmlwICsgc2xvdCBncmlkLCBtYXRjaGluZyB0aGUgYWRtaW4gc2lkZSdzIFJlc2NoZWR1bGVBcHBvaW50bWVudENvbXBvbmVudC5cbiAgQFZpZXdDaGlsZCgncmVzY2hEYXlTdHJpcCcpIHJlc2NoRGF5U3RyaXBSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcmVzY2hlZHVsZVBhbmVsT3BlbiA9IGZhbHNlO1xuICByZXNjaERheXM6IHsgaXNvOiBzdHJpbmc7IGRvdzogc3RyaW5nOyBudW06IHN0cmluZyB9W10gPSBbXTtcbiAgcmVzY2hTZWxlY3RlZElzbyA9ICcnO1xuICByZXNjaFNlbGVjdGVkVGltZSA9ICcnO1xuICByZXNjaFNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICByZXNjaExvYWRpbmdTbG90cyA9IGZhbHNlO1xuICByZXNjaENvbmZpcm1pbmcgPSBmYWxzZTtcbiAgcmVzY2hFcnJvciA9ICcnO1xuICByZXNjaE5vU2xvdHMgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiSWQnKSA/PyAnJztcbiAgICBjb25zdCB1c2VySWQgPSAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcik/LnVzZXJJZCA/PyAnJztcbiAgICBpZiAoIWJ1c2luZXNzSWQgfHwgIXVzZXJJZCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0TXlCb29raW5ncyhidXNpbmVzc0lkLCB1c2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsQm9va2luZ3MgPSAocmVzID8/IFtdKSBhcyBCb29raW5nUm93W107XG4gICAgICB0aGlzLnNwbGl0Qm9va2luZ3MoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkU2VydmljZUxpbmVzKCk7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldENhbmNlbGxhdGlvblBvbGljeShidXNpbmVzc0lkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxhdGlvblBvbGljeSA9IChyZXMgPz8gW10pWzBdID8/IG51bGw7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgLy8gTm9uLWZhdGFsIC0gdGhlIGRldGFpbCB2aWV3IGp1c3Qgd29uJ3Qgc2hvdyBhIHBvbGljeSBub3RlLlxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRCdXNpbmVzc0FwcG9pbnRtZW50U2V0dGluZ3MoYnVzaW5lc3NJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5yZXNjaGVkdWxlQ3V0b2ZmSG91cnMgPSByZXM/LnJlc2NoZWR1bGVDdXRvZmZIb3VycyA/PyAyNDtcbiAgICB9LCAoKSA9PiB7XG4gICAgICAvLyBOb24tZmF0YWwgLSBmYWxscyBiYWNrIHRvIHRoZSBkZWZhdWx0IGN1dG9mZiB1c2VkIGZvciBkaXNwbGF5IG9ubHk7IHRoZSBiYWNrZW5kIGlzIHRoZVxuICAgICAgLy8gcmVhbCBzb3VyY2Ugb2YgdHJ1dGggYW5kIGVuZm9yY2VzIGl0cyBvd24gYWN0dWFsIGNvbmZpZ3VyZWQgdmFsdWUgcmVnYXJkbGVzcy5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNVcGNvbWluZyhiOiBCb29raW5nUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiAoYi5zdGF0dXMgPT09ICdIT0xEJyB8fCBiLnN0YXR1cyA9PT0gJ0JPT0tFRCcgfHwgYi5zdGF0dXMgPT09ICdQRU5ESU5HJyB8fCBiLnN0YXR1cyA9PT0gJ09OR09JTkcnKSAmJiBuZXcgRGF0ZShiLmJvb2tpbmdEYXRlKSA+PSB0b2RheTtcbiAgfVxuXG4gIHByaXZhdGUgc3BsaXRCb29raW5ncygpIHtcbiAgICB0aGlzLnVwY29taW5nID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+IHRoaXMuaXNVcGNvbWluZyhiKSk7XG4gICAgdGhpcy5wYXN0ID0gdGhpcy5hbGxCb29raW5ncy5maWx0ZXIoKGIpID0+ICF0aGlzLmlzVXBjb21pbmcoYikpO1xuICB9XG5cbiAgLyoqIE9uZSBib29raW5nIGhpc3RvcnkgbG9hZCwgYm91bmRlZCB0byB0aGlzIGN1c3RvbWVyJ3Mgb3duIGJvb2tpbmdzIC0gYSBwZXItcm93IGNhbGwgaGVyZSBpc1xuICAgKiBmaW5lLCB1bmxpa2UgYW4gdW5ib3VuZGVkL3BhZ2luYXRlZCBsaXN0LiBGYWlsdXJlcyBhcmUgc3dhbGxvd2VkIHBlci1yb3cgKGZhbGxzIGJhY2sgdG8gbm9cbiAgICogc2VydmljZSBuYW1lcyBmb3IgdGhhdCByb3cpIHJhdGhlciB0aGFuIGJsb2NraW5nIHRoZSB3aG9sZSBwYWdlIG9uIG9uZSBiYWQgZ3JvdXAuICovXG4gIHByaXZhdGUgbG9hZFNlcnZpY2VMaW5lcygpIHtcbiAgICBpZiAoIXRoaXMuYWxsQm9va2luZ3MubGVuZ3RoKSByZXR1cm47XG4gICAgZm9ya0pvaW4oXG4gICAgICB0aGlzLmFsbEJvb2tpbmdzLm1hcCgoYikgPT5cbiAgICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRHcm91cExpbmVzKGIuZ3JvdXBJZCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKFtdKSkpXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoKGFsbExpbmVzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5hbGxCb29raW5ncy5mb3JFYWNoKChiLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gYWxsTGluZXNbaV0gPz8gW107XG4gICAgICAgIGIuc2VydmljZXMgPSBsaW5lcy5mbGF0TWFwKChsOiBhbnkpID0+IChsLnNlcnZpY2VzID8/IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsIGR1cmF0aW9uTWludXRlczogcy5kdXJhdGlvbk1pbnV0ZXMsIHByaWNlOiBzLnByaWNlXG4gICAgICAgIH0pKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCByb3dzKCk6IEJvb2tpbmdSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZlRhYiA9PT0gJ3VwY29taW5nJyA/IHRoaXMudXBjb21pbmcgOiB0aGlzLnBhc3Q7XG4gIH1cbiAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5yb3dzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHNldFByb2ZUYWIodGFiOiAndXBjb21pbmcnIHwgJ3Bhc3QnKSB7XG4gICAgdGhpcy5wcm9mVGFiID0gdGFiO1xuICB9XG5cbiAgcHJvZHVjdE5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5wcm9kdWN0TGluZXMgPz8gW10pLm1hcCgocCkgPT4gcC5pdGVtTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gIH1cbiAgc2VydmljZU5hbWVzKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAoYi5zZXJ2aWNlcyA/PyBbXSkubWFwKChzKSA9PiBzLm5hbWUpLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuICB9XG4gIHRpdGxlKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZGVMYWJlbCA9IGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ0hvbWUgVmlzaXQnIDogYi5tb2RlID09PSAnVklERU9fQ0FMTCcgPyAnVmlkZW8gQ2FsbCcgOiAnU3RvcmUgVmlzaXQnO1xuICAgIGNvbnN0IGl0ZW1zID0gW3RoaXMuc2VydmljZU5hbWVzKGIpLCB0aGlzLnByb2R1Y3ROYW1lcyhiKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyk7XG4gICAgcmV0dXJuIGl0ZW1zID8gYCR7bW9kZUxhYmVsfSDCtyAke2l0ZW1zfWAgOiBtb2RlTGFiZWw7XG4gIH1cbiAgd2hlbihiOiBCb29raW5nUm93KTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYi5ib29raW5nRGF0ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1JTicsIHsgd2Vla2RheTogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuIGIuc3RhcnRUaW1lID8gYCR7ZGF0ZX0gwrcgJHtiLnN0YXJ0VGltZX1gIDogZGF0ZTtcbiAgfVxuICBkZXRhaWwoYjogQm9va2luZ1Jvdyk6IHN0cmluZyB7XG4gICAgaWYgKGIubW9kZSA9PT0gJ0hPTUVfVklTSVQnICYmIGIuYWRkcmVzc0RldGFpbHMpIHJldHVybiBgJHtiLmFkZHJlc3NEZXRhaWxzLmNpdHl9LCAke2IuYWRkcmVzc0RldGFpbHMuc3RhdGV9YDtcbiAgICBpZiAoYi5tb2RlID09PSAnU1RPUkVfVklTSVQnICYmIGIuc3RvcmVOYW1lKSByZXR1cm4gYi5zdG9yZU5hbWU7XG4gICAgcmV0dXJuIGIuY3VzdG9tZXJEZXRhaWw/Lm5hbWUgPz8gJyc7XG4gIH1cbiAgc3RhdHVzTGFiZWwoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdGF0dXMgPT09ICdDT01QTEVURUQnKSByZXR1cm4gJ0NvbXBsZXRlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NBTkNFTExFRCcpIHJldHVybiAnQ2FuY2VsbGVkJztcbiAgICBpZiAoc3RhdHVzID09PSAnSE9MRCcgfHwgc3RhdHVzID09PSAnUEVORElORycpIHJldHVybiAnUGF5bWVudCBQZW5kaW5nJztcbiAgICBpZiAoc3RhdHVzID09PSAnT05HT0lORycpIHJldHVybiAnSW4gUHJvZ3Jlc3MnO1xuICAgIHJldHVybiAnQ29uZmlybWVkJztcbiAgfVxuICBzdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NPTVBMRVRFRCcpIHJldHVybiAnc3RhdHVzLWNvbXBsZXRlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0NBTkNFTExFRCcpIHJldHVybiAnc3RhdHVzLWNhbmNlbGxlZCc7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ0hPTEQnIHx8IHN0YXR1cyA9PT0gJ1BFTkRJTkcnKSByZXR1cm4gJ3N0YXR1cy1wZW5kaW5nJztcbiAgICBpZiAoc3RhdHVzID09PSAnT05HT0lORycpIHJldHVybiAnc3RhdHVzLW9uZ29pbmcnO1xuICAgIHJldHVybiAnc3RhdHVzLWNvbmZpcm1lZCc7XG4gIH1cbiAgcGFpZExhYmVsKGI6IEJvb2tpbmdSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiBiLnRvdGFsQ29sbGVjdGVkQXRCb29raW5nICYmIGIudG90YWxDb2xsZWN0ZWRBdEJvb2tpbmcgPiAwID8gYOKCuSR7Yi50b3RhbENvbGxlY3RlZEF0Qm9va2luZ31gIDogJ05vdGhpbmcg4oCUIGZyZWUnO1xuICB9XG4gIHNlcnZpY2VQcmljZVRvdGFsKGI6IEJvb2tpbmdSb3cpOiBudW1iZXIge1xuICAgIHJldHVybiAoYi5zZXJ2aWNlcyA/PyBbXSkucmVkdWNlKChzdW0sIHMpID0+IHN1bSArIChzLnByaWNlIHx8IDApLCAwKTtcbiAgfVxuICB0b3RhbER1ZShiOiBCb29raW5nUm93KTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGIudG90YWxQYXlhYmxlID8/IDApICsgKGIuaG9tZVZpc2l0Q2hhcmdlID8/IDApO1xuICB9XG4gIHBlbmRpbmdBbW91bnQoYjogQm9va2luZ1Jvdyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMudG90YWxEdWUoYikgLSAoYi50b3RhbENvbGxlY3RlZEF0Qm9va2luZyA/PyAwKSk7XG4gIH1cbiAgZ2V0IGNhbkNhbmNlbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQgJiYgKHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnSE9MRCcgfHwgdGhpcy5zZWxlY3RlZC5zdGF0dXMgPT09ICdCT09LRUQnIHx8IHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnUEVORElORycpO1xuICB9XG4gIGdldCBjYW5SZXNjaGVkdWxlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZCAmJiB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9PT0gJ0JPT0tFRCcgJiYgISF0aGlzLnNlbGVjdGVkLmNhblJlc2NoZWR1bGU7XG4gIH1cbiAgZ2V0IGNhbkFkZFNlcnZpY2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkICYmIHRoaXMuc2VsZWN0ZWQuc3RhdHVzID09PSAnQk9PS0VEJyAmJiAhIXRoaXMuc2VsZWN0ZWQuYWRkU2VydmljZUF2YWlsYWJsZTtcbiAgfVxuXG4gIHZpZXdCb29raW5nRGV0YWlsKGI6IEJvb2tpbmdSb3cpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gYjtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnREVUQUlMJztcbiAgICB0aGlzLnJlc2NoZWR1bGVQYW5lbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoZWNrQWRkU2VydmljZUF2YWlsYWJpbGl0eShiKTtcbiAgfVxuXG4gIC8qKiBMYXp5LCBjYWNoZWQgb24gdGhlIHJvdyAtIG9ubHkgZXZlciBxdWVyaWVkIG9uY2UgcGVyIGJvb2tpbmcgKHJlLXF1ZXJpZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsXG4gICAqIGFkZCwgc2luY2Ugd2hhdCdzIGFkZGFibGUganVzdCBjaGFuZ2VkKS4gQmVzdC1lZmZvcnQ6IGEgZmFpbHVyZSBqdXN0IGxlYXZlcyB0aGUgYWN0aW9uXG4gICAqIGhpZGRlbiwgc2FtZSBhcyB0aGlzIGNvbXBvbmVudCdzIG90aGVyIG5vbi1jcml0aWNhbCBsb29rdXBzLiAqL1xuICBwcml2YXRlIGNoZWNrQWRkU2VydmljZUF2YWlsYWJpbGl0eShiOiBCb29raW5nUm93KSB7XG4gICAgaWYgKGIuc3RhdHVzICE9PSAnQk9PS0VEJyB8fCBiLmFkZFNlcnZpY2VBdmFpbGFibGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWRkU2VydmljZU9wdGlvbnMoYi5ncm91cElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBiLmFkZFNlcnZpY2VBdmFpbGFibGUgPSAocmVzID8/IFtdKS5sZW5ndGggPiAwO1xuICAgIH0sICgpID0+IHtcbiAgICAgIGIuYWRkU2VydmljZUF2YWlsYWJsZSA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGJhY2tUb0xpc3QoKSB7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gJ0xJU1QnO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xuICAgIHRoaXMucmVzY2hlZHVsZVBhbmVsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlc2NoZWR1bGVcblxuICBvcGVuUmVzY2hlZHVsZVBhbmVsKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIHRoaXMucmVzY2hlZHVsZVBhbmVsT3BlbiA9IHRydWU7XG4gICAgdGhpcy5yZXNjaFNlbGVjdGVkVGltZSA9ICcnO1xuICAgIHRoaXMucmVzY2hFcnJvciA9ICcnO1xuICAgIHRoaXMuYnVpbGRSZXNjaERheVN0cmlwKCk7XG4gICAgaWYgKHRoaXMucmVzY2hEYXlzLmxlbmd0aCkgdGhpcy5zZWxlY3RSZXNjaERheSh0aGlzLnJlc2NoRGF5c1swXSk7XG4gIH1cbiAgY2xvc2VSZXNjaGVkdWxlUGFuZWwoKSB7XG4gICAgdGhpcy5yZXNjaGVkdWxlUGFuZWxPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmVzY2hEYXlTdHJpcCgpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgdGhpcy5yZXNjaERheXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh0b2RheSk7XG4gICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyBpKTtcbiAgICAgIHRoaXMucmVzY2hEYXlzLnB1c2goe1xuICAgICAgICBpc286IGQudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZG93OiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tSU4nLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSksXG4gICAgICAgIG51bTogZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUlOJywgeyBkYXk6ICdudW1lcmljJyB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNb3VzZSB1c2VycyBoYXZlIG5vIHN3aXBlL3RyYWNrcGFkIGdlc3R1cmUgZm9yIHRoZSBob3Jpem9udGFsbHktc2Nyb2xsaW5nIGRheSBzdHJpcCAtIGdpdmVcbiAgICogdGhlbSBleHBsaWNpdCBwcmV2L25leHQgYXJyb3dzIGluc3RlYWQgb2YgcmVseWluZyBvbiBzaGlmdCt3aGVlbCAobWF0Y2hlcyB0aGUgYWRtaW4gc2lkZSdzXG4gICAqIFJlc2NoZWR1bGVBcHBvaW50bWVudENvbXBvbmVudCNzY3JvbGxEYXlzKS4gKi9cbiAgc2Nyb2xsUmVzY2hEYXlzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLnJlc2NoRGF5U3RyaXBSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnNjcm9sbEJ5KHsgbGVmdDogZGlyZWN0aW9uICogMTYwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cblxuICBzZWxlY3RSZXNjaERheShkYXk6IHsgaXNvOiBzdHJpbmcgfSkge1xuICAgIHRoaXMucmVzY2hTZWxlY3RlZElzbyA9IGRheS5pc287XG4gICAgdGhpcy5yZXNjaFNlbGVjdGVkVGltZSA9ICcnO1xuICAgIHRoaXMucmVzY2hFcnJvciA9ICcnO1xuICAgIHRoaXMuZmV0Y2hSZXNjaFNsb3RzKCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUmVzY2hTbG90cygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHJldHVybjtcbiAgICB0aGlzLnJlc2NoTG9hZGluZ1Nsb3RzID0gdHJ1ZTtcbiAgICB0aGlzLnJlc2NoTm9TbG90cyA9IGZhbHNlO1xuICAgIHRoaXMucmVzY2hTbG90cyA9IFtdO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVzY2hlZHVsZVNsb3RzKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCwgdGhpcy5yZXNjaFNlbGVjdGVkSXNvKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlc2NoTG9hZGluZ1Nsb3RzID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc2NoU2xvdHMgPSByZXMgPz8gW107XG4gICAgICB0aGlzLnJlc2NoTm9TbG90cyA9IHRoaXMucmVzY2hTbG90cy5sZW5ndGggPT09IDA7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5yZXNjaExvYWRpbmdTbG90cyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNjaE5vU2xvdHMgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0UmVzY2hUaW1lKHRpbWU6IHN0cmluZykge1xuICAgIHRoaXMucmVzY2hTZWxlY3RlZFRpbWUgPSB0aW1lO1xuICB9XG5cbiAgZ2V0IHJlc2NoSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucmVzY2hTZWxlY3RlZElzbyB8fCAhdGhpcy5yZXNjaFNlbGVjdGVkVGltZSB8fCB0aGlzLnJlc2NoQ29uZmlybWluZztcbiAgfVxuXG4gIGNvbmZpcm1SZXNjaGVkdWxlKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLnJlc2NoSW52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMucmVzY2hDb25maXJtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlc2NoRXJyb3IgPSAnJztcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlc2NoZWR1bGVCb29raW5nKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCwgdGhpcy5yZXNjaFNlbGVjdGVkSXNvLCB0aGlzLnJlc2NoU2VsZWN0ZWRUaW1lKS5zdWJzY3JpYmUoKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucmVzY2hDb25maXJtaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc2NoZWR1bGVQYW5lbE9wZW4gPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuYm9va2luZ0RhdGUgPSBncm91cD8uYm9va2luZ0RhdGUgPz8gdGhpcy5yZXNjaFNlbGVjdGVkSXNvO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLnN0YXJ0VGltZSA9IGdyb3VwPy5zdGFydFRpbWUgPz8gdGhpcy5zZWxlY3RlZC5zdGFydFRpbWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW5kVGltZSA9IGdyb3VwPy5lbmRUaW1lID8/IHRoaXMuc2VsZWN0ZWQuZW5kVGltZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYW5SZXNjaGVkdWxlID0gZ3JvdXA/LmNhblJlc2NoZWR1bGUgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQucmVzY2hlZHVsZUJsb2NrZWRSZWFzb24gPSBncm91cD8ucmVzY2hlZHVsZUJsb2NrZWRSZWFzb24gPz8gJyc7XG4gICAgICB9XG4gICAgICB0aGlzLnNwbGl0Qm9va2luZ3MoKTtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0Jvb2tpbmcgcmVzY2hlZHVsZWQnIH0pO1xuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlc2NoQ29uZmlybWluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNjaEVycm9yID0gZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8IGVycm9yPy5lcnJvcj8uZGV0YWlsIHx8ICdVbmFibGUgdG8gcmVzY2hlZHVsZSB0aGlzIGJvb2tpbmcnO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFkZCBTZXJ2aWNlXG5cbiAgYWRkU2VydmljZVBhbmVsT3BlbiA9IGZhbHNlO1xuICBhZGRTZXJ2aWNlTG9hZGluZyA9IGZhbHNlO1xuICBhZGRTZXJ2aWNlT3B0aW9uczogYW55W10gPSBbXTtcbiAgYWRkU2VydmljZVNlbGVjdGVkOiBhbnlbXSA9IFtdO1xuICBhZGRTZXJ2aWNlU3VibWl0dGluZyA9IGZhbHNlO1xuICBhZGRTZXJ2aWNlRXJyb3IgPSAnJztcblxuICBvcGVuQWRkU2VydmljZVBhbmVsKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIHRoaXMuYWRkU2VydmljZVBhbmVsT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hZGRTZXJ2aWNlRXJyb3IgPSAnJztcbiAgICB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuYWRkU2VydmljZUxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWRkU2VydmljZU9wdGlvbnModGhpcy5zZWxlY3RlZC5ncm91cElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VPcHRpb25zID0gcmVzID8/IFtdO1xuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMuYWRkU2VydmljZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWRkU2VydmljZU9wdGlvbnMgPSBbXTtcbiAgICB9KTtcbiAgfVxuICBjbG9zZUFkZFNlcnZpY2VQYW5lbCgpIHtcbiAgICB0aGlzLmFkZFNlcnZpY2VQYW5lbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGlzQWRkU2VydmljZVNlbGVjdGVkKHNlcnZpY2U6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5zb21lKChzKSA9PiBzLnNlcnZpY2VJZCA9PT0gc2VydmljZS5zZXJ2aWNlSWQpO1xuICB9XG4gIHRvZ2dsZUFkZFNlcnZpY2Uoc2VydmljZTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuc2VydmljZUlkID09PSBzZXJ2aWNlLnNlcnZpY2VJZCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMuYWRkU2VydmljZVNlbGVjdGVkLnNwbGljZShpbmRleCwgMSk7XG4gICAgZWxzZSB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5wdXNoKHNlcnZpY2UpO1xuICB9XG5cbiAgLyoqIE1pcnJvcnMgYXBwb2ludG1lbnRfc2VydmljZSdzIERlcG9zaXRVdGlscyNnZXRTZXJ2aWNlRGVwb3NpdEFtb3VudCBleGFjdGx5IC0gZml4ZWQgYW1vdW50XG4gICAqIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBwZXJjZW50LCAwIHdoZW4gbm8gZGVwb3NpdCBpcyBjb25maWd1cmVkLiBPbmx5IHVzZWQgdG8gZGVjaWRlIHdoaWNoXG4gICAqIGVuZHBvaW50IHRvIGNhbGwgKGEgbGl2ZSBDYXNoZnJlZSBjaGVja291dCB2cy4gdGhlIGRpcmVjdCBhZGQpIC0gdGhlIGJhY2tlbmQgcmUtZGVyaXZlcyB0aGlzXG4gICAqIGl0c2VsZiBhbmQgbmV2ZXIgdHJ1c3RzIGEgY2xpZW50LWNvbXB1dGVkIGFtb3VudC4gKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlRGVwb3NpdChzZXJ2aWNlOiBhbnkpOiBudW1iZXIge1xuICAgIGNvbnN0IGQgPSBzZXJ2aWNlPy5kZXBvc2l0QW1vdW50O1xuICAgIGlmICghZD8uZGVwb3NpdFJlcXVpcmVkKSByZXR1cm4gMDtcbiAgICBpZiAoZC5maXhlZEFtb3VudCA+IDApIHJldHVybiBkLmZpeGVkQW1vdW50O1xuICAgIGNvbnN0IHByaWNlID0gc2VydmljZT8ucHJpY2VEZXRhaWxzPy50b3RhbFByaWNlID8/IDA7XG4gICAgcmV0dXJuICgoZC5kZXBvc2l0UGVyY2VudCA/PyAwKSAvIDEwMCkgKiBwcmljZTtcbiAgfVxuXG4gIC8qKiBTdW1tZWQgYWNyb3NzIGV2ZXJ5IGN1cnJlbnRseS1jaGVja2VkIHNlcnZpY2UgLSBkcml2ZXMgYm90aCB0aGUgcnVubmluZyB0b3RhbCBzaG93biBpbiB0aGVcbiAgICogcGFuZWwgYW5kIHdoaWNoIGVuZHBvaW50IGFkZFNlcnZpY2UoKSBjYWxscyAoc2FtZSB0b3RhbCB0aGUgYmFja2VuZCBpbmRlcGVuZGVudGx5IHJlLWRlcml2ZXNcbiAgICogYW5kIGFjdHVhbGx5IGVuZm9yY2VzKS4gKi9cbiAgZ2V0IGFkZFNlcnZpY2VUb3RhbERlcG9zaXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQucmVkdWNlKChzdW0sIHMpID0+IHN1bSArIHRoaXMuc2VydmljZURlcG9zaXQocyksIDApO1xuICB9XG5cbiAgYWRkU2VydmljZSgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5hZGRTZXJ2aWNlU3VibWl0dGluZyB8fCAhdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3Qgc2VydmljZUlkcyA9IHRoaXMuYWRkU2VydmljZVNlbGVjdGVkLm1hcCgocykgPT4gcy5zZXJ2aWNlSWQpO1xuICAgIGNvbnN0IGRlcG9zaXQgPSB0aGlzLmFkZFNlcnZpY2VUb3RhbERlcG9zaXQ7XG4gICAgdGhpcy5hZGRTZXJ2aWNlU3VibWl0dGluZyA9IHRydWU7XG4gICAgdGhpcy5hZGRTZXJ2aWNlRXJyb3IgPSAnJztcblxuICAgIGlmIChkZXBvc2l0IDw9IDApIHtcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkU2VydmljZVRvQm9va2luZyh0aGlzLnNlbGVjdGVkLmdyb3VwSWQsIHNlcnZpY2VJZHMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkU2VydmljZVN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRTZXJ2aWNlUGFuZWxPcGVuID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHN1bW1hcnkgPSB0aGlzLmFkZFNlcnZpY2VTZWxlY3RlZC5sZW5ndGggPT09IDFcbiAgICAgICAgICA/IHRoaXMuYWRkU2VydmljZVNlbGVjdGVkWzBdLm5hbWUgKyAnIGFkZGVkJ1xuICAgICAgICAgIDogdGhpcy5hZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoICsgJyBzZXJ2aWNlcyBhZGRlZCc7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeSB9KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU2VsZWN0ZWRTZXJ2aWNlTGluZXMoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmFkZFNlcnZpY2VBdmFpbGFibGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5jaGVja0FkZFNlcnZpY2VBdmFpbGFiaWxpdHkodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkU2VydmljZVN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRTZXJ2aWNlRXJyb3IgPSBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1VuYWJsZSB0byBhZGQgdGhlc2Ugc2VydmljZXMnO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVwb3NpdCByZXF1aXJlZCAtIG5vdGhpbmcgaXMgYXR0YWNoZWQgdG8gdGhlIGJvb2tpbmcgdW50aWwgdGhpcyBwYXltZW50IGlzIHZlcmlmaWVkXG4gICAgLy8gKEJvb2tpbmdHcm91cFNlcnZpY2UjY29uZmlybVNlcnZpY2VBZGRPbiksIHNhbWUgbGl2ZS1jaGVja291dCBwYXR0ZXJuIHRoZSBvcmlnaW5hbCBib29raW5nXG4gICAgLy8gZmxvdyBhbHJlYWR5IHVzZXMgKHNlZSB0aGlzIGNvbXBvbmVudCdzIG93biBjb25maXJtUmVzY2hlZHVsZS9jYW5jZWxCb29raW5nIG5laWdoYm9ycyAtXG4gICAgLy8gbm9uZSBvZiB0aG9zZSB0b3VjaCBwYXltZW50IC0gYW5kIGFwcG9pbnRtZW50LWJvb2tpbmcuY29tcG9uZW50LnRzJ3MgaG9sZEJvb2tpbmcgc3VjY2Vzc1xuICAgIC8vIGhhbmRsZXIgZm9yIHRoZSBhY3R1YWwgcHJlY2VkZW50KS4gT25lIGNoZWNrb3V0IGZvciB0aGUgd2hvbGUgYmF0Y2gncyBzdW1tZWQgZGVwb3NpdC5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdlbmVyYXRlQWRkU2VydmljZVBheW1lbnRUb2tlbih0aGlzLnNlbGVjdGVkLmdyb3VwSWQsIHNlcnZpY2VJZHMpLnN1YnNjcmliZSgob3JkZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FkZE9uUGF5bWVudElkJywgb3JkZXIucGdPcmRlcklkKTtcbiAgICAgIHRoaXMuZXZlbnRzU2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQoeyBkYXRhOiB7IG9yZGVyU2lnbmF0dXJlOiBvcmRlci5vcmRlclNpZ25hdHVyZSB9IH0pO1xuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZFNlcnZpY2VFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCAnVW5hYmxlIHRvIHN0YXJ0IHBheW1lbnQgZm9yIHRoZXNlIHNlcnZpY2VzJztcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFNlbGVjdGVkU2VydmljZUxpbmVzKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGdyb3VwSWQgPSB0aGlzLnNlbGVjdGVkLmdyb3VwSWQ7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRHcm91cExpbmVzKGdyb3VwSWQpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpKS5zdWJzY3JpYmUoKGxpbmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGJvb2tpbmcgPSB0aGlzLmFsbEJvb2tpbmdzLmZpbmQoKGIpID0+IGIuZ3JvdXBJZCA9PT0gZ3JvdXBJZCk7XG4gICAgICBjb25zdCBzZXJ2aWNlcyA9IChsaW5lcyA/PyBbXSkuZmxhdE1hcCgobDogYW55KSA9PiAobC5zZXJ2aWNlcyA/PyBbXSkubWFwKChzOiBhbnkpID0+ICh7XG4gICAgICAgIG5hbWU6IHMubmFtZSwgZHVyYXRpb25NaW51dGVzOiBzLmR1cmF0aW9uTWludXRlcywgcHJpY2U6IHMucHJpY2VcbiAgICAgIH0pKSk7XG4gICAgICBpZiAoYm9va2luZykgYm9va2luZy5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQ/Lmdyb3VwSWQgPT09IGdyb3VwSWQpIHRoaXMuc2VsZWN0ZWQuc2VydmljZXMgPSBzZXJ2aWNlcztcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5DYW5jZWxDb25maXJtKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkgcmV0dXJuO1xuICAgIHRoaXMuY2FuY2VsQ29uZmlybU9wZW4gPSB0cnVlO1xuICB9XG4gIGNsb3NlQ2FuY2VsQ29uZmlybSgpIHtcbiAgICB0aGlzLmNhbmNlbENvbmZpcm1PcGVuID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWxCb29raW5nKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLmNhbmNlbGxpbmcpIHJldHVybjtcbiAgICB0aGlzLmNhbmNlbGxpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVzdFNlcnZpY2UuY2FuY2VsQm9va2luZ0dyb3VwKHRoaXMuc2VsZWN0ZWQuZ3JvdXBJZCwgJ0NhbmNlbGxlZCBieSBjdXN0b21lcicpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbmNlbGxpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FuY2VsQ29uZmlybU9wZW4gPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB0aGlzLnNlbGVjdGVkLnN0YXR1cyA9ICdDQU5DRUxMRUQnO1xuICAgICAgdGhpcy5zcGxpdEJvb2tpbmdzKCk7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdCb29raW5nIGNhbmNlbGxlZCcgfSk7XG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FuY2VsbGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiBlcnJvcj8uZXJyb3I/LmRldGFpbCA/PyAnQ291bGQgbm90IGNhbmNlbCB0aGlzIGJvb2tpbmcnIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiPjwvcC10b2FzdD5cblxuPGRpdiBjbGFzcz1cIm1iLXJvb3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdMSVNUJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi10aXRsZVwiPk15IEJvb2tpbmdzPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItdGFic1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi10YWJcIiBbY2xhc3MuYWN0aXZlXT1cInByb2ZUYWIgPT09ICd1cGNvbWluZydcIiAoY2xpY2spPVwic2V0UHJvZlRhYigndXBjb21pbmcnKVwiPlVwY29taW5nPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXRhYlwiIFtjbGFzcy5hY3RpdmVdPVwicHJvZlRhYiA9PT0gJ3Bhc3QnXCIgKGNsaWNrKT1cInNldFByb2ZUYWIoJ3Bhc3QnKVwiPlBhc3Q8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1sb2FkaW5nXCIgKm5nSWY9XCJsb2FkaW5nXCI+TG9hZGluZyB5b3VyIGJvb2tpbmdz4oCmPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWItcm93c1wiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWlzRW1wdHlcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcm93XCIgKm5nRm9yPVwibGV0IGIgb2Ygcm93c1wiIChjbGljayk9XCJ2aWV3Qm9va2luZ0RldGFpbChiKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXN0cmlwZVwiIFtuZ0NsYXNzXT1cImIubW9kZSA9PT0gJ0hPTUVfVklTSVQnID8gJ3N0cmlwZS1ob21lJyA6IGIubW9kZSA9PT0gJ1ZJREVPX0NBTEwnID8gJ3N0cmlwZS12aWRlbycgOiAnc3RyaXBlLXN0b3JlJ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWluZm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LXRvcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy10aXRsZVwiPnt7dGl0bGUoYil9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yb3ctd2hlblwiPnt7d2hlbihiKX19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJvdy1kZXRhaWxcIj57e2RldGFpbChiKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcm93LWVuZFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3MoYi5zdGF0dXMpXCI+e3tzdGF0dXNMYWJlbChiLnN0YXR1cyl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1lbXB0eVwiICpuZ0lmPVwiaXNFbXB0eVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWItZW1wdHktaWNvblwiPmV2ZW50X2J1c3k8L21hdC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWVtcHR5LXRpdGxlXCI+Tm8ge3twcm9mVGFifX0gYm9va2luZ3MgeWV0LjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PT0gJ0RFVEFJTCcgJiYgc2VsZWN0ZWRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLWJhY2tcIiAoY2xpY2spPVwiYmFja1RvTGlzdCgpXCI+XG4gICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+IEJhY2sgdG8gTXkgQm9va2luZ3NcbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtY2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC10aXRsZS1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXRpdGxlXCI+e3t0aXRsZShzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItc3RhdHVzXCIgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3Moc2VsZWN0ZWQuc3RhdHVzKVwiPnt7c3RhdHVzTGFiZWwoc2VsZWN0ZWQuc3RhdHVzKX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC13aGVuXCI+e3t3aGVuKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5zZXJ2aWNlcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+U2VydmljZXM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3NlcnZpY2VOYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLnByb2R1Y3RMaW5lcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+UHJvZHVjdHM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3Byb2R1Y3ROYW1lcyhzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInNlbGVjdGVkLmN1c3RvbWVyRGV0YWlsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+Q29udGFjdDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPnt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/Lm5hbWV9fSDCtyB7e3NlbGVjdGVkLmN1c3RvbWVyRGV0YWlsPy5waG9uZU51bWJlcn19IMK3IHt7c2VsZWN0ZWQuY3VzdG9tZXJEZXRhaWw/LmVtYWlsfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5tb2RlID09PSAnSE9NRV9WSVNJVCcgJiYgc2VsZWN0ZWQuYWRkcmVzc0RldGFpbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5BZGRyZXNzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC12XCI+e3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc0xpbmUxfX0sIHt7c2VsZWN0ZWQuYWRkcmVzc0RldGFpbHM/LmNpdHl9fSwge3tzZWxlY3RlZC5hZGRyZXNzRGV0YWlscz8uc3RhdGV9fSB7e3NlbGVjdGVkLmFkZHJlc3NEZXRhaWxzPy56aXBDb2RlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZXJ2aWNlUHJpY2VUb3RhbChzZWxlY3RlZCkgPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+U2VydmljZSBwcmljZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPuKCuXt7c2VydmljZVByaWNlVG90YWwoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5ob21lVmlzaXRDaGFyZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLWtcIj5Ib21lIHZpc2l0IGNoYXJnZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtdlwiPuKCuXt7c2VsZWN0ZWQuaG9tZVZpc2l0Q2hhcmdlfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwtcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1rXCI+VG90YWw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3RvdGFsRHVlKHNlbGVjdGVkKX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBhaWQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj57e3BhaWRMYWJlbChzZWxlY3RlZCl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWRldGFpbC1yb3dcIiAqbmdJZj1cInBlbmRpbmdBbW91bnQoc2VsZWN0ZWQpID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1kZXRhaWwta1wiPlBlbmRpbmcgYXQgYXBwb2ludG1lbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItZGV0YWlsLXZcIj7igrl7e3BlbmRpbmdBbW91bnQoc2VsZWN0ZWQpfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXZpZGVvLWxpbmtcIiAqbmdJZj1cInNlbGVjdGVkLm1vZGUgPT09ICdWSURFT19DQUxMJyAmJiBzZWxlY3RlZC52aWRlb0NhbGxMaW5rICYmIHNlbGVjdGVkLnN0YXR1cyAhPT0gJ0NBTkNFTExFRCdcIj5cbiAgICAgICAgPG1hdC1pY29uPnZpZGVvY2FtPC9tYXQtaWNvbj5cbiAgICAgICAgPGEgW2hyZWZdPVwic2VsZWN0ZWQudmlkZW9DYWxsTGlua1wiIHRhcmdldD1cIl9ibGFua1wiPnt7c2VsZWN0ZWQudmlkZW9DYWxsTGlua319PC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3lcIiAqbmdJZj1cImNhblJlc2NoZWR1bGVTZWxlY3RlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRpdGxlXCI+UmVzY2hlZHVsZSBwb2xpY3k8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeS10ZXh0XCI+WW91IGNhbiByZXNjaGVkdWxlIHRoaXMgYm9va2luZyB1cCB0byB7e3Jlc2NoZWR1bGVDdXRvZmZIb3Vyc319IGhvdXJ7e3Jlc2NoZWR1bGVDdXRvZmZIb3VycyA9PT0gMSA/ICcnIDogJ3MnfX0gYmVmb3JlIHRoZSBhcHBvaW50bWVudCB0aW1lLjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5XCIgKm5nSWY9XCJjYW5DYW5jZWxTZWxlY3RlZCAmJiBjYW5jZWxsYXRpb25Qb2xpY3lcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeS10aXRsZVwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnRpdGxlfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXBvbGljeS10ZXh0XCI+e3tjYW5jZWxsYXRpb25Qb2xpY3kucG9saWN5RGV0YWlsc319PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLWFjdGlvbnMtcm93XCIgKm5nSWY9XCJzZWxlY3RlZC5zdGF0dXMgPT09ICdCT09LRUQnIHx8IGNhbkNhbmNlbFNlbGVjdGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cIm1iLXJlc2NoZWR1bGUtYnRuXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkLnN0YXR1cyA9PT0gJ0JPT0tFRCdcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmVzY2hlZHVsZVNlbGVjdGVkXCJcbiAgICAgICAgICBbdGl0bGVdPVwiIWNhblJlc2NoZWR1bGVTZWxlY3RlZCA/IHNlbGVjdGVkLnJlc2NoZWR1bGVCbG9ja2VkUmVhc29uIDogJydcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZXNjaGVkdWxlUGFuZWwoKVwiXG4gICAgICAgID5SZXNjaGVkdWxlIGJvb2tpbmc8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWItcmVzY2hlZHVsZS1idG5cIlxuICAgICAgICAgICpuZ0lmPVwiY2FuQWRkU2VydmljZVNlbGVjdGVkXCJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWRkU2VydmljZVBhbmVsKClcIlxuICAgICAgICA+QWRkIHNlcnZpY2U8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwibWItY2FuY2VsLWJ0blwiXG4gICAgICAgICAgKm5nSWY9XCJjYW5DYW5jZWxTZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNhbmNlbGxpbmdcIlxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DYW5jZWxDb25maXJtKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3tjYW5jZWxsaW5nID8gJ0NhbmNlbGxpbmfigKYnIDogJ0NhbmNlbCBib29raW5nJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1jYW5jZWxsZWQtbm90ZVwiICpuZ0lmPVwic2VsZWN0ZWQuc3RhdHVzID09PSAnQ0FOQ0VMTEVEJ1wiPlRoaXMgYm9va2luZyBoYXMgYmVlbiBjYW5jZWxsZWQuPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1iYWNrZHJvcFwiICpuZ0lmPVwicmVzY2hlZHVsZVBhbmVsT3BlblwiIChjbGljayk9XCJjbG9zZVJlc2NoZWR1bGVQYW5lbCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtdGl0bGVcIj5DaG9vc2UgYSBuZXcgZGF0ZSAmYW1wOyB0aW1lPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VSZXNjaGVkdWxlUGFuZWwoKVwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZGF5c3RyaXAtcm93XCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1uYXZcIiAoY2xpY2spPVwic2Nyb2xsUmVzY2hEYXlzKC0xKVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTE1IDE4bC02LTYgNi02XCI+PC9wYXRoPjwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1kYXlzdHJpcFwiICNyZXNjaERheVN0cmlwPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYi1yZXNjaC1kYXlcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHJlc2NoRGF5c1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF5LmlzbyA9PT0gcmVzY2hTZWxlY3RlZElzb1wiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRheS5pc28gPT09IHJlc2NoU2VsZWN0ZWRJc28gPyBzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXkuaXNvID09PSByZXNjaFNlbGVjdGVkSXNvID8gc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6IG51bGxcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVzY2hEYXkoZGF5KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItcmVzY2gtZGF5LWRvd1wiIFtzdHlsZS5jb2xvcl09XCJkYXkuaXNvID09PSByZXNjaFNlbGVjdGVkSXNvID8gY29udHJhc3RDb2xvciA6IG51bGxcIj57e2RheS5kb3d9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi1yZXNjaC1kYXktbnVtXCIgW3N0eWxlLmNvbG9yXT1cImRheS5pc28gPT09IHJlc2NoU2VsZWN0ZWRJc28gPyBjb250cmFzdENvbG9yIDogbnVsbFwiPnt7ZGF5Lm51bX19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1uYXZcIiAoY2xpY2spPVwic2Nyb2xsUmVzY2hEYXlzKDEpXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjIuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxwYXRoIGQ9XCJNOSAxOGw2LTYtNi02XCI+PC9wYXRoPjwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtc2xvdHMtbG9hZGluZ1wiICpuZ0lmPVwicmVzY2hMb2FkaW5nU2xvdHNcIj5Mb2FkaW5nIGF2YWlsYWJsZSB0aW1lc+KApjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtc2xvdHMtZW1wdHlcIiAqbmdJZj1cIiFyZXNjaExvYWRpbmdTbG90cyAmJiByZXNjaE5vU2xvdHNcIj5ObyBzbG90cyBhdmFpbGFibGUgb24gdGhpcyBkYXRlLiBUcnkgYW5vdGhlciBkYXRlLjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtc2xvdHNcIiAqbmdJZj1cIiFyZXNjaExvYWRpbmdTbG90cyAmJiByZXNjaFNsb3RzLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtYi1yZXNjaC1zbG90XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbG90IG9mIHJlc2NoU2xvdHNcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzbG90ID09PSByZXNjaFNlbGVjdGVkVGltZVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJzbG90ID09PSByZXNjaFNlbGVjdGVkVGltZSA/IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiBudWxsXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJzbG90ID09PSByZXNjaFNlbGVjdGVkVGltZSA/IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiBudWxsXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzbG90ID09PSByZXNjaFNlbGVjdGVkVGltZSA/IGNvbnRyYXN0Q29sb3IgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZXNjaFRpbWUoc2xvdClcIlxuICAgICAgICAgID57e3Nsb3R9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtZXJyb3JcIiAqbmdJZj1cInJlc2NoRXJyb3JcIj57e3Jlc2NoRXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1jYW5jZWxcIiAoY2xpY2spPVwiY2xvc2VSZXNjaGVkdWxlUGFuZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJtYi1yZXNjaC1jb25maXJtXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicmVzY2hJbnZhbGlkXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJyZXNjaEludmFsaWQgPyBudWxsIDogc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInJlc2NoSW52YWxpZCA/IG51bGwgOiBjb250cmFzdENvbG9yXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29uZmlybVJlc2NoZWR1bGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7e3Jlc2NoQ29uZmlybWluZyA/ICdDb25maXJtaW5n4oCmJyA6ICdDb25maXJtIG5ldyBzbG90J319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1iYWNrZHJvcFwiICpuZ0lmPVwiY2FuY2VsQ29uZmlybU9wZW5cIiAoY2xpY2spPVwiY2xvc2VDYW5jZWxDb25maXJtKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC10aXRsZVwiPkNhbmNlbCB0aGlzIGJvb2tpbmc/PC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWItcmVzY2gtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VDYW5jZWxDb25maXJtKClcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPlRoaXMgY2FuJ3QgYmUgdW5kb25lLjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5XCIgKm5nSWY9XCJjYW5jZWxsYXRpb25Qb2xpY3lcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItcG9saWN5LXRpdGxlXCI+e3tjYW5jZWxsYXRpb25Qb2xpY3kudGl0bGV9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1wb2xpY3ktdGV4dFwiPnt7Y2FuY2VsbGF0aW9uUG9saWN5LnBvbGljeURldGFpbHN9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXJlc2NoLWNhbmNlbFwiIChjbGljayk9XCJjbG9zZUNhbmNlbENvbmZpcm0oKVwiPktlZXAgYm9va2luZzwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXJlc2NoLWNvbmZpcm1cIiBbZGlzYWJsZWRdPVwiY2FuY2VsbGluZ1wiIChjbGljayk9XCJjYW5jZWxCb29raW5nKClcIj5cbiAgICAgICAgICB7e2NhbmNlbGxpbmcgPyAnQ2FuY2VsbGluZ+KApicgOiAnWWVzLCBjYW5jZWwgYm9va2luZyd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWItcmVzY2gtYmFja2Ryb3BcIiAqbmdJZj1cImFkZFNlcnZpY2VQYW5lbE9wZW5cIiAoY2xpY2spPVwiY2xvc2VBZGRTZXJ2aWNlUGFuZWwoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXRpdGxlXCI+QWRkIHNlcnZpY2Uocyk8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1jbG9zZVwiIChjbGljayk9XCJjbG9zZUFkZFNlcnZpY2VQYW5lbCgpXCI+JnRpbWVzOzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1zbG90cy1sb2FkaW5nXCIgKm5nSWY9XCJhZGRTZXJ2aWNlTG9hZGluZ1wiPkxvYWRpbmcgc2VydmljZXPigKY8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLXJlc2NoLXNsb3RzLWVtcHR5XCIgKm5nSWY9XCIhYWRkU2VydmljZUxvYWRpbmcgJiYgYWRkU2VydmljZU9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgTm8gc2VydmljZXMgYXZhaWxhYmxlIHRvIGFkZCByaWdodCBub3cuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1hZGRzdmMtbGlzdFwiICpuZ0lmPVwiIWFkZFNlcnZpY2VMb2FkaW5nICYmIGFkZFNlcnZpY2VPcHRpb25zLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJtYi1hZGRzdmMtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc0FkZFNlcnZpY2VTZWxlY3RlZChzZXJ2aWNlKVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VydmljZSBvZiBhZGRTZXJ2aWNlT3B0aW9uc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkU2VydmljZVN1Ym1pdHRpbmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFkZFNlcnZpY2Uoc2VydmljZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm1iLWFkZHN2Yy1jaGVja2JveFwiIFtjaGVja2VkXT1cImlzQWRkU2VydmljZVNlbGVjdGVkKHNlcnZpY2UpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwidG9nZ2xlQWRkU2VydmljZShzZXJ2aWNlKVwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZjFcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLWFkZHN2Yy1uYW1lXCI+XG4gICAgICAgICAgICAgICAge3tzZXJ2aWNlLm5hbWV9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItYWRkc3ZjLW1ldGFcIiAqbmdJZj1cInNlcnZpY2UuZHVyYXRpb25cIj57e3NlcnZpY2UuZHVyYXRpb259fSBtaW48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItYWRkc3ZjLXByaWNlXCIgKm5nSWY9XCJzZXJ2aWNlLnByaWNlRGV0YWlscz8udG90YWxQcmljZVwiPuKCuXt7c2VydmljZS5wcmljZURldGFpbHMudG90YWxQcmljZX19PC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1hZGRzdmMtdG90YWxcIiAqbmdJZj1cImFkZFNlcnZpY2VTZWxlY3RlZC5sZW5ndGggJiYgYWRkU2VydmljZVRvdGFsRGVwb3NpdCA+IDBcIj5cbiAgICAgICAgICBEZXBvc2l0IGR1ZSBub3c6IOKCuXt7YWRkU2VydmljZVRvdGFsRGVwb3NpdH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1lcnJvclwiICpuZ0lmPVwiYWRkU2VydmljZUVycm9yXCI+e3thZGRTZXJ2aWNlRXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi1yZXNjaC1mb290ZXJcIiAqbmdJZj1cIiFhZGRTZXJ2aWNlTG9hZGluZyAmJiBhZGRTZXJ2aWNlT3B0aW9ucy5sZW5ndGhcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYi1yZXNjaC1jYW5jZWxcIiAoY2xpY2spPVwiY2xvc2VBZGRTZXJ2aWNlUGFuZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJtYi1yZXNjaC1jb25maXJtXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFkZFNlcnZpY2VTZWxlY3RlZC5sZW5ndGggfHwgYWRkU2VydmljZVN1Ym1pdHRpbmdcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIiFhZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoID8gbnVsbCA6IHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIhYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCA/IG51bGwgOiBjb250cmFzdENvbG9yXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkU2VydmljZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7YWRkU2VydmljZVN1Ym1pdHRpbmcgPyAnQWRkaW5n4oCmJyA6ICdBZGQgJyArIChhZGRTZXJ2aWNlU2VsZWN0ZWQubGVuZ3RoIHx8ICcnKSArICcgc2VydmljZScgKyAoYWRkU2VydmljZVNlbGVjdGVkLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnKX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=