@vendasta/social-posts 5.42.3 → 5.42.4

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.
@@ -6,7 +6,7 @@
6
6
  // *********************************
7
7
  export { FieldMask, } from './field-mask';
8
8
  export { Hashtag, } from './hashtag';
9
- export { Author, BlogPostCustomization, CallToAction, Category, Error, Event, MediaEntry, MetaData, PostTemplate, SSIDPostType, SchedulePostStatus, SocialCampaign, SocialPost, SocialPostData, TikTokCustomization, YoutubeCustomization, } from './social-posts';
9
+ export { Author, BlogPostCustomization, CallToAction, Category, Error, Event, MLPostCategory, MediaEntry, MetaData, PostTemplate, SSIDPostType, SchedulePostStatus, SocialCampaign, SocialPost, SocialPostData, TikTokCustomization, YoutubeCustomization, } from './social-posts';
10
10
  export { BulkUploadMultilocation, Location, MultilocationPost, MultilocationPostError, MultilocationServices, PostAction, PostCustomization, PostEvent, } from './multilocation-post';
11
11
  export { PixabayImage, } from './pixabay-image';
12
12
  export { FacebookPostStats, SocialPostStats, TwitterPostStats, } from './social-post-stats';
@@ -22,4 +22,4 @@ export { ChatMessage, SendMessageV2Request, SendMessageV2Response, } from './cha
22
22
  export { BlogConnection, CreateBlogConnectionRequest, CreateBlogConnectionResponse, DeleteBlogConnectionRequest, GetBlogConnectionRequest, GetBlogConnectionResponse, ListBlogConnectionRequest, ListBlogConnectionResponse, UpdateBlogConnectionRequest, } from './blog-connection';
23
23
  export { AuthorsRequest, AuthorsResponse, BlogImage, BlogPost, BlogVideo, CategoryRequest, CategoryResponse, DeleteBlogPostRequest, GetMultiBlogPostsRequest, GetMultiBlogPostsResponse, MediaProperty, PublishPostRequest, PublishPostResponse, RepostBlogPostRequest, StatusRequest, StatusResponse, UpdateBlogPostRequest, } from './wordpress-plugin';
