@simpleangularcontrols/sac-common 16.0.0-rc.1 → 16.0.0-rc.11

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 (283) hide show
  1. package/README.md +8 -16
  2. package/common/basedatetimecontrol.d.ts +116 -30
  3. package/common/basedatetimecontrol.d.ts.map +1 -1
  4. package/common/baseinputcontrol.d.ts +9 -13
  5. package/common/baseinputcontrol.d.ts.map +1 -1
  6. package/common/basemodelcontrol.d.ts +168 -85
  7. package/common/basemodelcontrol.d.ts.map +1 -1
  8. package/common/baseuploadcontrol.d.ts +136 -141
  9. package/common/baseuploadcontrol.d.ts.map +1 -1
  10. package/components/browser/browser.d.ts +11 -6
  11. package/components/browser/browser.d.ts.map +1 -1
  12. package/controls/buttons/button.d.ts +23 -22
  13. package/controls/buttons/button.d.ts.map +1 -1
  14. package/controls/checkbox/checkbox.d.ts +18 -5
  15. package/controls/checkbox/checkbox.d.ts.map +1 -1
  16. package/controls/checkbox/radiobutton.d.ts +68 -24
  17. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  18. package/controls/checkbox/radiobuttons.d.ts +21 -20
  19. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  20. package/controls/confirm/confirm.button.d.ts +14 -8
  21. package/controls/confirm/confirm.button.d.ts.map +1 -1
  22. package/controls/confirm/confirm.service.d.ts +24 -19
  23. package/controls/confirm/confirm.service.d.ts.map +1 -1
  24. package/controls/contextmenu/contextmenu.d.ts +51 -44
  25. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  26. package/controls/contextmenu/contextmenu.interface.d.ts +4 -0
  27. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -0
  28. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  29. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  30. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  31. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  32. package/controls/contextmenu/contextmenuitem.d.ts +6 -1
  33. package/controls/contextmenu/contextmenuitem.d.ts.map +1 -1
  34. package/controls/contextmenu/contextmenuitembutton.d.ts +22 -21
  35. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  36. package/controls/datetime/date.d.ts +33 -36
  37. package/controls/datetime/date.d.ts.map +1 -1
  38. package/controls/datetime/datetime.d.ts +33 -37
  39. package/controls/datetime/datetime.d.ts.map +1 -1
  40. package/controls/datetime/time.d.ts +32 -36
  41. package/controls/datetime/time.d.ts.map +1 -1
  42. package/controls/dialog/dialog.d.ts +32 -44
  43. package/controls/dialog/dialog.d.ts.map +1 -1
  44. package/controls/form/form.d.ts +7 -43
  45. package/controls/form/form.d.ts.map +1 -1
  46. package/controls/grid/grid.d.ts +67 -62
  47. package/controls/grid/grid.d.ts.map +1 -1
  48. package/controls/grid/gridbutton.d.ts +14 -14
  49. package/controls/grid/gridbutton.d.ts.map +1 -1
  50. package/controls/grid/gridcolumn.d.ts +8 -8
  51. package/controls/grid/gridcolumn.d.ts.map +1 -1
  52. package/controls/grid/gridcolumnaction.d.ts +3 -3
  53. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  54. package/controls/grid/gridcolumnbase.d.ts +46 -38
  55. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  56. package/controls/grid/gridimage.d.ts +2 -2
  57. package/controls/grid/gridimage.d.ts.map +1 -1
  58. package/controls/grid/model.d.ts +51 -42
  59. package/controls/grid/model.d.ts.map +1 -1
  60. package/controls/grid/paging.d.ts +77 -76
  61. package/controls/grid/paging.d.ts.map +1 -1
  62. package/controls/input/input.d.ts +11 -11
  63. package/controls/input/input.d.ts.map +1 -1
  64. package/controls/input/inputcurrency.d.ts +6 -1
  65. package/controls/input/inputcurrency.d.ts.map +1 -1
  66. package/controls/input/inputdecimal.d.ts +21 -21
  67. package/controls/input/inputdecimal.d.ts.map +1 -1
  68. package/controls/input/inputemail.d.ts.map +1 -1
  69. package/controls/input/inputinteger.d.ts +21 -21
  70. package/controls/input/inputinteger.d.ts.map +1 -1
  71. package/controls/input/inputpassword.d.ts +5 -5
  72. package/controls/input/inputpassword.d.ts.map +1 -1
  73. package/controls/input/inputsearch.d.ts +14 -5
  74. package/controls/input/inputsearch.d.ts.map +1 -1
  75. package/controls/layout/formlayout.d.ts +66 -0
  76. package/controls/layout/formlayout.d.ts.map +1 -0
  77. package/controls/list/buildvaluestring.d.ts +7 -0
  78. package/controls/list/buildvaluestring.d.ts.map +1 -0
  79. package/controls/list/dropdown.d.ts +36 -80
  80. package/controls/list/dropdown.d.ts.map +1 -1
  81. package/controls/list/dropdownoptions.d.ts +42 -0
  82. package/controls/list/dropdownoptions.d.ts.map +1 -0
  83. package/controls/list/listbox.d.ts +20 -20
  84. package/controls/list/listbox.d.ts.map +1 -1
  85. package/controls/multilanguage/multilanguageinput.d.ts +36 -35
  86. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  87. package/controls/multilanguage/multilanguageinputarea.d.ts +39 -38
  88. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  89. package/controls/static/formcontainer.d.ts +8 -4
  90. package/controls/static/formcontainer.d.ts.map +1 -1
  91. package/controls/tinymce/tinymce.d.ts +63 -63
  92. package/controls/tinymce/tinymce.d.ts.map +1 -1
  93. package/controls/tooltip/tooltip.d.ts +76 -69
  94. package/controls/tooltip/tooltip.d.ts.map +1 -1
  95. package/controls/treeview/treeview.d.ts +89 -123
  96. package/controls/treeview/treeview.d.ts.map +1 -1
  97. package/controls/upload/dropzonemultiple.d.ts +24 -24
  98. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  99. package/controls/upload/uploadmultiple.d.ts +9 -9
  100. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  101. package/controls/validation/validationsummary.d.ts +18 -13
  102. package/controls/validation/validationsummary.d.ts.map +1 -1
  103. package/enums/ButtonRoleType.d.ts +2 -0
  104. package/enums/ButtonRoleType.d.ts.map +1 -0
  105. package/enums/ControlHeight.d.ts +18 -0
  106. package/enums/ControlHeight.d.ts.map +1 -0
  107. package/esm2022/common/basedatetimecontrol.mjs +80 -164
  108. package/esm2022/common/baseinputcontrol.mjs +21 -80
  109. package/esm2022/common/baselistcontrol.mjs +11 -56
  110. package/esm2022/common/basemodelcontrol.mjs +134 -354
  111. package/esm2022/common/baseselectcontrol.mjs +6 -27
  112. package/esm2022/common/baseuploadcontrol.mjs +109 -433
  113. package/esm2022/components/browser/browser.mjs +66 -474
  114. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  115. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  116. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  117. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  118. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  119. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  120. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  121. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  122. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  123. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  124. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  125. package/esm2022/controls/buttons/button.mjs +32 -131
  126. package/esm2022/controls/checkbox/checkbox.mjs +15 -30
  127. package/esm2022/controls/checkbox/radiobutton.mjs +45 -102
  128. package/esm2022/controls/checkbox/radiobuttons.mjs +29 -106
  129. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  130. package/esm2022/controls/confirm/confirm.mjs +19 -69
  131. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  132. package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -0
  133. package/esm2022/controls/contextmenu/contextmenu.mjs +43 -171
  134. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +8 -19
  135. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +8 -19
  136. package/esm2022/controls/contextmenu/contextmenuitem.mjs +7 -13
  137. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +25 -93
  138. package/esm2022/controls/datetime/date.mjs +42 -206
  139. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  140. package/esm2022/controls/datetime/datetime.mjs +43 -223
  141. package/esm2022/controls/datetime/time.mjs +40 -204
  142. package/esm2022/controls/dialog/dialog.mjs +35 -209
  143. package/esm2022/controls/form/form.mjs +27 -153
  144. package/esm2022/controls/grid/grid.mjs +48 -155
  145. package/esm2022/controls/grid/gridbutton.mjs +21 -59
  146. package/esm2022/controls/grid/gridcolumn.mjs +21 -46
  147. package/esm2022/controls/grid/gridcolumnaction.mjs +8 -22
  148. package/esm2022/controls/grid/gridcolumnbase.mjs +35 -124
  149. package/esm2022/controls/grid/gridimage.mjs +5 -16
  150. package/esm2022/controls/grid/model.mjs +49 -74
  151. package/esm2022/controls/grid/paging.mjs +82 -251
  152. package/esm2022/controls/input/input.mjs +17 -65
  153. package/esm2022/controls/input/inputarea.mjs +10 -53
  154. package/esm2022/controls/input/inputcurrency.mjs +9 -14
  155. package/esm2022/controls/input/inputdecimal.mjs +33 -143
  156. package/esm2022/controls/input/inputemail.mjs +10 -37
  157. package/esm2022/controls/input/inputinteger.mjs +32 -127
  158. package/esm2022/controls/input/inputpassword.mjs +12 -43
  159. package/esm2022/controls/input/inputsearch.mjs +16 -38
  160. package/esm2022/controls/layout/formlayout.mjs +31 -0
  161. package/esm2022/controls/list/buildvaluestring.mjs +10 -0
  162. package/esm2022/controls/list/dropdown.mjs +45 -236
  163. package/esm2022/controls/list/dropdownoptions.mjs +22 -0
  164. package/esm2022/controls/list/listbox.mjs +40 -159
  165. package/esm2022/controls/multilanguage/multilanguageinput.mjs +48 -215
  166. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +51 -217
  167. package/esm2022/controls/static/formcontainer.mjs +18 -45
  168. package/esm2022/controls/static/staticlabel.mjs +7 -28
  169. package/esm2022/controls/tabs/tab.mjs +14 -68
  170. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  171. package/esm2022/controls/tinymce/tinymce.mjs +62 -232
  172. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  173. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  174. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  175. package/esm2022/controls/tooltip/tooltip.mjs +74 -358
  176. package/esm2022/controls/treeview/treeview.mjs +79 -343
  177. package/esm2022/controls/upload/dropzonemultiple.mjs +32 -152
  178. package/esm2022/controls/upload/dropzonesingle.mjs +12 -91
  179. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  180. package/esm2022/controls/upload/uploadsingle.mjs +8 -50
  181. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  182. package/esm2022/controls/wizard/wizard.mjs +20 -128
  183. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  184. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  185. package/esm2022/enums/ControlHeight.mjs +11 -0
  186. package/esm2022/enums/IconType.mjs +4 -8
  187. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -0
  188. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  189. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  190. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -0
  191. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  192. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  193. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  194. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  195. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  196. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  197. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  198. package/esm2022/interfaces/treeviewaction.interface.mjs +3 -0
  199. package/esm2022/models/languagemodel.mjs +5 -11
  200. package/esm2022/public_api.mjs +25 -94
  201. package/esm2022/services/index.mjs +3 -5
  202. package/esm2022/services/sac-configuration.service.mjs +35 -0
  203. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  204. package/esm2022/services/sac-icon.service.mjs +61 -155
  205. package/esm2022/services/sac-language.service.mjs +7 -45
  206. package/esm2022/services/sac-localisation.service.mjs +33 -428
  207. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  208. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  209. package/esm2022/utilities/convertion.mjs +6 -26
  210. package/esm2022/utilities/datatypes.mjs +4 -6
  211. package/esm2022/utilities/enums.mjs +10 -15
  212. package/esm2022/utilities/guid.mjs +8 -0
  213. package/esm2022/utilities/interpolation.mjs +7 -42
  214. package/esm2022/utilities/popuphelper.mjs +80 -0
  215. package/esm2022/utilities/positioning.mjs +23 -266
  216. package/esm2022/validation/email.validator.mjs +3 -13
  217. package/esm2022/validation/equals.validator.mjs +3 -0
  218. package/esm2022/validation/index.mjs +3 -3
  219. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  220. package/esm2022/validation/isDateValid.mjs +9 -13
  221. package/esm2022/validation/maxdate.validator.mjs +4 -21
  222. package/esm2022/validation/maxtime.validator.mjs +4 -21
  223. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  224. package/esm2022/validation/mindate.validator.mjs +4 -21
  225. package/esm2022/validation/minfiles.validator.mjs +4 -19
  226. package/esm2022/validation/minlength.validator.mjs +3 -21
  227. package/esm2022/validation/mintime.validator.mjs +4 -21
  228. package/esm2022/validation/minvalue.validator.mjs +3 -16
  229. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  230. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  231. package/esm2022/validation/notequals.validator.mjs +3 -0
  232. package/esm2022/validation/pattern.validator.mjs +3 -16
  233. package/esm2022/validation/required.validator.mjs +3 -13
  234. package/esm2022/validation/validation.mjs +41 -106
  235. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  236. package/esm2022/validation/validationerroritem.mjs +7 -19
  237. package/fesm2022/simpleangularcontrols-sac-common.mjs +2276 -9240
  238. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  239. package/interfaces/ISacConfigurationService.d.ts +59 -0
  240. package/interfaces/ISacConfigurationService.d.ts.map +1 -0
  241. package/interfaces/ISacIconService.d.ts +26 -2
  242. package/interfaces/ISacIconService.d.ts.map +1 -1
  243. package/interfaces/ISacLabelSizes.d.ts +27 -0
  244. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  245. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  246. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  247. package/interfaces/treeviewaction.interface.d.ts +5 -0
  248. package/interfaces/treeviewaction.interface.d.ts.map +1 -0
  249. package/package.json +2 -2
  250. package/public_api.d.ts +32 -21
  251. package/public_api.d.ts.map +1 -1
  252. package/services/index.d.ts +6 -4
  253. package/services/index.d.ts.map +1 -1
  254. package/services/sac-configuration.service.d.ts +127 -0
  255. package/services/sac-configuration.service.d.ts.map +1 -0
  256. package/services/sac-icon.service.d.ts +49 -1
  257. package/services/sac-icon.service.d.ts.map +1 -1
  258. package/services/sac-localisation.service.d.ts +103 -97
  259. package/services/sac-localisation.service.d.ts.map +1 -1
  260. package/services/sac-validationkey.service.d.ts +59 -0
  261. package/services/sac-validationkey.service.d.ts.map +1 -0
  262. package/simpleangularcontrols-sac-common-16.0.0-rc.11.tgz +0 -0
  263. package/utilities/enums.d.ts +3 -1
  264. package/utilities/enums.d.ts.map +1 -1
  265. package/utilities/guid.d.ts +5 -0
  266. package/utilities/guid.d.ts.map +1 -0
  267. package/utilities/popuphelper.d.ts +84 -0
  268. package/utilities/popuphelper.d.ts.map +1 -0
  269. package/validation/equals.validator.d.ts +3 -0
  270. package/validation/equals.validator.d.ts.map +1 -0
  271. package/validation/isDateValid.d.ts.map +1 -1
  272. package/validation/notequals.validator.d.ts +3 -0
  273. package/validation/notequals.validator.d.ts.map +1 -0
  274. package/validation/validation.d.ts +24 -6
  275. package/validation/validation.d.ts.map +1 -1
  276. package/controls/treeview/ngtreeitemaction.d.ts +0 -44
  277. package/controls/treeview/ngtreeitemaction.d.ts.map +0 -1
  278. package/controls/treeview/treeviewchild.d.ts +0 -16
  279. package/controls/treeview/treeviewchild.d.ts.map +0 -1
  280. package/esm2022/controls/treeview/ngtreeitemaction.mjs +0 -63
  281. package/esm2022/controls/treeview/treeviewchild.mjs +0 -22
  282. package/simpleangularcontrols-sac-common-13.0.0-rc.1.tgz +0 -0
  283. package/simpleangularcontrols-sac-common-16.0.0-rc.1.tgz +0 -0
