@csmart/ngc-smart-core 0.7.90 → 0.7.91
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.
- package/bundles/csmart-ngc-smart-core.umd.js +14 -8
- package/bundles/csmart-ngc-smart-core.umd.js.map +1 -1
- package/bundles/csmart-ngc-smart-core.umd.min.js +1 -1
- package/bundles/csmart-ngc-smart-core.umd.min.js.map +1 -1
- package/esm2015/lib/smart-auth/smart-auth.service.js +5 -6
- package/esm2015/lib/smart-offender-header/smart-offender-header.component.js +2 -3
- package/esm2015/lib/smart-storage/xdm.service.js +6 -2
- package/esm5/lib/smart-auth/smart-auth.service.js +5 -6
- package/esm5/lib/smart-offender-header/smart-offender-header.component.js +2 -3
- package/esm5/lib/smart-storage/xdm.service.js +8 -2
- package/fesm2015/csmart-ngc-smart-core.js +10 -8
- package/fesm2015/csmart-ngc-smart-core.js.map +1 -1
- package/fesm5/csmart-ngc-smart-core.js +12 -8
- package/fesm5/csmart-ngc-smart-core.js.map +1 -1
- package/lib/smart-storage/xdm.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -333,11 +333,10 @@ export class SmartAuthService {
|
|
|
333
333
|
* @return {?}
|
|
334
334
|
*/
|
|
335
335
|
(p) => {
|
|
336
|
-
return (p.appModuleId === accessControlConfig.appModuleId
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
p.assignmentStaffRelationId === assignmentStaffRelationId));
|
|
336
|
+
return (p.appModuleId === accessControlConfig.appModuleId &&
|
|
337
|
+
p.resource === resource &&
|
|
338
|
+
(!roleId || p.roleId === roleId) &&
|
|
339
|
+
p.assignmentStaffRelationId === assignmentStaffRelationId);
|
|
341
340
|
}));
|
|
342
341
|
if (permission) {
|
|
343
342
|
if (accessType === 'read') {
|
|
@@ -690,4 +689,4 @@ if (false) {
|
|
|
690
689
|
*/
|
|
691
690
|
SmartAuthService.prototype.smartDomainFormatUrl;
|
|
692
691
|
}
|
|
693
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBUTFELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7O0lBSTNCLFlBQ1UsSUFBZ0IsRUFDaEIsWUFBeUIsRUFDekIsVUFBc0IsRUFDVSxtQkFBbUIsRUFDdEIsb0JBQTRCO1FBSnpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7SUFDaEUsQ0FBQzs7OztJQUVHLGFBQWE7UUFDbEIsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMs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QUUsRUFBRTtZQUNiLElBQUksU0FBUyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQ1QsaURBQWlELEVBQ2pELE1BQU0sQ0FDUCxDQUFDO2FBQ0g7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtnQkFDeEQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQztnQkFDYix5Q0FBeUM7YUFDMUM7UUFDSCxDQUFDLEVBQUMsRUFDRixVQUFVOzs7O1FBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUM5QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs7O1lBdGhCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFyQlEsVUFBVTtZQUdWLFdBQVc7WUFXWCxVQUFVOzRDQWdCZCxNQUFNLFNBQUMsc0JBQXNCO3lDQUM3QixNQUFNLFNBQUMsbUJBQW1COzs7OztJQVI3QixzQ0FBdUI7O0lBQ3ZCLDRDQUFtQzs7Ozs7SUFHakMsZ0NBQXdCOzs7OztJQUN4Qix3Q0FBaUM7Ozs7O0lBQ2pDLHNDQUE4Qjs7Ozs7SUFDOUIsK0NBQTJEOzs7OztJQUMzRCxnREFBaUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTG9naW5TdGFmZixcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIFNNQVJUX0RBVEFfU0VSVklDRV9VUkwsXHJcbiAgU01BUlRfRE9NQUlOX0ZPUk1BVCxcclxuICBSb2xlLFxyXG4gIFBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcgfSBmcm9tICcuL3NtYXJ0LWFjY2Vzcy1jb250cm9sLWNvbmZpZyc7XHJcbmltcG9ydCB7IG51bGxTYWZlSXNFcXVpdmFsZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuLy8gaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAncXVlcnlzdHJpbmcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0QXV0aFNlcnZpY2Uge1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RBVEFfU0VSVklDRV9VUkwpIHByaXZhdGUgc21hcnREYXRhU2VydmljZVVybCxcclxuICAgIEBJbmplY3QoU01BUlRfRE9NQUlOX0ZPUk1BVCkgcHJpdmF0ZSBzbWFydERvbWFpbkZvcm1hdFVybDogc3RyaW5nLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGdldExvZ2luU3RhZmYoKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTbWFydEF1dGhTZXJ2aWNlIC0gZ2V0TG9naW5TdGFmZigpJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRGV2TW9kZSAmJiB0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgaWYgKHRoaXMubG9naW5TdGFmZi5zdGFmZklkKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBpbnRlcm5hbCBpbnN0YW5jZSBpbiBzZXJ2aWNlJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9naW5TdGFmZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb20odGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzdG9yZWRSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoc3RvcmVkUmVzdWx0ICYmIHN0b3JlZFJlc3VsdC5zdGFmZklkKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBmcm9tIHNlc3Npb24uJyxcclxuICAgICAgICAgICAgICBzdG9yZWRSZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBzdG9yZWRSZXN1bHQ7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoc3RvcmVkUmVzdWx0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQudXNlck5hbWUpIHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGdldExvZ2luU3RhZmYoKTogZ2V0IHVzaW5nIHByZXNldCB1c2VyIG5hbWUnLFxyXG4gICAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHN0b3JlZFJlc3VsdC51c2VyTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJOYW1lID0gdGhpcy5hdXRoblNlcnZpY2UuZ2V0QWNjb3VudCgpLnVzZXJOYW1lO1xyXG4gICAgICAgICAgY29uc3Qgc3RhZmZOYW1lID0gdXNlck5hbWUuc3Vic3RyaW5nKDAsIHVzZXJOYW1lLmluZGV4T2YoJ0AnKSk7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBsb2dpbkxvZ2luU3RhZmYoKTogZ2V0IHVzaW5nIGxvZ2luIHN0YWZmIG5hbWUgJyxcclxuICAgICAgICAgICAgICBzdGFmZk5hbWUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFmZihzdGFmZk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZWFtVXJsKGFwcDogc3RyaW5nLCBhZnRlckhhc2g6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApICsgYWZ0ZXJIYXNoO1xyXG4gIH1cclxuICBwcml2YXRlIGlzU2FtZUhvc3QodXJsLCBhcHApIHtcclxuICAgIHJldHVybiB0aGlzLnNtYXJ0RG9tYWluRm9ybWF0VXJsLnJlcGxhY2UoJyR7QVBQfScsIGFwcCkgPT09IHVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWRpcmVjdFRvVGVhbShsb2dpblN0YWZmOiBMb2dpblN0YWZmKSB7XHJcbiAgICBpZiAobG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoKHJvbGUpID0+IHJvbGUucm9sZUlkID09PSAnRVVVU1BDJykgPiAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAnaW52ZXN0aWdhdGlvbicpKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmdldFRlYW1VcmwoJ2ludmVzdGlnYXRpb24nLCAnL2Fzc2lnbm1lbnQnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgbG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHJvbGUpID0+IHJvbGUucm9sZUlkLnN1YnN0cmluZygwLCAzKSA9PT0gJ1JTQycsXHJcbiAgICAgICkgPiAtMVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc1NhbWVIb3N0KHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sICdyc2MnKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdyc2MnLCAnL29mZmVuZGVyLWxpc3QnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgaWYgKHNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgLy8gaWYgKCFzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVsYXRpb24gPSBhd2FpdCB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWQsXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHJlbGF0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcik7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMueGRtU2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgdGhpcy5hdXRoblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0UGVybWlzc2lvbihcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICApIHtcclxuICAgIGlmICghdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGF3YWl0IHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucztcclxuICAgIGNvbnN0IHJlc291cmNlID0gcm91dGUudXJsWzBdLnBhdGg7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gYXdhaXQgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVsYXRpb24gPSBhd2FpdCB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKHJlbGF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIodGhpcy5zZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJcclxuICAgICAgLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbY2xhc3NePVwic2FjLVwiXScpO1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC9ec2FjLShcXFMrKS0oXFxTKykkL2k7XHJcblxyXG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgaGlkZTtcclxuICAgICAgbGV0IGRpc2FibGU7XHJcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYy5tYXRjaChwYXR0ZXJuKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzKTtcclxuICAgICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZCA9IHJlc3VsdHNbMV0gPyByZXN1bHRzWzFdLnRvVXBwZXJDYXNlKCkgOiBudWxsO1xyXG4gICAgICAgICAgY29uc3QgcmlnaHQgPSByZXN1bHRzWzJdO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1swXSk7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzFdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMl0pO1xyXG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoZnVuY3Rpb24gKHApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAucmVzb3VyY2UgPT09IHJlc291cmNlICYmXHJcbiAgICAgICAgICAgICAgcC5yb2xlSWQgPT09IHJvbGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9PT0gYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByZXNvdXJjZTogJywgcmVzb3VyY2UpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhcHBNb2R1bGVJZDogJywgYXBwTW9kdWxlSWQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByb2xlSWQ6ICcsIHJvbGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhc3NpZ25tZW50IHJlbGF0aW9uOiAnLFxyXG4gICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgTWF0Y2hlZCBwZXJtaXNzaW9uOiAnLCBwZXJtaXNzaW9uKTtcclxuXHJcbiAgICAgICAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBpZiAocmlnaHQgPT09ICdyZWFkJykge1xyXG4gICAgICAgICAgICAgIGlmICghcGVybWlzc2lvbi5yZWFkRmxhZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICd1cGRhdGUnICYmICFwZXJtaXNzaW9uLnVwZGF0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZGVsZXRlJyAmJiAhcGVybWlzc2lvbi5kZWxldGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdjbG9zZScgJiYgIXBlcm1pc3Npb24uY2xvc2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2V4cHVuZ2UnICYmICFwZXJtaXNzaW9uLmV4cHVuZ2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ2hpZGU6ICcsIGhpZGUpO1xyXG4gICAgICBjb25zb2xlLmxvZygnZGlzYWJsZTogJywgZGlzYWJsZSk7XHJcbiAgICAgIGlmIChoaWRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUh0bWxFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1Blcm1pc3Npb24oYWNjZXNzQ29udHJvbENvbmZpZzogU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnKSB7XHJcbiAgICBjb25zdCBzZWxEYXRhID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhO1xyXG4gICAgdGhpcy5sb2dpblN0YWZmID0gc2VsRGF0YS5sb2dpblN0YWZmO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsRGF0YS5zZWxlY3RlZE9mZmVuZGVyO1xyXG5cclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zO1xyXG4gICAgY29uc3QgcmVzb3VyY2UgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLnVybFswXS5wYXRoO1xyXG4gICAgY29uc3Qgcm9sZUlkID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb2xlSWRcclxuICAgICAgPyBhY2Nlc3NDb250cm9sQ29uZmlnLnJvbGVJZC50b1VwcGVyQ2FzZSgpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFjY2Vzc1R5cGUgPSBhY2Nlc3NDb250cm9sQ29uZmlnLmFjY2Vzc1R5cGU7XHJcbiAgICBjb25zdCBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gIXRoaXMuc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICA/ICdOL0EnXHJcbiAgICAgIDogdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoKHApID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFjY2Vzc0NvbnRyb2xDb25maWcuYXBwTW9kdWxlSWRcclxuICAgICAgICAgICYmIHAucmVzb3VyY2UgPT09IHJlc291cmNlXHJcbiAgICAgICAgICAmJiAoIXJvbGVJZCB8fCBwLnJvbGVJZCA9PT0gcm9sZUlkKVxyXG4gICAgICAgICAgJiYgKHAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9PT0gJ04vQScgfHxcclxuICAgICAgICBwLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPT09IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2RlbGV0ZScgJiYgIXBlcm1pc3Npb24uZGVsZXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdleHB1bmdlJyAmJiAhcGVybWlzc2lvbi5leHB1bmdlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwRmVhdHVyZUFjdGl2YXRlKFxyXG4gICAgbG9naW5TdGFmZjogTG9naW5TdGFmZixcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkID0gbnVsbCxcclxuICApIHtcclxuICAgIC8vIGlmICghdGhpcy5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgYXBwTW9kdWxlSWQpKSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuaGFzQXBwRmVhdHVyZVBlcm1pc3Npb24oXHJcbiAgICAgIGxvZ2luU3RhZmYucGVybWlzc2lvbnMsXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGFwcE1vZHVsZUlkLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBpc0F1dGhFbmFibGUocm9sZXM6IFJvbGVbXSwgYXBwTW9kdWxlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHJvbGVzICYmIHJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgcmV0dXJuIHJvbGVzLm1hcChyID0+IHIucm9sZUlkKS5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMSB8fCBhcHBNb2R1bGVJZCA9PT0gJ1JSJztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSxcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoYXBwTW9kdWxlSWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSAmJiBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCxcclxuICAgICAgICAgICkgPiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLmZpbmRJbmRleCgocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeHRlcm5hbFJvbGUocm9sZUlkKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGVJZCkge1xyXG4gICAgICBjYXNlICdFVURUTCc6XHJcbiAgICAgIGNhc2UgJ0VVRFVTTSc6XHJcbiAgICAgIGNhc2UgJ0VVSkRHJzpcclxuICAgICAgY2FzZSAnRVVNUEQnOlxyXG4gICAgICBjYXNlICdFVVNPVFYnOlxyXG4gICAgICBjYXNlICdFVVVTQTInOlxyXG4gICAgICBjYXNlICdFVVVTQU8nOlxyXG4gICAgICBjYXNlICdFVVVTUEMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnRha2VSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnT1BBJzpcclxuICAgICAgY2FzZSAnT1BTJzpcclxuICAgICAgY2FzZSAnU09QUyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAnc3R5bGUnLFxyXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzOiBub25lO2N1cnNvcjogbm90LWFsbG93ZWQ7JyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICctMScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICdoaWRkZW4nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lOycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZih1c2VyTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZpbmR2U3RhZmZzKGlucHV0OiB7d2hlcmU6IHt1c2VyTmFtZTogXCIke3VzZXJOYW1lfVwiLCBhY3RpdmVGbGFnOiB0cnVlfX0pIHtcclxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBzdGFmZklkXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICBwaG9uZVxyXG4gICAgICAgICAgICAgICAgICBlbWFpbFxyXG4gICAgICAgICAgICAgICAgICByb2xlcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHtcclxuICAgICAgICAgICAgICAgICAgICByb2xlSWRcclxuICAgICAgICAgICAgICAgICAgICBhcHBNb2R1bGVJZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYWRGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHJlb3BlbkZsYWdcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBleHB1bmdlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VBcGlGaWVsZE5hbWVcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZsYWdcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWA7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KHRoaXMuc21hcnREYXRhU2VydmljZVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgZ2V0U3RhZmYoKSBmcm9tIHNlcnZpY2UgJywgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhLmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICBzdGFmZklkOiBudW1iZXIsXHJcbiAgICBvZmZlbmRlcklkOiBudW1iZXIsXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zKGlucHV0OiB7d2hlcmU6IHtzdGFmZklkOiAke3N0YWZmSWR9LCBvZmZlbmRlcklkOiAke29mZmVuZGVySWR9fX0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um9sZVBlcm1pc3Npb25zKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJlc291cmNlOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICBxdWVyeSBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3Rze1xyXG4gICAgICAgICAgICBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKGlucHV0OiB7d2hlcmU6IHthcHBNb2R1bGVJZDogJHthcHBNb2R1bGVJZH0sIHJlc291cmNlOiAke3Jlc291cmNlfX19KXtcclxuICAgICAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKCkgZnJvbSBzZXJ2aWNlICcsXHJcbiAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLmZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMudG90YWxDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHJldHVybiB0aHJvd0Vycm9yKCdObyBhY2Nlc3MgcmlnaHQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
692
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBUTFELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7O0lBSTNCLFlBQ1UsSUFBZ0IsRUFDaEIsWUFBeUIsRUFDekIsVUFBc0IsRUFDVSxtQkFBbUIsRUFDdEIsb0JBQTRCO1FBSnpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7SUFDaEUsQ0FBQzs7OztJQUVHLGFBQWE7UUFDbEIsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMs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R0FBRyxDQUNULGlEQUFpRCxFQUNqRCxNQUFNLENBQ1AsQ0FBQzthQUNIO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7Z0JBQ2IseUNBQXlDO2FBQzFDO1FBQ0gsQ0FBQyxFQUFDLEVBQ0YsVUFBVTs7OztRQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OztZQXRoQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBckJRLFVBQVU7WUFHVixXQUFXO1lBV1gsVUFBVTs0Q0FnQmQsTUFBTSxTQUFDLHNCQUFzQjt5Q0FDN0IsTUFBTSxTQUFDLG1CQUFtQjs7Ozs7SUFSN0Isc0NBQXVCOztJQUN2Qiw0Q0FBbUM7Ozs7O0lBR2pDLGdDQUF3Qjs7Ozs7SUFDeEIsd0NBQWlDOzs7OztJQUNqQyxzQ0FBOEI7Ozs7O0lBQzlCLCtDQUEyRDs7Ozs7SUFDM0QsZ0RBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGZyb20sIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gIExvZ2luU3RhZmYsXHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG4gIFNNQVJUX0RPTUFJTl9GT1JNQVQsXHJcbiAgUm9sZSxcclxuICBQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3hkbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnIH0gZnJvbSAnLi9zbWFydC1hY2Nlc3MtY29udHJvbC1jb25maWcnO1xyXG5pbXBvcnQgeyBudWxsU2FmZUlzRXF1aXZhbGVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcbi8vIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEF1dGhTZXJ2aWNlIHtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RPTUFJTl9GT1JNQVQpIHByaXZhdGUgc21hcnREb21haW5Gb3JtYXRVcmw6IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2dpblN0YWZmKCk6IE9ic2VydmFibGU8TG9naW5TdGFmZj4ge1xyXG4gICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnU21hcnRBdXRoU2VydmljZSAtIGdldExvZ2luU3RhZmYoKScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0Rldk1vZGUgJiYgdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgaW50ZXJuYWwgaW5zdGFuY2UgaW4gc2VydmljZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih0aGlzLmxvZ2luU3RhZmYpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgdXNpbmcgcHJlc2V0IHVzZXIgbmFtZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCkpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoc3RvcmVkUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQuc3RhZmZJZCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgZnJvbSBzZXNzaW9uLicsXHJcbiAgICAgICAgICAgICAgc3RvcmVkUmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gc3RvcmVkUmVzdWx0O1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHN0b3JlZFJlc3VsdCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdG9yZWRSZXN1bHQgJiYgc3RvcmVkUmVzdWx0LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFmZihzdG9yZWRSZXN1bHQudXNlck5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB1c2VyTmFtZSA9IHRoaXMuYXV0aG5TZXJ2aWNlLmdldEFjY291bnQoKS51c2VyTmFtZTtcclxuICAgICAgICAgIGNvbnN0IHN0YWZmTmFtZSA9IHVzZXJOYW1lLnN1YnN0cmluZygwLCB1c2VyTmFtZS5pbmRleE9mKCdAJykpO1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgbG9naW5Mb2dpblN0YWZmKCk6IGdldCB1c2luZyBsb2dpbiBzdGFmZiBuYW1lICcsXHJcbiAgICAgICAgICAgICAgc3RhZmZOYW1lLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYoc3RhZmZOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGVhbVVybChhcHA6IHN0cmluZywgYWZ0ZXJIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc21hcnREb21haW5Gb3JtYXRVcmwucmVwbGFjZSgnJHtBUFB9JywgYXBwKSArIGFmdGVySGFzaDtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1NhbWVIb3N0KHVybCwgYXBwKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApID09PSB1cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVkaXJlY3RUb1RlYW0obG9naW5TdGFmZjogTG9naW5TdGFmZikge1xyXG4gICAgaWYgKGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KChyb2xlKSA9PiByb2xlLnJvbGVJZCA9PT0gJ0VVVVNQQycpID4gLTEpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzU2FtZUhvc3Qod2luZG93LmxvY2F0aW9uLm9yaWdpbiwgJ2ludmVzdGlnYXRpb24nKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdpbnZlc3RpZ2F0aW9uJywgJy9hc3NpZ25tZW50Jyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChyb2xlKSA9PiByb2xlLnJvbGVJZC5zdWJzdHJpbmcoMCwgMykgPT09ICdSU0MnLFxyXG4gICAgICApID4gLTFcclxuICAgICkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAncnNjJykpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2V0VGVhbVVybCgncnNjJywgJy9vZmZlbmRlci1saXN0Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgIGlmIChzZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IHJlbGF0aW9uID0gYXdhaXQgdGhpcy5nZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmLnN0YWZmSWQsXHJcbiAgICAgICAgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAnTk9BU1NJR04nO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIHRoaXMueGRtU2VydmljZS5zZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICB0aGlzLmF1dGhuU2VydmljZS5sb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRQZXJtaXNzaW9uKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICkge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgdGhpcy5sb2dpblN0YWZmID0gYXdhaXQgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zO1xyXG4gICAgY29uc3QgcmVzb3VyY2UgPSByb3V0ZS51cmxbMF0ucGF0aDtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBhd2FpdCB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgLy8gaWYgKCF0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCkge1xyXG4gICAgICBjb25zdCByZWxhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0U3RhZmZPZmZlbmRlclJlbGF0aW9uKFxyXG4gICAgICAgIHRoaXMubG9naW5TdGFmZi5zdGFmZklkLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHJlbGF0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gJ05PQVNTSUdOJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnhkbVNlcnZpY2Uuc2V0U2VsZWN0ZWRPZmZlbmRlcih0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHRoaXMuc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjbGFzc149XCJzYWMtXCJdJyk7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gL15zYWMtKFxcUyspLShcXFMrKSQvaTtcclxuXHJcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBoaWRlO1xyXG4gICAgICBsZXQgZGlzYWJsZTtcclxuICAgICAgZWxlbWVudC5jbGFzc0xpc3QuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBjLm1hdGNoKHBhdHRlcm4pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xyXG4gICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZUlkID0gcmVzdWx0c1sxXSA/IHJlc3VsdHNbMV0udG9VcHBlckNhc2UoKSA6IG51bGw7XHJcbiAgICAgICAgICBjb25zdCByaWdodCA9IHJlc3VsdHNbMl07XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzBdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMV0pO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1syXSk7XHJcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gcGVybWlzc2lvbnMuZmluZChmdW5jdGlvbiAocCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UgJiZcclxuICAgICAgICAgICAgICBwLnJvbGVJZCA9PT0gcm9sZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJlc291cmNlOiAnLCByZXNvdXJjZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFwcE1vZHVsZUlkOiAnLCBhcHBNb2R1bGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJvbGVJZDogJywgcm9sZUlkKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFzc2lnbm1lbnQgcmVsYXRpb246ICcsXHJcbiAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyBNYXRjaGVkIHBlcm1pc3Npb246ICcsIHBlcm1pc3Npb24pO1xyXG5cclxuICAgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnY3JlYXRlJyAmJiAhcGVybWlzc2lvbi5jcmVhdGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdkZWxldGUnICYmICFwZXJtaXNzaW9uLmRlbGV0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnYXNzaWduJyAmJiAhcGVybWlzc2lvbi5hc3NpZ25GbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZXhwdW5nZScgJiYgIXBlcm1pc3Npb24uZXhwdW5nZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAncmVvcGVuJyAmJiAhcGVybWlzc2lvbi5yZW9wZW5GbGFnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJpZ2h0ID09PSAncmVhZCcpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm5vZGVOYW1lID09PSAnQlVUVE9OJykge1xyXG4gICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZygnaGlkZTogJywgaGlkZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkaXNhYmxlOiAnLCBkaXNhYmxlKTtcclxuICAgICAgaWYgKGhpZGUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmhpZGVIdG1sRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrUGVybWlzc2lvbihhY2Nlc3NDb250cm9sQ29uZmlnOiBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcpIHtcclxuICAgIGNvbnN0IHNlbERhdGEgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLmRhdGE7XHJcbiAgICB0aGlzLmxvZ2luU3RhZmYgPSBzZWxEYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxEYXRhLnNlbGVjdGVkT2ZmZW5kZXI7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnM7XHJcbiAgICBjb25zdCByZXNvdXJjZSA9IGFjY2Vzc0NvbnRyb2xDb25maWcucm91dGUudXJsWzBdLnBhdGg7XHJcbiAgICBjb25zdCByb2xlSWQgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvbGVJZFxyXG4gICAgICA/IGFjY2Vzc0NvbnRyb2xDb25maWcucm9sZUlkLnRvVXBwZXJDYXNlKClcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYWNjZXNzVHlwZSA9IGFjY2Vzc0NvbnRyb2xDb25maWcuYWNjZXNzVHlwZTtcclxuICAgIGNvbnN0IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAhdGhpcy5zZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgIC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgID8gJ04vQSdcclxuICAgICAgOiB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gcGVybWlzc2lvbnMuZmluZCgocCkgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFjY2Vzc0NvbnRyb2xDb25maWcuYXBwTW9kdWxlSWQgJiZcclxuICAgICAgICBwLnJlc291cmNlID09PSByZXNvdXJjZSAmJlxyXG4gICAgICAgICghcm9sZUlkIHx8IHAucm9sZUlkID09PSByb2xlSWQpICYmXHJcbiAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2RlbGV0ZScgJiYgIXBlcm1pc3Npb24uZGVsZXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdleHB1bmdlJyAmJiAhcGVybWlzc2lvbi5leHB1bmdlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwRmVhdHVyZUFjdGl2YXRlKFxyXG4gICAgbG9naW5TdGFmZjogTG9naW5TdGFmZixcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkID0gbnVsbCxcclxuICApIHtcclxuICAgIC8vIGlmICghdGhpcy5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgYXBwTW9kdWxlSWQpKSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuaGFzQXBwRmVhdHVyZVBlcm1pc3Npb24oXHJcbiAgICAgIGxvZ2luU3RhZmYucGVybWlzc2lvbnMsXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGFwcE1vZHVsZUlkLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBpc0F1dGhFbmFibGUocm9sZXM6IFJvbGVbXSwgYXBwTW9kdWxlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHJvbGVzICYmIHJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgcmV0dXJuIHJvbGVzLm1hcChyID0+IHIucm9sZUlkKS5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMSB8fCBhcHBNb2R1bGVJZCA9PT0gJ1JSJztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSxcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoYXBwTW9kdWxlSWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSAmJiBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCxcclxuICAgICAgICAgICkgPiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLmZpbmRJbmRleCgocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeHRlcm5hbFJvbGUocm9sZUlkKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGVJZCkge1xyXG4gICAgICBjYXNlICdFVURUTCc6XHJcbiAgICAgIGNhc2UgJ0VVRFVTTSc6XHJcbiAgICAgIGNhc2UgJ0VVSkRHJzpcclxuICAgICAgY2FzZSAnRVVNUEQnOlxyXG4gICAgICBjYXNlICdFVVNPVFYnOlxyXG4gICAgICBjYXNlICdFVVVTQTInOlxyXG4gICAgICBjYXNlICdFVVVTQU8nOlxyXG4gICAgICBjYXNlICdFVVVTUEMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnRha2VSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnT1BBJzpcclxuICAgICAgY2FzZSAnT1BTJzpcclxuICAgICAgY2FzZSAnU09QUyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAnc3R5bGUnLFxyXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzOiBub25lO2N1cnNvcjogbm90LWFsbG93ZWQ7JyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICctMScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICdoaWRkZW4nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lOycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZih1c2VyTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZpbmR2U3RhZmZzKGlucHV0OiB7d2hlcmU6IHt1c2VyTmFtZTogXCIke3VzZXJOYW1lfVwiLCBhY3RpdmVGbGFnOiB0cnVlfX0pIHtcclxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBzdGFmZklkXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICBwaG9uZVxyXG4gICAgICAgICAgICAgICAgICBlbWFpbFxyXG4gICAgICAgICAgICAgICAgICByb2xlcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHtcclxuICAgICAgICAgICAgICAgICAgICByb2xlSWRcclxuICAgICAgICAgICAgICAgICAgICBhcHBNb2R1bGVJZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYWRGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHJlb3BlbkZsYWdcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBleHB1bmdlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VBcGlGaWVsZE5hbWVcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZsYWdcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWA7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KHRoaXMuc21hcnREYXRhU2VydmljZVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgZ2V0U3RhZmYoKSBmcm9tIHNlcnZpY2UgJywgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhLmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICBzdGFmZklkOiBudW1iZXIsXHJcbiAgICBvZmZlbmRlcklkOiBudW1iZXIsXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zKGlucHV0OiB7d2hlcmU6IHtzdGFmZklkOiAke3N0YWZmSWR9LCBvZmZlbmRlcklkOiAke29mZmVuZGVySWR9fX0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um9sZVBlcm1pc3Npb25zKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJlc291cmNlOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICBxdWVyeSBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3Rze1xyXG4gICAgICAgICAgICBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKGlucHV0OiB7d2hlcmU6IHthcHBNb2R1bGVJZDogJHthcHBNb2R1bGVJZH0sIHJlc291cmNlOiAke3Jlc291cmNlfX19KXtcclxuICAgICAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKCkgZnJvbSBzZXJ2aWNlICcsXHJcbiAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLmZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMudG90YWxDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHJldHVybiB0aHJvd0Vycm9yKCdObyBhY2Nlc3MgcmlnaHQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -115,8 +115,7 @@ export class SmartOffenderHeaderComponent {
|
|
|
115
115
|
// : false,
|
|
116
116
|
// } as SelectedOffender;
|
|
117
117
|
this.selectedOffender = offender;
|
|
118
|
-
this.xdmService.setSelectedOffender(this.selectedOffender);
|
|
119
|
-
this.reloadCurrentRoute();
|
|
118
|
+
this.xdmService.setSelectedOffender(this.selectedOffender, this.reloadCurrentRoute);
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
121
|
/**
|
|
@@ -250,4 +249,4 @@ if (false) {
|
|
|
250
249
|
*/
|
|
251
250
|
SmartOffenderHeaderComponent.prototype.router;
|
|
252
251
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjc21hcnQvbmdjLXNtYXJ0LWNvcmUvIiwic291cmNlcyI6WyJsaWIvc21hcnQtb2ZmZW5kZXItaGVhZGVyL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBT3pDLE1BQU0sT0FBTyw0QkFBNEI7Ozs7Ozs7SUFVdkMsWUFDVSxVQUFzQixFQUN0QixZQUF5QixFQUN6QiwwQkFBc0QsRUFDdEQsTUFBYztRQUhkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVnhCLDZCQUF3QixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFXMUMsQ0FBQzs7OztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSTs7OztRQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsSUFB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Q3hDLHVEQUFnQzs7Ozs7SUFHOUIsa0RBQThCOzs7OztJQUM5QixvREFBaUM7Ozs7O0lBQ2pDLGtFQUE4RDs7Ozs7SUFDOUQsOENBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgTmdab25lLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYZG1TZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS94ZG0uc2VydmljZSc7XHJcbmltcG9ydCB7IFNlbGVjdGVkT2ZmZW5kZXIsIExvZ2luU3RhZmYsIFJvbGUsIE9mZmVuZGVyUXVlcnkgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2UsIEFzc2lnbmVkT2ZmZW5kZXIgfSBmcm9tICcuL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LW9mZmVuZGVyLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtb2ZmZW5kZXItaGVhZGVyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0T2ZmZW5kZXJIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXI7XHJcbiAgbG9naW5TdGFmZjogTG9naW5TdGFmZjtcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzZWxlY3RlZE9mZmVuZGVyQ29udHJvbCQgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAvLyBhc3NpZ25lZE9mZmVuZGVyczogQXNzaWduZWRPZmZlbmRlcltdO1xyXG4gIG9mZmVuZGVyUXVlcnlMaXN0OiBTZWxlY3RlZE9mZmVuZGVyW107XHJcbiAgb2ZmZW5kZXJRdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbWFydE9mZmVuZGVySGVhZGVyU2VydmljZTogU21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aG5TZXJ2aWNlLmdldEFjY291bnQoKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCkudGhlbigobG9naW5TdGFmZikgPT4ge1xyXG4gICAgICB0aGlzLmxvZ2luU3RhZmYgPSBsb2dpblN0YWZmID8gbG9naW5TdGFmZiA6IG51bGw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMueGRtU2VydmljZS5nZXRTZWxlY3RlZE9mZmVuZGVyKCkudGhlbigoc2VsZWN0ZWRPZmZlbmRlcikgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPVxyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIgJiYgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkXHJcbiAgICAgICAgICA/IHNlbGVjdGVkT2ZmZW5kZXJcclxuICAgICAgICAgIDogbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRPZmZlbmRlclVwZGF0ZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRPZmZlbmRlckNvbnRyb2woKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmdldE9mZmVuZGVyUXVlcnkoKS50aGVuKChvZmZlbmRlclF1ZXJ5OiBPZmZlbmRlclF1ZXJ5KSA9PiB7XHJcbiAgICAgIGlmIChvZmZlbmRlclF1ZXJ5KSB7XHJcbiAgICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5TGlzdCA9IG9mZmVuZGVyUXVlcnkub2ZmZW5kZXJzO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRPZmZlbmRlckNvbnRyb2woKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vZmZlbmRlclF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy54ZG1TZXJ2aWNlLmdldE9mZmVuZGVyUXVlcnlVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChvZmZlbmRlckxpc3QpID0+IHtcclxuICAgICAgICBpZiAob2ZmZW5kZXJMaXN0ICYmIG9mZmVuZGVyTGlzdC5vZmZlbmRlcnMpIHtcclxuICAgICAgICAgIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QgPSBbLi4ub2ZmZW5kZXJMaXN0Lm9mZmVuZGVyc107XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlckNvbnRyb2wkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKG8pID0+XHJcbiAgICAgIHRoaXMub25PZmZlbmRlclNlbGVjdGVkKG8pLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5yb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkUmV1c2VSb3V0ZSA9ICgpID0+IHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk9mZmVuZGVyU2VsZWN0ZWQob2ZmZW5kZXIpOiB2b2lkIHtcclxuICAgIGlmIChvZmZlbmRlcikge1xyXG4gICAgICAvLyBjb25zdCBvID0gb2ZmZW5kZXIub2ZmZW5kZXJOYW1lLnNwbGl0KCcsJyk7XHJcbiAgICAgIC8vIGlmIChvLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAvLyAgIGNvbnN0IG9mZmVuZGVyTmFtZSA9IGAke29bMV19ICR7b1swXX1gO1xyXG4gICAgICAvLyAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciA9IHtcclxuICAgICAgLy8gICAgIG9mZmVuZGVySWQ6IG9mZmVuZGVyLm9mZmVuZGVySWQsXHJcbiAgICAgIC8vICAgICBuYW1lOiBvZmZlbmRlck5hbWUsXHJcbiAgICAgIC8vICAgICBwZElkOiBvZmZlbmRlci5wZElkLFxyXG4gICAgICAvLyAgICAgYmlydGhEYXRlOiBvZmZlbmRlci5iaXJ0aERhdGUsXHJcbiAgICAgIC8vICAgICBnZW5kZXI6IG9mZmVuZGVyLmdlbmRlckNvZGUsXHJcbiAgICAgIC8vICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkOiAnJyxcclxuICAgICAgLy8gICAgIGludGFrZUZsYWc6IHRoaXMubG9naW5TdGFmZlxyXG4gICAgICAvLyAgICAgICA/IHRoaXMuaGFzSW50YWtlUm9sZSh0aGlzLmxvZ2luU3RhZmYucm9sZXMpXHJcbiAgICAgIC8vICAgICAgIDogZmFsc2UsXHJcbiAgICAgIC8vICAgfSBhcyBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBvZmZlbmRlcjtcclxuICAgICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIodGhpcy5zZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgICAgdGhpcy5yZWxvYWRDdXJyZW50Um91dGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlbGVjdGVkT2ZmZW5kZXJDb250cm9sKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgJiZcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5TGlzdCAmJlxyXG4gICAgICB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0Lmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICBjb25zdCBvID0gdGhpcy5vZmZlbmRlclF1ZXJ5TGlzdC5maW5kKFxyXG4gICAgICAgICh4KSA9PiB4Lm9mZmVuZGVySWQgPT09IHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICApO1xyXG4gICAgICBpZiAobykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlckNvbnRyb2wkLnNldFZhbHVlKG8sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFvICYmIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlckNvbnRyb2wkLnNldFZhbHVlKHRoaXMub2ZmZW5kZXJRdWVyeUxpc3RbMF0sIHtcclxuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsb2FkQ3VycmVudFJvdXRlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICAgIGlmICh1cmxUcmVlXHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290XHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290LnNlZ21lbnRzXHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290LnNlZ21lbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsVHJlZS5yb290LnNlZ21lbnRzWzBdLnBhdGhdKTtcclxuICAgICAgfSBlbHNlIGlmICh1cmxUcmVlXHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290XHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290LmNoaWxkcmVuXHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnlcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50c1xyXG4gICAgICAgICYmIHVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHNbMF0ucGF0aF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlci51cmxdKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW50YWtlUm9sZShyb2xlczogUm9sZVtdKSB7XHJcbiAgICBpZiAocm9sZXMgJiYgcm9sZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gcm9sZXMuZmluZEluZGV4KHRoaXMuaXNJbnRha2VSb2xlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludGFrZVJvbGUocm9sZTogUm9sZSkge1xyXG4gICAgc3dpdGNoIChyb2xlLnJvbGVJZCkge1xyXG4gICAgICBjYXNlICdPUEEnOlxyXG4gICAgICBjYXNlICdPUFMnOlxyXG4gICAgICBjYXNlICdTT1BTJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtb2ZmZW5kZXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjc21hcnQvbmdjLXNtYXJ0LWNvcmUvIiwic291cmNlcyI6WyJsaWIvc21hcnQtb2ZmZW5kZXItaGVhZGVyL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBT3pDLE1BQU0sT0FBTyw0QkFBNEI7Ozs7Ozs7SUFVdkMsWUFDVSxVQUFzQixFQUN0QixZQUF5QixFQUN6QiwwQkFBc0QsRUFDdEQsTUFBYztRQUhkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVnhCLDZCQUF3QixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFXMUMsQ0FBQzs7OztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSTs7OztRQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsSUFB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Ozs7O0lBRzlCLGtEQUE4Qjs7Ozs7SUFDOUIsb0RBQWlDOzs7OztJQUNqQyxrRUFBOEQ7Ozs7O0lBQzlELDhDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIE5nWm9uZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZE9mZmVuZGVyLCBMb2dpblN0YWZmLCBSb2xlLCBPZmZlbmRlclF1ZXJ5IH0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlLCBBc3NpZ25lZE9mZmVuZGVyIH0gZnJvbSAnLi9zbWFydC1vZmZlbmRlci1oZWFkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1vZmZlbmRlci1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1vZmZlbmRlci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LW9mZmVuZGVyLWhlYWRlci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydE9mZmVuZGVySGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBzZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VsZWN0ZWRPZmZlbmRlckNvbnRyb2wkID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgLy8gYXNzaWduZWRPZmZlbmRlcnM6IEFzc2lnbmVkT2ZmZW5kZXJbXTtcclxuICBvZmZlbmRlclF1ZXJ5TGlzdDogU2VsZWN0ZWRPZmZlbmRlcltdO1xyXG4gIG9mZmVuZGVyUXVlcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgeGRtU2VydmljZTogWGRtU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aG5TZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgIHByaXZhdGUgc21hcnRPZmZlbmRlckhlYWRlclNlcnZpY2U6IFNtYXJ0T2ZmZW5kZXJIZWFkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhuU2VydmljZS5nZXRBY2NvdW50KCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0TG9naW5TdGFmZigpLnRoZW4oKGxvZ2luU3RhZmYpID0+IHtcclxuICAgICAgdGhpcy5sb2dpblN0YWZmID0gbG9naW5TdGFmZiA/IGxvZ2luU3RhZmYgOiBudWxsO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpLnRoZW4oKHNlbGVjdGVkT2ZmZW5kZXIpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID1cclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyICYmIHNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZFxyXG4gICAgICAgICAgPyBzZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZVxyXG4gICAgICAuZ2V0T2ZmZW5kZXJVcGRhdGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZE9mZmVuZGVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkT2ZmZW5kZXJDb250cm9sKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMueGRtU2VydmljZS5nZXRPZmZlbmRlclF1ZXJ5KCkudGhlbigob2ZmZW5kZXJRdWVyeTogT2ZmZW5kZXJRdWVyeSkgPT4ge1xyXG4gICAgICBpZiAob2ZmZW5kZXJRdWVyeSkge1xyXG4gICAgICAgIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QgPSBvZmZlbmRlclF1ZXJ5Lm9mZmVuZGVycztcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkT2ZmZW5kZXJDb250cm9sKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub2ZmZW5kZXJRdWVyeVN1YnNjcmlwdGlvbiA9IHRoaXMueGRtU2VydmljZS5nZXRPZmZlbmRlclF1ZXJ5VXBkYXRlKClcclxuICAgICAgLnN1YnNjcmliZSgob2ZmZW5kZXJMaXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKG9mZmVuZGVyTGlzdCAmJiBvZmZlbmRlckxpc3Qub2ZmZW5kZXJzKSB7XHJcbiAgICAgICAgICB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0ID0gWy4uLm9mZmVuZGVyTGlzdC5vZmZlbmRlcnNdO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJDb250cm9sJC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChvKSA9PlxyXG4gICAgICB0aGlzLm9uT2ZmZW5kZXJTZWxlY3RlZChvKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZFJldXNlUm91dGUgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25PZmZlbmRlclNlbGVjdGVkKG9mZmVuZGVyKTogdm9pZCB7XHJcbiAgICBpZiAob2ZmZW5kZXIpIHtcclxuICAgICAgLy8gY29uc3QgbyA9IG9mZmVuZGVyLm9mZmVuZGVyTmFtZS5zcGxpdCgnLCcpO1xyXG4gICAgICAvLyBpZiAoby5sZW5ndGggPT09IDIpIHtcclxuICAgICAgLy8gICBjb25zdCBvZmZlbmRlck5hbWUgPSBgJHtvWzFdfSAke29bMF19YDtcclxuICAgICAgLy8gICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSB7XHJcbiAgICAgIC8vICAgICBvZmZlbmRlcklkOiBvZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICAvLyAgICAgbmFtZTogb2ZmZW5kZXJOYW1lLFxyXG4gICAgICAvLyAgICAgcGRJZDogb2ZmZW5kZXIucGRJZCxcclxuICAgICAgLy8gICAgIGJpcnRoRGF0ZTogb2ZmZW5kZXIuYmlydGhEYXRlLFxyXG4gICAgICAvLyAgICAgZ2VuZGVyOiBvZmZlbmRlci5nZW5kZXJDb2RlLFxyXG4gICAgICAvLyAgICAgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDogJycsXHJcbiAgICAgIC8vICAgICBpbnRha2VGbGFnOiB0aGlzLmxvZ2luU3RhZmZcclxuICAgICAgLy8gICAgICAgPyB0aGlzLmhhc0ludGFrZVJvbGUodGhpcy5sb2dpblN0YWZmLnJvbGVzKVxyXG4gICAgICAvLyAgICAgICA6IGZhbHNlLFxyXG4gICAgICAvLyAgIH0gYXMgU2VsZWN0ZWRPZmZlbmRlcjtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gb2ZmZW5kZXI7XHJcbiAgICAgIHRoaXMueGRtU2VydmljZS5zZXRTZWxlY3RlZE9mZmVuZGVyKHRoaXMuc2VsZWN0ZWRPZmZlbmRlciwgdGhpcy5yZWxvYWRDdXJyZW50Um91dGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRPZmZlbmRlckNvbnRyb2woKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlciAmJlxyXG4gICAgICB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0ICYmXHJcbiAgICAgIHRoaXMub2ZmZW5kZXJRdWVyeUxpc3QubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IG8gPSB0aGlzLm9mZmVuZGVyUXVlcnlMaXN0LmZpbmQoXHJcbiAgICAgICAgKHgpID0+IHgub2ZmZW5kZXJJZCA9PT0gdGhpcy5zZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWQsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChvKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyQ29udHJvbCQuc2V0VmFsdWUobywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIW8gJiYgdGhpcy5vZmZlbmRlclF1ZXJ5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyQ29udHJvbCQuc2V0VmFsdWUodGhpcy5vZmZlbmRlclF1ZXJ5TGlzdFswXSwge1xyXG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWxvYWRDdXJyZW50Um91dGUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcclxuICAgICAgaWYgKHVybFRyZWVcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3RcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3Quc2VnbWVudHNcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3Quc2VnbWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxUcmVlLnJvb3Quc2VnbWVudHNbMF0ucGF0aF0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHVybFRyZWVcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3RcclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3QuY2hpbGRyZW5cclxuICAgICAgICAmJiB1cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeVxyXG4gICAgICAgICYmIHVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzXHJcbiAgICAgICAgJiYgdXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50c1swXS5wYXRoXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVyLnVybF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50YWtlUm9sZShyb2xlOiBSb2xlKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGUucm9sZUlkKSB7XHJcbiAgICAgIGNhc2UgJ09QQSc6XHJcbiAgICAgIGNhc2UgJ09QUyc6XHJcbiAgICAgIGNhc2UgJ1NPUFMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -105,9 +105,10 @@ export class XdmService {
|
|
|
105
105
|
* Offender
|
|
106
106
|
* ************************************
|
|
107
107
|
* @param {?} selectedOffender
|
|
108
|
+
* @param {?=} redirectFunction
|
|
108
109
|
* @return {?}
|
|
109
110
|
*/
|
|
110
|
-
setSelectedOffender(selectedOffender) {
|
|
111
|
+
setSelectedOffender(selectedOffender, redirectFunction = null) {
|
|
111
112
|
this.connection.promise.then((/**
|
|
112
113
|
* @param {?} child
|
|
113
114
|
* @return {?}
|
|
@@ -115,6 +116,9 @@ export class XdmService {
|
|
|
115
116
|
(child) => {
|
|
116
117
|
child.setSelectedOffender(selectedOffender);
|
|
117
118
|
this.offenderSubject.next(selectedOffender);
|
|
119
|
+
if (redirectFunction) {
|
|
120
|
+
redirectFunction();
|
|
121
|
+
}
|
|
118
122
|
}));
|
|
119
123
|
}
|
|
120
124
|
/**
|
|
@@ -314,4 +318,4 @@ if (false) {
|
|
|
314
318
|
*/
|
|
315
319
|
XdmService.prototype.smartDataServiceUrl;
|
|
316
320
|
}
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFJTCxVQUFVLEVBQ1YsOEJBQThCLEVBQzlCLHNCQUFzQixHQUV2QixNQUFNLHVCQUF1QixDQUFDOztBQUcvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFLbEQsTUFBTSxPQUFPLFVBQVU7Ozs7Ozs7SUFNckIsWUFDNEIsUUFBYSxFQUUvQix1QkFBK0IsRUFDL0IsVUFBc0IsRUFDVSxtQkFBbUI7UUFKakMsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUUvQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVE7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQVZyRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQ2xELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQVUxRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksQ0FBQyxJQUFJLEVB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OEJBQXVDOzs7OztJQUN2Qyw2Q0FDdUM7Ozs7O0lBQ3ZDLGdDQUE4Qjs7Ozs7SUFDOUIseUNBQTJEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIExvZ2luU3RhZmYsXHJcbiAgT2ZmZW5kZXJRdWVyeSxcclxuICBTdG9yYWdlS2V5LFxyXG4gIFNNQVJUX1dFQl9TVE9SQUdFX0xJU1RFTkVSX1VSTCxcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG4gIE9wdGlvbixcclxufSBmcm9tICcuL3NtYXJ0LXN0b3JhZ2UtbW9kZWwnO1xyXG5cclxuLy8gaW1wb3J0IGNvbm5lY3RUb0NoaWxkIGZyb20gXCJwZW5wYWwvbGliL2Nvbm5lY3RUb0NoaWxkXCI7XHJcbmltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYZG1TZXJ2aWNlIHtcclxuICBwcml2YXRlIG9mZmVuZGVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PFNlbGVjdGVkT2ZmZW5kZXI+KCk7XHJcbiAgcHJpdmF0ZSBzdGFmZlN1YmplY3QgPSBuZXcgU3ViamVjdDxMb2dpblN0YWZmPigpO1xyXG4gIHByaXZhdGUgb2ZmZW5kZXJRdWVyeVN1YmplY3QgPSBuZXcgU3ViamVjdDxPZmZlbmRlclF1ZXJ5PigpO1xyXG4gIHByaXZhdGUgY29ubmVjdGlvbjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcclxuICAgIEBJbmplY3QoU01BUlRfV0VCX1NUT1JBR0VfTElTVEVORVJfVVJMKVxyXG4gICAgcHJpdmF0ZSBzbWFydFN0b3JhZ2VMaXN0ZW5lclVybDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgKSB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTbWFydFN0b3JhZ2UgWGRtU2VydmljZSAoQ2xpZW50KSAtIGNvbnN0cnVjdG9yKCknKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZnJhbWUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xyXG4gICAgZnJhbWUuc3JjID0gdGhpcy5zbWFydFN0b3JhZ2VMaXN0ZW5lclVybDtcclxuICAgIGZyYW1lLmlkID0gJ2NoaWxkZnJhbWUnO1xyXG4gICAgZnJhbWUubmFtZSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKTtcclxuICAgIGZyYW1lLm9ubG9hZCA9IG51bGw7XHJcbiAgICBmcmFtZS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3RUb0NoaWxkKHtcclxuICAgICAgaWZyYW1lOiBmcmFtZSxcclxuICAgICAgZGVidWc6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucyhcclxuICAgIHN0YWZmSWQ6IG51bWJlcixcclxuICApOiBPYnNlcnZhYmxlPEFycmF5PE9wdGlvbj4+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYHtmaW5kdlN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucyhpbnB1dDp7XHJcbiAgICAgICAgd2hlcmU6e1xyXG4gICAgICAgICAgc3RhZmZJZDogJHtzdGFmZklkfVxyXG4gICAgICAgIH1cclxuICAgICAgfSl7XHJcbiAgICAgICAgZGF0YXtcclxuICAgICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICBzZXJ2aWNlQXBpRmllbGROYW1lXHJcbiAgICAgICAgICBzZWxlY3RlZEZsYWdcclxuICAgICAgICB9XHJcbiAgICB9IH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxhbnk+KHRoaXMuc21hcnREYXRhU2VydmljZVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICAgICAgZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucy5kYXRhWydvZmZlbmRlck9wdGlvbkxpc3RJZCddID1cclxuICAgICAgICAgICAgZGF0YS5maW5kdlN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucy5kYXRhWydvZmZlbmRlckxpc3RPcHRpb25JZCddO1xyXG4gICAgICAgICAgcmV0dXJuIGRhdGEuZmluZHZTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMuZGF0YTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICAgIC8qcmV0dXJuIG9mKFtcclxuICAgICAgeyBvZmZlbmRlckxpc3RPcHRpb25JZDogJ2dlbmRlckNvZGUnLCBuYW1lOiAnJywgc2VsZWN0ZWRGbGFnOiB0cnVlIH1dKTsqL1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuY2xlYXJBbGwoKTtcclxuICAgICAgdGhpcy5vZmZlbmRlclN1YmplY3QubmV4dCgpO1xyXG4gICAgICB0aGlzLnN0YWZmU3ViamVjdC5uZXh0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICogT2ZmZW5kZXJcclxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgcHVibGljIHNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuc2V0U2VsZWN0ZWRPZmZlbmRlcihzZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgICAgdGhpcy5vZmZlbmRlclN1YmplY3QubmV4dChzZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkT2ZmZW5kZXIoKTogUHJvbWlzZTxTZWxlY3RlZE9mZmVuZGVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+XHJcbiAgICAgIGNoaWxkLmdldFNlbGVjdGVkT2ZmZW5kZXIoU3RvcmFnZUtleS5zZWxlY3RlZE9mZmVuZGVyKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZE9mZmVuZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuY2xlYXJTZWxlY3RlZE9mZmVuZGVyKCk7XHJcbiAgICAgIHRoaXMub2ZmZW5kZXJTdWJqZWN0Lm5leHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9mZmVuZGVyVXBkYXRlKCk6IE9ic2VydmFibGU8U2VsZWN0ZWRPZmZlbmRlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMub2ZmZW5kZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIFN0YWZmXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBwdWJsaWMgc2V0TG9naW5TdGFmZihsb2dpblN0YWZmOiBMb2dpblN0YWZmKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5zZXRMb2dpblN0YWZmKGxvZ2luU3RhZmYpO1xyXG4gICAgICB0aGlzLnN0YWZmU3ViamVjdC5uZXh0KGxvZ2luU3RhZmYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TG9naW5TdGFmZigpOiBQcm9taXNlPExvZ2luU3RhZmY+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT5cclxuICAgICAgY2hpbGQuZ2V0TG9naW5TdGFmZihTdG9yYWdlS2V5LmxvZ2luU3RhZmYpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckxvZ2luU3RhZmYoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5jbGVhckxvZ2luU3RhZmYoKTtcclxuICAgICAgdGhpcy5zdGFmZlN1YmplY3QubmV4dCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RhZmZVcGRhdGUoKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFmZlN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaExvZ2luU3RhZmZPcHRpb25zKCkge1xyXG4gICAgdGhpcy5nZXRMb2dpblN0YWZmKCkudGhlbigob2xkTG9naW5TdGFmZikgPT4ge1xyXG4gICAgICB0aGlzLmdldFN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucyhvbGRMb2dpblN0YWZmLnN0YWZmSWQpLnN1YnNjcmliZShcclxuICAgICAgICAob3B0aW9uRGF0YSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cob3B0aW9uRGF0YSk7XHJcbiAgICAgICAgICBvbGRMb2dpblN0YWZmLm9wdGlvbnMgPSBvcHRpb25EYXRhO1xyXG4gICAgICAgICAgdGhpcy5zZXRMb2dpblN0YWZmKG9sZExvZ2luU3RhZmYpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgKiBPZmZlbmRlciBRdWVyeVxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgcHVibGljIHNldE9mZmVuZGVyUXVlcnkob2ZmZW5kZXJRdWVyeTogT2ZmZW5kZXJRdWVyeSkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuc2V0T2ZmZW5kZXJRdWVyeShvZmZlbmRlclF1ZXJ5KTtcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5U3ViamVjdC5uZXh0KG9mZmVuZGVyUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0T2ZmZW5kZXJRdWVyeSgpOiBQcm9taXNlPE9mZmVuZGVyUXVlcnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT5cclxuICAgICAgY2hpbGQuZ2V0T2ZmZW5kZXJRdWVyeShTdG9yYWdlS2V5Lm9mZmVuZGVyUXVlcnkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhck9mZmVuZGVyUXVlcnkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5jbGVhck9mZmVuZGVyUXVlcnkoKTtcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5U3ViamVjdC5uZXh0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPZmZlbmRlclF1ZXJ5VXBkYXRlKCk6IE9ic2VydmFibGU8T2ZmZW5kZXJRdWVyeT4ge1xyXG4gICAgcmV0dXJuIHRoaXMub2ZmZW5kZXJRdWVyeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFJTCxVQUFVLEVBQ1YsOEJBQThCLEVBQzlCLHNCQUFzQixHQUV2QixNQUFNLHVCQUF1QixDQUFDOztBQUcvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFLbEQsTUFBTSxPQUFPLFVBQVU7Ozs7Ozs7SUFNckIsWUFDNEIsUUFBYSxFQUUvQix1QkFBK0IsRUFDL0IsVUFBc0IsRUFDVSxtQkFBbUI7UUFKakMsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUUvQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVE7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQVZyRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQ2xELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQVUxRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksQ0FBQyxJQUFJLEVB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QyxxQ0FBMEQ7Ozs7O0lBQzFELGtDQUFpRDs7Ozs7SUFDakQsMENBQTREOzs7OztJQUM1RCxnQ0FBd0I7Ozs7O0lBR3RCLDhCQUF1Qzs7Ozs7SUFDdkMsNkNBQ3VDOzs7OztJQUN2QyxnQ0FBOEI7Ozs7O0lBQzlCLHlDQUEyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBMb2dpblN0YWZmLFxyXG4gIE9mZmVuZGVyUXVlcnksXHJcbiAgU3RvcmFnZUtleSxcclxuICBTTUFSVF9XRUJfU1RPUkFHRV9MSVNURU5FUl9VUkwsXHJcbiAgU01BUlRfREFUQV9TRVJWSUNFX1VSTCxcclxuICBPcHRpb24sXHJcbn0gZnJvbSAnLi9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuXHJcbi8vIGltcG9ydCBjb25uZWN0VG9DaGlsZCBmcm9tIFwicGVucGFsL2xpYi9jb25uZWN0VG9DaGlsZFwiO1xyXG5pbXBvcnQgeyBjb25uZWN0VG9DaGlsZCB9IGZyb20gJ3BlbnBhbCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWGRtU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBvZmZlbmRlclN1YmplY3QgPSBuZXcgU3ViamVjdDxTZWxlY3RlZE9mZmVuZGVyPigpO1xyXG4gIHByaXZhdGUgc3RhZmZTdWJqZWN0ID0gbmV3IFN1YmplY3Q8TG9naW5TdGFmZj4oKTtcclxuICBwcml2YXRlIG9mZmVuZGVyUXVlcnlTdWJqZWN0ID0gbmV3IFN1YmplY3Q8T2ZmZW5kZXJRdWVyeT4oKTtcclxuICBwcml2YXRlIGNvbm5lY3Rpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBASW5qZWN0KFNNQVJUX1dFQl9TVE9SQUdFX0xJU1RFTkVSX1VSTClcclxuICAgIHByaXZhdGUgc21hcnRTdG9yYWdlTGlzdGVuZXJVcmw6IHN0cmluZyxcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIEBJbmplY3QoU01BUlRfREFUQV9TRVJWSUNFX1VSTCkgcHJpdmF0ZSBzbWFydERhdGFTZXJ2aWNlVXJsLFxyXG4gICkge1xyXG4gICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnU21hcnRTdG9yYWdlIFhkbVNlcnZpY2UgKENsaWVudCkgLSBjb25zdHJ1Y3RvcigpJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcclxuICAgIGZyYW1lLnNyYyA9IHRoaXMuc21hcnRTdG9yYWdlTGlzdGVuZXJVcmw7XHJcbiAgICBmcmFtZS5pZCA9ICdjaGlsZGZyYW1lJztcclxuICAgIGZyYW1lLm5hbWUgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCk7XHJcbiAgICBmcmFtZS5vbmxvYWQgPSBudWxsO1xyXG4gICAgZnJhbWUuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0VG9DaGlsZCh7XHJcbiAgICAgIGlmcmFtZTogZnJhbWUsXHJcbiAgICAgIGRlYnVnOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMoXHJcbiAgICBzdGFmZklkOiBudW1iZXIsXHJcbiAgKTogT2JzZXJ2YWJsZTxBcnJheTxPcHRpb24+PiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGB7ZmluZHZTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMoaW5wdXQ6e1xyXG4gICAgICAgIHdoZXJlOntcclxuICAgICAgICAgIHN0YWZmSWQ6ICR7c3RhZmZJZH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pe1xyXG4gICAgICAgIGRhdGF7XHJcbiAgICAgICAgICBvZmZlbmRlckxpc3RPcHRpb25JZFxyXG4gICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgc2VydmljZUFwaUZpZWxkTmFtZVxyXG4gICAgICAgICAgc2VsZWN0ZWRGbGFnXHJcbiAgICAgICAgfVxyXG4gICAgfSB9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8YW55Pih0aGlzLnNtYXJ0RGF0YVNlcnZpY2VVcmwsIHsgcXVlcnk6IHF1ZXJ5U3RyaW5nIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICAgIGRhdGEuZmluZHZTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMuZGF0YVsnb2ZmZW5kZXJPcHRpb25MaXN0SWQnXSA9XHJcbiAgICAgICAgICAgIGRhdGEuZmluZHZTdGFmZk9mZmVuZGVyTGlzdE9wdGlvbnMuZGF0YVsnb2ZmZW5kZXJMaXN0T3B0aW9uSWQnXTtcclxuICAgICAgICAgIHJldHVybiBkYXRhLmZpbmR2U3RhZmZPZmZlbmRlckxpc3RPcHRpb25zLmRhdGE7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgICAvKnJldHVybiBvZihbXHJcbiAgICAgIHsgb2ZmZW5kZXJMaXN0T3B0aW9uSWQ6ICdnZW5kZXJDb2RlJywgbmFtZTogJycsIHNlbGVjdGVkRmxhZzogdHJ1ZSB9XSk7Ki9cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5wcm9taXNlLnRoZW4oKGNoaWxkKSA9PiB7XHJcbiAgICAgIGNoaWxkLmNsZWFyQWxsKCk7XHJcbiAgICAgIHRoaXMub2ZmZW5kZXJTdWJqZWN0Lm5leHQoKTtcclxuICAgICAgdGhpcy5zdGFmZlN1YmplY3QubmV4dCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIE9mZmVuZGVyXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gIHB1YmxpYyBzZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXIsIHJlZGlyZWN0RnVuY3Rpb246IGFueSA9IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5wcm9taXNlLnRoZW4oKGNoaWxkKSA9PiB7XHJcbiAgICAgIGNoaWxkLnNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcik7XHJcbiAgICAgICB0aGlzLm9mZmVuZGVyU3ViamVjdC5uZXh0KHNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgICAgaWYocmVkaXJlY3RGdW5jdGlvbikge1xyXG4gICAgICAgIHJlZGlyZWN0RnVuY3Rpb24oKTtcclxuICAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkT2ZmZW5kZXIoKTogUHJvbWlzZTxTZWxlY3RlZE9mZmVuZGVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+XHJcbiAgICAgIGNoaWxkLmdldFNlbGVjdGVkT2ZmZW5kZXIoU3RvcmFnZUtleS5zZWxlY3RlZE9mZmVuZGVyKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZE9mZmVuZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuY2xlYXJTZWxlY3RlZE9mZmVuZGVyKCk7XHJcbiAgICAgIHRoaXMub2ZmZW5kZXJTdWJqZWN0Lm5leHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9mZmVuZGVyVXBkYXRlKCk6IE9ic2VydmFibGU8U2VsZWN0ZWRPZmZlbmRlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMub2ZmZW5kZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIFN0YWZmXHJcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICBwdWJsaWMgc2V0TG9naW5TdGFmZihsb2dpblN0YWZmOiBMb2dpblN0YWZmKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5zZXRMb2dpblN0YWZmKGxvZ2luU3RhZmYpO1xyXG4gICAgICB0aGlzLnN0YWZmU3ViamVjdC5uZXh0KGxvZ2luU3RhZmYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TG9naW5TdGFmZigpOiBQcm9taXNlPExvZ2luU3RhZmY+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT5cclxuICAgICAgY2hpbGQuZ2V0TG9naW5TdGFmZihTdG9yYWdlS2V5LmxvZ2luU3RhZmYpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckxvZ2luU3RhZmYoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5jbGVhckxvZ2luU3RhZmYoKTtcclxuICAgICAgdGhpcy5zdGFmZlN1YmplY3QubmV4dCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RhZmZVcGRhdGUoKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFmZlN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaExvZ2luU3RhZmZPcHRpb25zKCkge1xyXG4gICAgdGhpcy5nZXRMb2dpblN0YWZmKCkudGhlbigob2xkTG9naW5TdGFmZikgPT4ge1xyXG4gICAgICB0aGlzLmdldFN0YWZmT2ZmZW5kZXJMaXN0T3B0aW9ucyhvbGRMb2dpblN0YWZmLnN0YWZmSWQpLnN1YnNjcmliZShcclxuICAgICAgICAob3B0aW9uRGF0YSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cob3B0aW9uRGF0YSk7XHJcbiAgICAgICAgICBvbGRMb2dpblN0YWZmLm9wdGlvbnMgPSBvcHRpb25EYXRhO1xyXG4gICAgICAgICAgdGhpcy5zZXRMb2dpblN0YWZmKG9sZExvZ2luU3RhZmYpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgKiBPZmZlbmRlciBRdWVyeVxyXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgcHVibGljIHNldE9mZmVuZGVyUXVlcnkob2ZmZW5kZXJRdWVyeTogT2ZmZW5kZXJRdWVyeSkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLnByb21pc2UudGhlbigoY2hpbGQpID0+IHtcclxuICAgICAgY2hpbGQuc2V0T2ZmZW5kZXJRdWVyeShvZmZlbmRlclF1ZXJ5KTtcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5U3ViamVjdC5uZXh0KG9mZmVuZGVyUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0T2ZmZW5kZXJRdWVyeSgpOiBQcm9taXNlPE9mZmVuZGVyUXVlcnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT5cclxuICAgICAgY2hpbGQuZ2V0T2ZmZW5kZXJRdWVyeShTdG9yYWdlS2V5Lm9mZmVuZGVyUXVlcnkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhck9mZmVuZGVyUXVlcnkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ucHJvbWlzZS50aGVuKChjaGlsZCkgPT4ge1xyXG4gICAgICBjaGlsZC5jbGVhck9mZmVuZGVyUXVlcnkoKTtcclxuICAgICAgdGhpcy5vZmZlbmRlclF1ZXJ5U3ViamVjdC5uZXh0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPZmZlbmRlclF1ZXJ5VXBkYXRlKCk6IE9ic2VydmFibGU8T2ZmZW5kZXJRdWVyeT4ge1xyXG4gICAgcmV0dXJuIHRoaXMub2ZmZW5kZXJRdWVyeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -382,11 +382,10 @@ var SmartAuthService = /** @class */ (function () {
|
|
|
382
382
|
* @return {?}
|
|
383
383
|
*/
|
|
384
384
|
function (p) {
|
|
385
|
-
return (p.appModuleId === accessControlConfig.appModuleId
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
p.assignmentStaffRelationId === assignmentStaffRelationId));
|
|
385
|
+
return (p.appModuleId === accessControlConfig.appModuleId &&
|
|
386
|
+
p.resource === resource &&
|
|
387
|
+
(!roleId || p.roleId === roleId) &&
|
|
388
|
+
p.assignmentStaffRelationId === assignmentStaffRelationId);
|
|
390
389
|
}));
|
|
391
390
|
if (permission) {
|
|
392
391
|
if (accessType === 'read') {
|
|
@@ -759,4 +758,4 @@ if (false) {
|
|
|
759
758
|
*/
|
|
760
759
|
SmartAuthService.prototype.smartDomainFormatUrl;
|
|
761
760
|
}
|
|
762
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBSzFEO0lBT0UsMEJBQ1UsSUFBZ0IsRUFDaEIsWUFBeUIsRUFDekIsVUFBc0IsRUFDVSxtQkFBbUIsRUFDdEIsb0JBQTRCO1FBSnpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7SUFDaEUsQ0FBQzs7OztJQUVHLHdDQUFhOzs7SUFBcEI7UUFBQSxpQkF1REM7UUF0REMsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsU0FB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Ozs7O0lBQ2pDLHNDQUE4Qjs7Ozs7SUFDOUIsK0NBQTJEOzs7OztJQUMzRCxnREFBaUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgY2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTG9naW5TdGFmZixcclxuICBTZWxlY3RlZE9mZmVuZGVyLFxyXG4gIFNNQVJUX0RBVEFfU0VSVklDRV9VUkwsXHJcbiAgU01BUlRfRE9NQUlOX0ZPUk1BVCxcclxuICBSb2xlLFxyXG4gIFBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi4vc21hcnQtc3RvcmFnZS9zbWFydC1zdG9yYWdlLW1vZGVsJztcclxuaW1wb3J0IHsgWGRtU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2UveGRtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcgfSBmcm9tICcuL3NtYXJ0LWFjY2Vzcy1jb250cm9sLWNvbmZpZyc7XHJcbmltcG9ydCB7IG51bGxTYWZlSXNFcXVpdmFsZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuLy8gaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAncXVlcnlzdHJpbmcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0QXV0aFNlcnZpY2Uge1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhuU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHhkbVNlcnZpY2U6IFhkbVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RBVEFfU0VSVklDRV9VUkwpIHByaXZhdGUgc21hcnREYXRhU2VydmljZVVybCxcclxuICAgIEBJbmplY3QoU01BUlRfRE9NQUlOX0ZPUk1BVCkgcHJpdmF0ZSBzbWFydERvbWFpbkZvcm1hdFVybDogc3RyaW5nLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGdldExvZ2luU3RhZmYoKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTbWFydEF1dGhTZXJ2aWNlIC0gZ2V0TG9naW5TdGFmZigpJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRGV2TW9kZSAmJiB0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgaWYgKHRoaXMubG9naW5TdGFmZi5zdGFmZklkKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBpbnRlcm5hbCBpbnN0YW5jZSBpbiBzZXJ2aWNlJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9naW5TdGFmZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgdGhpcy5sb2dpblN0YWZmLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYodGhpcy5sb2dpblN0YWZmLnVzZXJOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb20odGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzdG9yZWRSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoc3RvcmVkUmVzdWx0ICYmIHN0b3JlZFJlc3VsdC5zdGFmZklkKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCBmcm9tIHNlc3Npb24uJyxcclxuICAgICAgICAgICAgICBzdG9yZWRSZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBzdG9yZWRSZXN1bHQ7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoc3RvcmVkUmVzdWx0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQudXNlck5hbWUpIHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgJyMjIyMjIGdldExvZ2luU3RhZmYoKTogZ2V0IHVzaW5nIHByZXNldCB1c2VyIG5hbWUnLFxyXG4gICAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHN0b3JlZFJlc3VsdC51c2VyTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJOYW1lID0gdGhpcy5hdXRoblNlcnZpY2UuZ2V0QWNjb3VudCgpLnVzZXJOYW1lO1xyXG4gICAgICAgICAgY29uc3Qgc3RhZmZOYW1lID0gdXNlck5hbWUuc3Vic3RyaW5nKDAsIHVzZXJOYW1lLmluZGV4T2YoJ0AnKSk7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBsb2dpbkxvZ2luU3RhZmYoKTogZ2V0IHVzaW5nIGxvZ2luIHN0YWZmIG5hbWUgJyxcclxuICAgICAgICAgICAgICBzdGFmZk5hbWUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFmZihzdGFmZk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZWFtVXJsKGFwcDogc3RyaW5nLCBhZnRlckhhc2g6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApICsgYWZ0ZXJIYXNoO1xyXG4gIH1cclxuICBwcml2YXRlIGlzU2FtZUhvc3QodXJsLCBhcHApIHtcclxuICAgIHJldHVybiB0aGlzLnNtYXJ0RG9tYWluRm9ybWF0VXJsLnJlcGxhY2UoJyR7QVBQfScsIGFwcCkgPT09IHVybDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWRpcmVjdFRvVGVhbShsb2dpblN0YWZmOiBMb2dpblN0YWZmKSB7XHJcbiAgICBpZiAobG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoKHJvbGUpID0+IHJvbGUucm9sZUlkID09PSAnRVVVU1BDJykgPiAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAnaW52ZXN0aWdhdGlvbicpKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmdldFRlYW1VcmwoJ2ludmVzdGlnYXRpb24nLCAnL2Fzc2lnbm1lbnQnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgbG9naW5TdGFmZi5yb2xlcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHJvbGUpID0+IHJvbGUucm9sZUlkLnN1YnN0cmluZygwLCAzKSA9PT0gJ1JTQycsXHJcbiAgICAgICkgPiAtMVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICghdGhpcy5pc1NhbWVIb3N0KHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sICdyc2MnKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdyc2MnLCAnL29mZmVuZGVyLWxpc3QnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcjogU2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgaWYgKHNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgLy8gaWYgKCFzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVsYXRpb24gPSBhd2FpdCB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLm9mZmVuZGVySWQsXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgICAgIGlmIChyZWxhdGlvbikge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHJlbGF0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIoc2VsZWN0ZWRPZmZlbmRlcik7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxlY3RlZE9mZmVuZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMueGRtU2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgdGhpcy5hdXRoblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0UGVybWlzc2lvbihcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICApIHtcclxuICAgIGlmICghdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIHRoaXMubG9naW5TdGFmZiA9IGF3YWl0IHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHRoaXMubG9naW5TdGFmZi5wZXJtaXNzaW9ucztcclxuICAgIGNvbnN0IHJlc291cmNlID0gcm91dGUudXJsWzBdLnBhdGg7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gYXdhaXQgdGhpcy54ZG1TZXJ2aWNlLmdldFNlbGVjdGVkT2ZmZW5kZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc3QgcmVsYXRpb24gPSBhd2FpdCB0aGlzLmdldFN0YWZmT2ZmZW5kZXJSZWxhdGlvbihcclxuICAgICAgICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIub2ZmZW5kZXJJZCxcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKHJlbGF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9ICdOT0FTU0lHTic7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy54ZG1TZXJ2aWNlLnNldFNlbGVjdGVkT2ZmZW5kZXIodGhpcy5zZWxlY3RlZE9mZmVuZGVyKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkT2ZmZW5kZXJcclxuICAgICAgLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbY2xhc3NePVwic2FjLVwiXScpO1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC9ec2FjLShcXFMrKS0oXFxTKykkL2k7XHJcblxyXG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgaGlkZTtcclxuICAgICAgbGV0IGRpc2FibGU7XHJcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYy5tYXRjaChwYXR0ZXJuKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzKTtcclxuICAgICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZCA9IHJlc3VsdHNbMV0gPyByZXN1bHRzWzFdLnRvVXBwZXJDYXNlKCkgOiBudWxsO1xyXG4gICAgICAgICAgY29uc3QgcmlnaHQgPSByZXN1bHRzWzJdO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1swXSk7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzFdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMl0pO1xyXG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoZnVuY3Rpb24gKHApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAucmVzb3VyY2UgPT09IHJlc291cmNlICYmXHJcbiAgICAgICAgICAgICAgcC5yb2xlSWQgPT09IHJvbGVJZCAmJlxyXG4gICAgICAgICAgICAgIHAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9PT0gYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByZXNvdXJjZTogJywgcmVzb3VyY2UpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhcHBNb2R1bGVJZDogJywgYXBwTW9kdWxlSWQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIHNldFBlcm1pc3Npb24oKSByb2xlSWQ6ICcsIHJvbGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgJyMjIyMjIHNldFBlcm1pc3Npb24oKSBhc3NpZ25tZW50IHJlbGF0aW9uOiAnLFxyXG4gICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgICovXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgTWF0Y2hlZCBwZXJtaXNzaW9uOiAnLCBwZXJtaXNzaW9uKTtcclxuXHJcbiAgICAgICAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBpZiAocmlnaHQgPT09ICdyZWFkJykge1xyXG4gICAgICAgICAgICAgIGlmICghcGVybWlzc2lvbi5yZWFkRmxhZykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICd1cGRhdGUnICYmICFwZXJtaXNzaW9uLnVwZGF0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZGVsZXRlJyAmJiAhcGVybWlzc2lvbi5kZWxldGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdjbG9zZScgJiYgIXBlcm1pc3Npb24uY2xvc2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2V4cHVuZ2UnICYmICFwZXJtaXNzaW9uLmV4cHVuZ2VGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdCVVRUT04nKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGhpZGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNhYmxlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ2hpZGU6ICcsIGhpZGUpO1xyXG4gICAgICBjb25zb2xlLmxvZygnZGlzYWJsZTogJywgZGlzYWJsZSk7XHJcbiAgICAgIGlmIChoaWRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUh0bWxFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1Blcm1pc3Npb24oYWNjZXNzQ29udHJvbENvbmZpZzogU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnKSB7XHJcbiAgICBjb25zdCBzZWxEYXRhID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb3V0ZS5kYXRhO1xyXG4gICAgdGhpcy5sb2dpblN0YWZmID0gc2VsRGF0YS5sb2dpblN0YWZmO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsRGF0YS5zZWxlY3RlZE9mZmVuZGVyO1xyXG5cclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zO1xyXG4gICAgY29uc3QgcmVzb3VyY2UgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLnVybFswXS5wYXRoO1xyXG4gICAgY29uc3Qgcm9sZUlkID0gYWNjZXNzQ29udHJvbENvbmZpZy5yb2xlSWRcclxuICAgICAgPyBhY2Nlc3NDb250cm9sQ29uZmlnLnJvbGVJZC50b1VwcGVyQ2FzZSgpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFjY2Vzc1R5cGUgPSBhY2Nlc3NDb250cm9sQ29uZmlnLmFjY2Vzc1R5cGU7XHJcbiAgICBjb25zdCBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gIXRoaXMuc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICA/ICdOL0EnXHJcbiAgICAgIDogdGhpcy5zZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQoKHApID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFjY2Vzc0NvbnRyb2xDb25maWcuYXBwTW9kdWxlSWRcclxuICAgICAgICAgICYmIHAucmVzb3VyY2UgPT09IHJlc291cmNlXHJcbiAgICAgICAgICAmJiAoIXJvbGVJZCB8fCBwLnJvbGVJZCA9PT0gcm9sZUlkKVxyXG4gICAgICAgICAgJiYgKHAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9PT0gJ04vQScgfHxcclxuICAgICAgICBwLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPT09IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2RlbGV0ZScgJiYgIXBlcm1pc3Npb24uZGVsZXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdleHB1bmdlJyAmJiAhcGVybWlzc2lvbi5leHB1bmdlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwRmVhdHVyZUFjdGl2YXRlKFxyXG4gICAgbG9naW5TdGFmZjogTG9naW5TdGFmZixcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkID0gbnVsbCxcclxuICApIHtcclxuICAgIC8vIGlmICghdGhpcy5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgYXBwTW9kdWxlSWQpKSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuaGFzQXBwRmVhdHVyZVBlcm1pc3Npb24oXHJcbiAgICAgIGxvZ2luU3RhZmYucGVybWlzc2lvbnMsXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGFwcE1vZHVsZUlkLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBpc0F1dGhFbmFibGUocm9sZXM6IFJvbGVbXSwgYXBwTW9kdWxlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHJvbGVzICYmIHJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgcmV0dXJuIHJvbGVzLm1hcChyID0+IHIucm9sZUlkKS5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMSB8fCBhcHBNb2R1bGVJZCA9PT0gJ1JSJztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSxcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoYXBwTW9kdWxlSWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSAmJiBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCxcclxuICAgICAgICAgICkgPiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLmZpbmRJbmRleCgocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeHRlcm5hbFJvbGUocm9sZUlkKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGVJZCkge1xyXG4gICAgICBjYXNlICdFVURUTCc6XHJcbiAgICAgIGNhc2UgJ0VVRFVTTSc6XHJcbiAgICAgIGNhc2UgJ0VVSkRHJzpcclxuICAgICAgY2FzZSAnRVVNUEQnOlxyXG4gICAgICBjYXNlICdFVVNPVFYnOlxyXG4gICAgICBjYXNlICdFVVVTQTInOlxyXG4gICAgICBjYXNlICdFVVVTQU8nOlxyXG4gICAgICBjYXNlICdFVVVTUEMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnRha2VSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnT1BBJzpcclxuICAgICAgY2FzZSAnT1BTJzpcclxuICAgICAgY2FzZSAnU09QUyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAnc3R5bGUnLFxyXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzOiBub25lO2N1cnNvcjogbm90LWFsbG93ZWQ7JyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICctMScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICdoaWRkZW4nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lOycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZih1c2VyTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZpbmR2U3RhZmZzKGlucHV0OiB7d2hlcmU6IHt1c2VyTmFtZTogXCIke3VzZXJOYW1lfVwiLCBhY3RpdmVGbGFnOiB0cnVlfX0pIHtcclxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBzdGFmZklkXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICBwaG9uZVxyXG4gICAgICAgICAgICAgICAgICBlbWFpbFxyXG4gICAgICAgICAgICAgICAgICByb2xlcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHtcclxuICAgICAgICAgICAgICAgICAgICByb2xlSWRcclxuICAgICAgICAgICAgICAgICAgICBhcHBNb2R1bGVJZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYWRGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHJlb3BlbkZsYWdcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBleHB1bmdlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VBcGlGaWVsZE5hbWVcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZsYWdcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWA7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KHRoaXMuc21hcnREYXRhU2VydmljZVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgZ2V0U3RhZmYoKSBmcm9tIHNlcnZpY2UgJywgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhLmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICBzdGFmZklkOiBudW1iZXIsXHJcbiAgICBvZmZlbmRlcklkOiBudW1iZXIsXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zKGlucHV0OiB7d2hlcmU6IHtzdGFmZklkOiAke3N0YWZmSWR9LCBvZmZlbmRlcklkOiAke29mZmVuZGVySWR9fX0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um9sZVBlcm1pc3Npb25zKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJlc291cmNlOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICBxdWVyeSBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3Rze1xyXG4gICAgICAgICAgICBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKGlucHV0OiB7d2hlcmU6IHthcHBNb2R1bGVJZDogJHthcHBNb2R1bGVJZH0sIHJlc291cmNlOiAke3Jlc291cmNlfX19KXtcclxuICAgICAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKCkgZnJvbSBzZXJ2aWNlICcsXHJcbiAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLmZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMudG90YWxDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHJldHVybiB0aHJvd0Vycm9yKCdObyBhY2Nlc3MgcmlnaHQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
761
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNzbWFydC9uZ2Mtc21hcnQtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zbWFydC1hdXRoL3NtYXJ0LWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2xELE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBR3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBSzFEO0lBT0UsMEJBQ1UsSUFBZ0IsRUFDaEIsWUFBeUIsRUFDekIsVUFBc0IsRUFDVSxtQkFBbUIsRUFDdEIsb0JBQTRCO1FBSnpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBQTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7SUFDaEUsQ0FBQzs7OztJQUVHLHdDQUFhOzs7SUFBcEI7UUFBQSxpQkF1REM7UUF0REMsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtnQkFDM0IsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FDVCx5REFBeUQsRUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUI7aUJBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQkFDbkMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxtREFBbUQsRUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoRDtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0MsU0FBUzs7OztRQUFDLFVBQUMsWUFBWTtZQUNyQixJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO2dCQUN4QyxJQUFJLFNBQVMsRUFBRTtvQkFDYixPQUFPLENBQUMsR0FBRyxDQUNULDBDQUEwQyxFQUMxQyxZQUFZLENBQ2IsQ0FBQztpQkFDSDtnQkFDRCxLQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztnQkFDL0IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDekI7aUJBQU0sSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDaEQsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxtREFBbUQsRUFDbkQsS0FBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztpQkFDSDtnQkFDRCxPQUFPLEtBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO2lCQUFNOztvQkFDQyxRQUFRLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFROztvQkFDbEQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlELElBQUksU0FBUyxFQUFFO29CQUNiLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsc0RBQXNELEVBQ3RELFNBQVMsQ0FDVixDQUFDO2lCQUNIO2dCQUNELE9BQU8sS0FBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7Ozs7O0lBRU8scUNBQVU7Ozs7OztJQUFsQixVQUFtQixHQUFXLEVBQUUsU0FBaUI7UUFDL0MsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdEUsQ0FBQzs7Ozs7OztJQUNPLHFDQUFVOzs7Ozs7SUFBbEIsVUFBbUIsR0FBRyxFQUFFLEdBQUc7UUFDekIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7SUFDbEUsQ0FBQzs7Ozs7SUFFTSx5Q0FBYzs7OztJQUFyQixVQUFzQixVQUFzQjtRQUMxQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUzs7OztRQUFDLFVBQUMsSUFBSSxJQUFLLE9BQUEsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQXhCLENBQXdCLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDN0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDeEU7U0FDRjthQUFNLElBQ0wsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTOzs7O1FBQ3hCLFVBQUMsSUFBSSxJQUFLLE9BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBckMsQ0FBcUMsRUFDaEQsR0FBRyxDQUFDLENBQUMsRUFDTjtZQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ2pFO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVZLDhDQUFtQjs7OztJQUFoQyxVQUFpQyxnQkFBa0M7Ozs7Ozs2QkFDN0QsZ0JBQWdCLEVBQWhCLHdCQUFnQjs7d0JBRUQscUJBQU0sSUFBSSxDQUFDLHdCQUF3QixDQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDdkIsZ0JBQWdCLENBQUMsVUFBVSxDQUM1QixDQUFDLFNBQVMsRUFBRSxFQUFBOzt3QkFIUCxRQUFRLEdBQUcsU0FHSjt3QkFDYixJQUFJLFFBQVEsRUFBRTs0QkFDWixnQkFBZ0IsQ0FBQyx5QkFBeUIsR0FBRyxRQUFRLENBQUM7eUJBQ3ZEOzZCQUFNOzRCQUNMLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLFVBQVUsQ0FBQzt5QkFDekQ7Ozt3QkFHSCxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7d0JBQ3RELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQzs7Ozs7S0FDMUM7Ozs7SUFHTSxpQ0FBTTs7O0lBQWI7UUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7Ozs7O0lBRVksd0NBQWE7Ozs7O0lBQTFCLFVBQ0UsV0FBbUIsRUFDbkIsS0FBNkI7Ozs7Ozs7NkJBRXpCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBaEIsd0JBQWdCO3dCQUNsQixLQUFBLElBQUksQ0FBQTt3QkFBYyxxQkFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFBOzt3QkFBdkQsR0FBSyxVQUFVLEdBQUcsU0FBcUMsQ0FBQzs7O3dCQUVwRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO3dCQUN6QyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJOzZCQUU5QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBdEIsd0JBQXNCO3dCQUN4QixLQUFBLElBQUksQ0FBQTt3QkFBb0IscUJBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFBOzt3QkFBbkUsR0FBSyxnQkFBZ0IsR0FBRyxTQUEyQyxDQUFDOzs7NkJBR2xFLElBQUksQ0FBQyxnQkFBZ0IsRUFBckIsd0JBQXFCOzt3QkFFTixxQkFBTSxJQUFJLENBQUMsd0JBQXdCLENBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUNqQyxDQUFDLFNBQVMsRUFBRSxFQUFBOzt3QkFIUCxRQUFRLEdBQUcsU0FHSjt3QkFDYixJQUFJLFFBQVEsRUFBRTs0QkFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsUUFBUSxDQUFDO3lCQUM1RDs2QkFBTTs0QkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsVUFBVSxDQUFDO3lCQUM5RDt3QkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzs7d0JBSXZELHlCQUF5QixHQUFHLElBQUksQ0FBQyxnQkFBZ0I7NkJBQ3BELHlCQUF5Qjt3QkFFdEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDdkQsT0FBTyxHQUFHLG9CQUFvQjt3QkFFcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPOzs7O3dCQUFDLFVBQUMsT0FBTzs7Z0NBQy9CLElBQUk7O2dDQUNKLE9BQU87NEJBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPOzs7OzRCQUFDLFVBQUMsQ0FBQzs7b0NBQ3BCLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQ0FDaEMsd0JBQXdCO2dDQUN4QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs7d0NBQzNCLFFBQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTs7d0NBQ3JELEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDOzs7Ozt3Q0FJbEIsVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJOzs7O29DQUFDLFVBQVUsQ0FBQzt3Q0FDN0MsT0FBTyxDQUNMLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVzs0Q0FDN0IsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFROzRDQUN2QixDQUFDLENBQUMsTUFBTSxLQUFLLFFBQU07NENBQ25CLENBQUMsQ0FBQyx5QkFBeUIsS0FBSyx5QkFBeUIsQ0FDMUQsQ0FBQztvQ0FDSixDQUFDLEVBQUM7b0NBQ0Y7Ozs7Ozs7O3NDQVFFO29DQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxDQUFDLENBQUM7b0NBRXRELElBQUksVUFBVSxFQUFFO3dDQUNkLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTs0Q0FDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0RBQ3hCLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtvREFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQztpREFDYjs2Q0FDRjtpREFBTTtnREFDTCxJQUFJLEdBQUcsS0FBSyxDQUFDOzZDQUNkO3lDQUNGOzZDQUFNLElBQ0wsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzs0Q0FDOUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzs0Q0FDOUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzs0Q0FDOUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzs0Q0FDOUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0Q0FDNUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQzs0Q0FDaEQsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUM5Qzs0Q0FDQSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO2dEQUNqQyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7b0RBQ2xCLElBQUksR0FBRyxJQUFJLENBQUM7aURBQ2I7NkNBQ0Y7aURBQU07Z0RBQ0wsSUFBSSxPQUFPLEtBQUssS0FBSyxFQUFFO29EQUNyQixPQUFPLEdBQUcsSUFBSSxDQUFDO2lEQUNoQjs2Q0FDRjt5Q0FDRjs2Q0FBTTs0Q0FDTCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO2dEQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFDOzZDQUNkO2lEQUFNO2dEQUNMLE9BQU8sR0FBRyxLQUFLLENBQUM7NkNBQ2pCO3lDQUNGO3FDQUNGO3lDQUFNO3dDQUNMLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTs0Q0FDcEIsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO2dEQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDOzZDQUNiO3lDQUNGOzZDQUFNLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7NENBQ3hDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtnREFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQzs2Q0FDYjt5Q0FDRjs2Q0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUU7NENBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUM7eUNBQ2hCO3FDQUNGO2lDQUNGOzRCQUNILENBQUMsRUFBQyxDQUFDOzRCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dDQUNqQixLQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUMvQjtpQ0FBTSxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0NBQzNCLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzs2QkFDbEM7d0JBQ0gsQ0FBQyxFQUFDLENBQUM7Ozs7O0tBQ0o7Ozs7O0lBRU0sMENBQWU7Ozs7SUFBdEIsVUFBdUIsbUJBQTZDOztZQUM1RCxPQUFPLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUk7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7O1lBRTNDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVc7O1lBQ3pDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7O1lBQ2hELE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNO1lBQ3ZDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzFDLENBQUMsQ0FBQyxJQUFJOztZQUNGLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVOztZQUMzQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7YUFDckQseUJBQXlCO1lBQzFCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUI7O1lBRTdDLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSTs7OztRQUFDLFVBQUMsQ0FBQztZQUNwQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLFdBQVcsS0FBSyxtQkFBbUIsQ0FBQyxXQUFXO2dCQUNqRCxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyx5QkFBeUIsS0FBSyx5QkFBeUIsQ0FDMUQsQ0FBQztRQUNKLENBQUMsRUFBQztRQUVGLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFO2dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDeEIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7cUJBQU07b0JBQ0wsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtpQkFBTSxJQUNMLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ25ELENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ25ELENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ25ELENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ25ELENBQUMsVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pELENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7Z0JBQ3JELENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFDbkQ7Z0JBQ0EsT0FBTyxLQUFLLENBQUM7YUFDZDtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7YUFBTTtZQUNMLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRTtnQkFDekIsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7O0lBRU0sZ0RBQXFCOzs7Ozs7SUFBNUIsVUFDRSxVQUFzQixFQUN0QixPQUFlLEVBQ2YsV0FBa0I7UUFBbEIsNEJBQUEsRUFBQSxrQkFBa0I7UUFFbEIsMkRBQTJEO1FBQzNELGlCQUFpQjtRQUNqQixJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQ2pDLFVBQVUsQ0FBQyxXQUFXLEVBQ3RCLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQscUNBQXFDO0lBQ3JDLG1HQUFtRztJQUNuRyxNQUFNO0lBQ04sa0JBQWtCO0lBQ2xCLElBQUk7Ozs7Ozs7Ozs7O0lBRUcsd0NBQWE7Ozs7Ozs7Ozs7O0lBQXBCLFVBQXFCLEtBQWE7UUFDaEMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7Ozs7SUFFTyxrREFBdUI7Ozs7Ozs7SUFBL0IsVUFDRSxXQUF5QixFQUN6QixPQUFlLEVBQ2YsV0FBbUI7UUFFbkIsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsT0FBTyxDQUNMLFdBQVcsQ0FBQyxTQUFTOzs7O2dCQUNuQixVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUF2RCxDQUF1RCxFQUMvRCxHQUFHLENBQUMsQ0FBQyxDQUNQLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxPQUFPLFdBQVcsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQXRCLENBQXNCLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNsRTtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7SUFFTyx5Q0FBYzs7Ozs7SUFBdEIsVUFBdUIsTUFBTTtRQUMzQixRQUFRLE1BQU0sRUFBRTtZQUNkLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDOzs7Ozs7SUFFTyx1Q0FBWTs7Ozs7SUFBcEIsVUFBcUIsSUFBVTtRQUM3QixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sNkNBQWtCOzs7OztJQUExQixVQUEyQixPQUFnQjtRQUN6Qyx3QkFBd0I7UUFDeEIsUUFBUSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3hCLEtBQUssR0FBRztnQkFDTixPQUFPLENBQUMsWUFBWSxDQUNsQixPQUFPLEVBQ1AsMkNBQTJDLENBQzVDLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDN0MsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sMENBQWU7Ozs7O0lBQXZCLFVBQXdCLE9BQWdCO1FBQ3RDLDRDQUE0QztRQUM1QyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7OztJQUVPLG1DQUFROzs7OztJQUFoQixVQUFpQixRQUFnQjtRQUFqQyxpQkFnRUM7O1lBL0RPLFdBQVcsR0FBRyw0RUFFK0IsUUFBUSxxaUNBb0NqRDtRQUVWLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQzNELElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRzs7OztRQUFDLFVBQUMsTUFBTTtZQUNULElBQUksU0FBUyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdkQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztvQkFDckMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLEtBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxLQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQztnQkFDWix5Q0FBeUM7YUFDMUM7UUFDSCxDQUFDLEVBQUMsRUFDRixVQUFVOzs7O1FBQUMsVUFBQyxLQUFLO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs7Ozs7OztJQUVPLG1EQUF3Qjs7Ozs7O0lBQWhDLFVBQ0UsT0FBZSxFQUNmLFVBQWtCOztZQUVaLFdBQVcsR0FBRyx5RkFFNkMsT0FBTyxzQkFBaUIsVUFBVSxrSUFLekY7UUFFVixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUMzRCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUc7Ozs7UUFBQyxVQUFDLE1BQU07WUFDVCxJQUFJLFNBQVMsRUFBRTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUNULGdEQUFnRCxFQUNoRCxNQUFNLENBQ1AsQ0FBQzthQUNIO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztvQkFDckQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7Z0JBQ1oseUNBQXlDO2FBQzFDO1FBQ0gsQ0FBQyxFQUFDLEVBQ0YsVUFBVTs7OztRQUFDLFVBQUMsS0FBSztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7Ozs7Ozs7SUFFTyw2Q0FBa0I7Ozs7OztJQUExQixVQUNFLFdBQW1CLEVBQ25CLFFBQWdCOztZQUVWLFdBQVcsR0FBRyx1SEFFNkMsV0FBVyxvQkFBZSxRQUFRLHNGQUkzRjtRQUVSLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2FBQzNELElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRzs7OztRQUFDLFVBQUMsTUFBTTtZQUNULElBQUksU0FBUyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQ1QsaURBQWlELEVBQ2pELE1BQU0sQ0FDUCxDQUFDO2FBQ0g7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtnQkFDeEQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQztnQkFDYix5Q0FBeUM7YUFDMUM7UUFDSCxDQUFDLEVBQUMsRUFDRixVQUFVOzs7O1FBQUMsVUFBQyxLQUFVO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUNILENBQUM7SUFDTixDQUFDOztnQkF0aEJGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBckJRLFVBQVU7Z0JBR1YsV0FBVztnQkFXWCxVQUFVO2dEQWdCZCxNQUFNLFNBQUMsc0JBQXNCOzZDQUM3QixNQUFNLFNBQUMsbUJBQW1COzs7MkJBaEMvQjtDQTJpQkMsQUF2aEJELElBdWhCQztTQXBoQlksZ0JBQWdCOzs7SUFDM0Isc0NBQXVCOztJQUN2Qiw0Q0FBbUM7Ozs7O0lBR2pDLGdDQUF3Qjs7Ozs7SUFDeEIsd0NBQWlDOzs7OztJQUNqQyxzQ0FBOEI7Ozs7O0lBQzlCLCtDQUEyRDs7Ozs7SUFDM0QsZ0RBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGZyb20sIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gIExvZ2luU3RhZmYsXHJcbiAgU2VsZWN0ZWRPZmZlbmRlcixcclxuICBTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMLFxyXG4gIFNNQVJUX0RPTUFJTl9GT1JNQVQsXHJcbiAgUm9sZSxcclxuICBQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4uL3NtYXJ0LXN0b3JhZ2Uvc21hcnQtc3RvcmFnZS1tb2RlbCc7XHJcbmltcG9ydCB7IFhkbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zdG9yYWdlL3hkbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRBY2Nlc3NDb250cm9sQ29uZmlnIH0gZnJvbSAnLi9zbWFydC1hY2Nlc3MtY29udHJvbC1jb25maWcnO1xyXG5pbXBvcnQgeyBudWxsU2FmZUlzRXF1aXZhbGVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XHJcbi8vIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJ3F1ZXJ5c3RyaW5nJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEF1dGhTZXJ2aWNlIHtcclxuICBsb2dpblN0YWZmOiBMb2dpblN0YWZmO1xyXG4gIHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoblNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB4ZG1TZXJ2aWNlOiBYZG1TZXJ2aWNlLFxyXG4gICAgQEluamVjdChTTUFSVF9EQVRBX1NFUlZJQ0VfVVJMKSBwcml2YXRlIHNtYXJ0RGF0YVNlcnZpY2VVcmwsXHJcbiAgICBASW5qZWN0KFNNQVJUX0RPTUFJTl9GT1JNQVQpIHByaXZhdGUgc21hcnREb21haW5Gb3JtYXRVcmw6IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2dpblN0YWZmKCk6IE9ic2VydmFibGU8TG9naW5TdGFmZj4ge1xyXG4gICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnU21hcnRBdXRoU2VydmljZSAtIGdldExvZ2luU3RhZmYoKScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0Rldk1vZGUgJiYgdGhpcy5sb2dpblN0YWZmKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZCkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgaW50ZXJuYWwgaW5zdGFuY2UgaW4gc2VydmljZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih0aGlzLmxvZ2luU3RhZmYpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSkge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgdXNpbmcgcHJlc2V0IHVzZXIgbmFtZScsXHJcbiAgICAgICAgICAgIHRoaXMubG9naW5TdGFmZixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YWZmKHRoaXMubG9naW5TdGFmZi51c2VyTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMueGRtU2VydmljZS5nZXRMb2dpblN0YWZmKCkpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoc3RvcmVkUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHN0b3JlZFJlc3VsdCAmJiBzdG9yZWRSZXN1bHQuc3RhZmZJZCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgZ2V0TG9naW5TdGFmZigpOiBnZXQgZnJvbSBzZXNzaW9uLicsXHJcbiAgICAgICAgICAgICAgc3RvcmVkUmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2dpblN0YWZmID0gc3RvcmVkUmVzdWx0O1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHN0b3JlZFJlc3VsdCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdG9yZWRSZXN1bHQgJiYgc3RvcmVkUmVzdWx0LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRMb2dpblN0YWZmKCk6IGdldCB1c2luZyBwcmVzZXQgdXNlciBuYW1lJyxcclxuICAgICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFmZihzdG9yZWRSZXN1bHQudXNlck5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB1c2VyTmFtZSA9IHRoaXMuYXV0aG5TZXJ2aWNlLmdldEFjY291bnQoKS51c2VyTmFtZTtcclxuICAgICAgICAgIGNvbnN0IHN0YWZmTmFtZSA9IHVzZXJOYW1lLnN1YnN0cmluZygwLCB1c2VyTmFtZS5pbmRleE9mKCdAJykpO1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAnIyMjIyMgbG9naW5Mb2dpblN0YWZmKCk6IGdldCB1c2luZyBsb2dpbiBzdGFmZiBuYW1lICcsXHJcbiAgICAgICAgICAgICAgc3RhZmZOYW1lLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhZmYoc3RhZmZOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGVhbVVybChhcHA6IHN0cmluZywgYWZ0ZXJIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc21hcnREb21haW5Gb3JtYXRVcmwucmVwbGFjZSgnJHtBUFB9JywgYXBwKSArIGFmdGVySGFzaDtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1NhbWVIb3N0KHVybCwgYXBwKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydERvbWFpbkZvcm1hdFVybC5yZXBsYWNlKCcke0FQUH0nLCBhcHApID09PSB1cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVkaXJlY3RUb1RlYW0obG9naW5TdGFmZjogTG9naW5TdGFmZikge1xyXG4gICAgaWYgKGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KChyb2xlKSA9PiByb2xlLnJvbGVJZCA9PT0gJ0VVVVNQQycpID4gLTEpIHtcclxuICAgICAgaWYgKCF0aGlzLmlzU2FtZUhvc3Qod2luZG93LmxvY2F0aW9uLm9yaWdpbiwgJ2ludmVzdGlnYXRpb24nKSkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nZXRUZWFtVXJsKCdpbnZlc3RpZ2F0aW9uJywgJy9hc3NpZ25tZW50Jyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIGxvZ2luU3RhZmYucm9sZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChyb2xlKSA9PiByb2xlLnJvbGVJZC5zdWJzdHJpbmcoMCwgMykgPT09ICdSU0MnLFxyXG4gICAgICApID4gLTFcclxuICAgICkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYW1lSG9zdCh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCAncnNjJykpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2V0VGVhbVVybCgncnNjJywgJy9vZmZlbmRlci1saXN0Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXI6IFNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgIGlmIChzZWxlY3RlZE9mZmVuZGVyKSB7XHJcbiAgICAgIC8vIGlmICghc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IHJlbGF0aW9uID0gYXdhaXQgdGhpcy5nZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICAgICAgdGhpcy5sb2dpblN0YWZmLnN0YWZmSWQsXHJcbiAgICAgICAgc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSByZWxhdGlvbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZE9mZmVuZGVyLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAnTk9BU1NJR04nO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIHRoaXMueGRtU2VydmljZS5zZXRTZWxlY3RlZE9mZmVuZGVyKHNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9mZmVuZGVyID0gc2VsZWN0ZWRPZmZlbmRlcjtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy54ZG1TZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICB0aGlzLmF1dGhuU2VydmljZS5sb2dvdXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRQZXJtaXNzaW9uKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICkge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2luU3RhZmYpIHtcclxuICAgICAgdGhpcy5sb2dpblN0YWZmID0gYXdhaXQgdGhpcy54ZG1TZXJ2aWNlLmdldExvZ2luU3RhZmYoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy5sb2dpblN0YWZmLnBlcm1pc3Npb25zO1xyXG4gICAgY29uc3QgcmVzb3VyY2UgPSByb3V0ZS51cmxbMF0ucGF0aDtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPZmZlbmRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBhd2FpdCB0aGlzLnhkbVNlcnZpY2UuZ2V0U2VsZWN0ZWRPZmZlbmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpIHtcclxuICAgICAgLy8gaWYgKCF0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCkge1xyXG4gICAgICBjb25zdCByZWxhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0U3RhZmZPZmZlbmRlclJlbGF0aW9uKFxyXG4gICAgICAgIHRoaXMubG9naW5TdGFmZi5zdGFmZklkLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5vZmZlbmRlcklkLFxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVsYXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHJlbGF0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPZmZlbmRlci5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID0gJ05PQVNTSUdOJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnhkbVNlcnZpY2Uuc2V0U2VsZWN0ZWRPZmZlbmRlcih0aGlzLnNlbGVjdGVkT2ZmZW5kZXIpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZCA9IHRoaXMuc2VsZWN0ZWRPZmZlbmRlclxyXG4gICAgICAuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjbGFzc149XCJzYWMtXCJdJyk7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gL15zYWMtKFxcUyspLShcXFMrKSQvaTtcclxuXHJcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBoaWRlO1xyXG4gICAgICBsZXQgZGlzYWJsZTtcclxuICAgICAgZWxlbWVudC5jbGFzc0xpc3QuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBjLm1hdGNoKHBhdHRlcm4pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHMpO1xyXG4gICAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgY29uc3Qgcm9sZUlkID0gcmVzdWx0c1sxXSA/IHJlc3VsdHNbMV0udG9VcHBlckNhc2UoKSA6IG51bGw7XHJcbiAgICAgICAgICBjb25zdCByaWdodCA9IHJlc3VsdHNbMl07XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHRzWzBdKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdHNbMV0pO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0c1syXSk7XHJcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uID0gcGVybWlzc2lvbnMuZmluZChmdW5jdGlvbiAocCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFwcE1vZHVsZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UgJiZcclxuICAgICAgICAgICAgICBwLnJvbGVJZCA9PT0gcm9sZUlkICYmXHJcbiAgICAgICAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJlc291cmNlOiAnLCByZXNvdXJjZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFwcE1vZHVsZUlkOiAnLCBhcHBNb2R1bGVJZCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgc2V0UGVybWlzc2lvbigpIHJvbGVJZDogJywgcm9sZUlkKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAnIyMjIyMgc2V0UGVybWlzc2lvbigpIGFzc2lnbm1lbnQgcmVsYXRpb246ICcsXHJcbiAgICAgICAgICAgIGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyBNYXRjaGVkIHBlcm1pc3Npb246ICcsIHBlcm1pc3Npb24pO1xyXG5cclxuICAgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGlmIChyaWdodCA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnY3JlYXRlJyAmJiAhcGVybWlzc2lvbi5jcmVhdGVGbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAgICAgICAocmlnaHQgPT09ICdkZWxldGUnICYmICFwZXJtaXNzaW9uLmRlbGV0ZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnYXNzaWduJyAmJiAhcGVybWlzc2lvbi5hc3NpZ25GbGFnKSB8fFxyXG4gICAgICAgICAgICAgIChyaWdodCA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAnZXhwdW5nZScgJiYgIXBlcm1pc3Npb24uZXhwdW5nZUZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgKHJpZ2h0ID09PSAncmVvcGVuJyAmJiAhcGVybWlzc2lvbi5yZW9wZW5GbGFnKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICBoaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0JVVFRPTicpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJpZ2h0ID09PSAncmVhZCcpIHtcclxuICAgICAgICAgICAgICBpZiAoaGlkZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm5vZGVOYW1lID09PSAnQlVUVE9OJykge1xyXG4gICAgICAgICAgICAgIGlmIChoaWRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc2FibGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZygnaGlkZTogJywgaGlkZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkaXNhYmxlOiAnLCBkaXNhYmxlKTtcclxuICAgICAgaWYgKGhpZGUgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmhpZGVIdG1sRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrUGVybWlzc2lvbihhY2Nlc3NDb250cm9sQ29uZmlnOiBTbWFydEFjY2Vzc0NvbnRyb2xDb25maWcpIHtcclxuICAgIGNvbnN0IHNlbERhdGEgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvdXRlLmRhdGE7XHJcbiAgICB0aGlzLmxvZ2luU3RhZmYgPSBzZWxEYXRhLmxvZ2luU3RhZmY7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIgPSBzZWxEYXRhLnNlbGVjdGVkT2ZmZW5kZXI7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSB0aGlzLmxvZ2luU3RhZmYucGVybWlzc2lvbnM7XHJcbiAgICBjb25zdCByZXNvdXJjZSA9IGFjY2Vzc0NvbnRyb2xDb25maWcucm91dGUudXJsWzBdLnBhdGg7XHJcbiAgICBjb25zdCByb2xlSWQgPSBhY2Nlc3NDb250cm9sQ29uZmlnLnJvbGVJZFxyXG4gICAgICA/IGFjY2Vzc0NvbnRyb2xDb25maWcucm9sZUlkLnRvVXBwZXJDYXNlKClcclxuICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYWNjZXNzVHlwZSA9IGFjY2Vzc0NvbnRyb2xDb25maWcuYWNjZXNzVHlwZTtcclxuICAgIGNvbnN0IGFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQgPSAhdGhpcy5zZWxlY3RlZE9mZmVuZGVyXHJcbiAgICAgIC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgID8gJ04vQSdcclxuICAgICAgOiB0aGlzLnNlbGVjdGVkT2ZmZW5kZXIuYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZDtcclxuXHJcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gcGVybWlzc2lvbnMuZmluZCgocCkgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHAuYXBwTW9kdWxlSWQgPT09IGFjY2Vzc0NvbnRyb2xDb25maWcuYXBwTW9kdWxlSWQgJiZcclxuICAgICAgICBwLnJlc291cmNlID09PSByZXNvdXJjZSAmJlxyXG4gICAgICAgICghcm9sZUlkIHx8IHAucm9sZUlkID09PSByb2xlSWQpICYmXHJcbiAgICAgICAgcC5hc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkID09PSBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uLnJlYWRGbGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2NyZWF0ZScgJiYgIXBlcm1pc3Npb24uY3JlYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3VwZGF0ZScgJiYgIXBlcm1pc3Npb24udXBkYXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2RlbGV0ZScgJiYgIXBlcm1pc3Npb24uZGVsZXRlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Fzc2lnbicgJiYgIXBlcm1pc3Npb24uYXNzaWduRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ2Nsb3NlJyAmJiAhcGVybWlzc2lvbi5jbG9zZUZsYWcpIHx8XHJcbiAgICAgICAgKGFjY2Vzc1R5cGUgPT09ICdleHB1bmdlJyAmJiAhcGVybWlzc2lvbi5leHB1bmdlRmxhZykgfHxcclxuICAgICAgICAoYWNjZXNzVHlwZSA9PT0gJ3Jlb3BlbicgJiYgIXBlcm1pc3Npb24ucmVvcGVuRmxhZylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYWNjZXNzVHlwZSA9PT0gJ3JlYWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwRmVhdHVyZUFjdGl2YXRlKFxyXG4gICAgbG9naW5TdGFmZjogTG9naW5TdGFmZixcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkID0gbnVsbCxcclxuICApIHtcclxuICAgIC8vIGlmICghdGhpcy5pc0F1dGhFbmFibGUobG9naW5TdGFmZi5yb2xlcywgYXBwTW9kdWxlSWQpKSB7XHJcbiAgICAvLyAgIHJldHVybiB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIHRoaXMuaGFzQXBwRmVhdHVyZVBlcm1pc3Npb24oXHJcbiAgICAgIGxvZ2luU3RhZmYucGVybWlzc2lvbnMsXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGFwcE1vZHVsZUlkLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBpc0F1dGhFbmFibGUocm9sZXM6IFJvbGVbXSwgYXBwTW9kdWxlSWQ6IHN0cmluZykge1xyXG4gIC8vICAgaWYgKHJvbGVzICYmIHJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgcmV0dXJuIHJvbGVzLm1hcChyID0+IHIucm9sZUlkKS5maW5kSW5kZXgodGhpcy5pc0V4dGVybmFsUm9sZSkgPiAtMSB8fCBhcHBNb2R1bGVJZCA9PT0gJ1JSJztcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBoYXNJbnRha2VSb2xlKHJvbGVzOiBSb2xlW10pIHtcclxuICAgIGlmIChyb2xlcyAmJiByb2xlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiByb2xlcy5maW5kSW5kZXgodGhpcy5pc0ludGFrZVJvbGUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FwcEZlYXR1cmVQZXJtaXNzaW9uKFxyXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXSxcclxuICAgIGZlYXR1cmU6IHN0cmluZyxcclxuICAgIGFwcE1vZHVsZUlkOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgcGVybWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoYXBwTW9kdWxlSWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSAmJiBwLmFwcE1vZHVsZUlkID09PSBhcHBNb2R1bGVJZCxcclxuICAgICAgICAgICkgPiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLmZpbmRJbmRleCgocCkgPT4gcC5yZXNvdXJjZSA9PT0gZmVhdHVyZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFeHRlcm5hbFJvbGUocm9sZUlkKSB7XHJcbiAgICBzd2l0Y2ggKHJvbGVJZCkge1xyXG4gICAgICBjYXNlICdFVURUTCc6XHJcbiAgICAgIGNhc2UgJ0VVRFVTTSc6XHJcbiAgICAgIGNhc2UgJ0VVSkRHJzpcclxuICAgICAgY2FzZSAnRVVNUEQnOlxyXG4gICAgICBjYXNlICdFVVNPVFYnOlxyXG4gICAgICBjYXNlICdFVVVTQTInOlxyXG4gICAgICBjYXNlICdFVVVTQU8nOlxyXG4gICAgICBjYXNlICdFVVVTUEMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnRha2VSb2xlKHJvbGU6IFJvbGUpIHtcclxuICAgIHN3aXRjaCAocm9sZS5yb2xlSWQpIHtcclxuICAgICAgY2FzZSAnT1BBJzpcclxuICAgICAgY2FzZSAnT1BTJzpcclxuICAgICAgY2FzZSAnU09QUyc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAnc3R5bGUnLFxyXG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzOiBub25lO2N1cnNvcjogbm90LWFsbG93ZWQ7JyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsICctMScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlSHRtbEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgLy8gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICdoaWRkZW4nKTtcclxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lOycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZih1c2VyTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2dpblN0YWZmPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZpbmR2U3RhZmZzKGlucHV0OiB7d2hlcmU6IHt1c2VyTmFtZTogXCIke3VzZXJOYW1lfVwiLCBhY3RpdmVGbGFnOiB0cnVlfX0pIHtcclxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBzdGFmZklkXHJcbiAgICAgICAgICAgICAgICAgIHVzZXJOYW1lXHJcbiAgICAgICAgICAgICAgICAgIGxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZVxyXG4gICAgICAgICAgICAgICAgICBwaG9uZVxyXG4gICAgICAgICAgICAgICAgICBlbWFpbFxyXG4gICAgICAgICAgICAgICAgICByb2xlcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZUlkXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIHtcclxuICAgICAgICAgICAgICAgICAgICByb2xlSWRcclxuICAgICAgICAgICAgICAgICAgICBhcHBNb2R1bGVJZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudFN0YWZmUmVsYXRpb25JZFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYWRGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduRmxhZ1xyXG4gICAgICAgICAgICAgICAgICAgIHJlb3BlbkZsYWdcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZUZsYWdcclxuICAgICAgICAgICAgICAgICAgICBleHB1bmdlRmxhZ1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIG9mZmVuZGVyTGlzdE9wdGlvbklkXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VBcGlGaWVsZE5hbWVcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZsYWdcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWA7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KHRoaXMuc21hcnREYXRhU2VydmljZVVybCwgeyBxdWVyeTogcXVlcnlTdHJpbmcgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMgZ2V0U3RhZmYoKSBmcm9tIHNlcnZpY2UgJywgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXN1bHQuZGF0YS5maW5kdlN0YWZmcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhLmZpbmR2U3RhZmZzLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHRoaXMueGRtU2VydmljZS5zZXRMb2dpblN0YWZmKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luU3RhZmYgPSBkYXRhO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhyb3dFcnJvcignTm8gYWNjZXNzIHJpZ2h0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgJyArIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oXHJcbiAgICBzdGFmZklkOiBudW1iZXIsXHJcbiAgICBvZmZlbmRlcklkOiBudW1iZXIsXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zKGlucHV0OiB7d2hlcmU6IHtzdGFmZklkOiAke3N0YWZmSWR9LCBvZmZlbmRlcklkOiAke29mZmVuZGVySWR9fX0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEge1xyXG4gICAgICAgICAgICAgICAgICBhc3NpZ25tZW50U3RhZmZSZWxhdGlvbklkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBnZXRTdGFmZk9mZmVuZGVyUmVsYXRpb24oKSBmcm9tIHNlcnZpY2UgJyxcclxuICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEuZmluZHZTdGFmZk9mZmVuZGVyUmVsYXRpb25zLmRhdGFbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhLmFzc2lnbm1lbnRTdGFmZlJlbGF0aW9uSWQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRocm93RXJyb3IoJ05vIGFjY2VzcyByaWdodC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um9sZVBlcm1pc3Npb25zKFxyXG4gICAgYXBwTW9kdWxlSWQ6IHN0cmluZyxcclxuICAgIHJlc291cmNlOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuICAgICAgICAgICBxdWVyeSBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3Rze1xyXG4gICAgICAgICAgICBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKGlucHV0OiB7d2hlcmU6IHthcHBNb2R1bGVJZDogJHthcHBNb2R1bGVJZH0sIHJlc291cmNlOiAke3Jlc291cmNlfX19KXtcclxuICAgICAgICAgICAgICB0b3RhbENvdW50XHJcbiAgICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5zbWFydERhdGFTZXJ2aWNlVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICcjIyMjIyBmaW5kdlJvbGVQZXJtaXNzaW9uUGl2b3RzKCkgZnJvbSBzZXJ2aWNlICcsXHJcbiAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlc3VsdC5kYXRhLmZpbmR2Um9sZVBlcm1pc3Npb25QaXZvdHMudG90YWxDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHJldHVybiB0aHJvd0Vycm9yKCdObyBhY2Nlc3MgcmlnaHQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yICcgKyBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|