application-sidebar 1.0.30 → 1.0.32

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.
@@ -24,7 +24,7 @@ export class ApplicationSidebarService {
24
24
  appNames;
25
25
  menulists;
26
26
  contentAppRoutes = ['content-insight', 'content-analytics', 'content', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
27
- sovAppRoutes = ['insights', 'share-of-voice', 'sov', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
27
+ sovAppRoutes = ['insights', 'share-of-voice', 'brands', 'keywords', 'products', 'daily-tracker', 'daily-tracker/brands', 'daily-tracker/keywords', 'daily-tracker/products', 'raw-data', 'overview', 'sov', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
28
28
  sellerAnalyticsAppRoutes = ['seller/insights', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
29
29
  vendorAnalyticsAppRoutes = ['vendor/insights', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
30
30
  typeStatusConfigs = {
@@ -114,7 +114,7 @@ export class ApplicationSidebarService {
114
114
  if (appName.id == 'ads_amazon_dsp') {
115
115
  if (list.children && list.children.length > 0) {
116
116
  for (let child of list.children) {
117
- if ((this.isManagedServiceAcc || !this.isStructureApiSupport) && child.id == "ams_dsp_settings") {
117
+ if (this.isManagedServiceAcc && child.id == "ams_dsp_settings") {
118
118
  child.children = child.children.filter(s_child => s_child.id !== 'ams_dsp_rules');
119
119
  }
120
120
  }
@@ -832,4 +832,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
832
832
  providedIn: 'root'
833
833
  }]
834
834
  }], ctorParameters: function () { return [{ type: i1.RestApiService }, { type: i2.ActivatedRoute }, { type: i3.TranslationService }, { type: i4.UrlContextService }]; } });
835
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNkM1QjtJQUNBO0lBQ0E7SUFDQTtJQTlDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJQUN0QixtQkFBbUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTdCLFVBQVUsQ0FBTTtJQUNoQixxQkFBcUIsQ0FBTTtJQUMzQixtQkFBbUIsQ0FBVTtJQUM3QixnQkFBZ0IsQ0FBUTtJQUN4QixRQUFRLENBQVc7SUFDWCxTQUFTLENBQU07SUFDdkIsZ0JBQWdCLEdBQUksQ0FBQyxpQkFBaUIsRUFBQyxtQkFBbUIsRUFBQyxTQUFTLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ2xPLFlBQVksR0FBSyxDQUFDLFVBQVUsRUFBQyxnQkFBZ0IsRUFBQyxLQUFLLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ2pOLHdCQUF3QixHQUFHLENBQUMsaUJBQWlCLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQzNNLHdCQUF3QixHQUFFLENBQUMsaUJBQWlCLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLG9CQUFvQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRTFNLGlCQUFpQixHQUFHO1FBQ2Isd0JBQXdCLEVBQUcsSUFBSTtRQUMvQix5Q0FBeUMsRUFBRyxJQUFJO1FBQ2hELHVDQUF1QyxFQUFHLElBQUk7UUFDOUMsd0JBQXdCLEVBQUcsSUFBSTtRQUMvQixtQkFBbUIsRUFBRyxJQUFJO1FBQzFCLHFCQUFxQixFQUFHLEtBQUs7UUFDN0Isa0JBQWtCLEVBQUcsS0FBSztRQUMxQiw2QkFBNkIsRUFBRyxLQUFLO1FBQ3JDLHlCQUF5QixFQUFHLEtBQUs7UUFDakMsc0JBQXNCLEVBQUcsSUFBSTtRQUM3Qix1QkFBdUIsRUFBRyxJQUFJO1FBQzlCLHFCQUFxQixFQUFHLEtBQUs7UUFDN0IseUJBQXlCLEVBQUcsS0FBSztRQUNqQyxzQkFBc0IsRUFBRyxJQUFJO1FBQzdCLGlCQUFpQixFQUFHLElBQUk7UUFDeEIseUJBQXlCLEVBQUcsS0FBSztRQUNqQyw0QkFBNEIsRUFBRyxJQUFJO1FBQ25DLDRCQUE0QixFQUFHLElBQUk7UUFDbkMsb0JBQW9CLEVBQUcsSUFBSTtRQUMzQix5QkFBeUIsRUFBRSxJQUFJO0tBQ2xDLENBQUE7SUFJSixZQUNTLGNBQThCLEVBQzlCLGNBQTZCLEVBQzdCLFNBQTRCLEVBQzVCLGlCQUFvQztRQUhwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFakQsb0JBQW9CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQy9CLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxTQUFTO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDM0IsS0FBSyxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDakQsS0FBSyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs0QkFDaEQsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUU7Z0NBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQzs2QkFDekM7eUJBQ0o7cUJBQ0o7aUJBQ0o7cUJBQ0ksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO29CQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2lCQUM3QzthQUNKO1NBQ0o7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUosV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2xHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRDthQUNJO1lBQ0QsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1NBQ2hDO1FBQ0QsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2RCxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUFDLENBQUM7UUFDcEYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3BDLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUscUVBQXFFO1FBQ3JFLDZEQUE2RDtRQUM3RCxrSEFBa0g7UUFDbEgsVUFBVTtRQUNWLElBQUk7UUFDSixLQUFLLElBQUksT0FBTyxJQUFJLGVBQWUsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7b0JBQ3BDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDM0MsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dDQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsSUFBSSxrQkFBa0IsRUFBRTtvQ0FDN0YsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLENBQUM7aUNBQ3JGOzZCQUNKO3lCQUNKO3dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUM1Qjt5QkFDSTt3QkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDNUI7aUJBQ0o7YUFDSjtpQkFDSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksWUFBWSxFQUFFO2dCQUNuQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hELElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUosc0JBQXNCLENBQUMsZUFBbUI7UUFDekMsSUFBSSxRQUFRLEdBQUc7WUFDZCxRQUFRLEVBQUcsRUFBRTtTQUNiLENBQUM7UUFFRixJQUFHLGVBQWUsQ0FBQyxJQUFJLElBQUksWUFBWSxFQUFDO1lBQ3ZDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUMzRixJQUFHLG9CQUFvQixFQUFDO2dCQUN2QixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZGLElBQUcsYUFBYSxFQUFDO29CQUNoQixRQUFRLEdBQUcsZUFBZSxDQUFDO2lCQUMzQjtxQkFDRztvQkFDSCwrQkFBK0I7b0JBQy9CLE9BQU87aUJBQ1A7YUFDRDtpQkFDRztnQkFDSCxRQUFRLEdBQUcsZUFBZSxDQUFDO2FBQzNCO1NBQ0Q7YUFDRztZQUNILElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUMzRixJQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRTtnQkFDekgsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtvQkFDM0MsSUFBSSxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLEVBQUc7d0JBQzdDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3JDO2dCQUNGLENBQUMsQ0FBQyxDQUFBO2dCQUNGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixLQUFJLElBQUksS0FBSyxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUM7b0JBQ3pDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbEQsSUFBRyxRQUFRLElBQUksSUFBSSxFQUFDO3dCQUNuQixJQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFDOzRCQUNqQyxJQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztnQ0FDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7NkJBQ2pDO3lCQUNEOzZCQUNHOzRCQUNILFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUNqQztxQkFDRDtpQkFDRDthQUNEO2lCQUFJO2dCQUNKLE9BQU87YUFDUDtTQUNEO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVELHFCQUFxQixDQUFDLFVBQWdCLEVBQUUsU0FBUztRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUEsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUkscUJBQXFCLENBQUMsQ0FBQTtRQUNsRixJQUFJLDBCQUEwQixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRyxLQUFLLElBQUksT0FBTyxJQUFJLDBCQUEwQixFQUFFO1lBQy9DLElBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLEVBQUM7Z0JBQy9CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsSUFBRyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7b0JBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pDO2FBQ0Q7aUJBQUssSUFBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBQztnQkFDckMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFHLElBQUksSUFBSSxTQUFTLEVBQUM7b0JBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7aUJBQ2hDO2FBQ0Q7U0FDRDtRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUFvQixFQUFFLFVBQVUsRUFBRSxPQUFpQjtRQUNyRSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksZUFBZSxDQUFDLEVBQUUsSUFBSSxjQUFjO1lBQzFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUM7U0FDWjthQUNJLElBQUcsZUFBZSxDQUFDLEVBQUUsS0FBSyxxQkFBcUIsRUFBRTtZQUNyRCxJQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDO2dCQUM3RixPQUFPLElBQUksQ0FBQzthQUNaO2lCQUNHO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtRQUNELEtBQUksSUFBSSxJQUFJLElBQUksVUFBVSxFQUFDO1lBQzFCLElBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBQztnQkFDckMsUUFBTyxJQUFJLEVBQUM7b0JBQ1gsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO3dCQUN4QixXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDekQsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLHlCQUF5QixDQUFDLENBQUM7d0JBQy9CLFdBQVcsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3hFLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxzQkFBc0IsQ0FBQyxDQUFBO3dCQUMzQixXQUFXLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNyRSxNQUFNO3FCQUNMO29CQUNELEtBQUssa0JBQW1CLENBQUMsQ0FBQzt3QkFDekIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7NEJBQ25GLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDN0g7NkJBQU0sSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFOzRCQUNwRyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDbEk7NkJBQU07NEJBQ04sV0FBVyxHQUFHLEtBQUssQ0FBQzt5QkFDcEI7d0JBQ0YsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLHlCQUEwQixDQUFDLENBQUM7d0JBQ2hDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFOzRCQUNuRixXQUFXLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7eUJBQ2xJOzZCQUFNLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRTs0QkFDcEcsV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7eUJBQ3ZJOzZCQUFNOzRCQUNOLFdBQVcsR0FBRyxLQUFLLENBQUM7eUJBQ3BCO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyxlQUFlLENBQUMsQ0FBQTt3QkFDcEIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFOzRCQUM3RixXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxlQUFlLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDckk7NkJBQU07NEJBQ04sV0FBVyxHQUFHLEtBQUssQ0FBQzt5QkFDcEI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGFBQWMsQ0FBQyxDQUFDO3dCQUNwQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRTs0QkFDakYsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUMzSDs2QkFBTTs0QkFDTixXQUFXLEdBQUcsS0FBSyxDQUFDO3lCQUNwQjt3QkFDRixNQUFNO3FCQUNMO29CQUNELEtBQUssb0JBQXFCLENBQUMsQ0FBQzt3QkFDM0IsV0FBVyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUN2SSxNQUFNO3FCQUNOO29CQUNELEtBQUssa0JBQW1CLENBQUMsQ0FBQzt3QkFDekIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBQzs0QkFDakMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt5QkFDN0Q7NkJBQUs7NEJBQ0wsV0FBVyxHQUFHLEtBQUssQ0FBQzt5QkFDcEI7d0JBQ0QsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGNBQWUsQ0FBQyxDQUFDO3dCQUNyQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRTs0QkFDekUsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7eUJBQ3BEOzZCQUFNOzRCQUNOLFdBQVcsR0FBRyxLQUFLLENBQUM7eUJBQ3BCO3dCQUNGLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxzQkFBdUIsQ0FBQyxDQUFDO3dCQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUMvRCxNQUFNO3FCQUNMO29CQUFBLEtBQUssaUJBQWtCLENBQUMsQ0FBQzt3QkFDekIsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbEUsTUFBTTtxQkFDTDtvQkFDRCxLQUFLLHdCQUF3QixDQUFDLENBQUM7d0JBQzlCLFdBQVcsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3RFLE1BQU07cUJBQ047b0JBQ0QsS0FBSyw2QkFBOEIsQ0FBQyxDQUFDO3dCQUNwQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNsRSxNQUFNO3FCQUNMO29CQUNELHdFQUF3RTtvQkFDeEUsS0FBSywyQkFBMkIsQ0FBQyxDQUFDO3dCQUNqQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxNQUFNO3FCQUNMO29CQUNELEtBQUssU0FBVSxDQUFDLENBQUM7d0JBQ2hCLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUMzRCxNQUFNO3FCQUNMO29CQUNELEtBQUssWUFBYSxDQUFDLENBQUM7d0JBQ25CLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzlELE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxvQkFBcUIsQ0FBQyxDQUFDO3dCQUMzQixJQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxTQUFTLEVBQUM7NEJBQy9DLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFO2dDQUNqRixXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBOzZCQUMvRDtpQ0FBTTtnQ0FDTixXQUFXLEdBQUcsS0FBSyxDQUFDOzZCQUNwQjt5QkFDRDs2QkFBSTs0QkFDSixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRTtnQ0FDekUsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7NkJBQ3BEO2lDQUFNO2dDQUNOLFdBQVcsR0FBRyxLQUFLLENBQUM7NkJBQ3BCO3lCQUNEO3dCQUNGLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxnQkFBaUIsQ0FBQyxDQUFDO3dCQUN2QixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUM7NEJBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQzlEOzZCQUNHOzRCQUNILFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25CO3dCQUNGLE1BQU07cUJBQ0w7b0JBQ0QsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO3dCQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3RDLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQ2hFOzZCQUNJOzRCQUNKLFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25CO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyx5QkFBeUIsQ0FBQyxDQUFDO3dCQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3RDLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQ25FOzZCQUNJOzRCQUNKLFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25CO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyw4QkFBK0IsQ0FBQyxDQUFDO3dCQUNyQyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUM7NEJBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQ25FOzZCQUNHOzRCQUNILFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25CO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyxzQ0FBdUMsQ0FBQyxDQUFDO3dCQUM3QyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUM7NEJBQzNDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7eUJBQzFFOzZCQUNHOzRCQUNILFdBQVcsR0FBRyxJQUFJLENBQUM7eUJBQ25CO3dCQUNELE1BQU07cUJBQ047b0JBQ0QsS0FBSyxhQUFjLENBQUMsQ0FBQzt3QkFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt3QkFDbEUsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGVBQWdCLENBQUMsQ0FBQzt3QkFDdEIsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTt3QkFDaEUsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGdCQUFnQixDQUFDLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFOzRCQUN2QyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO3lCQUM5RDt3QkFDRCxNQUFNO3FCQUNOO29CQUNELEtBQUssdUJBQXVCLENBQUMsQ0FBQzt3QkFDN0IsV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkUsTUFBTTtxQkFDTjtvQkFDRCxLQUFLLGdCQUFnQixDQUFDLENBQUM7d0JBQ3RCLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzlELE1BQU07cUJBQ047b0JBQ0QsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUM3QixXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNqRSxNQUFNO3FCQUNOO29CQUNELGNBQWM7b0JBQ2QsaUJBQWlCO29CQUNqQixVQUFVO29CQUNWLEtBQUs7aUJBQ0w7Z0JBQ0QsSUFBRyxDQUFDLFdBQVcsRUFBQztvQkFDZixPQUFPLEtBQUssQ0FBQztpQkFDYjthQUNEO2lCQUFJO2dCQUNKLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDbkI7U0FDRDtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFtQjtRQUNyQyxJQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUM7U0FDWjthQUNHO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxjQUFtQjtRQUN2QyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUNsSCxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0c7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUNELHNCQUFzQixDQUFDLGNBQW1CO1FBQ3pDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN2SCxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxjQUFtQjtRQUM1QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDdkgsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsY0FBbUI7UUFDNUMsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUMzSCxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0c7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVELGdDQUFnQyxDQUFDLGNBQW1CO1FBQ25ELElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDekksT0FBTyxJQUFJLENBQUM7U0FDWjthQUNHO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxjQUFtQjtRQUMzQyxPQUFPLGNBQWMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxjQUFtQjtRQUN4QyxLQUFJLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBQztZQUMvRCxJQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLEVBQUM7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDO2FBQ1o7U0FDRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxjQUFtQjtRQUNsQyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDO1lBQzNJLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFDRztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsY0FBbUI7UUFDckMsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQztZQUMzSSxPQUFPLEtBQUssQ0FBQztTQUNiO2FBQ0c7WUFDSCxPQUFPLElBQUksQ0FBQztTQUNaO0lBQ0YsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxpQkFBaUIsQ0FBQyxjQUE2QjtRQUM5QyxJQUFJO1lBQ0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUN0RCxzREFBc0Q7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0gsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUVsQiw0Q0FBNEM7Z0JBRTVDLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtvQkFDcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxPQUFZLElBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUM5RyxDQUFDLENBQUMsQ0FBQztnQkFFSCxnRUFBZ0U7Z0JBRWhFLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtvQkFDcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxPQUFZLElBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUMzSSxDQUFDLENBQUMsQ0FBQztnQkFFSCxnRkFBZ0Y7Z0JBQ2hGLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxFQUFFO29CQUM3QixLQUFLLEdBQUcsSUFBSSxDQUFDO2lCQUNiO2dCQUNELE9BQU8sS0FBSyxDQUFDO2FBQ2I7aUJBQU07Z0JBQ04sT0FBTyxJQUFJLENBQUM7YUFDWjtTQUNEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3BCO0lBQ0YsQ0FBQztJQUVELG1CQUFtQixDQUFDLGNBQW1CO1FBQ3RDLElBQUc7WUFDRixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVMsVUFBVTtvQkFDM0QsSUFBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTt3QkFDekUsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDbkQ7b0JBQUEsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLEtBQUssQ0FBQzthQUNiO2lCQUFNO2dCQUNOLE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtRQUFBLE9BQU0sS0FBSyxFQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNwQjtJQUNGLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN6QyxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFDO1lBQ2pDLEtBQUksSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUM7Z0JBQ2xELElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFDO29CQUM1RSxPQUFPLElBQUksQ0FBQztpQkFDWjthQUNEO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDYjthQUFJO1lBQ0osT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFDRCwyQkFBMkIsQ0FBQyxjQUFtQjtRQUM5QyxJQUFHO1lBQ0YsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDaEYsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO29CQUM3RCxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ2xELENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDOzRCQUM1QyxhQUFhLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQTtnQkFDaEUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDYjtpQkFBTTtnQkFDTixPQUFPLEtBQUssQ0FBQzthQUNiO1NBQ0Q7UUFBQSxPQUFNLEtBQUssRUFBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEI7SUFDRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsY0FBbUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVk7WUFDbkQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzNFLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFDSTtZQUNKLE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsY0FBbUI7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZO1lBQ3pHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUU7WUFDN0UsT0FBTyxJQUFJLENBQUM7U0FDWjthQUNJO1lBQ0osT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN6QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3hFLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBUyxVQUFVO2dCQUMzRCxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7b0JBQ25ELENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO3dCQUM1QyxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQTtZQUV2RCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2I7YUFBSTtZQUNKLE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsY0FBbUI7UUFDdkMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUM7WUFDaEMsS0FBSyxJQUFJLElBQUksSUFBSSxjQUFjLEVBQUU7Z0JBQ2hDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsS0FBSyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQzFDO1NBQ0Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxjQUFtQjtRQUMzQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBQztZQUNoQyxLQUFLLElBQUksSUFBSSxJQUFJLGNBQWMsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0M7U0FDRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFhO1FBQzVCLElBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUM7U0FDWjthQUNHO1lBQ0gsSUFBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBQztnQkFDakMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQTthQUNqRTtpQkFDRztnQkFDSCxPQUFPLEtBQUssQ0FBQzthQUNiO1NBQ0Q7SUFDRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsY0FBbUIsRUFBRyxlQUFtQixFQUFHLEVBQVM7UUFDekUsSUFBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDO1lBQ3ZCLEtBQUssSUFBSSxJQUFJLElBQUksY0FBYyxFQUFFO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO3dCQUNoQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7NEJBQ2hCLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ2pDO29CQUNGLENBQUMsQ0FBQyxDQUFBO29CQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUMsZUFBZSxDQUFDLElBQUksR0FBQyx3QkFBd0IsR0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3BHLE9BQU8sSUFBSSxDQUFDO2lCQUNaO2FBQ0Q7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNaO2FBQ0k7WUFDSixJQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQzthQUNaO2lCQUNHO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtJQUNGLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxjQUFtQixFQUFHLGVBQW1CLEVBQUcsRUFBUztRQUM1RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEtBQUssSUFBSSxJQUFJLElBQUksY0FBYyxFQUFFO2dCQUNoQyxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDMUQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQjtZQUNELEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUVoRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUNELHlCQUF5QixDQUFDLGNBQW1CLEVBQUcsZUFBbUIsRUFBRyxFQUFTO1FBQzlFLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdDQUFnQyxDQUFDLGNBQW1CLEVBQUcsZUFBbUIsRUFBRyxFQUFTO1FBQ3JGLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxjQUFtQjtRQUNoQyxJQUFHLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM5QyxJQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUM3RCxPQUFPLElBQUksQ0FBQzthQUNaO2lCQUNHO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2I7U0FDRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELDRCQUE0QixDQUFDLGNBQW1CO1FBQy9DLElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQzlDLElBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBQzdELE9BQU8sS0FBSyxDQUFDO2FBQ2I7aUJBQUk7Z0JBQ0osT0FBTyxJQUFJLENBQUM7YUFDWjtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsc0JBQXNCLENBQUMsY0FBbUI7UUFDekMsSUFBRyxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDOUMsSUFBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUM7Z0JBQ3RHLE9BQU8sS0FBSyxDQUFDO2FBQ2I7aUJBQ0c7Z0JBQ0gsT0FBTyxJQUFJLENBQUM7YUFDWjtTQUNEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0seUJBQXlCLENBQUMsY0FBbUI7UUFDbkQsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQzlILE9BQU8sS0FBSyxDQUFDO1NBQ2I7YUFDRztZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ1o7SUFDRixDQUFDO0lBRU0sd0JBQXdCLENBQUMsS0FBSyxFQUFHLGFBQWEsR0FBQyxTQUFTO1FBQzlELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxhQUFhLEVBQUU7b0JBQ2xCLE1BQU0sR0FBRyxFQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFDLENBQUM7aUJBQ3ZDO2dCQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO29CQUM3RCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxTQUFTLEdBQUcsRUFBRSxRQUFRLEVBQUcsSUFBSSxFQUFDLENBQUE7b0JBQ2xDLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFHLEdBQUcsU0FBUyxFQUFDLENBQUE7aUJBQ3BDO2dCQUNELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3BGLGFBQWEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFBO2dCQUM1RCwyREFBMkQ7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1NBQ0g7SUFDQyxDQUFDO0lBRUcsYUFBYSxDQUFDLEdBQVc7UUFDL0IsSUFBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTixPQUFPLElBQUksQ0FBQztTQUNaO0lBRUYsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQVk7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDaEUsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsSUFBSTtRQUN0QyxJQUFHLEVBQUUsS0FBSyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2pHLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFHLEVBQUUsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNwRixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFBRyxDQUFDLEVBQUUsS0FBSyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQzlGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFHLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQzNGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBSyxJQUFHLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3hGLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFBSyxJQUFHLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZGLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFBSyxJQUFHLEVBQUUsS0FBSyxtQkFBbUIsSUFBRyxFQUFFLEtBQUssa0JBQWtCLElBQUksRUFBRSxLQUFLLG1CQUFtQixFQUFFO1lBQzlGLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFBSyxJQUFHLEVBQUUsS0FBSyx3QkFBd0IsSUFBSSxFQUFFLEtBQUssa0JBQWtCLElBQUksRUFBRSxLQUFLLGtCQUFrQixFQUFFO1lBQy9GLEtBQUksSUFBSSxRQUFRLElBQUksSUFBSSxFQUFDO2dCQUN2QixJQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFDO29CQUN0RCxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUVJLHVCQUF1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTztRQUNwRCxJQUFHLE9BQU8sS0FBSyxPQUFPLEVBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDWDtRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xGLElBQUcsY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxLQUFLLENBQUM7U0FDWjtRQUNELElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDaEYsT0FBTyxJQUFJLENBQUM7U0FDWjthQUFNO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFTSxnQkFBZ0I7UUFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpELElBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBRztZQUNuRCxPQUFPLHNDQUFzQyxDQUFDO1NBQzlDO2FBQU0sSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRCxPQUFPLG1DQUFtQyxDQUFDO1NBQzNDO0lBQ0YsQ0FBQzsySEF2ekJXLHlCQUF5QjsrSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4vcmVzdC1hcGkuc2VydmljZXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVcmxDb250ZXh0U2VydmljZSB9IGZyb20gJy4vdXJsLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBFTl9MQUJFTFMgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLWVuJztcbmltcG9ydCB7IEpBX0xBQkVMUyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMtamEnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSB7XG5cblx0Y29uZGl0aW9ucyBcdFx0XHQ9IFsnb3JnX3VzZXJfY3RybCcsICd2aXNpYmlsaXR5X3JvbGVzJywgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJywgJ2FjY291bnRfaWRzJywgJ2N1c3RvbWVyX3R5cGVzX25vdF9pbicsJ2N1c3RvbWVyX3R5cGVzJywnb3JnYW5pemF0aW9uX2lkcycsICdvcmdhbml6YXRpb25faWRzX25vdF9pbicsICdhY2NvdW50X3R5cGUnLCAnYWNjb3VudF9pZHNfbm90X2luJywgJ29yZ2FuaXphdGlvbl9zZXR0aW5nJywgJ29yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbicsICdhcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrJywgJ2NhbXBhaWduX3R5cGVzJywgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnLCAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JywgJ3N1YnNjcmlwdGlvbl90eXBlcycsICdzaXRlSWRzJywgJ3NpdGVOb3RJZHMnLCAnbm90X2FjY291bnRfdHlwZScsICdub3RfYWNjb3VudF9uYW1lJywgJ2Rpc2FibGVfcmVhZG9ubHlfb3JnJywgJ3VzZXJfZW1haWxzJywgJ2hpZGVfZm9yX3VzZXInLCAnYXBwX29yZ19zZXR0aW5nJywnYXBwX29yZ19zZXR0aW5nX25vdF9pbicsJ25nX2FwcF9zZXR0aW5nJywnbmdfYXBwX3NldHRpbmdfbm90X2luJywndGFyZ2V0dGluZ190eXBlcycsJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJywnaGlkZV9mb3JfdXNlciddO1xuXHRNZW51TGlzdCBcdFx0XHQ9IFtdO1xuXG5cdGFwcGxpY2F0aW9uSWRzIFx0XHQ9IFtdO1xuXHRlbmFibGVBbGxNZW51c0J5T3JnID0gWzMwNzgwXVxuXHRcblx0YXBwRGV0YWlsczpcdGFueTtcblx0aXNTdHJ1Y3R1cmVBcGlTdXBwb3J0Olx0YW55O1xuXHRpc01hbmFnZWRTZXJ2aWNlQWNjOiBib29sZWFuO1xuXHRTZXR0aW5nc01lbnVMaXN0OiBhbnlbXTtcblx0YXBwTmFtZXM6IHN0cmluZ1tdO1xuXHRwcml2YXRlIG1lbnVsaXN0czogYW55O1xuXHRjb250ZW50QXBwUm91dGVzXHRcdFx0PVsnY29udGVudC1pbnNpZ2h0JywnY29udGVudC1hbmFseXRpY3MnLCdjb250ZW50JywncHJvZHVjdC1tZXRhLWRhdGEnLCdicmFuZC10ZXJtcy1zZXR0aW5ncycsJ2xhYmVscy1zZXR0aW5ncycsJ3N1Yi1icmFuZHMnLCdzdWItYnJhbmRzLW1hcHBpbmcnLCdzb3Ytc2V0dGluZ3MnICwnY29udGVudC1zZXR0aW5ncycsJ3NlYXJjaC1xdWVyeS1wZXJmb3JtYW5jZSddXG5cdHNvdkFwcFJvdXRlc1x0XHRcdFx0PVsnaW5zaWdodHMnLCdzaGFyZS1vZi12b2ljZScsJ3NvdicsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHRzZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMgXHQ9WydzZWxsZXIvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0dmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzXHQ9Wyd2ZW5kb3IvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0XG5cdHR5cGVTdGF0dXNDb25maWdzID0ge1xuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX1BST0RVQ1RfTUFOVUFMX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfUFJPRFVDVF9BVVRPX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRF9BVVRPJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRCcgOiB0cnVlLFxuICAgICAgICAnU1BfS0VZV09SRFNfQklEX0dBUCcgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1BMQUNFTUVOVF9CSUQnIDogZmFsc2UsXG4gICAgICAgICdTUF9UQVJHRVRJTkdfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTUF9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1NCX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdIRUFETElORV9LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NCX0tFWVdPUkRTX0JJRF9HQVAnIDogZmFsc2UsXG4gICAgICAgICdTQl9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NCX1NQX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdOT19LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ0NBTVBBSUdOX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnQVVUT19UT19NQU5VQUxfQVNJTl9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ01BTlVBTF9UT19BVVRPX0FTSU5fUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdDT01QRVRJVE9SX1BST0RVQ1QnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9CUkFORF9LRVlXT1JEJzogdHJ1ZVxuICAgIH1cblxuXHRcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcblx0XHRwcml2YXRlIGFjdGl2YXRlZFJvdXRlOkFjdGl2YXRlZFJvdXRlLFxuXHRcdHByaXZhdGUgdHJhbnNsYXRlOlRyYW5zbGF0aW9uU2VydmljZSxcblx0XHRwcml2YXRlIHVybENvbnRleHRTZXJ2aWNlOiBVcmxDb250ZXh0U2VydmljZSkge31cblxuXHRnZXRUeXBlU3RhdHVzQ29uZmlncygpe1xuXHRcdHJldHVybiB0aGlzLnR5cGVTdGF0dXNDb25maWdzO1xuXHR9XG5cdGNvbnN0cnVjdENoaWxkTWVudXMobWVudUl0ZW1zKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMuYXBwU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5hcHBsaWNhdGlvbklkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbGlzdE1lbnVJdGVtIG9mIHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PSBsaXN0TWVudUl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGxpc3RNZW51SXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5pZCA9PSB0aGlzLmFwcERldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cblx0Z2V0TWVudUxpc3QoYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gICAgICAgIHRoaXMuYXBwRGV0YWlscyA9IGFwcERldGFpbHM7XG4gICAgICAgIHRoaXMuTWVudUxpc3QgPSBbXTtcbiAgICAgICAgbGV0IGFwcGVuZENoaWxkTWVudXM7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdoZXJva3VhcHAnKSA+IC0xIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSB0aGlzLmNvbnN0cnVjdENoaWxkTWVudXMobWVudWxpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSBtZW51bGlzdHM7XG4gICAgICAgIH1cbiAgICAgICAgYXBwZW5kQ2hpbGRNZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICAgICAgICBtZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKG1lbnUubmFtZSk7XG4gICAgICAgICAgICBtZW51LmNoaWxkcmVuICYmIG1lbnUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRNZW51KSA9PiB7XG4gICAgICAgICAgICAgICAgY2hpbGRNZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkTWVudS5uYW1lKTtcbiAgICAgICAgICAgICAgICBjaGlsZE1lbnUuY2hpbGRyZW4gJiYgY2hpbGRNZW51LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lbnVsaXN0cyA9IGFwcGVuZENoaWxkTWVudXMuZmlsdGVyKGxpc3QgPT4gbGlzdC5pZCAhPT0gJ2FwcF9nbG9iYWxfc2V0dGluZ3MnKTtcbiAgICAgICAgbGV0IHNvcnRlZE1lbnVsaXN0cyA9IHRoaXMubWVudWxpc3RzLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID4gYi5vcmRlcikgPyAxIDogLTEpO1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSWRzID0gc29ydGVkTWVudWxpc3RzLm1hcCgoYXBwSWQpID0+IGFwcElkLmlkKTtcbiAgICAgICAgdGhpcy5hcHBOYW1lcyA9IHRoaXMuYXBwbGljYXRpb25JZHM7XG4gICAgICAgIC8vIGlmKCh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCA9PT0gMTAzOTAgfHxcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkID09PSAxMDUzMCkgJiZcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5lbWFpbCA9PSBcInNyZWVuYXRoQGludGVudHdpc2UuY29tXCIpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwTmFtZXMgPSB0aGlzLmFwcGxpY2F0aW9uSWRzLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiAobmFtZSAhPSAnYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlJyAmJiBuYW1lICE9ICdhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3MnKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICAgIGZvciAobGV0IGFwcE5hbWUgb2Ygc29ydGVkTWVudWxpc3RzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBOYW1lcy5pbmRleE9mKGFwcE5hbWUuaWQpID49IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAmJiBsaXN0LmNoaWxkcmVuICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTmFtZS5pZCA9PSAnYWRzX2FtYXpvbl9kc3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5jaGlsZHJlbiAmJiBsaXN0LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBsaXN0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5pc01hbmFnZWRTZXJ2aWNlQWNjIHx8ICF0aGlzLmlzU3RydWN0dXJlQXBpU3VwcG9ydCkgJiYgY2hpbGQuaWQgPT0gXCJhbXNfZHNwX3NldHRpbmdzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4uZmlsdGVyKHNfY2hpbGQgPT4gc19jaGlsZC5pZCAhPT0gJ2Ftc19kc3BfcnVsZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFwcE5hbWUudHlwZSAhPSAnZXhwYW5kYWJsZScpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5NZW51TGlzdDtcbiAgICB9XG5cblx0Z2V0QXBwbGljYXRpb25NZW51SXRlbShjdXJyZW50TWVudUl0ZW06YW55KTogYW55IHtcblx0XHRsZXQgbWVudUl0ZW0gPSB7XG5cdFx0XHRjaGlsZHJlbiA6IFtdXG5cdFx0fTtcblxuXHRcdGlmKGN1cnJlbnRNZW51SXRlbS50eXBlICE9ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRsZXQgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRjb25zdCBoYXNDb25kaXRpb25zdG9DaGVjayA9IHRoaXMuY29uZGl0aW9ucy5zb21lKGNvbmRpdGlvbiA9PiBhbGxLZXlzLmluY2x1ZGVzKGNvbmRpdGlvbikpXG5cdFx0XHRpZihoYXNDb25kaXRpb25zdG9DaGVjayl7XG5cdFx0XHRcdGxldCBpc01lbnVBbGxvd2VkID0gdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtLCB0aGlzLmNvbmRpdGlvbnMsIGFsbEtleXMpO1xuXHRcdFx0XHRpZihpc01lbnVBbGxvd2VkKXtcblx0XHRcdFx0XHRtZW51SXRlbSA9IGN1cnJlbnRNZW51SXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gZW1wdHknKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdG1lbnVJdGVtID0gY3VycmVudE1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0bGV0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0Y29uc3QgaGFzQ29uZGl0aW9uc3RvQ2hlY2sgPSB0aGlzLmNvbmRpdGlvbnMuc29tZShjb25kaXRpb24gPT4gYWxsS2V5cy5pbmNsdWRlcyhjb25kaXRpb24pKVxuXHRcdFx0aWYoIWhhc0NvbmRpdGlvbnN0b0NoZWNrIHx8IChoYXNDb25kaXRpb25zdG9DaGVjayAmJiB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW0sIHRoaXMuY29uZGl0aW9ucywgYWxsS2V5cykpKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSkuZm9yRWFjaCgoa2V5KT0+eyBcblx0XHRcdFx0XHRpZiAodHlwZW9mIGN1cnJlbnRNZW51SXRlbVtrZXldICE9IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0XHRtZW51SXRlbVtrZXldID0gY3VycmVudE1lbnVJdGVtW2tleV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRmb3IobGV0IGNoaWxkIG9mIGN1cnJlbnRNZW51SXRlbS5jaGlsZHJlbil7XG5cdFx0XHRcdFx0bGV0IG5hdl9tZW51ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGNoaWxkKTtcblx0XHRcdFx0XHRpZihuYXZfbWVudSAhPSBudWxsKXsgXG5cdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbi5wdXNoKG5hdl9tZW51KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4ucHVzaChuYXZfbWVudSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cblx0XHRyZXR1cm4gbWVudUl0ZW07XG5cdH1cblxuXHRnZXRHbG9iYWxTZXR0aW5nc01lbnUoYXBwRGV0YWlscyA6IGFueSwgbWVudWxpc3RzKSB7XG5cdFx0dGhpcy5hcHBEZXRhaWxzID0gYXBwRGV0YWlscztcdFxuXHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdCA9IFtdO1xuXHRcdGxldCBnbG9iYWxTZXR0aW5nTWVudXMgPSBtZW51bGlzdHMuZmlsdGVyKGxpc3Q9PiBsaXN0LmlkID09ICdhcHBfZ2xvYmFsX3NldHRpbmdzJylcblx0XHRsZXQgR0xPQkFMX1NFVFRJTkdfTElTVF9TT1JURUQgPSBnbG9iYWxTZXR0aW5nTWVudXMuc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPiBiLm9yZGVyKSA/IDEgOiAtMSk7XG5cdFx0Zm9yIChsZXQgYXBwTmFtZSBvZiBHTE9CQUxfU0VUVElOR19MSVNUX1NPUlRFRCkge1xuXHRcdFx0aWYoYXBwTmFtZS50eXBlID09ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRcdGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuXHRcdFx0XHRpZihsaXN0ICYmIGxpc3QuY2hpbGRyZW4gJiYgbGlzdC5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KTtcblx0XHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR9ZWxzZSBpZihhcHBOYW1lLnR5cGUgIT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG5cdFx0XHRcdGlmKGxpc3QgIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVx0XHRcblx0XHRyZXR1cm4gdGhpcy5TZXR0aW5nc01lbnVMaXN0O1xuXHR9XG5cblx0Y2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbTogYW55LCBjb25kaXRpb25zLCBhbGxLZXlzOiBzdHJpbmdbXSk6IGFueSB7XG5cdFx0bGV0IGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0aWYoKCF0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgY3VycmVudE1lbnVJdGVtLmlkID09IFwiYWRzX292ZXJ2aWV3XCIgJiYgXG5cdFx0XHQhdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb25bJ25vQWN0aXZlQWNjb3VudHMnXSkpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoY3VycmVudE1lbnVJdGVtLmlkID09PSBcImFkc19zaWdudXBfb3ZlcnZpZXdcIikge1xuXHRcdFx0aWYoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvblsnbm9BY3RpdmVBY2NvdW50cyddKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvcihsZXQgY29uZCBvZiBjb25kaXRpb25zKXtcblx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVtjb25kXSAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRzd2l0Y2goY29uZCl7XG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJpbGl0eV9yb2xlcyc6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JSb2xlcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJzogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnZGlzYWJsZV9yZWFkb25seV9vcmcnOntcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5kaXNhYmxlRm9yT3Jnd2l0aFJlYWRPbmx5KGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9pZHMnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25faWRzX25vdF9pbicgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnX3VzZXJfY3RybCc6e1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkcycgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkc19ub3RfaW4nIDoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkQWNjb3VudElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGNhc2UgJ25vdF9hY2NvdW50X25hbWUnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90QWNjTmFtZShjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfdHlwZScgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckFjY1R5cGUoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25fc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fWNhc2UgJ2FwcF9vcmdfc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnQXBwU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdBcHBTZXR0aW5nc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdC8vIFRPRE8gOiBUaGlzIGlzIHRlbXBvcmVyeSBzb2x1dGlvbiBmb3IgQW1jIHNwYWNpZmljIG9yZyBzZXR0aW5nIGNoZWNrLlxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuYXBwU3BlY2lmaWNDb25maWcoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnc2l0ZUlkcycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU2l0ZUlkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3NpdGVOb3RJZHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNpdGVOb3RJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdzdWJzY3JpcHRpb25fdHlwZXMnIDogeyBcblx0XHRcdFx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVsnYWNjb3VudF90eXBlJ10gPT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTdWJzY3JpcHRpb25zKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQWNjVHlwZShjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdjYW1wYWlnbl90eXBlcycgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblR5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd0YXJnZXR0aW5nX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmdXYWxtYXJ0KGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndXNlcl9lbWFpbHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5hdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdoaWRlX2Zvcl91c2VyJyA6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckhpZGRlblVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICduZ19hcHBfc2V0dGluZyc6IHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0NvbnRleHRTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnbmdfYXBwX3NldHRpbmdfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ29udGV4dFNldHRpbmdOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2N1c3RvbWVyX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ3VzdG9tZXJUeXBlSW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdjdXN0b21lcl90eXBlc19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDdXN0b21lclR5cGVOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRlZmF1bHQ6IHsgXG5cdFx0XHRcdFx0Ly8gLy9zdGF0ZW1lbnRzOyBcblx0XHRcdFx0XHQvLyBicmVhazsgXG5cdFx0XHRcdFx0Ly8gfSBcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighaW5jbHVkZU1lbnUpe1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVx0XHRcdFxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaW5jbHVkZU1lbnU7XG5cdH1cblxuXHRjaGVja0Zvck5vdEFjY05hbWUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm5hbWUpID09IC0xKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yQ2FtcGFpZ25UeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLmRhdGFUeXBlKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclRhcmdldHRpbmdUeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmcocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0uY2FtcGFpZ25UYXJnZXRpbmcpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JDYW1wYWlnblRhcmdldGluZ1dhbG1hcnQocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydFswXS5jYW1wYWlnblRhcmdldGluZykgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRhdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmVtYWlsKTtcblx0fVxuXG5cdGNoZWNrRm9yU3Vic2NyaXB0aW9ucyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbntcblx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pe1xuXHRcdFx0aWYoKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCkgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y2hlY2tGb3JTaXRlSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhOdW1iZXIodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCkpKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclNpdGVOb3RJZHMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKE51bWJlcih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKSkpe1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETyA6IFRoaXMgaXMgdGVtcG9yZXJ5IHNvbHV0aW9uIGZvciBBbWMgc3BhY2lmaWMgb3JnIHNldHRpbmcgY2hlY2suXG5cdGFwcFNwZWNpZmljQ29uZmlnKHBvc3NpYmxlVmFsdWVzOiBBcnJheTxTdHJpbmc+KTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuXHRcdFx0Ly8gQ2hlY2sgcm9sZSBjb25kaXRpb24gYW5kIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsaXR5XG5cdFx0XHRpZiAoIXJvbGUuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsZXQgYWxsb3cgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBUbyB2ZXJpZnkgaWYgdGhlIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcblx0XHRcdFx0bGV0IGtleW1hdGNoZWQgPSBwb3NzaWJsZVZhbHVlcy5zb21lKChrZXk6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MuZmluZEluZGV4KGZ1bmN0aW9uIChzZXR0aW5nOiBhbnkpIHsgcmV0dXJuIGtleSA9PSBzZXR0aW5nLnNldHRpbmc7IH0pID4gLTFcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gVG8gdmVyaWZ5ICBpZiB0aGUgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlIGFuZCBlbmFibGVkL0FjdGl2ZVxuXG5cdFx0XHRcdGxldCBBbGxBY3RpdmUgPSBwb3NzaWJsZVZhbHVlcy5ldmVyeSgoa2V5OiBTdHJpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoc2V0dGluZzogYW55KSB7IHJldHVybiBrZXkgPT0gc2V0dGluZy5zZXR0aW5nICYmIHNldHRpbmcudmFsdWUgPT0gXCJBQ1RJVkVcIjsgfSkgPiAtMVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBJZiBObyBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGUgT1Igc2V0dGluZyBpcyBhdmFpbGFibGUgYnV0IHdpdGggYWN0aXZlIHN0YXR1c1xuXHRcdFx0XHRpZiAoIWtleW1hdGNoZWQgfHwgQWxsQWN0aXZlKSB7XG5cdFx0XHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHRyeXtcblx0XHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRcdGlmKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fVxuXHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gJ0FDVElWRScpe1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3NOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dHJ5e1xuXHRcdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Muc29tZSgob3JnQXBwU2V0dGluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoIXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ0FwcFNldHRpbmcudHlwZSkgfHwgXG5cdFx0XHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdBcHBTZXR0aW5nLnR5cGUpICYmIFxuXHRcdFx0XHRcdFx0XHRvcmdBcHBTZXR0aW5nLnN0YXR1cyAmJiBvcmdBcHBTZXR0aW5nLnN0YXR1cyA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9XG5cdFx0fWNhdGNoKGVycm9yKXtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tDdXN0b21lclR5cGVJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tDdXN0b21lclR5cGVOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgfHwgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0Zvck5vdE9yZ1NldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRsZXQgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCl7XG5cdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRyZXR1cm4gKCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpIHx8IFxuXHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpICYmIFxuXHRcdFx0XHRcdG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdCAgIFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fVxuXHR9XG5cdFxuXHRjaGVja0NvbnRleHRTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzW2l0ZW1dO1xuXHRcdFx0XHRhbGxvdyA9IGFsbG93ID09IHVuZGVmaW5lZCA/IHRydWUgOiBhbGxvdztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cblx0Y2hlY2tDb250ZXh0U2V0dGluZ05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0YWxsb3cgPSAhdGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3NbaXRlbV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXG5cdGNoZWNrRm9yQWNjVHlwZShtZW51SXRlbTogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYobWVudUl0ZW1bJ2FjY291bnRfdHlwZSddLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRpZihtZW51SXRlbVsnc3Vic2NyaXB0aW9uX3R5cGVzJ10pe1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja0ZvclN1YnNjcmlwdGlvbnMobWVudUl0ZW1bJ3N1YnNjcmlwdGlvbl90eXBlcyddKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXNbMF0uaWQpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRpZiggaXRlbS5pZCA9PT0gaWQgKXtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKChrZXkpPT57IFxuXHRcdFx0XHRcdFx0aWYgKGtleSAhPSAnaWQnKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRNZW51SXRlbVtrZXldID0gaXRlbVtrZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmsgY2hhbmdlZCB0byAnK2N1cnJlbnRNZW51SXRlbS5saW5rKycgYW5kIHJvdXRlIGNoYW5nZWQgdG8gJytjdXJyZW50TWVudUl0ZW0ucm91dGUpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0bGV0IGFsbG93ID0gdHJ1ZTtcblx0XHRpZiAocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFyIGZsYWdBcnJheSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHR2YXIgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xuXHRcdFx0XHR2YXIgZmxhZyA9IHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGl0ZW0sIGFsbEtleXMsIGFsbEtleXMpXG5cdFx0XHRcdGZsYWdBcnJheS5wdXNoKGZsYWcpO1xuXHRcdFx0fVxuXHRcdFx0YWxsb3cgPSBmbGFnQXJyYXkuaW5jbHVkZXModHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JTcGVjaWZpZWRBY2NvdW50SWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JSb2xlcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNoZWNrRm9ySGlkZGVuVXNlclJvbGUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCAmJiB0aGlzLmFwcERldGFpbHMudXNlckluZm8uaXNIaWRkZW5Vc2VyKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGRpc2FibGVGb3JPcmd3aXRoUmVhZE9ubHkocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUgPT09ICdSRUFEX09OTFknICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSA+PSAwKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUgLCBhcHBsaWNhdGlvbklkPXVuZGVmaW5lZCkge1xuXHRcdGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlKSA9PSAtMSkge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcblx0XHRcdFx0aWYgKGFwcGxpY2F0aW9uSWQpIHtcblx0XHRcdFx0XHRwYXJhbXMgPSB7Li4ucGFyYW1zLCAuLi5hcHBsaWNhdGlvbklkfTtcdFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJvdXRlLmluZGV4T2YoJz8nKSA+IC0xICYmIHJvdXRlLmluZGV4T2YoJ3VzZXJtZ210JykgPiAtMSl7XG5cdFx0XHRcdFx0cm91dGUgPSByb3V0ZS5zcGxpdCgnPycpWzBdO1xuXHRcdFx0XHRcdGxldCBuZXdRUGFyYW0gPSB7IHVzZXJtZ210IDogdHJ1ZX1cblx0XHRcdFx0XHRwYXJhbXMgPSB7IC4uLnBhcmFtcyAsIC4uLm5ld1FQYXJhbX1cblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdXJsVG9OYXZpZ2F0ZSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2UucHJlcGFyZVVybFdpdGhRdWVyeVBhcmFtcyhyb3V0ZSwgcGFyYW1zKTtcblx0XHRcdFx0dXJsVG9OYXZpZ2F0ZSA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdC8vIHVybFRvTmF2aWdhdGUgPSBgaHR0cDovL2xvY2FsaG9zdDozMDAwLyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdOYXZpZ2F0aW5nIHRvIC0gJyx1cmxUb05hdmlnYXRlKTtcblx0XHRcdFx0d2luZG93Lm9wZW4odXJsVG9OYXZpZ2F0ZSwgJ19zZWxmJyk7XG5cdFx0XHR9KTtcblx0XHR9XG4gICAgfVxuXHRcblx0cHVibGljIGZldGNoS2V5VmFsdWUoa2V5OiBzdHJpbmcpIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdFxuXHR9XG5cblx0cHVibGljIHNldEFjdGl2ZVJlY29Db3VudChjb3VudDpudW1iZXIpe1xuXHRcdHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFsnYWN0aXZlUmVjb21tZW5kYXRpb24nXSA9IGNvdW50O1xuXHR9XG5cdFxuXHRwdWJsaWMgaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGlkLHN1YnMsdHlwZSl7XG4gICAgaWYoaWQgPT09ICdhZHNfYW1hem9uX2F0dHJpYnV0aW9uJyAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdBTVNfQVRUUklCVVRJT04nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9kc3AnICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0RTUCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2FtYXpvbl9jb250ZW50JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ09OVEVOVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2luc3RhY2FydCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0lOU1RBQ0FSVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9ZWxzZSBpZigoaWQgPT09ICdhZHNfY3JpdGVvJykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ1JJVEVPJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoKGlkID09PSAnYWRzX3dhbG1hcnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdXQUxNQVJUJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoaWQgPT09ICdhZHNfZGF0YV9wbGF0Zm9ybSd8fCBpZCA9PT0gJ2FtYy1wbGF0Zm9ybS13ZWInIHx8IGlkID09PSAnYWRzX2FtYXpvbl9zZWxsZXInKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9hZHZlcnRpc2luZycgfHwgaWQgPT09ICdhZHNfdmVuZG9yX3NhbGVzJyB8fCBpZCA9PT0gJ2Fkc19zZWxsZXJfc2FsZXMnKSB7XG4gICAgICBmb3IobGV0IHNldHRpbmdzIG9mIHN1YnMpe1xuICAgICAgICBpZihzZXR0aW5ncy50eXBlICE9IHR5cGUgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICBcdH1cblxuXHRwdWJsaWMgY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgYWNjVHlwZSAsc3ViVHlwZSkge1xuXHRcdGlmKHN1YlR5cGUgPT09IGFjY1R5cGUpe1xuXHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBjdXJyZW50VHlwZVN1YiA9IHN1YnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udHlwZSA9PT0gc3ViVHlwZSk7XG5cdFx0aWYoY3VycmVudFR5cGVTdWIubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoY3VycmVudFR5cGVTdWJbMF0uc3RhdHVzID09PSAnQUNUSVZFJyB8fCBjdXJyZW50VHlwZVN1YlswXS50eXBlID09PSBhY2NUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRBcHBsaWNhdGlvbklEKCkge1xuXHRcdGxldCB1cmxBcnJheSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2Uucm91dGVyLnVybC5zcGxpdCgnLycpO1xuXHRcdGxldCBjdXJyZW50Um91dGUgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcblx0XHRcblx0XHRpZih0aGlzLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCI7XG5cdFx0fSBlbHNlIGlmKHRoaXMuc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCI7XG5cdFx0fVxuXHR9XG59Il19
835
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNkM1QjtJQUNBO0lBQ0E7SUFDQTtJQTlDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJ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QXZ6QlcseUJBQXlCOytIQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LWFwaS5zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVybENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi91cmwtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEVOX0xBQkVMUyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMtZW4nO1xuaW1wb3J0IHsgSkFfTEFCRUxTIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy1qYSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIHtcblxuXHRjb25kaXRpb25zIFx0XHRcdD0gWydvcmdfdXNlcl9jdHJsJywgJ3Zpc2liaWxpdHlfcm9sZXMnLCAndmlzaWJpbGl0eV9yb2xlc19ub3RfaW4nLCAnYWNjb3VudF9pZHMnLCAnY3VzdG9tZXJfdHlwZXNfbm90X2luJywnY3VzdG9tZXJfdHlwZXMnLCdvcmdhbml6YXRpb25faWRzJywgJ29yZ2FuaXphdGlvbl9pZHNfbm90X2luJywgJ2FjY291bnRfdHlwZScsICdhY2NvdW50X2lkc19ub3RfaW4nLCAnb3JnYW5pemF0aW9uX3NldHRpbmcnLCAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJywgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snLCAnY2FtcGFpZ25fdHlwZXMnLCAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZycsICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nX3dhbG1hcnQnLCAnc3Vic2NyaXB0aW9uX3R5cGVzJywgJ3NpdGVJZHMnLCAnc2l0ZU5vdElkcycsICdub3RfYWNjb3VudF90eXBlJywgJ25vdF9hY2NvdW50X25hbWUnLCAnZGlzYWJsZV9yZWFkb25seV9vcmcnLCAndXNlcl9lbWFpbHMnLCAnaGlkZV9mb3JfdXNlcicsICdhcHBfb3JnX3NldHRpbmcnLCdhcHBfb3JnX3NldHRpbmdfbm90X2luJywnbmdfYXBwX3NldHRpbmcnLCduZ19hcHBfc2V0dGluZ19ub3RfaW4nLCd0YXJnZXR0aW5nX3R5cGVzJywndGFyZ2V0dGluZ190eXBlc19ub3RfaW4nLCdoaWRlX2Zvcl91c2VyJ107XG5cdE1lbnVMaXN0IFx0XHRcdD0gW107XG5cblx0YXBwbGljYXRpb25JZHMgXHRcdD0gW107XG5cdGVuYWJsZUFsbE1lbnVzQnlPcmcgPSBbMzA3ODBdXG5cdFxuXHRhcHBEZXRhaWxzOlx0YW55O1xuXHRpc1N0cnVjdHVyZUFwaVN1cHBvcnQ6XHRhbnk7XG5cdGlzTWFuYWdlZFNlcnZpY2VBY2M6IGJvb2xlYW47XG5cdFNldHRpbmdzTWVudUxpc3Q6IGFueVtdO1xuXHRhcHBOYW1lczogc3RyaW5nW107XG5cdHByaXZhdGUgbWVudWxpc3RzOiBhbnk7XG5cdGNvbnRlbnRBcHBSb3V0ZXNcdFx0XHQ9Wydjb250ZW50LWluc2lnaHQnLCdjb250ZW50LWFuYWx5dGljcycsJ2NvbnRlbnQnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0c292QXBwUm91dGVzXHRcdFx0XHQ9WydpbnNpZ2h0cycsJ3NoYXJlLW9mLXZvaWNlJywnYnJhbmRzJywna2V5d29yZHMnLCdwcm9kdWN0cycsJ2RhaWx5LXRyYWNrZXInLCdkYWlseS10cmFja2VyL2JyYW5kcycsJ2RhaWx5LXRyYWNrZXIva2V5d29yZHMnLCdkYWlseS10cmFja2VyL3Byb2R1Y3RzJywncmF3LWRhdGEnLCdvdmVydmlldycsJ3NvdicsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnLCdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnXVxuXHRzZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMgXHQ9WydzZWxsZXIvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0dmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzXHQ9Wyd2ZW5kb3IvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJywnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJ11cblx0XG5cdHR5cGVTdGF0dXNDb25maWdzID0ge1xuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX1BST0RVQ1RfTUFOVUFMX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfUFJPRFVDVF9BVVRPX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRF9BVVRPJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRCcgOiB0cnVlLFxuICAgICAgICAnU1BfS0VZV09SRFNfQklEX0dBUCcgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1BMQUNFTUVOVF9CSUQnIDogZmFsc2UsXG4gICAgICAgICdTUF9UQVJHRVRJTkdfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTUF9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1NCX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdIRUFETElORV9LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NCX0tFWVdPUkRTX0JJRF9HQVAnIDogZmFsc2UsXG4gICAgICAgICdTQl9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NCX1NQX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdOT19LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ0NBTVBBSUdOX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnQVVUT19UT19NQU5VQUxfQVNJTl9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ01BTlVBTF9UT19BVVRPX0FTSU5fUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdDT01QRVRJVE9SX1BST0RVQ1QnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9CUkFORF9LRVlXT1JEJzogdHJ1ZVxuICAgIH1cblxuXHRcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcblx0XHRwcml2YXRlIGFjdGl2YXRlZFJvdXRlOkFjdGl2YXRlZFJvdXRlLFxuXHRcdHByaXZhdGUgdHJhbnNsYXRlOlRyYW5zbGF0aW9uU2VydmljZSxcblx0XHRwcml2YXRlIHVybENvbnRleHRTZXJ2aWNlOiBVcmxDb250ZXh0U2VydmljZSkge31cblxuXHRnZXRUeXBlU3RhdHVzQ29uZmlncygpe1xuXHRcdHJldHVybiB0aGlzLnR5cGVTdGF0dXNDb25maWdzO1xuXHR9XG5cdGNvbnN0cnVjdENoaWxkTWVudXMobWVudUl0ZW1zKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMuYXBwU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5hcHBsaWNhdGlvbklkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbGlzdE1lbnVJdGVtIG9mIHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PSBsaXN0TWVudUl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGxpc3RNZW51SXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5pZCA9PSB0aGlzLmFwcERldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cblx0Z2V0TWVudUxpc3QoYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gICAgICAgIHRoaXMuYXBwRGV0YWlscyA9IGFwcERldGFpbHM7XG4gICAgICAgIHRoaXMuTWVudUxpc3QgPSBbXTtcbiAgICAgICAgbGV0IGFwcGVuZENoaWxkTWVudXM7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdoZXJva3VhcHAnKSA+IC0xIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSB0aGlzLmNvbnN0cnVjdENoaWxkTWVudXMobWVudWxpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSBtZW51bGlzdHM7XG4gICAgICAgIH1cbiAgICAgICAgYXBwZW5kQ2hpbGRNZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICAgICAgICBtZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKG1lbnUubmFtZSk7XG4gICAgICAgICAgICBtZW51LmNoaWxkcmVuICYmIG1lbnUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRNZW51KSA9PiB7XG4gICAgICAgICAgICAgICAgY2hpbGRNZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkTWVudS5uYW1lKTtcbiAgICAgICAgICAgICAgICBjaGlsZE1lbnUuY2hpbGRyZW4gJiYgY2hpbGRNZW51LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lbnVsaXN0cyA9IGFwcGVuZENoaWxkTWVudXMuZmlsdGVyKGxpc3QgPT4gbGlzdC5pZCAhPT0gJ2FwcF9nbG9iYWxfc2V0dGluZ3MnKTtcbiAgICAgICAgbGV0IHNvcnRlZE1lbnVsaXN0cyA9IHRoaXMubWVudWxpc3RzLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID4gYi5vcmRlcikgPyAxIDogLTEpO1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSWRzID0gc29ydGVkTWVudWxpc3RzLm1hcCgoYXBwSWQpID0+IGFwcElkLmlkKTtcbiAgICAgICAgdGhpcy5hcHBOYW1lcyA9IHRoaXMuYXBwbGljYXRpb25JZHM7XG4gICAgICAgIC8vIGlmKCh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCA9PT0gMTAzOTAgfHxcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkID09PSAxMDUzMCkgJiZcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5lbWFpbCA9PSBcInNyZWVuYXRoQGludGVudHdpc2UuY29tXCIpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYXBwTmFtZXMgPSB0aGlzLmFwcGxpY2F0aW9uSWRzLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiAobmFtZSAhPSAnYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlJyAmJiBuYW1lICE9ICdhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3MnKTtcbiAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICAgIGZvciAobGV0IGFwcE5hbWUgb2Ygc29ydGVkTWVudWxpc3RzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBOYW1lcy5pbmRleE9mKGFwcE5hbWUuaWQpID49IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAmJiBsaXN0LmNoaWxkcmVuICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTmFtZS5pZCA9PSAnYWRzX2FtYXpvbl9kc3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5jaGlsZHJlbiAmJiBsaXN0LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBsaXN0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTWFuYWdlZFNlcnZpY2VBY2MgJiYgY2hpbGQuaWQgPT0gXCJhbXNfZHNwX3NldHRpbmdzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4uZmlsdGVyKHNfY2hpbGQgPT4gc19jaGlsZC5pZCAhPT0gJ2Ftc19kc3BfcnVsZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFwcE5hbWUudHlwZSAhPSAnZXhwYW5kYWJsZScpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5NZW51TGlzdDtcbiAgICB9XG5cblx0Z2V0QXBwbGljYXRpb25NZW51SXRlbShjdXJyZW50TWVudUl0ZW06YW55KTogYW55IHtcblx0XHRsZXQgbWVudUl0ZW0gPSB7XG5cdFx0XHRjaGlsZHJlbiA6IFtdXG5cdFx0fTtcblxuXHRcdGlmKGN1cnJlbnRNZW51SXRlbS50eXBlICE9ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRsZXQgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRjb25zdCBoYXNDb25kaXRpb25zdG9DaGVjayA9IHRoaXMuY29uZGl0aW9ucy5zb21lKGNvbmRpdGlvbiA9PiBhbGxLZXlzLmluY2x1ZGVzKGNvbmRpdGlvbikpXG5cdFx0XHRpZihoYXNDb25kaXRpb25zdG9DaGVjayl7XG5cdFx0XHRcdGxldCBpc01lbnVBbGxvd2VkID0gdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtLCB0aGlzLmNvbmRpdGlvbnMsIGFsbEtleXMpO1xuXHRcdFx0XHRpZihpc01lbnVBbGxvd2VkKXtcblx0XHRcdFx0XHRtZW51SXRlbSA9IGN1cnJlbnRNZW51SXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gZW1wdHknKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdG1lbnVJdGVtID0gY3VycmVudE1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0bGV0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0Y29uc3QgaGFzQ29uZGl0aW9uc3RvQ2hlY2sgPSB0aGlzLmNvbmRpdGlvbnMuc29tZShjb25kaXRpb24gPT4gYWxsS2V5cy5pbmNsdWRlcyhjb25kaXRpb24pKVxuXHRcdFx0aWYoIWhhc0NvbmRpdGlvbnN0b0NoZWNrIHx8IChoYXNDb25kaXRpb25zdG9DaGVjayAmJiB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW0sIHRoaXMuY29uZGl0aW9ucywgYWxsS2V5cykpKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSkuZm9yRWFjaCgoa2V5KT0+eyBcblx0XHRcdFx0XHRpZiAodHlwZW9mIGN1cnJlbnRNZW51SXRlbVtrZXldICE9IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0XHRtZW51SXRlbVtrZXldID0gY3VycmVudE1lbnVJdGVtW2tleV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRmb3IobGV0IGNoaWxkIG9mIGN1cnJlbnRNZW51SXRlbS5jaGlsZHJlbil7XG5cdFx0XHRcdFx0bGV0IG5hdl9tZW51ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGNoaWxkKTtcblx0XHRcdFx0XHRpZihuYXZfbWVudSAhPSBudWxsKXsgXG5cdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbi5wdXNoKG5hdl9tZW51KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4ucHVzaChuYXZfbWVudSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cblx0XHRyZXR1cm4gbWVudUl0ZW07XG5cdH1cblxuXHRnZXRHbG9iYWxTZXR0aW5nc01lbnUoYXBwRGV0YWlscyA6IGFueSwgbWVudWxpc3RzKSB7XG5cdFx0dGhpcy5hcHBEZXRhaWxzID0gYXBwRGV0YWlscztcdFxuXHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdCA9IFtdO1xuXHRcdGxldCBnbG9iYWxTZXR0aW5nTWVudXMgPSBtZW51bGlzdHMuZmlsdGVyKGxpc3Q9PiBsaXN0LmlkID09ICdhcHBfZ2xvYmFsX3NldHRpbmdzJylcblx0XHRsZXQgR0xPQkFMX1NFVFRJTkdfTElTVF9TT1JURUQgPSBnbG9iYWxTZXR0aW5nTWVudXMuc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPiBiLm9yZGVyKSA/IDEgOiAtMSk7XG5cdFx0Zm9yIChsZXQgYXBwTmFtZSBvZiBHTE9CQUxfU0VUVElOR19MSVNUX1NPUlRFRCkge1xuXHRcdFx0aWYoYXBwTmFtZS50eXBlID09ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRcdGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuXHRcdFx0XHRpZihsaXN0ICYmIGxpc3QuY2hpbGRyZW4gJiYgbGlzdC5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KTtcblx0XHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR9ZWxzZSBpZihhcHBOYW1lLnR5cGUgIT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG5cdFx0XHRcdGlmKGxpc3QgIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVx0XHRcblx0XHRyZXR1cm4gdGhpcy5TZXR0aW5nc01lbnVMaXN0O1xuXHR9XG5cblx0Y2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbTogYW55LCBjb25kaXRpb25zLCBhbGxLZXlzOiBzdHJpbmdbXSk6IGFueSB7XG5cdFx0bGV0IGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0aWYoKCF0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgY3VycmVudE1lbnVJdGVtLmlkID09IFwiYWRzX292ZXJ2aWV3XCIgJiYgXG5cdFx0XHQhdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb25bJ25vQWN0aXZlQWNjb3VudHMnXSkpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoY3VycmVudE1lbnVJdGVtLmlkID09PSBcImFkc19zaWdudXBfb3ZlcnZpZXdcIikge1xuXHRcdFx0aWYoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvblsnbm9BY3RpdmVBY2NvdW50cyddKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvcihsZXQgY29uZCBvZiBjb25kaXRpb25zKXtcblx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVtjb25kXSAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRzd2l0Y2goY29uZCl7XG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJpbGl0eV9yb2xlcyc6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JSb2xlcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJzogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnZGlzYWJsZV9yZWFkb25seV9vcmcnOntcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5kaXNhYmxlRm9yT3Jnd2l0aFJlYWRPbmx5KGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9pZHMnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25faWRzX25vdF9pbicgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnX3VzZXJfY3RybCc6e1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkcycgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkc19ub3RfaW4nIDoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkQWNjb3VudElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGNhc2UgJ25vdF9hY2NvdW50X25hbWUnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90QWNjTmFtZShjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfdHlwZScgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckFjY1R5cGUoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25fc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fWNhc2UgJ2FwcF9vcmdfc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnQXBwU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdBcHBTZXR0aW5nc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdC8vIFRPRE8gOiBUaGlzIGlzIHRlbXBvcmVyeSBzb2x1dGlvbiBmb3IgQW1jIHNwYWNpZmljIG9yZyBzZXR0aW5nIGNoZWNrLlxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuYXBwU3BlY2lmaWNDb25maWcoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnc2l0ZUlkcycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU2l0ZUlkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3NpdGVOb3RJZHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNpdGVOb3RJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdzdWJzY3JpcHRpb25fdHlwZXMnIDogeyBcblx0XHRcdFx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVsnYWNjb3VudF90eXBlJ10gPT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTdWJzY3JpcHRpb25zKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQWNjVHlwZShjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdjYW1wYWlnbl90eXBlcycgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblR5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd0YXJnZXR0aW5nX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmdXYWxtYXJ0KGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndXNlcl9lbWFpbHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5hdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdoaWRlX2Zvcl91c2VyJyA6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckhpZGRlblVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICduZ19hcHBfc2V0dGluZyc6IHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0NvbnRleHRTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnbmdfYXBwX3NldHRpbmdfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ29udGV4dFNldHRpbmdOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2N1c3RvbWVyX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ3VzdG9tZXJUeXBlSW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdjdXN0b21lcl90eXBlc19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDdXN0b21lclR5cGVOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRlZmF1bHQ6IHsgXG5cdFx0XHRcdFx0Ly8gLy9zdGF0ZW1lbnRzOyBcblx0XHRcdFx0XHQvLyBicmVhazsgXG5cdFx0XHRcdFx0Ly8gfSBcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighaW5jbHVkZU1lbnUpe1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVx0XHRcdFxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaW5jbHVkZU1lbnU7XG5cdH1cblxuXHRjaGVja0Zvck5vdEFjY05hbWUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm5hbWUpID09IC0xKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yQ2FtcGFpZ25UeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLmRhdGFUeXBlKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclRhcmdldHRpbmdUeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmcocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0uY2FtcGFpZ25UYXJnZXRpbmcpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JDYW1wYWlnblRhcmdldGluZ1dhbG1hcnQocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydFswXS5jYW1wYWlnblRhcmdldGluZykgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRhdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmVtYWlsKTtcblx0fVxuXG5cdGNoZWNrRm9yU3Vic2NyaXB0aW9ucyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbntcblx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pe1xuXHRcdFx0aWYoKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCkgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y2hlY2tGb3JTaXRlSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhOdW1iZXIodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCkpKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclNpdGVOb3RJZHMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKE51bWJlcih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKSkpe1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETyA6IFRoaXMgaXMgdGVtcG9yZXJ5IHNvbHV0aW9uIGZvciBBbWMgc3BhY2lmaWMgb3JnIHNldHRpbmcgY2hlY2suXG5cdGFwcFNwZWNpZmljQ29uZmlnKHBvc3NpYmxlVmFsdWVzOiBBcnJheTxTdHJpbmc+KTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuXHRcdFx0Ly8gQ2hlY2sgcm9sZSBjb25kaXRpb24gYW5kIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsaXR5XG5cdFx0XHRpZiAoIXJvbGUuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsZXQgYWxsb3cgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBUbyB2ZXJpZnkgaWYgdGhlIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcblx0XHRcdFx0bGV0IGtleW1hdGNoZWQgPSBwb3NzaWJsZVZhbHVlcy5zb21lKChrZXk6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MuZmluZEluZGV4KGZ1bmN0aW9uIChzZXR0aW5nOiBhbnkpIHsgcmV0dXJuIGtleSA9PSBzZXR0aW5nLnNldHRpbmc7IH0pID4gLTFcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gVG8gdmVyaWZ5ICBpZiB0aGUgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlIGFuZCBlbmFibGVkL0FjdGl2ZVxuXG5cdFx0XHRcdGxldCBBbGxBY3RpdmUgPSBwb3NzaWJsZVZhbHVlcy5ldmVyeSgoa2V5OiBTdHJpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoc2V0dGluZzogYW55KSB7IHJldHVybiBrZXkgPT0gc2V0dGluZy5zZXR0aW5nICYmIHNldHRpbmcudmFsdWUgPT0gXCJBQ1RJVkVcIjsgfSkgPiAtMVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBJZiBObyBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGUgT1Igc2V0dGluZyBpcyBhdmFpbGFibGUgYnV0IHdpdGggYWN0aXZlIHN0YXR1c1xuXHRcdFx0XHRpZiAoIWtleW1hdGNoZWQgfHwgQWxsQWN0aXZlKSB7XG5cdFx0XHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHRyeXtcblx0XHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRcdGlmKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fVxuXHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gJ0FDVElWRScpe1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3NOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dHJ5e1xuXHRcdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Muc29tZSgob3JnQXBwU2V0dGluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoIXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ0FwcFNldHRpbmcudHlwZSkgfHwgXG5cdFx0XHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdBcHBTZXR0aW5nLnR5cGUpICYmIFxuXHRcdFx0XHRcdFx0XHRvcmdBcHBTZXR0aW5nLnN0YXR1cyAmJiBvcmdBcHBTZXR0aW5nLnN0YXR1cyA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9XG5cdFx0fWNhdGNoKGVycm9yKXtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tDdXN0b21lclR5cGVJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tDdXN0b21lclR5cGVOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgfHwgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0Zvck5vdE9yZ1NldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRsZXQgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCl7XG5cdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRyZXR1cm4gKCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpIHx8IFxuXHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpICYmIFxuXHRcdFx0XHRcdG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdCAgIFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fVxuXHR9XG5cdFxuXHRjaGVja0NvbnRleHRTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzW2l0ZW1dO1xuXHRcdFx0XHRhbGxvdyA9IGFsbG93ID09IHVuZGVmaW5lZCA/IHRydWUgOiBhbGxvdztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cblx0Y2hlY2tDb250ZXh0U2V0dGluZ05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0YWxsb3cgPSAhdGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3NbaXRlbV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXG5cdGNoZWNrRm9yQWNjVHlwZShtZW51SXRlbTogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYobWVudUl0ZW1bJ2FjY291bnRfdHlwZSddLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRpZihtZW51SXRlbVsnc3Vic2NyaXB0aW9uX3R5cGVzJ10pe1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja0ZvclN1YnNjcmlwdGlvbnMobWVudUl0ZW1bJ3N1YnNjcmlwdGlvbl90eXBlcyddKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXNbMF0uaWQpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRpZiggaXRlbS5pZCA9PT0gaWQgKXtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKChrZXkpPT57IFxuXHRcdFx0XHRcdFx0aWYgKGtleSAhPSAnaWQnKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRNZW51SXRlbVtrZXldID0gaXRlbVtrZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmsgY2hhbmdlZCB0byAnK2N1cnJlbnRNZW51SXRlbS5saW5rKycgYW5kIHJvdXRlIGNoYW5nZWQgdG8gJytjdXJyZW50TWVudUl0ZW0ucm91dGUpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0bGV0IGFsbG93ID0gdHJ1ZTtcblx0XHRpZiAocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFyIGZsYWdBcnJheSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHR2YXIgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xuXHRcdFx0XHR2YXIgZmxhZyA9IHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGl0ZW0sIGFsbEtleXMsIGFsbEtleXMpXG5cdFx0XHRcdGZsYWdBcnJheS5wdXNoKGZsYWcpO1xuXHRcdFx0fVxuXHRcdFx0YWxsb3cgPSBmbGFnQXJyYXkuaW5jbHVkZXModHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JTcGVjaWZpZWRBY2NvdW50SWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JSb2xlcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNoZWNrRm9ySGlkZGVuVXNlclJvbGUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCAmJiB0aGlzLmFwcERldGFpbHMudXNlckluZm8uaXNIaWRkZW5Vc2VyKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGRpc2FibGVGb3JPcmd3aXRoUmVhZE9ubHkocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUgPT09ICdSRUFEX09OTFknICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSA+PSAwKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUgLCBhcHBsaWNhdGlvbklkPXVuZGVmaW5lZCkge1xuXHRcdGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlKSA9PSAtMSkge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcblx0XHRcdFx0aWYgKGFwcGxpY2F0aW9uSWQpIHtcblx0XHRcdFx0XHRwYXJhbXMgPSB7Li4ucGFyYW1zLCAuLi5hcHBsaWNhdGlvbklkfTtcdFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJvdXRlLmluZGV4T2YoJz8nKSA+IC0xICYmIHJvdXRlLmluZGV4T2YoJ3VzZXJtZ210JykgPiAtMSl7XG5cdFx0XHRcdFx0cm91dGUgPSByb3V0ZS5zcGxpdCgnPycpWzBdO1xuXHRcdFx0XHRcdGxldCBuZXdRUGFyYW0gPSB7IHVzZXJtZ210IDogdHJ1ZX1cblx0XHRcdFx0XHRwYXJhbXMgPSB7IC4uLnBhcmFtcyAsIC4uLm5ld1FQYXJhbX1cblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdXJsVG9OYXZpZ2F0ZSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2UucHJlcGFyZVVybFdpdGhRdWVyeVBhcmFtcyhyb3V0ZSwgcGFyYW1zKTtcblx0XHRcdFx0dXJsVG9OYXZpZ2F0ZSA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdC8vIHVybFRvTmF2aWdhdGUgPSBgaHR0cDovL2xvY2FsaG9zdDozMDAwLyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdOYXZpZ2F0aW5nIHRvIC0gJyx1cmxUb05hdmlnYXRlKTtcblx0XHRcdFx0d2luZG93Lm9wZW4odXJsVG9OYXZpZ2F0ZSwgJ19zZWxmJyk7XG5cdFx0XHR9KTtcblx0XHR9XG4gICAgfVxuXHRcblx0cHVibGljIGZldGNoS2V5VmFsdWUoa2V5OiBzdHJpbmcpIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdFxuXHR9XG5cblx0cHVibGljIHNldEFjdGl2ZVJlY29Db3VudChjb3VudDpudW1iZXIpe1xuXHRcdHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFsnYWN0aXZlUmVjb21tZW5kYXRpb24nXSA9IGNvdW50O1xuXHR9XG5cdFxuXHRwdWJsaWMgaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGlkLHN1YnMsdHlwZSl7XG4gICAgaWYoaWQgPT09ICdhZHNfYW1hem9uX2F0dHJpYnV0aW9uJyAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdBTVNfQVRUUklCVVRJT04nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9kc3AnICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0RTUCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2FtYXpvbl9jb250ZW50JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ09OVEVOVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2luc3RhY2FydCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0lOU1RBQ0FSVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9ZWxzZSBpZigoaWQgPT09ICdhZHNfY3JpdGVvJykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ1JJVEVPJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoKGlkID09PSAnYWRzX3dhbG1hcnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdXQUxNQVJUJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoaWQgPT09ICdhZHNfZGF0YV9wbGF0Zm9ybSd8fCBpZCA9PT0gJ2FtYy1wbGF0Zm9ybS13ZWInIHx8IGlkID09PSAnYWRzX2FtYXpvbl9zZWxsZXInKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9hZHZlcnRpc2luZycgfHwgaWQgPT09ICdhZHNfdmVuZG9yX3NhbGVzJyB8fCBpZCA9PT0gJ2Fkc19zZWxsZXJfc2FsZXMnKSB7XG4gICAgICBmb3IobGV0IHNldHRpbmdzIG9mIHN1YnMpe1xuICAgICAgICBpZihzZXR0aW5ncy50eXBlICE9IHR5cGUgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICBcdH1cblxuXHRwdWJsaWMgY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgYWNjVHlwZSAsc3ViVHlwZSkge1xuXHRcdGlmKHN1YlR5cGUgPT09IGFjY1R5cGUpe1xuXHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBjdXJyZW50VHlwZVN1YiA9IHN1YnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udHlwZSA9PT0gc3ViVHlwZSk7XG5cdFx0aWYoY3VycmVudFR5cGVTdWIubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoY3VycmVudFR5cGVTdWJbMF0uc3RhdHVzID09PSAnQUNUSVZFJyB8fCBjdXJyZW50VHlwZVN1YlswXS50eXBlID09PSBhY2NUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRBcHBsaWNhdGlvbklEKCkge1xuXHRcdGxldCB1cmxBcnJheSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2Uucm91dGVyLnVybC5zcGxpdCgnLycpO1xuXHRcdGxldCBjdXJyZW50Um91dGUgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcblx0XHRcblx0XHRpZih0aGlzLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCI7XG5cdFx0fSBlbHNlIGlmKHRoaXMuc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCI7XG5cdFx0fVxuXHR9XG59Il19
@@ -514,7 +514,7 @@ class ApplicationSidebarService {
514
514
  appNames;
515
515
  menulists;
516
516
  contentAppRoutes = ['content-insight', 'content-analytics', 'content', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
517
- sovAppRoutes = ['insights', 'share-of-voice', 'sov', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
517
+ sovAppRoutes = ['insights', 'share-of-voice', 'brands', 'keywords', 'products', 'daily-tracker', 'daily-tracker/brands', 'daily-tracker/keywords', 'daily-tracker/products', 'raw-data', 'overview', 'sov', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
518
518
  sellerAnalyticsAppRoutes = ['seller/insights', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
519
519
  vendorAnalyticsAppRoutes = ['vendor/insights', 'product-meta-data', 'brand-terms-settings', 'labels-settings', 'sub-brands', 'sub-brands-mapping', 'sov-settings', 'content-settings', 'search-query-performance'];
520
520
  typeStatusConfigs = {
@@ -604,7 +604,7 @@ class ApplicationSidebarService {
604
604
  if (appName.id == 'ads_amazon_dsp') {
605
605
  if (list.children && list.children.length > 0) {
606
606
  for (let child of list.children) {
607
- if ((this.isManagedServiceAcc || !this.isStructureApiSupport) && child.id == "ams_dsp_settings") {
607
+ if (this.isManagedServiceAcc && child.id == "ams_dsp_settings") {
608
608
  child.children = child.children.filter(s_child => s_child.id !== 'ams_dsp_rules');
609
609
  }
610
610
  }
@@ -2100,7 +2100,7 @@ class ApplicationSidebarComponent {
2100
2100
  ngOnChanges() {
2101
2101
  // this.showMenuIcon();
2102
2102
  this.checkApplicationDetails(this.applicationDetails);
2103
- if (this.applicationDetails.applicationId == 'ads_amazon_dsp' && !this.RestApiService.isStructerApiCalled) {
2103
+ if (this.applicationDetails.applicationId == 'ads_amazon_dsp') {
2104
2104
  this.getStructureAPISupportData(this.applicationDetails.currentAccount);
2105
2105
  }
2106
2106
  }