buildingproduct-library 0.2.76 → 0.2.78

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 (116) hide show
  1. package/assets/images/pdf-icon.svg +45 -0
  2. package/{buildingproduct-library-0.2.76.tgz → buildingproduct-library-0.2.78.tgz} +0 -0
  3. package/bundles/buildingproduct-library.umd.js +3471 -2489
  4. package/bundles/buildingproduct-library.umd.js.map +1 -1
  5. package/esm2015/lib/account-dropdown/account-dropdown.component.js +38 -4
  6. package/esm2015/lib/account-dropdown/account-dropdown.service.js +3 -3
  7. package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +22 -13
  8. package/esm2015/lib/checkout/checkout.module.js +10 -2
  9. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +7 -28
  10. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +2 -3
  11. package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +1 -1
  12. package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +86 -16
  13. package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +72 -15
  14. package/esm2015/lib/checkout/order-review/order-review.component.js +3 -27
  15. package/esm2015/lib/contact-us/contact-us.component.js +1 -1
  16. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +2 -2
  17. package/esm2015/lib/custom-cart/custom-cart.component.js +3 -27
  18. package/esm2015/lib/custom-cart/custom-cart.module.js +3 -3
  19. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +110 -52
  20. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +2 -2
  21. package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
  22. package/esm2015/lib/custom-navigation/custom-navigation.module.js +3 -3
  23. package/esm2015/lib/custom-order-details/custom-order-details.component.js +26 -21
  24. package/esm2015/lib/custom-order-details/custom-order-details.module.js +15 -7
  25. package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +1 -1
  26. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +105 -22
  27. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +89 -23
  28. package/esm2015/lib/custom-order-history/custom-order-history.component.js +49 -22
  29. package/esm2015/lib/custom-order-history/custom-order-history.module.js +10 -2
  30. package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +1 -1
  31. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +2 -2
  32. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +2 -2
  33. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +4 -28
  34. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +1 -1
  35. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +6 -4
  36. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +2 -2
  37. package/esm2015/lib/custom-saved-cart/saved-cart.service.js +11 -2
  38. package/esm2015/lib/custom-search/custom-search.component.js +3 -3
  39. package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
  40. package/esm2015/lib/directives/custom-directives.module.js +1 -1
  41. package/esm2015/lib/directives/custom-paginatior.directive.js +101 -31
  42. package/esm2015/lib/find-store/find-store.component.js +2 -2
  43. package/esm2015/lib/help-support/help-support.component.js +1 -1
  44. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +2 -2
  45. package/esm2015/lib/my-account/account-statements/account-statements.component.js +2 -2
  46. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +51 -17
  47. package/esm2015/lib/my-account/my-account.component.js +2 -2
  48. package/esm2015/lib/my-account/my-account.module.js +11 -3
  49. package/esm2015/lib/my-team/my-team.component.js +25 -17
  50. package/esm2015/lib/my-team/my-team.module.js +11 -7
  51. package/esm2015/lib/services/endPointURL.js +6 -1
  52. package/esm2015/lib/services/user-account-detail-service.service.js +172 -4
  53. package/esm2015/lib/shared/CustomProduct.js +5 -4
  54. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +20 -11
  55. package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +17 -7
  56. package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +1 -1
  57. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +198 -102
  58. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +64 -22
  59. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +129 -80
  60. package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +59 -9
  61. package/esm2015/lib/shared/regEx.validator.js +3 -1
  62. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +1 -1
  63. package/esm2015/lib/shared/shared-components.module.js +21 -10
  64. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +116 -31
  65. package/esm2015/lib/spa-custom-header.module.js +14 -13
  66. package/esm2015/public-api.js +2 -2
  67. package/fesm2015/buildingproduct-library.js +1996 -1081
  68. package/fesm2015/buildingproduct-library.js.map +1 -1
  69. package/lib/checkout/add-new-address/add-new-address.component.d.ts +1 -0
  70. package/lib/checkout/checkout.module.d.ts +12 -10
  71. package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +2 -5
  72. package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +8 -2
  73. package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +5 -2
  74. package/lib/checkout/order-review/order-review.component.d.ts +1 -4
  75. package/lib/custom-cart/custom-cart.component.d.ts +1 -4
  76. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +11 -3
  77. package/lib/custom-navigation/{custom-navigation/custom-navigation.component.d.ts → custom-navigation.component.d.ts} +1 -1
  78. package/lib/custom-navigation/custom-navigation.module.d.ts +1 -1
  79. package/lib/custom-order-details/custom-order-details.component.d.ts +5 -2
  80. package/lib/custom-order-details/custom-order-details.module.d.ts +6 -4
  81. package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +14 -4
  82. package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +10 -3
  83. package/lib/custom-order-history/custom-order-history.component.d.ts +3 -0
  84. package/lib/custom-order-history/custom-order-history.module.d.ts +8 -6
  85. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +1 -4
  86. package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +1 -0
  87. package/lib/custom-saved-cart/saved-cart.service.d.ts +1 -0
  88. package/lib/custom-search/custom-search.component.d.ts +1 -1
  89. package/lib/directives/custom-paginatior.directive.d.ts +6 -1
  90. package/lib/find-store/find-store.component.d.ts +1 -1
  91. package/lib/my-account/account-statements/account-statements.component.d.ts +1 -1
  92. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +8 -2
  93. package/lib/my-account/my-account.component.d.ts +1 -1
  94. package/lib/my-account/my-account.module.d.ts +7 -5
  95. package/lib/my-team/my-team.component.d.ts +2 -0
  96. package/lib/my-team/my-team.module.d.ts +7 -6
  97. package/lib/services/endPointURL.d.ts +3 -0
  98. package/lib/services/user-account-detail-service.service.d.ts +27 -1
  99. package/lib/shared/CustomProduct.d.ts +1 -0
  100. package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +3 -1
  101. package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +3 -1
  102. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +17 -9
  103. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +8 -6
  104. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +11 -3
  105. package/lib/shared/date-range-picker/date-range-picker.component.d.ts +11 -3
  106. package/lib/shared/regEx.validator.d.ts +2 -0
  107. package/lib/shared/shared-components.module.d.ts +10 -8
  108. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +6 -4
  109. package/lib/spa-custom-header.module.d.ts +7 -6
  110. package/package.json +3 -1
  111. package/public-api.d.ts +1 -1
  112. package/esm2015/lib/custom-navigation/custom-navigation/custom-navigation.component.js +0 -121
  113. package/esm2015/lib/preference/preference.component.js +0 -19
  114. package/esm2015/lib/preference/preference.module.js +0 -45
  115. package/lib/preference/preference.component.d.ts +0 -8
  116. package/lib/preference/preference.module.d.ts +0 -10
@@ -44,11 +44,15 @@ export class SharedDownloadOrderComponent {
44
44
  this.cartDetails = res === null || res === void 0 ? void 0 : res.entries;
45
45
  this.totalPrice = (_a = res === null || res === void 0 ? void 0 : res.totalPrice) === null || _a === void 0 ? void 0 : _a.formattedValue;
46
46
  this.cartDetails.forEach((element) => {
47
- element.configList = [];
47
+ element.dimenstionsList = [];
48
+ element.angleList = [];
48
49
  element.configurationInfos.forEach((data) => {
49
- if (data.configurationLabel.startsWith("D", 0) ||
50
- data.configurationLabel.startsWith("A", 0))
51
- element.configList.push(data);
50
+ if (data.configurationLabel.startsWith("D", 0)) {
51
+ element.dimenstionsList.push(data);
52
+ }
53
+ else if (data.configurationLabel.startsWith("A", 0)) {
54
+ element.angleList.push(data);
55
+ }
52
56
  });
53
57
  });
54
58
  this.savePdf(divRef);
@@ -80,41 +84,126 @@ export class SharedDownloadOrderComponent {
80
84
  },
81
85
  });
82
86
  });
83
- }, 2000);
87
+ }, 500);
84
88
  }
85
89
  download(divRef) {
86
90
  this.getOrderDetails(divRef);
87
91
  }