24
24
  export { Campaign, CreateCampaignRequest, CreateCampaignResponse, DeleteCampaignRequest, GetCampaignRequest, GetCampaignResponse, GetMultiCampaignsRequest, GetMultiCampaignsResponse, UpdateCampaignIdRequest, UpdateCampaignRequest, } from './campaign';
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQixvQ0FBb0M7QUFDcEMsT0FBTyxFQUNILFNBQVMsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsT0FBTyxHQUNWLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFDSCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLFlBQVksRUFDWixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxVQUFVLEVBQ1YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixvQkFBb0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFNBQVMsR0FDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFDSCxZQUFZLEdBQ2YsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixnQkFBZ0IsR0FDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixnQkFBZ0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNILGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsOEJBQThCLEVBQzlCLCtCQUErQixFQUMvQix5QkFBeUIsRUFD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V0FBVyxFQUNYLG9CQUFvQixFQUNwQixxQkFBcUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILGNBQWMsRUFDZCwyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMkJBQTJCLEdBQzlCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUVILGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGNBQWMsRUFDZCxxQkFBcUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQ0gsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3hCLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzIEluZGV4LlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5leHBvcnQge1xuICAgIEZpZWxkTWFzayxcbn0gZnJvbSAnLi9maWVsZC1tYXNrJztcblxuZXhwb3J0IHtcbiAgICBIYXNodGFnLFxufSBmcm9tICcuL2hhc2h0YWcnO1xuXG5leHBvcnQge1xuICAgIEF1dGhvcixcbiAgICBCbG9nUG9zdEN1c3RvbWl6YXRpb24sXG4gICAgQ2FsbFRvQWN0aW9uLFxuICAgIENhdGVnb3J5LFxuICAgIEVycm9yLFxuICAgIEV2ZW50LFxuICAgIE1lZGlhRW50cnksXG4gICAgTWV0YURhdGEsXG4gICAgUG9zdFRlbXBsYXRlLFxuICAgIFNTSURQb3N0VHlwZSxcbiAgICBTY2hlZHVsZVBvc3RTdGF0dXMsXG4gICAgU29jaWFsQ2FtcGFpZ24sXG4gICAgU29jaWFsUG9zdCxcbiAgICBTb2NpYWxQb3N0RGF0YSxcbiAgICBUaWtUb2tDdXN0b21pemF0aW9uLFxuICAgIFlvdXR1YmVDdXN0b21pemF0aW9uLFxufSBmcm9tICcuL3NvY2lhbC1wb3N0cyc7XG5cbmV4cG9ydCB7XG4gICAgQnVsa1VwbG9hZE11bHRpbG9jYXRpb24sXG4gICAgTG9jYXRpb24sXG4gICAgTXVsdGlsb2NhdGlvblBvc3QsXG4gICAgTXVsdGlsb2NhdGlvblBvc3RFcnJvcixcbiAgICBNdWx0aWxvY2F0aW9uU2VydmljZXMsXG4gICAgUG9zdEFjdGlvbixcbiAgICBQb3N0Q3VzdG9taXphdGlvbixcbiAgICBQb3N0RXZlbnQsXG59IGZyb20gJy4vbXVsdGlsb2NhdGlvbi1wb3N0JztcblxuZXhwb3J0IHtcbiAgICBQaXhhYmF5SW1hZ2UsXG59IGZyb20gJy4vcGl4YWJheS1pbWFnZSc7XG5cbmV4cG9ydCB7XG4gICAgRmFjZWJvb2tQb3N0U3RhdHMsXG4gICAgU29jaWFsUG9zdFN0YXRzLFxuICAgIFR3aXR0ZXJQb3N0U3RhdHMsXG59IGZyb20gJy4vc29jaWFsLXBvc3Qtc3RhdHMnO1xuXG5leHBvcnQge1xuICAgIFRlbm9yR2lmTWVkaWFNYXBFbnRyeSxcbiAgICBUZW5vckdpZixcbiAgICBUZW5vck1lZGlhT2JqZWN0LFxufSBmcm9tICcuL3Rlbm9yLWdpZic7XG5cbmV4cG9ydCB7XG4gICAgQnVsa0NyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgICBCdWxrQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgICBDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgICBDcmVhdGVQb3N0VGVtcGxhdGVSZXF1ZXN0LFxuICAgIENyZWF0ZVBvc3RUZW1wbGF0ZVJlc3BvbnNlLFxuICAgIERhdGVSYW5nZUZpbHRlcixcbiAgICBEZWxldGVIYXNodGFnc1JlcXVlc3QsXG4gICAgRGVsZXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICAgIERlbGV0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QsXG4gICAgRGVsZXRlU29jaWFsUG9zdFJlcXVlc3QsXG4gICAgRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgICBFZGl0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgICBQYXJ0bmVyTGlzdFNjaGVkdWxlZFNvY2lhbFBvc3RzUmVxdWVzdEZpbHRlcnMsXG4gICAgR2VuZXJhdGVDU1ZGb3JQZXJmb3JtYW5jZVN0YXRzUmVxdWVzdCxcbiAgICBHZW5lcmF0ZUNTVkZvclBlcmZvcm1hbmNlU3RhdHNSZXNwb25zZSxcbiAgICBHZXRHZW5lcmF0ZWRDU1ZGb3JQZXJmb3JtYW5jZVN0YXRzUmVxdWVzdCxcbiAgICBHZXRHZW5lcmF0ZWRDU1ZGb3JQZXJmb3JtYW5jZVN0YXRzUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlTb2NpYWxQb3N0U3RhdHNSZXF1ZXN0LFxuICAgIEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlTb2NpYWxQb3N0c1JlcXVlc3QsXG4gICAgR2V0TXVsdGlTb2NpYWxQb3N0c1Jlc3BvbnNlLFxuICAgIEdldE11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgICBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlc3BvbnNlLFxuICAgIEdldFBvc3RUZW1wbGF0ZVJlcXVlc3QsXG4gICAgR2V0UG9zdFRlbXBsYXRlUmVzcG9uc2UsXG4gICAgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVxdWVzdCxcbiAgICBHZXRTY2hlZHVsZWRQb3N0Q291bnRSZXNwb25zZSxcbiAgICBHZXRUZW5vckFub255bW91c0lkUmVxdWVzdCxcbiAgICBHZXRUZW5vckFub255bW91c0lkUmVzcG9uc2UsXG4gICAgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVxdWVzdCxcbiAgICBMaXN0TXVsdGlsb2NhdGlvblBvc3RzRm9yQnJhbmRSZXNwb25zZSxcbiAgICBMaXN0UGl4YWJheUltYWdlc1JlcXVlc3QsXG4gICAgTGlzdFBpeGFiYXlJbWFnZXNSZXNwb25zZSxcbiAgICBMaXN0UG9zdFRlbXBsYXRlc1JlcXVlc3QsXG4gICAgTGlzdFBvc3RUZW1wbGF0ZXNSZXNwb25zZSxcbiAgICBMaXN0U29jaWFsUG9zdHNSZXF1ZXN0LFxuICAgIExpc3RTb2NpYWxQb3N0c1Jlc3BvbnNlLFxuICAgIExpc3RUZW5vckdpZnNSZXF1ZXN0LFxuICAgIExpc3RUZW5vckdpZnNSZXNwb25zZSxcbiAgICBQYXJ0bmVyTGlzdFNjaGVkdWxlZFBvc3RzUmVzcG9uc2UsXG4gICAgUGFydG5lckxpc3RTY2hlZHVsZWRTb2NpYWxQb3N0c1JlcXVlc3QsXG4gICAgUG9zdERhdGEsXG4gICAgUmVtb3ZlRnJvbU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgICBSZXBsYWNlSGFzaHRhZ3NSZXF1ZXN0LFxuICAgIFNjaGVkdWxlUG9zdFJlcXVlc3QsXG4gICAgU2NoZWR1bGVQb3N0UmVzcG9uc2UsXG4gICAgU2NoZWR1bGVUb0FsbFBhZ2VzUmVxdWVzdCxcbiAgICBTY2hlZHVsZVRvQWxsUGFnZXNSZXNwb25zZSxcbiAgICBTZWFyY2hIYXNodGFnUmVxdWVzdCxcbiAgICBTZWFyY2hIYXNodGFnUmVzcG9uc2UsXG4gICAgU3VnZ2VzdE1lc3NhZ2VSZXF1ZXN0LFxuICAgIFN1Z2dlc3RNZXNzYWdlUmVzcG9uc2UsXG4gICAgVXBkYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCxcbn0gZnJvbSAnLi9hcGknO1xuXG5leHBvcnQge1xuICAgIEFjY2Vzcyxcbn0gZnJvbSAnLi9hbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCB7XG4gICAgTGlua1YyLFxuICAgIE1ldGFkYXRhVjIsXG4gICAgUG9zdEFjdGlvblYyLFxuICAgIFBvc3RDb250ZW50VjIsXG4gICAgUG9zdEN1c3RvbWl6YXRpb25WMixcbiAgICBQb3N0RXZlbnRWMixcbiAgICBQb3N0TWVkaWFWMixcbiAgICBTb2NpYWxQb3N0VjIsXG4gICAgVGlrVG9rQ3VzdG9taXphdGlvblYyLFxuICAgIFlvdXR1YmVDdXN0b21pemF0aW9uVjIsXG59IGZyb20gJy4vc29jaWFsLXBvc3QtdjInO1xuXG5leHBvcnQge1xuICAgIE1lZGlhLFxufSBmcm9tICcuL2xpbmtlZGluLXYyJztcblxuZXhwb3J0IHtcbiAgICBBbmNlc3RyeSxcbiAgICBDb2xsZWN0aW9uLFxuICAgIEltYWdlLFxuICAgIExpbmtzLFxuICAgIFBob3RvLFxuICAgIFNvY2lhbCxcbiAgICBTb3VyY2UsXG4gICAgU3ViQW5jZXN0cnksXG4gICAgVGFncyxcbiAgICBVcmxzLFxuICAgIFVzZXIsXG4gICAgVXNlckxpbmssXG59IGZyb20gJy4vdW5zcGxhc2gtaW1hZ2UnO1xuXG5leHBvcnQge1xuICAgIEFpSW5zdHJ1Y3Rpb25zLFxuICAgIEJsb2dQb3N0Q2FtcGFpZ24sXG4gICAgQ3JlYXRlQ29tbW9uQWlJbnN0cnVjdGlvbnNSZXF1ZXN0LFxuICAgIENyZWF0ZUNvbW1vbkFpSW5zdHJ1Y3Rpb25zUmVzcG9uc2UsXG4gICAgQ3JlYXRlSW1hZ2VSZXF1ZXN0LFxuICAgIENyZWF0ZUltYWdlUmVzcG9uc2UsXG4gICAgQ3VyYXRlZENvbnRlbnRQb3N0LFxuICAgIERlbGV0ZVBvc3RSZXF1ZXN0LFxuICAgIEZldGNoTGlicmFyeUltYWdlc1JlcXVlc3QsXG4gICAgRmV0Y2hMaWJyYXJ5SW1hZ2VzUmVzcG9uc2UsXG4gICAgR2VuZXJhdGVBaVJlcXVlc3QsXG4gICAgR2VuZXJhdGVBaVJlc3BvbnNlLFxuICAgIEdlbmVyYXRlQmxvZ1Bvc3RDYW1wYWlnblJlcXVlc3QsXG4gICAgR2VuZXJhdGVDb250ZW50TWV0YURhdGFSZXF1ZXN0LFxuICAgIEdlbmVyYXRlQ29udGVudE1ldGFEYXRhUmVzcG9uc2UsXG4gICAgR2VuZXJhdGVQb3N0Q2FtcGFpZ25SZXF1ZXN0LFxuICAgIEdlbmVyYXRlUG9zdENhbXBhaWduUmVzcG9uc2UsXG4gICAgR2VuZXJhdGVQb3N0c1JlcXVlc3QsXG4gICAgR2VuZXJhdGVQb3N0c1Jlc3BvbnNlLFxuICAgIEdldENvbW1vbkFpSW5zdHJ1Y3Rpb25zUmVxdWVzdCxcbiAgICBHZXRDb21tb25BaUluc3RydWN0aW9uc1Jlc3BvbnNlLFxuICAgIEltYWdlQmxvYixcbiAgICBJbWFnZUNyZWF0ZWQsXG4gICAgSW1hZ2VSZXNwb25zZSxcbiAgICBJbWFnZVVybCxcbiAgICBLZXl3b3JkR2VuZXJhdGlvbixcbiAgICBLZXl3b3JkTGlzdCxcbiAgICBMaXN0Q3VyYXRlZENvbnRlbnRSZXF1ZXN0LFxuICAgIExpc3RDdXJhdGVkQ29udGVudFJlc3BvbnNlLFxuICAgIExpc3RVbnNwbGFzaEltYWdlc1JlcXVlc3QsXG4gICAgTGlzdFVuc3BsYXNoSW1hZ2VzUmVzcG9uc2UsXG4gICAgTWVkaWFVcGxvYWRSZXF1ZXN0LFxuICAgIE1lZGlhVXBsb2FkUmVzcG9uc2UsXG4gICAgTXVsdGlSZXNwb25zZSxcbiAgICBHZW5lcmF0ZVBvc3RzUmVzcG9uc2VQb3N0LFxuICAgIFBvc3QsXG4gICAgUG9zdENvbnRlbnQsXG4gICAgUG9zdHNHZW5lcmF0aW9uLFxuICAgIFJlcG9zdFNvY2lhbFBvc3RSZXF1ZXN0LFxuICAgIFJlc3BvbnNlLFxuICAgIFNvY2lhbFBvc3RPdXRwdXQsXG4gICAgU29jaWFsUG9zdFJlcXVlc3QsXG4gICAgU29jaWFsUG9zdFJlc3BvbnNlLFxuICAgIFRpdGxlR2VuZXJhdGlvbixcbiAgICBVcGRhdGVDb21tb25BaUluc3RydWN0aW9uc1JlcXVlc3QsXG4gICAgVXBkYXRlQ29tbW9uQWlJbnN0cnVjdGlvbnNSZXNwb25zZSxcbiAgICBVcGRhdGVTb2NpYWxQb3N0UmVxdWVzdCxcbiAgICBVcGRhdGVTb2NpYWxQb3N0UmVzcG9uc2UsXG4gICAgVXBsb2FkVG9TdG9yYWdlUmVxdWVzdCxcbiAgICBVcGxvYWRUb1N0b3JhZ2VSZXNwb25zZSxcbiAgICBVcGxvYWRlZE1lZGlhLFxufSBmcm9tICcuL2FwaS12Mic7XG5cbmV4cG9ydCB7XG4gICAgQWN0aW9uLFxuICAgIEVuZENoYXRSZXF1ZXN0LFxuICAgIFNlbmRNZXNzYWdlUmVxdWVzdCxcbiAgICBTZW5kTWVzc2FnZVJlc3BvbnNlLFxuICAgIFN0YXJ0Q2hhdFJlcXVlc3QsXG4gICAgU3RhcnRDaGF0UmVzcG9uc2UsXG59IGZyb20gJy4vY2hhdC1ib3QnO1xuXG5leHBvcnQge1xuICAgIENoYXRNZXNzYWdlLFxuICAgIFNlbmRNZXNzYWdlVjJSZXF1ZXN0LFxuICAgIFNlbmRNZXNzYWdlVjJSZXNwb25zZSxcbn0gZnJvbSAnLi9jaGF0LWJvdC12Mic7XG5cbmV4cG9ydCB7XG4gICAgQmxvZ0Nvbm5lY3Rpb24sXG4gICAgQ3JlYXRlQmxvZ0Nvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIENyZWF0ZUJsb2dDb25uZWN0aW9uUmVzcG9uc2UsXG4gICAgRGVsZXRlQmxvZ0Nvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIEdldEJsb2dDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBHZXRCbG9nQ29ubmVjdGlvblJlc3BvbnNlLFxuICAgIExpc3RCbG9nQ29ubmVjdGlvblJlcXVlc3QsXG4gICAgTGlzdEJsb2dDb25uZWN0aW9uUmVzcG9uc2UsXG4gICAgVXBkYXRlQmxvZ0Nvbm5lY3Rpb25SZXF1ZXN0LFxufSBmcm9tICcuL2Jsb2ctY29ubmVjdGlvbic7XG5cbmV4cG9ydCB7XG5cbiAgICBBdXRob3JzUmVxdWVzdCxcbiAgICBBdXRob3JzUmVzcG9uc2UsXG4gICAgQmxvZ0ltYWdlLFxuICAgIEJsb2dQb3N0LFxuICAgIEJsb2dWaWRlbyxcbiAgICBDYXRlZ29yeVJlcXVlc3QsXG4gICAgQ2F0ZWdvcnlSZXNwb25zZSxcbiAgICBEZWxldGVCbG9nUG9zdFJlcXVlc3QsXG4gICAgR2V0TXVsdGlCbG9nUG9zdHNSZXF1ZXN0LFxuICAgIEdldE11bHRpQmxvZ1Bvc3RzUmVzcG9uc2UsXG4gICAgTWVkaWFQcm9wZXJ0eSxcbiAgICBQdWJsaXNoUG9zdFJlcXVlc3QsXG4gICAgUHVibGlzaFBvc3RSZXNwb25zZSxcbiAgICBSZXBvc3RCbG9nUG9zdFJlcXVlc3QsXG4gICAgU3RhdHVzUmVxdWVzdCxcbiAgICBTdGF0dXNSZXNwb25zZSxcbiAgICBVcGRhdGVCbG9nUG9zdFJlcXVlc3QsXG59IGZyb20gJy4vd29yZHByZXNzLXBsdWdpbic7XG5cbmV4cG9ydCB7XG4gICAgQ2FtcGFpZ24sXG4gICAgQ3JlYXRlQ2FtcGFpZ25SZXF1ZXN0LFxuICAgIENyZWF0ZUNhbXBhaWduUmVzcG9uc2UsXG4gICAgRGVsZXRlQ2FtcGFpZ25SZXF1ZXN0LFxuICAgIEdldENhbXBhaWduUmVxdWVzdCxcbiAgICBHZXRDYW1wYWlnblJlc3BvbnNlLFxuICAgIEdldE11bHRpQ2FtcGFpZ25zUmVxdWVzdCxcbiAgICBHZXRNdWx0aUNhbXBhaWduc1Jlc3BvbnNlLFxuICAgIFVwZGF0ZUNhbXBhaWduSWRSZXF1ZXN0LFxuICAgIFVwZGF0ZUNhbXBhaWduUmVxdWVzdCxcbn0gZnJvbSAnLi9jYW1wYWlnbic7XG5cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQixvQ0FBb0M7QUFDcEMsT0FBTyxFQUNILFNBQVMsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsT0FBTyxHQUNWLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFDSCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxjQUFjLEVBQ2QsVUFBVSxFQUNWLFFBQVEsRUFDUixZQUFZLEVBQ1osWUFBWSxFQUNaLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsb0JBQW9CLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixTQUFTLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQ0gsWUFBWSxHQUNmLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUNILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ25CLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNILHFCQUFxQixFQUNyQixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLDhCQUE4QixFQUM5QiwrQkFBK0IsRUFDL0Is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T0FBTyxFQUNILFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxjQUFjLEVBQ2QsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixHQUM5QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFDSCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUNILFFBQVEsRUFDUixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUN4QixNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBGaWVsZE1hc2ssXG59IGZyb20gJy4vZmllbGQtbWFzayc7XG5cbmV4cG9ydCB7XG4gICAgSGFzaHRhZyxcbn0gZnJvbSAnLi9oYXNodGFnJztcblxuZXhwb3J0IHtcbiAgICBBdXRob3IsXG4gICAgQmxvZ1Bvc3RDdXN0b21pemF0aW9uLFxuICAgIENhbGxUb0FjdGlvbixcbiAgICBDYXRlZ29yeSxcbiAgICBFcnJvcixcbiAgICBFdmVudCxcbiAgICBNTFBvc3RDYXRlZ29yeSxcbiAgICBNZWRpYUVudHJ5LFxuICAgIE1ldGFEYXRhLFxuICAgIFBvc3RUZW1wbGF0ZSxcbiAgICBTU0lEUG9zdFR5cGUsXG4gICAgU2NoZWR1bGVQb3N0U3RhdHVzLFxuICAgIFNvY2lhbENhbXBhaWduLFxuICAgIFNvY2lhbFBvc3QsXG4gICAgU29jaWFsUG9zdERhdGEsXG4gICAgVGlrVG9rQ3VzdG9taXphdGlvbixcbiAgICBZb3V0dWJlQ3VzdG9taXphdGlvbixcbn0gZnJvbSAnLi9zb2NpYWwtcG9zdHMnO1xuXG5leHBvcnQge1xuICAgIEJ1bGtVcGxvYWRNdWx0aWxvY2F0aW9uLFxuICAgIExvY2F0aW9uLFxuICAgIE11bHRpbG9jYXRpb25Qb3N0LFxuICAgIE11bHRpbG9jYXRpb25Qb3N0RXJyb3IsXG4gICAgTXVsdGlsb2NhdGlvblNlcnZpY2VzLFxuICAgIFBvc3RBY3Rpb24sXG4gICAgUG9zdEN1c3RvbWl6YXRpb24sXG4gICAgUG9zdEV2ZW50LFxufSBmcm9tICcuL211bHRpbG9jYXRpb24tcG9zdCc7XG5cbmV4cG9ydCB7XG4gICAgUGl4YWJheUltYWdlLFxufSBmcm9tICcuL3BpeGFiYXktaW1hZ2UnO1xuXG5leHBvcnQge1xuICAgIEZhY2Vib29rUG9zdFN0YXRzLFxuICAgIFNvY2lhbFBvc3RTdGF0cyxcbiAgICBUd2l0dGVyUG9zdFN0YXRzLFxufSBmcm9tICcuL3NvY2lhbC1wb3N0LXN0YXRzJztcblxuZXhwb3J0IHtcbiAgICBUZW5vckdpZk1lZGlhTWFwRW50cnksXG4gICAgVGVub3JHaWYsXG4gICAgVGVub3JNZWRpYU9iamVjdCxcbn0gZnJvbSAnLi90ZW5vci1naWYnO1xuXG5leHBvcnQge1xuICAgIEJ1bGtDcmVhdGVNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgQnVsa0NyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UsXG4gICAgQ3JlYXRlTXVsdGlsb2NhdGlvblBvc3RSZXF1ZXN0LFxuICAgIENyZWF0ZU11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UsXG4gICAgQ3JlYXRlUG9zdFRlbXBsYXRlUmVxdWVzdCxcbiAgICBDcmVhdGVQb3N0VGVtcGxhdGVSZXNwb25zZSxcbiAgICBEYXRlUmFuZ2VGaWx0ZXIsXG4gICAgRGVsZXRlSGFzaHRhZ3NSZXF1ZXN0LFxuICAgIERlbGV0ZU11bHRpbG9jYXRpb25Qb3N0UmVxdWVzdCxcbiAgICBEZWxldGVQb3N0VGVtcGxhdGVSZXF1ZXN0LFxuICAgIERlbGV0ZVNvY2lhbFBvc3RSZXF1ZXN0LFxuICAgIEVkaXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgRWRpdE11bHRpbG9jYXRpb25Qb3N0UmVzcG9uc2UsXG4gICAgUGFydG5lckxpc3RTY2hlZHVsZWRTb2NpYWxQb3N0c1JlcXVlc3RGaWx0ZXJzLFxuICAgIEdlbmVyYXRlQ1NWRm9yUGVyZm9ybWFuY2VTdGF0c1JlcXVlc3QsXG4gICAgR2VuZXJhdGVDU1ZGb3JQZXJmb3JtYW5jZVN0YXRzUmVzcG9uc2UsXG4gICAgR2V0R2VuZXJhdGVkQ1NWRm9yUGVyZm9ybWFuY2VTdGF0c1JlcXVlc3QsXG4gICAgR2V0R2VuZXJhdGVkQ1NWRm9yUGVyZm9ybWFuY2VTdGF0c1Jlc3BvbnNlLFxuICAgIEdldE11bHRpU29jaWFsUG9zdFN0YXRzUmVxdWVzdCxcbiAgICBHZXRNdWx0aVNvY2lhbFBvc3RTdGF0c1Jlc3BvbnNlLFxuICAgIEdldE11bHRpU29jaWFsUG9zdHNSZXF1ZXN0LFxuICAgIEdldE11bHRpU29jaWFsUG9zdHNSZXNwb25zZSxcbiAgICBHZXRNdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgR2V0TXVsdGlsb2NhdGlvblBvc3RSZXNwb25zZSxcbiAgICBHZXRQb3N0VGVtcGxhdGVSZXF1ZXN0LFxuICAgIEdldFBvc3RUZW1wbGF0ZVJlc3BvbnNlLFxuICAgIEdldFNjaGVkdWxlZFBvc3RDb3VudFJlcXVlc3QsXG4gICAgR2V0U2NoZWR1bGVkUG9zdENvdW50UmVzcG9uc2UsXG4gICAgR2V0VGVub3JBbm9ueW1vdXNJZFJlcXVlc3QsXG4gICAgR2V0VGVub3JBbm9ueW1vdXNJZFJlc3BvbnNlLFxuICAgIExpc3RNdWx0aWxvY2F0aW9uUG9zdHNGb3JCcmFuZFJlcXVlc3QsXG4gICAgTGlzdE11bHRpbG9jYXRpb25Qb3N0c0ZvckJyYW5kUmVzcG9uc2UsXG4gICAgTGlzdFBpeGFiYXlJbWFnZXNSZXF1ZXN0LFxuICAgIExpc3RQaXhhYmF5SW1hZ2VzUmVzcG9uc2UsXG4gICAgTGlzdFBvc3RUZW1wbGF0ZXNSZXF1ZXN0LFxuICAgIExpc3RQb3N0VGVtcGxhdGVzUmVzcG9uc2UsXG4gICAgTGlzdFNvY2lhbFBvc3RzUmVxdWVzdCxcbiAgICBMaXN0U29jaWFsUG9zdHNSZXNwb25zZSxcbiAgICBMaXN0VGVub3JHaWZzUmVxdWVzdCxcbiAgICBMaXN0VGVub3JHaWZzUmVzcG9uc2UsXG4gICAgUGFydG5lckxpc3RTY2hlZHVsZWRQb3N0c1Jlc3BvbnNlLFxuICAgIFBhcnRuZXJMaXN0U2NoZWR1bGVkU29jaWFsUG9zdHNSZXF1ZXN0LFxuICAgIFBvc3REYXRhLFxuICAgIFJlbW92ZUZyb21NdWx0aWxvY2F0aW9uUG9zdFJlcXVlc3QsXG4gICAgUmVwbGFjZUhhc2h0YWdzUmVxdWVzdCxcbiAgICBTY2hlZHVsZVBvc3RSZXF1ZXN0LFxuICAgIFNjaGVkdWxlUG9zdFJlc3BvbnNlLFxuICAgIFNjaGVkdWxlVG9BbGxQYWdlc1JlcXVlc3QsXG4gICAgU2NoZWR1bGVUb0FsbFBhZ2VzUmVzcG9uc2UsXG4gICAgU2VhcmNoSGFzaHRhZ1JlcXVlc3QsXG4gICAgU2VhcmNoSGFzaHRhZ1Jlc3BvbnNlLFxuICAgIFN1Z2dlc3RNZXNzYWdlUmVxdWVzdCxcbiAgICBTdWdnZXN0TWVzc2FnZVJlc3BvbnNlLFxuICAgIFVwZGF0ZVBvc3RUZW1wbGF0ZVJlcXVlc3QsXG59IGZyb20gJy4vYXBpJztcblxuZXhwb3J0IHtcbiAgICBBY2Nlc3MsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQge1xuICAgIExpbmtWMixcbiAgICBNZXRhZGF0YVYyLFxuICAgIFBvc3RBY3Rpb25WMixcbiAgICBQb3N0Q29udGVudFYyLFxuICAgIFBvc3RDdXN0b21pemF0aW9uVjIsXG4gICAgUG9zdEV2ZW50VjIsXG4gICAgUG9zdE1lZGlhVjIsXG4gICAgU29jaWFsUG9zdFYyLFxuICAgIFRpa1Rva0N1c3RvbWl6YXRpb25WMixcbiAgICBZb3V0dWJlQ3VzdG9taXphdGlvblYyLFxufSBmcm9tICcuL3NvY2lhbC1wb3N0LXYyJztcblxuZXhwb3J0IHtcbiAgICBNZWRpYSxcbn0gZnJvbSAnLi9saW5rZWRpbi12Mic7XG5cbmV4cG9ydCB7XG4gICAgQW5jZXN0cnksXG4gICAgQ29sbGVjdGlvbixcbiAgICBJbWFnZSxcbiAgICBMaW5rcyxcbiAgICBQaG90byxcbiAgICBTb2NpYWwsXG4gICAgU291cmNlLFxuICAgIFN1YkFuY2VzdHJ5LFxuICAgIFRhZ3MsXG4gICAgVXJscyxcbiAgICBVc2VyLFxuICAgIFVzZXJMaW5rLFxufSBmcm9tICcuL3Vuc3BsYXNoLWltYWdlJztcblxuZXhwb3J0IHtcbiAgICBBaUluc3RydWN0aW9ucyxcbiAgICBCbG9nUG9zdENhbXBhaWduLFxuICAgIENyZWF0ZUNvbW1vbkFpSW5zdHJ1Y3Rpb25zUmVxdWVzdCxcbiAgICBDcmVhdGVDb21tb25BaUluc3RydWN0aW9uc1Jlc3BvbnNlLFxuICAgIENyZWF0ZUltYWdlUmVxdWVzdCxcbiAgICBDcmVhdGVJbWFnZVJlc3BvbnNlLFxuICAgIEN1cmF0ZWRDb250ZW50UG9zdCxcbiAgICBEZWxldGVQb3N0UmVxdWVzdCxcbiAgICBGZXRjaExpYnJhcnlJbWFnZXNSZXF1ZXN0LFxuICAgIEZldGNoTGlicmFyeUltYWdlc1Jlc3BvbnNlLFxuICAgIEdlbmVyYXRlQWlSZXF1ZXN0LFxuICAgIEdlbmVyYXRlQWlSZXNwb25zZSxcbiAgICBHZW5lcmF0ZUJsb2dQb3N0Q2FtcGFpZ25SZXF1ZXN0LFxuICAgIEdlbmVyYXRlQ29udGVudE1ldGFEYXRhUmVxdWVzdCxcbiAgICBHZW5lcmF0ZUNvbnRlbnRNZXRhRGF0YVJlc3BvbnNlLFxuICAgIEdlbmVyYXRlUG9zdENhbXBhaWduUmVxdWVzdCxcbiAgICBHZW5lcmF0ZVBvc3RDYW1wYWlnblJlc3BvbnNlLFxuICAgIEdlbmVyYXRlUG9zdHNSZXF1ZXN0LFxuICAgIEdlbmVyYXRlUG9zdHNSZXNwb25zZSxcbiAgICBHZXRDb21tb25BaUluc3RydWN0aW9uc1JlcXVlc3QsXG4gICAgR2V0Q29tbW9uQWlJbnN0cnVjdGlvbnNSZXNwb25zZSxcbiAgICBJbWFnZUJsb2IsXG4gICAgSW1hZ2VDcmVhdGVkLFxuICAgIEltYWdlUmVzcG9uc2UsXG4gICAgSW1hZ2VVcmwsXG4gICAgS2V5d29yZEdlbmVyYXRpb24sXG4gICAgS2V5d29yZExpc3QsXG4gICAgTGlzdEN1cmF0ZWRDb250ZW50UmVxdWVzdCxcbiAgICBMaXN0Q3VyYXRlZENvbnRlbnRSZXNwb25zZSxcbiAgICBMaXN0VW5zcGxhc2hJbWFnZXNSZXF1ZXN0LFxuICAgIExpc3RVbnNwbGFzaEltYWdlc1Jlc3BvbnNlLFxuICAgIE1lZGlhVXBsb2FkUmVxdWVzdCxcbiAgICBNZWRpYVVwbG9hZFJlc3BvbnNlLFxuICAgIE11bHRpUmVzcG9uc2UsXG4gICAgR2VuZXJhdGVQb3N0c1Jlc3BvbnNlUG9zdCxcbiAgICBQb3N0LFxuICAgIFBvc3RDb250ZW50LFxuICAgIFBvc3RzR2VuZXJhdGlvbixcbiAgICBSZXBvc3RTb2NpYWxQb3N0UmVxdWVzdCxcbiAgICBSZXNwb25zZSxcbiAgICBTb2NpYWxQb3N0T3V0cHV0LFxuICAgIFNvY2lhbFBvc3RSZXF1ZXN0LFxuICAgIFNvY2lhbFBvc3RSZXNwb25zZSxcbiAgICBUaXRsZUdlbmVyYXRpb24sXG4gICAgVXBkYXRlQ29tbW9uQWlJbnN0cnVjdGlvbnNSZXF1ZXN0LFxuICAgIFVwZGF0ZUNvbW1vbkFpSW5zdHJ1Y3Rpb25zUmVzcG9uc2UsXG4gICAgVXBkYXRlU29jaWFsUG9zdFJlcXVlc3QsXG4gICAgVXBkYXRlU29jaWFsUG9zdFJlc3BvbnNlLFxuICAgIFVwbG9hZFRvU3RvcmFnZVJlcXVlc3QsXG4gICAgVXBsb2FkVG9TdG9yYWdlUmVzcG9uc2UsXG4gICAgVXBsb2FkZWRNZWRpYSxcbn0gZnJvbSAnLi9hcGktdjInO1xuXG5leHBvcnQge1xuICAgIEFjdGlvbixcbiAgICBFbmRDaGF0UmVxdWVzdCxcbiAgICBTZW5kTWVzc2FnZVJlcXVlc3QsXG4gICAgU2VuZE1lc3NhZ2VSZXNwb25zZSxcbiAgICBTdGFydENoYXRSZXF1ZXN0LFxuICAgIFN0YXJ0Q2hhdFJlc3BvbnNlLFxufSBmcm9tICcuL2NoYXQtYm90JztcblxuZXhwb3J0IHtcbiAgICBDaGF0TWVzc2FnZSxcbiAgICBTZW5kTWVzc2FnZVYyUmVxdWVzdCxcbiAgICBTZW5kTWVzc2FnZVYyUmVzcG9uc2UsXG59IGZyb20gJy4vY2hhdC1ib3QtdjInO1xuXG5leHBvcnQge1xuICAgIEJsb2dDb25uZWN0aW9uLFxuICAgIENyZWF0ZUJsb2dDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBDcmVhdGVCbG9nQ29ubmVjdGlvblJlc3BvbnNlLFxuICAgIERlbGV0ZUJsb2dDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBHZXRCbG9nQ29ubmVjdGlvblJlcXVlc3QsXG4gICAgR2V0QmxvZ0Nvbm5lY3Rpb25SZXNwb25zZSxcbiAgICBMaXN0QmxvZ0Nvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIExpc3RCbG9nQ29ubmVjdGlvblJlc3BvbnNlLFxuICAgIFVwZGF0ZUJsb2dDb25uZWN0aW9uUmVxdWVzdCxcbn0gZnJvbSAnLi9ibG9nLWNvbm5lY3Rpb24nO1xuXG5leHBvcnQge1xuICAgIEF1dGhvcnNSZXF1ZXN0LFxuICAgIEF1dGhvcnNSZXNwb25zZSxcbiAgICBCbG9nSW1hZ2UsXG4gICAgQmxvZ1Bvc3QsXG4gICAgQmxvZ1ZpZGVvLFxuICAgIENhdGVnb3J5UmVxdWVzdCxcbiAgICBDYXRlZ29yeVJlc3BvbnNlLFxuICAgIERlbGV0ZUJsb2dQb3N0UmVxdWVzdCxcbiAgICBHZXRNdWx0aUJsb2dQb3N0c1JlcXVlc3QsXG4gICAgR2V0TXVsdGlCbG9nUG9zdHNSZXNwb25zZSxcbiAgICBNZWRpYVByb3BlcnR5LFxuICAgIFB1Ymxpc2hQb3N0UmVxdWVzdCxcbiAgICBQdWJsaXNoUG9zdFJlc3BvbnNlLFxuICAgIFJlcG9zdEJsb2dQb3N0UmVxdWVzdCxcbiAgICBTdGF0dXNSZXF1ZXN0LFxuICAgIFN0YXR1c1Jlc3BvbnNlLFxuICAgIFVwZGF0ZUJsb2dQb3N0UmVxdWVzdCxcbn0gZnJvbSAnLi93b3JkcHJlc3MtcGx1Z2luJztcblxuZXhwb3J0IHtcbiAgICBDYW1wYWlnbixcbiAgICBDcmVhdGVDYW1wYWlnblJlcXVlc3QsXG4gICAgQ3JlYXRlQ2FtcGFpZ25SZXNwb25zZSxcbiAgICBEZWxldGVDYW1wYWlnblJlcXVlc3QsXG4gICAgR2V0Q2FtcGFpZ25SZXF1ZXN0LFxuICAgIEdldENhbXBhaWduUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlDYW1wYWlnbnNSZXF1ZXN0LFxuICAgIEdldE11bHRpQ2FtcGFpZ25zUmVzcG9uc2UsXG4gICAgVXBkYXRlQ2FtcGFpZ25JZFJlcXVlc3QsXG4gICAgVXBkYXRlQ2FtcGFpZ25SZXF1ZXN0LFxufSBmcm9tICcuL2NhbXBhaWduJztcblxuIl19
@@ -1,4 +1,4 @@
1
- import { MediaEntry, MetaData, SSIDPostType } from './social-posts';
1
+ import { MediaEntry, MetaData, SSIDPostType, MLPostCategory } from './social-posts';
2
2
  export function enumStringToValue(enumRef, value) {
3
3
  if (typeof value === 'number') {
4
4
  return value;
@@ -130,6 +130,9 @@ export class MultilocationPost {
130
130
  if (proto.postTypes) {
131
131
  m.postTypes = proto.postTypes.map(SSIDPostType.fromProto);
132
132
  }
133
+ if (proto.postCategory) {
134
+ m.postCategory = MLPostCategory.fromProto(proto.postCategory);
135
+ }
133
136
  return m;
134
137
  }
135
138
  constructor(kwargs) {
@@ -188,6 +191,9 @@ export class MultilocationPost {
188
191
  if (typeof this.postTypes !== 'undefined' && this.postTypes !== null) {
189
192
  toReturn['postTypes'] = 'toApiJson' in this.postTypes ? this.postTypes.toApiJson() : this.postTypes;
190
193
  }
194
+ if (typeof this.postCategory !== 'undefined' && this.postCategory !== null) {
195
+ toReturn['postCategory'] = 'toApiJson' in this.postCategory ? this.postCategory.toApiJson() : this.postCategory;
196
+ }
191
197
  return toReturn;
192
198
  }
193
199
  }
@@ -324,4 +330,4 @@ export class PostEvent {
324
330
  return toReturn;
325
331
  }
326
332
  }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsb2NhdGlvbi1wb3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc29jaWFsX3Bvc3RzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL211bHRpbG9jYXRpb24tcG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sdUJBQXVCO0lBZWhDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDdEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQUM7UUFDM0UsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUN4RixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUFDO1FBQzFFLElBQUksS0FBSyxD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QUMsR0FBRyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUFDO1FBQ2pKLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1lZGlhRW50cnksIE1ldGFEYXRhLCBTU0lEUG9zdFR5cGUgfSBmcm9tICcuL3NvY2lhbC1wb3N0cyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBCdWxrVXBsb2FkTXVsdGlsb2NhdGlvbiBpbXBsZW1lbnRzIGkuQnVsa1VwbG9hZE11bHRpbG9jYXRpb25JbnRlcmZhY2Uge1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBtZWRpYTogc3RyaW5nW107XG4gICAgc2NoZWR1bGVkRGF0ZTogRGF0ZTtcbiAgICBnaWZzOiBzdHJpbmdbXTtcbiAgICB2aWRlb3M6IHN0cmluZ1tdO1xuICAgIG1lZGlhRW50cmllczogTWVkaWFFbnRyeVtdO1xuICAgIG1ldGFEYXRhOiBNZXRhRGF0YVtdO1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuICAgIGN1c3RvbWl6YXRpb246IFBvc3RDdXN0b21pemF0aW9uO1xuICAgIGxpbmtTaG9ydENvZGU6IHN0cmluZztcbiAgICBwb3N0VHlwZXM6IFNTSURQb3N0VHlwZVtdO1xuICAgIG11bHRpbG9jYXRpb25JZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uczogTG9jYXRpb25bXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJ1bGtVcGxvYWRNdWx0aWxvY2F0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQnVsa1VwbG9hZE11bHRpbG9jYXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc2NoZWR1bGVkRGF0ZSkge20uc2NoZWR1bGVkRGF0ZSA9IG5ldyBEYXRlKHByb3RvLnNjaGVkdWxlZERhdGUpO31cbiAgICAgICAgaWYgKHByb3RvLm1lZGlhRW50cmllcykge20ubWVkaWFFbnRyaWVzID0gcHJvdG8ubWVkaWFFbnRyaWVzLm1hcChNZWRpYUVudHJ5LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8ubWV0YURhdGEpIHttLm1ldGFEYXRhID0gcHJvdG8ubWV0YURhdGEubWFwKE1ldGFEYXRhLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uY3VzdG9taXphdGlvbikge20uY3VzdG9taXphdGlvbiA9IFBvc3RDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5jdXN0b21pemF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5wb3N0VHlwZXMpIHttLnBvc3RUeXBlcyA9IHByb3RvLnBvc3RUeXBlcy5tYXAoU1NJRFBvc3RUeXBlLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8ubG9jYXRpb25zKSB7bS5sb2NhdGlvbnMgPSBwcm90by5sb2NhdGlvbnMubWFwKExvY2F0aW9uLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJ1bGtVcGxvYWRNdWx0aWxvY2F0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGV4dCddID0gdGhpcy50ZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWRpYSddID0gdGhpcy5tZWRpYTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlZHVsZWREYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNjaGVkdWxlZERhdGUgIT09IG51bGwpIHt0b1JldHVyblsnc2NoZWR1bGVkRGF0ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zY2hlZHVsZWREYXRlID8gKHRoaXMuc2NoZWR1bGVkRGF0ZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zY2hlZHVsZWREYXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdpZnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2dpZnMnXSA9IHRoaXMuZ2lmczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZpZGVvcyddID0gdGhpcy52aWRlb3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWFFbnRyaWVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZGlhRW50cmllcyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWRpYUVudHJpZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVkaWFFbnRyaWVzID8gKHRoaXMubWVkaWFFbnRyaWVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZGlhRW50cmllczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhRGF0YSA/ICh0aGlzLm1ldGFEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhZ3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RhZ3MnXSA9IHRoaXMudGFnczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnY3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jdXN0b21pemF0aW9uID8gKHRoaXMuY3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtTaG9ydENvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpbmtTaG9ydENvZGUnXSA9IHRoaXMubGlua1Nob3J0Q29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VHlwZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdFR5cGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3RUeXBlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0VHlwZXMgPyAodGhpcy5wb3N0VHlwZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdFR5cGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvbklkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubG9jYXRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xvY2F0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5sb2NhdGlvbnMgPyAodGhpcy5sb2NhdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubG9jYXRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvY2F0aW9uIGltcGxlbWVudHMgaS5Mb2NhdGlvbkludGVyZmFjZSB7XG4gICAgc29jaWFsU2VydmljZUlkczogc3RyaW5nW107XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExvY2F0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTG9jYXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxvY2F0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkcyddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aWxvY2F0aW9uUG9zdCBpbXBsZW1lbnRzIGkuTXVsdGlsb2NhdGlvblBvc3RJbnRlcmZhY2Uge1xuICAgIGJyYW5kSWQ6IHN0cmluZztcbiAgICBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZztcbiAgICBvcmlnaW5hbFRleHQ6IHN0cmluZztcbiAgICBvcmlnaW5hbFNjaGVkdWxlZERhdGU6IERhdGU7XG4gICAgb3JpZ2luYWxNZWRpYTogc3RyaW5nW107XG4gICAgb3JpZ2luYWxMb2NhdGlvbnM6IExvY2F0aW9uW107XG4gICAgZWRpdGVkTG9jYXRpb25zOiBMb2NhdGlvbltdO1xuICAgIGRlbGV0ZWRMb2NhdGlvbnM6IExvY2F0aW9uW107XG4gICAgb3JpZ2luYWxHaWZzOiBzdHJpbmdbXTtcbiAgICBvcmlnaW5hbFZpZGVvczogc3RyaW5nW107XG4gICAgbWVkaWFFbnRyaWVzOiBNZWRpYUVudHJ5W107XG4gICAgbWV0YURhdGE6IE1ldGFEYXRhW107XG4gICAgdGFnczogc3RyaW5nW107XG4gICAgY3VzdG9taXphdGlvbjogUG9zdEN1c3RvbWl6YXRpb247XG4gICAgbGlua1Nob3J0Q29kZTogc3RyaW5nO1xuICAgIHBvc3RUeXBlczogU1NJRFBvc3RUeXBlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aWxvY2F0aW9uUG9zdCB7XG4gICAgICAgIGxldCBtID0gbmV3IE11bHRpbG9jYXRpb25Qb3N0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSkge20ub3JpZ2luYWxTY2hlZHVsZWREYXRlID0gbmV3IERhdGUocHJvdG8ub3JpZ2luYWxTY2hlZHVsZWREYXRlKTt9XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5hbExvY2F0aW9ucykge20ub3JpZ2luYWxMb2NhdGlvbnMgPSBwcm90by5vcmlnaW5hbExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5lZGl0ZWRMb2NhdGlvbnMpIHttLmVkaXRlZExvY2F0aW9ucyA9IHByb3RvLmVkaXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5kZWxldGVkTG9jYXRpb25zKSB7bS5kZWxldGVkTG9jYXRpb25zID0gcHJvdG8uZGVsZXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5tZWRpYUVudHJpZXMpIHttLm1lZGlhRW50cmllcyA9IHByb3RvLm1lZGlhRW50cmllcy5tYXAoTWVkaWFFbnRyeS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFEYXRhKSB7bS5tZXRhRGF0YSA9IHByb3RvLm1ldGFEYXRhLm1hcChNZXRhRGF0YS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmN1c3RvbWl6YXRpb24pIHttLmN1c3RvbWl6YXRpb24gPSBQb3N0Q3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8uY3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8ucG9zdFR5cGVzKSB7bS5wb3N0VHlwZXMgPSBwcm90by5wb3N0VHlwZXMubWFwKFNTSURQb3N0VHlwZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NdWx0aWxvY2F0aW9uUG9zdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25JZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxUZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5hbFRleHQnXSA9IHRoaXMub3JpZ2luYWxUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcmlnaW5hbFNjaGVkdWxlZERhdGUgIT09IG51bGwpIHt0b1JldHVyblsnb3JpZ2luYWxTY2hlZHVsZWREYXRlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSA/ICh0aGlzLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5vcmlnaW5hbFNjaGVkdWxlZERhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxNZWRpYSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luYWxNZWRpYSddID0gdGhpcy5vcmlnaW5hbE1lZGlhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsTG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm9yaWdpbmFsTG9jYXRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ29yaWdpbmFsTG9jYXRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm9yaWdpbmFsTG9jYXRpb25zID8gKHRoaXMub3JpZ2luYWxMb2NhdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMub3JpZ2luYWxMb2NhdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWRpdGVkTG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVkaXRlZExvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydlZGl0ZWRMb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZWRpdGVkTG9jYXRpb25zID8gKHRoaXMuZWRpdGVkTG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVkaXRlZExvY2F0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkTG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWRMb2NhdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZExvY2F0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkTG9jYXRpb25zID8gKHRoaXMuZGVsZXRlZExvY2F0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkTG9jYXRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsR2lmcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luYWxHaWZzJ10gPSB0aGlzLm9yaWdpbmFsR2lmczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbFZpZGVvcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luYWxWaWRlb3MnXSA9IHRoaXMub3JpZ2luYWxWaWRlb3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWFFbnRyaWVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZGlhRW50cmllcyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWRpYUVudHJpZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVkaWFFbnRyaWVzID8gKHRoaXMubWVkaWFFbnRyaWVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZGlhRW50cmllczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhRGF0YSA/ICh0aGlzLm1ldGFEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhZ3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RhZ3MnXSA9IHRoaXMudGFnczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnY3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jdXN0b21pemF0aW9uID8gKHRoaXMuY3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtTaG9ydENvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpbmtTaG9ydENvZGUnXSA9IHRoaXMubGlua1Nob3J0Q29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VHlwZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdFR5cGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3RUeXBlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0VHlwZXMgPyAodGhpcy5wb3N0VHlwZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdFR5cGVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpbG9jYXRpb25Qb3N0RXJyb3IgaW1wbGVtZW50cyBpLk11bHRpbG9jYXRpb25Qb3N0RXJyb3JJbnRlcmZhY2Uge1xuICAgIHNvY2lhbFNlcnZpY2VJZDogc3RyaW5nO1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgZXJyb3JSZWFzb246IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE11bHRpbG9jYXRpb25Qb3N0RXJyb3Ige1xuICAgICAgICBsZXQgbSA9IG5ldyBNdWx0aWxvY2F0aW9uUG9zdEVycm9yKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NdWx0aWxvY2F0aW9uUG9zdEVycm9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWQnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lcnJvclJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXJyb3JSZWFzb24nXSA9IHRoaXMuZXJyb3JSZWFzb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlsb2NhdGlvblNlcnZpY2VzIGltcGxlbWVudHMgaS5NdWx0aWxvY2F0aW9uU2VydmljZXNJbnRlcmZhY2Uge1xuICAgIHNlcnZpY2VJZHM6IHN0cmluZ1tdO1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aWxvY2F0aW9uU2VydmljZXMge1xuICAgICAgICBsZXQgbSA9IG5ldyBNdWx0aWxvY2F0aW9uU2VydmljZXMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk11bHRpbG9jYXRpb25TZXJ2aWNlc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlcnZpY2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlcnZpY2VJZHMnXSA9IHRoaXMuc2VydmljZUlkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zdEFjdGlvbiBpbXBsZW1lbnRzIGkuUG9zdEFjdGlvbkludGVyZmFjZSB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGxpbmtVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBvc3RBY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBQb3N0QWN0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Qb3N0QWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHlwZSddID0gdGhpcy50eXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpbmtVcmwnXSA9IHRoaXMubGlua1VybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3N0Q3VzdG9taXphdGlvbiBpbXBsZW1lbnRzIGkuUG9zdEN1c3RvbWl6YXRpb25JbnRlcmZhY2Uge1xuICAgIGV2ZW50OiBQb3N0RXZlbnQ7XG4gICAgYWN0aW9uOiBQb3N0QWN0aW9uO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUG9zdEN1c3RvbWl6YXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBQb3N0Q3VzdG9taXphdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5ldmVudCkge20uZXZlbnQgPSBQb3N0RXZlbnQuZnJvbVByb3RvKHByb3RvLmV2ZW50KTt9XG4gICAgICAgIGlmIChwcm90by5hY3Rpb24pIHttLmFjdGlvbiA9IFBvc3RBY3Rpb24uZnJvbVByb3RvKHByb3RvLmFjdGlvbik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBvc3RDdXN0b21pemF0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXZlbnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXZlbnQgIT09IG51bGwpIHt0b1JldHVyblsnZXZlbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXZlbnQgPyAodGhpcy5ldmVudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ldmVudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYWN0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FjdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hY3Rpb24gPyAodGhpcy5hY3Rpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYWN0aW9uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc3RFdmVudCBpbXBsZW1lbnRzIGkuUG9zdEV2ZW50SW50ZXJmYWNlIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGVuZDogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBvc3RFdmVudCB7XG4gICAgICAgIGxldCBtID0gbmV3IFBvc3RFdmVudCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdGFydCkge20uc3RhcnQgPSBuZXcgRGF0ZShwcm90by5zdGFydCk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kKSB7bS5lbmQgPSBuZXcgRGF0ZShwcm90by5lbmQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Qb3N0RXZlbnRJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsb2NhdGlvbi1wb3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc29jaWFsX3Bvc3RzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL211bHRpbG9jYXRpb24tcG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtJQWVoQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQ3RDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQzNFLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDeEYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMxRSxJ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QUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQ3hFLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQzdKLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUFDO1FBQ2pKLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1lZGlhRW50cnksIE1ldGFEYXRhLCBTU0lEUG9zdFR5cGUsIE1MUG9zdENhdGVnb3J5IH0gZnJvbSAnLi9zb2NpYWwtcG9zdHMnO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQnVsa1VwbG9hZE11bHRpbG9jYXRpb24gaW1wbGVtZW50cyBpLkJ1bGtVcGxvYWRNdWx0aWxvY2F0aW9uSW50ZXJmYWNlIHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgbWVkaWE6IHN0cmluZ1tdO1xuICAgIHNjaGVkdWxlZERhdGU6IERhdGU7XG4gICAgZ2lmczogc3RyaW5nW107XG4gICAgdmlkZW9zOiBzdHJpbmdbXTtcbiAgICBtZWRpYUVudHJpZXM6IE1lZGlhRW50cnlbXTtcbiAgICBtZXRhRGF0YTogTWV0YURhdGFbXTtcbiAgICB0YWdzOiBzdHJpbmdbXTtcbiAgICBjdXN0b21pemF0aW9uOiBQb3N0Q3VzdG9taXphdGlvbjtcbiAgICBsaW5rU2hvcnRDb2RlOiBzdHJpbmc7XG4gICAgcG9zdFR5cGVzOiBTU0lEUG9zdFR5cGVbXTtcbiAgICBtdWx0aWxvY2F0aW9uSWQ6IHN0cmluZztcbiAgICBsb2NhdGlvbnM6IExvY2F0aW9uW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCdWxrVXBsb2FkTXVsdGlsb2NhdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IEJ1bGtVcGxvYWRNdWx0aWxvY2F0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNjaGVkdWxlZERhdGUpIHttLnNjaGVkdWxlZERhdGUgPSBuZXcgRGF0ZShwcm90by5zY2hlZHVsZWREYXRlKTt9XG4gICAgICAgIGlmIChwcm90by5tZWRpYUVudHJpZXMpIHttLm1lZGlhRW50cmllcyA9IHByb3RvLm1lZGlhRW50cmllcy5tYXAoTWVkaWFFbnRyeS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFEYXRhKSB7bS5tZXRhRGF0YSA9IHByb3RvLm1ldGFEYXRhLm1hcChNZXRhRGF0YS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmN1c3RvbWl6YXRpb24pIHttLmN1c3RvbWl6YXRpb24gPSBQb3N0Q3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8uY3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8ucG9zdFR5cGVzKSB7bS5wb3N0VHlwZXMgPSBwcm90by5wb3N0VHlwZXMubWFwKFNTSURQb3N0VHlwZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmxvY2F0aW9ucykge20ubG9jYXRpb25zID0gcHJvdG8ubG9jYXRpb25zLm1hcChMb2NhdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CdWxrVXBsb2FkTXVsdGlsb2NhdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RleHQnXSA9IHRoaXMudGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVkaWEnXSA9IHRoaXMubWVkaWE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2NoZWR1bGVkRGF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zY2hlZHVsZWREYXRlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NjaGVkdWxlZERhdGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc2NoZWR1bGVkRGF0ZSA/ICh0aGlzLnNjaGVkdWxlZERhdGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2NoZWR1bGVkRGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5naWZzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydnaWZzJ10gPSB0aGlzLmdpZnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWRlb3MnXSA9IHRoaXMudmlkZW9zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhRW50cmllcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWRpYUVudHJpZXMgIT09IG51bGwpIHt0b1JldHVyblsnbWVkaWFFbnRyaWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZGlhRW50cmllcyA/ICh0aGlzLm1lZGlhRW50cmllcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZWRpYUVudHJpZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YURhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YURhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YURhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YURhdGEgPyAodGhpcy5tZXRhRGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhRGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YWdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YWdzJ10gPSB0aGlzLnRhZ3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2N1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3VzdG9taXphdGlvbiA/ICh0aGlzLmN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5saW5rU2hvcnRDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaW5rU2hvcnRDb2RlJ10gPSB0aGlzLmxpbmtTaG9ydENvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFR5cGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBvc3RUeXBlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0VHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdFR5cGVzID8gKHRoaXMucG9zdFR5cGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3RUeXBlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ211bHRpbG9jYXRpb25JZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydsb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubG9jYXRpb25zID8gKHRoaXMubG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxvY2F0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2NhdGlvbiBpbXBsZW1lbnRzIGkuTG9jYXRpb25JbnRlcmZhY2Uge1xuICAgIHNvY2lhbFNlcnZpY2VJZHM6IHN0cmluZ1tdO1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMb2NhdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IExvY2F0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Mb2NhdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFNlcnZpY2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VJZHMnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlsb2NhdGlvblBvc3QgaW1wbGVtZW50cyBpLk11bHRpbG9jYXRpb25Qb3N0SW50ZXJmYWNlIHtcbiAgICBicmFuZElkOiBzdHJpbmc7XG4gICAgbXVsdGlsb2NhdGlvbklkOiBzdHJpbmc7XG4gICAgb3JpZ2luYWxUZXh0OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxTY2hlZHVsZWREYXRlOiBEYXRlO1xuICAgIG9yaWdpbmFsTWVkaWE6IHN0cmluZ1tdO1xuICAgIG9yaWdpbmFsTG9jYXRpb25zOiBMb2NhdGlvbltdO1xuICAgIGVkaXRlZExvY2F0aW9uczogTG9jYXRpb25bXTtcbiAgICBkZWxldGVkTG9jYXRpb25zOiBMb2NhdGlvbltdO1xuICAgIG9yaWdpbmFsR2lmczogc3RyaW5nW107XG4gICAgb3JpZ2luYWxWaWRlb3M6IHN0cmluZ1tdO1xuICAgIG1lZGlhRW50cmllczogTWVkaWFFbnRyeVtdO1xuICAgIG1ldGFEYXRhOiBNZXRhRGF0YVtdO1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuICAgIGN1c3RvbWl6YXRpb246IFBvc3RDdXN0b21pemF0aW9uO1xuICAgIGxpbmtTaG9ydENvZGU6IHN0cmluZztcbiAgICBwb3N0VHlwZXM6IFNTSURQb3N0VHlwZVtdO1xuICAgIHBvc3RDYXRlZ29yeTogTUxQb3N0Q2F0ZWdvcnk7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aWxvY2F0aW9uUG9zdCB7XG4gICAgICAgIGxldCBtID0gbmV3IE11bHRpbG9jYXRpb25Qb3N0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSkge20ub3JpZ2luYWxTY2hlZHVsZWREYXRlID0gbmV3IERhdGUocHJvdG8ub3JpZ2luYWxTY2hlZHVsZWREYXRlKTt9XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5hbExvY2F0aW9ucykge20ub3JpZ2luYWxMb2NhdGlvbnMgPSBwcm90by5vcmlnaW5hbExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5lZGl0ZWRMb2NhdGlvbnMpIHttLmVkaXRlZExvY2F0aW9ucyA9IHByb3RvLmVkaXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5kZWxldGVkTG9jYXRpb25zKSB7bS5kZWxldGVkTG9jYXRpb25zID0gcHJvdG8uZGVsZXRlZExvY2F0aW9ucy5tYXAoTG9jYXRpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5tZWRpYUVudHJpZXMpIHttLm1lZGlhRW50cmllcyA9IHByb3RvLm1lZGlhRW50cmllcy5tYXAoTWVkaWFFbnRyeS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFEYXRhKSB7bS5tZXRhRGF0YSA9IHByb3RvLm1ldGFEYXRhLm1hcChNZXRhRGF0YS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmN1c3RvbWl6YXRpb24pIHttLmN1c3RvbWl6YXRpb24gPSBQb3N0Q3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8uY3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8ucG9zdFR5cGVzKSB7bS5wb3N0VHlwZXMgPSBwcm90by5wb3N0VHlwZXMubWFwKFNTSURQb3N0VHlwZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBvc3RDYXRlZ29yeSkge20ucG9zdENhdGVnb3J5ID0gTUxQb3N0Q2F0ZWdvcnkuZnJvbVByb3RvKHByb3RvLnBvc3RDYXRlZ29yeSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk11bHRpbG9jYXRpb25Qb3N0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnJhbmRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYnJhbmRJZCddID0gdGhpcy5icmFuZElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm11bHRpbG9jYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvbklkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbFRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbmFsVGV4dCddID0gdGhpcy5vcmlnaW5hbFRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxTY2hlZHVsZWREYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydvcmlnaW5hbFNjaGVkdWxlZERhdGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMub3JpZ2luYWxTY2hlZHVsZWREYXRlID8gKHRoaXMub3JpZ2luYWxTY2hlZHVsZWREYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm9yaWdpbmFsU2NoZWR1bGVkRGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbE1lZGlhICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5hbE1lZGlhJ10gPSB0aGlzLm9yaWdpbmFsTWVkaWE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxMb2NhdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3JpZ2luYWxMb2NhdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnb3JpZ2luYWxMb2NhdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMub3JpZ2luYWxMb2NhdGlvbnMgPyAodGhpcy5vcmlnaW5hbExvY2F0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5vcmlnaW5hbExvY2F0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lZGl0ZWRMb2NhdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZWRpdGVkTG9jYXRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VkaXRlZExvY2F0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lZGl0ZWRMb2NhdGlvbnMgPyAodGhpcy5lZGl0ZWRMb2NhdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZWRpdGVkTG9jYXRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlbGV0ZWRMb2NhdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZGVsZXRlZExvY2F0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydkZWxldGVkTG9jYXRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmRlbGV0ZWRMb2NhdGlvbnMgPyAodGhpcy5kZWxldGVkTG9jYXRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmRlbGV0ZWRMb2NhdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxHaWZzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5hbEdpZnMnXSA9IHRoaXMub3JpZ2luYWxHaWZzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbmFsVmlkZW9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5hbFZpZGVvcyddID0gdGhpcy5vcmlnaW5hbFZpZGVvczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYUVudHJpZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVkaWFFbnRyaWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZGlhRW50cmllcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWRpYUVudHJpZXMgPyAodGhpcy5tZWRpYUVudHJpZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVkaWFFbnRyaWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1ldGFEYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1ldGFEYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ21ldGFEYXRhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1ldGFEYXRhID8gKHRoaXMubWV0YURhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWV0YURhdGE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFncyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFncyddID0gdGhpcy50YWdzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmN1c3RvbWl6YXRpb24gPyAodGhpcy5jdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlua1Nob3J0Q29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlua1Nob3J0Q29kZSddID0gdGhpcy5saW5rU2hvcnRDb2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUeXBlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0VHlwZXMgIT09IG51bGwpIHt0b1JldHVyblsncG9zdFR5cGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3RUeXBlcyA/ICh0aGlzLnBvc3RUeXBlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0VHlwZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdENhdGVnb3J5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBvc3RDYXRlZ29yeSAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0Q2F0ZWdvcnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdENhdGVnb3J5ID8gKHRoaXMucG9zdENhdGVnb3J5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3RDYXRlZ29yeTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aWxvY2F0aW9uUG9zdEVycm9yIGltcGxlbWVudHMgaS5NdWx0aWxvY2F0aW9uUG9zdEVycm9ySW50ZXJmYWNlIHtcbiAgICBzb2NpYWxTZXJ2aWNlSWQ6IHN0cmluZztcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuICAgIGVycm9yUmVhc29uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNdWx0aWxvY2F0aW9uUG9zdEVycm9yIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTXVsdGlsb2NhdGlvblBvc3RFcnJvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTXVsdGlsb2NhdGlvblBvc3RFcnJvckludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFNlcnZpY2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkJ10gPSB0aGlzLnNvY2lhbFNlcnZpY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY2NvdW50R3JvdXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwSWQnXSA9IHRoaXMuYWNjb3VudEdyb3VwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3JSZWFzb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Vycm9yUmVhc29uJ10gPSB0aGlzLmVycm9yUmVhc29uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpbG9jYXRpb25TZXJ2aWNlcyBpbXBsZW1lbnRzIGkuTXVsdGlsb2NhdGlvblNlcnZpY2VzSW50ZXJmYWNlIHtcbiAgICBzZXJ2aWNlSWRzOiBzdHJpbmdbXTtcbiAgICBhY2NvdW50R3JvdXBJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTXVsdGlsb2NhdGlvblNlcnZpY2VzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTXVsdGlsb2NhdGlvblNlcnZpY2VzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NdWx0aWxvY2F0aW9uU2VydmljZXNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXJ2aWNlSWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXJ2aWNlSWRzJ10gPSB0aGlzLnNlcnZpY2VJZHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc3RBY3Rpb24gaW1wbGVtZW50cyBpLlBvc3RBY3Rpb25JbnRlcmZhY2Uge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBsaW5rVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQb3N0QWN0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUG9zdEFjdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUG9zdEFjdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R5cGUnXSA9IHRoaXMudHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5saW5rVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaW5rVXJsJ10gPSB0aGlzLmxpbmtVcmw7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zdEN1c3RvbWl6YXRpb24gaW1wbGVtZW50cyBpLlBvc3RDdXN0b21pemF0aW9uSW50ZXJmYWNlIHtcbiAgICBldmVudDogUG9zdEV2ZW50O1xuICAgIGFjdGlvbjogUG9zdEFjdGlvbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBvc3RDdXN0b21pemF0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUG9zdEN1c3RvbWl6YXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZXZlbnQpIHttLmV2ZW50ID0gUG9zdEV2ZW50LmZyb21Qcm90byhwcm90by5ldmVudCk7fVxuICAgICAgICBpZiAocHJvdG8uYWN0aW9uKSB7bS5hY3Rpb24gPSBQb3N0QWN0aW9uLmZyb21Qcm90byhwcm90by5hY3Rpb24pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Qb3N0Q3VzdG9taXphdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmV2ZW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2V2ZW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmV2ZW50ID8gKHRoaXMuZXZlbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXZlbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFjdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydhY3Rpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYWN0aW9uID8gKHRoaXMuYWN0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFjdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3N0RXZlbnQgaW1wbGVtZW50cyBpLlBvc3RFdmVudEludGVyZmFjZSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdGFydDogRGF0ZTtcbiAgICBlbmQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQb3N0RXZlbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBQb3N0RXZlbnQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZCkge20uZW5kID0gbmV3IERhdGUocHJvdG8uZW5kKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUG9zdEV2ZW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0ID8gKHRoaXMuc3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZCAhPT0gbnVsbCkge3RvUmV0dXJuWydlbmQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kID8gKHRoaXMuZW5kIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVuZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -173,6 +173,29 @@ export class Event {
173
173
  return toReturn;
174
174
  }
175
175
  }
