qms-angular 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/bundles/qms-angular.umd.js +767 -80
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/models/qms-flat-node.model.js +3 -0
  4. package/esm2015/lib/common/models/qms-tree-config.model.js +7 -0
  5. package/esm2015/lib/common/models/qms-tree-node.model.js +8 -0
  6. package/esm2015/lib/components/button/button.js +3 -3
  7. package/esm2015/lib/components/list/list.js +2 -2
  8. package/esm2015/lib/components/qms-nav-drawer/index.js +2 -0
  9. package/esm2015/lib/components/qms-nav-drawer/models/qms-nav-drawer.model.js +10 -0
  10. package/esm2015/lib/components/qms-nav-drawer/public_api.js +4 -0
  11. package/esm2015/lib/components/qms-nav-drawer/qms-nav-drawer.component.js +167 -0
  12. package/esm2015/lib/components/qms-nav-drawer/qms-nav-drawer.module.js +35 -0
  13. package/esm2015/lib/components/related/popup/related-popup.component.js +3 -3
  14. package/esm2015/lib/components/select-include-children/public_api.js +2 -2
  15. package/esm2015/lib/components/select-include-children/select-include-children.component.js +4 -4
  16. package/esm2015/lib/components/select-include-children/services/select-include-children-global.service.js +17 -0
  17. package/esm2015/lib/components/select-one/common/select-one-next.model.js +7 -0
  18. package/esm2015/lib/components/select-one/public_api.js +3 -1
  19. package/esm2015/lib/components/select-one/select-one-next.component.js +95 -0
  20. package/esm2015/lib/components/select-one/select-one.component.js +3 -3
  21. package/esm2015/lib/components/select-one/select-one.module.js +6 -3
  22. package/esm2015/lib/components/select-process-document/select-process-document.component.js +3 -3
  23. package/esm2015/lib/components/tree/basic-tree.component.js +220 -0
  24. package/esm2015/lib/components/tree/index.js +2 -0
  25. package/esm2015/lib/components/tree/public-api.js +9 -0
  26. package/esm2015/lib/components/tree/tree.component.js +2 -3
  27. package/esm2015/lib/components/tree/tree.module.js +4 -1
  28. package/esm2015/lib/components/treeNew/tree.component.js +1 -1
  29. package/esm2015/lib/directives/form.directive.js +9 -3
  30. package/esm2015/lib/directives/qms-multi-icon.directive.js +75 -0
  31. package/esm2015/lib/qms-angular.module.js +6 -3
  32. package/esm2015/lib/services/qms-tree-global.service.js +29 -0
  33. package/esm2015/public-api.js +8 -8
  34. package/esm2015/qms-angular.js +15 -12
  35. package/fesm2015/qms-angular.js +680 -51
  36. package/fesm2015/qms-angular.js.map +1 -1
  37. package/lib/common/models/qms-flat-node.model.d.ts +9 -0
  38. package/lib/common/models/qms-tree-config.model.d.ts +5 -0
  39. package/lib/common/models/qms-tree-node.model.d.ts +25 -0
  40. package/lib/components/qms-nav-drawer/index.d.ts +1 -0
  41. package/lib/components/qms-nav-drawer/models/qms-nav-drawer.model.d.ts +34 -0
  42. package/lib/components/qms-nav-drawer/public_api.d.ts +3 -0
  43. package/lib/components/qms-nav-drawer/qms-nav-drawer.component.d.ts +67 -0
  44. package/lib/components/qms-nav-drawer/qms-nav-drawer.module.d.ts +2 -0
  45. package/lib/components/select-include-children/public_api.d.ts +1 -1
  46. package/lib/components/select-include-children/select-include-children.component.d.ts +3 -3
  47. package/lib/components/select-include-children/services/{select-global.service.d.ts → select-include-children-global.service.d.ts} +1 -1
  48. package/lib/components/select-one/common/select-one-next.model.d.ts +11 -0
  49. package/lib/components/select-one/public_api.d.ts +2 -0
  50. package/lib/components/select-one/select-one-next.component.d.ts +33 -0
  51. package/lib/components/tree/basic-tree.component.d.ts +79 -0
  52. package/lib/components/tree/index.d.ts +1 -0
  53. package/lib/components/tree/public-api.d.ts +8 -0
  54. package/lib/directives/form.directive.d.ts +1 -0
  55. package/lib/directives/qms-multi-icon.directive.d.ts +15 -0
  56. package/lib/services/qms-tree-global.service.d.ts +13 -0
  57. package/lib.theme.scss +5 -4
  58. package/package.json +1 -1
  59. package/public-api.d.ts +7 -7
  60. package/qms-angular.d.ts +14 -11
  61. package/qms-angular.metadata.json +1 -1
  62. package/src/assets/qms-ckeditor-plugin/package-lock.json +48 -0
  63. package/src/lib/components/list/_list-expansion.scss +1 -1
  64. package/src/lib/components/list/list.scss +2 -2
  65. package/src/lib/components/qms-nav-drawer/qms-nav-drawer.component.scss +101 -0
  66. package/src/lib/components/related/popup/related-popup.component.scss +2 -2
  67. package/src/lib/components/select-include-children/select-include-children.component.scss +1 -1
  68. package/src/lib/components/select-one/select-one-next.component.scss +70 -0
  69. package/src/lib/components/select-one/select-one.component.scss +1 -1
  70. package/src/lib/components/select-process-document/select-process-document.component.scss +1 -1
  71. package/src/lib/components/tree/basic-tree.component.scss +168 -0
  72. package/src/themes/core/_checkbox.scss +18 -3
  73. package/src/themes/core/_radio.scss +18 -0
  74. package/src/themes/core/_slide-toggle.scss +17 -0
  75. package/src/themes/core/_table-pure-gap.scss +31 -3
  76. package/src/themes/theme/_variable.scss +3 -0
  77. package/esm2015/lib/components/select-include-children/services/select-global.service.js +0 -17
@@ -738,7 +738,6 @@ export class TreeComponent {
738
738
  }
739
739
  getNodeId(node) {
740
740
  if (!node || !node.id) {
741
- debugger;
742
741
  }
743
742
  return `_${node.parentId ? node.parentId.toLowerCase() : ''}_${node.id.toLowerCase()}_${node.level}`;
744
743
  }
@@ -759,7 +758,7 @@ TreeComponent.decorators = [
759
758
  selector: 'qms-tree',
760
759
  template: "<mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"tree__container\"\r\n>\r\n <mat-tree-node\r\n class=\"tree-branch\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n >\r\n <!-- form thu 1 - child -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n >\r\n </mat-checkbox>\r\n\r\n <!-- form thu 2 -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"ml-10 checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <div\r\n class=\"expand-node\"\r\n *ngIf=\"node.name && !onlyFolder\"\r\n [class.bgSelected]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n (click)=\"selectNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <div class=\"expand-node__text\">\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.name\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n >\r\n {{ itemIcon }}\r\n </mat-icon>\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.svg\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"itemIconSvg\"\r\n >\r\n </mat-icon>\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.path\"\r\n class=\"mat-icon\"\r\n [src]=\"itemIconPath\"\r\n />\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.base64\"\r\n class=\"mat-icon image-base64\"\r\n [src]=\"getImagePath()\"\r\n />\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.none\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getItemIcon(node)\"\r\n ></mat-icon>\r\n <span\r\n class=\"text-node\"\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n </div>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\r\n <!-- form thu 1 - parent -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild\"\r\n [checked]=\"descendantsAllSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <button\r\n class=\"button-boder\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [disableRipple]=\"!node.hasChild\"\r\n [attr.aria-label]=\"'toggle ' + node.filename\"\r\n *ngIf=\"node.name\"\r\n >\r\n <mat-icon\r\n *ngIf=\"openIcon && closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : closeIconColor\r\n }\"\r\n (click)=\"onExpandNode(node, true)\"\r\n >{{ getNodeIcon(node) }}</mat-icon\r\n >\r\n <mat-icon\r\n *ngIf=\"!openIcon || !closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngClass]=\"{\r\n 'open-icon': treeControl.isExpanded(node),\r\n 'not-department-icon': moduleId !== dataType.document\r\n }\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n (click)=\"onExpandNode(node, true)\"\r\n >\r\n </mat-icon>\r\n </button>\r\n <span\r\n *ngIf=\"expandOnTitleClick\"\r\n matTreeNodeToggle\r\n class=\"text-node-parent\"\r\n style=\"cursor: pointer\"\r\n (click)=\"onExpandNode(node, false)\"\r\n [id]=\"getNodeId(node)\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : '#000000'\r\n }\"\r\n >\r\n <span>{{ node.name }}</span>\r\n </span>\r\n <span\r\n *ngIf=\"!expandOnTitleClick\"\r\n class=\"text-node-parent\"\r\n (click)=\"selectFolderNode(node)\"\r\n style=\"cursor: pointer\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <span\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >{{ node.name }}</span\r\n >\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n treeConfig.allowSelectFolder &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon\r\n >\r\n </span>\r\n </mat-tree-node>\r\n</mat-tree>\r\n",
761
760
  encapsulation: ViewEncapsulation.None,
762
- styles: [".tree__container{font-family:Open Sans;font-style:normal;font-weight:400;font-size:.875rem;line-height:19px;color:var(--default-color)}.tree__container .mat-tree-node{color:var(--tree-node-color);min-height:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options{padding:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.tree__container .button{margin-left:6px}.tree__container .button:focus,.tree__container .button:hover{background-color:var(--tree-node-background-color);border-radius:2px;width:auto}.tree__container .button-boder:focus,.tree__container .button:focus{outline:0}.tree__container .button-folder-boder:focus{outline:0}.tree__container .button-folder-boder:focus,.tree__container .button-folder-boder:hover{background-color:var(--tree-node-boder-color);border-radius:2px;width:auto}.tree__container .expand-node{margin-left:8px;min-height:32px;justify-content:space-between;width:100%}.tree__container .expand-node,.tree__container .expand-node .expand-node__text{display:flex;align-items:center}.tree__container .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node.bgSelected .select-one-checked{color:var(--primary)}.tree__container .text-node-parent{width:100%;display:flex;align-items:center;justify-content:space-between;margin-left:10px;cursor:pointer}.tree__container .text-node-parent.active-item{color:#1954a9!important}.tree__container .text-node-parent .select-one-checked{color:var(--primary)}.tree__container .mr-11{margin-right:11px}.tree__container .ml-10{margin-left:10px}.tree__container .tree-branch:hover{background-color:var(--primary-light-12-opacity)}.tree__container .image-base64{width:20px;height:20px}.tree__container .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}::ng-deep .mat-tree .mat-checkbox.qms-group-options{padding:0}::ng-deep .mat-tree .mat-checkbox.qms-group-options.mat-checkbox-checked{background-color:transparent}::ng-deep .mat-tree .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:0}svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.open-icon.not-department-icon svg path,.open-icon svg path:first-child{fill:#1954a9}.mat-checkbox.mat-checkbox-disabled.qms-group-options.mat-checkbox-checked .mat-checkbox-background{background-color:#e0e0e0!important}"]
761
+ styles: [".tree__container{font-family:Open Sans;font-style:normal;font-weight:400;font-size:.875rem;line-height:19px;color:var(--default-color)}.tree__container .mat-tree-node{color:var(--tree-node-color);min-height:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options{padding:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.tree__container .button{margin-left:6px}.tree__container .button:focus,.tree__container .button:hover{background-color:var(--tree-node-background-color);border-radius:2px;width:auto}.tree__container .button-boder:focus,.tree__container .button:focus{outline:0}.tree__container .button-folder-boder:focus{outline:0}.tree__container .button-folder-boder:focus,.tree__container .button-folder-boder:hover{background-color:var(--tree-node-boder-color);border-radius:2px;width:auto}.tree__container .expand-node{margin-left:8px;min-height:32px;justify-content:space-between;width:100%}.tree__container .expand-node,.tree__container .expand-node .expand-node__text{display:flex;align-items:center}.tree__container .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node.bgSelected .select-one-checked{color:var(--primary)}.tree__container .text-node-parent{width:100%;display:flex;align-items:center;justify-content:space-between;margin-left:10px;cursor:pointer}.tree__container .text-node-parent.active-item{color:#1954a9!important}.tree__container .text-node-parent .select-one-checked{color:var(--primary)}.tree__container .mr-11{margin-right:11px}.tree__container .ml-10{margin-left:10px}.tree__container .tree-branch:hover{background-color:var(--primary-light-12-opacity)}.tree__container .image-base64{width:20px;height:20px}.tree__container .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}::ng-deep .mat-tree .mat-checkbox.qms-group-options{padding:0}::ng-deep .mat-tree .mat-checkbox.qms-group-options.mat-checkbox-checked{background-color:transparent}::ng-deep .mat-tree .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:0}svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.open-icon svg path:first-child,.open-icon.not-department-icon svg path{fill:#1954a9}.mat-checkbox.mat-checkbox-disabled.qms-group-options.mat-checkbox-checked .mat-checkbox-background{background-color:#e0e0e0!important}"]
763
762
  },] }
764
763
  ];