@@ -1,369 +1,149 @@
1
- import { Directive, Host, Input } from '@angular/core';
2
- import { FormControlName, FormGroupDirective, NgControl, } from '@angular/forms';
3
- import { Observable } from 'rxjs';
4
- import { SacDefaultLocalisationService, SACLOCALISATION_SERVICE, } from '../services/sac-localisation.service';
5
- import { convertToBoolean } from '../utilities/convertion';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../controls/form/form";
8
- /**
1
+ function cov_syqygw8jm(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\common\\basemodelcontrol.mjs";var hash="6be1a4599ab6b148a9ad1f652c25dcd1f84cd9d2";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\common\\basemodelcontrol.mjs",statementMap:{"0":{start:{line:24,column:8},end:{line:24,column:33}},"1":{start:{line:29,column:8},end:{line:29,column:40}},"2":{start:{line:33,column:8},end:{line:33,column:25}},"3":{start:{line:37,column:8},end:{line:37,column:28}},"4":{start:{line:41,column:8},end:{line:41,column:35}},"5":{start:{line:45,column:8},end:{line:45,column:30}},"6":{start:{line:49,column:8},end:{line:49,column:27}},"7":{start:{line:53,column:8},end:{line:53,column:31}},"8":{start:{line:57,column:8},end:{line:57,column:43}},"9":{start:{line:61,column:8},end:{line:61,column:36}},"10":{start:{line:65,column:8},end:{line:65,column:30}},"11":{start:{line:69,column:8},end:{line:69,column:34}},"12":{start:{line:73,column:8},end:{line:73,column:27}},"13":{start:{line:77,column:8},end:{line:77,column:32}},"14":{start:{line:81,column:8},end:{line:81,column:37}},"15":{start:{line:85,column:8},end:{line:85,column:32}},"16":{start:{line:89,column:8},end:{line:89,column:32}},"17":{start:{line:93,column:8},end:{line:93,column:32}},"18":{start:{line:97,column:8},end:{line:97,column:32}},"19":{start:{line:101,column:8},end:{line:101,column:32}},"20":{start:{line:105,column:8},end:{line:105,column:33}},"21":{start:{line:109,column:8},end:{line:109,column:33}},"22":{start:{line:113,column:8},end:{line:113,column:41}},"23":{start:{line:117,column:8},end:{line:117,column:40}},"24":{start:{line:121,column:8},end:{line:121,column:42}},"25":{start:{line:122,column:8},end:{line:122,column:37}},"26":{start:{line:123,column:8},end:{line:123,column:113}},"27":{start:{line:124,column:8},end:{line:124,column:134}},"28":{start:{line:125,column:8},end:{line:125,column:113}},"29":{start:{line:126,column:8},end:{line:126,column:86}},"30":{start:{line:134,column:8},end:{line:134,column:52}},"31":{start:{line:140,column:8},end:{line:142,column:9}},"32":{start:{line:141,column:12},end:{line:141,column:47}},"33":{start:{line:143,column:8},end:{line:143,column:27}},"34":{start:{line:149,column:8},end:{line:149,column:40}},"35":{start:{line:155,column:8},end:{line:160,column:9}},"36":{start:{line:156,column:12},end:{line:156,column:44}},"37":{start:{line:159,column:12},end:{line:159,column:63}},"38":{start:{line:166,column:8},end:{line:166,column:97}},"39":{start:{line:172,column:8},end:{line:172,column:51}},"40":{start:{line:178,column:8},end:{line:180,column:9}},"41":{start:{line:179,column:12},end:{line:179,column:44}},"42":{start:{line:181,column:8},end:{line:183,column:9}},"43":{start:{line:182,column:12},end:{line:182,column:57}},"44":{start:{line:184,column:8},end:{line:186,column:9}},"45":{start:{line:185,column:12},end:{line:185,column:64}},"46":{start:{line:187,column:8},end:{line:187,column:20}},"47":{start:{line:193,column:8},end:{line:193,column:27}},"48":{start:{line:199,column:8},end:{line:199,column:24}},"49":{start:{line:200,column:8},end:{line:200,column:36}},"50":{start:{line:206,column:8},end:{line:213,column:10}},"51":{start:{line:219,column:8},end:{line:221,column:9}},"52":{start:{line:220,column:12},end:{line:220,column:51}},"53":{start:{line:222,column:8},end:{line:222,column:29}},"54":{start:{line:228,column:8},end:{line:228,column:27}},"55":{start:{line:235,column:8},end:{line:237,column:9}},"56":{start:{line:236,column:12},end:{line:236,column:19}},"57":{start:{line:238,column:8},end:{line:238,column:48}},"58":{start:{line:239,column:8},end:{line:239,column:42}},"59":{start:{line:247,column:8},end:{line:252,column:9}},"60":{start:{line:248,column:12},end:{line:251,column:15}},"61":{start:{line:249,column:16},end:{line:249,column:34}},"62":{start:{line:250,column:16},end:{line:250,column:36}},"63":{start:{line:253,column:23},end:{line:253,column:44}},"64":{start:{line:254,column:8},end:{line:259,column:9}},"65":{start:{line:255,column:12},end:{line:258,column:15}},"66":{start:{line:256,column:16},end:{line:256,column:34}},"67":{start:{line:257,column:16},end:{line:257,column:36}},"68":{start:{line:260,column:21},end:{line:260,column:40}},"69":{start:{line:261,column:8},end:{line:266,column:9}},"70":{start:{line:262,column:12},end:{line:265,column:15}},"71":{start:{line:263,column:16},end:{line:263,column:34}},"72":{start:{line:264,column:16},end:{line:264,column:36}},"73":{start:{line:267,column:26},end:{line:267,column:41}},"74":{start:{line:269,column:27},end:{line:269,column:29}},"75":{start:{line:270,column:8},end:{line:274,column:9}},"76":{start:{line:271,column:12},end:{line:273,column:15}},"77":{start:{line:272,column:16},end:{line:272,column:34}},"78":{start:{line:275,column:8},end:{line:275,column:50}},"79":{start:{line:276,column:8},end:{line:276,column:88}},"80":{start:{line:283,column:28},end:{line:283,column:62}},"81":{start:{line:284,column:8},end:{line:292,column:9}},"82":{start:{line:285,column:25},end:{line:285,column:68}},"83":{start:{line:286,column:12},end:{line:286,column:58}},"84":{start:{line:289,column:12},end:{line:291,column:13}},"85":{start:{line:290,column:16},end:{line:290,column:53}},"86":{start:{line:293,column:8},end:{line:293,column:36}},"87":{start:{line:295,column:8},end:{line:295,column:29}},"88":{start:{line:297,column:8},end:{line:297,column:34}},"89":{start:{line:299,column:8},end:{line:299,column:34}},"90":{start:{line:301,column:8},end:{line:301,column:31}},"91":{start:{line:303,column:8},end:{line:303,column:33}},"92":{start:{line:304,column:8},end:{line:304,column:27}},"93":{start:{line:310,column:8},end:{line:310,column:29}},"94":{start:{line:311,column:8},end:{line:311,column:30}},"95":{start:{line:318,column:8},end:{line:318,column:48}},"96":{start:{line:318,column:40},end:{line:318,column:47}},"97":{start:{line:324,column:8},end:{line:324,column:47}},"98":{start:{line:324,column:39},end:{line:324,column:46}},"99":{start:{line:330,column:8},end:{line:330,column:28}},"100":{start:{line:336,column:8},end:{line:336,column:40}},"101":{start:{line:342,column:8},end:{line:342,column:23}},"102":{start:{line:348,column:22},end:{line:348,column:42}},"103":{start:{line:349,column:8},end:{line:349,column:21}},"104":{start:{line:355,column:8},end:{line:355,column:28}},"105":{start:{line:365,column:8},end:{line:365,column:21}},"106":{start:{line:371,column:8},end:{line:371,column:19}},"107":{start:{line:381,column:8},end:{line:383,column:9}},"108":{start:{line:382,column:12},end:{line:382,column:70}},"109":{start:{line:389,column:8},end:{line:391,column:9}},"110":{start:{line:390,column:12},end:{line:390,column:53}},"111":{start:{line:398,column:8},end:{line:405,column:9}},"112":{start:{line:399,column:12},end:{line:404,column:13}},"113":{start:{line:400,column:16},end:{line:400,column:71}},"114":{start:{line:403,column:16},end:{line:403,column:81}},"115":{start:{line:411,column:8},end:{line:418,column:9}},"116":{start:{line:412,column:12},end:{line:417,column:13}},"117":{start:{line:413,column:16},end:{line:413,column:65}},"118":{start:{line:416,column:16},end:{line:416,column:75}},"119":{start:{line:424,column:8},end:{line:431,column:9}},"120":{start:{line:425,column:12},end:{line:430,column:13}},"121":{start:{line:426,column:16},end:{line:426,column:71}},"122":{start:{line:429,column:16},end:{line:429,column:45}},"123":{start:{line:438,column:8},end:{line:445,column:9}},"124":{start:{line:439,column:12},end:{line:444,column:13}},"125":{start:{line:440,column:16},end:{line:440,column:63}},"126":{start:{line:443,column:16},end:{line:443,column:73}},"127":{start:{line:447,column:8},end:{line:454,column:9}},"128":{start:{line:448,column:12},end:{line:453,column:13}},"129":{start:{line:449,column:16},end:{line:449,column:63}},"130":{start:{line:452,column:16},end:{line:452,column:73}},"131":{start:{line:456,column:8},end:{line:463,column:9}},"132":{start:{line:457,column:12},end:{line:462,column:13}},"133":{start:{line:458,column:16},end:{line:458,column:63}},"134":{start:{line:461,column:16},end:{line:461,column:73}},"135":{start:{line:465,column:8},end:{line:472,column:9}},"136":{start:{line:466,column:12},end:{line:471,column:13}},"137":{start:{line:467,column:16},end:{line:467,column:63}},"138":{start:{line:470,column:16},end:{line:470,column:73}},"139":{start:{line:474,column:8},end:{line:481,column:9}},"140":{start:{line:475,column:12},end:{line:480,column:13}},"141":{start:{line:476,column:16},end:{line:476,column:63}},"142":{start:{line:479,column:16},end:{line:479,column:73}},"143":{start:{line:483,column:8},end:{line:490,column:9}},"144":{start:{line:484,column:12},end:{line:489,column:13}},"145":{start:{line:485,column:16},end:{line:485,column:65}},"146":{start:{line:488,column:16},end:{line:488,column:75}},"147":{start:{line:493,column:8},end:{line:500,column:9}},"148":{start:{line:494,column:12},end:{line:499,column:13}},"149":{start:{line:495,column:16},end:{line:495,column:83}},"150":{start:{line:498,column:16},end:{line:498,column:93}},"151":{start:{line:502,column:13},end:{line:502,column:251}},"152":{start:{line:503,column:13},end:{line:503,column:658}},"153":{start:{line:506,column:0},end:{line:546,column:20}},"154":{start:{line:508,column:42},end:{line:510,column:45}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:23,column:4},end:{line:23,column:5}},loc:{start:{line:23,column:38},end:{line:127,column:5}},line:23},"1":{name:"(anonymous_1)",decl:{start:{line:113,column:31},end:{line:113,column:32}},loc:{start:{line:113,column:37},end:{line:113,column:40}},line:113},"2":{name:"(anonymous_2)",decl:{start:{line:117,column:30},end:{line:117,column:31}},loc:{start:{line:117,column:36},end:{line:117,column:39}},line:117},"3":{name:"(anonymous_3)",decl:{start:{line:133,column:4},end:{line:133,column:5}},loc:{start:{line:133,column:30},end:{line:135,column:5}},line:133},"4":{name:"(anonymous_4)",decl:{start:{line:139,column:4},end:{line:139,column:5}},loc:{start:{line:139,column:16},end:{line:144,column:5}},line:139},"5":{name:"(anonymous_5)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:29},end:{line:150,column:5}},line:148},"6":{name:"(anonymous_6)",decl:{start:{line:154,column:4},end:{line:154,column:5}},loc:{start:{line:154,column:34},end:{line:161,column:5}},line:154},"7":{name:"(anonymous_7)",decl:{start:{line:165,column:4},end:{line:165,column:5}},loc:{start:{line:165,column:18},end:{line:167,column:5}},line:165},"8":{name:"(anonymous_8)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:21},end:{line:173,column:5}},line:171},"9":{name:"(anonymous_9)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:31},end:{line:188,column:5}},line:177},"10":{name:"(anonymous_10)",decl:{start:{line:192,column:4},end:{line:192,column:5}},loc:{start:{line:192,column:16},end:{line:194,column:5}},line:192},"11":{name:"(anonymous_11)",decl:{start:{line:198,column:4},end:{line:198,column:5}},loc:{start:{line:198,column:17},end:{line:201,column:5}},line:198},"12":{name:"(anonymous_12)",decl:{start:{line:205,column:4},end:{line:205,column:5}},loc:{start:{line:205,column:21},end:{line:214,column:5}},line:205},"13":{name:"(anonymous_13)",decl:{start:{line:218,column:4},end:{line:218,column:5}},loc:{start:{line:218,column:18},end:{line:223,column:5}},line:218},"14":{name:"(anonymous_14)",decl:{start:{line:227,column:4},end:{line:227,column:5}},loc:{start:{line:227,column:16},end:{line:229,column:5}},line:227},"15":{name:"(anonymous_15)",decl:{start:{line:234,column:4},end:{line:234,column:5}},loc:{start:{line:234,column:17},end:{line:240,column:5}},line:234},"16":{name:"(anonymous_16)",decl:{start:{line:246,column:4},end:{line:246,column:5}},loc:{start:{line:246,column:22},end:{line:277,column:5}},line:246},"17":{name:"(anonymous_17)",decl:{start:{line:248,column:34},end:{line:248,column:35}},loc:{start:{line:248,column:48},end:{line:251,column:13}},line:248},"18":{name:"(anonymous_18)",decl:{start:{line:255,column:34},end:{line:255,column:35}},loc:{start:{line:255,column:48},end:{line:258,column:13}},line:255},"19":{name:"(anonymous_19)",decl:{start:{line:262,column:34},end:{line:262,column:35}},loc:{start:{line:262,column:48},end:{line:265,column:13}},line:262},"20":{name:"(anonymous_20)",decl:{start:{line:271,column:41},end:{line:271,column:42}},loc:{start:{line:271,column:51},end:{line:273,column:13}},line:271},"21":{name:"(anonymous_21)",decl:{start:{line:281,column:4},end:{line:281,column:5}},loc:{start:{line:281,column:15},end:{line:305,column:5}},line:281},"22":{name:"(anonymous_22)",decl:{start:{line:309,column:4},end:{line:309,column:5}},loc:{start:{line:309,column:14},end:{line:312,column:5}},line:309},"23":{name:"(anonymous_23)",decl:{start:{line:317,column:4},end:{line:317,column:5}},loc:{start:{line:317,column:25},end:{line:319,column:5}},line:317},"24":{name:"(anonymous_24)",decl:{start:{line:318,column:31},end:{line:318,column:32}},loc:{start:{line:318,column:40},end:{line:318,column:47}},line:318},"25":{name:"(anonymous_25)",decl:{start:{line:323,column:4},end:{line:323,column:5}},loc:{start:{line:323,column:26},end:{line:325,column:5}},line:323},"26":{name:"(anonymous_26)",decl:{start:{line:324,column:30},end:{line:324,column:31}},loc:{start:{line:324,column:39},end:{line:324,column:46}},line:324},"27":{name:"(anonymous_27)",decl:{start:{line:329,column:4},end:{line:329,column:5}},loc:{start:{line:329,column:34},end:{line:331,column:5}},line:329},"28":{name:"(anonymous_28)",decl:{start:{line:335,column:4},end:{line:335,column:5}},loc:{start:{line:335,column:33},end:{line:337,column:5}},line:335},"29":{name:"(anonymous_29)",decl:{start:{line:341,column:4},end:{line:341,column:5}},loc:{start:{line:341,column:16},end:{line:343,column:5}},line:341},"30":{name:"(anonymous_30)",decl:{start:{line:347,column:4},end:{line:347,column:5}},loc:{start:{line:347,column:16},end:{line:350,column:5}},line:347},"31":{name:"(anonymous_31)",decl:{start:{line:354,column:4},end:{line:354,column:5}},loc:{start:{line:354,column:22},end:{line:356,column:5}},line:354},"32":{name:"(anonymous_32)",decl:{start:{line:364,column:4},end:{line:364,column:5}},loc:{start:{line:364,column:29},end:{line:366,column:5}},line:364},"33":{name:"(anonymous_33)",decl:{start:{line:370,column:4},end:{line:370,column:5}},loc:{start:{line:370,column:23},end:{line:372,column:5}},line:370},"34":{name:"(anonymous_34)",decl:{start:{line:376,column:4},end:{line:376,column:5}},loc:{start:{line:376,column:18},end:{line:376,column:21}},line:376},"35":{name:"(anonymous_35)",decl:{start:{line:380,column:4},end:{line:380,column:5}},loc:{start:{line:380,column:29},end:{line:384,column:5}},line:380},"36":{name:"(anonymous_36)",decl:{start:{line:387,column:4},end:{line:387,column:5}},loc:{start:{line:387,column:27},end:{line:392,column:5}},line:387},"37":{name:"(anonymous_37)",decl:{start:{line:396,column:4},end:{line:396,column:5}},loc:{start:{line:396,column:25},end:{line:406,column:5}},line:396},"38":{name:"(anonymous_38)",decl:{start:{line:410,column:4},end:{line:410,column:5}},loc:{start:{line:410,column:22},end:{line:419,column:5}},line:410},"39":{name:"(anonymous_39)",decl:{start:{line:423,column:4},end:{line:423,column:5}},loc:{start:{line:423,column:25},end:{line:432,column:5}},line:423},"40":{name:"(anonymous_40)",decl:{start:{line:436,column:4},end:{line:436,column:5}},loc:{start:{line:436,column:20},end:{line:491,column:5}},line:436},"41":{name:"(anonymous_41)",decl:{start:{line:492,column:4},end:{line:492,column:5}},loc:{start:{line:492,column:24},end:{line:501,column:5}},line:492},"42":{name:"(anonymous_42)",decl:{start:{line:508,column:28},end:{line:508,column:29}},loc:{start:{line:508,column:40},end:{line:510,column:47}},line:508}},branchMap:{"0":{loc:{start:{line:140,column:8},end:{line:142,column:9}},type:"if",locations:[{start:{line:140,column:8},end:{line:142,column:9}},{start:{line:140,column:8},end:{line:142,column:9}}],line:140},"1":{loc:{start:{line:140,column:12},end:{line:140,column:67}},type:"binary-expr",locations:[{start:{line:140,column:12},end:{line:140,column:35}},{start:{line:140,column:39},end:{line:140,column:67}}],line:140},"2":{loc:{start:{line:155,column:8},end:{line:160,column:9}},type:"if",locations:[{start:{line:155,column:8},end:{line:160,column:9}},{start:{line:155,column:8},end:{line:160,column:9}}],line:155},"3":{loc:{start:{line:155,column:12},end:{line:155,column:49}},type:"binary-expr",locations:[{start:{line:155,column:12},end:{line:155,column:26}},{start:{line:155,column:30},end:{line:155,column:49}}],line:155},"4":{loc:{start:{line:166,column:15},end:{line:166,column:96}},type:"binary-expr",locations:[{start:{line:166,column:15},end:{line:166,column:43}},{start:{line:166,column:47},end:{line:166,column:70}},{start:{line:166,column:74},end:{line:166,column:96}}],line:166},"5":{loc:{start:{line:172,column:15},end:{line:172,column:50}},type:"binary-expr",locations:[{start:{line:172,column:15},end:{line:172,column:33}},{start:{line:172,column:37},end:{line:172,column:50}}],line:172},"6":{loc:{start:{line:178,column:8},end:{line:180,column:9}},type:"if",locations:[{start:{line:178,column:8},end:{line:180,column:9}},{start:{line:178,column:8},end:{line:180,column:9}}],line:178},"7":{loc:{start:{line:181,column:8},end:{line:183,column:9}},type:"if",locations:[{start:{line:181,column:8},end:{line:183,column:9}},{start:{line:181,column:8},end:{line:183,column:9}}],line:181},"8":{loc:{start:{line:181,column:12},end:{line:181,column:85}},type:"binary-expr",locations:[{start:{line:181,column:12},end:{line:181,column:36}},{start:{line:181,column:40},end:{line:181,column:85}}],line:181},"9":{loc:{start:{line:184,column:8},end:{line:186,column:9}},type:"if",locations:[{start:{line:184,column:8},end:{line:186,column:9}},{start:{line:184,column:8},end:{line:186,column:9}}],line:184},"10":{loc:{start:{line:219,column:8},end:{line:221,column:9}},type:"if",locations:[{start:{line:219,column:8},end:{line:221,column:9}},{start:{line:219,column:8},end:{line:221,column:9}}],line:219},"11":{loc:{start:{line:219,column:12},end:{line:219,column:67}},type:"binary-expr",locations:[{start:{line:219,column:12},end:{line:219,column:35}},{start:{line:219,column:39},end:{line:219,column:67}}],line:219},"12":{loc:{start:{line:235,column:8},end:{line:237,column:9}},type:"if",locations:[{start:{line:235,column:8},end:{line:237,column:9}},{start:{line:235,column:8},end:{line:237,column:9}}],line:235},"13":{loc:{start:{line:247,column:8},end:{line:252,column:9}},type:"if",locations:[{start:{line:247,column:8},end:{line:252,column:9}},{start:{line:247,column:8},end:{line:252,column:9}}],line:247},"14":{loc:{start:{line:247,column:12},end:{line:247,column:81}},type:"binary-expr",locations:[{start:{line:247,column:12},end:{line:247,column:47}},{start:{line:247,column:51},end:{line:247,column:81}}],line:247},"15":{loc:{start:{line:254,column:8},end:{line:259,column:9}},type:"if",locations:[{start:{line:254,column:8},end:{line:259,column:9}},{start:{line:254,column:8},end:{line:259,column:9}}],line:254},"16":{loc:{start:{line:261,column:8},end:{line:266,column:9}},type:"if",locations:[{start:{line:261,column:8},end:{line:266,column:9}},{start:{line:261,column:8},end:{line:266,column:9}}],line:261},"17":{loc:{start:{line:270,column:8},end:{line:274,column:9}},type:"if",locations:[{start:{line:270,column:8},end:{line:274,column:9}},{start:{line:270,column:8},end:{line:274,column:9}}],line:270},"18":{loc:{start:{line:270,column:12},end:{line:270,column:79}},type:"binary-expr",locations:[{start:{line:270,column:12},end:{line:270,column:41}},{start:{line:270,column:45},end:{line:270,column:79}}],line:270},"19":{loc:{start:{line:284,column:8},end:{line:292,column:9}},type:"if",locations:[{start:{line:284,column:8},end:{line:292,column:9}},{start:{line:284,column:8},end:{line:292,column:9}}],line:284},"20":{loc:{start:{line:289,column:12},end:{line:291,column:13}},type:"if",locations:[{start:{line:289,column:12},end:{line:291,column:13}},{start:{line:289,column:12},end:{line:291,column:13}}],line:289},"21":{loc:{start:{line:381,column:8},end:{line:383,column:9}},type:"if",locations:[{start:{line:381,column:8},end:{line:383,column:9}},{start:{line:381,column:8},end:{line:383,column:9}}],line:381},"22":{loc:{start:{line:389,column:8},end:{line:391,column:9}},type:"if",locations:[{start:{line:389,column:8},end:{line:391,column:9}},{start:{line:389,column:8},end:{line:391,column:9}}],line:389},"23":{loc:{start:{line:398,column:8},end:{line:405,column:9}},type:"if",locations:[{start:{line:398,column:8},end:{line:405,column:9}},{start:{line:398,column:8},end:{line:405,column:9}}],line:398},"24":{loc:{start:{line:399,column:12},end:{line:404,column:13}},type:"if",locations:[{start:{line:399,column:12},end:{line:404,column:13}},{start:{line:399,column:12},end:{line:404,column:13}}],line:399},"25":{loc:{start:{line:411,column:8},end:{line:418,column:9}},type:"if",locations:[{start:{line:411,column:8},end:{line:418,column:9}},{start:{line:411,column:8},end:{line:418,column:9}}],line:411},"26":{loc:{start:{line:412,column:12},end:{line:417,column:13}},type:"if",locations:[{start:{line:412,column:12},end:{line:417,column:13}},{start:{line:412,column:12},end:{line:417,column:13}}],line:412},"27":{loc:{start:{line:424,column:8},end:{line:431,column:9}},type:"if",locations:[{start:{line:424,column:8},end:{line:431,column:9}},{start:{line:424,column:8},end:{line:431,column:9}}],line:424},"28":{loc:{start:{line:425,column:12},end:{line:430,column:13}},type:"if",locations:[{start:{line:425,column:12},end:{line:430,column:13}},{start:{line:425,column:12},end:{line:430,column:13}}],line:425},"29":{loc:{start:{line:438,column:8},end:{line:445,column:9}},type:"if",locations:[{start:{line:438,column:8},end:{line:445,column:9}},{start:{line:438,column:8},end:{line:445,column:9}}],line:438},"30":{loc:{start:{line:439,column:12},end:{line:444,column:13}},type:"if",locations:[{start:{line:439,column:12},end:{line:444,column:13}},{start:{line:439,column:12},end:{line:444,column:13}}],line:439},"31":{loc:{start:{line:447,column:8},end:{line:454,column:9}},type:"if",locations:[{start:{line:447,column:8},end:{line:454,column:9}},{start:{line:447,column:8},end:{line:454,column:9}}],line:447},"32":{loc:{start:{line:448,column:12},end:{line:453,column:13}},type:"if",locations:[{start:{line:448,column:12},end:{line:453,column:13}},{start:{line:448,column:12},end:{line:453,column:13}}],line:448},"33":{loc:{start:{line:456,column:8},end:{line:463,column:9}},type:"if",locations:[{start:{line:456,column:8},end:{line:463,column:9}},{start:{line:456,column:8},end:{line:463,column:9}}],line:456},"34":{loc:{start:{line:457,column:12},end:{line:462,column:13}},type:"if",locations:[{start:{line:457,column:12},end:{line:462,column:13}},{start:{line:457,column:12},end:{line:462,column:13}}],line:457},"35":{loc:{start:{line:465,column:8},end:{line:472,column:9}},type:"if",locations:[{start:{line:465,column:8},end:{line:472,column:9}},{start:{line:465,column:8},end:{line:472,column:9}}],line:465},"36":{loc:{start:{line:466,column:12},end:{line:471,column:13}},type:"if",locations:[{start:{line:466,column:12},end:{line:471,column:13}},{start:{line:466,column:12},end:{line:471,column:13}}],line:466},"37":{loc:{start:{line:474,column:8},end:{line:481,column:9}},type:"if",locations:[{start:{line:474,column:8},end:{line:481,column:9}},{start:{line:474,column:8},end:{line:481,column:9}}],line:474},"38":{loc:{start:{line:475,column:12},end:{line:480,column:13}},type:"if",locations:[{start:{line:475,column:12},end:{line:480,column:13}},{start:{line:475,column:12},end:{line:480,column:13}}],line:475},"39":{loc:{start:{line:483,column:8},end:{line:490,column:9}},type:"if",locations:[{start:{line:483,column:8},end:{line:490,column:9}},{start:{line:483,column:8},end:{line:490,column:9}}],line:483},"40":{loc:{start:{line:484,column:12},end:{line:489,column:13}},type:"if",locations:[{start:{line:484,column:12},end:{line:489,column:13}},{start:{line:484,column:12},end:{line:489,column:13}}],line:484},"41":{loc:{start:{line:493,column:8},end:{line:500,column:9}},type:"if",locations:[{start:{line:493,column:8},end:{line:500,column:9}},{start:{line:493,column:8},end:{line:500,column:9}}],line:493},"42":{loc:{start:{line:494,column:12},end:{line:499,column:13}},type:"if",locations:[{start:{line:494,column:12},end:{line:499,column:13}},{start:{line:494,column:12},end:{line:499,column:13}}],line:494}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0]},inputSourceMap:{version:3,file:"basemodelcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/basemodelcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ControlHeight } from '../enums/ControlHeight';\r\nimport { ISacConfigurationService } from '../interfaces/ISacConfigurationService';\r\nimport { ISacIconService } from '../interfaces/ISacIconService';\r\nimport { ISacLabelSizes } from '../interfaces/ISacLabelSizes';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\nimport { IAbstractControlLabelExtension } from '../interfaces/iabstractcontrollabel';\r\nimport {\r\n SACICON_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport { SACCONFIGURATION_SERVICE, SacDefaultConfigurationService } from '../services/sac-configuration.service';\r\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\r\nimport { convertToBoolean } from '../utilities/convertion';\r\nimport { createGuid } from '../utilities/guid';\r\nimport { ValidationErrorItem } from '../validation';\r\nimport { Directive, Host, Injector, Input, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlName,\r\n FormGroupDirective,\r\n NgControl,\r\n UntypedFormControl,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Abstract Klasse f\xFCr SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit\r\n */\r\n@Directive()\r\nexport abstract class SacBaseModelControl<VALUE> implements ControlValueAccessor, Validator, OnInit {\r\n // #region Properties\r\n\r\n /**\r\n * Inline Errors f\xFCr das Control\r\n */\r\n private _inlineerrorenabled: boolean | null = null;\r\n\r\n /**\r\n * Label Text\r\n */\r\n private _label: string = '';\r\n\r\n /**\r\n * Service for loading default settings for the controls\r\n */\r\n protected readonly configurationService: ISacConfigurationService;\r\n\r\n /**\r\n * Boolean Property dirty; default Wert - false\r\n */\r\n protected _dirty: boolean = false;\r\n\r\n /**\r\n * SacModel Form ist disabled\r\n */\r\n protected _disabledForm: boolean = false;\r\n\r\n /**\r\n * Validator\r\n */\r\n protected _onChange: () => void;\r\n\r\n /**\r\n * Boolean Property touched; default Wert - false\r\n */\r\n protected _touched: boolean = false;\r\n\r\n /**\r\n * Interne Variable, die den Wert des Controls h\xE4lt\r\n */\r\n protected _value: VALUE = null;\r\n\r\n /**\r\n * Form layout instance if exists\r\n */\r\n protected formlayout: SacFormLayoutCommon = null;\r\n\r\n /**\r\n * icon service\r\n */\r\n protected iconService: ISacIconService;\r\n\r\n /**\r\n * Service f\xFCr Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n\r\n /**\r\n * ngControl\r\n */\r\n protected ngControl: UntypedFormControl;\r\n\r\n /**\r\n * ControlHeight enum for use in HTML markup\r\n */\r\n public ControlHeight: typeof ControlHeight = ControlHeight;\r\n\r\n /**\r\n * Defines the standard height of the components\r\n */\r\n @Input()\r\n public componentHeight: ControlHeight | null = null;\r\n\r\n /**\r\n * Deaktiviert das Input Control\r\n */\r\n @Input() public disabled: boolean = false;\r\n\r\n /**\r\n * Deaktiviert das Label im Template\r\n */\r\n @Input() public disablelabel: boolean = false;\r\n\r\n /**\r\n * Text to support the user during input.\r\n */\r\n @Input() public helptext: string = '';\r\n\r\n /**\r\n * Mode for display helptext\r\n */\r\n @Input()\r\n public helptextmode: 'tooltip' | 'text' | null;\r\n\r\n /**\r\n * defines that error messages are displayed under the controls\r\n */\r\n @Input() public inlineError: boolean = true;\r\n\r\n /**\r\n * defines that the labels are displayed as adaptive labels\r\n */\r\n @Input() public isAdaptiveLabel: boolean = false;\r\n\r\n /**\r\n * default labe size for large devices\r\n */\r\n @Input()\r\n public labelSizeLg: number | null = null;\r\n\r\n /**\r\n * default label size for medium devices\r\n */\r\n @Input()\r\n public labelSizeMd: number | null = null;\r\n\r\n /**\r\n * default label size for small devices\r\n */\r\n @Input()\r\n public labelSizeSm: number | null = null;\r\n\r\n /**\r\n * default label size for extra large devices\r\n */\r\n @Input()\r\n public labelSizeXl: number | null = null;\r\n\r\n /**\r\n * default label column size\r\n */\r\n @Input()\r\n public labelSizeXs: number | null = null;\r\n\r\n /**\r\n * default label size for extra extra large devices\r\n */\r\n @Input()\r\n public labelSizeXxl: number | null = null;\r\n\r\n /**\r\n * Name des Controls\r\n */\r\n @Input() public name: string = createGuid();\r\n\r\n /**\r\n * Leere Implementation von \"propagateChange\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateChange: any = () => {};\r\n\r\n /**\r\n * Leere Implementation von \"propagateTouch\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateTouch: any = () => {};\r\n\r\n /**\r\n * Detach label text and tooltip from each other in Label so that label and tooltip can be aligned differently. This is in Bootstrap 3 not supported!\r\n */\r\n @Input()\r\n public splitlabelandhelptext: boolean | null = null;\r\n\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, private readonly injector: Injector) {\r\n this.formlayout = formlayout;\r\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.configurationService = injector.get(SACCONFIGURATION_SERVICE, new SacDefaultConfigurationService());\r\n\r\n this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Get Icon for Helptext Tooltip\r\n */\r\n public get HelptextTooltipIcon(): string {\r\n return this.iconService.GenericHelptextIcon;\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert f\xFCr dirty\r\n */\r\n public get dirty(): boolean {\r\n if (this.ngControl !== null && this.ngControl !== undefined) {\r\n this._dirty = this.ngControl.dirty;\r\n }\r\n\r\n return this._dirty;\r\n }\r\n\r\n /**\r\n * Show error messages inline\r\n */\r\n public get inlineerrorenabled(): boolean | null {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n /**\r\n * Aktiviert oder Deaktiviert die Inline Errors f\xFCr das Control\r\n */\r\n @Input()\r\n public set inlineerrorenabled(value: boolean | null) {\r\n if (value === null || value === undefined) {\r\n this._inlineerrorenabled = null;\r\n } else {\r\n this._inlineerrorenabled = convertToBoolean(value);\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist\r\n */\r\n public get invalid(): boolean {\r\n return this.ngControl !== undefined && this.ngControl !== null && this.ngControl.invalid;\r\n }\r\n\r\n /**\r\n * Definiert ob das Control disabled ist\r\n */\r\n public get isdisabled(): boolean {\r\n return this._disabledForm || this.disabled;\r\n }\r\n\r\n /**\r\n * Returns whether the inline error messages are active for this control.\r\n */\r\n public get isinlineerrorenabled(): boolean {\r\n if (this._inlineerrorenabled !== null) {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n if (this.formlayout !== null && this.formlayout.IsInlineErrorEnabled !== null) {\r\n return this.formlayout?.IsInlineErrorEnabled;\r\n }\r\n\r\n if (this.configurationService.InlineErrorEnabled !== null) {\r\n return this.configurationService.InlineErrorEnabled;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n @Input() public set label(v: string) {\r\n this._label = v;\r\n this.UpdateLabelToControl();\r\n }\r\n\r\n /**\r\n * returns an object with all label sizes. These values can then be transferred to corresponding CSS classes using a pipe\r\n */\r\n public get labelSizes(): ISacLabelSizes {\r\n return {\r\n labelSizeSm: this.labelSizeSm,\r\n labelSizeMd: this.labelSizeMd,\r\n labelSizeXs: this.labelSizeXs,\r\n labelSizeXl: this.labelSizeXl,\r\n labelSizeXxl: this.labelSizeXxl,\r\n labelSizeLg: this.labelSizeLg,\r\n };\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert f\xFCr touched\r\n */\r\n public get touched(): boolean {\r\n if (this.ngControl !== null && this.ngControl !== undefined) {\r\n this._touched = this.ngControl.touched;\r\n }\r\n\r\n return this._touched;\r\n }\r\n\r\n /**\r\n * Get Methode f\xFCr NgModel Binding in Html Markup\r\n */\r\n public get value(): VALUE {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Set Methode f\xFCr NgModel Binding in Html Markup\r\n * Input wird ben\xF6tigt, damit der Wert auch \xFCber das Markup gesetzt werden kann.\r\n */\r\n @Input()\r\n public set value(v: VALUE) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this._value = this.ConvertInputValue(v);\r\n this.propagateChange(this._value);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode ergibt Error anhand von gegebenen Kriterien\r\n */\r\n public GetErrorMessage(): Observable<string> {\r\n if (this.ngControl.errors === undefined || this.ngControl.errors === null) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errors: ValidationErrors = this.ngControl.errors;\r\n\r\n if (errors.length === 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const keys: string[] = Object.keys(errors);\r\n\r\n if (keys.length <= 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errorItem: ValidationErrorItem = errors[keys[0]];\r\n\r\n // Validation Parameters\r\n const parameters = {};\r\n if (errorItem.parameters !== null && errorItem.parameters !== undefined) {\r\n errorItem.parameters.forEach((v, k) => {\r\n parameters[k] = v;\r\n });\r\n }\r\n parameters['FIELD'] = errorItem.fieldName;\r\n\r\n return this.lngResourceService.GetString(errorItem.errorMessageKey, parameters);\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit() {\r\n // receive form via formcontrolname or formcontrol instance\r\n const formControl = this.injector.get(NgControl, null);\r\n if (formControl instanceof FormControlName) {\r\n const form = this.injector.get(FormGroupDirective, null);\r\n this.ngControl = form.getControl(formControl);\r\n } else {\r\n if (formControl) {\r\n this.ngControl = formControl.control as UntypedFormControl;\r\n }\r\n }\r\n\r\n this.UpdateLabelToControl();\r\n\r\n // set label sizes from formlayout directive\r\n this.setLabelSizes();\r\n\r\n // set component heigth from fromlayout directive\r\n this.setComponentHeight();\r\n\r\n // set adaptive label property from formlayout directive\r\n this.setIsAdaptiveLabel();\r\n\r\n // set method to display helptext\r\n this.setHelpTextMode();\r\n\r\n // set SplitMode for Labels\r\n this.setLabelSplitMode();\r\n\r\n this.OnClassInit();\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean touched = true\r\n */\r\n public onTouch(): void {\r\n this._touched = true;\r\n this.propagateTouch();\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls \xE4nderungen im Control mitbekommen k\xF6nnen\r\n * Zur \xC4nderungsinfo die Methode propagateChange aufrufen.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.propagateChange = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls \xE4nderungen mitbekommen, wenn das Control aktiviert (Focus) wird.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.propagateTouch = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode registriert \xC4nderungen bei der Validierung\r\n */\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Setzt das Control auf Disabled\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this._disabledForm = isDisabled;\r\n }\r\n\r\n /**\r\n * Methode die den Wert des Inputs setzt\r\n */\r\n public setValue(v: VALUE): void {\r\n this.value = v;\r\n }\r\n\r\n /**\r\n * Validator Methode\r\n */\r\n public validate(c: AbstractControl): ValidationErrors | null {\r\n const error: ValidationErrors | null = this.validateData(c);\r\n return error;\r\n }\r\n\r\n /**\r\n * Abstrakte Validator Methode\r\n */\r\n public abstract validateData(c: AbstractControl): ValidationErrors | null;\r\n\r\n /**\r\n * Methode zum schreiben von Werten aus dem Model in das Control\r\n */\r\n public writeValue(value: VALUE) {\r\n this._value = value;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Method can Overwriten in Parent Classes\r\n * @param value Wert welcher in den korrekten Typ konvertiert werden soll\r\n * @returns Wert im korrekten Typ\r\n */\r\n protected ConvertInputValue(value: VALUE): VALUE {\r\n return value;\r\n }\r\n\r\n /**\r\n * Methode ergibt Decimal Symbol\r\n */\r\n protected GetDecimalSymbol(): string {\r\n return '.';\r\n }\r\n\r\n /**\r\n * Method can be used to Set Properties at Class Init\r\n */\r\n protected OnClassInit(): void {}\r\n\r\n /**\r\n * Aktualisiert den NgModel Wert und die G\xFCltigkeit des Validators des Controls\r\n */\r\n protected UpdateValueAndValidity(): void {\r\n if (this.ngControl) {\r\n this.ngControl.updateValueAndValidity({ onlySelf: true });\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateLabelToControl(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IAbstractControlLabelExtension).controllabel = this.label;\r\n }\r\n }\r\n\r\n /**\r\n * Set component height from property or parent layout control\r\n */\r\n private setComponentHeight() {\r\n // set size extra small\r\n if (!this.componentHeight) {\r\n if (this.formlayout?.componentHeight) {\r\n this.componentHeight = this.formlayout.componentHeight;\r\n } else {\r\n this.componentHeight = this.configurationService.ComponentHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set mode for helptext. Can be tooltip or text\r\n */\r\n private setHelpTextMode() {\r\n if (!this.helptextmode) {\r\n if (this.formlayout?.helptextmode) {\r\n this.helptextmode = this.formlayout.helptextmode;\r\n } else {\r\n this.helptextmode = this.configurationService.HelptextMode;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set adaptive label property from parent layout control\r\n */\r\n private setIsAdaptiveLabel() {\r\n if (!this.isAdaptiveLabel) {\r\n if (this.formlayout?.isAdaptiveLabel !== undefined) {\r\n this.isAdaptiveLabel = this.formlayout.isAdaptiveLabel;\r\n } else {\r\n this.isAdaptiveLabel = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set label sizes from property or parent layout control\r\n */\r\n private setLabelSizes() {\r\n // set size extra small\r\n if (!this.labelSizeXs) {\r\n if (this.formlayout?.labelSizeXs) {\r\n this.labelSizeXs = this.formlayout.labelSizeXs;\r\n } else {\r\n this.labelSizeXs = this.configurationService.LabelSizeXs;\r\n }\r\n }\r\n\r\n // set size small\r\n if (!this.labelSizeSm) {\r\n if (this.formlayout?.labelSizeSm) {\r\n this.labelSizeSm = this.formlayout.labelSizeSm;\r\n } else {\r\n this.labelSizeSm = this.configurationService.LabelSizeSm;\r\n }\r\n }\r\n\r\n // set size medium\r\n if (!this.labelSizeMd) {\r\n if (this.formlayout?.labelSizeMd) {\r\n this.labelSizeMd = this.formlayout.labelSizeMd;\r\n } else {\r\n this.labelSizeMd = this.configurationService.LabelSizeMd;\r\n }\r\n }\r\n\r\n // set size large\r\n if (!this.labelSizeLg) {\r\n if (this.formlayout?.labelSizeLg) {\r\n this.labelSizeLg = this.formlayout.labelSizeLg;\r\n } else {\r\n this.labelSizeLg = this.configurationService.LabelSizeLg;\r\n }\r\n }\r\n\r\n // set size extra large\r\n if (!this.labelSizeXl) {\r\n if (this.formlayout?.labelSizeXl) {\r\n this.labelSizeXl = this.formlayout.labelSizeXl;\r\n } else {\r\n this.labelSizeXl = this.configurationService.LabelSizeXl;\r\n }\r\n }\r\n\r\n // set size extra extra large\r\n if (!this.labelSizeXxl) {\r\n if (this.formlayout?.labelSizeXxl) {\r\n this.labelSizeXxl = this.formlayout.labelSizeXxl;\r\n } else {\r\n this.labelSizeXxl = this.configurationService.LabelSizeXxl;\r\n }\r\n }\r\n }\r\n\r\n private setLabelSplitMode() {\r\n if (!this.splitlabelandhelptext) {\r\n if (this.formlayout?.splitlabelandhelptext) {\r\n this.splitlabelandhelptext = this.formlayout.splitlabelandhelptext;\r\n } else {\r\n this.splitlabelandhelptext = this.configurationService.SplitLabelAndHelptext;\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"6be1a4599ab6b148a9ad1f652c25dcd1f84cd9d2"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_syqygw8jm=function(){return actualCoverage;};}return actualCoverage;}cov_syqygw8jm();import{ControlHeight}from'../enums/ControlHeight';import{SACICON_SERVICE,SACVALIDATIONKEY_SERVICE,SacDefaultIconService,SacDefaultValidationKeyService}from'../services';import{SACCONFIGURATION_SERVICE,SacDefaultConfigurationService}from'../services/sac-configuration.service';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../services/sac-localisation.service';import{convertToBoolean}from'../utilities/convertion';import{createGuid}from'../utilities/guid';import{Directive,Host,Input}from'@angular/core';import{FormControlName,FormGroupDirective,NgControl}from'@angular/forms';import{Observable}from'rxjs';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";/**
9
3
  * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit
10
- */
11
- class SacBaseModelControl {
12
- /**
13
- * Definiert den Label Text
14
- */
15
- set label(v) {
16
- this._label = v;
17
- this.UpdateLabelToControl();
18
- }
19
- /**
20
- * Definiert den Label Text
21
- */
22
- get label() {
23
- return this._label;
24
- }
25
- /**
26
- * Definiert ob das Control disabled ist
27
- */
28
- get isdisabled() {
29
- return this._disabledForm || this.disabled;
30
- }
31
- // #endregion
32
- // #region Constructor
33
- /**
34
- * Konstruktor
35
- * Inject des Formulars
36
- * @parent SacFormCommon
37
- * @injector Injector
38
- */
39
- constructor(parent, injector) {
40
- this.injector = injector;
41
- /**
42
- * SacModel Form ist disabled
43
- */
44
- this._disabledForm = false;
45
- this._label = '';
46
- // #endregion
47
- // #region Properties
48
- /**
49
- * Name des Controls
50
- */
51
- this.name = '';
52
- /**
53
- * Definiert die Labelgröse
54
- */
55
- this.labelsize = undefined;
56
- /**
57
- * Deaktiviert das Label im Template
58
- */
59
- this.disablelabel = false;
60
- /**
61
- * Deaktiviert das Input Control
62
- */
63
- this.disabled = false;
64
- /**
65
- * Kontroliert, ob das Label adaptive ist
66
- */
67
- this.isadaptivelabel = undefined;
68
- /**
69
- * Definiert, ob das Control Sprachspezifisch ist
70
- */
71
- this.islanguagespecific = false;
72
- /**
73
- * Interne Variable, die den Wert des Controls hält
74
- */
75
- this._value = null;
76
- /**
4
+ */class SacBaseModelControl{// #endregion Properties
5
+ // #region Constructors
6
+ /**
7
+ * Constructor
8
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
9
+ * @param injector Injector for injecting services
10
+ */constructor(formlayout,injector){cov_syqygw8jm().f[0]++;cov_syqygw8jm().s[0]++;this.injector=injector;// #region Properties
11
+ /**
12
+ * Inline Errors für das Control
13
+ */cov_syqygw8jm().s[1]++;this._inlineerrorenabled=null;/**
14
+ * Label Text
15
+ */cov_syqygw8jm().s[2]++;this._label='';/**
77
16
  * Boolean Property dirty; default Wert - false
78
- */
79
- this._dirty = false;
80
- /**
17
+ */cov_syqygw8jm().s[3]++;this._dirty=false;/**
18
+ * SacModel Form ist disabled
19
+ */cov_syqygw8jm().s[4]++;this._disabledForm=false;/**
81
20
  * Boolean Property touched; default Wert - false
82
- */
83
- this._touched = false;
84
- /**
85
- * Inline Errors für das Control
86
- */
87
- this._inlineerrorenabled = null;
88
- // #endregion
89
- // #region Implementation ControlValueAccessor
90
- /**
21
+ */cov_syqygw8jm().s[5]++;this._touched=false;/**
22
+ * Interne Variable, die den Wert des Controls hält
23
+ */cov_syqygw8jm().s[6]++;this._value=null;/**
24
+ * Form layout instance if exists
25
+ */cov_syqygw8jm().s[7]++;this.formlayout=null;/**
26
+ * ControlHeight enum for use in HTML markup
27
+ */cov_syqygw8jm().s[8]++;this.ControlHeight=ControlHeight;/**
28
+ * Defines the standard height of the components
29
+ */cov_syqygw8jm().s[9]++;this.componentHeight=null;/**
30
+ * Deaktiviert das Input Control
31
+ */cov_syqygw8jm().s[10]++;this.disabled=false;/**
32
+ * Deaktiviert das Label im Template
33
+ */cov_syqygw8jm().s[11]++;this.disablelabel=false;/**
34
+ * Text to support the user during input.
35
+ */cov_syqygw8jm().s[12]++;this.helptext='';/**
36
+ * defines that error messages are displayed under the controls
37
+ */cov_syqygw8jm().s[13]++;this.inlineError=true;/**
38
+ * defines that the labels are displayed as adaptive labels
39
+ */cov_syqygw8jm().s[14]++;this.isAdaptiveLabel=false;/**
40
+ * default labe size for large devices
41
+ */cov_syqygw8jm().s[15]++;this.labelSizeLg=null;/**
42
+ * default label size for medium devices
43
+ */cov_syqygw8jm().s[16]++;this.labelSizeMd=null;/**
44
+ * default label size for small devices
45
+ */cov_syqygw8jm().s[17]++;this.labelSizeSm=null;/**
46
+ * default label size for extra large devices
47
+ */cov_syqygw8jm().s[18]++;this.labelSizeXl=null;/**
48
+ * default label column size
49
+ */cov_syqygw8jm().s[19]++;this.labelSizeXs=null;/**
50
+ * default label size for extra extra large devices
51
+ */cov_syqygw8jm().s[20]++;this.labelSizeXxl=null;/**
52
+ * Name des Controls
53
+ */cov_syqygw8jm().s[21]++;this.name=createGuid();/**
91
54
  * Leere Implementation von "propagateChange". Muss gemacht werden, damit kein Fehler entsteht
92
- */
93
- this.propagateChange = () => { };
94
- /**
55
+ */cov_syqygw8jm().s[22]++;this.propagateChange=()=>{cov_syqygw8jm().f[1]++;};/**
95
56
  * Leere Implementation von "propagateTouch". Muss gemacht werden, damit kein Fehler entsteht
96
- */
97
- this.propagateTouch = () => { };
98
- this.parent = parent;
99
- this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
100
- }
101
- // #endregion
102
- // #region Control Events
103
- /**
57
+ */cov_syqygw8jm().s[23]++;this.propagateTouch=()=>{cov_syqygw8jm().f[2]++;};/**
58
+ * Detach label text and tooltip from each other in Label so that label and tooltip can be aligned differently. This is in Bootstrap 3 not supported!
59
+ */cov_syqygw8jm().s[24]++;this.splitlabelandhelptext=null;cov_syqygw8jm().s[25]++;this.formlayout=formlayout;cov_syqygw8jm().s[26]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());cov_syqygw8jm().s[27]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));cov_syqygw8jm().s[28]++;this.configurationService=injector.get(SACCONFIGURATION_SERVICE,new SacDefaultConfigurationService());cov_syqygw8jm().s[29]++;this.iconService=injector.get(SACICON_SERVICE,new SacDefaultIconService());}// #endregion Constructors
60
+ // #region Public Getters And Setters
61
+ /**
62
+ * Get Icon for Helptext Tooltip
63
+ */get HelptextTooltipIcon(){cov_syqygw8jm().f[3]++;cov_syqygw8jm().s[30]++;return this.iconService.GenericHelptextIcon;}/**
64
+ * Methode ergibt Boolean Wert für dirty
65
+ */get dirty(){cov_syqygw8jm().f[4]++;cov_syqygw8jm().s[31]++;if((cov_syqygw8jm().b[1][0]++,this.ngControl!==null)&&(cov_syqygw8jm().b[1][1]++,this.ngControl!==undefined)){cov_syqygw8jm().b[0][0]++;cov_syqygw8jm().s[32]++;this._dirty=this.ngControl.dirty;}else{cov_syqygw8jm().b[0][1]++;}cov_syqygw8jm().s[33]++;return this._dirty;}/**
66
+ * Show error messages inline
67
+ */get inlineerrorenabled(){cov_syqygw8jm().f[5]++;cov_syqygw8jm().s[34]++;return this._inlineerrorenabled;}/**
68
+ * Aktiviert oder Deaktiviert die Inline Errors für das Control
69
+ */set inlineerrorenabled(value){cov_syqygw8jm().f[6]++;cov_syqygw8jm().s[35]++;if((cov_syqygw8jm().b[3][0]++,value===null)||(cov_syqygw8jm().b[3][1]++,value===undefined)){cov_syqygw8jm().b[2][0]++;cov_syqygw8jm().s[36]++;this._inlineerrorenabled=null;}else{cov_syqygw8jm().b[2][1]++;cov_syqygw8jm().s[37]++;this._inlineerrorenabled=convertToBoolean(value);}}/**
70
+ * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
71
+ */get invalid(){cov_syqygw8jm().f[7]++;cov_syqygw8jm().s[38]++;return(cov_syqygw8jm().b[4][0]++,this.ngControl!==undefined)&&(cov_syqygw8jm().b[4][1]++,this.ngControl!==null)&&(cov_syqygw8jm().b[4][2]++,this.ngControl.invalid);}/**
72
+ * Definiert ob das Control disabled ist
73
+ */get isdisabled(){cov_syqygw8jm().f[8]++;cov_syqygw8jm().s[39]++;return(cov_syqygw8jm().b[5][0]++,this._disabledForm)||(cov_syqygw8jm().b[5][1]++,this.disabled);}/**
74
+ * Returns whether the inline error messages are active for this control.
75
+ */get isinlineerrorenabled(){cov_syqygw8jm().f[9]++;cov_syqygw8jm().s[40]++;if(this._inlineerrorenabled!==null){cov_syqygw8jm().b[6][0]++;cov_syqygw8jm().s[41]++;return this._inlineerrorenabled;}else{cov_syqygw8jm().b[6][1]++;}cov_syqygw8jm().s[42]++;if((cov_syqygw8jm().b[8][0]++,this.formlayout!==null)&&(cov_syqygw8jm().b[8][1]++,this.formlayout.IsInlineErrorEnabled!==null)){cov_syqygw8jm().b[7][0]++;cov_syqygw8jm().s[43]++;return this.formlayout?.IsInlineErrorEnabled;}else{cov_syqygw8jm().b[7][1]++;}cov_syqygw8jm().s[44]++;if(this.configurationService.InlineErrorEnabled!==null){cov_syqygw8jm().b[9][0]++;cov_syqygw8jm().s[45]++;return this.configurationService.InlineErrorEnabled;}else{cov_syqygw8jm().b[9][1]++;}cov_syqygw8jm().s[46]++;return true;}/**
76
+ * Definiert den Label Text
77
+ */get label(){cov_syqygw8jm().f[10]++;cov_syqygw8jm().s[47]++;return this._label;}/**
78
+ * Definiert den Label Text
79
+ */set label(v){cov_syqygw8jm().f[11]++;cov_syqygw8jm().s[48]++;this._label=v;cov_syqygw8jm().s[49]++;this.UpdateLabelToControl();}/**
80
+ * returns an object with all label sizes. These values can then be transferred to corresponding CSS classes using a pipe
81
+ */get labelSizes(){cov_syqygw8jm().f[12]++;cov_syqygw8jm().s[50]++;return{labelSizeSm:this.labelSizeSm,labelSizeMd:this.labelSizeMd,labelSizeXs:this.labelSizeXs,labelSizeXl:this.labelSizeXl,labelSizeXxl:this.labelSizeXxl,labelSizeLg:this.labelSizeLg};}/**
82
+ * Methode ergibt Boolean Wert für touched
83
+ */get touched(){cov_syqygw8jm().f[13]++;cov_syqygw8jm().s[51]++;if((cov_syqygw8jm().b[11][0]++,this.ngControl!==null)&&(cov_syqygw8jm().b[11][1]++,this.ngControl!==undefined)){cov_syqygw8jm().b[10][0]++;cov_syqygw8jm().s[52]++;this._touched=this.ngControl.touched;}else{cov_syqygw8jm().b[10][1]++;}cov_syqygw8jm().s[53]++;return this._touched;}/**
84
+ * Get Methode für NgModel Binding in Html Markup
85
+ */get value(){cov_syqygw8jm().f[14]++;cov_syqygw8jm().s[54]++;return this._value;}/**
86
+ * Set Methode für NgModel Binding in Html Markup
87
+ * Input wird benötigt, damit der Wert auch über das Markup gesetzt werden kann.
88
+ */set value(v){cov_syqygw8jm().f[15]++;cov_syqygw8jm().s[55]++;if(this.disabled){cov_syqygw8jm().b[12][0]++;cov_syqygw8jm().s[56]++;return;}else{cov_syqygw8jm().b[12][1]++;}cov_syqygw8jm().s[57]++;this._value=this.ConvertInputValue(v);cov_syqygw8jm().s[58]++;this.propagateChange(this._value);}// #endregion Public Getters And Setters
89
+ // #region Public Methods
90
+ /**
91
+ * Methode ergibt Error anhand von gegebenen Kriterien
92
+ */GetErrorMessage(){cov_syqygw8jm().f[16]++;cov_syqygw8jm().s[59]++;if((cov_syqygw8jm().b[14][0]++,this.ngControl.errors===undefined)||(cov_syqygw8jm().b[14][1]++,this.ngControl.errors===null)){cov_syqygw8jm().b[13][0]++;cov_syqygw8jm().s[60]++;return new Observable(observer=>{cov_syqygw8jm().f[17]++;cov_syqygw8jm().s[61]++;observer.next('');cov_syqygw8jm().s[62]++;observer.complete();});}else{cov_syqygw8jm().b[13][1]++;}const errors=(cov_syqygw8jm().s[63]++,this.ngControl.errors);cov_syqygw8jm().s[64]++;if(errors.length===0){cov_syqygw8jm().b[15][0]++;cov_syqygw8jm().s[65]++;return new Observable(observer=>{cov_syqygw8jm().f[18]++;cov_syqygw8jm().s[66]++;observer.next('');cov_syqygw8jm().s[67]++;observer.complete();});}else{cov_syqygw8jm().b[15][1]++;}const keys=(cov_syqygw8jm().s[68]++,Object.keys(errors));cov_syqygw8jm().s[69]++;if(keys.length<=0){cov_syqygw8jm().b[16][0]++;cov_syqygw8jm().s[70]++;return new Observable(observer=>{cov_syqygw8jm().f[19]++;cov_syqygw8jm().s[71]++;observer.next('');cov_syqygw8jm().s[72]++;observer.complete();});}else{cov_syqygw8jm().b[16][1]++;}const errorItem=(cov_syqygw8jm().s[73]++,errors[keys[0]]);// Validation Parameters
93
+ const parameters=(cov_syqygw8jm().s[74]++,{});cov_syqygw8jm().s[75]++;if((cov_syqygw8jm().b[18][0]++,errorItem.parameters!==null)&&(cov_syqygw8jm().b[18][1]++,errorItem.parameters!==undefined)){cov_syqygw8jm().b[17][0]++;cov_syqygw8jm().s[76]++;errorItem.parameters.forEach((v,k)=>{cov_syqygw8jm().f[20]++;cov_syqygw8jm().s[77]++;parameters[k]=v;});}else{cov_syqygw8jm().b[17][1]++;}cov_syqygw8jm().s[78]++;parameters['FIELD']=errorItem.fieldName;cov_syqygw8jm().s[79]++;return this.lngResourceService.GetString(errorItem.errorMessageKey,parameters);}/**
104
94
  * Init Event
105
- */
106
- ngOnInit() {
107
- // receive form via formcontrolname or formcontrol instance
108
- const formControl = this.injector.get(NgControl, null);
109
- if (formControl instanceof FormControlName) {
110
- const form = this.injector.get(FormGroupDirective, null);
111
- this.ngControl = form.getControl(formControl);
112
- }
113
- else {
114
- this.ngControl = formControl.control;
115
- }
116
- this.UpdateLabelToControl();
117
- /**
118
- * Label Size von Formular lesen
119
- */
120
- if (this.labelsize === undefined) {
121
- if (this.parent?.labelsize !== undefined) {
122
- this.labelsize = this.parent.labelsize;
123
- }
124
- else {
125
- this.labelsize = 4;
126
- }
127
- }
128
- /**
129
- * Adaptive Label from Form
130
- */
131
- if (this.isadaptivelabel === undefined) {
132
- if (this.parent?.isadaptivelabel !== undefined) {
133
- this.isadaptivelabel = this.parent.isadaptivelabel;
134
- }
135
- else {
136
- this.isadaptivelabel = false;
137
- }
138
- }
139
- this.OnClassInit();
140
- }
141
- /**
95
+ */ngOnInit(){cov_syqygw8jm().f[21]++;// receive form via formcontrolname or formcontrol instance
96
+ const formControl=(cov_syqygw8jm().s[80]++,this.injector.get(NgControl,null));cov_syqygw8jm().s[81]++;if(formControl instanceof FormControlName){cov_syqygw8jm().b[19][0]++;const form=(cov_syqygw8jm().s[82]++,this.injector.get(FormGroupDirective,null));cov_syqygw8jm().s[83]++;this.ngControl=form.getControl(formControl);}else{cov_syqygw8jm().b[19][1]++;cov_syqygw8jm().s[84]++;if(formControl){cov_syqygw8jm().b[20][0]++;cov_syqygw8jm().s[85]++;this.ngControl=formControl.control;}else{cov_syqygw8jm().b[20][1]++;}}cov_syqygw8jm().s[86]++;this.UpdateLabelToControl();// set label sizes from formlayout directive
97
+ cov_syqygw8jm().s[87]++;this.setLabelSizes();// set component heigth from fromlayout directive
98
+ cov_syqygw8jm().s[88]++;this.setComponentHeight();// set adaptive label property from formlayout directive
99
+ cov_syqygw8jm().s[89]++;this.setIsAdaptiveLabel();// set method to display helptext
100
+ cov_syqygw8jm().s[90]++;this.setHelpTextMode();// set SplitMode for Labels
101
+ cov_syqygw8jm().s[91]++;this.setLabelSplitMode();cov_syqygw8jm().s[92]++;this.OnClassInit();}/**
102
+ * Methode ergibt boolean touched = true
103
+ */onTouch(){cov_syqygw8jm().f[22]++;cov_syqygw8jm().s[93]++;this._touched=true;cov_syqygw8jm().s[94]++;this.propagateTouch();}/**
142
104
  * Methode, damit andere Controls änderungen im Control mitbekommen können
143
105
  * Zur Änderungsinfo die Methode propagateChange aufrufen.
144
- */
145
- registerOnChange(fn) {
146
- this.propagateChange = (obj) => fn(obj);
147
- }
148
- /**
106
+ */registerOnChange(fn){cov_syqygw8jm().f[23]++;cov_syqygw8jm().s[95]++;this.propagateChange=obj=>{cov_syqygw8jm().f[24]++;cov_syqygw8jm().s[96]++;return fn(obj);};}/**
149
107
  * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.
150
- */
151
- registerOnTouched(fn) {
152
- this.propagateTouch = (obj) => fn(obj);
153
- }
154
- /**
155
- * Methode zum schreiben von Werten aus dem Model in das Control
156
- */
157
- writeValue(value) {
158
- this._value = value;
159
- }
160
- /**
108
+ */registerOnTouched(fn){cov_syqygw8jm().f[25]++;cov_syqygw8jm().s[97]++;this.propagateTouch=obj=>{cov_syqygw8jm().f[26]++;cov_syqygw8jm().s[98]++;return fn(obj);};}/**
109
+ * Methode registriert Änderungen bei der Validierung
110
+ */registerOnValidatorChange(fn){cov_syqygw8jm().f[27]++;cov_syqygw8jm().s[99]++;this._onChange=fn;}/**
161
111
  * Setzt das Control auf Disabled
162
- */
163
- setDisabledState(isDisabled) {
164
- this._disabledForm = isDisabled;
165
- }
166
- // #endregion
167
- // #region Control Value
168
- /**
169
- * Set Methode für NgModel Binding in Html Markup
170
- * Input wird benötigt, damit der Wert auch über das Markup gesetzt werden kann.
171
- */
172
- set value(v) {
173
- if (this.disabled) {
174
- return;
175
- }
176
- this._value = this.ConvertInputValue(v);
177
- this.propagateChange(this._value);
178
- }
179
- /**
180
- * Get Methode für NgModel Binding in Html Markup
181
- */
182
- get value() {
183
- return this._value;
184
- }
185
- /**
112
+ */setDisabledState(isDisabled){cov_syqygw8jm().f[28]++;cov_syqygw8jm().s[100]++;this._disabledForm=isDisabled;}/**
186
113
  * Methode die den Wert des Inputs setzt
187
- */
188
- setValue(v) {
189
- this.value = v;
190
- }
191
- // #endregion
192
- // #region Internal Properties
193
- /**
194
- * Berechnet die Breite des Labels
195
- */
196
- get _inputsize() {
197
- return 12 - this.labelsize;
198
- }
199
- // #endregion
200
- // #region Protected Helper Methods
201
- /**
202
- * Method can be used to Set Properties at Class Init
203
- */
204
- OnClassInit() { }
205
- /**
206
- * Methode ergibt Decimal Symbol
207
- */
208
- GetDecimalSymbol() {
209
- return '.';
210
- }
211
- /**
114
+ */setValue(v){cov_syqygw8jm().f[29]++;cov_syqygw8jm().s[101]++;this.value=v;}/**
115
+ * Validator Methode
116
+ */validate(c){cov_syqygw8jm().f[30]++;const error=(cov_syqygw8jm().s[102]++,this.validateData(c));cov_syqygw8jm().s[103]++;return error;}/**
117
+ * Methode zum schreiben von Werten aus dem Model in das Control
118
+ */writeValue(value){cov_syqygw8jm().f[31]++;cov_syqygw8jm().s[104]++;this._value=value;}// #endregion Public Methods
119
+ // #region Protected Methods
120
+ /**
212
121
  * Method can Overwriten in Parent Classes
213
122
  * @param value Wert welcher in den korrekten Typ konvertiert werden soll
214
123
  * @returns Wert im korrekten Typ
215
- */
216
- ConvertInputValue(value) {
217
- return value;
218
- }
219
- UpdateLabelToControl() {
220
- // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
221
- if (this.ngControl) {
222
- this.ngControl.controllabel = this.label;
223
- }
224
- }
225
- // #endregion
226
- //#region Validation Base
227
- /**
228
- * Validator Methode
229
- */
230
- validate(c) {
231
- const error = this.validateData(c);
232
- return error;
233
- }
234
- /**
235
- * Methode registriert Änderungen bei der Validierung
236
- */
237
- registerOnValidatorChange(fn) {
238
- this._onChange = fn;
239
- }
240
- /**
241
- * Methode ergibt Boolean Wert für dirty
242
- */
243
- get dirty() {
244
- if (this.ngControl !== null) {
245
- this._dirty = this.ngControl.dirty;
246
- }
247
- return this._dirty;
248
- }
249
- /**
250
- * Methode ergibt Boolean Wert für touched
251
- */
252
- get touched() {
253
- if (this.ngControl !== null) {
254
- this._touched = this.ngControl.touched;
255
- }
256
- return this._touched;
257
- }
258
- /**
259
- * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
260
- */
261
- get invalid() {
262
- return (this.ngControl !== undefined &&
263
- this.ngControl !== null &&
264
- this.ngControl.invalid);
265
- }
266
- /**
267
- * Methode ergibt boolean touched = true
268
- */
269
- onTouch() {
270
- this._touched = true;
271
- this.propagateTouch();
272
- }
273
- /**
274
- * Methode ergibt Error anhand von gegebenen Kriterien
275
- */
276
- GetErrorMessage() {
277
- if (this.ngControl.errors === undefined || this.ngControl.errors === null) {
278
- return new Observable((observer) => {
279
- observer.next('');
280
- observer.complete();
281
- });
282
- }
283
- const errors = this.ngControl.errors;
284
- if (errors.length === 0) {
285
- return new Observable((observer) => {
286
- observer.next('');
287
- observer.complete();
288
- });
289
- }
290
- const keys = Object.keys(errors);
291
- if (keys.length <= 0) {
292
- return new Observable((observer) => {
293
- observer.next('');
294
- observer.complete();
295
- });
296
- }
297
- console.log('Step4: ' + JSON.stringify(errors));
298
- const errorItem = errors[keys[0]];
299
- // Validation Parameters
300
- const parameters = {};
301
- if (errorItem.parameters !== null && errorItem.parameters !== undefined) {
302
- errorItem.parameters.forEach((v, k) => {
303
- parameters[k] = v;
304
- });
305
- }
306
- parameters['FIELD'] = errorItem.fieldName;
307
- return this.lngResourceService.GetString(errorItem.errorMessageKey, parameters);
308
- }
309
- /**
124
+ */ConvertInputValue(value){cov_syqygw8jm().f[32]++;cov_syqygw8jm().s[105]++;return value;}/**
125
+ * Methode ergibt Decimal Symbol
126
+ */GetDecimalSymbol(){cov_syqygw8jm().f[33]++;cov_syqygw8jm().s[106]++;return'.';}/**
127
+ * Method can be used to Set Properties at Class Init
128
+ */OnClassInit(){cov_syqygw8jm().f[34]++;}/**
310
129
  * Aktualisiert den NgModel Wert und die Gültigkeit des Validators des Controls
311
- */
312
- UpdateValueAndValidity() {
313
- if (this.ngControl) {
314
- this.ngControl.updateValueAndValidity({ onlySelf: true });
315
- }
316
- }
317
- /**
318
- * Aktiviert oder Deaktiviert die Inline Errors für das Control
319
- */
320
- set inlineerrorenabled(value) {
321
- if (value === null || value === undefined) {
322
- this._inlineerrorenabled = null;
323
- }
324
- else {
325
- this._inlineerrorenabled = convertToBoolean(value);
326
- }
327
- }
328
- get inlineerrorenabled() {
329
- return this._inlineerrorenabled;
330
- }
331
- /**
332
- * Gibt zurück, ob die Inline Error Meldungen für diesem Control aktiv sind.
333
- */
334
- get IsInlineErrorEnabled() {
335
- if (this.parent?.IsInlineErrorEnabled === null ||
336
- this.parent?.IsInlineErrorEnabled === undefined) {
337
- return this._inlineerrorenabled;
338
- }
339
- return (this.parent.IsInlineErrorEnabled !== false &&
340
- this._inlineerrorenabled !== false);
341
- }
342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBaseModelControl, deps: [{ token: i1.SacFormCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
343
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacBaseModelControl, inputs: { name: "name", label: "label", labelsize: "labelsize", disablelabel: "disablelabel", disabled: "disabled", isadaptivelabel: "isadaptivelabel", islanguagespecific: "islanguagespecific", value: "value", inlineerrorenabled: "inlineerrorenabled" }, ngImport: i0 }); }
344
- }
345
- export { SacBaseModelControl };
346
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBaseModelControl, decorators: [{
347
- type: Directive
348
- }], ctorParameters: function () { return [{ type: i1.SacFormCommon, decorators: [{
349
- type: Host
350
- }] }, { type: i0.Injector }]; }, propDecorators: { name: [{
351
- type: Input
352
- }], label: [{
353
- type: Input
354
- }], labelsize: [{
355
- type: Input
356
- }], disablelabel: [{
357
- type: Input
358
- }], disabled: [{
359
- type: Input
360
- }], isadaptivelabel: [{
361
- type: Input
362
- }], islanguagespecific: [{
363
- type: Input
364
- }], value: [{
365
- type: Input
366
- }], inlineerrorenabled: [{
367
- type: Input
368
- }] } });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZW1vZGVsY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlbW9kZWxjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFZLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBSUwsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixTQUFTLEdBR1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxDLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUczRDs7R0FFRztBQUNILE1BQ3NCLG1CQUFtQjtJQWdDdkM7O09BRUc7SUFDSCxJQUFhLEtBQUssQ0FBQyxDQUFTO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBdUJEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQUVELGFBQWE7SUFFYixzQkFBc0I7SUFFdEI7Ozs7O09BS0c7SUFDSCxZQUFvQixNQUFxQixFQUFVLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUEzRXJFOztXQUVHO1FBQ08sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFVakMsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUU1QixhQUFh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b0IsS0FBSyxLQUFLO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLENBQ25DLENBQUM7SUFDSixDQUFDOytHQS9hbUIsbUJBQW1CO21HQUFuQixtQkFBbUI7O1NBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTOzswQkFxRkssSUFBSTttRUFyRFIsSUFBSTtzQkFBWixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBY0csU0FBUztzQkFBakIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBbUpGLEtBQUs7c0JBRFIsS0FBSztnQkFrTUYsa0JBQWtCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUNvbnRyb2xOYW1lLFxyXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICBOZ0NvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNhY0Zvcm1Db21tb24gfSBmcm9tICcuLi9jb250cm9scy9mb3JtL2Zvcm0nO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQWJzdHJhY3RDb250cm9sTGFiZWxFeHRlbnNpb24gfSBmcm9tICcuLi9wdWJsaWNfYXBpJztcclxuaW1wb3J0IHtcclxuICBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSxcclxuICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcclxufSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JJdGVtIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XHJcblxyXG4vKipcclxuICogQWJzdHJhY3QgS2xhc3NlIGbDvHIgU2FjQmFzZU1vZGVsQ29udHJvbC4gSW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXRcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT5cclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdFxyXG57XHJcbiAgLy8gI3JlZ2lvbiBQcml2YXRlIFZhcmlhYmxlc1xyXG5cclxuICAvKipcclxuICAgKiBQYXJlbnQgRm9ybXVsYXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFyZW50OiBTYWNGb3JtQ29tbW9uO1xyXG4gIC8qKlxyXG4gICAqIFNhY01vZGVsIEZvcm0gaXN0IGRpc2FibGVkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9kaXNhYmxlZEZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBuZ0NvbnRyb2xcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmdDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgLyoqXHJcbiAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG5cclxuICBwcml2YXRlIF9sYWJlbDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgZGVzIENvbnRyb2xzXHJcbiAgICovXHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGRlbiBMYWJlbCBUZXh0XHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IGxhYmVsKHY6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbGFiZWwgPSB2O1xyXG4gICAgdGhpcy5VcGRhdGVMYWJlbFRvQ29udHJvbCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgZGVuIExhYmVsIFRleHRcclxuICAgKi9cclxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYWJlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBkaWUgTGFiZWxncsO2c2VcclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbHNpemU6IG51bWJlciA9IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBEZWFrdGl2aWVydCBkYXMgTGFiZWwgaW0gVGVtcGxhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlbGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBEZWFrdGl2aWVydCBkYXMgSW5wdXQgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogS29udHJvbGllcnQsIG9iIGRhcyBMYWJlbCBhZGFwdGl2ZSBpc3RcclxuICAgKi9cclxuICBASW5wdXQoKSBpc2FkYXB0aXZlbGFiZWw6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0LCBvYiBkYXMgQ29udHJvbCBTcHJhY2hzcGV6aWZpc2NoIGlzdFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlzbGFuZ3VhZ2VzcGVjaWZpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGFzIENvbnRyb2wgZGlzYWJsZWQgaXN0XHJcbiAgICovXHJcbiAgZ2V0IGlzZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRGb3JtIHx8IHRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JcclxuXHJcbiAgLyoqXHJcbiAgICogS29uc3RydWt0b3JcclxuICAgKiBJbmplY3QgZGVzIEZvcm11bGFyc1xyXG4gICAqIEBwYXJlbnQgU2FjRm9ybUNvbW1vblxyXG4gICAqIEBpbmplY3RvciBJbmplY3RvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcGFyZW50OiBTYWNGb3JtQ29tbW9uLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XHJcbiAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJuZSBWYXJpYWJsZSwgZGllIGRlbiBXZXJ0IGRlcyBDb250cm9scyBow6RsdFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBfdmFsdWU6IFZBTFVFID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9vbkNoYW5nZTogKCkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQm9vbGVhbiBQcm9wZXJ0eSBkaXJ0eTsgZGVmYXVsdCBXZXJ0IC0gZmFsc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX2RpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvb2xlYW4gUHJvcGVydHkgdG91Y2hlZDsgZGVmYXVsdCBXZXJ0IC0gZmFsc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX3RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5saW5lIEVycm9ycyBmw7xyIGRhcyBDb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaW5saW5lZXJyb3JlbmFibGVkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBDb250cm9sIEV2ZW50c1xyXG5cclxuICAvKipcclxuICAgKiBJbml0IEV2ZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyByZWNlaXZlIGZvcm0gdmlhIGZvcm1jb250cm9sbmFtZSBvciBmb3JtY29udHJvbCBpbnN0YW5jZVxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lKSB7XHJcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmluamVjdG9yLmdldChGb3JtR3JvdXBEaXJlY3RpdmUsIG51bGwpO1xyXG4gICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm0uZ2V0Q29udHJvbChmb3JtQ29udHJvbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuVXBkYXRlTGFiZWxUb0NvbnRyb2woKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIFNpemUgdm9uIEZvcm11bGFyIGxlc2VuXHJcbiAgICAgKi9cclxuICAgIGlmICh0aGlzLmxhYmVsc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhcmVudD8ubGFiZWxzaXplICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmxhYmVsc2l6ZSA9IHRoaXMucGFyZW50LmxhYmVsc2l6ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxhYmVsc2l6ZSA9IDQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkYXB0aXZlIExhYmVsIGZyb20gRm9ybVxyXG4gICAgICovXHJcbiAgICBpZiAodGhpcy5pc2FkYXB0aXZlbGFiZWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5wYXJlbnQ/LmlzYWRhcHRpdmVsYWJlbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5pc2FkYXB0aXZlbGFiZWwgPSB0aGlzLnBhcmVudC5pc2FkYXB0aXZlbGFiZWw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc2FkYXB0aXZlbGFiZWwgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuT25DbGFzc0luaXQoKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBJbXBsZW1lbnRhdGlvbiBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG5cclxuICAvKipcclxuICAgKiBMZWVyZSBJbXBsZW1lbnRhdGlvbiB2b24gXCJwcm9wYWdhdGVDaGFuZ2VcIi4gTXVzcyBnZW1hY2h0IHdlcmRlbiwgZGFtaXQga2VpbiBGZWhsZXIgZW50c3RlaHRcclxuICAgKi9cclxuICBwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG4gIC8qKlxyXG4gICAqIExlZXJlIEltcGxlbWVudGF0aW9uIHZvbiBcInByb3BhZ2F0ZVRvdWNoXCIuIE11c3MgZ2VtYWNodCB3ZXJkZW4sIGRhbWl0IGtlaW4gRmVobGVyIGVudHN0ZWh0XHJcbiAgICovXHJcbiAgcHJvcGFnYXRlVG91Y2g6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlLCBkYW1pdCBhbmRlcmUgQ29udHJvbHMgw6RuZGVydW5nZW4gaW0gQ29udHJvbCBtaXRiZWtvbW1lbiBrw7ZubmVuXHJcbiAgICogWnVyIMOEbmRlcnVuZ3NpbmZvIGRpZSBNZXRob2RlIHByb3BhZ2F0ZUNoYW5nZSBhdWZydWZlbi5cclxuICAgKi9cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gKG9iaikgPT4gZm4ob2JqKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUsIGRhbWl0IGFuZGVyZSBDb250cm9scyDDpG5kZXJ1bmdlbiBtaXRiZWtvbW1lbiwgd2VubiBkYXMgQ29udHJvbCBha3RpdmllcnQgKEZvY3VzKSB3aXJkLlxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlVG91Y2ggPSAob2JqKSA9PiBmbihvYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSB6dW0gc2NocmVpYmVuIHZvbiBXZXJ0ZW4gYXVzIGRlbSBNb2RlbCBpbiBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IFZBTFVFKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGFzIENvbnRyb2wgYXVmIERpc2FibGVkXHJcbiAgICovXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZEZvcm0gPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIENvbnRyb2wgVmFsdWVcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IE1ldGhvZGUgZsO8ciBOZ01vZGVsIEJpbmRpbmcgaW4gSHRtbCBNYXJrdXBcclxuICAgKiBJbnB1dCB3aXJkIGJlbsO2dGlndCwgZGFtaXQgZGVyIFdlcnQgYXVjaCDDvGJlciBkYXMgTWFya3VwIGdlc2V0enQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodjogVkFMVUUpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuQ29udmVydElucHV0VmFsdWUodik7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgTWV0aG9kZSBmw7xyIE5nTW9kZWwgQmluZGluZyBpbiBIdG1sIE1hcmt1cFxyXG4gICAqL1xyXG4gIGdldCB2YWx1ZSgpOiBWQUxVRSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGRpZSBkZW4gV2VydCBkZXMgSW5wdXRzIHNldHp0XHJcbiAgICovXHJcbiAgc2V0VmFsdWUodjogVkFMVUUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2O1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIEludGVybmFsIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogQmVyZWNobmV0IGRpZSBCcmVpdGUgZGVzIExhYmVsc1xyXG4gICAqL1xyXG4gIGdldCBfaW5wdXRzaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gMTIgLSB0aGlzLmxhYmVsc2l6ZTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgSGVscGVyIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIFNldCBQcm9wZXJ0aWVzIGF0IENsYXNzIEluaXRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgT25DbGFzc0luaXQoKTogdm9pZCB7fVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBEZWNpbWFsIFN5bWJvbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBHZXREZWNpbWFsU3ltYm9sKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJy4nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGNhbiBPdmVyd3JpdGVuIGluIFBhcmVudCBDbGFzc2VzXHJcbiAgICogQHBhcmFtIHZhbHVlIFdlcnQgd2VsY2hlciBpbiBkZW4ga29ycmVrdGVuIFR5cCBrb252ZXJ0aWVydCB3ZXJkZW4gc29sbFxyXG4gICAqIEByZXR1cm5zIFdlcnQgaW0ga29ycmVrdGVuIFR5cFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBDb252ZXJ0SW5wdXRWYWx1ZSh2YWx1ZTogVkFMVUUpOiBWQUxVRSB7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFVwZGF0ZUxhYmVsVG9Db250cm9sKCk6IHZvaWQge1xyXG4gICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAoXHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJQWJzdHJhY3RDb250cm9sTGFiZWxFeHRlbnNpb25cclxuICAgICAgKS5jb250cm9sbGFiZWwgPSB0aGlzLmxhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gVmFsaWRhdGlvbiBCYXNlXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvciBNZXRob2RlXHJcbiAgICovXHJcbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy52YWxpZGF0ZURhdGEoYyk7XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBYnN0cmFrdGUgVmFsaWRhdG9yIE1ldGhvZGVcclxuICAgKi9cclxuICBhYnN0cmFjdCB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgcmVnaXN0cmllcnQgw4RuZGVydW5nZW4gYmVpIGRlciBWYWxpZGllcnVuZ1xyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBCb29sZWFuIFdlcnQgZsO8ciBkaXJ0eVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZGlydHkoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fZGlydHkgPSB0aGlzLm5nQ29udHJvbC5kaXJ0eTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZGlydHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBCb29sZWFuIFdlcnQgZsO8ciB0b3VjaGVkXHJcbiAgICovXHJcbiAgcHVibGljIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX3RvdWNoZWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl90b3VjaGVkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBib29sZWFuIFdlcnQgd2VubiBGb3JtIGludmFsaWQgb2RlciBuaWNodCBpbnZhbGlkIGlzdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMubmdDb250cm9sICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZXJnaWJ0IGJvb2xlYW4gdG91Y2hlZCA9IHRydWVcclxuICAgKi9cclxuICBvblRvdWNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdG91Y2hlZCA9IHRydWU7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBFcnJvciBhbmhhbmQgdm9uIGdlZ2ViZW5lbiBLcml0ZXJpZW5cclxuICAgKi9cclxuICBHZXRFcnJvck1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbC5lcnJvcnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm5nQ29udHJvbC5lcnJvcnMgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCgnJyk7XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzO1xyXG5cclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQoJycpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcclxuXHJcbiAgICBpZiAoa2V5cy5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KCcnKTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygnU3RlcDQ6ICcgKyBKU09OLnN0cmluZ2lmeShlcnJvcnMpKTtcclxuXHJcbiAgICBjb25zdCBlcnJvckl0ZW06IFZhbGlkYXRpb25FcnJvckl0ZW0gPSBlcnJvcnNba2V5c1swXV07XHJcblxyXG4gICAgLy8gVmFsaWRhdGlvbiBQYXJhbWV0ZXJzXHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge307XHJcbiAgICBpZiAoZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IG51bGwgJiYgZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBlcnJvckl0ZW0ucGFyYW1ldGVycy5mb3JFYWNoKCh2LCBrKSA9PiB7XHJcbiAgICAgICAgcGFyYW1ldGVyc1trXSA9IHY7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcGFyYW1ldGVyc1snRklFTEQnXSA9IGVycm9ySXRlbS5maWVsZE5hbWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhcclxuICAgICAgZXJyb3JJdGVtLmVycm9yTWVzc2FnZUtleSxcclxuICAgICAgcGFyYW1ldGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFrdHVhbGlzaWVydCBkZW4gTmdNb2RlbCBXZXJ0IHVuZCBkaWUgR8O8bHRpZ2tlaXQgZGVzIFZhbGlkYXRvcnMgZGVzIENvbnRyb2xzXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIFVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWt0aXZpZXJ0IG9kZXIgRGVha3RpdmllcnQgZGllIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlubGluZWVycm9yZW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGlubGluZWVycm9yZW5hYmxlZCgpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5saW5lZXJyb3JlbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2lidCB6dXLDvGNrLCBvYiBkaWUgSW5saW5lIEVycm9yIE1lbGR1bmdlbiBmw7xyIGRpZXNlbSBDb250cm9sIGFrdGl2IHNpbmQuXHJcbiAgICovXHJcbiAgZ2V0IElzSW5saW5lRXJyb3JFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnBhcmVudD8uSXNJbmxpbmVFcnJvckVuYWJsZWQgPT09IG51bGwgfHxcclxuICAgICAgdGhpcy5wYXJlbnQ/LklzSW5saW5lRXJyb3JFbmFibGVkID09PSB1bmRlZmluZWRcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5faW5saW5lZXJyb3JlbmFibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMucGFyZW50LklzSW5saW5lRXJyb3JFbmFibGVkICE9PSBmYWxzZSAmJlxyXG4gICAgICB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgIT09IGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIl19
130
+ */UpdateValueAndValidity(){cov_syqygw8jm().f[35]++;cov_syqygw8jm().s[107]++;if(this.ngControl){cov_syqygw8jm().b[21][0]++;cov_syqygw8jm().s[108]++;this.ngControl.updateValueAndValidity({onlySelf:true});}else{cov_syqygw8jm().b[21][1]++;}}// #endregion Protected Methods
131
+ // #region Private Methods
132
+ UpdateLabelToControl(){cov_syqygw8jm().f[36]++;cov_syqygw8jm().s[109]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
133
+ if(this.ngControl){cov_syqygw8jm().b[22][0]++;cov_syqygw8jm().s[110]++;this.ngControl.controllabel=this.label;}else{cov_syqygw8jm().b[22][1]++;}}/**
134
+ * Set component height from property or parent layout control
135
+ */setComponentHeight(){cov_syqygw8jm().f[37]++;cov_syqygw8jm().s[111]++;// set size extra small
136
+ if(!this.componentHeight){cov_syqygw8jm().b[23][0]++;cov_syqygw8jm().s[112]++;if(this.formlayout?.componentHeight){cov_syqygw8jm().b[24][0]++;cov_syqygw8jm().s[113]++;this.componentHeight=this.formlayout.componentHeight;}else{cov_syqygw8jm().b[24][1]++;cov_syqygw8jm().s[114]++;this.componentHeight=this.configurationService.ComponentHeight;}}else{cov_syqygw8jm().b[23][1]++;}}/**
137
+ * Set mode for helptext. Can be tooltip or text
138
+ */setHelpTextMode(){cov_syqygw8jm().f[38]++;cov_syqygw8jm().s[115]++;if(!this.helptextmode){cov_syqygw8jm().b[25][0]++;cov_syqygw8jm().s[116]++;if(this.formlayout?.helptextmode){cov_syqygw8jm().b[26][0]++;cov_syqygw8jm().s[117]++;this.helptextmode=this.formlayout.helptextmode;}else{cov_syqygw8jm().b[26][1]++;cov_syqygw8jm().s[118]++;this.helptextmode=this.configurationService.HelptextMode;}}else{cov_syqygw8jm().b[25][1]++;}}/**
139
+ * Set adaptive label property from parent layout control
140
+ */setIsAdaptiveLabel(){cov_syqygw8jm().f[39]++;cov_syqygw8jm().s[119]++;if(!this.isAdaptiveLabel){cov_syqygw8jm().b[27][0]++;cov_syqygw8jm().s[120]++;if(this.formlayout?.isAdaptiveLabel!==undefined){cov_syqygw8jm().b[28][0]++;cov_syqygw8jm().s[121]++;this.isAdaptiveLabel=this.formlayout.isAdaptiveLabel;}else{cov_syqygw8jm().b[28][1]++;cov_syqygw8jm().s[122]++;this.isAdaptiveLabel=false;}}else{cov_syqygw8jm().b[27][1]++;}}/**
141
+ * Set label sizes from property or parent layout control
142
+ */setLabelSizes(){cov_syqygw8jm().f[40]++;cov_syqygw8jm().s[123]++;// set size extra small
143
+ if(!this.labelSizeXs){cov_syqygw8jm().b[29][0]++;cov_syqygw8jm().s[124]++;if(this.formlayout?.labelSizeXs){cov_syqygw8jm().b[30][0]++;cov_syqygw8jm().s[125]++;this.labelSizeXs=this.formlayout.labelSizeXs;}else{cov_syqygw8jm().b[30][1]++;cov_syqygw8jm().s[126]++;this.labelSizeXs=this.configurationService.LabelSizeXs;}}else{cov_syqygw8jm().b[29][1]++;}// set size small
144
+ cov_syqygw8jm().s[127]++;if(!this.labelSizeSm){cov_syqygw8jm().b[31][0]++;cov_syqygw8jm().s[128]++;if(this.formlayout?.labelSizeSm){cov_syqygw8jm().b[32][0]++;cov_syqygw8jm().s[129]++;this.labelSizeSm=this.formlayout.labelSizeSm;}else{cov_syqygw8jm().b[32][1]++;cov_syqygw8jm().s[130]++;this.labelSizeSm=this.configurationService.LabelSizeSm;}}else{cov_syqygw8jm().b[31][1]++;}// set size medium
145
+ cov_syqygw8jm().s[131]++;if(!this.labelSizeMd){cov_syqygw8jm().b[33][0]++;cov_syqygw8jm().s[132]++;if(this.formlayout?.labelSizeMd){cov_syqygw8jm().b[34][0]++;cov_syqygw8jm().s[133]++;this.labelSizeMd=this.formlayout.labelSizeMd;}else{cov_syqygw8jm().b[34][1]++;cov_syqygw8jm().s[134]++;this.labelSizeMd=this.configurationService.LabelSizeMd;}}else{cov_syqygw8jm().b[33][1]++;}// set size large
146
+ cov_syqygw8jm().s[135]++;if(!this.labelSizeLg){cov_syqygw8jm().b[35][0]++;cov_syqygw8jm().s[136]++;if(this.formlayout?.labelSizeLg){cov_syqygw8jm().b[36][0]++;cov_syqygw8jm().s[137]++;this.labelSizeLg=this.formlayout.labelSizeLg;}else{cov_syqygw8jm().b[36][1]++;cov_syqygw8jm().s[138]++;this.labelSizeLg=this.configurationService.LabelSizeLg;}}else{cov_syqygw8jm().b[35][1]++;}// set size extra large
147
+ cov_syqygw8jm().s[139]++;if(!this.labelSizeXl){cov_syqygw8jm().b[37][0]++;cov_syqygw8jm().s[140]++;if(this.formlayout?.labelSizeXl){cov_syqygw8jm().b[38][0]++;cov_syqygw8jm().s[141]++;this.labelSizeXl=this.formlayout.labelSizeXl;}else{cov_syqygw8jm().b[38][1]++;cov_syqygw8jm().s[142]++;this.labelSizeXl=this.configurationService.LabelSizeXl;}}else{cov_syqygw8jm().b[37][1]++;}// set size extra extra large
148
+ cov_syqygw8jm().s[143]++;if(!this.labelSizeXxl){cov_syqygw8jm().b[39][0]++;cov_syqygw8jm().s[144]++;if(this.formlayout?.labelSizeXxl){cov_syqygw8jm().b[40][0]++;cov_syqygw8jm().s[145]++;this.labelSizeXxl=this.formlayout.labelSizeXxl;}else{cov_syqygw8jm().b[40][1]++;cov_syqygw8jm().s[146]++;this.labelSizeXxl=this.configurationService.LabelSizeXxl;}}else{cov_syqygw8jm().b[39][1]++;}}setLabelSplitMode(){cov_syqygw8jm().f[41]++;cov_syqygw8jm().s[147]++;if(!this.splitlabelandhelptext){cov_syqygw8jm().b[41][0]++;cov_syqygw8jm().s[148]++;if(this.formlayout?.splitlabelandhelptext){cov_syqygw8jm().b[42][0]++;cov_syqygw8jm().s[149]++;this.splitlabelandhelptext=this.formlayout.splitlabelandhelptext;}else{cov_syqygw8jm().b[42][1]++;cov_syqygw8jm().s[150]++;this.splitlabelandhelptext=this.configurationService.SplitLabelAndHelptext;}}else{cov_syqygw8jm().b[41][1]++;}}static{cov_syqygw8jm().s[151]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseModelControl,deps:[{token:i1.SacFormLayoutCommon,host:true},{token:i0.Injector}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_syqygw8jm().s[152]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacBaseModelControl,inputs:{componentHeight:"componentHeight",disabled:"disabled",disablelabel:"disablelabel",helptext:"helptext",helptextmode:"helptextmode",inlineError:"inlineError",isAdaptiveLabel:"isAdaptiveLabel",labelSizeLg:"labelSizeLg",labelSizeMd:"labelSizeMd",labelSizeSm:"labelSizeSm",labelSizeXl:"labelSizeXl",labelSizeXs:"labelSizeXs",labelSizeXxl:"labelSizeXxl",name:"name",splitlabelandhelptext:"splitlabelandhelptext",inlineerrorenabled:"inlineerrorenabled",label:"label",value:"value"},ngImport:i0});}}export{SacBaseModelControl};cov_syqygw8jm().s[153]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseModelControl,decorators:[{type:Directive}],ctorParameters:function(){cov_syqygw8jm().f[42]++;cov_syqygw8jm().s[154]++;return[{type:i1.SacFormLayoutCommon,decorators:[{type:Host}]},{type:i0.Injector}];},propDecorators:{componentHeight:[{type:Input}],disabled:[{type:Input}],disablelabel:[{type:Input}],helptext:[{type:Input}],helptextmode:[{type:Input}],inlineError:[{type:Input}],isAdaptiveLabel:[{type:Input}],labelSizeLg:[{type:Input}],labelSizeMd:[{type:Input}],labelSizeSm:[{type:Input}],labelSizeXl:[{type:Input}],labelSizeXs:[{type:Input}],labelSizeXxl:[{type:Input}],name:[{type:Input}],splitlabelandhelptext:[{type:Input}],inlineerrorenabled:[{type:Input}],label:[{type:Input}],value:[{type:Input}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZW1vZGVsY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlbW9kZWxjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU92RCxPQUFPLEVBQ0gsZUFBZSxFQUNmLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsOEJBQThCLEdBQ2pDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBWSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUdILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsU0FBUyxHQUlaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRWxDOztHQUVHO0FBQ0gsTUFDc0IsbUJBQW1CO0lBdUtyQyx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7O09BSUc7SUFDSCxZQUFvQixVQUErQixFQUFtQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBL0t4RixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyx3QkFBbUIsR0FBbUIsSUFBSSxDQUFDO1FBRW5EOztXQUVHO1FBQ0ssV0FBTSxHQUFXLEVBQUUsQ0FBQztRQU81Qjs7V0FFRztRQUNPLFdBQU0sR0FBWSxLQUFL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O2dCQUtVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFNQyxZQUFZO3NCQURsQixLQUFLO2dCQU1VLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsZUFBZTtzQkFBOUIsS0FBSztnQkFNQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFNVSxJQUFJO3NCQUFuQixLQUFLO2dCQWdCQyxxQkFBcUI7c0JBRDNCLEtBQUs7Z0JBK0RLLGtCQUFrQjtzQkFENUIsS0FBSztnQkFvRGMsS0FBSztzQkFBeEIsS0FBSztnQkEwQ0ssS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgQ29udHJvbEhlaWdodCB9IGZyb20gJy4uL2VudW1zL0NvbnRyb2xIZWlnaHQnO1xyXG5pbXBvcnQgeyBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNDb25maWd1cmF0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNJY29uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0ljb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY0xhYmVsU2l6ZXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMYWJlbFNpemVzJztcclxuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVmFsaWRhdGlvbktleVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQWJzdHJhY3RDb250cm9sTGFiZWxFeHRlbnNpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lhYnN0cmFjdGNvbnRyb2xsYWJlbCc7XHJcbmltcG9ydCB7XHJcbiAgICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgICBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsXHJcbiAgICBTYWNEZWZhdWx0SWNvblNlcnZpY2UsXHJcbiAgICBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTQUNDT05GSUdVUkFUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBjcmVhdGVHdWlkIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2d1aWQnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JJdGVtIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEFic3RyYWN0Q29udHJvbCxcclxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gICAgRm9ybUNvbnRyb2xOYW1lLFxyXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgTmdDb250cm9sLFxyXG4gICAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcclxuICAgIFZhbGlkYXRvcixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBLbGFzc2UgZsO8ciBTYWNCYXNlTW9kZWxDb250cm9sLiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pbmxpbmVlcnJvcmVuYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmb3IgbG9hZGluZyBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgY29udHJvbHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IGRpcnR5OyBkZWZhdWx0IFdlcnQgLSBmYWxzZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2RpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYWNNb2RlbCBGb3JtIGlzdCBkaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfb25DaGFuZ2U6ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IHRvdWNoZWQ7IGRlZmF1bHQgV2VydCAtIGZhbHNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfdG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuZSBWYXJpYWJsZSwgZGllIGRlbiBXZXJ0IGRlcyBDb250cm9scyBow6RsdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBWQUxVRSA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIGxheW91dCBpbnN0YW5jZSBpZiBleGlzdHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24gPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIG5nQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbmdDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sSGVpZ2h0IGVudW0gZm9yIHVzZSBpbiBIVE1MIG1hcmt1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgQ29udHJvbEhlaWdodDogdHlwZW9mIENvbnRyb2xIZWlnaHQgPSBDb250cm9sSGVpZ2h0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGUgc3RhbmRhcmQgaGVpZ2h0IG9mIHRoZSBjb21wb25lbnRzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29tcG9uZW50SGVpZ2h0OiBDb250cm9sSGVpZ2h0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWFrdGl2aWVydCBkYXMgSW5wdXQgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlYWt0aXZpZXJ0IGRhcyBMYWJlbCBpbSBUZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWxhYmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRvIHN1cHBvcnQgdGhlIHVzZXIgZHVyaW5nIGlucHV0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscHRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZSBmb3IgZGlzcGxheSBoZWxwdGV4dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlbHB0ZXh0bW9kZTogJ3Rvb2x0aXAnIHwgJ3RleHQnIHwgbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmluZXMgdGhhdCBlcnJvciBtZXNzYWdlcyBhcmUgZGlzcGxheWVkIHVuZGVyIHRoZSBjb250cm9sc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5saW5lRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmaW5lcyB0aGF0IHRoZSBsYWJlbHMgYXJlIGRpc3BsYXllZCBhcyBhZGFwdGl2ZSBsYWJlbHNcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzQWRhcHRpdmVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlIHNpemUgZm9yIGxhcmdlIGRldmljZXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbFNpemVMZzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmVsIHNpemUgZm9yIG1lZGl1bSBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplTWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBzbWFsbCBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplU206IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBleHRyYSBsYXJnZSBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplWGw6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBjb2x1bW4gc2l6ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsU2l6ZVhzOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmF1bHQgbGFiZWwgc2l6ZSBmb3IgZXh0cmEgZXh0cmEgbGFyZ2UgZGV2aWNlc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsU2l6ZVh4bDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIGRlcyBDb250cm9sc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nID0gY3JlYXRlR3VpZCgpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGVlcmUgSW1wbGVtZW50YXRpb24gdm9uIFwicHJvcGFnYXRlQ2hhbmdlXCIuIE11c3MgZ2VtYWNodCB3ZXJkZW4sIGRhbWl0IGtlaW4gRmVobGVyIGVudHN0ZWh0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGVlcmUgSW1wbGVtZW50YXRpb24gdm9uIFwicHJvcGFnYXRlVG91Y2hcIi4gTXVzcyBnZW1hY2h0IHdlcmRlbiwgZGFtaXQga2VpbiBGZWhsZXIgZW50c3RlaHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb3BhZ2F0ZVRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGFjaCBsYWJlbCB0ZXh0IGFuZCB0b29sdGlwIGZyb20gZWFjaCBvdGhlciBpbiBMYWJlbCBzbyB0aGF0IGxhYmVsIGFuZCB0b29sdGlwIGNhbiBiZSBhbGlnbmVkIGRpZmZlcmVudGx5LiBUaGlzIGlzIGluIEJvb3RzdHJhcCAzIG5vdCBzdXBwb3J0ZWQhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3BsaXRsYWJlbGFuZGhlbHB0ZXh0OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNlIHRvIHJlY2VpdmUgc3RhbmRhcmQgdmFsaWRhdGlvbiBtZXNzYWdlIGtleXMgYW5kIHRleHRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuZm9ybWxheW91dCA9IGZvcm1sYXlvdXQ7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XHJcbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ0NPTkZJR1VSQVRJT05fU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRDb25maWd1cmF0aW9uU2VydmljZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5pY29uU2VydmljZSA9IGluamVjdG9yLmdldChTQUNJQ09OX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgSWNvbiBmb3IgSGVscHRleHQgVG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEhlbHB0ZXh0VG9vbHRpcEljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5HZW5lcmljSGVscHRleHRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgQm9vbGVhbiBXZXJ0IGbDvHIgZGlydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRoaXMubmdDb250cm9sLmRpcnR5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBlcnJvciBtZXNzYWdlcyBpbmxpbmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpbmxpbmVlcnJvcmVuYWJsZWQoKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBa3RpdmllcnQgb2RlciBEZWFrdGl2aWVydCBkaWUgSW5saW5lIEVycm9ycyBmw7xyIGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGlubGluZWVycm9yZW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZXJnaWJ0IGJvb2xlYW4gV2VydCB3ZW5uIEZvcm0gaW52YWxpZCBvZGVyIG5pY2h0IGludmFsaWQgaXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5nQ29udHJvbCAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IG9iIGRhcyBDb250cm9sIGRpc2FibGVkIGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRm9ybSB8fCB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBpbmxpbmUgZXJyb3IgbWVzc2FnZXMgYXJlIGFjdGl2ZSBmb3IgdGhpcyBjb250cm9sLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzaW5saW5lZXJyb3JlbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQgIT09IG51bGwgJiYgdGhpcy5mb3JtbGF5b3V0LklzSW5saW5lRXJyb3JFbmFibGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1sYXlvdXQ/LklzSW5saW5lRXJyb3JFbmFibGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuSW5saW5lRXJyb3JFbmFibGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLklubGluZUVycm9yRW5hYmxlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IGRlbiBMYWJlbCBUZXh0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGVuIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHNldCBsYWJlbCh2OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9sYWJlbCA9IHY7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVMYWJlbFRvQ29udHJvbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhbGwgbGFiZWwgc2l6ZXMuIFRoZXNlIHZhbHVlcyBjYW4gdGhlbiBiZSB0cmFuc2ZlcnJlZCB0byBjb3JyZXNwb25kaW5nIENTUyBjbGFzc2VzIHVzaW5nIGEgcGlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGxhYmVsU2l6ZXMoKTogSVNhY0xhYmVsU2l6ZXMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZVNtOiB0aGlzLmxhYmVsU2l6ZVNtLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVNZDogdGhpcy5sYWJlbFNpemVNZCxcclxuICAgICAgICAgICAgbGFiZWxTaXplWHM6IHRoaXMubGFiZWxTaXplWHMsXHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZVhsOiB0aGlzLmxhYmVsU2l6ZVhsLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVYeGw6IHRoaXMubGFiZWxTaXplWHhsLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVMZzogdGhpcy5sYWJlbFNpemVMZyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgQm9vbGVhbiBXZXJ0IGbDvHIgdG91Y2hlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsICYmIHRoaXMubmdDb250cm9sICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG91Y2hlZCA9IHRoaXMubmdDb250cm9sLnRvdWNoZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBNZXRob2RlIGbDvHIgTmdNb2RlbCBCaW5kaW5nIGluIEh0bWwgTWFya3VwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogVkFMVUUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBNZXRob2RlIGbDvHIgTmdNb2RlbCBCaW5kaW5nIGluIEh0bWwgTWFya3VwXHJcbiAgICAgKiBJbnB1dCB3aXJkIGJlbsO2dGlndCwgZGFtaXQgZGVyIFdlcnQgYXVjaCDDvGJlciBkYXMgTWFya3VwIGdlc2V0enQgd2VyZGVuIGthbm4uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHY6IFZBTFVFKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLkNvbnZlcnRJbnB1dFZhbHVlKHYpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgRXJyb3IgYW5oYW5kIHZvbiBnZWdlYmVuZW4gS3JpdGVyaWVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBHZXRFcnJvck1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuZXJyb3JzID09PSB1bmRlZmluZWQgfHwgdGhpcy5uZ0NvbnRyb2wuZXJyb3JzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IHRoaXMubmdDb250cm9sLmVycm9ycztcclxuXHJcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xyXG5cclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoJycpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBlcnJvckl0ZW06IFZhbGlkYXRpb25FcnJvckl0ZW0gPSBlcnJvcnNba2V5c1swXV07XHJcblxyXG4gICAgICAgIC8vIFZhbGlkYXRpb24gUGFyYW1ldGVyc1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgICBpZiAoZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IG51bGwgJiYgZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBlcnJvckl0ZW0ucGFyYW1ldGVycy5mb3JFYWNoKCh2LCBrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2tdID0gdjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmFtZXRlcnNbJ0ZJRUxEJ10gPSBlcnJvckl0ZW0uZmllbGROYW1lO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKGVycm9ySXRlbS5lcnJvck1lc3NhZ2VLZXksIHBhcmFtZXRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdCBFdmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gcmVjZWl2ZSBmb3JtIHZpYSBmb3JtY29udHJvbG5hbWUgb3IgZm9ybWNvbnRyb2wgaW5zdGFuY2VcclxuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmluamVjdG9yLmdldChGb3JtR3JvdXBEaXJlY3RpdmUsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm0uZ2V0Q29udHJvbChmb3JtQ29udHJvbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLlVwZGF0ZUxhYmVsVG9Db250cm9sKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBsYWJlbCBzaXplcyBmcm9tIGZvcm1sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICAgICAgdGhpcy5zZXRMYWJlbFNpemVzKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBjb21wb25lbnQgaGVpZ3RoIGZyb20gZnJvbWxheW91dCBkaXJlY3RpdmVcclxuICAgICAgICB0aGlzLnNldENvbXBvbmVudEhlaWdodCgpO1xyXG5cclxuICAgICAgICAvLyBzZXQgYWRhcHRpdmUgbGFiZWwgcHJvcGVydHkgZnJvbSBmb3JtbGF5b3V0IGRpcmVjdGl2ZVxyXG4gICAgICAgIHRoaXMuc2V0SXNBZGFwdGl2ZUxhYmVsKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBtZXRob2QgdG8gZGlzcGxheSBoZWxwdGV4dFxyXG4gICAgICAgIHRoaXMuc2V0SGVscFRleHRNb2RlKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBTcGxpdE1vZGUgZm9yIExhYmVsc1xyXG4gICAgICAgIHRoaXMuc2V0TGFiZWxTcGxpdE1vZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5PbkNsYXNzSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgYm9vbGVhbiB0b3VjaGVkID0gdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Ub3VjaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90b3VjaGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlLCBkYW1pdCBhbmRlcmUgQ29udHJvbHMgw6RuZGVydW5nZW4gaW0gQ29udHJvbCBtaXRiZWtvbW1lbiBrw7ZubmVuXHJcbiAgICAgKiBadXIgw4RuZGVydW5nc2luZm8gZGllIE1ldGhvZGUgcHJvcGFnYXRlQ2hhbmdlIGF1ZnJ1ZmVuLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSAob2JqKSA9PiBmbihvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSwgZGFtaXQgYW5kZXJlIENvbnRyb2xzIMOkbmRlcnVuZ2VuIG1pdGJla29tbWVuLCB3ZW5uIGRhcyBDb250cm9sIGFrdGl2aWVydCAoRm9jdXMpIHdpcmQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaCA9IChvYmopID0+IGZuKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHJlZ2lzdHJpZXJ0IMOEbmRlcnVuZ2VuIGJlaSBkZXIgVmFsaWRpZXJ1bmdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0enQgZGFzIENvbnRyb2wgYXVmIERpc2FibGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaXNhYmxlZEZvcm0gPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBkaWUgZGVuIFdlcnQgZGVzIElucHV0cyBzZXR6dFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmFsdWUodjogVkFMVUUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBNZXRob2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy52YWxpZGF0ZURhdGEoYyk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWJzdHJha3RlIFZhbGlkYXRvciBNZXRob2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHp1bSBzY2hyZWliZW4gdm9uIFdlcnRlbiBhdXMgZGVtIE1vZGVsIGluIGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBWQUxVRSkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCBjYW4gT3ZlcndyaXRlbiBpbiBQYXJlbnQgQ2xhc3Nlc1xyXG4gICAgICogQHBhcmFtIHZhbHVlIFdlcnQgd2VsY2hlciBpbiBkZW4ga29ycmVrdGVuIFR5cCBrb252ZXJ0aWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICogQHJldHVybnMgV2VydCBpbSBrb3JyZWt0ZW4gVHlwXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBDb252ZXJ0SW5wdXRWYWx1ZSh2YWx1ZTogVkFMVUUpOiBWQUxVRSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgRGVjaW1hbCBTeW1ib2xcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIEdldERlY2ltYWxTeW1ib2woKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJy4nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIFNldCBQcm9wZXJ0aWVzIGF0IENsYXNzIEluaXRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIE9uQ2xhc3NJbml0KCk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFrdHVhbGlzaWVydCBkZW4gTmdNb2RlbCBXZXJ0IHVuZCBkaWUgR8O8bHRpZ2tlaXQgZGVzIFZhbGlkYXRvcnMgZGVzIENvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBVcGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIHByaXZhdGUgVXBkYXRlTGFiZWxUb0NvbnRyb2woKTogdm9pZCB7XHJcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSUFic3RyYWN0Q29udHJvbExhYmVsRXh0ZW5zaW9uKS5jb250cm9sbGFiZWwgPSB0aGlzLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBjb21wb25lbnQgaGVpZ2h0IGZyb20gcHJvcGVydHkgb3IgcGFyZW50IGxheW91dCBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0Q29tcG9uZW50SGVpZ2h0KCkge1xyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIHNtYWxsXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5jb21wb25lbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50SGVpZ2h0ID0gdGhpcy5mb3JtbGF5b3V0LmNvbXBvbmVudEhlaWdodDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50SGVpZ2h0ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5Db21wb25lbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgbW9kZSBmb3IgaGVscHRleHQuIENhbiBiZSB0b29sdGlwIG9yIHRleHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRIZWxwVGV4dE1vZGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhlbHB0ZXh0bW9kZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5oZWxwdGV4dG1vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVscHRleHRtb2RlID0gdGhpcy5mb3JtbGF5b3V0LmhlbHB0ZXh0bW9kZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVscHRleHRtb2RlID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5IZWxwdGV4dE1vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgYWRhcHRpdmUgbGFiZWwgcHJvcGVydHkgZnJvbSBwYXJlbnQgbGF5b3V0IGNvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRJc0FkYXB0aXZlTGFiZWwoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQWRhcHRpdmVMYWJlbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5pc0FkYXB0aXZlTGFiZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkYXB0aXZlTGFiZWwgPSB0aGlzLmZvcm1sYXlvdXQuaXNBZGFwdGl2ZUxhYmVsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkYXB0aXZlTGFiZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBsYWJlbCBzaXplcyBmcm9tIHByb3BlcnR5IG9yIHBhcmVudCBsYXlvdXQgY29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldExhYmVsU2l6ZXMoKSB7XHJcbiAgICAgICAgLy8gc2V0IHNpemUgZXh0cmEgc21hbGxcclxuICAgICAgICBpZiAoIXRoaXMubGFiZWxTaXplWHMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHMgPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplWHM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVhzID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVYcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IHNpemUgc21hbGxcclxuICAgICAgICBpZiAoIXRoaXMubGFiZWxTaXplU20pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplU20pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplU20gPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplU207XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVNtID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVTbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IHNpemUgbWVkaXVtXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZU1kKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZU1kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZU1kID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZU1kO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVNZCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplTWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZUxnID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZUxnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVMZyA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplTGc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVhsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZVhsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVhsID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVhsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVYbCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplWGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIGV4dHJhIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVh4bCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVYeGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHhsID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVh4bDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHhsID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVYeGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRMYWJlbFNwbGl0TW9kZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LnNwbGl0bGFiZWxhbmRoZWxwdGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdGxhYmVsYW5kaGVscHRleHQgPSB0aGlzLmZvcm1sYXlvdXQuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdGxhYmVsYW5kaGVscHRleHQgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLlNwbGl0TGFiZWxBbmRIZWxwdGV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3Zfc3lxeWd3OGptIiwiYWN0dWFsQ292ZXJhZ2UiLCJDb250cm9sSGVpZ2h0IiwiU0FDSUNPTl9TRVJWSUNFIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdEljb25TZXJ2aWNlIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDQ09ORklHVVJBVElPTl9TRVJWSUNFIiwiU2FjRGVmYXVsdENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsImNvbnZlcnRUb0Jvb2xlYW4iLCJjcmVhdGVHdWlkIiwiRGlyZWN0aXZlIiwiSG9zdCIsIklucHV0IiwiRm9ybUNvbnRyb2xOYW1lIiwiRm9ybUdyb3VwRGlyZWN0aXZlIiwiTmdDb250cm9sIiwiT2JzZXJ2YWJsZSIsIlNhY0Jhc2VNb2RlbENvbnRyb2wiLCJjb25zdHJ1Y3RvciIsImZvcm1sYXlvdXQiLCJpbmplY3RvciIsImYiLCJzIiwiX2lubGluZWVycm9yZW5hYmxlZCIsIl9sYWJlbCIsIl9kaXJ0eSIsIl9kaXNhYmxlZEZvcm0iLCJfdG91Y2hlZCIsIl92YWx1ZSIsImNvbXBvbmVudEhlaWdodCIsImRpc2FibGVkIiwiZGlzYWJsZWxhYmVsIiwiaGVscHRleHQiLCJpbmxpbmVFcnJvciIsImlzQWRhcHRpdmVMYWJlbCIsImxhYmVsU2l6ZUxnIiwibGFiZWxTaXplTWQiLCJsYWJlbFNpemVTbSIsImxhYmVsU2l6ZVhsIiwibGFiZWxTaXplWHMiLCJsYWJlbFNpemVYeGwiLCJuYW1lIiwicHJvcGFnYXRlQ2hhbmdlIiwicHJvcGFnYXRlVG91Y2giLCJzcGxpdGxhYmVsYW5kaGVscHRleHQiLCJ2YWxpZGF0aW9uS2V5U2VydmljZSIsImdldCIsImxuZ1Jlc291cmNlU2VydmljZSIsImNvbmZpZ3VyYXRpb25TZXJ2aWNlIiwiaWNvblNlcnZpY2UiLCJIZWxwdGV4dFRvb2x0aXBJY29uIiwiR2VuZXJpY0hlbHB0ZXh0SWNvbiIsImRpcnR5IiwiYiIsIm5nQ29udHJvbCIsInVuZGVmaW5lZCIsImlubGluZWVycm9yZW5hYmxlZCIsInZhbHVlIiwiaW52YWxpZCIsImlzZGlzYWJsZWQiLCJpc2lubGluZWVycm9yZW5hYmxlZCIsIklzSW5saW5lRXJyb3JFbmFibGVkIiwiSW5saW5lRXJyb3JFbmFibGVkIiwibGFiZWwiLCJ2IiwiVXBkYXRlTGFiZWxUb0NvbnRyb2wiLCJsYWJlbFNpemVzIiwidG91Y2hlZCIsIkNvbnZlcnRJbnB1dFZhbHVlIiwiR2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JzIiwib2JzZXJ2ZXIiLCJuZXh0IiwiY29tcGxldGUiLCJsZW5ndGgiLCJrZXlzIiwiT2JqZWN0IiwiZXJyb3JJdGVtIiwicGFyYW1ldGVycyIsImZvckVhY2giLCJrIiwiZmllbGROYW1lIiwiR2V0U3RyaW5nIiwiZXJyb3JNZXNzYWdlS2V5IiwibmdPbkluaXQiLCJmb3JtQ29udHJvbCIsImZvcm0iLCJnZXRDb250cm9sIiwiY29udHJvbCIsInNldExhYmVsU2l6ZXMiLCJzZXRDb21wb25lbnRIZWlnaHQiLCJzZXRJc0FkYXB0aXZlTGFiZWwiLCJzZXRIZWxwVGV4dE1vZGUiLCJzZXRMYWJlbFNwbGl0TW9kZSIsIk9uQ2xhc3NJbml0Iiwib25Ub3VjaCIsInJlZ2lzdGVyT25DaGFuZ2UiLCJmbiIsIm9iaiIsInJlZ2lzdGVyT25Ub3VjaGVkIiwicmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSIsIl9vbkNoYW5nZSIsInNldERpc2FibGVkU3RhdGUiLCJpc0Rpc2FibGVkIiwic2V0VmFsdWUiLCJ2YWxpZGF0ZSIsImMiLCJlcnJvciIsInZhbGlkYXRlRGF0YSIsIndyaXRlVmFsdWUiLCJHZXREZWNpbWFsU3ltYm9sIiwiVXBkYXRlVmFsdWVBbmRWYWxpZGl0eSIsInVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkiLCJvbmx5U2VsZiIsImNvbnRyb2xsYWJlbCIsIkNvbXBvbmVudEhlaWdodCIsImhlbHB0ZXh0bW9kZSIsIkhlbHB0ZXh0TW9kZSIsIkxhYmVsU2l6ZVhzIiwiTGFiZWxTaXplU20iLCJMYWJlbFNpemVNZCIsIkxhYmVsU2l6ZUxnIiwiTGFiZWxTaXplWGwiLCJMYWJlbFNpemVYeGwiLCJTcGxpdExhYmVsQW5kSGVscHRleHQiLCJkZXBzIiwidG9rZW4iLCJpMSIsIlNhY0Zvcm1MYXlvdXRDb21tb24iLCJob3N0IiwiaTAiLCJJbmplY3RvciIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29tbW9uL2Jhc2Vtb2RlbGNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgQ29udHJvbEhlaWdodCB9IGZyb20gJy4uL2VudW1zL0NvbnRyb2xIZWlnaHQnO1xyXG5pbXBvcnQgeyBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNDb25maWd1cmF0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNJY29uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0ljb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY0xhYmVsU2l6ZXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMYWJlbFNpemVzJztcclxuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVmFsaWRhdGlvbktleVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQWJzdHJhY3RDb250cm9sTGFiZWxFeHRlbnNpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lhYnN0cmFjdGNvbnRyb2xsYWJlbCc7XHJcbmltcG9ydCB7XHJcbiAgICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgICBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsXHJcbiAgICBTYWNEZWZhdWx0SWNvblNlcnZpY2UsXHJcbiAgICBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTQUNDT05GSUdVUkFUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBjcmVhdGVHdWlkIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2d1aWQnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JJdGVtIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEFic3RyYWN0Q29udHJvbCxcclxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gICAgRm9ybUNvbnRyb2xOYW1lLFxyXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgTmdDb250cm9sLFxyXG4gICAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcclxuICAgIFZhbGlkYXRvcixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBLbGFzc2UgZsO8ciBTYWNCYXNlTW9kZWxDb250cm9sLiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pbmxpbmVlcnJvcmVuYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmb3IgbG9hZGluZyBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgY29udHJvbHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IGRpcnR5OyBkZWZhdWx0IFdlcnQgLSBmYWxzZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2RpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYWNNb2RlbCBGb3JtIGlzdCBkaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfb25DaGFuZ2U6ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IHRvdWNoZWQ7IGRlZmF1bHQgV2VydCAtIGZhbHNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfdG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuZSBWYXJpYWJsZSwgZGllIGRlbiBXZXJ0IGRlcyBDb250cm9scyBow6RsdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBWQUxVRSA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIGxheW91dCBpbnN0YW5jZSBpZiBleGlzdHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24gPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIG5nQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbmdDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sSGVpZ2h0IGVudW0gZm9yIHVzZSBpbiBIVE1MIG1hcmt1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgQ29udHJvbEhlaWdodDogdHlwZW9mIENvbnRyb2xIZWlnaHQgPSBDb250cm9sSGVpZ2h0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB0aGUgc3RhbmRhcmQgaGVpZ2h0IG9mIHRoZSBjb21wb25lbnRzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29tcG9uZW50SGVpZ2h0OiBDb250cm9sSGVpZ2h0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWFrdGl2aWVydCBkYXMgSW5wdXQgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlYWt0aXZpZXJ0IGRhcyBMYWJlbCBpbSBUZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWxhYmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRvIHN1cHBvcnQgdGhlIHVzZXIgZHVyaW5nIGlucHV0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscHRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZSBmb3IgZGlzcGxheSBoZWxwdGV4dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlbHB0ZXh0bW9kZTogJ3Rvb2x0aXAnIHwgJ3RleHQnIHwgbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmluZXMgdGhhdCBlcnJvciBtZXNzYWdlcyBhcmUgZGlzcGxheWVkIHVuZGVyIHRoZSBjb250cm9sc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5saW5lRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmaW5lcyB0aGF0IHRoZSBsYWJlbHMgYXJlIGRpc3BsYXllZCBhcyBhZGFwdGl2ZSBsYWJlbHNcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzQWRhcHRpdmVMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlIHNpemUgZm9yIGxhcmdlIGRldmljZXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbFNpemVMZzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmVsIHNpemUgZm9yIG1lZGl1bSBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplTWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBzbWFsbCBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplU206IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBleHRyYSBsYXJnZSBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplWGw6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBjb2x1bW4gc2l6ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsU2l6ZVhzOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmF1bHQgbGFiZWwgc2l6ZSBmb3IgZXh0cmEgZXh0cmEgbGFyZ2UgZGV2aWNlc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsU2l6ZVh4bDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIGRlcyBDb250cm9sc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nID0gY3JlYXRlR3VpZCgpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGVlcmUgSW1wbGVtZW50YXRpb24gdm9uIFwicHJvcGFnYXRlQ2hhbmdlXCIuIE11c3MgZ2VtYWNodCB3ZXJkZW4sIGRhbWl0IGtlaW4gRmVobGVyIGVudHN0ZWh0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGVlcmUgSW1wbGVtZW50YXRpb24gdm9uIFwicHJvcGFnYXRlVG91Y2hcIi4gTXVzcyBnZW1hY2h0IHdlcmRlbiwgZGFtaXQga2VpbiBGZWhsZXIgZW50c3RlaHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb3BhZ2F0ZVRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGFjaCBsYWJlbCB0ZXh0IGFuZCB0b29sdGlwIGZyb20gZWFjaCBvdGhlciBpbiBMYWJlbCBzbyB0aGF0IGxhYmVsIGFuZCB0b29sdGlwIGNhbiBiZSBhbGlnbmVkIGRpZmZlcmVudGx5LiBUaGlzIGlzIGluIEJvb3RzdHJhcCAzIG5vdCBzdXBwb3J0ZWQhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3BsaXRsYWJlbGFuZGhlbHB0ZXh0OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNlIHRvIHJlY2VpdmUgc3RhbmRhcmQgdmFsaWRhdGlvbiBtZXNzYWdlIGtleXMgYW5kIHRleHRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuZm9ybWxheW91dCA9IGZvcm1sYXlvdXQ7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XHJcbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ0NPTkZJR1VSQVRJT05fU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRDb25maWd1cmF0aW9uU2VydmljZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5pY29uU2VydmljZSA9IGluamVjdG9yLmdldChTQUNJQ09OX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgSWNvbiBmb3IgSGVscHRleHQgVG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEhlbHB0ZXh0VG9vbHRpcEljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5HZW5lcmljSGVscHRleHRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgQm9vbGVhbiBXZXJ0IGbDvHIgZGlydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRoaXMubmdDb250cm9sLmRpcnR5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBlcnJvciBtZXNzYWdlcyBpbmxpbmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpbmxpbmVlcnJvcmVuYWJsZWQoKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBa3RpdmllcnQgb2RlciBEZWFrdGl2aWVydCBkaWUgSW5saW5lIEVycm9ycyBmw7xyIGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGlubGluZWVycm9yZW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZXJnaWJ0IGJvb2xlYW4gV2VydCB3ZW5uIEZvcm0gaW52YWxpZCBvZGVyIG5pY2h0IGludmFsaWQgaXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5nQ29udHJvbCAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IG9iIGRhcyBDb250cm9sIGRpc2FibGVkIGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRm9ybSB8fCB0aGlzLmRpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBpbmxpbmUgZXJyb3IgbWVzc2FnZXMgYXJlIGFjdGl2ZSBmb3IgdGhpcyBjb250cm9sLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzaW5saW5lZXJyb3JlbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQgIT09IG51bGwgJiYgdGhpcy5mb3JtbGF5b3V0LklzSW5saW5lRXJyb3JFbmFibGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1sYXlvdXQ/LklzSW5saW5lRXJyb3JFbmFibGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuSW5saW5lRXJyb3JFbmFibGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLklubGluZUVycm9yRW5hYmxlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IGRlbiBMYWJlbCBUZXh0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGVuIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHNldCBsYWJlbCh2OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9sYWJlbCA9IHY7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVMYWJlbFRvQ29udHJvbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhbGwgbGFiZWwgc2l6ZXMuIFRoZXNlIHZhbHVlcyBjYW4gdGhlbiBiZSB0cmFuc2ZlcnJlZCB0byBjb3JyZXNwb25kaW5nIENTUyBjbGFzc2VzIHVzaW5nIGEgcGlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGxhYmVsU2l6ZXMoKTogSVNhY0xhYmVsU2l6ZXMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZVNtOiB0aGlzLmxhYmVsU2l6ZVNtLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVNZDogdGhpcy5sYWJlbFNpemVNZCxcclxuICAgICAgICAgICAgbGFiZWxTaXplWHM6IHRoaXMubGFiZWxTaXplWHMsXHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZVhsOiB0aGlzLmxhYmVsU2l6ZVhsLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVYeGw6IHRoaXMubGFiZWxTaXplWHhsLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVMZzogdGhpcy5sYWJlbFNpemVMZyxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgQm9vbGVhbiBXZXJ0IGbDvHIgdG91Y2hlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsICYmIHRoaXMubmdDb250cm9sICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG91Y2hlZCA9IHRoaXMubmdDb250cm9sLnRvdWNoZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBNZXRob2RlIGbDvHIgTmdNb2RlbCBCaW5kaW5nIGluIEh0bWwgTWFya3VwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogVkFMVUUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBNZXRob2RlIGbDvHIgTmdNb2RlbCBCaW5kaW5nIGluIEh0bWwgTWFya3VwXHJcbiAgICAgKiBJbnB1dCB3aXJkIGJlbsO2dGlndCwgZGFtaXQgZGVyIFdlcnQgYXVjaCDDvGJlciBkYXMgTWFya3VwIGdlc2V0enQgd2VyZGVuIGthbm4uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHY6IFZBTFVFKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLkNvbnZlcnRJbnB1dFZhbHVlKHYpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgRXJyb3IgYW5oYW5kIHZvbiBnZWdlYmVuZW4gS3JpdGVyaWVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBHZXRFcnJvck1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuZXJyb3JzID09PSB1bmRlZmluZWQgfHwgdGhpcy5uZ0NvbnRyb2wuZXJyb3JzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IHRoaXMubmdDb250cm9sLmVycm9ycztcclxuXHJcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xyXG5cclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoJycpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBlcnJvckl0ZW06IFZhbGlkYXRpb25FcnJvckl0ZW0gPSBlcnJvcnNba2V5c1swXV07XHJcblxyXG4gICAgICAgIC8vIFZhbGlkYXRpb24gUGFyYW1ldGVyc1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgICBpZiAoZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IG51bGwgJiYgZXJyb3JJdGVtLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBlcnJvckl0ZW0ucGFyYW1ldGVycy5mb3JFYWNoKCh2LCBrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2tdID0gdjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmFtZXRlcnNbJ0ZJRUxEJ10gPSBlcnJvckl0ZW0uZmllbGROYW1lO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKGVycm9ySXRlbS5lcnJvck1lc3NhZ2VLZXksIHBhcmFtZXRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdCBFdmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gcmVjZWl2ZSBmb3JtIHZpYSBmb3JtY29udHJvbG5hbWUgb3IgZm9ybWNvbnRyb2wgaW5zdGFuY2VcclxuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmluamVjdG9yLmdldChGb3JtR3JvdXBEaXJlY3RpdmUsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm0uZ2V0Q29udHJvbChmb3JtQ29udHJvbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLlVwZGF0ZUxhYmVsVG9Db250cm9sKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBsYWJlbCBzaXplcyBmcm9tIGZvcm1sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICAgICAgdGhpcy5zZXRMYWJlbFNpemVzKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBjb21wb25lbnQgaGVpZ3RoIGZyb20gZnJvbWxheW91dCBkaXJlY3RpdmVcclxuICAgICAgICB0aGlzLnNldENvbXBvbmVudEhlaWdodCgpO1xyXG5cclxuICAgICAgICAvLyBzZXQgYWRhcHRpdmUgbGFiZWwgcHJvcGVydHkgZnJvbSBmb3JtbGF5b3V0IGRpcmVjdGl2ZVxyXG4gICAgICAgIHRoaXMuc2V0SXNBZGFwdGl2ZUxhYmVsKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBtZXRob2QgdG8gZGlzcGxheSBoZWxwdGV4dFxyXG4gICAgICAgIHRoaXMuc2V0SGVscFRleHRNb2RlKCk7XHJcblxyXG4gICAgICAgIC8vIHNldCBTcGxpdE1vZGUgZm9yIExhYmVsc1xyXG4gICAgICAgIHRoaXMuc2V0TGFiZWxTcGxpdE1vZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5PbkNsYXNzSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgYm9vbGVhbiB0b3VjaGVkID0gdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Ub3VjaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90b3VjaGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlLCBkYW1pdCBhbmRlcmUgQ29udHJvbHMgw6RuZGVydW5nZW4gaW0gQ29udHJvbCBtaXRiZWtvbW1lbiBrw7ZubmVuXHJcbiAgICAgKiBadXIgw4RuZGVydW5nc2luZm8gZGllIE1ldGhvZGUgcHJvcGFnYXRlQ2hhbmdlIGF1ZnJ1ZmVuLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSAob2JqKSA9PiBmbihvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSwgZGFtaXQgYW5kZXJlIENvbnRyb2xzIMOkbmRlcnVuZ2VuIG1pdGJla29tbWVuLCB3ZW5uIGRhcyBDb250cm9sIGFrdGl2aWVydCAoRm9jdXMpIHdpcmQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaCA9IChvYmopID0+IGZuKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHJlZ2lzdHJpZXJ0IMOEbmRlcnVuZ2VuIGJlaSBkZXIgVmFsaWRpZXJ1bmdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0enQgZGFzIENvbnRyb2wgYXVmIERpc2FibGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaXNhYmxlZEZvcm0gPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBkaWUgZGVuIFdlcnQgZGVzIElucHV0cyBzZXR6dFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmFsdWUodjogVkFMVUUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBNZXRob2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy52YWxpZGF0ZURhdGEoYyk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWJzdHJha3RlIFZhbGlkYXRvciBNZXRob2RlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHp1bSBzY2hyZWliZW4gdm9uIFdlcnRlbiBhdXMgZGVtIE1vZGVsIGluIGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBWQUxVRSkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCBjYW4gT3ZlcndyaXRlbiBpbiBQYXJlbnQgQ2xhc3Nlc1xyXG4gICAgICogQHBhcmFtIHZhbHVlIFdlcnQgd2VsY2hlciBpbiBkZW4ga29ycmVrdGVuIFR5cCBrb252ZXJ0aWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICogQHJldHVybnMgV2VydCBpbSBrb3JyZWt0ZW4gVHlwXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBDb252ZXJ0SW5wdXRWYWx1ZSh2YWx1ZTogVkFMVUUpOiBWQUxVRSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgRGVjaW1hbCBTeW1ib2xcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIEdldERlY2ltYWxTeW1ib2woKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJy4nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIFNldCBQcm9wZXJ0aWVzIGF0IENsYXNzIEluaXRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIE9uQ2xhc3NJbml0KCk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFrdHVhbGlzaWVydCBkZW4gTmdNb2RlbCBXZXJ0IHVuZCBkaWUgR8O8bHRpZ2tlaXQgZGVzIFZhbGlkYXRvcnMgZGVzIENvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBVcGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIHByaXZhdGUgVXBkYXRlTGFiZWxUb0NvbnRyb2woKTogdm9pZCB7XHJcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSUFic3RyYWN0Q29udHJvbExhYmVsRXh0ZW5zaW9uKS5jb250cm9sbGFiZWwgPSB0aGlzLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBjb21wb25lbnQgaGVpZ2h0IGZyb20gcHJvcGVydHkgb3IgcGFyZW50IGxheW91dCBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0Q29tcG9uZW50SGVpZ2h0KCkge1xyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIHNtYWxsXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5jb21wb25lbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50SGVpZ2h0ID0gdGhpcy5mb3JtbGF5b3V0LmNvbXBvbmVudEhlaWdodDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50SGVpZ2h0ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5Db21wb25lbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgbW9kZSBmb3IgaGVscHRleHQuIENhbiBiZSB0b29sdGlwIG9yIHRleHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRIZWxwVGV4dE1vZGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhlbHB0ZXh0bW9kZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5oZWxwdGV4dG1vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVscHRleHRtb2RlID0gdGhpcy5mb3JtbGF5b3V0LmhlbHB0ZXh0bW9kZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGVscHRleHRtb2RlID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5IZWxwdGV4dE1vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgYWRhcHRpdmUgbGFiZWwgcHJvcGVydHkgZnJvbSBwYXJlbnQgbGF5b3V0IGNvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRJc0FkYXB0aXZlTGFiZWwoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQWRhcHRpdmVMYWJlbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5pc0FkYXB0aXZlTGFiZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkYXB0aXZlTGFiZWwgPSB0aGlzLmZvcm1sYXlvdXQuaXNBZGFwdGl2ZUxhYmVsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkYXB0aXZlTGFiZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCBsYWJlbCBzaXplcyBmcm9tIHByb3BlcnR5IG9yIHBhcmVudCBsYXlvdXQgY29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldExhYmVsU2l6ZXMoKSB7XHJcbiAgICAgICAgLy8gc2V0IHNpemUgZXh0cmEgc21hbGxcclxuICAgICAgICBpZiAoIXRoaXMubGFiZWxTaXplWHMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHMgPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplWHM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVhzID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVYcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IHNpemUgc21hbGxcclxuICAgICAgICBpZiAoIXRoaXMubGFiZWxTaXplU20pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplU20pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplU20gPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplU207XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVNtID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVTbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IHNpemUgbWVkaXVtXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZU1kKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZU1kKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZU1kID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZU1kO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVNZCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplTWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZUxnID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZUxnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVMZyA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplTGc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVhsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZVhsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVhsID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVhsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVYbCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplWGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIGV4dHJhIGxhcmdlXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVh4bCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVYeGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHhsID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVh4bDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWHhsID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVYeGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRMYWJlbFNwbGl0TW9kZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LnNwbGl0bGFiZWxhbmRoZWxwdGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdGxhYmVsYW5kaGVscHRleHQgPSB0aGlzLmZvcm1sYXlvdXQuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdGxhYmVsYW5kaGVscHRleHQgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLlNwbGl0TGFiZWxBbmRIZWxwdGV4dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ims3d0RBMk1JO0FBQUFBLGFBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsYUFBQSxHQTFNSixPQUFTRSxhQUFhLEtBQVEsd0JBQXdCLENBT3RELE9BQ0lDLGVBQWUsQ0FDZkMsd0JBQXdCLENBQ3hCQyxxQkFBcUIsQ0FDckJDLDhCQUE4QixLQUMzQixhQUFhLENBQ3BCLE9BQVNDLHdCQUF3QixDQUFFQyw4QkFBOEIsS0FBUSx1Q0FBdUMsQ0FDaEgsT0FBU0MsdUJBQXVCLENBQUVDLDZCQUE2QixLQUFRLHNDQUFzQyxDQUM3RyxPQUFTQyxnQkFBZ0IsS0FBUSx5QkFBeUIsQ0FDMUQsT0FBU0MsVUFBVSxLQUFRLG1CQUFtQixDQUU5QyxPQUFTQyxTQUFTLENBQUVDLElBQUksQ0FBWUMsS0FBSyxLQUFnQixlQUFlLENBQ3hFLE9BR0lDLGVBQWUsQ0FDZkMsa0JBQWtCLENBQ2xCQyxTQUFTLEtBSU4sZ0JBQWdCLENBQ3ZCLE9BQVNDLFVBQVUsS0FBUSxNQUFNLEMsa0ZBRWpDOztHQUdBLEtBQ3NCLENBQUFDLG1CQUFtQixDQXVLckM7QUFFQTtBQUVBOzs7O09BS0FDLFlBQW9CQyxVQUErQixDQUFtQkMsUUFBa0IsRUFBQXZCLGFBQUEsR0FBQXdCLENBQUEsTUFBQXhCLGFBQUEsR0FBQXlCLENBQUEsTUFBbEIsS0FBQUYsUUFBUSxDQUFSQSxRQUFRLENBL0s5RTtBQUVBOztXQUFBdkIsYUFBQSxHQUFBeUIsQ0FBQSxNQUdRLEtBQUFDLG1CQUFtQixDQUFtQixJQUFJLENBRWxEOztXQUFBMUIsYUFBQSxHQUFBeUIsQ0FBQSxNQUdRLEtBQUFFLE1BQU0sQ0FBVyxFQUFFLENBTzNCOztX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