176
+ export class MLPostCategory {
177
+ static fromProto(proto) {
178
+ let m = new MLPostCategory();
179
+ m = Object.assign(m, proto);
180
+ return m;
181
+ }
182
+ constructor(kwargs) {
183
+ if (!kwargs) {
184
+ return;
185
+ }
186
+ Object.assign(this, kwargs);
187
+ }
188
+ toApiJson() {
189
+ const toReturn = {};
190
+ if (typeof this.isDraft !== 'undefined') {
191
+ toReturn['isDraft'] = this.isDraft;
192
+ }
193
+ if (typeof this.isHidden !== 'undefined') {
194
+ toReturn['isHidden'] = this.isHidden;
195
+ }
196
+ return toReturn;
197
+ }
198
+ }
176
199
  export class MediaEntry {
177
200
  static fromProto(proto) {
178
201
  let m = new MediaEntry();
@@ -661,4 +684,4 @@ export class YoutubeCustomization {
661
684
  return toReturn;
662
685
  }
663
686
  }
664
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLXBvc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc29jaWFsX3Bvc3RzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL3NvY2lhbC1wb3N0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sTUFBTTtJQUlmLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDOUMsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEwQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUFD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QUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FBQztRQUNoRyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhvciBpbXBsZW1lbnRzIGkuQXV0aG9ySW50ZXJmYWNlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaWQ6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEF1dGhvciB7XG4gICAgICAgIGxldCBtID0gbmV3IEF1dGhvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5pZCkge20uaWQgPSBwYXJzZUludChwcm90by5pZCwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5BdXRob3JJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2dQb3N0Q3VzdG9taXphdGlvbiBpbXBsZW1lbnRzIGkuQmxvZ1Bvc3RDdXN0b21pemF0aW9uSW50ZXJmYWNlIHtcbiAgICBzaXRlVHlwZTogc3RyaW5nO1xuICAgIGF1dGhvcjogQXV0aG9yO1xuICAgIGNhdGVnb3JpZXM6IENhdGVnb3J5W107XG4gICAgdGFnczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCbG9nUG9zdEN1c3RvbWl6YXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBCbG9nUG9zdEN1c3RvbWl6YXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXV0aG9yKSB7bS5hdXRob3IgPSBBdXRob3IuZnJvbVByb3RvKHByb3RvLmF1dGhvcik7fVxuICAgICAgICBpZiAocHJvdG8uY2F0ZWdvcmllcykge20uY2F0ZWdvcmllcyA9IHByb3RvLmNhdGVnb3JpZXMubWFwKENhdGVnb3J5LmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJsb2dQb3N0Q3VzdG9taXphdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpdGVUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzaXRlVHlwZSddID0gdGhpcy5zaXRlVHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdXRob3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXV0aG9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F1dGhvciddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdXRob3IgPyAodGhpcy5hdXRob3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXV0aG9yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhdGVnb3JpZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY2F0ZWdvcmllcyAhPT0gbnVsbCkge3RvUmV0dXJuWydjYXRlZ29yaWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhdGVnb3JpZXMgPyAodGhpcy5jYXRlZ29yaWVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNhdGVnb3JpZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFncyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFncyddID0gdGhpcy50YWdzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbGxUb0FjdGlvbiBpbXBsZW1lbnRzIGkuQ2FsbFRvQWN0aW9uSW50ZXJmYWNlIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBhY3Rpb25UeXBlOiBlLkNhbGxUb0FjdGlvbkNhbGxUb0FjdGlvblR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDYWxsVG9BY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDYWxsVG9BY3Rpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWN0aW9uVHlwZSkge20uYWN0aW9uVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ2FsbFRvQWN0aW9uQ2FsbFRvQWN0aW9uVHlwZT4oZS5DYWxsVG9BY3Rpb25DYWxsVG9BY3Rpb25UeXBlLCBwcm90by5hY3Rpb25UeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ2FsbFRvQWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cmwnXSA9IHRoaXMudXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvblR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjdGlvblR5cGUnXSA9IHRoaXMuYWN0aW9uVHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeSBpbXBsZW1lbnRzIGkuQ2F0ZWdvcnlJbnRlcmZhY2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2F0ZWdvcnkge1xuICAgICAgICBsZXQgbSA9IG5ldyBDYXRlZ29yeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5pZCkge20uaWQgPSBwYXJzZUludChwcm90by5pZCwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DYXRlZ29yeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXJyb3IgaW1wbGVtZW50cyBpLkVycm9ySW50ZXJmYWNlIHtcbiAgICByZWFzb246IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRXJyb3Ige1xuICAgICAgICBsZXQgbSA9IG5ldyBFcnJvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXJyb3JJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWFzb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlYXNvbiddID0gdGhpcy5yZWFzb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NhdGVnb3J5J10gPSB0aGlzLmNhdGVnb3J5O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV2ZW50IGltcGxlbWVudHMgaS5FdmVudEludGVyZmFjZSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdGFydERhdGV0aW1lOiBEYXRlO1xuICAgIGVuZERhdGV0aW1lOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRXZlbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBFdmVudCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdGFydERhdGV0aW1lKSB7bS5zdGFydERhdGV0aW1lID0gbmV3IERhdGUocHJvdG8uc3RhcnREYXRldGltZSk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kRGF0ZXRpbWUpIHttLmVuZERhdGV0aW1lID0gbmV3IERhdGUocHJvdG8uZW5kRGF0ZXRpbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5FdmVudEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGFydERhdGV0aW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0RGF0ZXRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnREYXRldGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGFydERhdGV0aW1lID8gKHRoaXMuc3RhcnREYXRldGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydERhdGV0aW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZERhdGV0aW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZERhdGV0aW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZERhdGV0aW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVuZERhdGV0aW1lID8gKHRoaXMuZW5kRGF0ZXRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kRGF0ZXRpbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWVkaWFFbnRyeSBpbXBsZW1lbnRzIGkuTWVkaWFFbnRyeUludGVyZmFjZSB7XG4gICAgbWVkaWFFbnRyeUlkOiBzdHJpbmc7XG4gICAgbWVkaWFVcmw6IHN0cmluZztcbiAgICBtZWRpYVR5cGU6IHN0cmluZztcbiAgICBjb250YWluZXJJZDogc3RyaW5nO1xuICAgIG1ldGFEYXRhOiBNZXRhRGF0YVtdO1xuICAgIG1lZGlhUGF0aDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTWVkaWFFbnRyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IE1lZGlhRW50cnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWV0YURhdGEpIHttLm1ldGFEYXRhID0gcHJvdG8ubWV0YURhdGEubWFwKE1ldGFEYXRhLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk1lZGlhRW50cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYUVudHJ5SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGlhRW50cnlJZCddID0gdGhpcy5tZWRpYUVudHJ5SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWFVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGlhVXJsJ10gPSB0aGlzLm1lZGlhVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVkaWFUeXBlJ10gPSB0aGlzLm1lZGlhVHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb250YWluZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29udGFpbmVySWQnXSA9IHRoaXMuY29udGFpbmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YURhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YURhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YURhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YURhdGEgPyAodGhpcy5tZXRhRGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhRGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYVBhdGggIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGlhUGF0aCddID0gdGhpcy5tZWRpYVBhdGg7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWV0YURhdGEgaW1wbGVtZW50cyBpLk1ldGFEYXRhSW50ZXJmYWNlIHtcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgICBwcm9wZXJ0eVZhbHVlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNZXRhRGF0YSB7XG4gICAgICAgIGxldCBtID0gbmV3IE1ldGFEYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5NZXRhRGF0YUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BlcnR5TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvcGVydHlOYW1lJ10gPSB0aGlzLnByb3BlcnR5TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wZXJ0eVZhbHVlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcm9wZXJ0eVZhbHVlJ10gPSB0aGlzLnByb3BlcnR5VmFsdWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zdFRlbXBsYXRlIGltcGxlbWVudHMgaS5Qb3N0VGVtcGxhdGVJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG4gICAgdGVtcGxhdGVJZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICB1cGRhdGVkOiBEYXRlO1xuICAgIHBvc3RUZXh0OiBzdHJpbmc7XG4gICAgcG9zdERhdGVUaW1lOiBEYXRlO1xuICAgIGdtYlBvc3RDdXN0b21pemF0aW9uOiBzdHJpbmc7XG4gICAgaW1hZ2VVcmw6IHN0cmluZztcbiAgICBpbWFnZVBhdGg6IHN0cmluZztcbiAgICBpbWFnZVNpemU6IHN0cmluZztcbiAgICBwcmV2aWV3czogc3RyaW5nO1xuICAgIG9wdGlvbnM6IHN0cmluZ1tdO1xuICAgIHZpZGVvVXJsOiBzdHJpbmc7XG4gICAgbWVkaWFFbnRyaWVzOiBNZWRpYUVudHJ5W107XG4gICAgbWV0YURhdGE6IE1ldGFEYXRhW107XG4gICAgcG9zdFR5cGU6IGUuUG9zdFR5cGU7XG4gICAgeW91dHViZUN1c3RvbWl6YXRpb246IFlvdXR1YmVDdXN0b21pemF0aW9uO1xuICAgIHRpa3Rva0N1c3RvbWl6YXRpb246IFRpa1Rva0N1c3RvbWl6YXRpb247XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQb3N0VGVtcGxhdGUge1xuICAgICAgICBsZXQgbSA9IG5ldyBQb3N0VGVtcGxhdGUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnVwZGF0ZWQpIHttLnVwZGF0ZWQgPSBuZXcgRGF0ZShwcm90by51cGRhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by5wb3N0RGF0ZVRpbWUpIHttLnBvc3REYXRlVGltZSA9IG5ldyBEYXRlKHByb3RvLnBvc3REYXRlVGltZSk7fVxuICAgICAgICBpZiAocHJvdG8ubWVkaWFFbnRyaWVzKSB7bS5tZWRpYUVudHJpZXMgPSBwcm90by5tZWRpYUVudHJpZXMubWFwKE1lZGlhRW50cnkuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5tZXRhRGF0YSkge20ubWV0YURhdGEgPSBwcm90by5tZXRhRGF0YS5tYXAoTWV0YURhdGEuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5wb3N0VHlwZSkge20ucG9zdFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlBvc3RUeXBlPihlLlBvc3RUeXBlLCBwcm90by5wb3N0VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8ueW91dHViZUN1c3RvbWl6YXRpb24pIHttLnlvdXR1YmVDdXN0b21pemF0aW9uID0gWW91dHViZUN1c3RvbWl6YXRpb24uZnJvbVByb3RvKHByb3RvLnlvdXR1YmVDdXN0b21pemF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by50aWt0b2tDdXN0b21pemF0aW9uKSB7bS50aWt0b2tDdXN0b21pemF0aW9uID0gVGlrVG9rQ3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8udGlrdG9rQ3VzdG9taXphdGlvbik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBvc3RUZW1wbGF0ZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZW1wbGF0ZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZW1wbGF0ZUlkJ10gPSB0aGlzLnRlbXBsYXRlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9zdFRleHQnXSA9IHRoaXMucG9zdFRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdERhdGVUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBvc3REYXRlVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwb3N0RGF0ZVRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucG9zdERhdGVUaW1lID8gKHRoaXMucG9zdERhdGVUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBvc3REYXRlVGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5nbWJQb3N0Q3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZ21iUG9zdEN1c3RvbWl6YXRpb24nXSA9IHRoaXMuZ21iUG9zdEN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJsJ10gPSB0aGlzLmltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlUGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VQYXRoJ10gPSB0aGlzLmltYWdlUGF0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVNpemUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlU2l6ZSddID0gdGhpcy5pbWFnZVNpemU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJldmlld3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ByZXZpZXdzJ10gPSB0aGlzLnByZXZpZXdzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbnMnXSA9IHRoaXMub3B0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlkZW9VcmwnXSA9IHRoaXMudmlkZW9Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWFFbnRyaWVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZGlhRW50cmllcyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWRpYUVudHJpZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVkaWFFbnRyaWVzID8gKHRoaXMubWVkaWFFbnRyaWVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZGlhRW50cmllczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhRGF0YSA/ICh0aGlzLm1ldGFEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VHlwZSddID0gdGhpcy5wb3N0VHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWyd5b3V0dWJlQ3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiA/ICh0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aWt0b2tDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gPyAodGhpcy50aWt0b2tDdXN0b21pemF0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU1NJRFBvc3RUeXBlIGltcGxlbWVudHMgaS5TU0lEUG9zdFR5cGVJbnRlcmZhY2Uge1xuICAgIHNvY2lhbFNlcnZpY2VJZDogc3RyaW5nO1xuICAgIHBvc3RUeXBlOiBlLlBvc3RUeXBlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU1NJRFBvc3RUeXBlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU1NJRFBvc3RUeXBlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBvc3RUeXBlKSB7bS5wb3N0VHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUG9zdFR5cGU+KGUuUG9zdFR5cGUsIHByb3RvLnBvc3RUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU1NJRFBvc3RUeXBlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWQnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VHlwZSddID0gdGhpcy5wb3N0VHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlZHVsZVBvc3RTdGF0dXMgaW1wbGVtZW50cyBpLlNjaGVkdWxlUG9zdFN0YXR1c0ludGVyZmFjZSB7XG4gICAgc29jaWFsUG9zdElkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUlkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUxhYmVsOiBzdHJpbmc7XG4gICAgZXJyb3I6IEVycm9yO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2NoZWR1bGVQb3N0U3RhdHVzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2NoZWR1bGVQb3N0U3RhdHVzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmVycm9yKSB7bS5lcnJvciA9IEVycm9yLmZyb21Qcm90byhwcm90by5lcnJvcik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNjaGVkdWxlUG9zdFN0YXR1c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFBvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsUG9zdElkJ10gPSB0aGlzLnNvY2lhbFBvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxTZXJ2aWNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VJZCddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUxhYmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlTGFiZWwnXSA9IHRoaXMuc29jaWFsU2VydmljZUxhYmVsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVycm9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVycm9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Vycm9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVycm9yID8gKHRoaXMuZXJyb3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXJyb3I7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsQ2FtcGFpZ24gaW1wbGVtZW50cyBpLlNvY2lhbENhbXBhaWduSW50ZXJmYWNlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNvY2lhbENhbXBhaWduIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU29jaWFsQ2FtcGFpZ24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvY2lhbENhbXBhaWduSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2NpYWxQb3N0IGltcGxlbWVudHMgaS5Tb2NpYWxQb3N0SW50ZXJmYWNlIHtcbiAgICBidXNpbmVzc0lkOiBzdHJpbmc7XG4gICAgc29jaWFsUG9zdElkOiBzdHJpbmc7XG4gICAgcG9zdFRleHQ6IHN0cmluZztcbiAgICBwb3N0ZWQ6IERhdGU7XG4gICAgaXNFcnJvcjogYm9vbGVhbjtcbiAgICBkZWxldGlvblN0YXR1czogZS5Tb2NpYWxQb3N0RGVsZXRpb25TdGF0dXM7XG4gICAgc2VydmljZTogZS5Tb2NpYWxQb3N0U2VydmljZTtcbiAgICBwZXJtYWxpbms6IHN0cmluZztcbiAgICBjcmVhdGVkOiBEYXRlO1xuICAgIHByb2ZpbGVVcmw6IHN0cmluZztcbiAgICBwcm9maWxlSW1hZ2VVcmw6IHN0cmluZztcbiAgICBzY2hlZHVsZWQ6IERhdGU7XG4gICAgc3RhdHVzOiBlLlBvc3RpbmdTdGF0dXM7XG4gICAgaW1hZ2VVcmw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXJlbnRJZDogc3RyaW5nO1xuICAgIHNvY2lhbFNlcnZpY2VJZDogc3RyaW5nO1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICBjYWxsVG9BY3Rpb246IENhbGxUb0FjdGlvbjtcbiAgICB2aWRlb1VybDogc3RyaW5nO1xuICAgIGVycm9yOiBFcnJvcjtcbiAgICBpbWFnZVVybHM6IHN0cmluZ1tdO1xuICAgIGxpbmtQcmV2aWV3SW1hZ2VVcmw6IHN0cmluZztcbiAgICBicmFuZElkOiBzdHJpbmc7XG4gICAgbXVsdGlsb2NhdGlvblBvc3RJZDogc3RyaW5nO1xuICAgIHBvc3RUeXBlOiBlLlBvc3RUeXBlO1xuICAgIG1lZGlhRW50cmllczogTWVkaWFFbnRyeVtdO1xuICAgIG1ldGFEYXRhOiBNZXRhRGF0YVtdO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgeW91dHViZUN1c3RvbWl6YXRpb246IFlvdXR1YmVDdXN0b21pemF0aW9uO1xuICAgIHRpa3Rva0N1c3RvbWl6YXRpb246IFRpa1Rva0N1c3RvbWl6YXRpb247XG4gICAgYmxvZ1Bvc3RDdXN0b21pemF0aW9uOiBCbG9nUG9zdEN1c3RvbWl6YXRpb247XG4gICAgY2FtcGFpZ246IFNvY2lhbENhbXBhaWduO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU29jaWFsUG9zdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvY2lhbFBvc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdGVkKSB7bS5wb3N0ZWQgPSBuZXcgRGF0ZShwcm90by5wb3N0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLmRlbGV0aW9uU3RhdHVzKSB7bS5kZWxldGlvblN0YXR1cyA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuU29jaWFsUG9zdERlbGV0aW9uU3RhdHVzPihlLlNvY2lhbFBvc3REZWxldGlvblN0YXR1cywgcHJvdG8uZGVsZXRpb25TdGF0dXMpO31cbiAgICAgICAgaWYgKHByb3RvLnNlcnZpY2UpIHttLnNlcnZpY2UgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlNvY2lhbFBvc3RTZXJ2aWNlPihlLlNvY2lhbFBvc3RTZXJ2aWNlLCBwcm90by5zZXJ2aWNlKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8uc2NoZWR1bGVkKSB7bS5zY2hlZHVsZWQgPSBuZXcgRGF0ZShwcm90by5zY2hlZHVsZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnN0YXR1cykge20uc3RhdHVzID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Qb3N0aW5nU3RhdHVzPihlLlBvc3RpbmdTdGF0dXMsIHByb3RvLnN0YXR1cyk7fVxuICAgICAgICBpZiAocHJvdG8uZXZlbnQpIHttLmV2ZW50ID0gRXZlbnQuZnJvbVByb3RvKHByb3RvLmV2ZW50KTt9XG4gICAgICAgIGlmIChwcm90by5jYWxsVG9BY3Rpb24pIHttLmNhbGxUb0FjdGlvbiA9IENhbGxUb0FjdGlvbi5mcm9tUHJvdG8ocHJvdG8uY2FsbFRvQWN0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5lcnJvcikge20uZXJyb3IgPSBFcnJvci5mcm9tUHJvdG8ocHJvdG8uZXJyb3IpO31cbiAgICAgICAgaWYgKHByb3RvLnBvc3RUeXBlKSB7bS5wb3N0VHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUG9zdFR5cGU+KGUuUG9zdFR5cGUsIHByb3RvLnBvc3RUeXBlKTt9XG4gICAgICAgIGlmIChwcm90by5tZWRpYUVudHJpZXMpIHttLm1lZGlhRW50cmllcyA9IHByb3RvLm1lZGlhRW50cmllcy5tYXAoTWVkaWFFbnRyeS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFEYXRhKSB7bS5tZXRhRGF0YSA9IHByb3RvLm1ldGFEYXRhLm1hcChNZXRhRGF0YS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnlvdXR1YmVDdXN0b21pemF0aW9uKSB7bS55b3V0dWJlQ3VzdG9taXphdGlvbiA9IFlvdXR1YmVDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8udGlrdG9rQ3VzdG9taXphdGlvbikge20udGlrdG9rQ3VzdG9taXphdGlvbiA9IFRpa1Rva0N1c3RvbWl6YXRpb24uZnJvbVByb3RvKHByb3RvLnRpa3Rva0N1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmJsb2dQb3N0Q3VzdG9taXphdGlvbikge20uYmxvZ1Bvc3RDdXN0b21pemF0aW9uID0gQmxvZ1Bvc3RDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by5ibG9nUG9zdEN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmNhbXBhaWduKSB7bS5jYW1wYWlnbiA9IFNvY2lhbENhbXBhaWduLmZyb21Qcm90byhwcm90by5jYW1wYWlnbik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvY2lhbFBvc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidXNpbmVzc0lkJ10gPSB0aGlzLmJ1c2luZXNzSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxQb3N0SWQnXSA9IHRoaXMuc29jaWFsUG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VGV4dCddID0gdGhpcy5wb3N0VGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3RlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0ZWQgPyAodGhpcy5wb3N0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzRXJyb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzRXJyb3InXSA9IHRoaXMuaXNFcnJvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGlvblN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVsZXRpb25TdGF0dXMnXSA9IHRoaXMuZGVsZXRpb25TdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VydmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VydmljZSddID0gdGhpcy5zZXJ2aWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBlcm1hbGluayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGVybWFsaW5rJ10gPSB0aGlzLnBlcm1hbGluazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb2ZpbGVVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Byb2ZpbGVVcmwnXSA9IHRoaXMucHJvZmlsZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9maWxlSW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Byb2ZpbGVJbWFnZVVybCddID0gdGhpcy5wcm9maWxlSW1hZ2VVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2NoZWR1bGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNjaGVkdWxlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydzY2hlZHVsZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc2NoZWR1bGVkID8gKHRoaXMuc2NoZWR1bGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNjaGVkdWxlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gdGhpcy5zdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJsJ10gPSB0aGlzLmltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VybmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcm5hbWUnXSA9IHRoaXMudXNlcm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFyZW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcmVudElkJ10gPSB0aGlzLnBhcmVudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFNlcnZpY2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkJ10gPSB0aGlzLnNvY2lhbFNlcnZpY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ldmVudCAhPT0gbnVsbCkge3RvUmV0dXJuWydldmVudCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ldmVudCA/ICh0aGlzLmV2ZW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmV2ZW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGxUb0FjdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jYWxsVG9BY3Rpb24gIT09IG51bGwpIHt0b1JldHVyblsnY2FsbFRvQWN0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhbGxUb0FjdGlvbiA/ICh0aGlzLmNhbGxUb0FjdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jYWxsVG9BY3Rpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZpZGVvVXJsJ10gPSB0aGlzLnZpZGVvVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVycm9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVycm9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Vycm9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVycm9yID8gKHRoaXMuZXJyb3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXJyb3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmxzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVVybHMnXSA9IHRoaXMuaW1hZ2VVcmxzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtQcmV2aWV3SW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpbmtQcmV2aWV3SW1hZ2VVcmwnXSA9IHRoaXMubGlua1ByZXZpZXdJbWFnZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5icmFuZElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmFuZElkJ10gPSB0aGlzLmJyYW5kSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubXVsdGlsb2NhdGlvblBvc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbXVsdGlsb2NhdGlvblBvc3RJZCddID0gdGhpcy5tdWx0aWxvY2F0aW9uUG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VHlwZSddID0gdGhpcy5wb3N0VHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYUVudHJpZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVkaWFFbnRyaWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZGlhRW50cmllcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWRpYUVudHJpZXMgPyAodGhpcy5tZWRpYUVudHJpZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVkaWFFbnRyaWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1ldGFEYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1ldGFEYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ21ldGFEYXRhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1ldGFEYXRhID8gKHRoaXMubWV0YURhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWV0YURhdGE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3lvdXR1YmVDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uID8gKHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMueW91dHViZUN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aWt0b2tDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rpa3Rva0N1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiA/ICh0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Jsb2dQb3N0Q3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gPyAodGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYmxvZ1Bvc3RDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbXBhaWduICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhbXBhaWduICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NhbXBhaWduJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhbXBhaWduID8gKHRoaXMuY2FtcGFpZ24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY2FtcGFpZ247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdERhdGEgaW1wbGVtZW50cyBpLlNvY2lhbFBvc3REYXRhSW50ZXJmYWNlIHtcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgc2NoZWR1bGVGb3I6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWxQb3N0RGF0YSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvY2lhbFBvc3REYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNjaGVkdWxlRm9yKSB7bS5zY2hlZHVsZUZvciA9IG5ldyBEYXRlKHByb3RvLnNjaGVkdWxlRm9yKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsUG9zdERhdGFJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0VGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9zdFRleHQnXSA9IHRoaXMucG9zdFRleHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJsJ10gPSB0aGlzLmltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjaGVkdWxlRm9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNjaGVkdWxlRm9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NjaGVkdWxlRm9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNjaGVkdWxlRm9yID8gKHRoaXMuc2NoZWR1bGVGb3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2NoZWR1bGVGb3I7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGlrVG9rQ3VzdG9taXphdGlvbiBpbXBsZW1lbnRzIGkuVGlrVG9rQ3VzdG9taXphdGlvbkludGVyZmFjZSB7XG4gICAgYWxsb3dDb21tZW50OiBib29sZWFuO1xuICAgIGFsbG93RHVldDogYm9vbGVhbjtcbiAgICBhbGxvd1N0aXRjaDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRpa1Rva0N1c3RvbWl6YXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBUaWtUb2tDdXN0b21pemF0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UaWtUb2tDdXN0b21pemF0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWxsb3dDb21tZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbGxvd0NvbW1lbnQnXSA9IHRoaXMuYWxsb3dDb21tZW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFsbG93RHVldCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWxsb3dEdWV0J10gPSB0aGlzLmFsbG93RHVldDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbGxvd1N0aXRjaCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWxsb3dTdGl0Y2gnXSA9IHRoaXMuYWxsb3dTdGl0Y2g7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgWW91dHViZUN1c3RvbWl6YXRpb24gaW1wbGVtZW50cyBpLllvdXR1YmVDdXN0b21pemF0aW9uSW50ZXJmYWNlIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHByaXZhY3lTdGF0dXM6IGUuWW91dHViZUN1c3RvbWl6YXRpb25Qcml2YWN5U3RhdHVzO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogWW91dHViZUN1c3RvbWl6YXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBZb3V0dWJlQ3VzdG9taXphdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wcml2YWN5U3RhdHVzKSB7bS5wcml2YWN5U3RhdHVzID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Zb3V0dWJlQ3VzdG9taXphdGlvblByaXZhY3lTdGF0dXM+KGUuWW91dHViZUN1c3RvbWl6YXRpb25Qcml2YWN5U3RhdHVzLCBwcm90by5wcml2YWN5U3RhdHVzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuWW91dHViZUN1c3RvbWl6YXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJpdmFjeVN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJpdmFjeVN0YXR1cyddID0gdGhpcy5wcml2YWN5U3RhdHVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
687
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLXBvc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc29jaWFsX3Bvc3RzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL3NvY2lhbC1wb3N0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sTUFBTTtJQUlmLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDOUMsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEwQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUFD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KioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRob3IgaW1wbGVtZW50cyBpLkF1dGhvckludGVyZmFjZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlkOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBdXRob3Ige1xuICAgICAgICBsZXQgbSA9IG5ldyBBdXRob3IoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uaWQpIHttLmlkID0gcGFyc2VJbnQocHJvdG8uaWQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQXV0aG9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9nUG9zdEN1c3RvbWl6YXRpb24gaW1wbGVtZW50cyBpLkJsb2dQb3N0Q3VzdG9taXphdGlvbkludGVyZmFjZSB7XG4gICAgc2l0ZVR5cGU6IHN0cmluZztcbiAgICBhdXRob3I6IEF1dGhvcjtcbiAgICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdO1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQmxvZ1Bvc3RDdXN0b21pemF0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQmxvZ1Bvc3RDdXN0b21pemF0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmF1dGhvcikge20uYXV0aG9yID0gQXV0aG9yLmZyb21Qcm90byhwcm90by5hdXRob3IpO31cbiAgICAgICAgaWYgKHByb3RvLmNhdGVnb3JpZXMpIHttLmNhdGVnb3JpZXMgPSBwcm90by5jYXRlZ29yaWVzLm1hcChDYXRlZ29yeS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5CbG9nUG9zdEN1c3RvbWl6YXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXRlVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZVR5cGUnXSA9IHRoaXMuc2l0ZVR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXV0aG9yICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmF1dGhvciAhPT0gbnVsbCkge3RvUmV0dXJuWydhdXRob3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXV0aG9yID8gKHRoaXMuYXV0aG9yIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmF1dGhvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYXRlZ29yaWVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhdGVnb3JpZXMgIT09IG51bGwpIHt0b1JldHVyblsnY2F0ZWdvcmllcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jYXRlZ29yaWVzID8gKHRoaXMuY2F0ZWdvcmllcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jYXRlZ29yaWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhZ3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RhZ3MnXSA9IHRoaXMudGFnczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYWxsVG9BY3Rpb24gaW1wbGVtZW50cyBpLkNhbGxUb0FjdGlvbkludGVyZmFjZSB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgYWN0aW9uVHlwZTogZS5DYWxsVG9BY3Rpb25DYWxsVG9BY3Rpb25UeXBlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2FsbFRvQWN0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FsbFRvQWN0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFjdGlvblR5cGUpIHttLmFjdGlvblR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkNhbGxUb0FjdGlvbkNhbGxUb0FjdGlvblR5cGU+KGUuQ2FsbFRvQWN0aW9uQ2FsbFRvQWN0aW9uVHlwZSwgcHJvdG8uYWN0aW9uVHlwZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNhbGxUb0FjdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXJsJ10gPSB0aGlzLnVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25UeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY3Rpb25UeXBlJ10gPSB0aGlzLmFjdGlvblR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnkgaW1wbGVtZW50cyBpLkNhdGVnb3J5SW50ZXJmYWNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENhdGVnb3J5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2F0ZWdvcnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uaWQpIHttLmlkID0gcGFyc2VJbnQocHJvdG8uaWQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ2F0ZWdvcnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yIGltcGxlbWVudHMgaS5FcnJvckludGVyZmFjZSB7XG4gICAgcmVhc29uOiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEVycm9yIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRXJyb3IoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkVycm9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVhc29uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWFzb24nXSA9IHRoaXMucmVhc29uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhdGVnb3J5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYXRlZ29yeSddID0gdGhpcy5jYXRlZ29yeTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudCBpbXBsZW1lbnRzIGkuRXZlbnRJbnRlcmZhY2Uge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3RhcnREYXRldGltZTogRGF0ZTtcbiAgICBlbmREYXRldGltZTogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEV2ZW50IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRXZlbnQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnREYXRldGltZSkge20uc3RhcnREYXRldGltZSA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0RGF0ZXRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZERhdGV0aW1lKSB7bS5lbmREYXRldGltZSA9IG5ldyBEYXRlKHByb3RvLmVuZERhdGV0aW1lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXZlbnRJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnREYXRldGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydERhdGV0aW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0RGF0ZXRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnREYXRldGltZSA/ICh0aGlzLnN0YXJ0RGF0ZXRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnREYXRldGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmREYXRldGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbmREYXRldGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydlbmREYXRldGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmREYXRldGltZSA/ICh0aGlzLmVuZERhdGV0aW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVuZERhdGV0aW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1MUG9zdENhdGVnb3J5IGltcGxlbWVudHMgaS5NTFBvc3RDYXRlZ29yeUludGVyZmFjZSB7XG4gICAgaXNEcmFmdDogYm9vbGVhbjtcbiAgICBpc0hpZGRlbjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE1MUG9zdENhdGVnb3J5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTUxQb3N0Q2F0ZWdvcnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk1MUG9zdENhdGVnb3J5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNEcmFmdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNEcmFmdCddID0gdGhpcy5pc0RyYWZ0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzSGlkZGVuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc0hpZGRlbiddID0gdGhpcy5pc0hpZGRlbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZWRpYUVudHJ5IGltcGxlbWVudHMgaS5NZWRpYUVudHJ5SW50ZXJmYWNlIHtcbiAgICBtZWRpYUVudHJ5SWQ6IHN0cmluZztcbiAgICBtZWRpYVVybDogc3RyaW5nO1xuICAgIG1lZGlhVHlwZTogc3RyaW5nO1xuICAgIGNvbnRhaW5lcklkOiBzdHJpbmc7XG4gICAgbWV0YURhdGE6IE1ldGFEYXRhW107XG4gICAgbWVkaWFQYXRoOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBNZWRpYUVudHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTWVkaWFFbnRyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZXRhRGF0YSkge20ubWV0YURhdGEgPSBwcm90by5tZXRhRGF0YS5tYXAoTWV0YURhdGEuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTWVkaWFFbnRyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhRW50cnlJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVkaWFFbnRyeUlkJ10gPSB0aGlzLm1lZGlhRW50cnlJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVkaWFVcmwnXSA9IHRoaXMubWVkaWFVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaWFUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWRpYVR5cGUnXSA9IHRoaXMubWVkaWFUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRhaW5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb250YWluZXJJZCddID0gdGhpcy5jb250YWluZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZXRhRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZXRhRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZXRhRGF0YSA/ICh0aGlzLm1ldGFEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1ldGFEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhUGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVkaWFQYXRoJ10gPSB0aGlzLm1lZGlhUGF0aDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRhRGF0YSBpbXBsZW1lbnRzIGkuTWV0YURhdGFJbnRlcmZhY2Uge1xuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE1ldGFEYXRhIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTWV0YURhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk1ldGFEYXRhSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcGVydHlOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcm9wZXJ0eU5hbWUnXSA9IHRoaXMucHJvcGVydHlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BlcnR5VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Byb3BlcnR5VmFsdWUnXSA9IHRoaXMucHJvcGVydHlWYWx1ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3N0VGVtcGxhdGUgaW1wbGVtZW50cyBpLlBvc3RUZW1wbGF0ZUludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwSWQ6IHN0cmluZztcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBjcmVhdGVkOiBEYXRlO1xuICAgIHVwZGF0ZWQ6IERhdGU7XG4gICAgcG9zdFRleHQ6IHN0cmluZztcbiAgICBwb3N0RGF0ZVRpbWU6IERhdGU7XG4gICAgZ21iUG9zdEN1c3RvbWl6YXRpb246IHN0cmluZztcbiAgICBpbWFnZVVybDogc3RyaW5nO1xuICAgIGltYWdlUGF0aDogc3RyaW5nO1xuICAgIGltYWdlU2l6ZTogc3RyaW5nO1xuICAgIHByZXZpZXdzOiBzdHJpbmc7XG4gICAgb3B0aW9uczogc3RyaW5nW107XG4gICAgdmlkZW9Vcmw6IHN0cmluZztcbiAgICBtZWRpYUVudHJpZXM6IE1lZGlhRW50cnlbXTtcbiAgICBtZXRhRGF0YTogTWV0YURhdGFbXTtcbiAgICBwb3N0VHlwZTogZS5Qb3N0VHlwZTtcbiAgICB5b3V0dWJlQ3VzdG9taXphdGlvbjogWW91dHViZUN1c3RvbWl6YXRpb247XG4gICAgdGlrdG9rQ3VzdG9taXphdGlvbjogVGlrVG9rQ3VzdG9taXphdGlvbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBvc3RUZW1wbGF0ZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFBvc3RUZW1wbGF0ZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8udXBkYXRlZCkge20udXBkYXRlZCA9IG5ldyBEYXRlKHByb3RvLnVwZGF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnBvc3REYXRlVGltZSkge20ucG9zdERhdGVUaW1lID0gbmV3IERhdGUocHJvdG8ucG9zdERhdGVUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5tZWRpYUVudHJpZXMpIHttLm1lZGlhRW50cmllcyA9IHByb3RvLm1lZGlhRW50cmllcy5tYXAoTWVkaWFFbnRyeS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFEYXRhKSB7bS5tZXRhRGF0YSA9IHByb3RvLm1ldGFEYXRhLm1hcChNZXRhRGF0YS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBvc3RUeXBlKSB7bS5wb3N0VHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUG9zdFR5cGU+KGUuUG9zdFR5cGUsIHByb3RvLnBvc3RUeXBlKTt9XG4gICAgICAgIGlmIChwcm90by55b3V0dWJlQ3VzdG9taXphdGlvbikge20ueW91dHViZUN1c3RvbWl6YXRpb24gPSBZb3V0dWJlQ3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8ueW91dHViZUN1c3RvbWl6YXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLnRpa3Rva0N1c3RvbWl6YXRpb24pIHttLnRpa3Rva0N1c3RvbWl6YXRpb24gPSBUaWtUb2tDdXN0b21pemF0aW9uLmZyb21Qcm90byhwcm90by50aWt0b2tDdXN0b21pemF0aW9uKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUG9zdFRlbXBsYXRlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cElkJ10gPSB0aGlzLmFjY291bnRHcm91cElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlbXBsYXRlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RlbXBsYXRlSWQnXSA9IHRoaXMudGVtcGxhdGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlZCA/ICh0aGlzLmNyZWF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVwZGF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsndXBkYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51cGRhdGVkID8gKHRoaXMudXBkYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy51cGRhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VGV4dCddID0gdGhpcy5wb3N0VGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3N0RGF0ZVRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9zdERhdGVUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Bvc3REYXRlVGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb3N0RGF0ZVRpbWUgPyAodGhpcy5wb3N0RGF0ZVRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9zdERhdGVUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdtYlBvc3RDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydnbWJQb3N0Q3VzdG9taXphdGlvbiddID0gdGhpcy5nbWJQb3N0Q3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VVcmwnXSA9IHRoaXMuaW1hZ2VVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW1hZ2VQYXRoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbWFnZVBhdGgnXSA9IHRoaXMuaW1hZ2VQYXRoO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltYWdlU2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VTaXplJ10gPSB0aGlzLmltYWdlU2l6ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2aWV3cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJldmlld3MnXSA9IHRoaXMucHJldmlld3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3B0aW9ucyddID0gdGhpcy5vcHRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZpZGVvVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWRlb1VybCddID0gdGhpcy52aWRlb1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpYUVudHJpZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVkaWFFbnRyaWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZGlhRW50cmllcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWRpYUVudHJpZXMgPyAodGhpcy5tZWRpYUVudHJpZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVkaWFFbnRyaWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1ldGFEYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1ldGFEYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ21ldGFEYXRhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1ldGFEYXRhID8gKHRoaXMubWV0YURhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWV0YURhdGE7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUeXBlJ10gPSB0aGlzLnBvc3RUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3lvdXR1YmVDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnlvdXR1YmVDdXN0b21pemF0aW9uID8gKHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMueW91dHViZUN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aWt0b2tDdXN0b21pemF0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rpa3Rva0N1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiA/ICh0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTU0lEUG9zdFR5cGUgaW1wbGVtZW50cyBpLlNTSURQb3N0VHlwZUludGVyZmFjZSB7XG4gICAgc29jaWFsU2VydmljZUlkOiBzdHJpbmc7XG4gICAgcG9zdFR5cGU6IGUuUG9zdFR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTU0lEUG9zdFR5cGUge1xuICAgICAgICBsZXQgbSA9IG5ldyBTU0lEUG9zdFR5cGUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucG9zdFR5cGUpIHttLnBvc3RUeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Qb3N0VHlwZT4oZS5Qb3N0VHlwZSwgcHJvdG8ucG9zdFR5cGUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TU0lEUG9zdFR5cGVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxTZXJ2aWNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VJZCddID0gdGhpcy5zb2NpYWxTZXJ2aWNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUeXBlJ10gPSB0aGlzLnBvc3RUeXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlUG9zdFN0YXR1cyBpbXBsZW1lbnRzIGkuU2NoZWR1bGVQb3N0U3RhdHVzSW50ZXJmYWNlIHtcbiAgICBzb2NpYWxQb3N0SWQ6IHN0cmluZztcbiAgICBzb2NpYWxTZXJ2aWNlSWQ6IHN0cmluZztcbiAgICBzb2NpYWxTZXJ2aWNlTGFiZWw6IHN0cmluZztcbiAgICBlcnJvcjogRXJyb3I7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTY2hlZHVsZVBvc3RTdGF0dXMge1xuICAgICAgICBsZXQgbSA9IG5ldyBTY2hlZHVsZVBvc3RTdGF0dXMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZXJyb3IpIHttLmVycm9yID0gRXJyb3IuZnJvbVByb3RvKHByb3RvLmVycm9yKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2NoZWR1bGVQb3N0U3RhdHVzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxQb3N0SWQnXSA9IHRoaXMuc29jaWFsUG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvY2lhbFNlcnZpY2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc29jaWFsU2VydmljZUlkJ10gPSB0aGlzLnNvY2lhbFNlcnZpY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxTZXJ2aWNlTGFiZWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFNlcnZpY2VMYWJlbCddID0gdGhpcy5zb2NpYWxTZXJ2aWNlTGFiZWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXJyb3IgIT09IG51bGwpIHt0b1JldHVyblsnZXJyb3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXJyb3IgPyAodGhpcy5lcnJvciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lcnJvcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2NpYWxDYW1wYWlnbiBpbXBsZW1lbnRzIGkuU29jaWFsQ2FtcGFpZ25JbnRlcmZhY2Uge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU29jaWFsQ2FtcGFpZ24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb2NpYWxDYW1wYWlnbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsQ2FtcGFpZ25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvY2lhbFBvc3QgaW1wbGVtZW50cyBpLlNvY2lhbFBvc3RJbnRlcmZhY2Uge1xuICAgIGJ1c2luZXNzSWQ6IHN0cmluZztcbiAgICBzb2NpYWxQb3N0SWQ6IHN0cmluZztcbiAgICBwb3N0VGV4dDogc3RyaW5nO1xuICAgIHBvc3RlZDogRGF0ZTtcbiAgICBpc0Vycm9yOiBib29sZWFuO1xuICAgIGRlbGV0aW9uU3RhdHVzOiBlLlNvY2lhbFBvc3REZWxldGlvblN0YXR1cztcbiAgICBzZXJ2aWNlOiBlLlNvY2lhbFBvc3RTZXJ2aWNlO1xuICAgIHBlcm1hbGluazogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgcHJvZmlsZVVybDogc3RyaW5nO1xuICAgIHByb2ZpbGVJbWFnZVVybDogc3RyaW5nO1xuICAgIHNjaGVkdWxlZDogRGF0ZTtcbiAgICBzdGF0dXM6IGUuUG9zdGluZ1N0YXR1cztcbiAgICBpbWFnZVVybDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhcmVudElkOiBzdHJpbmc7XG4gICAgc29jaWFsU2VydmljZUlkOiBzdHJpbmc7XG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIGNhbGxUb0FjdGlvbjogQ2FsbFRvQWN0aW9uO1xuICAgIHZpZGVvVXJsOiBzdHJpbmc7XG4gICAgZXJyb3I6IEVycm9yO1xuICAgIGltYWdlVXJsczogc3RyaW5nW107XG4gICAgbGlua1ByZXZpZXdJbWFnZVVybDogc3RyaW5nO1xuICAgIGJyYW5kSWQ6IHN0cmluZztcbiAgICBtdWx0aWxvY2F0aW9uUG9zdElkOiBzdHJpbmc7XG4gICAgcG9zdFR5cGU6IGUuUG9zdFR5cGU7XG4gICAgbWVkaWFFbnRyaWVzOiBNZWRpYUVudHJ5W107XG4gICAgbWV0YURhdGE6IE1ldGFEYXRhW107XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB5b3V0dWJlQ3VzdG9taXphdGlvbjogWW91dHViZUN1c3RvbWl6YXRpb247XG4gICAgdGlrdG9rQ3VzdG9taXphdGlvbjogVGlrVG9rQ3VzdG9taXphdGlvbjtcbiAgICBibG9nUG9zdEN1c3RvbWl6YXRpb246IEJsb2dQb3N0Q3VzdG9taXphdGlvbjtcbiAgICBjYW1wYWlnbjogU29jaWFsQ2FtcGFpZ247XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWxQb3N0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU29jaWFsUG9zdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wb3N0ZWQpIHttLnBvc3RlZCA9IG5ldyBEYXRlKHByb3RvLnBvc3RlZCk7fVxuICAgICAgICBpZiAocHJvdG8uZGVsZXRpb25TdGF0dXMpIHttLmRlbGV0aW9uU3RhdHVzID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Tb2NpYWxQb3N0RGVsZXRpb25TdGF0dXM+KGUuU29jaWFsUG9zdERlbGV0aW9uU3RhdHVzLCBwcm90by5kZWxldGlvblN0YXR1cyk7fVxuICAgICAgICBpZiAocHJvdG8uc2VydmljZSkge20uc2VydmljZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuU29jaWFsUG9zdFNlcnZpY2U+KGUuU29jaWFsUG9zdFNlcnZpY2UsIHByb3RvLnNlcnZpY2UpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by5zY2hlZHVsZWQpIHttLnNjaGVkdWxlZCA9IG5ldyBEYXRlKHByb3RvLnNjaGVkdWxlZCk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhdHVzKSB7bS5zdGF0dXMgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlBvc3RpbmdTdGF0dXM+KGUuUG9zdGluZ1N0YXR1cywgcHJvdG8uc3RhdHVzKTt9XG4gICAgICAgIGlmIChwcm90by5ldmVudCkge20uZXZlbnQgPSBFdmVudC5mcm9tUHJvdG8ocHJvdG8uZXZlbnQpO31cbiAgICAgICAgaWYgKHByb3RvLmNhbGxUb0FjdGlvbikge20uY2FsbFRvQWN0aW9uID0gQ2FsbFRvQWN0aW9uLmZyb21Qcm90byhwcm90by5jYWxsVG9BY3Rpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmVycm9yKSB7bS5lcnJvciA9IEVycm9yLmZyb21Qcm90byhwcm90by5lcnJvcik7fVxuICAgICAgICBpZiAocHJvdG8ucG9zdFR5cGUpIHttLnBvc3RUeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Qb3N0VHlwZT4oZS5Qb3N0VHlwZSwgcHJvdG8ucG9zdFR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLm1lZGlhRW50cmllcykge20ubWVkaWFFbnRyaWVzID0gcHJvdG8ubWVkaWFFbnRyaWVzLm1hcChNZWRpYUVudHJ5LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8ubWV0YURhdGEpIHttLm1ldGFEYXRhID0gcHJvdG8ubWV0YURhdGEubWFwKE1ldGFEYXRhLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8ueW91dHViZUN1c3RvbWl6YXRpb24pIHttLnlvdXR1YmVDdXN0b21pemF0aW9uID0gWW91dHViZUN1c3RvbWl6YXRpb24uZnJvbVByb3RvKHByb3RvLnlvdXR1YmVDdXN0b21pemF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by50aWt0b2tDdXN0b21pemF0aW9uKSB7bS50aWt0b2tDdXN0b21pemF0aW9uID0gVGlrVG9rQ3VzdG9taXphdGlvbi5mcm9tUHJvdG8ocHJvdG8udGlrdG9rQ3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8uYmxvZ1Bvc3RDdXN0b21pemF0aW9uKSB7bS5ibG9nUG9zdEN1c3RvbWl6YXRpb24gPSBCbG9nUG9zdEN1c3RvbWl6YXRpb24uZnJvbVByb3RvKHByb3RvLmJsb2dQb3N0Q3VzdG9taXphdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8uY2FtcGFpZ24pIHttLmNhbXBhaWduID0gU29jaWFsQ2FtcGFpZ24uZnJvbVByb3RvKHByb3RvLmNhbXBhaWduKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsUG9zdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1c2luZXNzSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1c2luZXNzSWQnXSA9IHRoaXMuYnVzaW5lc3NJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWxQb3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NvY2lhbFBvc3RJZCddID0gdGhpcy5zb2NpYWxQb3N0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFRleHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUZXh0J10gPSB0aGlzLnBvc3RUZXh0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wb3N0ZWQgIT09IG51bGwpIHt0b1JldHVyblsncG9zdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBvc3RlZCA/ICh0aGlzLnBvc3RlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wb3N0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNFcnJvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNFcnJvciddID0gdGhpcy5pc0Vycm9yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlbGV0aW9uU3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZWxldGlvblN0YXR1cyddID0gdGhpcy5kZWxldGlvblN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXJ2aWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZXJ2aWNlJ10gPSB0aGlzLnNlcnZpY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGVybWFsaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwZXJtYWxpbmsnXSA9IHRoaXMucGVybWFsaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZmlsZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvZmlsZVVybCddID0gdGhpcy5wcm9maWxlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb2ZpbGVJbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvZmlsZUltYWdlVXJsJ10gPSB0aGlzLnByb2ZpbGVJbWFnZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlZHVsZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2NoZWR1bGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NjaGVkdWxlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zY2hlZHVsZWQgPyAodGhpcy5zY2hlZHVsZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2NoZWR1bGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzJ10gPSB0aGlzLnN0YXR1czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VVcmwnXSA9IHRoaXMuaW1hZ2VVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VybmFtZSddID0gdGhpcy51c2VybmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJlbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFyZW50SWQnXSA9IHRoaXMucGFyZW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsU2VydmljZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb2NpYWxTZXJ2aWNlSWQnXSA9IHRoaXMuc29jaWFsU2VydmljZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmV2ZW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2V2ZW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmV2ZW50ID8gKHRoaXMuZXZlbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXZlbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsbFRvQWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhbGxUb0FjdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjYWxsVG9BY3Rpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY2FsbFRvQWN0aW9uID8gKHRoaXMuY2FsbFRvQWN0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNhbGxUb0FjdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlkZW9VcmwnXSA9IHRoaXMudmlkZW9Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXJyb3IgIT09IG51bGwpIHt0b1JldHVyblsnZXJyb3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXJyb3IgPyAodGhpcy5lcnJvciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5lcnJvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ltYWdlVXJscyddID0gdGhpcy5pbWFnZVVybHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlua1ByZXZpZXdJbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlua1ByZXZpZXdJbWFnZVVybCddID0gdGhpcy5saW5rUHJldmlld0ltYWdlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyYW5kSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JyYW5kSWQnXSA9IHRoaXMuYnJhbmRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tdWx0aWxvY2F0aW9uUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtdWx0aWxvY2F0aW9uUG9zdElkJ10gPSB0aGlzLm11bHRpbG9jYXRpb25Qb3N0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zdFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bvc3RUeXBlJ10gPSB0aGlzLnBvc3RUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZGlhRW50cmllcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWRpYUVudHJpZXMgIT09IG51bGwpIHt0b1JldHVyblsnbWVkaWFFbnRyaWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZGlhRW50cmllcyA/ICh0aGlzLm1lZGlhRW50cmllcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZWRpYUVudHJpZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YURhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YURhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YURhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YURhdGEgPyAodGhpcy5tZXRhRGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhRGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsneW91dHViZUN1c3RvbWl6YXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMueW91dHViZUN1c3RvbWl6YXRpb24gPyAodGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy55b3V0dWJlQ3VzdG9taXphdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aWt0b2tDdXN0b21pemF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpa3Rva0N1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsndGlrdG9rQ3VzdG9taXphdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aWt0b2tDdXN0b21pemF0aW9uID8gKHRoaXMudGlrdG9rQ3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aWt0b2tDdXN0b21pemF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJsb2dQb3N0Q3VzdG9taXphdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnYmxvZ1Bvc3RDdXN0b21pemF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmJsb2dQb3N0Q3VzdG9taXphdGlvbiA/ICh0aGlzLmJsb2dQb3N0Q3VzdG9taXphdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ibG9nUG9zdEN1c3RvbWl6YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FtcGFpZ24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY2FtcGFpZ24gIT09IG51bGwpIHt0b1JldHVyblsnY2FtcGFpZ24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY2FtcGFpZ24gPyAodGhpcy5jYW1wYWlnbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jYW1wYWlnbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2NpYWxQb3N0RGF0YSBpbXBsZW1lbnRzIGkuU29jaWFsUG9zdERhdGFJbnRlcmZhY2Uge1xuICAgIHBvc3RUZXh0OiBzdHJpbmc7XG4gICAgaW1hZ2VVcmw6IHN0cmluZztcbiAgICBzY2hlZHVsZUZvcjogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNvY2lhbFBvc3REYXRhIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU29jaWFsUG9zdERhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc2NoZWR1bGVGb3IpIHttLnNjaGVkdWxlRm9yID0gbmV3IERhdGUocHJvdG8uc2NoZWR1bGVGb3IpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Tb2NpYWxQb3N0RGF0YUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc3RUZXh0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3N0VGV4dCddID0gdGhpcy5wb3N0VGV4dDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbWFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW1hZ2VVcmwnXSA9IHRoaXMuaW1hZ2VVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2NoZWR1bGVGb3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2NoZWR1bGVGb3IgIT09IG51bGwpIHt0b1JldHVyblsnc2NoZWR1bGVGb3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc2NoZWR1bGVGb3IgPyAodGhpcy5zY2hlZHVsZUZvciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zY2hlZHVsZUZvcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUaWtUb2tDdXN0b21pemF0aW9uIGltcGxlbWVudHMgaS5UaWtUb2tDdXN0b21pemF0aW9uSW50ZXJmYWNlIHtcbiAgICBhbGxvd0NvbW1lbnQ6IGJvb2xlYW47XG4gICAgYWxsb3dEdWV0OiBib29sZWFuO1xuICAgIGFsbG93U3RpdGNoOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVGlrVG9rQ3VzdG9taXphdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IFRpa1Rva0N1c3RvbWl6YXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlRpa1Rva0N1c3RvbWl6YXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbGxvd0NvbW1lbnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FsbG93Q29tbWVudCddID0gdGhpcy5hbGxvd0NvbW1lbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWxsb3dEdWV0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbGxvd0R1ZXQnXSA9IHRoaXMuYWxsb3dEdWV0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFsbG93U3RpdGNoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbGxvd1N0aXRjaCddID0gdGhpcy5hbGxvd1N0aXRjaDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBZb3V0dWJlQ3VzdG9taXphdGlvbiBpbXBsZW1lbnRzIGkuWW91dHViZUN1c3RvbWl6YXRpb25JbnRlcmZhY2Uge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgcHJpdmFjeVN0YXR1czogZS5Zb3V0dWJlQ3VzdG9taXphdGlvblByaXZhY3lTdGF0dXM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBZb3V0dWJlQ3VzdG9taXphdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IFlvdXR1YmVDdXN0b21pemF0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnByaXZhY3lTdGF0dXMpIHttLnByaXZhY3lTdGF0dXMgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLllvdXR1YmVDdXN0b21pemF0aW9uUHJpdmFjeVN0YXR1cz4oZS5Zb3V0dWJlQ3VzdG9taXphdGlvblByaXZhY3lTdGF0dXMsIHByb3RvLnByaXZhY3lTdGF0dXMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Zb3V0dWJlQ3VzdG9taXphdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcml2YWN5U3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcml2YWN5U3RhdHVzJ10gPSB0aGlzLnByaXZhY3lTdGF0dXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=