@simpleangularcontrols/sac-common 13.0.0-rc.20 → 13.0.0-rc.21

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 (119) hide show
  1. package/controls/grid/gridcolumnbase.d.ts +5 -1
  2. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  3. package/controls/treeview/treeview.d.ts +2 -2
  4. package/controls/treeview/treeview.d.ts.map +1 -1
  5. package/esm2020/common/basedatetimecontrol.mjs +1 -1
  6. package/esm2020/common/baseinputcontrol.mjs +1 -1
  7. package/esm2020/common/baselistcontrol.mjs +1 -1
  8. package/esm2020/common/basemodelcontrol.mjs +1 -1
  9. package/esm2020/common/baseselectcontrol.mjs +1 -1
  10. package/esm2020/common/baseuploadcontrol.mjs +1 -1
  11. package/esm2020/components/browser/browser.mjs +1 -1
  12. package/esm2020/components/browser/models/browserfiledeleterequest.mjs +1 -1
  13. package/esm2020/components/browser/models/browserfilerenamerequest.mjs +1 -1
  14. package/esm2020/components/browser/models/browserfilesaverequest.mjs +1 -1
  15. package/esm2020/components/browser/models/browsernodedeleterequest.mjs +1 -1
  16. package/esm2020/components/browser/models/browsernodenewrequest.mjs +1 -1
  17. package/esm2020/components/browser/models/browsernoderenamerequest.mjs +1 -1
  18. package/esm2020/components/browser/models/browsernoderequest.mjs +1 -1
  19. package/esm2020/controls/buttons/button.mjs +1 -1
  20. package/esm2020/controls/checkbox/checkbox.mjs +1 -1
  21. package/esm2020/controls/checkbox/radiobutton.mjs +1 -1
  22. package/esm2020/controls/checkbox/radiobuttons.mjs +1 -1
  23. package/esm2020/controls/confirm/confirm.button.mjs +1 -1
  24. package/esm2020/controls/confirm/confirm.mjs +1 -1
  25. package/esm2020/controls/confirm/confirm.service.mjs +1 -1
  26. package/esm2020/controls/contextmenu/contextmenu.mjs +1 -1
  27. package/esm2020/controls/contextmenu/contextmenuanchor.mjs +1 -1
  28. package/esm2020/controls/contextmenu/contextmenucontainer.mjs +1 -1
  29. package/esm2020/controls/contextmenu/contextmenuitem.mjs +1 -1
  30. package/esm2020/controls/contextmenu/contextmenuitembutton.mjs +1 -1
  31. package/esm2020/controls/datetime/date.mjs +1 -1
  32. package/esm2020/controls/datetime/dateselector.mjs +1 -1
  33. package/esm2020/controls/datetime/datetime.mjs +1 -1
  34. package/esm2020/controls/datetime/time.mjs +1 -1
  35. package/esm2020/controls/dialog/dialog.mjs +1 -1
  36. package/esm2020/controls/form/form.mjs +1 -1
  37. package/esm2020/controls/grid/grid.mjs +1 -1
  38. package/esm2020/controls/grid/gridbutton.mjs +1 -1
  39. package/esm2020/controls/grid/gridcolumn.mjs +1 -1
  40. package/esm2020/controls/grid/gridcolumnaction.mjs +1 -1
  41. package/esm2020/controls/grid/gridcolumnbase.mjs +16 -14
  42. package/esm2020/controls/grid/model.mjs +1 -1
  43. package/esm2020/controls/grid/paging.mjs +1 -1
  44. package/esm2020/controls/input/input.mjs +1 -1
  45. package/esm2020/controls/input/inputarea.mjs +1 -1
  46. package/esm2020/controls/input/inputcurrency.mjs +1 -1
  47. package/esm2020/controls/input/inputdecimal.mjs +1 -1
  48. package/esm2020/controls/input/inputemail.mjs +1 -1
  49. package/esm2020/controls/input/inputinteger.mjs +1 -1
  50. package/esm2020/controls/input/inputpassword.mjs +1 -1
  51. package/esm2020/controls/input/inputsearch.mjs +1 -1
  52. package/esm2020/controls/layout/formlayout.mjs +1 -1
  53. package/esm2020/controls/list/buildvaluestring.mjs +1 -1
  54. package/esm2020/controls/list/dropdown.mjs +1 -1
  55. package/esm2020/controls/list/dropdownoptions.mjs +1 -1
  56. package/esm2020/controls/list/list.module.ngfactory.mjs +1 -1
  57. package/esm2020/controls/list/listbox.mjs +1 -1
  58. package/esm2020/controls/multilanguage/multilanguageinput.mjs +1 -1
  59. package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +1 -1
  60. package/esm2020/controls/static/formcontainer.mjs +1 -1
  61. package/esm2020/controls/static/staticlabel.mjs +1 -1
  62. package/esm2020/controls/tabs/tab.mjs +1 -1
  63. package/esm2020/controls/tabs/tabitem.mjs +1 -1
  64. package/esm2020/controls/tinymce/tinymce.mjs +1 -1
  65. package/esm2020/controls/tinymce/tinymcedialogsettings.mjs +1 -1
  66. package/esm2020/controls/tooltip/tooltip.mjs +1 -1
  67. package/esm2020/controls/treeview/treeview.mjs +6 -6
  68. package/esm2020/controls/upload/dropzonemultiple.mjs +1 -1
  69. package/esm2020/controls/upload/dropzonesingle.mjs +1 -1
  70. package/esm2020/controls/upload/uploadmultiple.mjs +1 -1
  71. package/esm2020/controls/upload/uploadsingle.mjs +1 -1
  72. package/esm2020/controls/validation/validationsummary.mjs +1 -1
  73. package/esm2020/controls/wizard/wizard.mjs +1 -1
  74. package/esm2020/controls/wizard/wizarditem.mjs +1 -1
  75. package/esm2020/enums/ControlHeight.mjs +1 -1
  76. package/esm2020/enums/IconType.mjs +1 -1
  77. package/esm2020/models/languagemodel.mjs +1 -1
  78. package/esm2020/services/sac-configuration.service.mjs +1 -1
  79. package/esm2020/services/sac-filebrowser.service.mjs +1 -1
  80. package/esm2020/services/sac-icon.service.mjs +1 -1
  81. package/esm2020/services/sac-language.service.mjs +1 -1
  82. package/esm2020/services/sac-localisation.service.mjs +1 -1
  83. package/esm2020/services/sac-validationkey.service.mjs +1 -1
  84. package/esm2020/utilities/convertion.mjs +1 -1
  85. package/esm2020/utilities/datatypes.mjs +1 -1
  86. package/esm2020/utilities/enums.mjs +1 -1
  87. package/esm2020/utilities/guid.mjs +1 -1
  88. package/esm2020/utilities/interpolation.mjs +1 -1
  89. package/esm2020/utilities/popuphelper.mjs +1 -1
  90. package/esm2020/utilities/positioning.mjs +1 -1
  91. package/esm2020/utilities/testingattribute.pipe.mjs +1 -1
  92. package/esm2020/utilities/utilities.module.ngfactory.mjs +1 -1
  93. package/esm2020/validation/email.validator.mjs +1 -1
  94. package/esm2020/validation/equals.validator.mjs +1 -1
  95. package/esm2020/validation/invaliddate.validator.mjs +1 -1
  96. package/esm2020/validation/isDateValid.mjs +1 -1
  97. package/esm2020/validation/maxdate.validator.mjs +1 -1
  98. package/esm2020/validation/maxtime.validator.mjs +1 -1
  99. package/esm2020/validation/maxvalue.validator.mjs +1 -1
  100. package/esm2020/validation/mindate.validator.mjs +1 -1
  101. package/esm2020/validation/minfiles.validator.mjs +1 -1
  102. package/esm2020/validation/mintextlength.validator.mjs +1 -1
  103. package/esm2020/validation/mintime.validator.mjs +1 -1
  104. package/esm2020/validation/minvalue.validator.mjs +1 -1
  105. package/esm2020/validation/multilanguagerequired.validator.mjs +1 -1
  106. package/esm2020/validation/multilanguagerequiredany.validator.mjs +1 -1
  107. package/esm2020/validation/notequals.validator.mjs +1 -1
  108. package/esm2020/validation/pattern.validator.mjs +1 -1
  109. package/esm2020/validation/required.validator.mjs +1 -1
  110. package/esm2020/validation/validation.mjs +1 -1
  111. package/esm2020/validation/validationerrorcreator.mjs +1 -1
  112. package/esm2020/validation/validationerroritem.mjs +1 -1
  113. package/fesm2015/simpleangularcontrols-sac-common.mjs +670 -668
  114. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  115. package/fesm2020/simpleangularcontrols-sac-common.mjs +670 -668
  116. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  117. package/package.json +1 -1
  118. package/simpleangularcontrols-sac-common-13.0.0-rc.21.tgz +0 -0
  119. package/simpleangularcontrols-sac-common-13.0.0-rc.20.tgz +0 -0