765
764
  TreeComponent.ctorParameters = () => [
@@ -784,4 +783,4 @@ TreeComponent.propDecorators = {
784
783
  nodeExpandEvent: [{ type: Output }],
785
784
  treeControlNodes: [{ type: Output }]
786
785
  };
787
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS90cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQW9CNUQsTUFBTSxPQUFPLGFBQWE7SUFzRHhCLFlBQW9CLEtBQXdCLEVBQ2xDLFlB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VSxDQUFDLElBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsUUFBUTtRQUM3QixPQUFPLEdBQUcsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OztZQS8xQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQiw0akxBQW9DO2dCQUVwQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQWhDUSxpQkFBaUI7WUFHakIsWUFBWTtZQUZaLGVBQWU7WUFHZixzQkFBc0I7Ozt1QkE4QjVCLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSzs4QkFDTCxNQUFNO2dDQUNOLE1BQU07NEJBQ04sTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07K0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgSXRlbUljb25UeXBlIH0gZnJvbSAnLi4vcmVsYXRlZC9jb21tb24vaXRlbS1pY29uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFJlbGF0ZWRDb25zdCB9IGZyb20gJy4uL3JlbGF0ZWQvY29tbW9uL3JlbGF0ZWQuY29uc3QnO1xyXG5pbXBvcnQgVHJlZUZ1bmN0aW9ucyBmcm9tICcuL3RyZWUuZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4vbW9kZWwvdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IEtFWUJPQVJEX0RPV05fSUNPTiwgS0VZQk9BUkRfVVBfSUNPTiB9IGZyb20gJy4uLy4uL2NvbW1vbi9xbXMtaWNvbi5jb25zdCc7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4vbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIFRyZWVOb2RlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjaGlsZHJlbj86IFRyZWVOb2RlW107XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbiAgbGV2ZWxUeXBlPzogbnVtYmVyO1xyXG59XHJcbmludGVyZmFjZSBJQ2hlY2tlZE5vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtdHJlZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB0cmVlRGF0YTogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyZWVDb25maWc6IFRyZWVDb25maWc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRhOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgZGlzYWJsZWRMaXN0OiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBleHBhbmRPblRpdGxlQ2xpY2s6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXhwYW5kVG9DaGlsZE5vZGU6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmVudE5vZGVPbkNsaWNrOiBUcmVlRmxhdE5vZGU7XHJcbiAgQE91dHB1dCgpIHNlbGVjdE5vZGVFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdEZvbGRlckV2ZW50OiBFdmVudEVtaXR0ZXI8VHJlZUZsYXROb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hlY2tCb3hFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hpbGRDaGVja2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxJQ2hlY2tlZE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub2RlRXhwYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxUcmVlRmxhdE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0cmVlQ29udHJvbE5vZGVzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbGlzdFBhcmVudE9iaiA9IHt9O1xyXG4gIGZpbHRlckRhdGE6IFRyZWVNb2RlbFtdID0gW107XHJcbiAgdHJlZU9iamVjdDogb2JqZWN0O1xyXG4gIGFyckluZGV4OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNoZWNrZWROb2RlTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG4gIHVzZUV4cGFuZEZlYXR1cmUgPSB0cnVlO1xyXG4gIHNob3dDaGVja0JveCA9IGZhbHNlO1xyXG4gIGFsbG93TXVsdGlwbGVDaGVjayA9IHRydWU7XHJcbiAgc2luZ2xlU2VsZWN0ZWROb2RlID0gZmFsc2U7XHJcbiAgb25seUNoZWNrQm94Rm9yQ2hpbGQgPSBmYWxzZTtcclxuICBvbmx5Rm9sZGVyID0gZmFsc2U7XHJcbiAgaXRlbUljb25UeXBlID0gSXRlbUljb25UeXBlO1xyXG4gIGRpc3BsYXlUeXBlID0gMTtcclxuICBvcGVuSWNvbiA9ICcnO1xyXG4gIG9wZW5JY29uQ29sb3IgPSAnIzE5NTRBOSc7XHJcbiAgY2xvc2VJY29uID0gJyc7XHJcbiAgY2xvc2VJY29uQ29sb3IgPSAnIzAwMDAwMCc7XHJcbiAgaXRlbUljb24gPSAnJztcclxuICBpdGVtSWNvblN2ZyA9ICcnO1xyXG4gIGl0ZW1JY29uUGF0aCA9ICcnO1xyXG4gIGl0ZW1JY29uQmFzZTY0ID0gJyc7XHJcbiAgbW9kdWxlSWQ6IG51bWJlcjtcclxuXHJcbiAgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFRyZWVGbGF0Tm9kZT4oXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5sZXZlbDtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gIGNoZWNrbGlzdFNlbGVjdGlvbjogYW55O1xyXG4gIGlkQ2hlY2tJY29uID0gJyc7XHJcbiAgbGlzdENoaWxkTm9kZSA9IFtdO1xyXG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGFwcEljb25TZXJ2aWNlOiBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ2tleWJvYXJkX3VwJywgZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEtFWUJPQVJEX1VQX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgna2V5Ym9hcmRfZG93bicsIGRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChLRVlCT0FSRF9ET1dOX0lDT04pKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJGb2xkZXJJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJSaXNrSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy50cmVlRGF0YSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnRyZWVEYXRhLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMudHJlZURhdGEucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50cmVlRGF0YSA9IGNoYW5nZXMudHJlZURhdGEuY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmluaXRUcmVlRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkRGF0YSAmJlxyXG4gICAgICAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlLmxlbmd0aCA+IDAgfHxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuc2VsZWN0ZWREYXRhLnByZXZpb3VzVmFsdWUpKSkge1xyXG4gICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlICYmIGNoYW5nZXMuc2VsZWN0ZWREYXRhLmN1cnJlbnRWYWx1ZVswXSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkTGlzdCAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXhwYW5kIGFsbCBwYXJlbnQgdG8gc2hvdyBub2RlXHJcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRUb0NoaWxkTm9kZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmV4cGFuZFRvQ2hpbGROb2RlLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZXhwYW5kVG9DaGlsZE5vZGUucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5vcGVuRXhwYW5kVG9DaGlsZE5vZGUoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuaW5pdFRyZWVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBpbml0VHJlZURhdGEoKSB7XHJcbiAgICB0aGlzLnRyZWVEYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICghIWl0ZW0ucGFyZW50SWQgJiYgaXRlbS5wYXJlbnRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucGFyZW50SWRdID0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5jaGlsZElkICYmIGl0ZW0uY2hpbGRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucm9vdElkXSA9IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyRGF0YSA9IHRoaXMudHJlZURhdGE7XHJcblxyXG4gICAgdGhpcy50cmVlT2JqZWN0ID0gVHJlZUZ1bmN0aW9ucy5idWlsZE9iamVjdFRyZWUodGhpcy5maWx0ZXJEYXRhKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gVHJlZUZ1bmN0aW9ucy5idWlsZEFycmF5VHJlZSh0aGlzLnRyZWVPYmplY3QgfHwge30sIDApLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc29ydERhdGFUcmVlKGVsZW1lbnQpO1xyXG4gICAgICBlbGVtZW50ID0gbnVsbDtcclxuICAgICAgZWxlbWVudCA9IHsgLi4ue30sIC4uLml0ZW0gfTtcclxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVzZUV4cGFuZEZlYXR1cmUgPSAhdGhpcy50cmVlQ29uZmlnPy5zaG93Q2hlY2tCb3g7XHJcbiAgICB0aGlzLnNob3dDaGVja0JveCA9IHRoaXMudHJlZUNvbmZpZz8uc2hvd0NoZWNrQm94O1xyXG4gICAgdGhpcy5vbmx5Q2hlY2tCb3hGb3JDaGlsZCA9IHRoaXMudHJlZUNvbmZpZz8ub25seUNoZWNrQm94Rm9yQ2hpbGQ7XHJcbiAgICB0aGlzLm1vZHVsZUlkID0gdGhpcy50cmVlQ29uZmlnPy5tb2R1bGVJZDtcclxuICAgIHRoaXMub3Blbkljb24gPSB0aGlzLnRyZWVDb25maWc/Lm9wZW5JY29uO1xyXG4gICAgdGhpcy5vcGVuSWNvbkNvbG9yID0gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yIDogdGhpcy5vcGVuSWNvbkNvbG9yO1xyXG4gICAgdGhpcy5jbG9zZUljb24gPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbjtcclxuICAgIHRoaXMuY2xvc2VJY29uQ29sb3IgPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5jbG9zZUljb25Db2xvciA6IHRoaXMuY2xvc2VJY29uQ29sb3I7XHJcbiAgICB0aGlzLml0ZW1JY29uID0gdGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbjtcclxuICAgIHRoaXMuaXRlbUljb25TdmcgPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uU3ZnO1xyXG4gICAgdGhpcy5pdGVtSWNvblBhdGggPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uUGF0aDtcclxuICAgIHRoaXMuaXRlbUljb25CYXNlNjQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbkJhc2U2NCkgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5hbGxvd011bHRpcGxlQ2hlY2sgPSB0aGlzLnRyZWVDb25maWc/LmFsbG93TXVsdGlwbGVDaGVjaztcclxuICAgIHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID0gdGhpcy50cmVlQ29uZmlnPy5zaW5nbGVTZWxlY3RlZE5vZGU7XHJcbiAgICB0aGlzLm9ubHlGb2xkZXIgPSB0aGlzLnRyZWVDb25maWc/Lm9ubHlGb2xkZXI7XHJcbiAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUcmVlRmxhdE5vZGU+KHRoaXMuYWxsb3dNdWx0aXBsZUNoZWNrKTsgLyogdHJ1ZTogbXVsdGlwbGUgKi9cclxuXHJcbiAgICB0aGlzLmRpc3BsYXlUeXBlID0gdGhpcy5nZXRJdGVtSWNvblR5cGUodGhpcy50cmVlQ29uZmlnKTtcclxuXHJcbiAgICAvLyBFeHBhbmQgY2hpbGQgbm9kZSB0cmVlXHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmV4cGFuZEFsbCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vRGlzYWJsZWQgbm9kZVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmlzayBUcmVlXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJpc2tEYXRhLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXNrRGF0YS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZERhdGEuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB4LnJvb3RJZCk7XHJcbiAgICAgICAgICBpZiAoeC5yb290SWQgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkICYmIGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGEucHVzaCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChzZWxlY3RlZERhdGEpO1xyXG4gICAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGtlZXAgZXhwYW5kXHJcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlT25DbGljayAmJiBPYmplY3Qua2V5cyh0aGlzLnBhcmVudE5vZGVPbkNsaWNrKS5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRlbXBQYXJlbnQgPSBbXTtcclxuICAgICAgbGV0IHJvb3QgPSBuZXcgVHJlZUZsYXROb2RlKCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Tm9kZU9uQ2xpY2sucGFyZW50SWQgPT09IHRyZWUucGFyZW50SWQgJiYgdGhpcy5wYXJlbnROb2RlT25DbGljay5pZCA9PT0gdHJlZS5pZFxyXG4gICAgICAgICAgfHwgdGhpcy5wYXJlbnROb2RlT25DbGljay5wYXJlbnRJZCA9PT0gdHJlZS5pZCkge1xyXG4gICAgICAgICAgdGVtcFBhcmVudCA9IFsuLi50ZW1wUGFyZW50LCB0aGlzLmdldFBhcmVudCh0cmVlKV07XHJcbiAgICAgICAgICByb290ID0gdHJlZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGVtcFBhcmVudC5wdXNoKHJvb3QpO1xyXG4gICAgICB0ZW1wUGFyZW50LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sTm9kZXMuZW1pdCh0aGlzLnRyZWVDb250cm9sKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBjb25zdCB7IHRyZWVDb250cm9sIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdHJlZUNvbnRyb2wuZ2V0TGV2ZWwobm9kZSk7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRMZXZlbCA8IDEpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0cmVlQ29udHJvbC5kYXRhTm9kZXMuaW5kZXhPZihub2RlKSAtIDE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0cmVlQ29udHJvbC5nZXRMZXZlbChjdXJyZW50Tm9kZSkgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5FeHBhbmRUb0NoaWxkTm9kZSgpIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5leHBhbmRUb0NoaWxkTm9kZVswXSA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gJyc7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGxldCBpdGVtTWFya0NoZWNrZWQgPSAhdGhpcy5zZWxlY3RlZERhdGEgfHwgIXRoaXMuc2VsZWN0ZWREYXRhLmxlbmd0aCA/ICcnIDogdGhpcy5zZWxlY3RlZERhdGFbdGhpcy5zZWxlY3RlZERhdGEubGVuZ3RoIC0gMV0uaWQudG9VcHBlckNhc2UoKTtcclxuICAgICAgbGV0IHBhcmVudEl0ZW0gPSAnJztcclxuICAgICAgXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaXRlbU1hcmtDaGVja2VkID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCkge1xyXG4gICAgICAgICAgcGFyZW50SXRlbSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IGVsLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShpdGVtTWFya0NoZWNrZWQsIHBhcmVudEl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tEaXNhYmxlZExpc3QoKSB7XHJcbiAgICAvLyBEaXNhYmxlIExpc3RcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZExpc3QuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmRJbmRleChub2RlID0+IG5vZGUuaWQgPT09IHguaWQgJiYgKCF4LnBhcmVudElkIHx8IHgucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWQpKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaW5kZXhdLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vU2VsZWN0ZWQgbm9kZSB3aXRoIHNlbGVjdCBvbmVcclxuICAgIGlmICh0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGggJiYgdGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSkge1xyXG4gICAgICBsZXQgaXRlbU1hcmtDaGVja2VkID0gdGhpcy5kaXNhYmxlZExpc3RbdGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoIC0gMV0udG9VcHBlckNhc2UoKTtcclxuICAgICAgbGV0IHBhcmVudEl0ZW0gPSAnJztcclxuICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBub2RlcyBvbiBzYW1lIGxldmVsXHJcbiAgICAgIGxldCBsaXN0Q2hpbGROb2RlU2FtZUxldmVsID0gdGhpcy5maW5kQ2hpbGROb2RlKGl0ZW1NYXJrQ2hlY2tlZCwgdGhpcy5kYXRhU291cmNlLmRhdGEpO1xyXG4gICAgICAvLyBnZXQgYWxsIGNoaWxkcmVuIGluIGFsbCBsZXZlbFxyXG4gICAgICB0aGlzLmxpc3RDaGlsZE5vZGUgPSBbXTtcclxuICAgICAgdGhpcy5nZXRDaGlsZChsaXN0Q2hpbGROb2RlU2FtZUxldmVsKTtcclxuICAgICAgdGhpcy5saXN0Q2hpbGROb2RlLnB1c2gobGlzdENoaWxkTm9kZVNhbWVMZXZlbCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1NYXJrQ2hlY2tlZCA9PT0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQpIHtcclxuICAgICAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVkTGlzdC5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gZWwudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBjaGlsZHJlbiBub2RlcyB3aGVuIHVzZXIgZG9udCBuZWVkIHRvIHNob3cgdGhlbVxyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmIChlbC5pZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXT8uaWQgPT09IGVsLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUoaXRlbU1hcmtDaGVja2VkLCBwYXJlbnRJdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZChvYmopIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChvYmouY2hpbGRyZW5baV0uY2hpbGRyZW4pIHtcclxuICAgICAgICB0aGlzLmdldENoaWxkKG9iai5jaGlsZHJlbltpXSk7XHJcbiAgICAgICAgLy8gZGVsZXRlIG9iai5jaGlsZHJlbltpXS5jaGlsZHJlbjtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZE5vZGUucHVzaChvYmouY2hpbGRyZW5baV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5wdXNoKG9iai5jaGlsZHJlbltpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNvcnREYXRhVHJlZShvYmopIHtcclxuICAgIGlmIChvYmouY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IGNoaWxkID0gW107XHJcbiAgICAgIGNvbnN0IGxlYWZOb2RlID0gb2JqLmNoaWxkcmVuLmZpbHRlcih4ID0+ICF4LmNoaWxkcmVuKTtcclxuICAgICAgY29uc3Qgc3ViRm9sZGVyTm9kZSA9IG9iai5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LmNoaWxkcmVuKTtcclxuICAgICAgLy8gZm9yKGxldCBpbmRleCA9IHN1YkZvbGRlck5vZGUubGVuZ3RoIC0gMTsgaW5kZXggPj0gMCA7IGluZGV4LS0pe1xyXG4gICAgICAvLyAgIGxldCBlbCA9IHN1YkZvbGRlck5vZGVbaW5kZXhdO1xyXG4gICAgICAvLyAgIHRoaXMuc29ydERhdGFUcmVlKGVsKTtcclxuICAgICAgLy8gICBjaGlsZC51bnNoaWZ0KGVsKTtcclxuICAgICAgLy8gfVxyXG4gICAgICBzdWJGb2xkZXJOb2RlLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgbGV0IGVsID0gZWxlbWVudDtcclxuICAgICAgICB0aGlzLnNvcnREYXRhVHJlZShlbCk7XHJcbiAgICAgICAgY2hpbGQucHVzaChlbCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbGVhZk5vZGUuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgZWwgPSBlbGVtZW50O1xyXG4gICAgICAgIGNoaWxkLnB1c2goZWwpO1xyXG4gICAgICB9KTtcclxuICAgICAgb2JqLmNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VQYXRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnRyZWVDb25maWcuaXRlbUljb25CYXNlNjQpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGNoZWNrU2VsZWN0ZWQoaXRlbVNlbGVjdGVkOiBUcmVlRmxhdE5vZGVbXSkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50cmVlQ29udHJvbFsnZGF0YU5vZGVzJ10pIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCh0cmVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtU2VsZWN0ZWQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtU2VsZWN0ZWRbal07XHJcbiAgICAgICAgICBpZiAodHJlZS5pZCA9PT0gZWxlbWVudC5pZCAmJiAoIWVsZW1lbnQucGFyZW50SWQgfHwgdHJlZS5wYXJlbnRJZCA9PT0gZWxlbWVudC5wYXJlbnRJZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IGl0ZW1TZWxlY3RlZDtcclxuICAgIH0sIDUwMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RlZFNhbWVOb2RlKGl0ZW1TZWxlY3RlZDogVHJlZUZsYXROb2RlW10sIGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1TZWxlY3RlZC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtU2VsZWN0ZWRbal07XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQgJiYgdHJlZS5pZCA9PT0gZWxlbWVudC5pZFxyXG4gICAgICAgICAgJiYgdHJlZS5wYXJlbnRJZCA9PT0gZWxlbWVudC5wYXJlbnRJZCAmJiAhdHJlZS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgZmxhZyA/IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCh0cmVlKSA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SXRlbUljb25UeXBlKHRyZWVDb25maWc6IFRyZWVDb25maWcpIHtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uICYmIHRyZWVDb25maWcuaXRlbUljb24ubGVuZ3RoKSByZXR1cm4gdGhpcy5pdGVtSWNvblR5cGUubmFtZTtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uUGF0aCAmJiB0cmVlQ29uZmlnLml0ZW1JY29uUGF0aC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5wYXRoO1xyXG4gICAgaWYgKHRyZWVDb25maWcuaXRlbUljb25CYXNlNjQgJiYgdHJlZUNvbmZpZy5pdGVtSWNvbkJhc2U2NC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5iYXNlNjQ7XHJcbiAgICBpZiAodHJlZUNvbmZpZy5pdGVtSWNvblN2ZyAmJiB0cmVlQ29uZmlnLml0ZW1JY29uU3ZnLmxlbmd0aCkgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLnN2ZztcclxuICAgIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5ub25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1lciA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgbGV0IGNoZWNrSGFzQ2hpbGQgPSB0cnVlO1xyXG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoISghIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgISFub2RlLmNoaWxkcmVuICYmXHJcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYmXHJcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICFub2RlLmNoaWxkcmVuWzBdLm5hbWUgJiZcclxuICAgICAgbm9kZS5pZD8udG9TdHJpbmcoKSA9PT0gJydcclxuICAgICkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEodGhpcy5saXN0UGFyZW50T2JqW25vZGUuaWRdID09PSAxKSkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcclxuICAgICAgbmFtZTogbm9kZS5uYW1lLFxyXG4gICAgICBsZXZlbCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGhhc0NoaWxkOiBjaGVja0hhc0NoaWxkLFxyXG4gICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBsZXZlbFR5cGU6IG5vZGUubGV2ZWxUeXBlXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHRyZWVGbGF0dGVuZXIgPSBuZXcgTWF0VHJlZUZsYXR0ZW5lcihcclxuICAgIHRoaXMudHJhbnNmb3JtZXIsXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5sZXZlbDtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgfSxcclxuICAgIChub2RlKSA9PiB7XHJcbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcblxyXG5cclxuICAvKiogV2hldGhlciBhbGwgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSBub2RlIGFyZSBzZWxlY3RlZCAqL1xyXG4gIGRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogVHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcblxyXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPyB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKSA6IFtdO1xyXG5cclxuICAgIGlmICghZGVzY2VuZGFudHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgaWYgKCFzZWxlY3RlZCAmJiBhbGxTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsU2VsZWN0ZWQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID8gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCkgOiBbXTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBkZXNjZW5kYW50cy5zb21lKGNoaWxkID0+IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpKTtcclxuICAgIHJldHVybiByZXN1bHQgJiYgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKTtcclxuICB9XHJcblxyXG4gIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXHJcbiAgcHVibGljIHRvZG9JdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgIC8vIHRyZWUgaGF2ZSBkdXBsaWNhdGUgbm9kZVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZFxyXG4gICAgICAgICAgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0ucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWRcclxuICAgICAgICAgICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gcHJvY2Vzcy8gZG9jdW1lbnQgc2luZ2xlIHNlbGVjdGVkXHJcbiAgICBpZiAoIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XHJcblxyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0ZWRTYW1lTm9kZShkZXNjZW5kYW50cywgdGhpcy5kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpKTtcclxuXHJcbiAgICAgICF0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcclxuICAgICAgICA/IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cylcclxuICAgICAgICA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcclxuXHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICBjb25zdCBhbGxOb2RlSXNQYXJlbnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5ldmVyeShjaGlsZCA9PiBjaGlsZC5leHBhbmRhYmxlKTtcclxuICAgICAgaWYgKGFsbE5vZGVJc1BhcmVudCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChlbGVtZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgdG9kb0NoaWxkU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWRcclxuICAgICAgICAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZG9JdGVtU2VsZWN0aW9uQnlJZChpZHM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZHMuZm9yRWFjaChcclxuICAgICAgaWQgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gaWRcclxuICAgICAgICAgICAgJiYgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0l0ZW1TZWxlY3Rpb24obm9kZXM6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIG5vZGVzLmZvckVhY2goXHJcbiAgICAgIG5vZGUgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZCAmJlxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZCAmJlxyXG4gICAgICAgICAgICAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKSlcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pKVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0ZvbGRlclNlbGVjdGlvbihub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5pZENoZWNrSWNvbiA9IHRoaXMuaWRUb0NoZWNrU2VsZWN0T25lKG5vZGVzWzBdLmlkLCBub2Rlc1swXS5wYXJlbnRJZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBUcmVlRmxhdE5vZGUpID0+IHtcclxuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XHJcbiAgfTtcclxuXHJcbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmICh3aW5kb3dbUmVsYXRlZENvbnN0LklTX0RJU1BMQVlfU0VBUkNIX1JFU1VMVF0pIHtcclxuICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQsICcqJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShub2RlLmlkLCBub2RlLnBhcmVudElkKTtcclxuICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRGF0YVR5cGVTZWxlY3ROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgbGV0IGl0ZW1UeXBlID0gLTE7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICBpdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmFyZWEgOiBEYXRhVHlwZS5wcm9jZXNzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuZm9sZGVyIDogRGF0YVR5cGUuZG9jdW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5tb2R1bGVJZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGb2xkZXIobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnNlbGVjdEZvbGRlckV2ZW50LmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvbkV4cGFuZE5vZGUobm9kZTogVHJlZUZsYXROb2RlLCBpc0V4cGFuZE5vZGU/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSkge1xyXG4gICAgICBpZiAoaXNFeHBhbmROb2RlICYmICF0aGlzLmV4cGFuZE9uVGl0bGVDbGljaykge1xyXG4gICAgICAgIHRoaXMubm9kZUV4cGFuZEV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUobm9kZS5pZCwgbm9kZS5wYXJlbnRJZCk7XHJcbiAgICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd1tSZWxhdGVkQ29uc3QuSVNfRElTUExBWV9TRUFSQ0hfUkVTVUxUXSkge1xyXG4gICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoUmVsYXRlZENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCwgJyonKTtcclxuICAgIH1cclxuICAgIC8vIHNldCB1c2VFeHBhbmRGZWF0dXJlID0gdHJ1ZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRyZWUgbG9hZGluZ1xyXG4gICAgaWYgKCFpc0V4cGFuZE5vZGUgfHwgIXRoaXMudXNlRXhwYW5kRmVhdHVyZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXJySW5kZXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5hcnJJbmRleFtpXSA9PT0gbm9kZS5pZCkge1xyXG4gICAgICAgICAgdGhpcy5hcnJJbmRleC5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0V4cGFuZE5vZGUgJiYgIXRoaXMuZXhwYW5kT25UaXRsZUNsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlRXhwYW5kRXZlbnQuZW1pdChub2RlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLyBnZXQgYXJyYXkgaW5kZXggdG8gZXhwYW5kIG5vZGUgYWZ0ZXIgcmVmcmVzaCBkYXRhc291cmNlXHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XHJcbiAgICBsZXQgaXNSZW1vdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJySW5kZXgucHVzaChub2RlLmlkKTtcclxuXHJcbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IHtcclxuICAgICAgcmV0dXJuIHgucGFyZW50SWQgPT09IG5vZGUuaWQ7XHJcbiAgICB9KTtcclxuICAgIGxldCByb290SWQgPSAnMCc7XHJcbiAgICBsZXQgcGFyZW50RWxlbWVudDogVHJlZU5vZGU7XHJcbiAgICBsZXQgY2hpbGRyZW5MaXN0OiBUcmVlTm9kZVtdO1xyXG4gICAgaWYgKGNoaWxkQXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNoaWxkQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5yb290SWQgPT09IHJvb3RJZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZ2V0IGNoaWxkIG5vZGUgZnJvbSBvcmlnaW5hbCBkYXRhc291cmNlXHJcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5nZXRDaGlsZE5vZGUoaXRlbS5yb290SWQsIGNoaWxkQXJyYXkpO1xyXG4gICAgICByb290SWQgPSBpdGVtLnJvb3RJZDtcclxuXHJcbiAgICAgIGluZGV4ID0gdGhpcy5nZXROb2RlSW5kZXgoY2hpbGQuaWQsIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIGNoaWxkIG5vZGUgdG8gZXhwYW5kIG5vZGVcclxuICAgICAgcGFyZW50RWxlbWVudCA9IHRoaXMuZmluZENoaWxkTm9kZShub2RlLmlkLCB0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgICAgLy8gdGVtcG9yYXJ5IHJlbW92ZSBhbGwgbm9kZSB3aXRob3V0IGNoaWxkcmVuID0+IHB1cnBvc2UgdG8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgaWYgKCFpc1JlbW92ZSkge1xyXG4gICAgICAgICAgY2hpbGRyZW5MaXN0ID0gWy4uLnBhcmVudEVsZW1lbnQuY2hpbGRyZW5dO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcclxuICAgICAgICAgIGlzUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWRkIG5vZGUgZm9sZGVyIGZpcnN0XHJcbiAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICBpc0NoYW5nZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gYWRkIG5vZGUgd2l0aG91dCBjaGlsZHJlbiBhZ2FpblxyXG4gICAgaWYgKGlzUmVtb3ZlKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2hpbGRyZW4ocGFyZW50RWxlbWVudCwgY2hpbGRyZW5MaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZWZyZXNoIGRhdGEgYW5kIGV4cGFuZCB0cmVlIG5vZGUgZnJvbSByb290IG5vZGVcclxuICAgIGlmIChpc0NoYW5nZSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmFyckluZGV4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZ2V0Tm9kZUluZGV4KGl0ZW0sIHVuZGVmaW5lZCwgdGhpcy5kYXRhU291cmNlWydfdHJlZUNvbnRyb2wnXS5kYXRhTm9kZXMpO1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2luZGV4XSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpc0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpbGRyZW4ocGFyZW50RWxlbWVudD86IFRyZWVOb2RlKSB7XHJcbiAgICBpZiAocGFyZW50RWxlbWVudC5jaGlsZHJlbikge1xyXG4gICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDaGlsZHJlbihwYXJlbnRFbGVtZW50PzogVHJlZU5vZGUsIGNoaWxkcmVuTGlzdD86IFRyZWVOb2RlW10pIHtcclxuICAgIGlmIChjaGlsZHJlbkxpc3QpIHtcclxuICAgICAgY2hpbGRyZW5MaXN0LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLnB1c2goZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUluZGV4KGlkOiBzdHJpbmcsIGxldmVsPzogbnVtYmVyLCBkYXRhPzogYW55W10pIHtcclxuICAgIGlmIChsZXZlbCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQgJiYgeC5sZXZlbCA9PT0gbGV2ZWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhLmZpbmRJbmRleCgoeCkgPT4ge1xyXG4gICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkTm9kZShyb290SWQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBjaGlsZEFycmF5ID0gZGF0YS5maWx0ZXIoKHgpID0+IHtcclxuICAgICAgcmV0dXJuIHgucm9vdElkID09PSByb290SWQ7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNoaWxkID0geyBpZDogY2hpbGRBcnJheVswXS5yb290SWQsIG5hbWU6IGNoaWxkQXJyYXlbMF0uc3ViTmFtZSwgY2hpbGRyZW46IFtdIH0gYXMgVHJlZU5vZGU7XHJcbiAgICBjaGlsZEFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgY2hpbGQuY2hpbGRyZW4ucHVzaCh7IGlkOiBpdGVtLmNoaWxkSWQsIG5hbWU6IGl0ZW0uY2hpbGROYW1lLCBwYXJlbnRJZDogcm9vdElkIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2hpbGQ7XHJcbiAgfVxyXG5cclxuICBmaW5kQ2hpbGROb2RlKGlkOiBzdHJpbmcsIGRhdGE6IFRyZWVOb2RlW10pIHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxyXG4gICAgZm9yIChjb25zdCBjdXJyZW50RmF0aGVyIG9mIGRhdGEpIHtcclxuICAgICAgaWYgKGN1cnJlbnRGYXRoZXIuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRGYXRoZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjdXJyZW50RmF0aGVyLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudENoaWxkID0gY3VycmVudEZhdGhlci5jaGlsZHJlbi5maW5kKCh4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDaGlsZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRDaGlsZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxyXG4gICAgICAgIGZvciAoY29uc3QgY3VycmVudENoaWxkMSBvZiBjdXJyZW50RmF0aGVyLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoaWQgIT09IGN1cnJlbnRDaGlsZDEuaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kQ2hpbGROb2RlKGlkLCBjdXJyZW50RmF0aGVyLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVHJlZURhdGEoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhU291cmNlLmRhdGE7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUljb24obm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuSWNvbiAmJiB0aGlzLmNsb3NlSWNvbikge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gdGhpcy5vcGVuSWNvbiA6IHRoaXMuY2xvc2VJY29uO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6IHtcclxuICAgICAgICBjb25zdCBub2RlRGF0YSA9IHRoaXMudHJlZURhdGEuZmlsdGVyKHggPT4geyByZXR1cm4geC5yb290SWQgPT09IG5vZGUuaWQ7IH0pO1xyXG4gICAgICAgIGlmIChub2RlRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBzd2l0Y2ggKG5vZGVEYXRhWzBdLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2RlcGFydG1lbnRfZm9sZGVyX291dGxpbmVkJyA6ICdkZXBhcnRtZW50X2ZvbGRlcic7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ3JlZ2lvbmFsX2ZvbGRlcl9vdXRsaW5lZCcgOiAncmVnaW9uYWxfZm9sZGVyJztcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2VudGVycHJpc2VfZm9sZGVyX291dGxpbmVkJyA6ICdlbnRlcnByaXNlX2ZvbGRlcic7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdsb2NhbF9mb2xkZXJfb3V0bGluZWQnIDogJ2xvY2FsX2ZvbGRlcic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdmb2xkZXJfb3V0bGluZWQnIDogJ2ZvbGRlcic7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAna2V5Ym9hcmRfdXAnIDogJ2tleWJvYXJkX2Rvd24nO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCcgOiAncHJvY2Vzc19hcmVhJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2tleWJvYXJkX3VwJyA6ICdrZXlib2FyZF9kb3duJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1JY29uKG5vZGUpIHtcclxuICAgIHN3aXRjaCAodGhpcy5tb2R1bGVJZCkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHN3aXRjaCAobm9kZS5sZXZlbFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHJldHVybiAncHJvY2Vzcyc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuY2hlY2tsaXN0OlxyXG4gICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLnJpc2s6XHJcbiAgICAgICAgcmV0dXJuICdyaXNrJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEZvbGRlck5vZGUobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSAmJiAhdGhpcy50cmVlQ29uZmlnLmFsbG93U2VsZWN0Rm9sZGVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZXhwYW5kT25UaXRsZUNsaWNrKSB7XHJcbiAgICAgIHRoaXMub25FeHBhbmROb2RlKG5vZGUsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE5vZGVJZChub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmKCFub2RlIHx8ICFub2RlLmlkKXtcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYF8ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkLnRvTG93ZXJDYXNlKCkgOiAnJ31fJHtub2RlLmlkLnRvTG93ZXJDYXNlKCl9XyR7bm9kZS5sZXZlbH1gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE5vZGVCeUlkQW5kUGFyZW50SWQobm9kZUlkOiBzdHJpbmcsIHBhcmVudElkOiBzdHJpbmcpOiBUcmVlRmxhdE5vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQoeCA9PiB7XHJcbiAgICAgIHJldHVybiB4LmlkID09PSBub2RlSWQgJiYgeC5wYXJlbnRJZCA9PT0gcGFyZW50SWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBpZFRvQ2hlY2tTZWxlY3RPbmUoaWQsIHBhcmVudElkKSB7XHJcbiAgICByZXR1cm4gYCR7aWR9LSR7cGFyZW50SWR9YDtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
786
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS90cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQW9CNUQsTUFBTSxPQUFPLGFBQWE7SUFzRHhCLFlBQW9CLEtBQXdCLEVBQ2xDLFlB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Q2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsUUFBUTtRQUM3QixPQUFPLEdBQUcsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OztZQTkxQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQiw0akxBQW9DO2dCQUVwQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQWhDUSxpQkFBaUI7WUFHakIsWUFBWTtZQUZaLGVBQWU7WUFHZixzQkFBc0I7Ozt1QkE4QjVCLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSzs4QkFDTCxNQUFNO2dDQUNOLE1BQU07NEJBQ04sTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07K0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuLi9yZWxhdGVkL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgSXRlbUljb25UeXBlIH0gZnJvbSAnLi4vcmVsYXRlZC9jb21tb24vaXRlbS1pY29uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFJlbGF0ZWRDb25zdCB9IGZyb20gJy4uL3JlbGF0ZWQvY29tbW9uL3JlbGF0ZWQuY29uc3QnO1xyXG5pbXBvcnQgVHJlZUZ1bmN0aW9ucyBmcm9tICcuL3RyZWUuZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4vbW9kZWwvdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IEtFWUJPQVJEX0RPV05fSUNPTiwgS0VZQk9BUkRfVVBfSUNPTiB9IGZyb20gJy4uLy4uL2NvbW1vbi9xbXMtaWNvbi5jb25zdCc7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4vbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIFRyZWVOb2RlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjaGlsZHJlbj86IFRyZWVOb2RlW107XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbiAgbGV2ZWxUeXBlPzogbnVtYmVyO1xyXG59XHJcbmludGVyZmFjZSBJQ2hlY2tlZE5vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtdHJlZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB0cmVlRGF0YTogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyZWVDb25maWc6IFRyZWVDb25maWc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRhOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgZGlzYWJsZWRMaXN0OiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBleHBhbmRPblRpdGxlQ2xpY2s6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXhwYW5kVG9DaGlsZE5vZGU6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhcmVudE5vZGVPbkNsaWNrOiBUcmVlRmxhdE5vZGU7XHJcbiAgQE91dHB1dCgpIHNlbGVjdE5vZGVFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdEZvbGRlckV2ZW50OiBFdmVudEVtaXR0ZXI8VHJlZUZsYXROb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hlY2tCb3hFdmVudDogRXZlbnRFbWl0dGVyPFRyZWVGbGF0Tm9kZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hpbGRDaGVja2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxJQ2hlY2tlZE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub2RlRXhwYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxUcmVlRmxhdE5vZGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0cmVlQ29udHJvbE5vZGVzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbGlzdFBhcmVudE9iaiA9IHt9O1xyXG4gIGZpbHRlckRhdGE6IFRyZWVNb2RlbFtdID0gW107XHJcbiAgdHJlZU9iamVjdDogb2JqZWN0O1xyXG4gIGFyckluZGV4OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNoZWNrZWROb2RlTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG4gIHVzZUV4cGFuZEZlYXR1cmUgPSB0cnVlO1xyXG4gIHNob3dDaGVja0JveCA9IGZhbHNlO1xyXG4gIGFsbG93TXVsdGlwbGVDaGVjayA9IHRydWU7XHJcbiAgc2luZ2xlU2VsZWN0ZWROb2RlID0gZmFsc2U7XHJcbiAgb25seUNoZWNrQm94Rm9yQ2hpbGQgPSBmYWxzZTtcclxuICBvbmx5Rm9sZGVyID0gZmFsc2U7XHJcbiAgaXRlbUljb25UeXBlID0gSXRlbUljb25UeXBlO1xyXG4gIGRpc3BsYXlUeXBlID0gMTtcclxuICBvcGVuSWNvbiA9ICcnO1xyXG4gIG9wZW5JY29uQ29sb3IgPSAnIzE5NTRBOSc7XHJcbiAgY2xvc2VJY29uID0gJyc7XHJcbiAgY2xvc2VJY29uQ29sb3IgPSAnIzAwMDAwMCc7XHJcbiAgaXRlbUljb24gPSAnJztcclxuICBpdGVtSWNvblN2ZyA9ICcnO1xyXG4gIGl0ZW1JY29uUGF0aCA9ICcnO1xyXG4gIGl0ZW1JY29uQmFzZTY0ID0gJyc7XHJcbiAgbW9kdWxlSWQ6IG51bWJlcjtcclxuXHJcbiAgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFRyZWVGbGF0Tm9kZT4oXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5sZXZlbDtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gIGNoZWNrbGlzdFNlbGVjdGlvbjogYW55O1xyXG4gIGlkQ2hlY2tJY29uID0gJyc7XHJcbiAgbGlzdENoaWxkTm9kZSA9IFtdO1xyXG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGFwcEljb25TZXJ2aWNlOiBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ2tleWJvYXJkX3VwJywgZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEtFWUJPQVJEX1VQX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgna2V5Ym9hcmRfZG93bicsIGRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChLRVlCT0FSRF9ET1dOX0lDT04pKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJGb2xkZXJJY29uKGljb25SZWdpc3RyeSwgZG9tU2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBkb21TYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJSaXNrSWNvbihpY29uUmVnaXN0cnksIGRvbVNhbml0aXplcik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy50cmVlRGF0YSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnRyZWVEYXRhLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMudHJlZURhdGEucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50cmVlRGF0YSA9IGNoYW5nZXMudHJlZURhdGEuY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmluaXRUcmVlRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkRGF0YSAmJlxyXG4gICAgICAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlLmxlbmd0aCA+IDAgfHxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuc2VsZWN0ZWREYXRhLnByZXZpb3VzVmFsdWUpKSkge1xyXG4gICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZERhdGEuY3VycmVudFZhbHVlICYmIGNoYW5nZXMuc2VsZWN0ZWREYXRhLmN1cnJlbnRWYWx1ZVswXSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChjaGFuZ2VzLnNlbGVjdGVkRGF0YS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVkTGlzdCAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmRpc2FibGVkTGlzdC5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXhwYW5kIGFsbCBwYXJlbnQgdG8gc2hvdyBub2RlXHJcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRUb0NoaWxkTm9kZSAmJiBKU09OLnN0cmluZ2lmeShjaGFuZ2VzLmV4cGFuZFRvQ2hpbGROb2RlLmN1cnJlbnRWYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZXMuZXhwYW5kVG9DaGlsZE5vZGUucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5vcGVuRXhwYW5kVG9DaGlsZE5vZGUoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuaW5pdFRyZWVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBpbml0VHJlZURhdGEoKSB7XHJcbiAgICB0aGlzLnRyZWVEYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICghIWl0ZW0ucGFyZW50SWQgJiYgaXRlbS5wYXJlbnRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucGFyZW50SWRdID0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5jaGlsZElkICYmIGl0ZW0uY2hpbGRJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0UGFyZW50T2JqW2l0ZW0ucm9vdElkXSA9IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyRGF0YSA9IHRoaXMudHJlZURhdGE7XHJcblxyXG4gICAgdGhpcy50cmVlT2JqZWN0ID0gVHJlZUZ1bmN0aW9ucy5idWlsZE9iamVjdFRyZWUodGhpcy5maWx0ZXJEYXRhKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gVHJlZUZ1bmN0aW9ucy5idWlsZEFycmF5VHJlZSh0aGlzLnRyZWVPYmplY3QgfHwge30sIDApLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc29ydERhdGFUcmVlKGVsZW1lbnQpO1xyXG4gICAgICBlbGVtZW50ID0gbnVsbDtcclxuICAgICAgZWxlbWVudCA9IHsgLi4ue30sIC4uLml0ZW0gfTtcclxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVzZUV4cGFuZEZlYXR1cmUgPSAhdGhpcy50cmVlQ29uZmlnPy5zaG93Q2hlY2tCb3g7XHJcbiAgICB0aGlzLnNob3dDaGVja0JveCA9IHRoaXMudHJlZUNvbmZpZz8uc2hvd0NoZWNrQm94O1xyXG4gICAgdGhpcy5vbmx5Q2hlY2tCb3hGb3JDaGlsZCA9IHRoaXMudHJlZUNvbmZpZz8ub25seUNoZWNrQm94Rm9yQ2hpbGQ7XHJcbiAgICB0aGlzLm1vZHVsZUlkID0gdGhpcy50cmVlQ29uZmlnPy5tb2R1bGVJZDtcclxuICAgIHRoaXMub3Blbkljb24gPSB0aGlzLnRyZWVDb25maWc/Lm9wZW5JY29uO1xyXG4gICAgdGhpcy5vcGVuSWNvbkNvbG9yID0gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5vcGVuSWNvbkNvbG9yIDogdGhpcy5vcGVuSWNvbkNvbG9yO1xyXG4gICAgdGhpcy5jbG9zZUljb24gPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbjtcclxuICAgIHRoaXMuY2xvc2VJY29uQ29sb3IgPSB0aGlzLnRyZWVDb25maWc/LmNsb3NlSWNvbkNvbG9yID8gdGhpcy50cmVlQ29uZmlnPy5jbG9zZUljb25Db2xvciA6IHRoaXMuY2xvc2VJY29uQ29sb3I7XHJcbiAgICB0aGlzLml0ZW1JY29uID0gdGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbjtcclxuICAgIHRoaXMuaXRlbUljb25TdmcgPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uU3ZnO1xyXG4gICAgdGhpcy5pdGVtSWNvblBhdGggPSB0aGlzLnRyZWVDb25maWc/Lml0ZW1JY29uUGF0aDtcclxuICAgIHRoaXMuaXRlbUljb25CYXNlNjQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy50cmVlQ29uZmlnPy5pdGVtSWNvbkJhc2U2NCkgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5hbGxvd011bHRpcGxlQ2hlY2sgPSB0aGlzLnRyZWVDb25maWc/LmFsbG93TXVsdGlwbGVDaGVjaztcclxuICAgIHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID0gdGhpcy50cmVlQ29uZmlnPy5zaW5nbGVTZWxlY3RlZE5vZGU7XHJcbiAgICB0aGlzLm9ubHlGb2xkZXIgPSB0aGlzLnRyZWVDb25maWc/Lm9ubHlGb2xkZXI7XHJcbiAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUcmVlRmxhdE5vZGU+KHRoaXMuYWxsb3dNdWx0aXBsZUNoZWNrKTsgLyogdHJ1ZTogbXVsdGlwbGUgKi9cclxuXHJcbiAgICB0aGlzLmRpc3BsYXlUeXBlID0gdGhpcy5nZXRJdGVtSWNvblR5cGUodGhpcy50cmVlQ29uZmlnKTtcclxuXHJcbiAgICAvLyBFeHBhbmQgY2hpbGQgbm9kZSB0cmVlXHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLmV4cGFuZEFsbCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vRGlzYWJsZWQgbm9kZVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRMaXN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNrRGlzYWJsZWRMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmlzayBUcmVlXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJpc2tEYXRhLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXNrRGF0YS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZERhdGEuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB4LnJvb3RJZCk7XHJcbiAgICAgICAgICBpZiAoeC5yb290SWQgPT09IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkICYmIGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGEucHVzaCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZChzZWxlY3RlZERhdGEpO1xyXG4gICAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGtlZXAgZXhwYW5kXHJcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlT25DbGljayAmJiBPYmplY3Qua2V5cyh0aGlzLnBhcmVudE5vZGVPbkNsaWNrKS5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRlbXBQYXJlbnQgPSBbXTtcclxuICAgICAgbGV0IHJvb3QgPSBuZXcgVHJlZUZsYXROb2RlKCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Tm9kZU9uQ2xpY2sucGFyZW50SWQgPT09IHRyZWUucGFyZW50SWQgJiYgdGhpcy5wYXJlbnROb2RlT25DbGljay5pZCA9PT0gdHJlZS5pZFxyXG4gICAgICAgICAgfHwgdGhpcy5wYXJlbnROb2RlT25DbGljay5wYXJlbnRJZCA9PT0gdHJlZS5pZCkge1xyXG4gICAgICAgICAgdGVtcFBhcmVudCA9IFsuLi50ZW1wUGFyZW50LCB0aGlzLmdldFBhcmVudCh0cmVlKV07XHJcbiAgICAgICAgICByb290ID0gdHJlZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGVtcFBhcmVudC5wdXNoKHJvb3QpO1xyXG4gICAgICB0ZW1wUGFyZW50LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sTm9kZXMuZW1pdCh0aGlzLnRyZWVDb250cm9sKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBjb25zdCB7IHRyZWVDb250cm9sIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdHJlZUNvbnRyb2wuZ2V0TGV2ZWwobm9kZSk7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRMZXZlbCA8IDEpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0cmVlQ29udHJvbC5kYXRhTm9kZXMuaW5kZXhPZihub2RlKSAtIDE7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0cmVlQ29udHJvbC5nZXRMZXZlbChjdXJyZW50Tm9kZSkgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5FeHBhbmRUb0NoaWxkTm9kZSgpIHtcclxuICAgIGlmICh0aGlzLmV4cGFuZFRvQ2hpbGROb2RlLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5leHBhbmRUb0NoaWxkTm9kZVswXSA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLmlkQ2hlY2tJY29uID0gJyc7XHJcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZUFsbCgpO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBpdGVtTWFya0NoZWNrZWQgPSAhdGhpcy5zZWxlY3RlZERhdGEgfHwgIXRoaXMuc2VsZWN0ZWREYXRhLmxlbmd0aCA/ICcnIDogdGhpcy5zZWxlY3RlZERhdGFbdGhpcy5zZWxlY3RlZERhdGEubGVuZ3RoIC0gMV0uaWQudG9VcHBlckNhc2UoKTtcclxuICAgICAgbGV0IHBhcmVudEl0ZW0gPSAnJztcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaXRlbU1hcmtDaGVja2VkID09PSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCkge1xyXG4gICAgICAgICAgcGFyZW50SXRlbSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhwYW5kVG9DaGlsZE5vZGUuZm9yRWFjaChlbCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IGVsLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShpdGVtTWFya0NoZWNrZWQsIHBhcmVudEl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tEaXNhYmxlZExpc3QoKSB7XHJcbiAgICAvLyBEaXNhYmxlIExpc3RcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZExpc3QuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmRJbmRleChub2RlID0+IG5vZGUuaWQgPT09IHguaWQgJiYgKCF4LnBhcmVudElkIHx8IHgucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWQpKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaW5kZXhdLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vU2VsZWN0ZWQgbm9kZSB3aXRoIHNlbGVjdCBvbmVcclxuICAgIGlmICh0aGlzLmRpc2FibGVkTGlzdC5sZW5ndGggJiYgdGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSkge1xyXG4gICAgICBsZXQgaXRlbU1hcmtDaGVja2VkID0gdGhpcy5kaXNhYmxlZExpc3RbdGhpcy5kaXNhYmxlZExpc3QubGVuZ3RoIC0gMV0udG9VcHBlckNhc2UoKTtcclxuICAgICAgbGV0IHBhcmVudEl0ZW0gPSAnJztcclxuICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBub2RlcyBvbiBzYW1lIGxldmVsXHJcbiAgICAgIGxldCBsaXN0Q2hpbGROb2RlU2FtZUxldmVsID0gdGhpcy5maW5kQ2hpbGROb2RlKGl0ZW1NYXJrQ2hlY2tlZCwgdGhpcy5kYXRhU291cmNlLmRhdGEpO1xyXG4gICAgICAvLyBnZXQgYWxsIGNoaWxkcmVuIGluIGFsbCBsZXZlbFxyXG4gICAgICB0aGlzLmxpc3RDaGlsZE5vZGUgPSBbXTtcclxuICAgICAgdGhpcy5nZXRDaGlsZChsaXN0Q2hpbGROb2RlU2FtZUxldmVsKTtcclxuICAgICAgdGhpcy5saXN0Q2hpbGROb2RlLnB1c2gobGlzdENoaWxkTm9kZVNhbWVMZXZlbCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1NYXJrQ2hlY2tlZCA9PT0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQpIHtcclxuICAgICAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVkTGlzdC5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gZWwudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBjaGlsZHJlbiBub2RlcyB3aGVuIHVzZXIgZG9udCBuZWVkIHRvIHNob3cgdGhlbVxyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgIGlmIChlbC5pZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXT8uaWQgPT09IGVsLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlkQ2hlY2tJY29uID0gdGhpcy5pZFRvQ2hlY2tTZWxlY3RPbmUoaXRlbU1hcmtDaGVja2VkLCBwYXJlbnRJdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSAnJztcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZChvYmopIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChvYmouY2hpbGRyZW5baV0uY2hpbGRyZW4pIHtcclxuICAgICAgICB0aGlzLmdldENoaWxkKG9iai5jaGlsZHJlbltpXSk7XHJcbiAgICAgICAgLy8gZGVsZXRlIG9iai5jaGlsZHJlbltpXS5jaGlsZHJlbjtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZE5vZGUucHVzaChvYmouY2hpbGRyZW5baV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGlzdENoaWxkTm9kZS5wdXNoKG9iai5jaGlsZHJlbltpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNvcnREYXRhVHJlZShvYmopIHtcclxuICAgIGlmIChvYmouY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IGNoaWxkID0gW107XHJcbiAgICAgIGNvbnN0IGxlYWZOb2RlID0gb2JqLmNoaWxkcmVuLmZpbHRlcih4ID0+ICF4LmNoaWxkcmVuKTtcclxuICAgICAgY29uc3Qgc3ViRm9sZGVyTm9kZSA9IG9iai5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LmNoaWxkcmVuKTtcclxuICAgICAgLy8gZm9yKGxldCBpbmRleCA9IHN1YkZvbGRlck5vZGUubGVuZ3RoIC0gMTsgaW5kZXggPj0gMCA7IGluZGV4LS0pe1xyXG4gICAgICAvLyAgIGxldCBlbCA9IHN1YkZvbGRlck5vZGVbaW5kZXhdO1xyXG4gICAgICAvLyAgIHRoaXMuc29ydERhdGFUcmVlKGVsKTtcclxuICAgICAgLy8gICBjaGlsZC51bnNoaWZ0KGVsKTtcclxuICAgICAgLy8gfVxyXG4gICAgICBzdWJGb2xkZXJOb2RlLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgbGV0IGVsID0gZWxlbWVudDtcclxuICAgICAgICB0aGlzLnNvcnREYXRhVHJlZShlbCk7XHJcbiAgICAgICAgY2hpbGQucHVzaChlbCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbGVhZk5vZGUuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgZWwgPSBlbGVtZW50O1xyXG4gICAgICAgIGNoaWxkLnB1c2goZWwpO1xyXG4gICAgICB9KTtcclxuICAgICAgb2JqLmNoaWxkcmVuID0gY2hpbGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VQYXRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnRyZWVDb25maWcuaXRlbUljb25CYXNlNjQpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGNoZWNrU2VsZWN0ZWQoaXRlbVNlbGVjdGVkOiBUcmVlRmxhdE5vZGVbXSkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy50cmVlQ29udHJvbFsnZGF0YU5vZGVzJ10pIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdCh0cmVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtU2VsZWN0ZWQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtU2VsZWN0ZWRbal07XHJcbiAgICAgICAgICBpZiAodHJlZS5pZCA9PT0gZWxlbWVudC5pZCAmJiAoIWVsZW1lbnQucGFyZW50SWQgfHwgdHJlZS5wYXJlbnRJZCA9PT0gZWxlbWVudC5wYXJlbnRJZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IGl0ZW1TZWxlY3RlZDtcclxuICAgIH0sIDUwMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tTZWxlY3RlZFNhbWVOb2RlKGl0ZW1TZWxlY3RlZDogVHJlZUZsYXROb2RlW10sIGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1TZWxlY3RlZC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBpdGVtU2VsZWN0ZWRbal07XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQgJiYgdHJlZS5pZCA9PT0gZWxlbWVudC5pZFxyXG4gICAgICAgICAgJiYgdHJlZS5wYXJlbnRJZCA9PT0gZWxlbWVudC5wYXJlbnRJZCAmJiAhdHJlZS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgZmxhZyA/IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCh0cmVlKSA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KHRyZWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SXRlbUljb25UeXBlKHRyZWVDb25maWc6IFRyZWVDb25maWcpIHtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uICYmIHRyZWVDb25maWcuaXRlbUljb24ubGVuZ3RoKSByZXR1cm4gdGhpcy5pdGVtSWNvblR5cGUubmFtZTtcclxuICAgIGlmICh0cmVlQ29uZmlnLml0ZW1JY29uUGF0aCAmJiB0cmVlQ29uZmlnLml0ZW1JY29uUGF0aC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5wYXRoO1xyXG4gICAgaWYgKHRyZWVDb25maWcuaXRlbUljb25CYXNlNjQgJiYgdHJlZUNvbmZpZy5pdGVtSWNvbkJhc2U2NC5sZW5ndGgpIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5iYXNlNjQ7XHJcbiAgICBpZiAodHJlZUNvbmZpZy5pdGVtSWNvblN2ZyAmJiB0cmVlQ29uZmlnLml0ZW1JY29uU3ZnLmxlbmd0aCkgcmV0dXJuIHRoaXMuaXRlbUljb25UeXBlLnN2ZztcclxuICAgIHJldHVybiB0aGlzLml0ZW1JY29uVHlwZS5ub25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1lciA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikgPT4ge1xyXG4gICAgbGV0IGNoZWNrSGFzQ2hpbGQgPSB0cnVlO1xyXG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgIGNoZWNrSGFzQ2hpbGQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoISghIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgISFub2RlLmNoaWxkcmVuICYmXHJcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoICYmXHJcbiAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICFub2RlLmNoaWxkcmVuWzBdLm5hbWUgJiZcclxuICAgICAgbm9kZS5pZD8udG9TdHJpbmcoKSA9PT0gJydcclxuICAgICkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEodGhpcy5saXN0UGFyZW50T2JqW25vZGUuaWRdID09PSAxKSkge1xyXG4gICAgICBjaGVja0hhc0NoaWxkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcclxuICAgICAgbmFtZTogbm9kZS5uYW1lLFxyXG4gICAgICBsZXZlbCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGhhc0NoaWxkOiBjaGVja0hhc0NoaWxkLFxyXG4gICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBsZXZlbFR5cGU6IG5vZGUubGV2ZWxUeXBlXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHRyZWVGbGF0dGVuZXIgPSBuZXcgTWF0VHJlZUZsYXR0ZW5lcihcclxuICAgIHRoaXMudHJhbnNmb3JtZXIsXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5sZXZlbDtcclxuICAgIH0sXHJcbiAgICAobm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZS5leHBhbmRhYmxlO1xyXG4gICAgfSxcclxuICAgIChub2RlKSA9PiB7XHJcbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcblxyXG5cclxuICAvKiogV2hldGhlciBhbGwgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSBub2RlIGFyZSBzZWxlY3RlZCAqL1xyXG4gIGRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogVHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcblxyXG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPyB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKSA6IFtdO1xyXG5cclxuICAgIGlmICghZGVzY2VuZGFudHMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpO1xyXG5cclxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xyXG4gICAgaWYgKCFzZWxlY3RlZCAmJiBhbGxTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsU2VsZWN0ZWQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID8gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCkgOiBbXTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBkZXNjZW5kYW50cy5zb21lKGNoaWxkID0+IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpKTtcclxuICAgIHJldHVybiByZXN1bHQgJiYgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKTtcclxuICB9XHJcblxyXG4gIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXHJcbiAgcHVibGljIHRvZG9JdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgIC8vIHRyZWUgaGF2ZSBkdXBsaWNhdGUgbm9kZVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5jYW5IYXZlRHVwSWQpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZFxyXG4gICAgICAgICAgJiYgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0ucGFyZW50SWQgPT09IG5vZGUucGFyZW50SWRcclxuICAgICAgICAgICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gcHJvY2Vzcy8gZG9jdW1lbnQgc2luZ2xlIHNlbGVjdGVkXHJcbiAgICBpZiAoIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XHJcblxyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0ZWRTYW1lTm9kZShkZXNjZW5kYW50cywgdGhpcy5kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpKTtcclxuXHJcbiAgICAgICF0aGlzLmRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcclxuICAgICAgICA/IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cylcclxuICAgICAgICA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcclxuXHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICBjb25zdCBhbGxOb2RlSXNQYXJlbnQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5ldmVyeShjaGlsZCA9PiBjaGlsZC5leHBhbmRhYmxlKTtcclxuICAgICAgaWYgKGFsbE5vZGVJc1BhcmVudCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChlbGVtZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgdG9kb0NoaWxkU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uaWQgPT09IG5vZGUuaWRcclxuICAgICAgICAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgICYmICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZG9JdGVtU2VsZWN0aW9uQnlJZChpZHM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZHMuZm9yRWFjaChcclxuICAgICAgaWQgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gaWRcclxuICAgICAgICAgICAgJiYgIXRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmNoZWNrQm94RXZlbnQuZW1pdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0l0ZW1TZWxlY3Rpb24obm9kZXM6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIG5vZGVzLmZvckVhY2goXHJcbiAgICAgIG5vZGUgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5pZCA9PT0gbm9kZS5pZCAmJlxyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5wYXJlbnRJZCA9PT0gbm9kZS5wYXJlbnRJZCAmJlxyXG4gICAgICAgICAgICAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKSlcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi50b2dnbGUodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiAhdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV0pKVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tCb3hFdmVudC5lbWl0KHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9kb0ZvbGRlclNlbGVjdGlvbihub2RlczogVHJlZU5vZGVbXSk6IHZvaWQge1xyXG4gICAgbm9kZXMuZm9yRWFjaChcclxuICAgICAgbm9kZSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLmlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldLnBhcmVudElkID09PSBub2RlLnBhcmVudElkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5kaXNhYmxlZCAmJiB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXSkpXHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5jaGVja0JveEV2ZW50LmVtaXQodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5pZENoZWNrSWNvbiA9IHRoaXMuaWRUb0NoZWNrU2VsZWN0T25lKG5vZGVzWzBdLmlkLCBub2Rlc1swXS5wYXJlbnRJZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBub2RlOiBUcmVlRmxhdE5vZGUpID0+IHtcclxuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XHJcbiAgfTtcclxuXHJcbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIGlmICh3aW5kb3dbUmVsYXRlZENvbnN0LklTX0RJU1BMQVlfU0VBUkNIX1JFU1VMVF0pIHtcclxuICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQsICcqJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUpIHtcclxuICAgICAgbm9kZS5pdGVtVHlwZSA9IHRoaXMuY2hlY2tEYXRhVHlwZVNlbGVjdE5vZGUobm9kZSk7XHJcbiAgICAgIHRoaXMuaWRDaGVja0ljb24gPSB0aGlzLmlkVG9DaGVja1NlbGVjdE9uZShub2RlLmlkLCBub2RlLnBhcmVudElkKTtcclxuICAgICAgdGhpcy5zZWxlY3ROb2RlRXZlbnQuZW1pdChub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRGF0YVR5cGVTZWxlY3ROb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgbGV0IGl0ZW1UeXBlID0gLTE7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICBpdGVtVHlwZSA9IG5vZGUuZXhwYW5kYWJsZSA/IERhdGFUeXBlLmFyZWEgOiBEYXRhVHlwZS5wcm9jZXNzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gbm9kZS5leHBhbmRhYmxlID8gRGF0YVR5cGUuZm9sZGVyIDogRGF0YVR5cGUuZG9jdW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5tb2R1bGVJZDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGb2xkZXIobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnNlbGVjdEZvbGRlckV2ZW50LmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBvbkV4cGFuZE5vZGUobm9kZTogVHJlZUZsYXROb2RlLCBpc0V4cGFuZE5vZGU/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnLnNlbGVjdE9uZSkge1xyXG4gICAgICBpZiAoaXNFeHBhbmROb2RlICYmICF0aGlzLmV4cGFuZE9uVGl0bGVDbGljaykge1xyXG4gICAgICAgIHRoaXMubm9kZUV4cGFuZEV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pZENoZWNrSWNvbiA9IHRoaXMuaWRUb0NoZWNrU2VsZWN0T25lKG5vZGUuaWQsIG5vZGUucGFyZW50SWQpO1xyXG4gICAgICAgIG5vZGUuaXRlbVR5cGUgPSB0aGlzLmNoZWNrRGF0YVR5cGVTZWxlY3ROb2RlKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0Tm9kZUV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dbUmVsYXRlZENvbnN0LklTX0RJU1BMQVlfU0VBUkNIX1JFU1VMVF0pIHtcclxuICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQsICcqJyk7XHJcbiAgICB9XHJcbiAgICAvLyBzZXQgdXNlRXhwYW5kRmVhdHVyZSA9IHRydWUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB0cmVlIGxvYWRpbmdcclxuICAgIGlmICghaXNFeHBhbmROb2RlIHx8ICF0aGlzLnVzZUV4cGFuZEZlYXR1cmUpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFyckluZGV4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXJySW5kZXhbaV0gPT09IG5vZGUuaWQpIHtcclxuICAgICAgICAgIHRoaXMuYXJySW5kZXguc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNFeHBhbmROb2RlICYmICF0aGlzLmV4cGFuZE9uVGl0bGVDbGljaykge1xyXG4gICAgICAgIHRoaXMubm9kZUV4cGFuZEV2ZW50LmVtaXQobm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy8gZ2V0IGFycmF5IGluZGV4IHRvIGV4cGFuZCBub2RlIGFmdGVyIHJlZnJlc2ggZGF0YXNvdXJjZVxyXG4gICAgbGV0IGluZGV4ID0gMDtcclxuICAgIGxldCBpc0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgbGV0IGlzUmVtb3ZlID0gZmFsc2U7XHJcbiAgICB0aGlzLmFyckluZGV4LnB1c2gobm9kZS5pZCk7XHJcblxyXG4gICAgY29uc3QgY2hpbGRBcnJheSA9IHRoaXMudHJlZURhdGEuZmlsdGVyKCh4KSA9PiB7XHJcbiAgICAgIHJldHVybiB4LnBhcmVudElkID09PSBub2RlLmlkO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgcm9vdElkID0gJzAnO1xyXG4gICAgbGV0IHBhcmVudEVsZW1lbnQ6IFRyZWVOb2RlO1xyXG4gICAgbGV0IGNoaWxkcmVuTGlzdDogVHJlZU5vZGVbXTtcclxuICAgIGlmIChjaGlsZEFycmF5Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjaGlsZEFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0ucm9vdElkID09PSByb290SWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGdldCBjaGlsZCBub2RlIGZyb20gb3JpZ2luYWwgZGF0YXNvdXJjZVxyXG4gICAgICBjb25zdCBjaGlsZCA9IHRoaXMuZ2V0Q2hpbGROb2RlKGl0ZW0ucm9vdElkLCBjaGlsZEFycmF5KTtcclxuICAgICAgcm9vdElkID0gaXRlbS5yb290SWQ7XHJcblxyXG4gICAgICBpbmRleCA9IHRoaXMuZ2V0Tm9kZUluZGV4KGNoaWxkLmlkLCB1bmRlZmluZWQsIHRoaXMuZGF0YVNvdXJjZVsnX3RyZWVDb250cm9sJ10uZGF0YU5vZGVzKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGFkZCBjaGlsZCBub2RlIHRvIGV4cGFuZCBub2RlXHJcbiAgICAgIHBhcmVudEVsZW1lbnQgPSB0aGlzLmZpbmRDaGlsZE5vZGUobm9kZS5pZCwgdGhpcy5kYXRhU291cmNlLmRhdGEpO1xyXG4gICAgICBpZiAocGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgIC8vIHRlbXBvcmFyeSByZW1vdmUgYWxsIG5vZGUgd2l0aG91dCBjaGlsZHJlbiA9PiBwdXJwb3NlIHRvIGFkZCBub2RlIGZvbGRlciBmaXJzdFxyXG4gICAgICAgIGlmICghaXNSZW1vdmUpIHtcclxuICAgICAgICAgIGNoaWxkcmVuTGlzdCA9IFsuLi5wYXJlbnRFbGVtZW50LmNoaWxkcmVuXTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4ocGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICBpc1JlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFkZCBub2RlIGZvbGRlciBmaXJzdFxyXG4gICAgICAgIHBhcmVudEVsZW1lbnQuY2hpbGRyZW4ucHVzaChjaGlsZCk7XHJcbiAgICAgICAgaXNDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIGFkZCBub2RlIHdpdGhvdXQgY2hpbGRyZW4gYWdhaW5cclxuICAgIGlmIChpc1JlbW92ZSkge1xyXG4gICAgICB0aGlzLmFkZENoaWxkcmVuKHBhcmVudEVsZW1lbnQsIGNoaWxkcmVuTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVmcmVzaCBkYXRhIGFuZCBleHBhbmQgdHJlZSBub2RlIGZyb20gcm9vdCBub2RlXHJcbiAgICBpZiAoaXNDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoVHJlZURhdGEoKTtcclxuICAgICAgdGhpcy5hcnJJbmRleC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaW5kZXggPSB0aGlzLmdldE5vZGVJbmRleChpdGVtLCB1bmRlZmluZWQsIHRoaXMuZGF0YVNvdXJjZVsnX3RyZWVDb250cm9sJ10uZGF0YU5vZGVzKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpbmRleF0pO1xyXG4gICAgICB9KTtcclxuICAgICAgaXNDaGFuZ2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaWxkcmVuKHBhcmVudEVsZW1lbnQ/OiBUcmVlTm9kZSkge1xyXG4gICAgaWYgKHBhcmVudEVsZW1lbnQuY2hpbGRyZW4pIHtcclxuICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ2hpbGRyZW4ocGFyZW50RWxlbWVudD86IFRyZWVOb2RlLCBjaGlsZHJlbkxpc3Q/OiBUcmVlTm9kZVtdKSB7XHJcbiAgICBpZiAoY2hpbGRyZW5MaXN0KSB7XHJcbiAgICAgIGNoaWxkcmVuTGlzdC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbi5wdXNoKGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE5vZGVJbmRleChpZDogc3RyaW5nLCBsZXZlbD86IG51bWJlciwgZGF0YT86IGFueVtdKSB7XHJcbiAgICBpZiAobGV2ZWwpIHtcclxuICAgICAgcmV0dXJuIGRhdGEuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkICYmIHgubGV2ZWwgPT09IGxldmVsO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0YS5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZE5vZGUocm9vdElkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgY2hpbGRBcnJheSA9IGRhdGEuZmlsdGVyKCh4KSA9PiB7XHJcbiAgICAgIHJldHVybiB4LnJvb3RJZCA9PT0gcm9vdElkO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IHsgaWQ6IGNoaWxkQXJyYXlbMF0ucm9vdElkLCBuYW1lOiBjaGlsZEFycmF5WzBdLnN1Yk5hbWUsIGNoaWxkcmVuOiBbXSB9IGFzIFRyZWVOb2RlO1xyXG4gICAgY2hpbGRBcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGNoaWxkLmNoaWxkcmVuLnB1c2goeyBpZDogaXRlbS5jaGlsZElkLCBuYW1lOiBpdGVtLmNoaWxkTmFtZSwgcGFyZW50SWQ6IHJvb3RJZCB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNoaWxkO1xyXG4gIH1cclxuXHJcbiAgZmluZENoaWxkTm9kZShpZDogc3RyaW5nLCBkYXRhOiBUcmVlTm9kZVtdKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgIGZvciAoY29uc3QgY3VycmVudEZhdGhlciBvZiBkYXRhKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RmF0aGVyLmlkID09PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50RmF0aGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGlsZCA9IGN1cnJlbnRGYXRoZXIuY2hpbGRyZW4uZmluZCgoeCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjdXJyZW50Q2hpbGQpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyZW50Q2hpbGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcclxuICAgICAgICBmb3IgKGNvbnN0IGN1cnJlbnRDaGlsZDEgb2YgY3VycmVudEZhdGhlci5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKGlkICE9PSBjdXJyZW50Q2hpbGQxLmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZENoaWxkTm9kZShpZCwgY3VycmVudEZhdGhlci5jaGlsZHJlbik7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFRyZWVEYXRhKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcclxuICB9XHJcblxyXG4gIGdldE5vZGVJY29uKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgaWYgKHRoaXMub3Blbkljb24gJiYgdGhpcy5jbG9zZUljb24pIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/IHRoaXMub3Blbkljb24gOiB0aGlzLmNsb3NlSWNvbjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5tb2R1bGVJZCkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OiB7XHJcbiAgICAgICAgY29uc3Qgbm9kZURhdGEgPSB0aGlzLnRyZWVEYXRhLmZpbHRlcih4ID0+IHsgcmV0dXJuIHgucm9vdElkID09PSBub2RlLmlkOyB9KTtcclxuICAgICAgICBpZiAobm9kZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgc3dpdGNoIChub2RlRGF0YVswXS5sZXZlbFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdkZXBhcnRtZW50X2ZvbGRlcl9vdXRsaW5lZCcgOiAnZGVwYXJ0bWVudF9mb2xkZXInO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdyZWdpb25hbF9mb2xkZXJfb3V0bGluZWQnIDogJ3JlZ2lvbmFsX2ZvbGRlcic7XHJcbiAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdlbnRlcnByaXNlX2ZvbGRlcl9vdXRsaW5lZCcgOiAnZW50ZXJwcmlzZV9mb2xkZXInO1xyXG4gICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnbG9jYWxfZm9sZGVyX291dGxpbmVkJyA6ICdsb2NhbF9mb2xkZXInO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZm9sZGVyX291dGxpbmVkJyA6ICdmb2xkZXInO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2tleWJvYXJkX3VwJyA6ICdrZXlib2FyZF9kb3duJztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdwcm9jZXNzX2FyZWFfb3V0bGluZWQnIDogJ3Byb2Nlc3NfYXJlYSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdrZXlib2FyZF91cCcgOiAna2V5Ym9hcmRfZG93bic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtSWNvbihub2RlKSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kdWxlSWQpIHtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcclxuICAgICAgICBzd2l0Y2ggKG5vZGUubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcclxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9kZXBhcnRtZW50JztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2VudGVycHJpc2UnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9sb2NhbCc7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3MnO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxyXG4gICAgICAgIHJldHVybiAnZGV2aWF0aW9uJztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIHJldHVybiAncmlzayc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RGb2xkZXJOb2RlKG5vZGU6IFRyZWVGbGF0Tm9kZSkge1xyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZy5zZWxlY3RPbmUgJiYgIXRoaXMudHJlZUNvbmZpZy5hbGxvd1NlbGVjdEZvbGRlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmV4cGFuZE9uVGl0bGVDbGljaykge1xyXG4gICAgICB0aGlzLm9uRXhwYW5kTm9kZShub2RlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWQobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaWQpIHtcclxuICAgIH1cclxuICAgIHJldHVybiBgXyR7bm9kZS5wYXJlbnRJZCA/IG5vZGUucGFyZW50SWQudG9Mb3dlckNhc2UoKSA6ICcnfV8ke25vZGUuaWQudG9Mb3dlckNhc2UoKX1fJHtub2RlLmxldmVsfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Tm9kZUJ5SWRBbmRQYXJlbnRJZChub2RlSWQ6IHN0cmluZywgcGFyZW50SWQ6IHN0cmluZyk6IFRyZWVGbGF0Tm9kZSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHguaWQgPT09IG5vZGVJZCAmJiB4LnBhcmVudElkID09PSBwYXJlbnRJZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZE5vZGUobm9kZTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICB9XHJcblxyXG4gIGlkVG9DaGVja1NlbGVjdE9uZShpZCwgcGFyZW50SWQpIHtcclxuICAgIHJldHVybiBgJHtpZH0tJHtwYXJlbnRJZH1gO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -16,6 +16,7 @@ import { QmsAngularModule } from "../../qms-angular.module";
16
16
  import { QMSAppIconModule } from "../app-icon/app-icon.module";
17
17
  import { QMSBreadcrumbModule } from "../breadcrumb/breadcrumb.module";
18
18
  import { QMSListModule } from "../list/list.module";
19
+ import { QMSBasicTreeComponent } from "./basic-tree.component";
19
20
  import { TreeComponent } from "./tree.component";
20
21
  export class QMSTreeModule {
21
22
  }
@@ -23,6 +24,7 @@ QMSTreeModule.decorators = [
23
24
  { type: NgModule, args: [{
24
25
  declarations: [
25
26
  TreeComponent,
27
+ QMSBasicTreeComponent
26
28
  ],
27
29
  imports: [
28
30
  CommonModule,
@@ -45,7 +47,8 @@ QMSTreeModule.decorators = [
45
47
  ],
46
48
  exports: [
47
49
  TreeComponent,
50
+ QMSBasicTreeComponent
48
51
  ]
49
52
  },] }
50
53
  ];
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBNkIvQyxNQUFNLE9BQU8sYUFBYTs7O1lBM0IzQixRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFO29CQUNaLGFBQWE7aUJBQ2Q7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osYUFBYTtvQkFDYixrQkFBa0I7b0JBQ2xCLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIsbUJBQW1CO29CQUNuQixlQUFlO29CQUNmLGFBQWE7b0JBQ2IsZ0JBQWdCO29CQUNoQixhQUFhO29CQUNiLG9CQUFvQjtvQkFDcEIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO2lCQUNqQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsYUFBYTtpQkFDZDthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZFwiO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdlwiO1xyXG5pbXBvcnQgeyBNYXRUcmVlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RyZWVcIjtcclxuXHJcbmltcG9ydCB7IFNoYXJlZE1hdGVyaWFsTW9kdWxlIH0gZnJvbSBcIi4uLy4uL21hdGVyaWFsLW1vZHVsZVwiO1xyXG5pbXBvcnQgeyBRbXNBbmd1bGFyTW9kdWxlIH0gZnJvbSBcIi4uLy4uL3Ftcy1hbmd1bGFyLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBRTVNBcHBJY29uTW9kdWxlIH0gZnJvbSBcIi4uL2FwcC1pY29uL2FwcC1pY29uLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBRTVNCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSBcIi4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2R1bGVcIjtcclxuaW1wb3J0IHsgUU1TTGlzdE1vZHVsZSB9IGZyb20gXCIuLi9saXN0L2xpc3QubW9kdWxlXCI7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tIFwiLi90cmVlLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICBNYXRUcmVlTW9kdWxlLFxyXG4gICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgU2Nyb2xsaW5nTW9kdWxlLFxyXG4gICAgICBNYXRDYXJkTW9kdWxlLFxyXG4gICAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcclxuICAgICAgUU1TTGlzdE1vZHVsZSxcclxuICAgICAgUW1zQW5ndWxhck1vZHVsZSxcclxuICAgICAgUU1TQnJlYWRjcnVtYk1vZHVsZSxcclxuICAgICAgUU1TQXBwSWNvbk1vZHVsZVxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6IFtcclxuICAgICAgVHJlZUNvbXBvbmVudCxcclxuICAgIF1cclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBRTVNUcmVlTW9kdWxlIHsgfSJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBK0JqRCxNQUFNLE9BQU8sYUFBYTs7O1lBN0J6QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLGFBQWE7b0JBQ2IscUJBQXFCO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixhQUFhO29CQUNiLGtCQUFrQjtvQkFDbEIsYUFBYTtvQkFDYixlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIscUJBQXFCO29CQUNyQixtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixnQkFBZ0I7aUJBQ2pCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxhQUFhO29CQUNiLHFCQUFxQjtpQkFDdEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NhcmRcIjtcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xyXG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXZcIjtcclxuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90cmVlXCI7XHJcblxyXG5pbXBvcnQgeyBTaGFyZWRNYXRlcmlhbE1vZHVsZSB9IGZyb20gXCIuLi8uLi9tYXRlcmlhbC1tb2R1bGVcIjtcclxuaW1wb3J0IHsgUW1zQW5ndWxhck1vZHVsZSB9IGZyb20gXCIuLi8uLi9xbXMtYW5ndWxhci5tb2R1bGVcIjtcclxuaW1wb3J0IHsgUU1TQXBwSWNvbk1vZHVsZSB9IGZyb20gXCIuLi9hcHAtaWNvbi9hcHAtaWNvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHsgUU1TQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gXCIuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kdWxlXCI7XHJcbmltcG9ydCB7IFFNU0xpc3RNb2R1bGUgfSBmcm9tIFwiLi4vbGlzdC9saXN0Lm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBRTVNCYXNpY1RyZWVDb21wb25lbnQgfSBmcm9tIFwiLi9iYXNpYy10cmVlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSBcIi4vdHJlZS5jb21wb25lbnRcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgUU1TQmFzaWNUcmVlQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRUcmVlTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgTWF0TGlzdE1vZHVsZSxcclxuICAgIFNoYXJlZE1hdGVyaWFsTW9kdWxlLFxyXG4gICAgUU1TTGlzdE1vZHVsZSxcclxuICAgIFFtc0FuZ3VsYXJNb2R1bGUsXHJcbiAgICBRTVNCcmVhZGNydW1iTW9kdWxlLFxyXG4gICAgUU1TQXBwSWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVHJlZUNvbXBvbmVudCxcclxuICAgIFFNU0Jhc2ljVHJlZUNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU1RyZWVNb2R1bGUgeyB9Il19
@@ -797,7 +797,7 @@ NewTreeComponent.decorators = [
797
797
  selector: 'qms-tree-new',
798
798
  template: "<mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"tree__container\"\r\n>\r\n <mat-tree-node\r\n class=\"tree-branch\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n >\r\n <!-- form thu 1 - child -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n >\r\n </mat-checkbox>\r\n\r\n <!-- form thu 2 -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && onlyCheckBoxForChild && !onlyFolder\"\r\n class=\"ml-10 checklist-leaf-node\"\r\n [checked]=\"checklistSelection.isSelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <div\r\n class=\"expand-node\"\r\n *ngIf=\"node.name && !onlyFolder\"\r\n [class.bgSelected]=\"treeConfig.selectOne && idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\"\r\n (click)=\"selectNode(node)\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <div class=\"expand-node__text\">\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.name && !onlyCheckBoxForChild\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n >\r\n {{ itemIcon }}\r\n </mat-icon>\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.svg && !onlyCheckBoxForChild\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"itemIconSvg\"\r\n >\r\n </mat-icon>\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.path && !onlyCheckBoxForChild\"\r\n class=\"mat-icon\"\r\n [src]=\"itemIconPath\"\r\n />\r\n\r\n <img\r\n *ngIf=\"displayType === itemIconType.base64 && !onlyCheckBoxForChild\"\r\n class=\"mat-icon image-base64\"\r\n [src]=\"getImagePath()\"\r\n />\r\n\r\n <mat-icon\r\n *ngIf=\"displayType === itemIconType.none && !onlyCheckBoxForChild\"\r\n class=\"mat-icon-rtl-mirror material-icons-outlined\"\r\n [svgIcon]=\"getItemIcon(node)\"\r\n ></mat-icon>\r\n <span class=\"text-node\"\r\n [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\">\r\n {{ node.name }}\r\n </span>\r\n </div>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\r\n <!-- form thu 1 - parent -->\r\n <mat-checkbox\r\n qms-group-options\r\n [disabled]=\"node.disabled\"\r\n color=\"default\"\r\n *ngIf=\"node.name && showCheckBox && !onlyCheckBoxForChild\"\r\n [checked]=\"descendantsAllSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"todoItemSelectionToggle(node)\"\r\n ></mat-checkbox>\r\n <button\r\n class=\"button-boder\"\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [disableRipple]=\"!node.hasChild\"\r\n [attr.aria-label]=\"'toggle ' + node.filename\"\r\n *ngIf=\"node.name\"\r\n (click)=\"onExpandNode(node, treeControl.isExpanded(node))\"\r\n >\r\n <mat-icon\r\n *ngIf=\"openIcon && closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : closeIconColor\r\n }\"\r\n >{{ getNodeIcon(node) }}</mat-icon\r\n >\r\n <mat-icon\r\n *ngIf=\"!openIcon || !closeIcon\"\r\n class=\"mat-icon-rtl-mirror\"\r\n [ngClass]=\"{\r\n 'open-icon': treeControl.isExpanded(node),\r\n 'not-department-icon': moduleId !== dataType.document\r\n }\"\r\n [svgIcon]=\"getNodeIcon(node)\"\r\n >\r\n </mat-icon>\r\n </button>\r\n <span\r\n *ngIf=\"expandOnTitleClick\"\r\n matTreeNodeToggle\r\n class=\"text-node-parent\"\r\n style=\"cursor: pointer\"\r\n (click)=\"onExpandNode(node, treeControl.isExpanded(node))\"\r\n [ngStyle]=\"{\r\n color: treeControl.isExpanded(node) ? openIconColor : '#000000'\r\n }\"\r\n >\r\n <span [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \">{{ node.name }}</span>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\"\r\n >done</mat-icon\r\n >\r\n </span>\r\n <span\r\n *ngIf=\"!expandOnTitleClick\"\r\n class=\"text-node-parent\"\r\n (click)=\"selectFolder(node)\"\r\n style=\"cursor: pointer\"\r\n [id]=\"getNodeId(node)\"\r\n >\r\n <span [class.select-one-checked]=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \">{{ node.name }}</span>\r\n <mat-icon\r\n class=\"select-one-checked\"\r\n *ngIf=\"\r\n treeConfig.selectOne &&\r\n idCheckIcon == idToCheckSelectOne(node.id, node.parentId)\r\n \"\r\n >done</mat-icon>\r\n </span>\r\n </mat-tree-node>\r\n</mat-tree>\r\n",
799
799
  encapsulation: ViewEncapsulation.None,
800
- styles: [".tree__container{font-family:Open Sans;font-style:normal;font-weight:400;font-size:.875rem;line-height:19px;color:var(--default-color)}.tree__container .mat-tree-node{color:var(--tree-node-color);min-height:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options{padding:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.tree__container .button{margin-left:6px}.tree__container .button:focus,.tree__container .button:hover{background-color:var(--tree-node-background-color);border-radius:2px;width:auto}.tree__container .button-boder:focus,.tree__container .button:focus{outline:0}.tree__container .button-folder-boder:focus{outline:0}.tree__container .button-folder-boder:focus,.tree__container .button-folder-boder:hover{background-color:var(--tree-node-boder-color);border-radius:2px;width:auto}.tree__container .expand-node{margin-left:8px;min-height:32px;justify-content:space-between;width:100%}.tree__container .expand-node,.tree__container .expand-node .expand-node__text{display:flex;align-items:center}.tree__container .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node.bgSelected .select-one-checked{color:var(--primary)}.tree__container .text-node-parent{width:100%;display:flex;align-items:center;justify-content:space-between;margin-left:10px;cursor:pointer}.tree__container .text-node-parent.active-item{color:#1954a9!important}.tree__container .text-node-parent .select-one-checked{color:var(--primary)}.tree__container .mr-11{margin-right:11px}.tree__container .ml-10{margin-left:10px}.tree__container .tree-branch:hover{background-color:var(--primary-light-12-opacity)}.tree__container .image-base64{width:20px;height:20px}.tree__container .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}::ng-deep .mat-tree .mat-checkbox.qms-group-options{padding:0}::ng-deep .mat-tree .mat-checkbox.qms-group-options.mat-checkbox-checked{background-color:transparent}::ng-deep .mat-tree .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:0}svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.open-icon.not-department-icon svg path,.open-icon svg path:first-child{fill:#1954a9}"]
800
+ styles: [".tree__container{font-family:Open Sans;font-style:normal;font-weight:400;font-size:.875rem;line-height:19px;color:var(--default-color)}.tree__container .mat-tree-node{color:var(--tree-node-color);min-height:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options{padding:0}.tree__container .mat-tree-node .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:11px}.tree__container .button{margin-left:6px}.tree__container .button:focus,.tree__container .button:hover{background-color:var(--tree-node-background-color);border-radius:2px;width:auto}.tree__container .button-boder:focus,.tree__container .button:focus{outline:0}.tree__container .button-folder-boder:focus{outline:0}.tree__container .button-folder-boder:focus,.tree__container .button-folder-boder:hover{background-color:var(--tree-node-boder-color);border-radius:2px;width:auto}.tree__container .expand-node{margin-left:8px;min-height:32px;justify-content:space-between;width:100%}.tree__container .expand-node,.tree__container .expand-node .expand-node__text{display:flex;align-items:center}.tree__container .expand-node .mat-icon{color:rgba(0,0,0,.6);margin-right:17px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node .mat-icon svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.tree__container .expand-node.bgSelected .select-one-checked{color:var(--primary)}.tree__container .text-node-parent{width:100%;display:flex;align-items:center;justify-content:space-between;margin-left:10px;cursor:pointer}.tree__container .text-node-parent.active-item{color:#1954a9!important}.tree__container .text-node-parent .select-one-checked{color:var(--primary)}.tree__container .mr-11{margin-right:11px}.tree__container .ml-10{margin-left:10px}.tree__container .tree-branch:hover{background-color:var(--primary-light-12-opacity)}.tree__container .image-base64{width:20px;height:20px}.tree__container .mat-checkbox.qms-group-options.mat-checkbox-checked{background:transparent!important}::ng-deep .mat-tree .mat-checkbox.qms-group-options{padding:0}::ng-deep .mat-tree .mat-checkbox.qms-group-options.mat-checkbox-checked{background-color:transparent}::ng-deep .mat-tree .mat-checkbox.qms-group-options .mat-checkbox-inner-container{margin-right:0}svg{display:block;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.open-icon svg path:first-child,.open-icon.not-department-icon svg path{fill:#1954a9}"]
801
801
  },] }