88
- getProductImage(cart, thumbnail = true) {
89
- var _a, _b, _c, _d, _e, _f, _g;
90
- let detailImages = (_a = cart === null || cart === void 0 ? void 0 : cart.product) === null || _a === void 0 ? void 0 : _a.images;
91
- if (detailImages && ((_b = Object.keys(detailImages)) === null || _b === void 0 ? void 0 : _b.length) > 0) {
92
- for (let item of detailImages) {
93
- if (item.format == "cartIcon") {
94
- return item.url;
92
+ // Check if any value is empty or undefined
93
+ isNullOrEmpty(value) {
94
+ return value == null || value == undefined || value == "";
95
+ }
96
+ getColourDetails(configInfo, type) {
97
+ var _a, _b, _c, _d;
98
+ let name;
99
+ let background;
100
+ if (configInfo && (configInfo === null || configInfo === void 0 ? void 0 : configInfo.length) > 0) {
101
+ const colour = configInfo === null || configInfo === void 0 ? void 0 : configInfo.filter((col) => {
102
+ var _a;
103
+ return ((_a = col === null || col === void 0 ? void 0 : col.configurationLabel) === null || _a === void 0 ? void 0 : _a.toLowerCase()) == "color";
104
+ });
105
+ if (colour && (colour === null || colour === void 0 ? void 0 : colour.length)) {
106
+ name = (_b = (_a = colour[0]) === null || _a === void 0 ? void 0 : _a.configurationValue) === null || _b === void 0 ? void 0 : _b.split('|')[1];
107
+ background = (_d = (_c = colour[0]) === null || _c === void 0 ? void 0 : _c.configurationValue) === null || _d === void 0 ? void 0 : _d.split('|')[2];
108
+ }
109
+ }
110
+ return (type == "background") ? background : name;
111
+ }
112
+ getProductImage(cartDetails, thumbnail = true) {
113
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
114
+ if ((_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.flashingProduct) {
115
+ return ((cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) && ((_b = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _b === void 0 ? void 0 : _b.length) > 1) ? (_c = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[1]) === null || _c === void 0 ? void 0 : _c.downloadURL : (_d = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[0]) === null || _d === void 0 ? void 0 : _d.downloadURL;
116
+ }
117
+ let imageUrl = (_e = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _e === void 0 ? void 0 : _e.images;
118
+ if (cartDetails) {
119
+ const colorCode = (cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos) || (cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos[0])
120
+ ? (_g = (_f = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos[0]) === null || _f === void 0 ? void 0 : _f.configurationValue) === null || _g === void 0 ? void 0 : _g.split("|")[0]
121
+ : "";
122
+ if ((_h = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _h === void 0 ? void 0 : _h.finishedProduct) {
123
+ if (((_j = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _j === void 0 ? void 0 : _j.variantOptions) && ((_l = (_k = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _k === void 0 ? void 0 : _k.variantOptions) === null || _l === void 0 ? void 0 : _l.length) > 0) {
124
+ const imgDetails = (_o = (_m = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _m === void 0 ? void 0 : _m.variantOptions) === null || _o === void 0 ? void 0 : _o.filter((item) => {
125
+ var _a;
126
+ return (item === null || item === void 0 ? void 0 : item.code) == ((_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.code);
127
+ });
128
+ if (imgDetails && ((imgDetails === null || imgDetails === void 0 ? void 0 : imgDetails.image) || ((_p = imgDetails[0]) === null || _p === void 0 ? void 0 : _p.images))) {
129
+ const images = (imgDetails === null || imgDetails === void 0 ? void 0 : imgDetails.image) || ((_q = imgDetails[0]) === null || _q === void 0 ? void 0 : _q.images);
130
+ imageUrl = images === null || images === void 0 ? void 0 : images.filter((img) => {
131
+ var _a, _b;
132
+ return ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" && (img === null || img === void 0 ? void 0 : img.colorCode) == colorCode) ||
133
+ ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" &&
134
+ this.isNullOrEmpty(colorCode) &&
135
+ ((_b = (_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.images) === null || _b === void 0 ? void 0 : _b.length) <= 4);
136
+ });
137
+ }
138
+ }
139
+ else {
140
+ imageUrl = (_s = (_r = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _r === void 0 ? void 0 : _r.images) === null || _s === void 0 ? void 0 : _s.filter((img) => {
141
+ var _a, _b;
142
+ return ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" && (img === null || img === void 0 ? void 0 : img.colorCode) == colorCode) ||
143
+ ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" &&
144
+ this.isNullOrEmpty(colorCode) &&
145
+ ((_b = (_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.images) === null || _b === void 0 ? void 0 : _b.length) <= 4);
146
+ });
95
147
  }
96
148
  }
149
+ else {
150
+ imageUrl = (_u = (_t = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _t === void 0 ? void 0 : _t.images) === null || _u === void 0 ? void 0 : _u.filter((img) => {
151
+ var _a, _b;
152
+ return ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" && (img === null || img === void 0 ? void 0 : img.colorCode) == colorCode) ||
153
+ ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" &&
154
+ this.isNullOrEmpty(colorCode) &&
155
+ ((_b = (_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.images) === null || _b === void 0 ? void 0 : _b.length) <= 4);
156
+ });
157
+ }
158
+ }
159
+ else {
160
+ imageUrl = (_x = (_w = (_v = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _v === void 0 ? void 0 : _v.images) === null || _w === void 0 ? void 0 : _w.GALLERY) === null || _x === void 0 ? void 0 : _x.cartIcon;
97
161
  }
98
162
  let srcUrl;
99
- if ((cart === null || cart === void 0 ? void 0 : cart.attachments) &&
100
- ((_c = cart === null || cart === void 0 ? void 0 : cart.attachments) === null || _c === void 0 ? void 0 : _c.length) &&
101
- ((_d = cart === null || cart === void 0 ? void 0 : cart.product) === null || _d === void 0 ? void 0 : _d.flashingProduct)) {
163
+ if ((cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) &&
164
+ ((_y = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _y === void 0 ? void 0 : _y.length) &&
165
+ ((_z = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _z === void 0 ? void 0 : _z.flashingProduct)) {
102
166
  srcUrl =
103
- thumbnail && ((_e = cart === null || cart === void 0 ? void 0 : cart.attachments) === null || _e === void 0 ? void 0 : _e.length) > 1
104
- ? (_f = cart === null || cart === void 0 ? void 0 : cart.attachments[1]) === null || _f === void 0 ? void 0 : _f.downloadURL
105
- : (_g = cart === null || cart === void 0 ? void 0 : cart.attachments[0]) === null || _g === void 0 ? void 0 : _g.downloadURL;
106
- detailImages = srcUrl === null || srcUrl === void 0 ? void 0 : srcUrl.replace("&attachment=true", "");
167
+ thumbnail && ((_0 = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _0 === void 0 ? void 0 : _0.length) > 1
168
+ ? (_1 = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[1]) === null || _1 === void 0 ? void 0 : _1.downloadURL
169
+ : (_2 = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[0]) === null || _2 === void 0 ? void 0 : _2.downloadURL;
170
+ imageUrl = {
171
+ url: srcUrl
172
+ };
107
173
  }
108
- if (detailImages && (detailImages === null || detailImages === void 0 ? void 0 : detailImages.length) > 0) {
109
- return detailImages;
110
- }
111
- else {
112
- return this.noImage;
174
+ return (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.url) || (imageUrl && (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.length) > 0) ? (_3 = imageUrl[0]) === null || _3 === void 0 ? void 0 : _3.url : this.noImage;
175
+ }
176
+ hasColour(cartDetails) {
177
+ var _a, _b, _c, _d, _e, _f, _g, _h;
178
+ if ((_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.finishedProduct) {
179
+ const code = (_b = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _b === void 0 ? void 0 : _b.code;
180
+ const colour = (_d = (_c = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _c === void 0 ? void 0 : _c.variantOptions) === null || _d === void 0 ? void 0 : _d.filter((item) => item.code == code);
181
+ if (colour && ((_e = colour[0]) === null || _e === void 0 ? void 0 : _e.colours) && ((_g = (_f = colour[0]) === null || _f === void 0 ? void 0 : _f.colours) === null || _g === void 0 ? void 0 : _g.length) > 0) {
182
+ cartDetails.colour = (_h = colour[0]) === null || _h === void 0 ? void 0 : _h.colours[0];
183
+ return true;
184
+ }
113
185
  }
186
+ return false;
187
+ }
188
+ // Get Summary Heading
189
+ getClassifications(data) {
190
+ let featureArray = [];
191
+ data === null || data === void 0 ? void 0 : data.forEach((element) => {
192
+ element === null || element === void 0 ? void 0 : element.features.forEach((feature) => {
193
+ var _a, _b, _c;
194
+ if (feature === null || feature === void 0 ? void 0 : feature.featureUnit) {
195
+ featureArray.push(((_a = feature === null || feature === void 0 ? void 0 : feature.featureValues[0]) === null || _a === void 0 ? void 0 : _a.value) + ' ' + ((_b = feature === null || feature === void 0 ? void 0 : feature.featureUnit) === null || _b === void 0 ? void 0 : _b.symbol));
196
+ }
197
+ else {
198
+ featureArray.push((_c = feature === null || feature === void 0 ? void 0 : feature.featureValues[0]) === null || _c === void 0 ? void 0 : _c.value);
199
+ }
200
+ });
201
+ });
202
+ return featureArray === null || featureArray === void 0 ? void 0 : featureArray.join(" | ");
114
203
  }
115
204
  }
116
205
  SharedDownloadOrderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedDownloadOrderComponent, deps: [{ token: i1.CmsService }, { token: i0.ChangeDetectorRef }, { token: i2.OrderFacade }, { token: i3.CartService }], target: i0.ɵɵFactoryTarget.Component });
117
- SharedDownloadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SharedDownloadOrderComponent, selector: "app-shared-download-order", inputs: { orderDetailsView: "orderDetailsView", cartDetailsView: "cartDetailsView", isOrder: "isOrder" }, viewQueries: [{ propertyName: "downLoadPdf", first: true, predicate: ["downLoadPDF"], descendants: true }], ngImport: i0, template: "<div class=\"loading \" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<ng-container *ngIf=\"!isOrder else noOrder\">\r\n<div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"text-center download_btn\">\r\n <p class=\"order-action-buttons\">\r\n <a class=\"btn secondary-button mr-md-5\" title=\"Continue Shopping\" href=\"/c/1\">Continue Shopping</a>\r\n\r\n <a class=\"btn primary-button customBtn\" title=\"Download\" (click)=\"download(divRef)\">Download</a>\r\n </p>\r\n </div>\r\n </div>\r\n</div>\r\n</ng-container>\r\n<ng-template #noOrder>\r\n <a (click)=\"download(divRef)\" #downLoadPDF></a>\r\n</ng-template>\r\n<div [ngStyle]=\"{ 'display': downloadView ? 'block' : 'none',position:'absolute',top:'-10000px'}\" #divRef class=\"container printedContainer\">\r\n <div class=\"row boxMargin fixed-width-row\">\r\n\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx\">\r\n <div class=\"row\">\r\n <ul class=\"col-12 deliveryInfo\">\r\n <div class=\"firstChild\">\r\n <div class=\"order-heading\"> Order Submission</div>\r\n <label> {{orderDetails?.code}} </label>\r\n </div>\r\n <li>\r\n <label> Account:</label>\r\n <span class=\"infoValue\">\r\n {{orderDetails?.orgCustomer?.orgUnit?.name}}\r\n </span>\r\n </li>\r\n <li>\r\n <label>Account NO.:</label>\r\n <span class=\"infoValue\">{{orderDetails?.orgCustomer?.orgUnit?.uid}}</span>\r\n </li>\r\n <li>\r\n <label>PO Number:</label>\r\n <span class=\"infoValue\">{{orderDetails?.purchaseOrderNumber}}</span>\r\n </li>\r\n <li>\r\n <label>Submitted On:</label>\r\n <span class=\"infoValue\">{{orderDetails?.created | date:'dd/MM/yyyy'}}</span>\r\n </li>\r\n <li>\r\n <label>Submitted By:</label>\r\n <span class=\"infoValue\"> {{orderDetails?.orgCustomer?.name}}</span>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx\">\r\n <div class=\"row\">\r\n <ul class=\"col-12 deliveryInfo\">\r\n <div class=\"Childbox\">\r\n\r\n </div>\r\n <li>\r\n <div class=\"d-flex\"> <img class=\"pickupdelivery-image\" *ngIf=\"orderDetails?.deliveryMode?.code =='standard_delivery'\" src=\"../../../../../assets/images/delivery.svg\" alt=\"Delivery\" title=\"Delivery\">\r\n <img *ngIf=\"orderDetails?.deliveryMode?.code !='standard_delivery'\" class=\"pickupdelivery-image\" src=\"../../../../assets/images/pickup.svg\" alt=\"Click & Collect\" title=\"Click & Collect\">\r\n <div class=\"d-flex flex-column pl-3\">\r\n <span> <b> Delivery Method:</b>\r\n {{orderDetails?.deliveryMode?.name}}\r\n </span>\r\n <p class=\"mb-0 pt-3\">{{orderDetails?.deliveryMode?.description}}</p>\r\n </div>\r\n </div>\r\n </li>\r\n <li>\r\n <label> \r\n <span *ngIf=\"orderDetails?.deliveryMode?.code =='standard_delivery'\">Delivery Date:</span>\r\n <span *ngIf=\"orderDetails?.deliveryMode?.code !='standard_delivery'\">Pickup Date:</span>\r\n </label>\r\n <span class=\"infoValue\">\r\n {{orderDetails?.expectedToDate.split(' ')[0]}}\r\n </span>\r\n </li>\r\n <li>\r\n <label>\r\n <span *ngIf=\"orderDetails?.deliveryMode?.code =='standard_delivery'\">Delivery Time:</span>\r\n <span *ngIf=\"orderDetails?.deliveryMode?.code !='standard_delivery'\">Pickup Time:</span>\r\n </label>\r\n <span class=\"infoValue\">\r\n {{orderDetails?.expectedFromDate?.split(' ')[1] }} \r\n {{orderDetails?.expectedFromDate?.split(' ')[2] }} - \r\n {{orderDetails?.expectedToDate?.split(' ')[1] }} \r\n {{orderDetails?.expectedToDate?.split(' ')[2] }}\r\n </span>\r\n </li>\r\n <li>\r\n <label>\r\n <span *ngIf=\"orderDetails?.deliveryMode?.code =='standard_delivery'\">Delivery Address:</span>\r\n <span *ngIf=\"orderDetails?.deliveryMode?.code !='standard_delivery'\">Pickup Address:</span>\r\n </label>\r\n <span class=\"infoValue\"> {{orderDetails?.deliveryAddress?.formattedAddress}}</span>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx d-flex flex-column\">\r\n <img class=\"delivery_logo\" src=\"../../../../assets/images/logo-black.svg\" alt=\"logo\">\r\n <div class=\"align-notes\">\r\n <label class=\"font-weight-bold\">Delivery Notes:</label>\r\n\r\n <span class=\"mb-0\">{{orderDetails?.deliveryNotes}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"revieworder-table-container\">\r\n <div class=\"row revieworder-header-container fixed-width-row\">\r\n <div class=\"col-sm-1 py-2 count-width\">#</div>\r\n <div class=\"col-sm-3 py-2\">ITEM</div>\r\n <div class=\"col-sm-2 py-2\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2 py-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL PRICE</div>\r\n </div>\r\n <div class=\"row revieworder-body-container\" *ngFor=\"let cart of cartDetails;let i = index\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"row fixed-width-row\">\r\n <div class=\"col-sm-1 count-width\">\r\n <span> 0{{i +1}}</span>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"row py-3 product-image-container\">\r\n <div class=\"col-sm-4 p-md-0 col-lg-2\">\r\n <img *ngIf=\"cart?.attachments && cart?.attachments[0]?.mime !== 'application/pdf'\" [src]=\"getProductImage(cart)\" alt=\"product image\" class=\"product-img-width\">\r\n <img *ngIf=\"cart?.attachments && cart?.attachments[0]?.mime == 'application/pdf'\" class=\"img-fluid\" src=\"../../../../assets//images//pdf-icon.svg\" alt=\"product image\">\r\n\r\n </div>\r\n <div class=\"col-sm-8 col-lg-10\">\r\n <p class=\" reviewproduct-name mb-2\">{{cart?.product?.name}}</p>\r\n <p class=\"sku-text\">SKU: {{cart?.product?.code }}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"cart?.product?.classifications\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 pl-md-0 mb-2 attributes\">\r\n <span *ngFor=\"let attributes of cart?.product && cart?.product?.classifications && cart?.product?.classifications[0] && cart?.product?.classifications[0]?.features;last as isLast\">\r\n {{attributes?.featureValues[0]?.value }} <span *ngIf=\"!isLast\"> | </span>\r\n </span>\r\n mm\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{cart?.jobReference || '-'}}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">{{cart.quantityDouble}} {{cart?.basePrice?.unitType}}</div>\r\n <div class=\"col-sm-2 py-3\">{{cart?.basePrice?.formattedValue}}/{{cart?.basePrice?.unitType}}</div>\r\n <div class=\"col-sm-2 py-3\">{{cart?.totalPrice?.formattedValue}}\r\n <span class=\"d-block\"> excl GST and freight</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12 pl-md-0\">\r\n <ng-container *ngIf=\"cart?.configurationInfos.length\">\r\n <p class=\"colors-paragraph mb-0\">\r\n <span class=\"revieworder-color mr-3\" [ngStyle]=\"{ background: cart?.configurationInfos[0]?.configurationValue.split('|') | slice:2}\"></span> {{cart?.configurationInfos[0]?.configurationValue.split('|') | slice:1:2}}\r\n </p>\r\n <p class=\"m-2\">\r\n <span *ngFor=\"let value of cart?.configurationInfos\">\r\n <span *ngIf=\"value.configurationLabel == 'TOTAL_WIDTH_RANGE'\"> Total Width Range: {{value?.configurationValue}} </span>\r\n <span *ngIf=\"value.configurationLabel == 'NBR_OF_BENDS'\"> | No. of Bends:{{value?.configurationValue}} </span>\r\n </span>\r\n </p>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\" *ngFor=\"let data of cart?.configList; let i= index;\">\r\n <div>\r\n {{data?.configurationLabel}} :{{data?.configurationValue}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-10\" *ngIf=\"cart?.product?.flashingProduct\">\r\n <img *ngIf=\"cart?.attachments[0]?.mime !== 'application/pdf'\" class=\"img-fluid\" [src]=\"cart?.attachments[0]?.downloadURL\" alt=\"product image\">\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos?.length>0\">\r\n <div class=\"revieworder-collapse\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6 bundle-details\">\r\n <div class=\"row bundle-details-header\">\r\n <div class=\"col-3\">Quantity</div>\r\n <div class=\"col-3\">Length (LM)</div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">Bundle</div>\r\n <div class=\"col-3\">Reference</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let subLine of cart?.subLineConfigInfos\">\r\n <div class=\"col-3\">{{subLine?.quantity}}</div>\r\n <div class=\"col-3\">{{subLine?.length | number:'0.3-3'}}</div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">{{subLine?.bundleName}}</div>\r\n <div class=\"col-3\">{{subLine?.reference}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"cart?.product?.flashingProduct && cart?.productConfiguredInfos && cart?.productConfiguredInfos?.length>0\">\r\n <div class=\"flashing-block col-sm-12\" *ngFor=\"let data of cart?.productConfiguredInfos\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Grith: +{{data?.girth}}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{data?.quantityDouble}}{{data?.unitType}}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{data?.basePrice?.formattedValue}}/{{data?.unitType}}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{data?.totalPrice?.formattedValue}}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row d-flex mt-3\">\r\n <div class=\"col-md-12\">\r\n <p class=\"mb-0 review-total-text text-right\">Total</p>\r\n <p class=\"review-total-value mb-2 text-right\">{{orderDetails?.totalPrice?.formattedValue}} </p>\r\n <p><span class=\"d-block excltext text-right\"> Excluding GST, freight and sundry charges</span></p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row fixed-width-row\" *ngIf=\"orderMessage\">\r\n <div class=\"col-sm-12 pl-0 order-print-bottom\">\r\n <div class=\"text-left\" [innerHTML]=\"orderMessage\"></div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.hide{display:none!important}.show{display:block}.customBtn{padding:8px 60px}.printedContainer{width:1200px;max-width:1200px;padding:32px}.fixed-width-row{flex-wrap:nowrap}.revieworder-table-container{padding-bottom:3rem}.revieworder-table-container .revieworder-header-container{background:#646363;color:#fff;font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-header-container .count-width{max-width:4%}.revieworder-table-container .review-total-text{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .review-total-value{font-size:var(--fontsize40);font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .excltext{font-size:var(--fontsize16);color:#6f6f6f}.revieworder-table-container .revieworder-body-container{border-bottom:1px solid #E0E0E0;padding-bottom:1rem}.revieworder-table-container .revieworder-body-container .count-width{top:15px;max-width:4%;position:relative}.revieworder-table-container .revieworder-body-container .attributes{position:relative;top:-8px}.revieworder-table-container .revieworder-body-container .product-image-container{display:flex}.revieworder-table-container .revieworder-body-container .product-image-container .product-img-width{width:60px;max-width:60px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-image{width:71px;height:71px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-name{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container .product-image-container .sku-text{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;color:#6f6f6f}.revieworder-table-container .revieworder-body-container .seemoredetails-link{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif;text-decoration:underline;cursor:pointer}.revieworder-table-container .revieworder-body-container .seemoredetails-link:hover{color:#b61828}.revieworder-table-container .revieworder-body-container .revieworder-collapse{padding:8px}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details{width:600px;padding:1rem;line-height:2.5rem}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details .bundle-details-header{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .colors-paragraph{display:flex;align-items:center;padding-left:8px}.revieworder-table-container .colors-paragraph .revieworder-color{width:20px;height:20px;border:1px solid #000000;display:inline-flex}.delivery_logo{padding:10px;width:100%;margin:0 0 30px}.boxMargin{margin:16px 0}.boxMargin .deliveryInfoBx{padding:1.5rem;box-sizing:border-box}.boxMargin .deliveryInfoBx .align-notes{margin-top:-10px}.boxMargin .deliveryInfoBx:nth-child(2),.boxMargin .deliveryInfoBx:nth-child(3){border-left:0}.boxMargin .deliveryInfo .Childbox{height:100px}.boxMargin .deliveryInfo .firstChild{padding-bottom:20px}.boxMargin .deliveryInfo .pickupdelivery-image{padding:8px;border:1px solid #A6A6A5;border-radius:10px}.boxMargin .deliveryInfo .order-heading{color:#b61828;font-size:28px}.boxMargin .deliveryInfo label{font-family:\"Arial Bold\",sans-serif;display:inline-block;color:#1d1d1b}.boxMargin .deliveryInfo li{display:flex;line-height:24px;padding:3px 0}.boxMargin .deliveryInfo li label{width:40%;font-family:\"Arial Bold\",sans-serif;display:inline-block;font-size:large;color:#1d1d1b}.boxMargin .deliveryInfo li .infoValue{width:60%;display:inline-block}.boxMargin .deliveryInfo li .infoValue a{text-decoration:underline;color:#b61828}.order-print-bottom{padding:2rem;border-top:1px solid #1D1D1B}.flashing-block{background-color:#e8e8e8;padding:12px;border-bottom:1px solid #C6C6C6;margin-right:-15px;margin-left:-15px}.flashing-block .flash-title{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.flashing-block .skuId{color:#707070;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.flashing-block .gst-text{display:block;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe, "date": i4.DatePipe, "slice": i4.SlicePipe, "number": i4.DecimalPipe } });
206
+ SharedDownloadOrderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SharedDownloadOrderComponent, selector: "app-shared-download-order", inputs: { isOrder: "isOrder" }, viewQueries: [{ propertyName: "downLoadPdf", first: true, predicate: ["downLoadPDF"], descendants: true }], ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading&#8230;</div>\r\n<ng-container *ngIf=\"!isOrder; else noOrder\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"text-center download_btn\">\r\n <p class=\"order-action-buttons\">\r\n <a\r\n class=\"btn secondary-button mr-md-5\"\r\n title=\"Continue Shopping\"\r\n href=\"/c/1\"\r\n >Continue Shopping</a\r\n >\r\n\r\n <a\r\n class=\"btn primary-button customBtn\"\r\n title=\"Download\"\r\n (click)=\"download(divRef)\"\r\n >Download</a\r\n >\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n<ng-template #noOrder>\r\n <a (click)=\"download(divRef)\" #downLoadPDF></a>\r\n</ng-template>\r\n<div\r\n [ngStyle]=\"{\r\n display: downloadView ? 'block' : 'none',\r\n position: 'absolute',\r\n top: '-10000px'\r\n }\"\r\n #divRef\r\n class=\"container printedContainer\"\r\n>\r\n <div class=\"row boxMargin fixed-width-row\">\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx\">\r\n <div class=\"row\">\r\n <ul class=\"col-12 deliveryInfo\">\r\n <div class=\"firstChild\">\r\n <div class=\"order-heading\">Order Submission</div>\r\n <label> {{ orderDetails?.code }} </label>\r\n </div>\r\n <li>\r\n <label> Account:</label>\r\n <span class=\"infoValue\">\r\n {{ orderDetails?.orgCustomer?.orgUnit?.name }}\r\n </span>\r\n </li>\r\n <li>\r\n <label>Account NO.:</label>\r\n <span class=\"infoValue\">{{\r\n orderDetails?.orgCustomer?.orgUnit?.displayUid\r\n }}</span>\r\n </li>\r\n <li>\r\n <label>PO Number:</label>\r\n <span class=\"infoValue\">{{\r\n orderDetails?.purchaseOrderNumber\r\n }}</span>\r\n </li>\r\n <li>\r\n <label>Submitted On:</label>\r\n <span class=\"infoValue\">{{\r\n orderDetails?.created | date : \"dd/MM/yyyy\"\r\n }}</span>\r\n </li>\r\n <li>\r\n <label>Submitted By:</label>\r\n <span class=\"infoValue\">\r\n {{ orderDetails?.orgCustomer?.name }}</span\r\n >\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx\">\r\n <div class=\"row\">\r\n <ul class=\"col-12 deliveryInfo\">\r\n <div class=\"Childbox\"></div>\r\n <li>\r\n <div class=\"d-flex\">\r\n <img\r\n class=\"pickupdelivery-image\"\r\n *ngIf=\"orderDetails?.deliveryMode?.code == 'standard_delivery'\"\r\n src=\"../../../../../assets/images/delivery.svg\"\r\n alt=\"Delivery\"\r\n title=\"Delivery\"\r\n />\r\n <img\r\n *ngIf=\"orderDetails?.deliveryMode?.code != 'standard_delivery'\"\r\n class=\"pickupdelivery-image\"\r\n src=\"../../../../assets/images/pickup.svg\"\r\n alt=\"Click & Collect\"\r\n title=\"Click & Collect\"\r\n />\r\n <div class=\"d-flex flex-column pl-3\">\r\n <span>\r\n <b> Delivery Method:</b>\r\n {{ orderDetails?.deliveryMode?.name }}\r\n </span>\r\n <p class=\"mb-0 pt-3\">\r\n {{ orderDetails?.deliveryMode?.description }}\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n <li>\r\n <label>\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code == 'standard_delivery'\"\r\n >Delivery Date:</span\r\n >\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code != 'standard_delivery'\"\r\n >Pickup Date:</span\r\n >\r\n </label>\r\n <span class=\"infoValue\">\r\n {{ orderDetails?.expectedToDate.split(\" \")[0] }}\r\n </span>\r\n </li>\r\n <li>\r\n <label>\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code == 'standard_delivery'\"\r\n >Delivery Time:</span\r\n >\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code != 'standard_delivery'\"\r\n >Pickup Time:</span\r\n >\r\n </label>\r\n <span class=\"infoValue\">\r\n {{ orderDetails?.expectedFromDate?.split(\" \")[1] }}\r\n {{ orderDetails?.expectedFromDate?.split(\" \")[2] }} -\r\n {{ orderDetails?.expectedToDate?.split(\" \")[1] }}\r\n {{ orderDetails?.expectedToDate?.split(\" \")[2] }}\r\n </span>\r\n </li>\r\n <li>\r\n <label>\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code == 'standard_delivery'\"\r\n >Delivery Address:</span\r\n >\r\n <span\r\n *ngIf=\"orderDetails?.deliveryMode?.code != 'standard_delivery'\"\r\n >Pickup Address:</span\r\n >\r\n </label>\r\n <span class=\"infoValue\">\r\n {{ orderDetails?.deliveryAddress?.formattedAddress }}</span\r\n >\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4 col-sm-6 deliveryInfoBx d-flex flex-column\">\r\n <img\r\n class=\"delivery_logo\"\r\n src=\"../../../../assets/images/logo-black.svg\"\r\n alt=\"logo\"\r\n />\r\n <div class=\"align-notes\">\r\n <label class=\"font-weight-bold\">Delivery Notes:</label>\r\n\r\n <span class=\"mb-0\">{{ orderDetails?.deliveryNotes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"revieworder-table-container\">\r\n <div class=\"row revieworder-header-container fixed-width-row\">\r\n <div class=\"col-sm-1 py-2 count-width\">#</div>\r\n <div class=\"col-sm-3 py-2\">ITEM</div>\r\n <div class=\"col-sm-2 py-2\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2 py-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL PRICE</div>\r\n </div>\r\n <div\r\n class=\"row revieworder-body-container\"\r\n *ngFor=\"let cart of cartDetails; let i = index\"\r\n >\r\n <div class=\"col-sm-12\">\r\n <div class=\"row fixed-width-row\">\r\n <div class=\"col-sm-1 count-width\">\r\n <span> 0{{ i + 1 }}</span>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"row py-3 product-image-container\">\r\n <div class=\"col-sm-4 p-md-0 col-lg-2\">\r\n <img\r\n *ngIf=\"\r\n cart?.attachments &&\r\n cart?.attachments[0]?.mime !== 'application/pdf'\r\n \"\r\n [src]=\"getProductImage(cart)\"\r\n alt=\"product image\"\r\n class=\"product-img-width\"\r\n />\r\n <img\r\n *ngIf=\"\r\n cart?.attachments &&\r\n cart?.attachments[0]?.mime == 'application/pdf'\r\n \"\r\n class=\"img-fluid\"\r\n src=\"../../../../assets//images//pdf-icon.svg\"\r\n alt=\"product image\"\r\n />\r\n </div>\r\n <div class=\"col-sm-8 col-lg-10\">\r\n <p class=\"reviewproduct-name mb-2\">{{ cart?.product?.name }}</p>\r\n <p class=\"sku-text\">SKU: {{ cart?.product?.code }}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"cart?.product?.classifications\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 pl-md-0 mb-2 attributes\">\r\n <span\r\n *ngIf=\"\r\n cart?.product &&\r\n cart?.product?.classifications &&\r\n cart?.product?.classifications[0] &&\r\n cart?.product?.classifications[0]?.features;\r\n \"\r\n >\r\n {{ getClassifications(cartDetails[i]?.product?.classifications) }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.jobReference || \"-\" }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart.quantityDouble }} {{ cart?.basePrice?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.basePrice?.formattedValue }}/{{\r\n cart?.basePrice?.unitType\r\n }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.totalPrice?.formattedValue }}\r\n <span class=\"d-block\"> excl GST and freight</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12 pl-md-0\">\r\n <ng-container\r\n *ngIf=\"cart?.configurationInfos?.length; else accessoriesColor\"\r\n >\r\n <p\r\n class=\"colors-paragraph mb-0\"\r\n *ngIf=\"!cart?.product?.flashingProduct; else flashingColour\"\r\n >\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{\r\n background:\r\n cart?.configurationInfos[0]?.configurationValue.split('|')\r\n | slice : 2\r\n }\"\r\n ></span>\r\n {{\r\n cart?.configurationInfos[0]?.configurationValue.split(\"|\")\r\n | slice : 1 : 2\r\n }}\r\n </p>\r\n <ng-template #flashingColour>\r\n <p class=\"colors-paragraph mb-0\">\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{\r\n background: getColourDetails(\r\n cartDetails[i]?.configurationInfos,\r\n 'background'\r\n )\r\n }\"\r\n ></span>\r\n {{ getColourDetails(cartDetails[i]?.configurationInfos, \"name\") }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #accessoriesColor>\r\n <p class=\"colors-paragraph mb-0\" *ngIf=\"hasColour(cart)\">\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{\r\n background: cart?.colour?.hexadecimalCode\r\n }\"\r\n ></span>\r\n {{ cart?.colour?.name }}\r\n </p>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"cart?.configurationInfos?.length\">\r\n <p class=\"m-2\">\r\n <span *ngFor=\"let value of cart?.configurationInfos\">\r\n <span *ngIf=\"value.configurationLabel == 'TOTAL_WIDTH_RANGE'\">\r\n Total Width Range: {{ value?.configurationValue }}\r\n </span>\r\n <span *ngIf=\"value.configurationLabel == 'NBR_OF_BENDS'\">\r\n | No. of Bends:{{ value?.configurationValue }}\r\n </span>\r\n </span>\r\n </p>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-sm-1\">\r\n <div class=\"row\">\r\n <div\r\n *ngFor=\"let data of cart?.angleList; let i = index\"\r\n class=\"col-sm-12\"\r\n >\r\n {{ data?.configurationLabel }} :\r\n {{ data?.configurationValue }}\r\n </div>\r\n </div>\r\n <div></div>\r\n </div>\r\n <div class=\"col-sm-5\">\r\n <div class=\"row\">\r\n <div\r\n *ngFor=\"let data of cart?.dimenstionsList; let i = index\"\r\n class=\"col-sm-12\"\r\n >\r\n {{ data?.configurationLabel }} :\r\n {{ data?.configurationValue }}\r\n </div>\r\n </div>\r\n <div></div>\r\n </div>\r\n <div class=\"col-sm-5\" *ngIf=\"cart?.product?.flashingProduct\">\r\n <img\r\n *ngIf=\"cart?.attachments[0]?.mime !== 'application/pdf'\"\r\n class=\"img-fluid\"\r\n [src]=\"cart?.attachments[0]?.downloadURL\"\r\n alt=\"product image\"\r\n />\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos?.length > 0\">\r\n <div class=\"revieworder-collapse\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6 bundle-details\">\r\n <div class=\"row bundle-details-header\">\r\n <div class=\"col-3\">Quantity</div>\r\n <div class=\"col-3\">Length (LM)</div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">Bundle</div>\r\n <div class=\"col-3\">Reference</div>\r\n </ng-container>\r\n </div>\r\n <div\r\n class=\"row\"\r\n *ngFor=\"let subLine of cart?.subLineConfigInfos\"\r\n >\r\n <div class=\"col-3\">{{ subLine?.quantity }}</div>\r\n <div class=\"col-3\">\r\n {{ subLine?.length | number : \"0.3-3\" }}\r\n </div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">{{ subLine?.bundleName }}</div>\r\n <div class=\"col-3\">{{ subLine?.reference }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n cart?.product?.flashingProduct &&\r\n cart?.productConfiguredInfos &&\r\n cart?.productConfiguredInfos?.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"flashing-block col-sm-12\"\r\n *ngFor=\"let data of cart?.productConfiguredInfos\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Grith: +{{ data?.girth }}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{ data?.quantityDouble }}{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.basePrice?.formattedValue }}/{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.totalPrice?.formattedValue }}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row d-flex mt-3\">\r\n <div class=\"col-md-12\">\r\n <p class=\"mb-0 review-total-text text-right\">Total</p>\r\n <p class=\"review-total-value mb-2 text-right\">\r\n {{ orderDetails?.totalPrice?.formattedValue }}\r\n </p>\r\n <p>\r\n <span class=\"d-block excltext text-right\">\r\n Excluding GST, freight and sundry charges</span\r\n >\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row fixed-width-row\" *ngIf=\"orderMessage\">\r\n <div class=\"col-sm-12 pl-0 order-print-bottom\">\r\n <div class=\"text-left\" [innerHTML]=\"orderMessage\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.hide{display:none!important}.show{display:block}.customBtn{padding:8px 60px}.printedContainer{width:1200px;max-width:1200px;padding:32px}.fixed-width-row{flex-wrap:nowrap}.revieworder-table-container{padding-bottom:3rem}.revieworder-table-container .revieworder-header-container{background:#646363;color:#fff;font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-header-container .count-width{max-width:4%}.revieworder-table-container .review-total-text{font-size:var(--fontsize24);font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .review-total-value{font-size:var(--fontsize40);font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .excltext{font-size:var(--fontsize16);color:#6f6f6f}.revieworder-table-container .revieworder-body-container{border-bottom:1px solid #E0E0E0;padding-bottom:1rem}.revieworder-table-container .revieworder-body-container .count-width{top:15px;max-width:4%;position:relative}.revieworder-table-container .revieworder-body-container .attributes{position:relative;top:-8px}.revieworder-table-container .revieworder-body-container .product-image-container{display:flex}.revieworder-table-container .revieworder-body-container .product-image-container .product-img-width{width:60px;max-width:60px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-image{width:71px;height:71px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-name{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container .product-image-container .sku-text{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;color:#6f6f6f}.revieworder-table-container .revieworder-body-container .seemoredetails-link{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif;text-decoration:underline;cursor:pointer}.revieworder-table-container .revieworder-body-container .seemoredetails-link:hover{color:#b61828}.revieworder-table-container .revieworder-body-container .revieworder-collapse{padding:8px}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details{width:600px;padding:1rem;line-height:2.5rem}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details .bundle-details-header{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .colors-paragraph{display:flex;align-items:center;padding-left:8px}.revieworder-table-container .colors-paragraph .revieworder-color{width:20px;height:20px;border:1px solid #000000;display:inline-flex}.delivery_logo{padding:10px;width:100%;margin:0 0 30px}.boxMargin{margin:16px 0}.boxMargin .deliveryInfoBx{padding:1.5rem;box-sizing:border-box}.boxMargin .deliveryInfoBx .align-notes{margin-top:-10px}.boxMargin .deliveryInfoBx:nth-child(2),.boxMargin .deliveryInfoBx:nth-child(3){border-left:0}.boxMargin .deliveryInfo .Childbox{height:100px}.boxMargin .deliveryInfo .firstChild{padding-bottom:20px}.boxMargin .deliveryInfo .pickupdelivery-image{padding:8px;border:1px solid #A6A6A5;border-radius:10px}.boxMargin .deliveryInfo .order-heading{color:#b61828;font-size:28px}.boxMargin .deliveryInfo label{font-family:\"Arial Bold\",sans-serif;display:inline-block;color:#1d1d1b}.boxMargin .deliveryInfo li{display:flex;line-height:24px;padding:3px 0}.boxMargin .deliveryInfo li label{width:40%;font-family:\"Arial Bold\",sans-serif;display:inline-block;font-size:large;color:#1d1d1b}.boxMargin .deliveryInfo li .infoValue{width:60%;display:inline-block}.boxMargin .deliveryInfo li .infoValue a{text-decoration:underline;color:#b61828}.order-print-bottom{padding:2rem;border-top:1px solid #1D1D1B}.flashing-block{background-color:#e8e8e8;padding:12px;border-bottom:1px solid #C6C6C6;margin-right:-15px;margin-left:-15px}.flashing-block .flash-title{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.flashing-block .skuId{color:#707070;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.flashing-block .gst-text{display:block;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe, "date": i4.DatePipe, "slice": i4.SlicePipe, "number": i4.DecimalPipe } });
118
207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SharedDownloadOrderComponent, decorators: [{
119
208
  type: Component,
120
209
  args: [{
@@ -122,14 +211,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
122
211
  templateUrl: './shared-download-order.component.html',
123
212
  styleUrls: ['./shared-download-order.component.scss'],
124
213
  }]
125
- }], ctorParameters: function () { return [{ type: i1.CmsService }, { type: i0.ChangeDetectorRef }, { type: i2.OrderFacade }, { type: i3.CartService }]; }, propDecorators: { orderDetailsView: [{
126
- type: Input
127
- }], cartDetailsView: [{
128
- type: Input
129
- }], downLoadPdf: [{
214
+ }], ctorParameters: function () { return [{ type: i1.CmsService }, { type: i0.ChangeDetectorRef }, { type: i2.OrderFacade }, { type: i3.CartService }]; }, propDecorators: { downLoadPdf: [{
130
215
  type: ViewChild,
131
216
  args: ["downLoadPDF"]
132
217
  }], isOrder: [{
133
218
  type: Input
134
219
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWRvd25sb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL3NoYXJlZC1kb3dubG9hZC1vcmRlci9zaGFyZWQtZG93bmxvYWQtb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9zaGFyZWQvc2hhcmVkLWRvd25sb2FkLW9yZGVyL3NoYXJlZC1kb3dubG9hZC1vcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFVdkMsTUFBTSxPQUFPLDRCQUE0QjtJQW1CdkMsWUFDVSxVQUFzQixFQUN2QixFQUFxQixFQUNsQixXQUF3QixFQUMxQixXQUF3QjtRQUh4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3ZCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBdEJsQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBT3JELFFBQUcsR0FBUSxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLGdCQUFXLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FB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SSxDQUFDLE9BQU8sQ0FBQztTQUNyQjtJQUNILENBQUM7OzBIQS9IVSw0QkFBNEI7OEdBQTVCLDRCQUE0Qix1UkNkekMsb2pkQTJQQTs0RkQ3T2EsNEJBQTRCO2tCQUx4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2lCQUN0RDtxTEFHVSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFhb0IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNmLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcclxuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZic7XHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPcmRlckZhY2FkZSB9IGZyb20gJ0BzcGFydGFjdXMvb3JkZXIvcm9vdCc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zaGFyZWQtZG93bmxvYWQtb3JkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGFyZWQtZG93bmxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NoYXJlZC1kb3dubG9hZC1vcmRlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVkRG93bmxvYWRPcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIEBJbnB1dCgpIG9yZGVyRGV0YWlsc1ZpZXc6IGFueTtcclxuICBASW5wdXQoKSBjYXJ0RGV0YWlsc1ZpZXc6IGFueTtcclxuXHJcbiAgb3JkZXJEZXRhaWxzOmFueTtcclxuICBjYXJ0RGV0YWlsczphbnk7XHJcbiAgdG90YWxQcmljZTogYW55O1xyXG4gIGVudjogYW55ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW52Jyk7XHJcbiAgZW52aXJvbm1lbnQgOiBhbnkgPSBKU09OLnBhcnNlKHRoaXMuZW52KTtcclxuICBvY2NlQmFzZVVybCA9IHRoaXMuZW52aXJvbm1lbnQub2NjQmFzZVVybDtcclxuICBub0ltYWdlID0gXCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3BkcC1ub2ltYWdlLnN2Z1wiO1xyXG4gIG9yZGVyTWVzc2FnZTogYW55O1xyXG4gIGRvd25sb2FkVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhZ2UgPSA0OTA7XHJcbiAgb3JkZXJJZDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJkb3duTG9hZFBERlwiKSBkb3duTG9hZFBkZjogYW55O1xyXG4gIEBJbnB1dCgpIGlzT3JkZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIG9yZGVyRmFjYWRlOiBPcmRlckZhY2FkZSxcclxuICAgIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoXCJPcmRlckRpc2NsYWltZXJDb250ZW50Q29tcG9uZW50XCIpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub3JkZXJNZXNzYWdlID0gZGF0YS5jb250ZW50O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmRlcklkID0gdGhpcy5vcmRlckZhY2FkZS5nZXRPcmRlckRldGFpbHMoKTtcclxuICAgIHRoaXMub3JkZXJJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwib3JkZXJJZFwiKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJvcmRlcklkXCIpO1xyXG4gIH1cclxuXHJcbiAgb3JkZXJQZGZEb3dubG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bkxvYWRQZGYubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JkZXJEZXRhaWxzKGRpdlJlZjogYW55KSB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldE9yZGVyRGV0YWlscyh0aGlzLm9yZGVySWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcmRlckRldGFpbHMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlscyA9IHJlcz8uZW50cmllcztcclxuICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPSByZXM/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcnREZXRhaWxzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZWxlbWVudC5jb25maWdMaXN0ID0gW107XHJcbiAgICAgICAgICBlbGVtZW50LmNvbmZpZ3VyYXRpb25JbmZvcy5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGRhdGEuY29uZmlndXJhdGlvbkxhYmVsLnN0YXJ0c1dpdGgoXCJEXCIsIDApIHx8XHJcbiAgICAgICAgICAgICAgZGF0YS5jb25maWd1cmF0aW9uTGFiZWwuc3RhcnRzV2l0aChcIkFcIiwgMClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGVsZW1lbnQuY29uZmlnTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zYXZlUGRmKGRpdlJlZik7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVQZGYoZGl2UmVmOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZG93bmxvYWRWaWV3ID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBodG1sMmNhbnZhcyhkaXZSZWYpLnRoZW4oKGNhbnZhcykgPT4ge1xyXG4gICAgICAgIHZhciBpbWdEYXRhID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcclxuICAgICAgICBkaXZSZWYuaW5uZXJIVE1MID0gXCI8aW1nIHNyYz1cIiArIGltZ0RhdGEgKyAnIHdpZHRoPVwiNTUwXCIgLz4nO1xyXG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERihcInBcIiwgXCJwdFwiLCBcImE0XCIpO1xyXG4gICAgICAgIGRvYy5odG1sKGRpdlJlZj8uaW5uZXJIVE1MLCB7XHJcbiAgICAgICAgICBtYXJnaW46IFszMCwgMjVdLFxyXG4gICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZQYWdlcyA9IGRvYy5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IG51bWJlck9mUGFnZXM7IGkrKykge1xyXG4gICAgICAgICAgICAgIGRvYy5zZXRQYWdlKGkpO1xyXG4gICAgICAgICAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgICAgICAgICAgZG9jLnRleHQoXCJQYWdlIFwiICsgaSArIFwiIG9mIFwiICsgbnVtYmVyT2ZQYWdlcywgNDkwLCA4MjApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRvYy5zYXZlKFwiT3JkZXItU3VibWlzc2lvbi1cIiArIHRoaXMub3JkZXJEZXRhaWxzPy5jb2RlICsgXCIucGRmXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9LCAyMDAwKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkKGRpdlJlZjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmdldE9yZGVyRGV0YWlscyhkaXZSZWYpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdEltYWdlKGNhcnQ6IGFueSwgdGh1bWJuYWlsOiBhbnkgPSB0cnVlKTogYW55IHtcclxuICAgIGxldCBkZXRhaWxJbWFnZXMgPSBjYXJ0Py5wcm9kdWN0Py5pbWFnZXM7XHJcbiAgICBpZiAoZGV0YWlsSW1hZ2VzICYmIE9iamVjdC5rZXlzKGRldGFpbEltYWdlcyk/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiBkZXRhaWxJbWFnZXMpIHtcclxuICAgICAgICBpZiAoaXRlbS5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS51cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgc3JjVXJsOiBhbnk7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNhcnQ/LmF0dGFjaG1lbnRzICYmXHJcbiAgICAgIGNhcnQ/LmF0dGFjaG1lbnRzPy5sZW5ndGggJiZcclxuICAgICAgY2FydD8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XHJcbiAgICApIHtcclxuICAgICAgc3JjVXJsID1cclxuICAgICAgICB0aHVtYm5haWwgJiYgY2FydD8uYXR0YWNobWVudHM/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgID8gY2FydD8uYXR0YWNobWVudHNbMV0/LmRvd25sb2FkVVJMXHJcbiAgICAgICAgICA6IGNhcnQ/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTDtcclxuICAgICAgZGV0YWlsSW1hZ2VzID0gc3JjVXJsPy5yZXBsYWNlKFwiJmF0dGFjaG1lbnQ9dHJ1ZVwiLCBcIlwiKTtcclxuICAgIH1cclxuICAgIGlmIChkZXRhaWxJbWFnZXMgJiYgZGV0YWlsSW1hZ2VzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiBkZXRhaWxJbWFnZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5ub0ltYWdlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZyBcIiAqbmdJZj1cInNob3dXYWl0Q3Vyc29yIHwgYXN5bmMgXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc09yZGVyIGVsc2Ugbm9PcmRlclwiPlxyXG48ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGRvd25sb2FkX2J0blwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm9yZGVyLWFjdGlvbi1idXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzZWNvbmRhcnktYnV0dG9uIG1yLW1kLTVcIiB0aXRsZT1cIkNvbnRpbnVlIFNob3BwaW5nXCIgaHJlZj1cIi9jLzFcIj5Db250aW51ZSBTaG9wcGluZzwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBwcmltYXJ5LWJ1dHRvbiBjdXN0b21CdG5cIiB0aXRsZT1cIkRvd25sb2FkXCIgKGNsaWNrKT1cImRvd25sb2FkKGRpdlJlZilcIj5Eb3dubG9hZDwvYT5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNub09yZGVyPlxyXG4gICAgPGEgKGNsaWNrKT1cImRvd25sb2FkKGRpdlJlZilcIiAjZG93bkxvYWRQREY+PC9hPlxyXG48L25nLXRlbXBsYXRlPlxyXG48ZGl2IFtuZ1N0eWxlXT1cInsgJ2Rpc3BsYXknOiBkb3dubG9hZFZpZXcgPyAnYmxvY2snIDogJ25vbmUnLHBvc2l0aW9uOidhYnNvbHV0ZScsdG9wOictMTAwMDBweCd9XCIgI2RpdlJlZiBjbGFzcz1cImNvbnRhaW5lciBwcmludGVkQ29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGJveE1hcmdpbiBmaXhlZC13aWR0aC1yb3dcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IGNvbC1zbS02IGRlbGl2ZXJ5SW5mb0J4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbC0xMiBkZWxpdmVyeUluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3RDaGlsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JkZXItaGVhZGluZ1wiPiBPcmRlciBTdWJtaXNzaW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD4ge3tvcmRlckRldGFpbHM/LmNvZGV9fSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiBBY2NvdW50OjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZGVyRGV0YWlscz8ub3JnQ3VzdG9tZXI/Lm9yZ1VuaXQ/Lm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5BY2NvdW50IE5PLjo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9WYWx1ZVwiPnt7b3JkZXJEZXRhaWxzPy5vcmdDdXN0b21lcj8ub3JnVW5pdD8udWlkfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QTyBOdW1iZXI6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvVmFsdWVcIj57e29yZGVyRGV0YWlscz8ucHVyY2hhc2VPcmRlck51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U3VibWl0dGVkIE9uOjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+e3tvcmRlckRldGFpbHM/LmNyZWF0ZWQgfCBkYXRlOidkZC9NTS95eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U3VibWl0dGVkIEJ5OjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+IHt7b3JkZXJEZXRhaWxzPy5vcmdDdXN0b21lcj8ubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IGNvbC1zbS02IGRlbGl2ZXJ5SW5mb0J4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbC0xMiBkZWxpdmVyeUluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2hpbGRib3hcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+IDxpbWcgY2xhc3M9XCJwaWNrdXBkZWxpdmVyeS1pbWFnZVwiICpuZ0lmPVwib3JkZXJEZXRhaWxzPy5kZWxpdmVyeU1vZGU/LmNvZGUgPT0nc3RhbmRhcmRfZGVsaXZlcnknXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9kZWxpdmVyeS5zdmdcIiBhbHQ9XCJEZWxpdmVyeVwiIHRpdGxlPVwiRGVsaXZlcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSAhPSdzdGFuZGFyZF9kZWxpdmVyeSdcIiBjbGFzcz1cInBpY2t1cGRlbGl2ZXJ5LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9waWNrdXAuc3ZnXCIgYWx0PVwiQ2xpY2sgJiBDb2xsZWN0XCIgdGl0bGU9XCJDbGljayAmIENvbGxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiA8Yj4gRGVsaXZlcnkgTWV0aG9kOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMCBwdC0zXCI+e3tvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uZGVzY3JpcHRpb259fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib3JkZXJEZXRhaWxzPy5kZWxpdmVyeU1vZGU/LmNvZGUgPT0nc3RhbmRhcmRfZGVsaXZlcnknXCI+RGVsaXZlcnkgRGF0ZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlICE9J3N0YW5kYXJkX2RlbGl2ZXJ5J1wiPlBpY2t1cCBEYXRlOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3JkZXJEZXRhaWxzPy5leHBlY3RlZFRvRGF0ZS5zcGxpdCgnICcpWzBdfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlID09J3N0YW5kYXJkX2RlbGl2ZXJ5J1wiPkRlbGl2ZXJ5IFRpbWU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSAhPSdzdGFuZGFyZF9kZWxpdmVyeSdcIj5QaWNrdXAgVGltZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZGVyRGV0YWlscz8uZXhwZWN0ZWRGcm9tRGF0ZT8uc3BsaXQoJyAnKVsxXSB9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3JkZXJEZXRhaWxzPy5leHBlY3RlZEZyb21EYXRlPy5zcGxpdCgnICcpWzJdIH19IC0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZGVyRGV0YWlscz8uZXhwZWN0ZWRUb0RhdGU/LnNwbGl0KCcgJylbMV0gfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZGVyRGV0YWlscz8uZXhwZWN0ZWRUb0RhdGU/LnNwbGl0KCcgJylbMl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlID09J3N0YW5kYXJkX2RlbGl2ZXJ5J1wiPkRlbGl2ZXJ5IEFkZHJlc3M6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSAhPSdzdGFuZGFyZF9kZWxpdmVyeSdcIj5QaWNrdXAgQWRkcmVzczo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+IHt7b3JkZXJEZXRhaWxzPy5kZWxpdmVyeUFkZHJlc3M/LmZvcm1hdHRlZEFkZHJlc3N9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNCBjb2wtc20tNiBkZWxpdmVyeUluZm9CeCBkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImRlbGl2ZXJ5X2xvZ29cIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2xvZ28tYmxhY2suc3ZnXCIgYWx0PVwibG9nb1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24tbm90ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj5EZWxpdmVyeSBOb3Rlczo8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItMFwiPnt7b3JkZXJEZXRhaWxzPy5kZWxpdmVyeU5vdGVzfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJldmlld29yZGVyLXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcmV2aWV3b3JkZXItaGVhZGVyLWNvbnRhaW5lciBmaXhlZC13aWR0aC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIHB5LTIgY291bnQtd2lkdGhcIj4jPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBweS0yXCI+SVRFTTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktMlwiPkpPQiBSRUZFUkVOQ0U8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5UT1RBTCBRVFk8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5VTklUIFBSSUNFPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+VE9UQUwgUFJJQ0U8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJldmlld29yZGVyLWJvZHktY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGNhcnQgb2YgY2FydERldGFpbHM7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGZpeGVkLXdpZHRoLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBjb3VudC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gMHt7aSArMX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB5LTMgcHJvZHVjdC1pbWFnZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBwLW1kLTAgY29sLWxnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiY2FydD8uYXR0YWNobWVudHMgJiYgY2FydD8uYXR0YWNobWVudHNbMF0/Lm1pbWUgIT09ICdhcHBsaWNhdGlvbi9wZGYnXCIgW3NyY109XCJnZXRQcm9kdWN0SW1hZ2UoY2FydClcIiBhbHQ9XCJwcm9kdWN0IGltYWdlXCIgY2xhc3M9XCJwcm9kdWN0LWltZy13aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJjYXJ0Py5hdHRhY2htZW50cyAmJiBjYXJ0Py5hdHRhY2htZW50c1swXT8ubWltZSA9PSAnYXBwbGljYXRpb24vcGRmJ1wiIGNsYXNzPVwiaW1nLWZsdWlkXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzLy9pbWFnZXMvL3BkZi1pY29uLnN2Z1wiIGFsdD1cInByb2R1Y3QgaW1hZ2VcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOCBjb2wtbGctMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIiByZXZpZXdwcm9kdWN0LW5hbWUgbWItMlwiPnt7Y2FydD8ucHJvZHVjdD8ubmFtZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic2t1LXRleHRcIj5TS1U6IHt7Y2FydD8ucHJvZHVjdD8uY29kZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnByb2R1Y3Q/LmNsYXNzaWZpY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGwtbWQtMCBtYi0yIGF0dHJpYnV0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGF0dHJpYnV0ZXMgb2YgY2FydD8ucHJvZHVjdCAmJiAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zICYmICBjYXJ0Py5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0gJiYgIGNhcnQ/LnByb2R1Y3Q/LmNsYXNzaWZpY2F0aW9uc1swXT8uZmVhdHVyZXM7bGFzdCBhcyBpc0xhc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YXR0cmlidXRlcz8uZmVhdHVyZVZhbHVlc1swXT8udmFsdWUgfX0gPHNwYW4gKm5nSWY9XCIhaXNMYXN0XCI+IHwgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjYXJ0Py5qb2JSZWZlcmVuY2UgfHwgJy0nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktM1wiPnt7Y2FydC5xdWFudGl0eURvdWJsZX19IHt7Y2FydD8uYmFzZVByaWNlPy51bml0VHlwZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj57e2NhcnQ/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWV9fS97e2NhcnQ/LmJhc2VQcmljZT8udW5pdFR5cGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0zXCI+e3tjYXJ0Py50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9ja1wiPiBleGNsIEdTVCBhbmQgZnJlaWdodDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBwbC1tZC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydD8uY29uZmlndXJhdGlvbkluZm9zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY29sb3JzLXBhcmFncmFwaCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV2aWV3b3JkZXItY29sb3IgbXItM1wiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogY2FydD8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWUuc3BsaXQoJ3wnKSB8IHNsaWNlOjJ9XCI+PC9zcGFuPiB7e2NhcnQ/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlLnNwbGl0KCd8JykgfCBzbGljZToxOjJ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY2FydD8uY29uZmlndXJhdGlvbkluZm9zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmNvbmZpZ3VyYXRpb25MYWJlbCA9PSAnVE9UQUxfV0lEVEhfUkFOR0UnXCI+IFRvdGFsIFdpZHRoIFJhbmdlOiB7e3ZhbHVlPy5jb25maWd1cmF0aW9uVmFsdWV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmNvbmZpZ3VyYXRpb25MYWJlbCA9PSAnTkJSX09GX0JFTkRTJ1wiPiB8IE5vLiBvZiBCZW5kczp7e3ZhbHVlPy5jb25maWd1cmF0aW9uVmFsdWV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjYXJ0Py5jb25maWdMaXN0OyBsZXQgaT0gaW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmNvbmZpZ3VyYXRpb25MYWJlbH19IDp7e2RhdGE/LmNvbmZpZ3VyYXRpb25WYWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTBcIiAqbmdJZj1cImNhcnQ/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImNhcnQ/LmF0dGFjaG1lbnRzWzBdPy5taW1lICE9PSAnYXBwbGljYXRpb24vcGRmJ1wiIGNsYXNzPVwiaW1nLWZsdWlkXCIgW3NyY109XCJjYXJ0Py5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkxcIiBhbHQ9XCJwcm9kdWN0IGltYWdlXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnN1YkxpbmVDb25maWdJbmZvcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3b3JkZXItY29sbGFwc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IGJ1bmRsZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBidW5kbGUtZGV0YWlscy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+UXVhbnRpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+TGVuZ3RoIChMTSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnN1YkxpbmVDb25maWdJbmZvc1tpXT8uYnVuZGxlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+QnVuZGxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5SZWZlcmVuY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzdWJMaW5lIG9mIGNhcnQ/LnN1YkxpbmVDb25maWdJbmZvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57e3N1YkxpbmU/LnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tzdWJMaW5lPy5sZW5ndGggfCBudW1iZXI6JzAuMy0zJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NbaV0/LmJ1bmRsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7c3ViTGluZT8uYnVuZGxlTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57e3N1YkxpbmU/LnJlZmVyZW5jZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydD8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmIGNhcnQ/LnByb2R1Y3RDb25maWd1cmVkSW5mb3MgJiYgY2FydD8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGFzaGluZy1ibG9jayBjb2wtc20tMTJcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjYXJ0Py5wcm9kdWN0Q29uZmlndXJlZEluZm9zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZsYXNoLXRpdGxlXCI+e3sgZGF0YT8ucHJvZHVjdD8ubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJza3VJZFwiPlNLVToge3sgZGF0YT8ucHJvZHVjdD8uY29kZSB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGE/LmdpcnRoXCI+R3JpdGg6ICt7e2RhdGE/LmdpcnRofX1tbSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2Zmc2V0LXNtLTMgY29sLXNtLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8ucXVhbnRpdHlEb3VibGV9fXt7ZGF0YT8udW5pdFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWV9fS97e2RhdGE/LnVuaXRUeXBlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4IG10LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHJldmlldy10b3RhbC10ZXh0IHRleHQtcmlnaHRcIj5Ub3RhbDwvcD5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicmV2aWV3LXRvdGFsLXZhbHVlIG1iLTIgdGV4dC1yaWdodFwiPnt7b3JkZXJEZXRhaWxzPy50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZX19IDwvcD5cclxuICAgICAgICAgICAgICAgIDxwPjxzcGFuIGNsYXNzPVwiZC1ibG9jayBleGNsdGV4dCB0ZXh0LXJpZ2h0XCI+IEV4Y2x1ZGluZyBHU1QsIGZyZWlnaHQgYW5kIHN1bmRyeSBjaGFyZ2VzPC9zcGFuPjwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmaXhlZC13aWR0aC1yb3dcIiAqbmdJZj1cIm9yZGVyTWVzc2FnZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGwtMCBvcmRlci1wcmludC1ib3R0b21cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdFwiIFtpbm5lckhUTUxdPVwib3JkZXJNZXNzYWdlXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWRvd25sb2FkLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL3NoYXJlZC1kb3dubG9hZC1vcmRlci9zaGFyZWQtZG93bmxvYWQtb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9zaGFyZWQvc2hhcmVkLWRvd25sb2FkLW9yZGVyL3NoYXJlZC1kb3dubG9hZC1vcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBVSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVV2QyxNQUFNLE9BQU8sNEJBQTRCO0lBa0J2QyxZQUNVLFVBQXNCLEVBQ3ZCLEVBQXFCLEVBQ2xCLFdBQXdCLEVBQzFCLFdBQXdCO1FBSHhCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFyQmxDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFNckQsUUFBRyxHQUFRLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQzFDLFlBQU8sR0FBRywyQ0FBMkMsQ0FBQztRQUV0RCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixTQUFJLEdBQUcsR0FBRyxDQUFDO1FBV1QsSUFBSSxDQUFDLFVBQVU7YUFDWixnQkFBZ0IsQ0FBQyxpQ0FBaUMsQ0FBQzthQUNuRCxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDVCxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQVc7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDdEQsQ0FBQyxHQUFRLEVBQUUsRUFBRTs7WUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxPQUFPLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxVQUFVLDBDQUFFLGNBQWMsQ0FBQztZQUVsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUN4QyxPQUFPLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDL0MsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRTt3QkFDOUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3BDO3lCQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ3JELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUM5QjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFXO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztnQkFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxFQUFFO29CQUMxQixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUNoQixRQUFRLEVBQUUsR0FBRyxFQUFFOzt3QkFDYixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTs0QkFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDZixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7eUJBQzFEO3dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUcsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxJQUFJLENBQUEsR0FBRyxNQUFNLENBQUMsQ0FBQzt3QkFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7d0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxhQUFhLENBQUMsS0FBVTtRQUN0QixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFlLEVBQUUsSUFBUzs7UUFDekMsSUFBSSxJQUFTLENBQUM7UUFDZCxJQUFJLFVBQWUsQ0FBQztRQUNwQixJQUFJLFVBQVUsSUFBSSxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLElBQUcsQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTs7Z0JBQzdDLE9BQU8sQ0FBQSxNQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxrQkFBa0IsMENBQUUsV0FBVyxFQUFFLEtBQUksT0FBTyxDQUFBO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sQ0FBQSxFQUFFO2dCQUM1QixJQUFJLEdBQUcsTUFBQSxNQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsMENBQUUsa0JBQWtCLDBDQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELFVBQVUsR0FBRyxNQUFBLE1BQUEsTUFBTSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxrQkFBa0IsMENBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMzRDtTQUNGO1FBQ0QsT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFnQixFQUFFLFlBQWlCLElBQUk7O1FBQ3JELElBQUksTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxlQUFlLEVBQUU7WUFDekMsT0FBTyxDQUFDLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsS0FBSSxDQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsMENBQUUsTUFBTSxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxXQUFXLENBQUM7U0FDaks7UUFFRCxJQUFJLFFBQVEsR0FBUyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLE1BQU0sQ0FBQztRQUNsRCxJQUFJLFdBQVcsRUFBRTtZQUNmLE1BQU0sU0FBUyxHQUNiLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLGtCQUFrQixNQUFJLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkUsQ0FBQyxDQUFDLE1BQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLDBDQUFFLGtCQUFrQiwwQ0FBRSxLQUFLLENBQzNELEdBQUcsRUFDSCxDQUFDLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULElBQUksTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxlQUFlLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLGNBQWMsS0FBSSxDQUFBLE1BQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxjQUFjLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7b0JBQzVGLE1BQU0sVUFBVSxHQUFHLE1BQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxjQUFjLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFOzt3QkFDNUUsT0FBTyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxJQUFJLE1BQUksTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxJQUFJLENBQUEsQ0FBQztvQkFDbEQsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxLQUFLLE1BQUksTUFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sQ0FBQSxDQUFDLEVBQUU7d0JBQzlELE1BQU0sTUFBTSxHQUFHLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEtBQUssTUFBSSxNQUFBLFVBQVUsQ0FBQyxDQUFDLENBQUMsMENBQUUsTUFBTSxDQUFBLENBQUM7d0JBQzFELFFBQVEsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUN2QixDQUFDLEdBQVEsRUFBRSxFQUFFOzs0QkFDWCxPQUFBLENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxLQUFJLFVBQVUsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxTQUFTLEtBQUksU0FBUyxDQUFDO2dDQUMxRCxDQUFDLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sS0FBSSxVQUFVO29DQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztvQ0FDN0IsQ0FBQSxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLEtBQUksQ0FBQyxDQUFDLENBQUE7eUJBQUEsQ0FDN0MsQ0FBQztxQkFDTDtpQkFDRjtxQkFBTTtvQkFDTCxRQUFRLEdBQUcsTUFBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUMvQyxDQUFDLEdBQVEsRUFBRSxFQUFFOzt3QkFDWCxPQUFBLENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxLQUFJLFVBQVUsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxTQUFTLEtBQUksU0FBUyxDQUFDOzRCQUMxRCxDQUFDLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sS0FBSSxVQUFVO2dDQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztnQ0FDN0IsQ0FBQSxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLEtBQUksQ0FBQyxDQUFDLENBQUE7cUJBQUEsQ0FDN0MsQ0FBQztpQkFDSDthQUNGO2lCQUFNO2dCQUVMLFFBQVEsR0FBRyxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLENBQzdDLENBQUMsR0FBUSxFQUFFLEVBQUU7O29CQUNYLE9BQUEsQ0FBQyxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxNQUFNLEtBQUksVUFBVSxJQUFJLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLFNBQVMsS0FBSSxTQUFTLENBQUM7d0JBQzFELENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxLQUFJLFVBQVU7NEJBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDOzRCQUM3QixDQUFBLE1BQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxNQUFNLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUMsQ0FBQTtpQkFBQSxDQUM3QyxDQUFDO2FBQ0w7U0FDRjthQUFNO1lBQ0wsUUFBUSxHQUFHLE1BQUEsTUFBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLE1BQU0sMENBQUUsT0FBTywwQ0FBRSxRQUFRLENBQUM7U0FDNUQ7UUFDRCxJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUNFLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVc7YUFDeEIsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsV0FBVywwQ0FBRSxNQUFNLENBQUE7YUFDaEMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxlQUFlLENBQUEsRUFDckM7WUFDQSxNQUFNO2dCQUNKLFNBQVMsSUFBSSxDQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsMENBQUUsTUFBTSxJQUFHLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFdBQVc7b0JBQzFDLENBQUMsQ0FBQyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFdBQVcsQ0FBQztZQUMvQyxRQUFRLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLE1BQU07YUFDWixDQUFDO1NBQ0g7UUFDRCxPQUFPLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEdBQUcsS0FBSSxDQUFDLFFBQVEsSUFBSSxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxNQUFNLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUEsUUFBUSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFFL0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxXQUFnQjs7UUFDeEIsSUFBSSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLGVBQWUsRUFBRTtZQUN6QyxNQUFNLElBQUksR0FBRyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLElBQUksQ0FBQztZQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsY0FBYywwQ0FBRSxNQUFNLENBQ3pELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FDakMsQ0FBQztZQUNGLElBQUksTUFBTSxLQUFJLE1BQUEsTUFBTSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxPQUFPLENBQUEsSUFBSSxDQUFBLE1BQUEsTUFBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRTtnQkFDbEUsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsa0JBQWtCLENBQUMsSUFBUztRQUMxQixJQUFJLFlBQVksR0FBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzdCLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7O2dCQUN6QyxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLEVBQUU7b0JBQ3hCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLDBDQUFFLEtBQUssSUFBRyxHQUFHLElBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVywwQ0FBRSxNQUFNLENBQUEsQ0FBQyxDQUFBO2lCQUN6RjtxQkFBTTtvQkFDTCxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDLENBQUE7aUJBQ3BEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLElBQUksQ0FBRSxLQUFLLENBQUMsQ0FBQTtJQUNuQyxDQUFDOzswSEF4TlUsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsNk1DZHpDLDJwZ0JBNmFBOzRGRC9aYSw0QkFBNEI7a0JBTHhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsV0FBVyxFQUFFLHdDQUF3QztvQkFDckQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7aUJBQ3REO3FMQWdCMkIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNmLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcclxuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZic7XHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPcmRlckZhY2FkZSB9IGZyb20gJ0BzcGFydGFjdXMvb3JkZXIvcm9vdCc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zaGFyZWQtZG93bmxvYWQtb3JkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGFyZWQtZG93bmxvYWQtb3JkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NoYXJlZC1kb3dubG9hZC1vcmRlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVkRG93bmxvYWRPcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHJcbiAgb3JkZXJEZXRhaWxzOiBhbnk7XHJcbiAgY2FydERldGFpbHM6IGFueTtcclxuICB0b3RhbFByaWNlOiBhbnk7XHJcbiAgZW52OiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbnYnKTtcclxuICBlbnZpcm9ubWVudCA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG4gIG9jY2VCYXNlVXJsID0gdGhpcy5lbnZpcm9ubWVudC5vY2NCYXNlVXJsO1xyXG4gIG5vSW1hZ2UgPSBcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcGRwLW5vaW1hZ2Uuc3ZnXCI7XHJcbiAgb3JkZXJNZXNzYWdlOiBhbnk7XHJcbiAgZG93bmxvYWRWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFnZSA9IDQ5MDtcclxuICBvcmRlcklkOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImRvd25Mb2FkUERGXCIpIGRvd25Mb2FkUGRmOiBhbnk7XHJcbiAgQElucHV0KCkgaXNPcmRlcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY21zU2VydmljZTogQ21zU2VydmljZSxcclxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgb3JkZXJGYWNhZGU6IE9yZGVyRmFjYWRlLFxyXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YShcIk9yZGVyRGlzY2xhaW1lckNvbnRlbnRDb21wb25lbnRcIilcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcmRlck1lc3NhZ2UgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9yZGVySWQgPSB0aGlzLm9yZGVyRmFjYWRlLmdldE9yZGVyRGV0YWlscygpO1xyXG4gICAgdGhpcy5vcmRlcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJvcmRlcklkXCIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcIm9yZGVySWRcIik7XHJcbiAgfVxyXG5cclxuICBvcmRlclBkZkRvd25sb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kb3duTG9hZFBkZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRPcmRlckRldGFpbHMoZGl2UmVmOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0T3JkZXJEZXRhaWxzKHRoaXMub3JkZXJJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm9yZGVyRGV0YWlscyA9IHJlcztcclxuICAgICAgICB0aGlzLmNhcnREZXRhaWxzID0gcmVzPy5lbnRyaWVzO1xyXG4gICAgICAgIHRoaXMudG90YWxQcmljZSA9IHJlcz8udG90YWxQcmljZT8uZm9ybWF0dGVkVmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50LmRpbWVuc3Rpb25zTGlzdCA9IFtdO1xyXG4gICAgICAgICAgZWxlbWVudC5hbmdsZUxpc3QgPSBbXTtcclxuICAgICAgICAgIGVsZW1lbnQuY29uZmlndXJhdGlvbkluZm9zLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5jb25maWd1cmF0aW9uTGFiZWwuc3RhcnRzV2l0aChcIkRcIiwgMCkpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LmRpbWVuc3Rpb25zTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuY29uZmlndXJhdGlvbkxhYmVsLnN0YXJ0c1dpdGgoXCJBXCIsIDApKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5hbmdsZUxpc3QucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zYXZlUGRmKGRpdlJlZik7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVQZGYoZGl2UmVmOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZG93bmxvYWRWaWV3ID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBodG1sMmNhbnZhcyhkaXZSZWYpLnRoZW4oKGNhbnZhcykgPT4ge1xyXG4gICAgICAgIHZhciBpbWdEYXRhID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcclxuICAgICAgICBkaXZSZWYuaW5uZXJIVE1MID0gXCI8aW1nIHNyYz1cIiArIGltZ0RhdGEgKyAnIHdpZHRoPVwiNTUwXCIgLz4nO1xyXG4gICAgICAgIGNvbnN0IGRvYyA9IG5ldyBqc1BERihcInBcIiwgXCJwdFwiLCBcImE0XCIpO1xyXG4gICAgICAgIGRvYy5odG1sKGRpdlJlZj8uaW5uZXJIVE1MLCB7XHJcbiAgICAgICAgICBtYXJnaW46IFszMCwgMjVdLFxyXG4gICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZQYWdlcyA9IGRvYy5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IG51bWJlck9mUGFnZXM7IGkrKykge1xyXG4gICAgICAgICAgICAgIGRvYy5zZXRQYWdlKGkpO1xyXG4gICAgICAgICAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgICAgICAgICAgZG9jLnRleHQoXCJQYWdlIFwiICsgaSArIFwiIG9mIFwiICsgbnVtYmVyT2ZQYWdlcywgNDkwLCA4MjApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRvYy5zYXZlKFwiT3JkZXItU3VibWlzc2lvbi1cIiArIHRoaXMub3JkZXJEZXRhaWxzPy5jb2RlICsgXCIucGRmXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoZGl2UmVmOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0T3JkZXJEZXRhaWxzKGRpdlJlZik7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBhbnkgdmFsdWUgaXMgZW1wdHkgb3IgdW5kZWZpbmVkXHJcbiAgaXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gXCJcIjtcclxuICB9XHJcblxyXG4gIGdldENvbG91ckRldGFpbHMoY29uZmlnSW5mbzogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGxldCBuYW1lOiBhbnk7XHJcbiAgICBsZXQgYmFja2dyb3VuZDogYW55O1xyXG4gICAgaWYgKGNvbmZpZ0luZm8gJiYgY29uZmlnSW5mbz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjb2xvdXIgPSBjb25maWdJbmZvPy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbD8uY29uZmlndXJhdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpID09IFwiY29sb3JcIlxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGNvbG91ciAmJiBjb2xvdXI/Lmxlbmd0aCkge1xyXG4gICAgICAgIG5hbWUgPSBjb2xvdXJbMF0/LmNvbmZpZ3VyYXRpb25WYWx1ZT8uc3BsaXQoJ3wnKVsxXTtcclxuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3VyWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KCd8JylbMl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAodHlwZSA9PSBcImJhY2tncm91bmRcIikgPyBiYWNrZ3JvdW5kIDogbmFtZTtcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RJbWFnZShjYXJ0RGV0YWlsczogYW55LCB0aHVtYm5haWw6IGFueSA9IHRydWUpOiBhbnkge1xyXG4gICAgaWYgKGNhcnREZXRhaWxzPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3QpIHtcclxuICAgICAgcmV0dXJuIChjYXJ0RGV0YWlscz8uYXR0YWNobWVudHMgJiYgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPiAxKSA/IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1sxXT8uZG93bmxvYWRVUkwgOiBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbWFnZVVybDogYW55ID0gIGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM7XHJcbiAgICBpZiAoY2FydERldGFpbHMpIHtcclxuICAgICAgY29uc3QgY29sb3JDb2RlID1cclxuICAgICAgICBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zIHx8IGNhcnREZXRhaWxzPy5jb25maWd1cmF0aW9uSW5mb3NbMF1cclxuICAgICAgICAgID8gY2FydERldGFpbHM/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlPy5zcGxpdChcclxuICAgICAgICAgICAgICBcInxcIlxyXG4gICAgICAgICAgICApWzBdXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIGlmIChjYXJ0RGV0YWlscz8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0KSB7XHJcbiAgICAgICAgaWYgKGNhcnREZXRhaWxzPy5wcm9kdWN0Py52YXJpYW50T3B0aW9ucyAmJiBjYXJ0RGV0YWlscz8ucHJvZHVjdD8udmFyaWFudE9wdGlvbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IGltZ0RldGFpbHMgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8udmFyaWFudE9wdGlvbnM/LmZpbHRlcigoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtPy5jb2RlID09IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5jb2RlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoaW1nRGV0YWlscyAmJiAoaW1nRGV0YWlscz8uaW1hZ2UgfHwgaW1nRGV0YWlsc1swXT8uaW1hZ2VzKSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbWFnZXMgPSBpbWdEZXRhaWxzPy5pbWFnZSB8fCBpbWdEZXRhaWxzWzBdPy5pbWFnZXM7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gaW1hZ2VzPy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgKGltZz8uZm9ybWF0ID09IFwiY2FydEljb25cIiAmJiBpbWc/LmNvbG9yQ29kZSA9PSBjb2xvckNvZGUpIHx8XHJcbiAgICAgICAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNOdWxsT3JFbXB0eShjb2xvckNvZGUpICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/Lmxlbmd0aCA8PSA0KVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGltYWdlVXJsID0gY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKGltZzogYW55KSA9PlxyXG4gICAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmIGltZz8uY29sb3JDb2RlID09IGNvbG9yQ29kZSkgfHxcclxuICAgICAgICAgICAgKGltZz8uZm9ybWF0ID09IFwiY2FydEljb25cIiAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuaXNOdWxsT3JFbXB0eShjb2xvckNvZGUpICYmXHJcbiAgICAgICAgICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8ubGVuZ3RoIDw9IDQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgaW1hZ2VVcmwgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzPy5maWx0ZXIoXHJcbiAgICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAgIChpbWc/LmZvcm1hdCA9PSBcImNhcnRJY29uXCIgJiYgaW1nPy5jb2xvckNvZGUgPT0gY29sb3JDb2RlKSB8fFxyXG4gICAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5pc051bGxPckVtcHR5KGNvbG9yQ29kZSkgJiZcclxuICAgICAgICAgICAgICBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzPy5sZW5ndGggPD0gNClcclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGltYWdlVXJsID0gY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8uR0FMTEVSWT8uY2FydEljb247XHJcbiAgICB9XHJcbiAgICBsZXQgc3JjVXJsOiBhbnk7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNhcnREZXRhaWxzPy5hdHRhY2htZW50cyAmJlxyXG4gICAgICBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCAmJlxyXG4gICAgICBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XHJcbiAgICApIHtcclxuICAgICAgc3JjVXJsID1cclxuICAgICAgICB0aHVtYm5haWwgJiYgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICA/IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1sxXT8uZG93bmxvYWRVUkxcclxuICAgICAgICAgIDogY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTDtcclxuICAgICAgaW1hZ2VVcmwgPSB7XHJcbiAgICAgICAgdXJsOiBzcmNVcmxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBpbWFnZVVybD8udXJsIHx8IChpbWFnZVVybCAmJiBpbWFnZVVybD8ubGVuZ3RoID4gMCkgPyBpbWFnZVVybFswXT8udXJsIDogdGhpcy5ub0ltYWdlO1xyXG5cclxuICB9XHJcblxyXG4gIGhhc0NvbG91cihjYXJ0RGV0YWlsczogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY2FydERldGFpbHM/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCkge1xyXG4gICAgICBjb25zdCBjb2RlID0gY2FydERldGFpbHM/LnByb2R1Y3Q/LmNvZGU7XHJcbiAgICAgIGNvbnN0IGNvbG91ciA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py52YXJpYW50T3B0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uY29kZSA9PSBjb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChjb2xvdXIgJiYgY29sb3VyWzBdPy5jb2xvdXJzICYmIGNvbG91clswXT8uY29sb3Vycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNhcnREZXRhaWxzLmNvbG91ciA9IGNvbG91clswXT8uY29sb3Vyc1swXTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFN1bW1hcnkgSGVhZGluZ1xyXG4gIGdldENsYXNzaWZpY2F0aW9ucyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgbGV0IGZlYXR1cmVBcnJheTogYW55ID0gW107XHJcbiAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgZWxlbWVudD8uZmVhdHVyZXMuZm9yRWFjaCgoZmVhdHVyZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGZlYXR1cmU/LmZlYXR1cmVVbml0KSB7XHJcbiAgICAgICAgICBmZWF0dXJlQXJyYXkucHVzaChmZWF0dXJlPy5mZWF0dXJlVmFsdWVzWzBdPy52YWx1ZSArICcgJyArIGZlYXR1cmU/LmZlYXR1cmVVbml0Py5zeW1ib2wpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZlYXR1cmVBcnJheS5wdXNoKGZlYXR1cmU/LmZlYXR1cmVWYWx1ZXNbMF0/LnZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmZWF0dXJlQXJyYXk/LmpvaW4oIFwiIHwgXCIpXHJcbiAgfVxyXG4gIFxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc09yZGVyOyBlbHNlIG5vT3JkZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBkb3dubG9hZF9idG5cIj5cclxuICAgICAgICA8cCBjbGFzcz1cIm9yZGVyLWFjdGlvbi1idXR0b25zXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBzZWNvbmRhcnktYnV0dG9uIG1yLW1kLTVcIlxyXG4gICAgICAgICAgICB0aXRsZT1cIkNvbnRpbnVlIFNob3BwaW5nXCJcclxuICAgICAgICAgICAgaHJlZj1cIi9jLzFcIlxyXG4gICAgICAgICAgICA+Q29udGludWUgU2hvcHBpbmc8L2FcclxuICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBwcmltYXJ5LWJ1dHRvbiBjdXN0b21CdG5cIlxyXG4gICAgICAgICAgICB0aXRsZT1cIkRvd25sb2FkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkKGRpdlJlZilcIlxyXG4gICAgICAgICAgICA+RG93bmxvYWQ8L2FcclxuICAgICAgICAgID5cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGUgI25vT3JkZXI+XHJcbiAgPGEgKGNsaWNrKT1cImRvd25sb2FkKGRpdlJlZilcIiAjZG93bkxvYWRQREY+PC9hPlxyXG48L25nLXRlbXBsYXRlPlxyXG48ZGl2XHJcbiAgW25nU3R5bGVdPVwie1xyXG4gICAgZGlzcGxheTogZG93bmxvYWRWaWV3ID8gJ2Jsb2NrJyA6ICdub25lJyxcclxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgdG9wOiAnLTEwMDAwcHgnXHJcbiAgfVwiXHJcbiAgI2RpdlJlZlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIHByaW50ZWRDb250YWluZXJcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBib3hNYXJnaW4gZml4ZWQtd2lkdGgtcm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgY29sLXNtLTYgZGVsaXZlcnlJbmZvQnhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImNvbC0xMiBkZWxpdmVyeUluZm9cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXJzdENoaWxkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmRlci1oZWFkaW5nXCI+T3JkZXIgU3VibWlzc2lvbjwvZGl2PlxyXG4gICAgICAgICAgICA8bGFiZWw+IHt7IG9yZGVyRGV0YWlscz8uY29kZSB9fSA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxsYWJlbD4gQWNjb3VudDo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9WYWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IG9yZGVyRGV0YWlscz8ub3JnQ3VzdG9tZXI/Lm9yZ1VuaXQ/Lm5hbWUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPkFjY291bnQgTk8uOjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+e3tcclxuICAgICAgICAgICAgICBvcmRlckRldGFpbHM/Lm9yZ0N1c3RvbWVyPy5vcmdVbml0Py5kaXNwbGF5VWlkXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPlBPIE51bWJlcjo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9WYWx1ZVwiPnt7XHJcbiAgICAgICAgICAgICAgb3JkZXJEZXRhaWxzPy5wdXJjaGFzZU9yZGVyTnVtYmVyXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPlN1Ym1pdHRlZCBPbjo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9WYWx1ZVwiPnt7XHJcbiAgICAgICAgICAgICAgb3JkZXJEZXRhaWxzPy5jcmVhdGVkIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPlN1Ym1pdHRlZCBCeTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9WYWx1ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IG9yZGVyRGV0YWlscz8ub3JnQ3VzdG9tZXI/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1sZy00IGNvbC1zbS02IGRlbGl2ZXJ5SW5mb0J4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJjb2wtMTIgZGVsaXZlcnlJbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2hpbGRib3hcIj48L2Rpdj5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja3VwZGVsaXZlcnktaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSA9PSAnc3RhbmRhcmRfZGVsaXZlcnknXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZGVsaXZlcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIkRlbGl2ZXJ5XCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRGVsaXZlcnlcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSAhPSAnc3RhbmRhcmRfZGVsaXZlcnknXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGlja3VwZGVsaXZlcnktaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9waWNrdXAuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIkNsaWNrICYgQ29sbGVjdFwiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkNsaWNrICYgQ29sbGVjdFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHBsLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8Yj4gRGVsaXZlcnkgTWV0aG9kOjwvYj5cclxuICAgICAgICAgICAgICAgICAge3sgb3JkZXJEZXRhaWxzPy5kZWxpdmVyeU1vZGU/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMCBwdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSA9PSAnc3RhbmRhcmRfZGVsaXZlcnknXCJcclxuICAgICAgICAgICAgICAgID5EZWxpdmVyeSBEYXRlOjwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlckRldGFpbHM/LmRlbGl2ZXJ5TW9kZT8uY29kZSAhPSAnc3RhbmRhcmRfZGVsaXZlcnknXCJcclxuICAgICAgICAgICAgICAgID5QaWNrdXAgRGF0ZTo8L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1ZhbHVlXCI+XHJcbiAgICAgICAgICAgICAge3sgb3JkZXJEZXRhaWxzPy5leHBlY3RlZFRvRGF0ZS5zcGxpdChcIiBcIilbMF0gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlID09ICdzdGFuZGFyZF9kZWxpdmVyeSdcIlxyXG4gICAgICAgICAgICAgICAgPkRlbGl2ZXJ5IFRpbWU6PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlICE9ICdzdGFuZGFyZF9kZWxpdmVyeSdcIlxyXG4gICAgICAgICAgICAgICAgPlBpY2t1cCBUaW1lOjwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvVmFsdWVcIj5cclxuICAgICAgICAgICAgICB7eyBvcmRlckRldGFpbHM/LmV4cGVjdGVkRnJvbURhdGU/LnNwbGl0KFwiIFwiKVsxXSB9fVxyXG4gICAgICAgICAgICAgIHt7IG9yZGVyRGV0YWlscz8uZXhwZWN0ZWRGcm9tRGF0ZT8uc3BsaXQoXCIgXCIpWzJdIH19IC1cclxuICAgICAgICAgICAgICB7eyBvcmRlckRldGFpbHM/LmV4cGVjdGVkVG9EYXRlPy5zcGxpdChcIiBcIilbMV0gfX1cclxuICAgICAgICAgICAgICB7eyBvcmRlckRldGFpbHM/LmV4cGVjdGVkVG9EYXRlPy5zcGxpdChcIiBcIilbMl0gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlID09ICdzdGFuZGFyZF9kZWxpdmVyeSdcIlxyXG4gICAgICAgICAgICAgICAgPkRlbGl2ZXJ5IEFkZHJlc3M6PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZGVyRGV0YWlscz8uZGVsaXZlcnlNb2RlPy5jb2RlICE9ICdzdGFuZGFyZF9kZWxpdmVyeSdcIlxyXG4gICAgICAgICAgICAgICAgPlBpY2t1cCBBZGRyZXNzOjwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvVmFsdWVcIj5cclxuICAgICAgICAgICAgICB7eyBvcmRlckRldGFpbHM/LmRlbGl2ZXJ5QWRkcmVzcz8uZm9ybWF0dGVkQWRkcmVzcyB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgY29sLXNtLTYgZGVsaXZlcnlJbmZvQnggZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBjbGFzcz1cImRlbGl2ZXJ5X2xvZ29cIlxyXG4gICAgICAgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbG9nby1ibGFjay5zdmdcIlxyXG4gICAgICAgIGFsdD1cImxvZ29cIlxyXG4gICAgICAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24tbm90ZXNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+RGVsaXZlcnkgTm90ZXM6PC9sYWJlbD5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi0wXCI+e3sgb3JkZXJEZXRhaWxzPy5kZWxpdmVyeU5vdGVzIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicmV2aWV3b3JkZXItdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHJldmlld29yZGVyLWhlYWRlci1jb250YWluZXIgZml4ZWQtd2lkdGgtcm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBweS0yIGNvdW50LXdpZHRoXCI+IzwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgcHktMlwiPklURU08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5KT0IgUkVGRVJFTkNFPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+VE9UQUwgUVRZPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+VU5JVCBQUklDRTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktMlwiPlRPVEFMIFBSSUNFPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJyb3cgcmV2aWV3b3JkZXItYm9keS1jb250YWluZXJcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgY2FydCBvZiBjYXJ0RGV0YWlsczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGZpeGVkLXdpZHRoLXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIGNvdW50LXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPiAwe3sgaSArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB5LTMgcHJvZHVjdC1pbWFnZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgcC1tZC0wIGNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydD8uYXR0YWNobWVudHMgJiZcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0Py5hdHRhY2htZW50c1swXT8ubWltZSAhPT0gJ2FwcGxpY2F0aW9uL3BkZidcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRQcm9kdWN0SW1hZ2UoY2FydClcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJwcm9kdWN0IGltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9kdWN0LWltZy13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcnQ/LmF0dGFjaG1lbnRzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydD8uYXR0YWNobWVudHNbMF0/Lm1pbWUgPT0gJ2FwcGxpY2F0aW9uL3BkZidcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWctZmx1aWRcIlxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvL2ltYWdlcy8vcGRmLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgYWx0PVwicHJvZHVjdCBpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOCBjb2wtbGctMTBcIj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicmV2aWV3cHJvZHVjdC1uYW1lIG1iLTJcIj57eyBjYXJ0Py5wcm9kdWN0Py5uYW1lIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJza3UtdGV4dFwiPlNLVToge3sgY2FydD8ucHJvZHVjdD8uY29kZSB9fTwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHBsLW1kLTAgbWItMiBhdHRyaWJ1dGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNhcnQ/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnQ/LnByb2R1Y3Q/LmNsYXNzaWZpY2F0aW9uc1swXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0Py5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0/LmZlYXR1cmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2xhc3NpZmljYXRpb25zKGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnMpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj5cclxuICAgICAgICAgICAge3sgY2FydD8uam9iUmVmZXJlbmNlIHx8IFwiLVwiIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0zXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcnQucXVhbnRpdHlEb3VibGUgfX0ge3sgY2FydD8uYmFzZVByaWNlPy51bml0VHlwZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktM1wiPlxyXG4gICAgICAgICAgICB7eyBjYXJ0Py5iYXNlUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19L3t7XHJcbiAgICAgICAgICAgICAgY2FydD8uYmFzZVByaWNlPy51bml0VHlwZVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktM1wiPlxyXG4gICAgICAgICAgICB7eyBjYXJ0Py50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZSB9fVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2tcIj4gZXhjbCBHU1QgYW5kIGZyZWlnaHQ8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGwtbWQtMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiY2FydD8uY29uZmlndXJhdGlvbkluZm9zPy5sZW5ndGg7IGVsc2UgYWNjZXNzb3JpZXNDb2xvclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJjb2xvcnMtcGFyYWdyYXBoIG1iLTBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFjYXJ0Py5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3Q7IGVsc2UgZmxhc2hpbmdDb2xvdXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3b3JkZXItY29sb3IgbXItM1wiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDpcclxuICAgICAgICAgICAgICAgICAgY2FydD8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWUuc3BsaXQoJ3wnKVxyXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMlxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIGNhcnQ/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlLnNwbGl0KFwifFwiKVxyXG4gICAgICAgICAgICAgICAgfCBzbGljZSA6IDEgOiAyXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXNoaW5nQ29sb3VyPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNvbG9ycy1wYXJhZ3JhcGggbWItMFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJldmlld29yZGVyLWNvbG9yIG1yLTNcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBnZXRDb2xvdXJEZXRhaWxzKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3sgZ2V0Q29sb3VyRGV0YWlscyhjYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zLCBcIm5hbWVcIikgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2FjY2Vzc29yaWVzQ29sb3I+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImNvbG9ycy1wYXJhZ3JhcGggbWItMFwiICpuZ0lmPVwiaGFzQ29sb3VyKGNhcnQpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZXZpZXdvcmRlci1jb2xvciBtci0zXCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBjYXJ0Py5jb2xvdXI/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICB7eyBjYXJ0Py5jb2xvdXI/Lm5hbWUgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydD8uY29uZmlndXJhdGlvbkluZm9zPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibS0yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBjYXJ0Py5jb25maWd1cmF0aW9uSW5mb3NcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmNvbmZpZ3VyYXRpb25MYWJlbCA9PSAnVE9UQUxfV0lEVEhfUkFOR0UnXCI+XHJcbiAgICAgICAgICAgICAgICBUb3RhbCBXaWR0aCBSYW5nZToge3sgdmFsdWU/LmNvbmZpZ3VyYXRpb25WYWx1ZSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmNvbmZpZ3VyYXRpb25MYWJlbCA9PSAnTkJSX09GX0JFTkRTJ1wiPlxyXG4gICAgICAgICAgICAgICAgfCBOby4gb2YgQmVuZHM6e3sgdmFsdWU/LmNvbmZpZ3VyYXRpb25WYWx1ZSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjYXJ0Py5hbmdsZUxpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS0xMlwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LmNvbmZpZ3VyYXRpb25MYWJlbCB9fSA6XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LmNvbmZpZ3VyYXRpb25WYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgY2FydD8uZGltZW5zdGlvbnNMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtc20tMTJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5jb25maWd1cmF0aW9uTGFiZWwgfX0gOlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5jb25maWd1cmF0aW9uVmFsdWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTVcIiAqbmdJZj1cImNhcnQ/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FydD8uYXR0YWNobWVudHNbMF0/Lm1pbWUgIT09ICdhcHBsaWNhdGlvbi9wZGYnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiY2FydD8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cInByb2R1Y3QgaW1hZ2VcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnN1YkxpbmVDb25maWdJbmZvcz8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlld29yZGVyLWNvbGxhcHNlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgYnVuZGxlLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYnVuZGxlLWRldGFpbHMtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlF1YW50aXR5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkxlbmd0aCAoTE0pPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NbaV0/LmJ1bmRsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5CdW5kbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5SZWZlcmVuY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3ViTGluZSBvZiBjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57eyBzdWJMaW5lPy5xdWFudGl0eSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJMaW5lPy5sZW5ndGggfCBudW1iZXIgOiBcIjAuMy0zXCIgfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NbaV0/LmJ1bmRsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57eyBzdWJMaW5lPy5idW5kbGVOYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3sgc3ViTGluZT8ucmVmZXJlbmNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNhcnQ/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICAgICAgY2FydD8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcyAmJlxyXG4gICAgICAgICAgY2FydD8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsYXNoaW5nLWJsb2NrIGNvbC1zbS0xMlwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjYXJ0Py5wcm9kdWN0Q29uZmlndXJlZEluZm9zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZsYXNoLXRpdGxlXCI+e3sgZGF0YT8ucHJvZHVjdD8ubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic2t1SWRcIj5TS1U6IHt7IGRhdGE/LnByb2R1Y3Q/LmNvZGUgfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YT8uZ2lydGhcIj5Hcml0aDogK3t7IGRhdGE/LmdpcnRoIH19bW0gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9mZnNldC1zbS0zIGNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAge3sgZGF0YT8ucXVhbnRpdHlEb3VibGUgfX17eyBkYXRhPy51bml0VHlwZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAge3sgZGF0YT8uYmFzZVByaWNlPy5mb3JtYXR0ZWRWYWx1ZSB9fS97eyBkYXRhPy51bml0VHlwZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAge3sgZGF0YT8udG90YWxQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBtdC0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICA8cCBjbGFzcz1cIm1iLTAgcmV2aWV3LXRvdGFsLXRleHQgdGV4dC1yaWdodFwiPlRvdGFsPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwicmV2aWV3LXRvdGFsLXZhbHVlIG1iLTIgdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAge3sgb3JkZXJEZXRhaWxzPy50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZSB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8cD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBleGNsdGV4dCB0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIEV4Y2x1ZGluZyBHU1QsIGZyZWlnaHQgYW5kIHN1bmRyeSBjaGFyZ2VzPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IGZpeGVkLXdpZHRoLXJvd1wiICpuZ0lmPVwib3JkZXJNZXNzYWdlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHBsLTAgb3JkZXItcHJpbnQtYm90dG9tXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnRcIiBbaW5uZXJIVE1MXT1cIm9yZGVyTWVzc2FnZVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=