@@ -145,4 +145,4 @@ if((cov_2icfa0wtpo().b[28][0]++,this.uploadInput)&&(cov_2icfa0wtpo().b[28][1]++,
145
145
  * Konstruktor
146
146
  * @param ufile Upload Status
147
147
  */constructor(ufile){cov_2icfa0wtpo().f[52]++;cov_2icfa0wtpo().s[151]++;this.uploadId=ufile.uploadId;cov_2icfa0wtpo().s[152]++;this.name=ufile.name;cov_2icfa0wtpo().s[153]++;this.progress=ufile.progress;cov_2icfa0wtpo().s[154]++;this.status=ufile.status;cov_2icfa0wtpo().s[155]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGVBQWUsRUFHZixjQUFjLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV0QywyQkFBMkI7QUFFM0I7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQXFCLFNBQVEsbUJBQTBCO0lBMEh6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEkxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFD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SztnQkFzR0ssWUFBWTtzQkFEdEIsS0FBSztnQkFjSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFpQkssS0FBSztzQkFEZixLQUFLOztBQTZVVjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ0Qix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQVksS0FBa0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIElkU2VydmljZSxcbiAgICBVUExPQURYX0FKQVgsXG4gICAgVVBMT0FEWF9GQUNUT1JZX09QVElPTlMsXG4gICAgVVBMT0FEWF9PUFRJT05TLFxuICAgIFVwbG9hZFN0YXRlLFxuICAgIFVwbG9hZHhPcHRpb25zLFxuICAgIFVwbG9hZHhTZXJ2aWNlLFxufSBmcm9tICduZ3gtdXBsb2FkeCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuLyoqXG4gKiBCYXNlIEtsYXNzZSBmw7xyIFVwbG9hZGVyIENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcblxuICAgIC8qKlxuICAgICAqIEZpbGVzIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2F1dG91cGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBhdXNpZXJlbiB2b24gVXBsb2FkcyBlcmxhdWJlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFQSSBFbmRwb2ludFxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGluZyB2b24gbmV1ZW4gRmlsZXMgaW0gSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgIC8vIGV4aXQgaWYgZmlsZXMgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkdldE1heEZpbGVzKCkgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGaWxlcyA9IHRoaXMuR2V0TWF4RmlsZXMoKSArIHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZXMgPSBtYXhGaWxlcyAtIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZpbGVzIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IG5ldyBEYXRhVHJhbnNmZXIoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCArIHBvc3NpYmxlRmlsZXNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgZmlsZXNcbiAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGbDvHIgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25maWxlZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIGZvciBtdWx0aXBsZSB1cGxvYWRzIHBlciBmaWxlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbnVwbG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgdm9uIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gICAgICogQHBhcmFtIG5nWm9uZSBuZ3pvbmUgZm9yIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKCkpO1xuXG4gICAgICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gJyonO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSAnc29tZXRva2VuJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB0aGlzLl9hdXRvdXBsb2FkO1xuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmNodW5rU2l6ZSA9IDEwMjQgKiAxNiAqIDg7XG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKGY6IEZpbGUpID0+ICh7XG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluaXQgbmV3IFNlcnZpY2UgSW5zdGFuY2VcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfT1BUSU9OUywgbnVsbCksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9GQUNUT1JZX09QVElPTlMpLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KFVQTE9BRFhfQUpBWCksXG4gICAgICAgICAgICB0aGlzLm5nWm9uZSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChJZFNlcnZpY2UpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKCh1ZmlsZTogVXBsb2FkU3RhdGUpID0+IHRoaXMub25VcGxvYWQodWZpbGUpKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBmb3IgYnJvd3NlIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGNvbnRpbm91cyBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQ29udGludWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uRGVsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgcGF1c2UgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciB1cGxvYWQgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uVXBsb2FkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhbGxvd2VkdHlwZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuIGbDvHIgZGVuIFVwbG9hZC4gRm9ybWF0OiBcIi54eHgsLnl5eSwuenp6XCJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWxsb3dlZHR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dlZHR5cGVzID0gdHlwZXM7XG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB2O1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGvDtm5uZW4gdW50ZXJicm9jaGVuIHdlcmRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmFibGVwYXVzZSh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZXBhdXNlID0gdjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGVuIFJlZ2lzdHJhdGlvbiBFbmRwb2ludCBmw7xyIFVwbG9hZHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuZHBvaW50KHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbmRwb2ludCA9IHY7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGUuXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxuICAgICAqL1xuICAgIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgUXVldWUgRWxlbWVudGUgYmVpbmhhbHRldFxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNRdWV1ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIGVpbiBVcGxvYWQgYWJnZXNjaGxvc3NlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBwYXVzaWVydFxuICAgICAqIEByZXR1cm5zIFBhdXNpZXJ0ZXIgVXBsb2FkIGlzdCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgZsO8ciBVcGxvYWQgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBlaW5lcyBGaWxlcyBhbSBsYXVmZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgZGVuIFVwbG9hZGZvcnRzY2hyaXR0IHp1csO8Y2tcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgRm9ydHNjaHJpdHQuIFdlcnQgdm9uIDAtMTAwXG4gICAgICovXG4gICAgcHVibGljIFByb2dyZXNzKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSB3ZWxjaGUgZGllIFVwbG9hZCBJRCdzIGluIGRhcyBNb2RlbCBzZXR6dCBvZGVyIGzDtnNjaHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBTZXRVcGxvYWRWYWx1ZShmaWxlOiBVcGxvYWRTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgc2luZ2xlIHVwbG9hZFxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGFsbCBVcGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95IGRlcyBDb250cm9sc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXNpZXJ0IGRhcyBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBJbml0IEV2ZW50IExpc3RlbmVyIGZvciBJbnB1dCBGaWxlIENvbnRyb2wgYW5kIEhhbmRsaW5nIEZpbGVzXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0aGlzLl9hbGxvd2VkdHlwZXMpO1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih0aGlzLl90b2tlbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZHBvaW50IGlzIG5vdCBkZWZpbmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRzT3V0U3RyZWFtIFVwbG9hZCBJdGVtXG4gICAgICovXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudXBsb2Fkcy5maW5kSW5kZXgoKGYpID0+IGYudXBsb2FkSWQgPT09IHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5DdXN0b21BZGRWYWxpZGF0aW9uKHVmaWxlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwodWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0VYVEVOU0lPTicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcblxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdWZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiB1ZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLlVwZGF0ZUZpbGVDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF1c2UgYWxsIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2VBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzVXBsb2FkaW5nKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmVhcmVyIHRva2VuIGluIHRoZSB1cGxvYWQgc2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRUb2tlbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gVXBsb2FkXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogZ2V0IG1heC4gZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgR2V0TWF4RmlsZXMoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkaWUgRGF0ZWllcndlaXRlcnVuZyBnw7xsdGlnIGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlc2l6ZSBNYXggRmlsZSBTaXplIGluIEJ5dGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplVmFsaWQoZmlsZXNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkaWUgZXJsYXVidGVuIERhdGVudHlwZW4gZsO8ciBkZW4gVXBsb2FkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBbGxvd2VkVHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLyoqXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRGaWxlIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIERvY3VtZW50IElEXG4gICAgICovXG4gICAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZ3Jlc3M6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIEtvbnN0cnVrdG9yXG4gICAgICogQHBhcmFtIHVmaWxlIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl19
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmljZmEwd3RwbyIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJJZFNlcnZpY2UiLCJVUExPQURYX0FKQVgiLCJVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyIsIlVQTE9BRFhfT1BUSU9OUyIsIlVwbG9hZHhTZXJ2aWNlIiwib2YiLCJTYWNVcGxvYWRCYXNlIiwiY29uc3RydWN0b3IiLCJmb3JtbGF5b3V0IiwiaW5qZWN0b3IiLCJyZW5kZXJlciIsIm5nWm9uZSIsImYiLCJzIiwiX2FsbG93ZWR0eXBlcyIsIl9hdXRvdXBsb2FkIiwiX2VuYWJsZXBhdXNlIiwiX2VuZHBvaW50IiwiX3Rva2VuIiwib3B0aW9ucyIsImZpbGVMaXN0ZW5lciIsInVwbG9hZElucHV0IiwibmF0aXZlRWxlbWVudCIsImZpbGVzIiwiYiIsIkdldE1heEZpbGVzIiwibWF4RmlsZXMiLCJVcGxvYWRlZEZpbGVDb3VudCIsInBvc3NpYmxlRmlsZXMiLCJsZW5ndGgiLCJkYXRhVHJhbnNmZXIiLCJEYXRhVHJhbnNmZXIiLCJBcnJheSIsImZyb20iLCJzcGxpY2UiLCJmb3JFYWNoIiwiZmlsZSIsIml0ZW1zIiwiYWRkIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwib25maWxlZXJyb3IiLCJvbnVwbG9hZGNvbXBsZXRlIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsInVwbG9hZHMiLCJhbGxvd2VkVHlwZXMiLCJjb25jdXJyZW5jeSIsInRva2VuIiwiYXV0b1VwbG9hZCIsIndpdGhDcmVkZW50aWFscyIsImNodW5rU2l6ZSIsImhlYWRlcnMiLCJlbmNvZGVVUkkiLCJuYW1lIiwiaW5pdCIsImV2ZW50cyIsInN1YnNjcmliZSIsInVmaWxlIiwib25VcGxvYWQiLCJJY29uQnJvd3NlIiwiaWNvblNlcnZpY2UiLCJVcGxvYWRDb21wb25lbnRCcm93c2VJY29uIiwiSWNvbkNvbnRpbnVlIiwiVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uIiwiSWNvbkRlbGV0ZSIsIlVwbG9hZENvbXBvbmVudERlbGV0ZUljb24iLCJJY29uUGF1c2UiLCJVcGxvYWRDb21wb25lbnRQYXVzZUljb24iLCJJY29uVXBsb2FkIiwiVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbiIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50Iiwic2V0VG9rZW4iLCJGaWxlbmFtZSIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsIlNldFVwbG9hZFZhbHVlIiwidXBsb2FkU3RhdGUiLCJ1cGxvYWRpZCIsIlVwZGF0ZUZpbGVDb3VudCIsInBhdXNlIiwicGF1c2VBbGwiLCJ2YWx1ZSIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJmaWxlbmFtZSIsImlzVmFsaWQiLCJleHRlbnNpb25zIiwic3BsaXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgSWRTZXJ2aWNlLFxuICAgIFVQTE9BRFhfQUpBWCxcbiAgICBVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyxcbiAgICBVUExPQURYX09QVElPTlMsXG4gICAgVXBsb2FkU3RhdGUsXG4gICAgVXBsb2FkeE9wdGlvbnMsXG4gICAgVXBsb2FkeFNlcnZpY2UsXG59IGZyb20gJ25neC11cGxvYWR4JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuXG4vKipcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbG93ZWR0eXBlczogc3RyaW5nID0gJyonO1xuXG4gICAgLyoqXG4gICAgICogRmlsZXMgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQVBJIEVuZHBvaW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNldHRpbmdzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgLy8gZXhpdCBpZiBmaWxlcyBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuR2V0TWF4RmlsZXMoKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG1heEZpbGVzID0gdGhpcy5HZXRNYXhGaWxlcygpICsgdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zc2libGVGaWxlcyA9IG1heEZpbGVzIC0gdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRmlsZXMgPCAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykuc3BsaWNlKFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgcG9zc2libGVGaWxlc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBjbG9uZSBmaWxlc1xuICAgICAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZsO8ciBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBEYXRlaWdyw7Zzc2UgZsO8ciBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIGvDtm5uZW4uIDAgZGVha3RpdmllcnQgZGVuIEZpbHRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhmaWxlc2l6ZTogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRzOiBTYWNVcGxvYWRGaWxlW107XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XG5cbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9BSkFYKSxcbiAgICAgICAgICAgIHRoaXMubmdab25lLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KElkU2VydmljZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcblxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsZXMgbmFjaCBkZXIgQXVzd2FobCBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cbiAgICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgZGVyIERhdGVpIGRpZSBIb2NoZ2VsYWRlbiB3aXJkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBkZXMgRGF0ZWluYW1lbnMuXG4gICAgICovXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBRdWV1ZSBFbGVtZW50ZSBiZWluaGFsdGV0XG4gICAgICogQHJldHVybnMgRWxlbWVudGUgaW4gZGVyIFF1ZXVlXG4gICAgICovXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XG4gICAgICogQHJldHVybnMgUGF1c2llcnRlciBVcGxvYWQgaXN0IHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGluIGRlciBRdWV1ZSBFbGVtZW50ZSBkaWUgenVtIFVwbG9hZCBiZXJlaXQgc2luZCB2b3JoYW5kZW4gc2luZC5cbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIGVpbmVzIEZpbGVzIGFtIGxhdWZlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXN0IGFtIGxhdWZlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1VwbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xuICAgICAqIEByZXR1cm5zIFVwbG9hZCBGb3J0c2Nocml0dC4gV2VydCB2b24gMC0xMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcblxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBFdmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIFNpbmdsZSBGaWxlXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBhbGwgVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBnZXQgbWF4LiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBHZXRNYXhGaWxlcygpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgcHJpdmF0ZSBVcGRhdGVGaWxlQ291bnQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID0gdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBVcGxvYWRlZEZpbGVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRpZSBEYXRlaWVyd2VpdGVydW5nIGfDvGx0aWcgaXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0V4dGVuc2lvblZhbGlkKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gdGhpcy5fYWxsb3dlZHR5cGVzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGFzIEZpbGUgbmljaHQgenUgZ3Jvc3MgaXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBGaWxlIFNpemUgaW4gQnl0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlcyBFcmxhdWJ0ZSBGaWxlIEV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdhY2NlcHQnLCB0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGVuIFVwbG9hZCBFbmRwb2l0XG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVuZHBvaW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuXG4vKipcbiAqIEtsYXNzZSBmw7xyIGRlbiBVcGxvYWQgZWluZXIgRGF0ZWkgaW4gZGVyIFVwbG9hZCBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRG9jdW1lbnQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBGb3J0c2Nocml0dFxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XG4gICAgICAgIHRoaXMubmFtZSA9IHVmaWxlLm5hbWU7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRpZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXSwibWFwcGluZ3MiOiJtbHREQW1LSTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0EvSkosT0FBU0Usd0JBQXdCLENBQUVDLDhCQUE4QixLQUFRLGFBQWEsQ0FDdEYsT0FBU0MsdUJBQXVCLENBQUVDLDZCQUE2QixLQUFRLHNDQUFzQyxDQUM3RyxPQUFTQyxVQUFVLEtBQVEsZUFB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
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmljZmEwd3RwbyIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJJZFNlcnZpY2UiLCJVUExPQURYX0FKQVgiLCJVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyIsIlVQTE9BRFhfT1BUSU9OUyIsIlVwbG9hZHhTZXJ2aWNlIiwib2YiLCJTYWNVcGxvYWRCYXNlIiwiY29uc3RydWN0b3IiLCJmb3JtbGF5b3V0IiwiaW5qZWN0b3IiLCJyZW5kZXJlciIsIm5nWm9uZSIsImYiLCJzIiwiX2FsbG93ZWR0eXBlcyIsIl9hdXRvdXBsb2FkIiwiX2VuYWJsZXBhdXNlIiwiX2VuZHBvaW50IiwiX3Rva2VuIiwib3B0aW9ucyIsImZpbGVMaXN0ZW5lciIsInVwbG9hZElucHV0IiwibmF0aXZlRWxlbWVudCIsImZpbGVzIiwiYiIsIkdldE1heEZpbGVzIiwibWF4RmlsZXMiLCJVcGxvYWRlZEZpbGVDb3VudCIsInBvc3NpYmxlRmlsZXMiLCJsZW5ndGgiLCJkYXRhVHJhbnNmZXIiLCJEYXRhVHJhbnNmZXIiLCJBcnJheSIsImZyb20iLCJzcGxpY2UiLCJmb3JFYWNoIiwiZmlsZSIsIml0ZW1zIiwiYWRkIiwidXBsb2FkU2VydmljZSIsImhhbmRsZUZpbGVzIiwiaXNyZXF1aXJlZCIsIm1heGZpbGVzaXplIiwib25maWxlZXJyb3IiLCJvbnVwbG9hZGNvbXBsZXRlIiwidmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsInVwbG9hZHMiLCJhbGxvd2VkVHlwZXMiLCJjb25jdXJyZW5jeSIsInRva2VuIiwiYXV0b1VwbG9hZCIsIndpdGhDcmVkZW50aWFscyIsImNodW5rU2l6ZSIsImhlYWRlcnMiLCJlbmNvZGVVUkkiLCJuYW1lIiwiaW5pdCIsImV2ZW50cyIsInN1YnNjcmliZSIsInVmaWxlIiwib25VcGxvYWQiLCJJY29uQnJvd3NlIiwiaWNvblNlcnZpY2UiLCJVcGxvYWRDb21wb25lbnRCcm93c2VJY29uIiwiSWNvbkNvbnRpbnVlIiwiVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uIiwiSWNvbkRlbGV0ZSIsIlVwbG9hZENvbXBvbmVudERlbGV0ZUljb24iLCJJY29uUGF1c2UiLCJVcGxvYWRDb21wb25lbnRQYXVzZUljb24iLCJJY29uVXBsb2FkIiwiVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbiIsImFsbG93ZWR0eXBlcyIsInR5cGVzIiwic2V0QWxsb3dlZFR5cGVzIiwiYXV0b3VwbG9hZCIsInYiLCJjb25uZWN0IiwiZW5hYmxlcGF1c2UiLCJlbmRwb2ludCIsInNldEVuZHBvaW50Iiwic2V0VG9rZW4iLCJGaWxlbmFtZSIsIkdldFN0cmluZyIsIlVwbG9hZE5vRmlsZXNTZWxlY3RlZCIsIkhhc1F1ZXVlSXRlbSIsIkhhc1N1Y2Nlc3NVcGxvYWQiLCJmaWx0ZXIiLCJpdG0iLCJzdGF0dXMiLCJJc1BhdXNlZCIsIklzU3RhdGVUb1VwbG9hZCIsIklzVXBsb2FkaW5nIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsImNhbmNlbCIsInVwbG9hZElkIiwiY29udHJvbCIsImFjdGlvbiIsImNhbmNlbEFsbCIsIm5nT25EZXN0cm95IiwibGlzdGVuZXJGbiIsIm5nT25Jbml0IiwibGlzdGVuIiwiRXJyb3IiLCJpbmRleCIsImZpbmRJbmRleCIsImlzRXh0ZW5zaW9uVmFsaWQiLCJpc0ZpbGVTaXplVmFsaWQiLCJzaXplIiwiQ3VzdG9tQWRkVmFsaWRhdGlvbiIsInB1c2giLCJTYWNVcGxvYWRGaWxlIiwiZW1pdCIsIlNldFVwbG9hZFZhbHVlIiwidXBsb2FkU3RhdGUiLCJ1cGxvYWRpZCIsIlVwZGF0ZUZpbGVDb3VudCIsInBhdXNlIiwicGF1c2VBbGwiLCJ2YWx1ZSIsInVwbG9hZCIsInVwbG9hZEFsbCIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsInJlcXVpcmVkIiwibmdDb250cm9sIiwidXBsb2FkZWRmaWxlY291bnQiLCJmaWxlbmFtZSIsImlzVmFsaWQiLCJleHRlbnNpb25zIiwic3BsaXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwiZmlsZXNpemUiLCJzZXRBdHRyaWJ1dGUiLCJ1cmwiLCJkZXBzIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIlJlbmRlcmVyMiIsIk5nWm9uZSIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwib3V0cHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyIsImRvY3VtZW50aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgSWRTZXJ2aWNlLFxuICAgIFVQTE9BRFhfQUpBWCxcbiAgICBVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyxcbiAgICBVUExPQURYX09QVElPTlMsXG4gICAgVXBsb2FkU3RhdGUsXG4gICAgVXBsb2FkeE9wdGlvbnMsXG4gICAgVXBsb2FkeFNlcnZpY2UsXG59IGZyb20gJ25neC11cGxvYWR4JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuXG4vKipcbiAqIEJhc2UgS2xhc3NlIGbDvHIgVXBsb2FkZXIgQ29udHJvbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNVcGxvYWRCYXNlPFZBTFVFPiBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbG93ZWR0eXBlczogc3RyaW5nID0gJyonO1xuXG4gICAgLyoqXG4gICAgICogRmlsZXMgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQVBJIEVuZHBvaW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5kcG9pbnQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNldHRpbmdzXG4gICAgICovXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogRmlsZSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsaW5nIHZvbiBuZXVlbiBGaWxlcyBpbSBJbnB1dCBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgLy8gZXhpdCBpZiBmaWxlcyBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuR2V0TWF4RmlsZXMoKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG1heEZpbGVzID0gdGhpcy5HZXRNYXhGaWxlcygpICsgdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zc2libGVGaWxlcyA9IG1heEZpbGVzIC0gdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRmlsZXMgPCAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcykuc3BsaWNlKFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgcG9zc2libGVGaWxlc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBjbG9uZSBmaWxlc1xuICAgICAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZsO8ciBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBEYXRlaWdyw7Zzc2UgZsO8ciBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIGvDtm5uZW4uIDAgZGVha3RpdmllcnQgZGVuIEZpbHRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhmaWxlc2l6ZTogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRzOiBTYWNVcGxvYWRGaWxlW107XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XG5cbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9PUFRJT05TLCBudWxsKSxcbiAgICAgICAgICAgIGluamVjdG9yLmdldChVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyksXG4gICAgICAgICAgICBpbmplY3Rvci5nZXQoVVBMT0FEWF9BSkFYKSxcbiAgICAgICAgICAgIHRoaXMubmdab25lLFxuICAgICAgICAgICAgaW5qZWN0b3IuZ2V0KElkU2VydmljZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcblxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsZXMgbmFjaCBkZXIgQXVzd2FobCBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cbiAgICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgZGVyIERhdGVpIGRpZSBIb2NoZ2VsYWRlbiB3aXJkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBkZXMgRGF0ZWluYW1lbnMuXG4gICAgICovXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBRdWV1ZSBFbGVtZW50ZSBiZWluaGFsdGV0XG4gICAgICogQHJldHVybnMgRWxlbWVudGUgaW4gZGVyIFF1ZXVlXG4gICAgICovXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XG4gICAgICogQHJldHVybnMgUGF1c2llcnRlciBVcGxvYWQgaXN0IHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGluIGRlciBRdWV1ZSBFbGVtZW50ZSBkaWUgenVtIFVwbG9hZCBiZXJlaXQgc2luZCB2b3JoYW5kZW4gc2luZC5cbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIGVpbmVzIEZpbGVzIGFtIGxhdWZlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXN0IGFtIGxhdWZlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1VwbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xuICAgICAqIEByZXR1cm5zIFVwbG9hZCBGb3J0c2Nocml0dC4gV2VydCB2b24gMC0xMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcblxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBFdmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIFNpbmdsZSBGaWxlXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBhbGwgVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBnZXQgbWF4LiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBHZXRNYXhGaWxlcygpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgcHJpdmF0ZSBVcGRhdGVGaWxlQ291bnQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID0gdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBVcGxvYWRlZEZpbGVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRpZSBEYXRlaWVyd2VpdGVydW5nIGfDvGx0aWcgaXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0V4dGVuc2lvblZhbGlkKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gdGhpcy5fYWxsb3dlZHR5cGVzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGFzIEZpbGUgbmljaHQgenUgZ3Jvc3MgaXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBGaWxlIFNpemUgaW4gQnl0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlcyBFcmxhdWJ0ZSBGaWxlIEV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdhY2NlcHQnLCB0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGVuIFVwbG9hZCBFbmRwb2l0XG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVuZHBvaW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuXG4vKipcbiAqIEtsYXNzZSBmw7xyIGRlbiBVcGxvYWQgZWluZXIgRGF0ZWkgaW4gZGVyIFVwbG9hZCBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRG9jdW1lbnQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBGb3J0c2Nocml0dFxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XG4gICAgICAgIHRoaXMubmFtZSA9IHVmaWxlLm5hbWU7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRpZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXSwibWFwcGluZ3MiOiJtbHREQW1LSTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0EvSkosT0FBU0Usd0JBQXdCLENBQUVDLDhCQUE4QixLQUFRLGFBQWEsQ0FDdEYsT0FBU0MsdUJBQXVCLENBQUVDLDZCQUE2QixLQUFRLHNDQUFzQyxDQUM3RyxPQUFTQyxVQUFVLEtBQVEsZUFB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