802
802
  ];
803
803
  NewTreeComponent.ctorParameters = () => [
@@ -1,4 +1,4 @@
1
- import { Directive, ElementRef, Renderer2 } from "@angular/core";
1
+ import { Directive, ElementRef, Input, Renderer2 } from "@angular/core";
2
2
  export class QMSFormFieldDirective {
3
3
  constructor(elRef, renderer) {
4
4
  this.elRef = elRef;
@@ -64,13 +64,19 @@ export class QMSGroupOptionDirective {
64
64
  QMSGroupOptionDirective.decorators = [
65
65
  { type: Directive, args: [{
66
66
  selector: '[qms-group-options]',
67
- host: { 'class': 'qms-group-options' }
67
+ host: {
68
+ 'class': 'qms-group-options',
69
+ '[class.none-label]': 'label === "none"'
70
+ }
68
71
  },] }
69
72
  ];
70
73
  QMSGroupOptionDirective.ctorParameters = () => [
71
74
  { type: ElementRef },
72
75
  { type: Renderer2 }
73
76
  ];
77
+ QMSGroupOptionDirective.propDecorators = {
78
+ label: [{ type: Input }]
79
+ };
74
80
  export class AutocompleteOffDirective {
75
81
  constructor(_el) {
76
82
  this._el = _el;
@@ -89,4 +95,4 @@ AutocompleteOffDirective.decorators = [
89
95
  AutocompleteOffDirective.ctorParameters = () => [
90
96
  { type: ElementRef }
91
97
  ];
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvZm9ybS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9uRixNQUFNLE9BQU8scUJBQXFCO0lBQzlCLFlBQW9CLEtBQWlCLEVBQVUsUUFBbUI7UUFBOUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7SUFFbEUsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixDQUFDOzs7WUFUSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7YUFDaEM7OztZQU5xQyxVQUFVO1lBQUUsU0FBUzs7QUFtQjNELE1BQU0sT0FBTyw2QkFBNkI7SUFDdEMsWUFBb0IsS0FBaUIsRUFBVSxRQUFtQjtRQUE5QyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUVsRSxDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLENBQUM7OztZQVRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUU7YUFDOUM7OztZQWxCcUMsVUFBVTtZQUFFLFNBQVM7O0FBK0IzRCxNQUFNLE9BQU8sK0JBQStCO0lBQ3hDLFlBQW9CLEtBQWlCLEVBQVUsUUFBbUI7UUFBOUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7SUFFbEUsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixDQUFDOzs7WUFUSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFO2FBQ2hEOzs7WUE5QnFDLFVBQVU7WUFBRSxTQUFTOztBQTRDM0QsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxZQUFvQixLQUFpQixFQUFVLFFBQW1CO1FBQTlDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRWxFLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsQ0FBQzs7O1lBVEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTthQUN6Qzs7O1lBM0NxQyxVQUFVO1lBQUUsU0FBUzs7QUF5RDNELE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFBb0IsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7OztZQVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7YUFDekM7OztZQXZEcUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1mb3JtXScsXHJcbiAgICBob3N0OiB7ICdjbGFzcyc6ICdxbXMtZm9ybScgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TRm9ybUZpZWxkRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuXHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbcW1zLWZvcm0tdGV4dGFyZWFdJyxcclxuICAgIGhvc3Q6IHsgJ2NsYXNzJzogJ3Ftcy1mb3JtIGZvcm0tdGV4dGFyZWEnIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuXHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbcW1zLWZvcm0tZGF0ZV0nLFxyXG4gICAgaG9zdDogeyAnY2xhc3MnOiAncW1zLWZvcm0gZm9ybS1kYXRlcGlja2VyJyB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNGb3JtRmllbGREYXRlUGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuXHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1ncm91cC1vcHRpb25zXScsXHJcbiAgICBob3N0OiB7ICdjbGFzcyc6ICdxbXMtZ3JvdXAtb3B0aW9ucycgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG5cclxuICAgIH1cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1txbXMtZ3JvdXAtb3B0aW9uc10nLFxyXG4gICAgaG9zdDogeyAnY2xhc3MnOiAncW1zLWdyb3VwLW9wdGlvbnMnIH1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVPZmZEaXJlY3RpdmUge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29mZicpO1xyXG4gICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhdXRvY29ycmVjdCcsICdvZmYnKTtcclxuICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXV0b2NhcGl0YWxpemUnLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzcGVsbGNoZWNrJywgJ2ZhbHNlJyk7XHJcbiAgICB9XHJcbn0iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvZm9ybS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPMUYsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixLQUFpQixFQUFVLFFBQW1CO1FBQTlDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRWxFLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsQ0FBQzs7O1lBVEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO2FBQ2hDOzs7WUFOcUMsVUFBVTtZQUFTLFNBQVM7O0FBbUJsRSxNQUFNLE9BQU8sNkJBQTZCO0lBQ3RDLFlBQW9CLEtBQWlCLEVBQVUsUUFBbUI7UUFBOUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7SUFFbEUsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixDQUFDOzs7WUFUSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFO2FBQzlDOzs7WUFsQnFDLFVBQVU7WUFBUyxTQUFTOztBQStCbEUsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxZQUFvQixLQUFpQixFQUFVLFFBQW1CO1FBQTlDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRWxFLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsQ0FBQzs7O1lBVEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRTthQUNoRDs7O1lBOUJxQyxVQUFVO1lBQVMsU0FBUzs7QUErQ2xFLE1BQU0sT0FBTyx1QkFBdUI7SUFHaEMsWUFBb0IsS0FBaUIsRUFBVSxRQUFtQjtRQUE5QyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUVsRSxDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLENBQUM7OztZQWRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQUU7b0JBQ0YsT0FBTyxFQUFFLG1CQUFtQjtvQkFDNUIsb0JBQW9CLEVBQUUsa0JBQWtCO2lCQUMzQzthQUNKOzs7WUE5Q3FDLFVBQVU7WUFBUyxTQUFTOzs7b0JBZ0Q3RCxLQUFLOztBQWNWLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFBb0IsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7OztZQVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7YUFDekM7OztZQTVEcUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1txbXMtZm9ybV0nLFxyXG4gICAgaG9zdDogeyAnY2xhc3MnOiAncW1zLWZvcm0nIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcblxyXG4gICAgfVxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1mb3JtLXRleHRhcmVhXScsXHJcbiAgICBob3N0OiB7ICdjbGFzcyc6ICdxbXMtZm9ybSBmb3JtLXRleHRhcmVhJyB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcblxyXG4gICAgfVxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1mb3JtLWRhdGVdJyxcclxuICAgIGhvc3Q6IHsgJ2NsYXNzJzogJ3Ftcy1mb3JtIGZvcm0tZGF0ZXBpY2tlcicgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcblxyXG4gICAgfVxyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1txbXMtZ3JvdXAtb3B0aW9uc10nLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICdxbXMtZ3JvdXAtb3B0aW9ucycsXHJcbiAgICAgICAgJ1tjbGFzcy5ub25lLWxhYmVsXSc6ICdsYWJlbCA9PT0gXCJub25lXCInXHJcbiAgICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNHcm91cE9wdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuXHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbcW1zLWdyb3VwLW9wdGlvbnNdJyxcclxuICAgIGhvc3Q6IHsgJ2NsYXNzJzogJ3Ftcy1ncm91cC1vcHRpb25zJyB9XHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlT2ZmRGlyZWN0aXZlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScsICdvZmYnKTtcclxuICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXV0b2NvcnJlY3QnLCAnb2ZmJyk7XHJcbiAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2F1dG9jYXBpdGFsaXplJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3BlbGxjaGVjaycsICdmYWxzZScpO1xyXG4gICAgfVxyXG59Il19