@simpleangularcontrols/sac-common 16.0.0-rc.13 → 16.0.0-rc.14

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 (145) hide show
  1. package/README.md +15 -15
  2. package/controls/upload/dropzonemultiple.d.ts +5 -5
  3. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  4. package/controls/upload/dropzonesingle.d.ts +18 -18
  5. package/controls/upload/dropzonesingle.d.ts.map +1 -1
  6. package/controls/upload/uploadmultiple.d.ts +1 -1
  7. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  8. package/controls/upload/uploadsingle.d.ts +1 -1
  9. package/controls/upload/uploadsingle.d.ts.map +1 -1
  10. package/esm2022/common/basedatetimecontrol.mjs +42 -42
  11. package/esm2022/common/baseinputcontrol.mjs +14 -14
  12. package/esm2022/common/baselistcontrol.mjs +11 -11
  13. package/esm2022/common/basemodelcontrol.mjs +75 -75
  14. package/esm2022/common/baseselectcontrol.mjs +6 -6
  15. package/esm2022/common/baseuploadcontrol.mjs +58 -58
  16. package/esm2022/components/browser/browser.mjs +54 -54
  17. package/esm2022/components/browser/models/browserfile.mjs +3 -3
  18. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +4 -4
  19. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +4 -4
  20. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -3
  21. package/esm2022/components/browser/models/browserfilesaverequest.mjs +4 -4
  22. package/esm2022/components/browser/models/browsernode.mjs +3 -3
  23. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +4 -4
  24. package/esm2022/components/browser/models/browsernodenewrequest.mjs +4 -4
  25. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +4 -4
  26. package/esm2022/components/browser/models/browsernoderequest.mjs +4 -4
  27. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -3
  28. package/esm2022/controls/buttons/button.mjs +19 -19
  29. package/esm2022/controls/checkbox/checkbox.mjs +8 -8
  30. package/esm2022/controls/checkbox/radiobutton.mjs +22 -22
  31. package/esm2022/controls/checkbox/radiobuttons.mjs +15 -15
  32. package/esm2022/controls/confirm/confirm.button.mjs +6 -6
  33. package/esm2022/controls/confirm/confirm.mjs +13 -13
  34. package/esm2022/controls/confirm/confirm.service.mjs +20 -20
  35. package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -3
  36. package/esm2022/controls/contextmenu/contextmenu.mjs +20 -20
  37. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +4 -4
  38. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +4 -4
  39. package/esm2022/controls/contextmenu/contextmenuitem.mjs +5 -5
  40. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -15
  41. package/esm2022/controls/datetime/date.mjs +23 -23
  42. package/esm2022/controls/datetime/dateselector.mjs +51 -51
  43. package/esm2022/controls/datetime/datetime.mjs +24 -24
  44. package/esm2022/controls/datetime/time.mjs +23 -23
  45. package/esm2022/controls/dialog/dialog.mjs +22 -22
  46. package/esm2022/controls/form/form.mjs +13 -13
  47. package/esm2022/controls/grid/grid.mjs +21 -21
  48. package/esm2022/controls/grid/gridbutton.mjs +8 -8
  49. package/esm2022/controls/grid/gridcolumn.mjs +8 -8
  50. package/esm2022/controls/grid/gridcolumnaction.mjs +4 -4
  51. package/esm2022/controls/grid/gridcolumnbase.mjs +16 -16
  52. package/esm2022/controls/grid/gridimage.mjs +4 -4
  53. package/esm2022/controls/grid/model.mjs +13 -13
  54. package/esm2022/controls/grid/paging.mjs +34 -34
  55. package/esm2022/controls/input/input.mjs +11 -11
  56. package/esm2022/controls/input/inputarea.mjs +10 -10
  57. package/esm2022/controls/input/inputcurrency.mjs +6 -6
  58. package/esm2022/controls/input/inputdecimal.mjs +20 -20
  59. package/esm2022/controls/input/inputemail.mjs +7 -7
  60. package/esm2022/controls/input/inputinteger.mjs +19 -19
  61. package/esm2022/controls/input/inputpassword.mjs +8 -8
  62. package/esm2022/controls/input/inputsearch.mjs +11 -11
  63. package/esm2022/controls/layout/formlayout.mjs +16 -16
  64. package/esm2022/controls/list/buildvaluestring.mjs +7 -7
  65. package/esm2022/controls/list/dropdown.mjs +25 -25
  66. package/esm2022/controls/list/dropdownoptions.mjs +10 -10
  67. package/esm2022/controls/list/listbox.mjs +21 -21
  68. package/esm2022/controls/multilanguage/multilanguageinput.mjs +26 -26
  69. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +27 -27
  70. package/esm2022/controls/static/formcontainer.mjs +11 -11
  71. package/esm2022/controls/static/staticlabel.mjs +7 -7
  72. package/esm2022/controls/tabs/tab.mjs +11 -11
  73. package/esm2022/controls/tabs/tabitem.mjs +6 -6
  74. package/esm2022/controls/tinymce/tinymce.mjs +31 -31
  75. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +4 -4
  76. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  77. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -3
  78. package/esm2022/controls/tooltip/tooltip.mjs +34 -34
  79. package/esm2022/controls/treeview/treeview.mjs +44 -44
  80. package/esm2022/controls/upload/dropzonemultiple.mjs +21 -21
  81. package/esm2022/controls/upload/dropzonesingle.mjs +23 -20
  82. package/esm2022/controls/upload/uploadmultiple.mjs +16 -16
  83. package/esm2022/controls/upload/uploadsingle.mjs +11 -8
  84. package/esm2022/controls/validation/validationsummary.mjs +14 -14
  85. package/esm2022/controls/wizard/wizard.mjs +17 -17
  86. package/esm2022/controls/wizard/wizarditem.mjs +5 -5
  87. package/esm2022/enums/ButtonRoleType.mjs +3 -3
  88. package/esm2022/enums/ControlHeight.mjs +6 -6
  89. package/esm2022/enums/IconType.mjs +4 -4
  90. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -3
  91. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -3
  92. package/esm2022/interfaces/ISacIconService.mjs +3 -3
  93. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -3
  94. package/esm2022/interfaces/ISacLanguageService.mjs +3 -3
  95. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -3
  96. package/esm2022/interfaces/ISacUploadEventCompleteState.mjs +3 -3
  97. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -3
  98. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -3
  99. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -3
  100. package/esm2022/interfaces/idatetimecontrol.mjs +3 -3
  101. package/esm2022/interfaces/iuploadcontrol.mjs +3 -3
  102. package/esm2022/interfaces/treeviewaction.interface.mjs +3 -3
  103. package/esm2022/models/languagemodel.mjs +5 -5
  104. package/esm2022/public_api.mjs +4 -4
  105. package/esm2022/services/index.mjs +3 -3
  106. package/esm2022/services/sac-configuration.service.mjs +18 -18
  107. package/esm2022/services/sac-filebrowser.service.mjs +14 -14
  108. package/esm2022/services/sac-icon.service.mjs +32 -32
  109. package/esm2022/services/sac-language.service.mjs +6 -6
  110. package/esm2022/services/sac-localisation.service.mjs +19 -19
  111. package/esm2022/services/sac-validationkey.service.mjs +6 -6
  112. package/esm2022/simpleangularcontrols-sac-common.mjs +3 -3
  113. package/esm2022/utilities/convertion.mjs +6 -6
  114. package/esm2022/utilities/datatypes.mjs +4 -4
  115. package/esm2022/utilities/enums.mjs +10 -10
  116. package/esm2022/utilities/guid.mjs +6 -6
  117. package/esm2022/utilities/interpolation.mjs +6 -6
  118. package/esm2022/utilities/popuphelper.mjs +34 -34
  119. package/esm2022/utilities/positioning.mjs +20 -20
  120. package/esm2022/validation/email.validator.mjs +3 -3
  121. package/esm2022/validation/equals.validator.mjs +3 -3
  122. package/esm2022/validation/index.mjs +3 -3
  123. package/esm2022/validation/invaliddate.validator.mjs +3 -3
  124. package/esm2022/validation/isDateValid.mjs +8 -8
  125. package/esm2022/validation/maxdate.validator.mjs +4 -4
  126. package/esm2022/validation/maxtime.validator.mjs +4 -4
  127. package/esm2022/validation/maxvalue.validator.mjs +3 -3
  128. package/esm2022/validation/mindate.validator.mjs +4 -4
  129. package/esm2022/validation/minfiles.validator.mjs +4 -4
  130. package/esm2022/validation/mintextlength.validator.mjs +5 -5
  131. package/esm2022/validation/mintime.validator.mjs +4 -4
  132. package/esm2022/validation/minvalue.validator.mjs +3 -3
  133. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -3
  134. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -3
  135. package/esm2022/validation/notequals.validator.mjs +3 -3
  136. package/esm2022/validation/pattern.validator.mjs +3 -3
  137. package/esm2022/validation/required.validator.mjs +3 -3
  138. package/esm2022/validation/validation.mjs +22 -22
  139. package/esm2022/validation/validationerrorcreator.mjs +3 -3
  140. package/esm2022/validation/validationerroritem.mjs +5 -5
  141. package/fesm2022/simpleangularcontrols-sac-common.mjs +1152 -1146
  142. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  143. package/package.json +1 -1
  144. package/simpleangularcontrols-sac-common-16.0.0-rc.14.tgz +0 -0
  145. package/simpleangularcontrols-sac-common-16.0.0-rc.13.tgz +0 -0
@@ -1,5 +1,5 @@
1
- function cov_vnuuxsm2m(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\tooltip\\tooltip.mjs";var hash="def2c968776e4e72632bc6ae769533cb4d3b3745";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\tooltip\\tooltip.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:27}},"1":{start:{line:26,column:8},end:{line:26,column:23}},"2":{start:{line:31,column:8},end:{line:31,column:45}},"3":{start:{line:35,column:8},end:{line:35,column:39}},"4":{start:{line:39,column:8},end:{line:39,column:45}},"5":{start:{line:43,column:8},end:{line:43,column:25}},"6":{start:{line:47,column:8},end:{line:47,column:47}},"7":{start:{line:51,column:8},end:{line:51,column:24}},"8":{start:{line:55,column:8},end:{line:55,column:33}},"9":{start:{line:59,column:8},end:{line:59,column:32}},"10":{start:{line:65,column:8},end:{line:65,column:37}},"11":{start:{line:69,column:8},end:{line:78,column:10}},"12":{start:{line:71,column:12},end:{line:73,column:13}},"13":{start:{line:72,column:16},end:{line:72,column:23}},"14":{start:{line:74,column:12},end:{line:77,column:15}},"15":{start:{line:75,column:16},end:{line:75,column:39}},"16":{start:{line:76,column:16},end:{line:76,column:38}},"17":{start:{line:86,column:8},end:{line:86,column:32}},"18":{start:{line:92,column:8},end:{line:92,column:51}},"19":{start:{line:98,column:8},end:{line:100,column:9}},"20":{start:{line:99,column:12},end:{line:99,column:61}},"21":{start:{line:101,column:8},end:{line:101,column:40}},"22":{start:{line:102,column:8},end:{line:102,column:31}},"23":{start:{line:103,column:8},end:{line:103,column:35}},"24":{start:{line:106,column:8},end:{line:106,column:37}},"25":{start:{line:114,column:8},end:{line:114,column:159}},"26":{start:{line:120,column:8},end:{line:120,column:39}},"27":{start:{line:121,column:8},end:{line:121,column:45}},"28":{start:{line:127,column:8},end:{line:127,column:38}},"29":{start:{line:133,column:8},end:{line:133,column:38}},"30":{start:{line:134,column:8},end:{line:134,column:35}},"31":{start:{line:135,column:8},end:{line:139,column:11}},"32":{start:{line:136,column:12},end:{line:136,column:35}},"33":{start:{line:137,column:12},end:{line:137,column:34}},"34":{start:{line:138,column:12},end:{line:138,column:48}},"35":{start:{line:145,column:8},end:{line:145,column:70}},"36":{start:{line:151,column:8},end:{line:151,column:69}},"37":{start:{line:158,column:8},end:{line:160,column:9}},"38":{start:{line:159,column:12},end:{line:159,column:19}},"39":{start:{line:161,column:8},end:{line:161,column:35}},"40":{start:{line:168,column:8},end:{line:170,column:9}},"41":{start:{line:169,column:12},end:{line:169,column:19}},"42":{start:{line:171,column:8},end:{line:171,column:31}},"43":{start:{line:172,column:8},end:{line:172,column:30}},"44":{start:{line:179,column:8},end:{line:179,column:73}},"45":{start:{line:180,column:8},end:{line:180,column:73}},"46":{start:{line:181,column:8},end:{line:183,column:9}},"47":{start:{line:182,column:12},end:{line:182,column:75}},"48":{start:{line:190,column:8},end:{line:190,column:70}},"49":{start:{line:191,column:8},end:{line:191,column:70}},"50":{start:{line:192,column:8},end:{line:194,column:9}},"51":{start:{line:193,column:12},end:{line:193,column:75}},"52":{start:{line:202,column:22},end:{line:202,column:172}},"53":{start:{line:203,column:8},end:{line:203,column:29}},"54":{start:{line:204,column:33},end:{line:204,column:58}},"55":{start:{line:205,column:8},end:{line:210,column:9}},"56":{start:{line:206,column:12},end:{line:206,column:65}},"57":{start:{line:209,column:12},end:{line:209,column:36}},"58":{start:{line:211,column:8},end:{line:211,column:21}},"59":{start:{line:217,column:22},end:{line:217,column:171}},"60":{start:{line:218,column:8},end:{line:218,column:28}},"61":{start:{line:219,column:33},end:{line:219,column:58}},"62":{start:{line:220,column:8},end:{line:225,column:9}},"63":{start:{line:221,column:12},end:{line:221,column:65}},"64":{start:{line:224,column:12},end:{line:224,column:37}},"65":{start:{line:226,column:8},end:{line:226,column:21}},"66":{start:{line:228,column:13},end:{line:228,column:236}},"67":{start:{line:229,column:13},end:{line:229,column:422}},"68":{start:{line:232,column:0},end:{line:246,column:20}},"69":{start:{line:234,column:42},end:{line:234,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:28},end:{line:79,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:69,column:31},end:{line:69,column:32}},loc:{start:{line:69,column:37},end:{line:78,column:9}},line:69},"2":{name:"(anonymous_2)",decl:{start:{line:74,column:23},end:{line:74,column:24}},loc:{start:{line:74,column:29},end:{line:77,column:13}},line:74},"3":{name:"(anonymous_3)",decl:{start:{line:85,column:4},end:{line:85,column:5}},loc:{start:{line:85,column:21},end:{line:87,column:5}},line:85},"4":{name:"(anonymous_4)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:26},end:{line:93,column:5}},line:91},"5":{name:"(anonymous_5)",decl:{start:{line:97,column:4},end:{line:97,column:5}},loc:{start:{line:97,column:25},end:{line:104,column:5}},line:97},"6":{name:"(anonymous_6)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:18},end:{line:107,column:5}},line:105},"7":{name:"(anonymous_7)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:25},end:{line:115,column:5}},line:113},"8":{name:"(anonymous_8)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:18},end:{line:122,column:5}},line:119},"9":{name:"(anonymous_9)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:23},end:{line:128,column:5}},line:126},"10":{name:"(anonymous_10)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:18},end:{line:140,column:5}},line:132},"11":{name:"(anonymous_11)",decl:{start:{line:135,column:19},end:{line:135,column:20}},loc:{start:{line:135,column:25},end:{line:139,column:9}},line:135},"12":{name:"(anonymous_12)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:23},end:{line:146,column:5}},line:144},"13":{name:"(anonymous_13)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:22},end:{line:152,column:5}},line:150},"14":{name:"(anonymous_14)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:25},end:{line:162,column:5}},line:156},"15":{name:"(anonymous_15)",decl:{start:{line:166,column:4},end:{line:166,column:5}},loc:{start:{line:166,column:16},end:{line:173,column:5}},line:166},"16":{name:"(anonymous_16)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:18},end:{line:184,column:5}},line:177},"17":{name:"(anonymous_17)",decl:{start:{line:188,column:4},end:{line:188,column:5}},loc:{start:{line:188,column:15},end:{line:195,column:5}},line:188},"18":{name:"(anonymous_18)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:22},end:{line:212,column:5}},line:201},"19":{name:"(anonymous_19)",decl:{start:{line:216,column:4},end:{line:216,column:5}},loc:{start:{line:216,column:21},end:{line:227,column:5}},line:216},"20":{name:"(anonymous_20)",decl:{start:{line:234,column:28},end:{line:234,column:29}},loc:{start:{line:234,column:40},end:{line:234,column:109}},line:234}},branchMap:{"0":{loc:{start:{line:71,column:12},end:{line:73,column:13}},type:"if",locations:[{start:{line:71,column:12},end:{line:73,column:13}},{start:{line:71,column:12},end:{line:73,column:13}}],line:71},"1":{loc:{start:{line:98,column:8},end:{line:100,column:9}},type:"if",locations:[{start:{line:98,column:8},end:{line:100,column:9}},{start:{line:98,column:8},end:{line:100,column:9}}],line:98},"2":{loc:{start:{line:158,column:8},end:{line:160,column:9}},type:"if",locations:[{start:{line:158,column:8},end:{line:160,column:9}},{start:{line:158,column:8},end:{line:160,column:9}}],line:158},"3":{loc:{start:{line:168,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:168,column:8},end:{line:170,column:9}},{start:{line:168,column:8},end:{line:170,column:9}}],line:168},"4":{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},"5":{loc:{start:{line:192,column:8},end:{line:194,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:194,column:9}},{start:{line:192,column:8},end:{line:194,column:9}}],line:192},"6":{loc:{start:{line:205,column:8},end:{line:210,column:9}},type:"if",locations:[{start:{line:205,column:8},end:{line:210,column:9}},{start:{line:205,column:8},end:{line:210,column:9}}],line:205},"7":{loc:{start:{line:205,column:12},end:{line:205,column:99}},type:"binary-expr",locations:[{start:{line:205,column:12},end:{line:205,column:53}},{start:{line:205,column:57},end:{line:205,column:99}}],line:205},"8":{loc:{start:{line:220,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:225,column:9}},{start:{line:220,column:8},end:{line:225,column:9}}],line:220},"9":{loc:{start:{line:220,column:12},end:{line:220,column:99}},type:"binary-expr",locations:[{start:{line:220,column:12},end:{line:220,column:55}},{start:{line:220,column:59},end:{line:220,column:99}}],line:220}},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},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},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"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",sourcesContent:["import { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\nimport { PopUpHelper } from '../../utilities/popuphelper';\r\nimport {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Directive,\r\n DoCheck,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Requires the following identifiers in the HTML markup\r\n * - container: Container for ng-content in which the element is displayed where the tooltip is attached.\r\n * - tooltip: Container for tooltip\r\n *\r\n * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step\r\n * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.\r\n *\r\n */\r\n@Directive()\r\nexport abstract class SacTooltipCommon implements OnInit, OnDestroy, AfterViewChecked, DoCheck {\r\n // #region Properties\r\n\r\n /**\r\n * Helper class to display tooltip on correct position\r\n */\r\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\r\n\r\n /**\r\n * Inline mode for tooltip\r\n */\r\n private _inlinemode: boolean;\r\n\r\n /**\r\n * Defines whether the tooltip is visible\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n\r\n /**\r\n * Containers for the tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the tooltip on the left\r\n */\r\n public IsTooltipContentVisible: boolean = false;\r\n\r\n /**\r\n * Position des Tooltips links\r\n */\r\n public LeftPos: number = 0;\r\n\r\n /**\r\n * Property for enum in Angular HTML template\r\n */\r\n public TooltipPosition = TooltipPosition;\r\n\r\n /**\r\n * Position of the tooltip at the top\r\n */\r\n public TopPos: number = 0;\r\n\r\n /**\r\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\r\n */\r\n @ViewChild('container', { static: true })\r\n public content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the picker arrow at the left\r\n */\r\n public posArrowLeft: number | null = null;\r\n\r\n /**\r\n * Position of the picker arrow at the top\r\n */\r\n public posArrowTop: number | null = null;\r\n\r\n /**\r\n * Position of the tooltip. Values: left|top|right|bottom|auto\r\n *\r\n * Value 'auto' can be combined with another value.\r\n */\r\n @Input()\r\n public position: string = 'right|auto';\r\n\r\n /**\r\n * Text for ToolTip\r\n */\r\n @Input()\r\n public tooltiptext: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private readonly cdRef: ChangeDetectorRef, private readonly ref: ElementRef) {}\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`\r\n */\r\n public get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n /**\r\n * Setter for inline mode for tooltip\r\n */\r\n @Input()\r\n public set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n\r\n /**\r\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\r\n */\r\n @ViewChild('tooltip', { static: false })\r\n public set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public get tooltop(): ElementRef {\r\n return this.tooltipcontainer;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Returns the position of the tooltip\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n return this.popupHelper.getDisplayPosition(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n }\r\n\r\n /**\r\n * Hide tooltip\r\n */\r\n public HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Defines whether the tooltip is present in the markup\r\n */\r\n public IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Show tooltip\r\n */\r\n public ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n this.cdRef.detectChanges();\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Calculates the height of the tooltip\r\n */\r\n public getToolTipHeight(): number {\r\n return this.popupHelper.getPopupHeight(this.tooltipcontainer);\r\n }\r\n\r\n /**\r\n * Calculates the width of the tooltips\r\n */\r\n public getToolTipWidth(): number {\r\n return this.popupHelper.getPopupWidth(this.tooltipcontainer);\r\n }\r\n\r\n /**\r\n * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error\r\n */\r\n public ngAfterViewChecked(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Detect UI Changes to Calculate Tooltip correct\r\n */\r\n public ngDoCheck(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n }\r\n\r\n /**\r\n * Event when the control is destroyed.\r\n */\r\n public ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event when the control is initialized\r\n */\r\n public ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Offset for Tooltip. Required for BS4/BS5 to create padding\r\n */\r\n protected abstract getTooltipOffset(): number;\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Calculates the position of the tooltip from links\r\n */\r\n private getLeftPosition(): number {\r\n const value = this.popupHelper.getPositionLeft(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.ref,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n this.LeftPos = value;\r\n\r\n const requiredPosition = this.GetTooltipPosition();\r\n if (requiredPosition === TooltipPosition.left || requiredPosition === TooltipPosition.right) {\r\n this.posArrowTop = this.getToolTipHeight() / 2 - 6.5;\r\n } else {\r\n this.posArrowTop = null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from the top\r\n */\r\n private getTopPosition(): number {\r\n const value = this.popupHelper.getPositionTop(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.ref,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n this.TopPos = value;\r\n\r\n const requiredPosition = this.GetTooltipPosition();\r\n if (requiredPosition === TooltipPosition.bottom || requiredPosition === TooltipPosition.top) {\r\n this.posArrowLeft = this.getToolTipWidth() / 2 - 6.5;\r\n } else {\r\n this.posArrowLeft = null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * method if content has changed and proportions need to be reset in the UI.\r\n */\r\n private readonly onContentChange = (): void => {\r\n // Do nothing if is not visible\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n };\r\n\r\n // #endregion Private Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"def2c968776e4e72632bc6ae769533cb4d3b3745"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
- cov_vnuuxsm2m=function(){return actualCoverage;};}return actualCoverage;}cov_vnuuxsm2m();import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import{PopUpHelper}from'../../utilities/popuphelper';import{Directive,Input,ViewChild}from'@angular/core';import*as i0 from"@angular/core";/**
1
+ function cov_1cdwwf0oat(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/controls/tooltip/tooltip.mjs";var hash="f0824b3c48a5bfa15a3d72fc1efa926b9845d4d7";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/controls/tooltip/tooltip.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:27}},"1":{start:{line:26,column:8},end:{line:26,column:23}},"2":{start:{line:31,column:8},end:{line:31,column:45}},"3":{start:{line:35,column:8},end:{line:35,column:39}},"4":{start:{line:39,column:8},end:{line:39,column:45}},"5":{start:{line:43,column:8},end:{line:43,column:25}},"6":{start:{line:47,column:8},end:{line:47,column:47}},"7":{start:{line:51,column:8},end:{line:51,column:24}},"8":{start:{line:55,column:8},end:{line:55,column:33}},"9":{start:{line:59,column:8},end:{line:59,column:32}},"10":{start:{line:65,column:8},end:{line:65,column:37}},"11":{start:{line:69,column:8},end:{line:78,column:10}},"12":{start:{line:71,column:12},end:{line:73,column:13}},"13":{start:{line:72,column:16},end:{line:72,column:23}},"14":{start:{line:74,column:12},end:{line:77,column:15}},"15":{start:{line:75,column:16},end:{line:75,column:39}},"16":{start:{line:76,column:16},end:{line:76,column:38}},"17":{start:{line:86,column:8},end:{line:86,column:32}},"18":{start:{line:92,column:8},end:{line:92,column:51}},"19":{start:{line:98,column:8},end:{line:100,column:9}},"20":{start:{line:99,column:12},end:{line:99,column:61}},"21":{start:{line:101,column:8},end:{line:101,column:40}},"22":{start:{line:102,column:8},end:{line:102,column:31}},"23":{start:{line:103,column:8},end:{line:103,column:35}},"24":{start:{line:106,column:8},end:{line:106,column:37}},"25":{start:{line:114,column:8},end:{line:114,column:159}},"26":{start:{line:120,column:8},end:{line:120,column:39}},"27":{start:{line:121,column:8},end:{line:121,column:45}},"28":{start:{line:127,column:8},end:{line:127,column:38}},"29":{start:{line:133,column:8},end:{line:133,column:38}},"30":{start:{line:134,column:8},end:{line:134,column:35}},"31":{start:{line:135,column:8},end:{line:139,column:11}},"32":{start:{line:136,column:12},end:{line:136,column:35}},"33":{start:{line:137,column:12},end:{line:137,column:34}},"34":{start:{line:138,column:12},end:{line:138,column:48}},"35":{start:{line:145,column:8},end:{line:145,column:70}},"36":{start:{line:151,column:8},end:{line:151,column:69}},"37":{start:{line:158,column:8},end:{line:160,column:9}},"38":{start:{line:159,column:12},end:{line:159,column:19}},"39":{start:{line:161,column:8},end:{line:161,column:35}},"40":{start:{line:168,column:8},end:{line:170,column:9}},"41":{start:{line:169,column:12},end:{line:169,column:19}},"42":{start:{line:171,column:8},end:{line:171,column:31}},"43":{start:{line:172,column:8},end:{line:172,column:30}},"44":{start:{line:179,column:8},end:{line:179,column:73}},"45":{start:{line:180,column:8},end:{line:180,column:73}},"46":{start:{line:181,column:8},end:{line:183,column:9}},"47":{start:{line:182,column:12},end:{line:182,column:75}},"48":{start:{line:190,column:8},end:{line:190,column:70}},"49":{start:{line:191,column:8},end:{line:191,column:70}},"50":{start:{line:192,column:8},end:{line:194,column:9}},"51":{start:{line:193,column:12},end:{line:193,column:75}},"52":{start:{line:202,column:22},end:{line:202,column:172}},"53":{start:{line:203,column:8},end:{line:203,column:29}},"54":{start:{line:204,column:33},end:{line:204,column:58}},"55":{start:{line:205,column:8},end:{line:210,column:9}},"56":{start:{line:206,column:12},end:{line:206,column:65}},"57":{start:{line:209,column:12},end:{line:209,column:36}},"58":{start:{line:211,column:8},end:{line:211,column:21}},"59":{start:{line:217,column:22},end:{line:217,column:171}},"60":{start:{line:218,column:8},end:{line:218,column:28}},"61":{start:{line:219,column:33},end:{line:219,column:58}},"62":{start:{line:220,column:8},end:{line:225,column:9}},"63":{start:{line:221,column:12},end:{line:221,column:65}},"64":{start:{line:224,column:12},end:{line:224,column:37}},"65":{start:{line:226,column:8},end:{line:226,column:21}},"66":{start:{line:228,column:13},end:{line:228,column:236}},"67":{start:{line:229,column:13},end:{line:229,column:422}},"68":{start:{line:232,column:0},end:{line:246,column:20}},"69":{start:{line:234,column:42},end:{line:234,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:28},end:{line:79,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:69,column:31},end:{line:69,column:32}},loc:{start:{line:69,column:37},end:{line:78,column:9}},line:69},"2":{name:"(anonymous_2)",decl:{start:{line:74,column:23},end:{line:74,column:24}},loc:{start:{line:74,column:29},end:{line:77,column:13}},line:74},"3":{name:"(anonymous_3)",decl:{start:{line:85,column:4},end:{line:85,column:5}},loc:{start:{line:85,column:21},end:{line:87,column:5}},line:85},"4":{name:"(anonymous_4)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:26},end:{line:93,column:5}},line:91},"5":{name:"(anonymous_5)",decl:{start:{line:97,column:4},end:{line:97,column:5}},loc:{start:{line:97,column:25},end:{line:104,column:5}},line:97},"6":{name:"(anonymous_6)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:18},end:{line:107,column:5}},line:105},"7":{name:"(anonymous_7)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:25},end:{line:115,column:5}},line:113},"8":{name:"(anonymous_8)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:18},end:{line:122,column:5}},line:119},"9":{name:"(anonymous_9)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:23},end:{line:128,column:5}},line:126},"10":{name:"(anonymous_10)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:18},end:{line:140,column:5}},line:132},"11":{name:"(anonymous_11)",decl:{start:{line:135,column:19},end:{line:135,column:20}},loc:{start:{line:135,column:25},end:{line:139,column:9}},line:135},"12":{name:"(anonymous_12)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:23},end:{line:146,column:5}},line:144},"13":{name:"(anonymous_13)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:22},end:{line:152,column:5}},line:150},"14":{name:"(anonymous_14)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:25},end:{line:162,column:5}},line:156},"15":{name:"(anonymous_15)",decl:{start:{line:166,column:4},end:{line:166,column:5}},loc:{start:{line:166,column:16},end:{line:173,column:5}},line:166},"16":{name:"(anonymous_16)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:18},end:{line:184,column:5}},line:177},"17":{name:"(anonymous_17)",decl:{start:{line:188,column:4},end:{line:188,column:5}},loc:{start:{line:188,column:15},end:{line:195,column:5}},line:188},"18":{name:"(anonymous_18)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:22},end:{line:212,column:5}},line:201},"19":{name:"(anonymous_19)",decl:{start:{line:216,column:4},end:{line:216,column:5}},loc:{start:{line:216,column:21},end:{line:227,column:5}},line:216},"20":{name:"(anonymous_20)",decl:{start:{line:234,column:28},end:{line:234,column:29}},loc:{start:{line:234,column:40},end:{line:234,column:109}},line:234}},branchMap:{"0":{loc:{start:{line:71,column:12},end:{line:73,column:13}},type:"if",locations:[{start:{line:71,column:12},end:{line:73,column:13}},{start:{line:71,column:12},end:{line:73,column:13}}],line:71},"1":{loc:{start:{line:98,column:8},end:{line:100,column:9}},type:"if",locations:[{start:{line:98,column:8},end:{line:100,column:9}},{start:{line:98,column:8},end:{line:100,column:9}}],line:98},"2":{loc:{start:{line:158,column:8},end:{line:160,column:9}},type:"if",locations:[{start:{line:158,column:8},end:{line:160,column:9}},{start:{line:158,column:8},end:{line:160,column:9}}],line:158},"3":{loc:{start:{line:168,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:168,column:8},end:{line:170,column:9}},{start:{line:168,column:8},end:{line:170,column:9}}],line:168},"4":{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},"5":{loc:{start:{line:192,column:8},end:{line:194,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:194,column:9}},{start:{line:192,column:8},end:{line:194,column:9}}],line:192},"6":{loc:{start:{line:205,column:8},end:{line:210,column:9}},type:"if",locations:[{start:{line:205,column:8},end:{line:210,column:9}},{start:{line:205,column:8},end:{line:210,column:9}}],line:205},"7":{loc:{start:{line:205,column:12},end:{line:205,column:99}},type:"binary-expr",locations:[{start:{line:205,column:12},end:{line:205,column:53}},{start:{line:205,column:57},end:{line:205,column:99}}],line:205},"8":{loc:{start:{line:220,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:225,column:9}},{start:{line:220,column:8},end:{line:225,column:9}}],line:220},"9":{loc:{start:{line:220,column:12},end:{line:220,column:99}},type:"binary-expr",locations:[{start:{line:220,column:12},end:{line:220,column:55}},{start:{line:220,column:59},end:{line:220,column:99}}],line:220}},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},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},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"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",sourcesContent:["import { convertToBoolean } from '../../utilities/convertion';\nimport { TooltipPosition } from '../../utilities/enums';\nimport { PopUpHelper } from '../../utilities/popuphelper';\nimport {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\n/**\n * Tooltip Component\n *\n * Requires the following identifiers in the HTML markup\n * - container: Container for ng-content in which the element is displayed where the tooltip is attached.\n * - tooltip: Container for tooltip\n *\n * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step\n * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.\n *\n */\n@Directive()\nexport abstract class SacTooltipCommon implements OnInit, OnDestroy, AfterViewChecked, DoCheck {\n // #region Properties\n\n /**\n * Helper class to display tooltip on correct position\n */\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\n\n /**\n * Inline mode for tooltip\n */\n private _inlinemode: boolean;\n\n /**\n * Defines whether the tooltip is visible\n */\n private _isTooltipVisible: boolean = false;\n\n /**\n * Containers for the tooltip\n */\n private tooltipcontainer: ElementRef<HTMLElement>;\n\n /**\n * Position of the tooltip on the left\n */\n public IsTooltipContentVisible: boolean = false;\n\n /**\n * Position des Tooltips links\n */\n public LeftPos: number = 0;\n\n /**\n * Property for enum in Angular HTML template\n */\n public TooltipPosition = TooltipPosition;\n\n /**\n * Position of the tooltip at the top\n */\n public TopPos: number = 0;\n\n /**\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\n */\n @ViewChild('container', { static: true })\n public content: ElementRef<HTMLElement>;\n\n /**\n * Position of the picker arrow at the left\n */\n public posArrowLeft: number | null = null;\n\n /**\n * Position of the picker arrow at the top\n */\n public posArrowTop: number | null = null;\n\n /**\n * Position of the tooltip. Values: left|top|right|bottom|auto\n *\n * Value 'auto' can be combined with another value.\n */\n @Input()\n public position: string = 'right|auto';\n\n /**\n * Text for ToolTip\n */\n @Input()\n public tooltiptext: string;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Konstruktor\n * @param ref Element Referenz\n */\n constructor(private readonly cdRef: ChangeDetectorRef, private readonly ref: ElementRef) {}\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`\n */\n public get inlinemode(): boolean {\n return this._inlinemode;\n }\n\n /**\n * Setter for inline mode for tooltip\n */\n @Input()\n public set inlinemode(value: boolean) {\n this._inlinemode = convertToBoolean(value);\n }\n\n /**\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\n */\n @ViewChild('tooltip', { static: false })\n public set tooltip(content: ElementRef) {\n if (content !== undefined) {\n document.body.appendChild(content.nativeElement);\n }\n\n this.tooltipcontainer = content;\n this.onContentChange();\n this.cdRef.detectChanges();\n }\n\n public get tooltop(): ElementRef {\n return this.tooltipcontainer;\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Returns the position of the tooltip\n */\n public GetTooltipPosition(): TooltipPosition {\n return this.popupHelper.getDisplayPosition(\n this.content,\n this.tooltipcontainer,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n }\n\n /**\n * Hide tooltip\n */\n public HideTooltip(): void {\n this._isTooltipVisible = false;\n this.IsTooltipContentVisible = false;\n }\n\n /**\n * Defines whether the tooltip is present in the markup\n */\n public IsTooltipVisible(): boolean {\n return this._isTooltipVisible;\n }\n\n /**\n * Show tooltip\n */\n public ShowTooltip(): void {\n this._isTooltipVisible = true;\n this.cdRef.detectChanges();\n\n setTimeout(() => {\n this.getLeftPosition();\n this.getTopPosition();\n this.IsTooltipContentVisible = true;\n });\n }\n\n /**\n * Calculates the height of the tooltip\n */\n public getToolTipHeight(): number {\n return this.popupHelper.getPopupHeight(this.tooltipcontainer);\n }\n\n /**\n * Calculates the width of the tooltips\n */\n public getToolTipWidth(): number {\n return this.popupHelper.getPopupWidth(this.tooltipcontainer);\n }\n\n /**\n * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error\n */\n public ngAfterViewChecked(): void {\n // Do nothing if is not visibile\n if (!this._isTooltipVisible) {\n return;\n }\n\n this.cdRef.detectChanges();\n }\n\n /**\n * Detect UI Changes to Calculate Tooltip correct\n */\n public ngDoCheck(): void {\n // Do nothing if is not visibile\n if (!this._isTooltipVisible) {\n return;\n }\n\n this.getLeftPosition();\n this.getTopPosition();\n }\n\n /**\n * Event when the control is destroyed.\n */\n public ngOnDestroy() {\n // Unregister Event Listener\n window.removeEventListener('scroll', this.onContentChange, true);\n window.removeEventListener('resize', this.onContentChange, true);\n\n if (this.tooltipcontainer !== undefined) {\n document.body.removeChild(this.tooltipcontainer.nativeElement);\n }\n }\n\n /**\n * Event when the control is initialized\n */\n public ngOnInit() {\n // Register Event Listener\n window.addEventListener('scroll', this.onContentChange, true);\n window.addEventListener('resize', this.onContentChange, true);\n\n if (this.tooltipcontainer !== undefined) {\n document.body.appendChild(this.tooltipcontainer.nativeElement);\n }\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n /**\n * Offset for Tooltip. Required for BS4/BS5 to create padding\n */\n protected abstract getTooltipOffset(): number;\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n /**\n * Calculates the position of the tooltip from links\n */\n private getLeftPosition(): number {\n const value = this.popupHelper.getPositionLeft(\n this.content,\n this.tooltipcontainer,\n this.ref,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n this.LeftPos = value;\n\n const requiredPosition = this.GetTooltipPosition();\n if (requiredPosition === TooltipPosition.left || requiredPosition === TooltipPosition.right) {\n this.posArrowTop = this.getToolTipHeight() / 2 - 6.5;\n } else {\n this.posArrowTop = null;\n }\n\n return value;\n }\n\n /**\n * Calculates the position of the tooltip from the top\n */\n private getTopPosition(): number {\n const value = this.popupHelper.getPositionTop(\n this.content,\n this.tooltipcontainer,\n this.ref,\n this.getTooltipOffset(),\n this.getTooltipOffset(),\n this.position,\n true\n );\n this.TopPos = value;\n\n const requiredPosition = this.GetTooltipPosition();\n if (requiredPosition === TooltipPosition.bottom || requiredPosition === TooltipPosition.top) {\n this.posArrowLeft = this.getToolTipWidth() / 2 - 6.5;\n } else {\n this.posArrowLeft = null;\n }\n\n return value;\n }\n\n /**\n * method if content has changed and proportions need to be reset in the UI.\n */\n private readonly onContentChange = (): void => {\n // Do nothing if is not visible\n if (!this._isTooltipVisible) {\n return;\n }\n\n setTimeout(() => {\n this.getLeftPosition();\n this.getTopPosition();\n });\n };\n\n // #endregion Private Methods\n}\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f0824b3c48a5bfa15a3d72fc1efa926b9845d4d7"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_1cdwwf0oat=function(){return actualCoverage;};}return actualCoverage;}cov_1cdwwf0oat();import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import{PopUpHelper}from'../../utilities/popuphelper';import{Directive,Input,ViewChild}from'@angular/core';import*as i0 from"@angular/core";/**
3
3
  * Tooltip Component
4
4
  *
5
5
  * Requires the following identifiers in the HTML markup
@@ -14,69 +14,69 @@ cov_vnuuxsm2m=function(){return actualCoverage;};}return actualCoverage;}cov_vnu
14
14
  /**
15
15
  * Konstruktor
16
16
  * @param ref Element Referenz
17
- */constructor(cdRef,ref){cov_vnuuxsm2m().f[0]++;cov_vnuuxsm2m().s[0]++;this.cdRef=cdRef;cov_vnuuxsm2m().s[1]++;this.ref=ref;// #region Properties
17
+ */constructor(cdRef,ref){cov_1cdwwf0oat().f[0]++;cov_1cdwwf0oat().s[0]++;this.cdRef=cdRef;cov_1cdwwf0oat().s[1]++;this.ref=ref;// #region Properties
18
18
  /**
19
19
  * Helper class to display tooltip on correct position
20
- */cov_vnuuxsm2m().s[2]++;this.popupHelper=new PopUpHelper();/**
20
+ */cov_1cdwwf0oat().s[2]++;this.popupHelper=new PopUpHelper();/**
21
21
  * Defines whether the tooltip is visible
22
- */cov_vnuuxsm2m().s[3]++;this._isTooltipVisible=false;/**
22
+ */cov_1cdwwf0oat().s[3]++;this._isTooltipVisible=false;/**
23
23
  * Position of the tooltip on the left
24
- */cov_vnuuxsm2m().s[4]++;this.IsTooltipContentVisible=false;/**
24
+ */cov_1cdwwf0oat().s[4]++;this.IsTooltipContentVisible=false;/**
25
25
  * Position des Tooltips links
26
- */cov_vnuuxsm2m().s[5]++;this.LeftPos=0;/**
26
+ */cov_1cdwwf0oat().s[5]++;this.LeftPos=0;/**
27
27
  * Property for enum in Angular HTML template
28
- */cov_vnuuxsm2m().s[6]++;this.TooltipPosition=TooltipPosition;/**
28
+ */cov_1cdwwf0oat().s[6]++;this.TooltipPosition=TooltipPosition;/**
29
29
  * Position of the tooltip at the top
30
- */cov_vnuuxsm2m().s[7]++;this.TopPos=0;/**
30
+ */cov_1cdwwf0oat().s[7]++;this.TopPos=0;/**
31
31
  * Position of the picker arrow at the left
32
- */cov_vnuuxsm2m().s[8]++;this.posArrowLeft=null;/**
32
+ */cov_1cdwwf0oat().s[8]++;this.posArrowLeft=null;/**
33
33
  * Position of the picker arrow at the top
34
- */cov_vnuuxsm2m().s[9]++;this.posArrowTop=null;/**
34
+ */cov_1cdwwf0oat().s[9]++;this.posArrowTop=null;/**
35
35
  * Position of the tooltip. Values: left|top|right|bottom|auto
36
36
  *
37
37
  * Value 'auto' can be combined with another value.
38
- */cov_vnuuxsm2m().s[10]++;this.position='right|auto';/**
38
+ */cov_1cdwwf0oat().s[10]++;this.position='right|auto';/**
39
39
  * method if content has changed and proportions need to be reset in the UI.
40
- */cov_vnuuxsm2m().s[11]++;this.onContentChange=()=>{cov_vnuuxsm2m().f[1]++;cov_vnuuxsm2m().s[12]++;// Do nothing if is not visible
41
- if(!this._isTooltipVisible){cov_vnuuxsm2m().b[0][0]++;cov_vnuuxsm2m().s[13]++;return;}else{cov_vnuuxsm2m().b[0][1]++;}cov_vnuuxsm2m().s[14]++;setTimeout(()=>{cov_vnuuxsm2m().f[2]++;cov_vnuuxsm2m().s[15]++;this.getLeftPosition();cov_vnuuxsm2m().s[16]++;this.getTopPosition();});};}// #endregion Constructors
40
+ */cov_1cdwwf0oat().s[11]++;this.onContentChange=()=>{cov_1cdwwf0oat().f[1]++;cov_1cdwwf0oat().s[12]++;// Do nothing if is not visible
41
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[0][0]++;cov_1cdwwf0oat().s[13]++;return;}else{cov_1cdwwf0oat().b[0][1]++;}cov_1cdwwf0oat().s[14]++;setTimeout(()=>{cov_1cdwwf0oat().f[2]++;cov_1cdwwf0oat().s[15]++;this.getLeftPosition();cov_1cdwwf0oat().s[16]++;this.getTopPosition();});};}// #endregion Constructors
42
42
  // #region Public Getters And Setters
43
43
  /**
44
44
  * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`
45
- */get inlinemode(){cov_vnuuxsm2m().f[3]++;cov_vnuuxsm2m().s[17]++;return this._inlinemode;}/**
45
+ */get inlinemode(){cov_1cdwwf0oat().f[3]++;cov_1cdwwf0oat().s[17]++;return this._inlinemode;}/**
46
46
  * Setter for inline mode for tooltip
47
- */set inlinemode(value){cov_vnuuxsm2m().f[4]++;cov_vnuuxsm2m().s[18]++;this._inlinemode=convertToBoolean(value);}/**
47
+ */set inlinemode(value){cov_1cdwwf0oat().f[4]++;cov_1cdwwf0oat().s[18]++;this._inlinemode=convertToBoolean(value);}/**
48
48
  * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
49
- */set tooltip(content){cov_vnuuxsm2m().f[5]++;cov_vnuuxsm2m().s[19]++;if(content!==undefined){cov_vnuuxsm2m().b[1][0]++;cov_vnuuxsm2m().s[20]++;document.body.appendChild(content.nativeElement);}else{cov_vnuuxsm2m().b[1][1]++;}cov_vnuuxsm2m().s[21]++;this.tooltipcontainer=content;cov_vnuuxsm2m().s[22]++;this.onContentChange();cov_vnuuxsm2m().s[23]++;this.cdRef.detectChanges();}get tooltop(){cov_vnuuxsm2m().f[6]++;cov_vnuuxsm2m().s[24]++;return this.tooltipcontainer;}// #endregion Public Getters And Setters
49
+ */set tooltip(content){cov_1cdwwf0oat().f[5]++;cov_1cdwwf0oat().s[19]++;if(content!==undefined){cov_1cdwwf0oat().b[1][0]++;cov_1cdwwf0oat().s[20]++;document.body.appendChild(content.nativeElement);}else{cov_1cdwwf0oat().b[1][1]++;}cov_1cdwwf0oat().s[21]++;this.tooltipcontainer=content;cov_1cdwwf0oat().s[22]++;this.onContentChange();cov_1cdwwf0oat().s[23]++;this.cdRef.detectChanges();}get tooltop(){cov_1cdwwf0oat().f[6]++;cov_1cdwwf0oat().s[24]++;return this.tooltipcontainer;}// #endregion Public Getters And Setters
50
50
  // #region Public Methods
51
51
  /**
52
52
  * Returns the position of the tooltip
53
- */GetTooltipPosition(){cov_vnuuxsm2m().f[7]++;cov_vnuuxsm2m().s[25]++;return this.popupHelper.getDisplayPosition(this.content,this.tooltipcontainer,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true);}/**
53
+ */GetTooltipPosition(){cov_1cdwwf0oat().f[7]++;cov_1cdwwf0oat().s[25]++;return this.popupHelper.getDisplayPosition(this.content,this.tooltipcontainer,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true);}/**
54
54
  * Hide tooltip
55
- */HideTooltip(){cov_vnuuxsm2m().f[8]++;cov_vnuuxsm2m().s[26]++;this._isTooltipVisible=false;cov_vnuuxsm2m().s[27]++;this.IsTooltipContentVisible=false;}/**
55
+ */HideTooltip(){cov_1cdwwf0oat().f[8]++;cov_1cdwwf0oat().s[26]++;this._isTooltipVisible=false;cov_1cdwwf0oat().s[27]++;this.IsTooltipContentVisible=false;}/**
56
56
  * Defines whether the tooltip is present in the markup
57
- */IsTooltipVisible(){cov_vnuuxsm2m().f[9]++;cov_vnuuxsm2m().s[28]++;return this._isTooltipVisible;}/**
57
+ */IsTooltipVisible(){cov_1cdwwf0oat().f[9]++;cov_1cdwwf0oat().s[28]++;return this._isTooltipVisible;}/**
58
58
  * Show tooltip
59
- */ShowTooltip(){cov_vnuuxsm2m().f[10]++;cov_vnuuxsm2m().s[29]++;this._isTooltipVisible=true;cov_vnuuxsm2m().s[30]++;this.cdRef.detectChanges();cov_vnuuxsm2m().s[31]++;setTimeout(()=>{cov_vnuuxsm2m().f[11]++;cov_vnuuxsm2m().s[32]++;this.getLeftPosition();cov_vnuuxsm2m().s[33]++;this.getTopPosition();cov_vnuuxsm2m().s[34]++;this.IsTooltipContentVisible=true;});}/**
59
+ */ShowTooltip(){cov_1cdwwf0oat().f[10]++;cov_1cdwwf0oat().s[29]++;this._isTooltipVisible=true;cov_1cdwwf0oat().s[30]++;this.cdRef.detectChanges();cov_1cdwwf0oat().s[31]++;setTimeout(()=>{cov_1cdwwf0oat().f[11]++;cov_1cdwwf0oat().s[32]++;this.getLeftPosition();cov_1cdwwf0oat().s[33]++;this.getTopPosition();cov_1cdwwf0oat().s[34]++;this.IsTooltipContentVisible=true;});}/**
60
60
  * Calculates the height of the tooltip
61
- */getToolTipHeight(){cov_vnuuxsm2m().f[12]++;cov_vnuuxsm2m().s[35]++;return this.popupHelper.getPopupHeight(this.tooltipcontainer);}/**
61
+ */getToolTipHeight(){cov_1cdwwf0oat().f[12]++;cov_1cdwwf0oat().s[35]++;return this.popupHelper.getPopupHeight(this.tooltipcontainer);}/**
62
62
  * Calculates the width of the tooltips
63
- */getToolTipWidth(){cov_vnuuxsm2m().f[13]++;cov_vnuuxsm2m().s[36]++;return this.popupHelper.getPopupWidth(this.tooltipcontainer);}/**
63
+ */getToolTipWidth(){cov_1cdwwf0oat().f[13]++;cov_1cdwwf0oat().s[36]++;return this.popupHelper.getPopupWidth(this.tooltipcontainer);}/**
64
64
  * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error
65
- */ngAfterViewChecked(){cov_vnuuxsm2m().f[14]++;cov_vnuuxsm2m().s[37]++;// Do nothing if is not visibile
66
- if(!this._isTooltipVisible){cov_vnuuxsm2m().b[2][0]++;cov_vnuuxsm2m().s[38]++;return;}else{cov_vnuuxsm2m().b[2][1]++;}cov_vnuuxsm2m().s[39]++;this.cdRef.detectChanges();}/**
65
+ */ngAfterViewChecked(){cov_1cdwwf0oat().f[14]++;cov_1cdwwf0oat().s[37]++;// Do nothing if is not visibile
66
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[2][0]++;cov_1cdwwf0oat().s[38]++;return;}else{cov_1cdwwf0oat().b[2][1]++;}cov_1cdwwf0oat().s[39]++;this.cdRef.detectChanges();}/**
67
67
  * Detect UI Changes to Calculate Tooltip correct
68
- */ngDoCheck(){cov_vnuuxsm2m().f[15]++;cov_vnuuxsm2m().s[40]++;// Do nothing if is not visibile
69
- if(!this._isTooltipVisible){cov_vnuuxsm2m().b[3][0]++;cov_vnuuxsm2m().s[41]++;return;}else{cov_vnuuxsm2m().b[3][1]++;}cov_vnuuxsm2m().s[42]++;this.getLeftPosition();cov_vnuuxsm2m().s[43]++;this.getTopPosition();}/**
68
+ */ngDoCheck(){cov_1cdwwf0oat().f[15]++;cov_1cdwwf0oat().s[40]++;// Do nothing if is not visibile
69
+ if(!this._isTooltipVisible){cov_1cdwwf0oat().b[3][0]++;cov_1cdwwf0oat().s[41]++;return;}else{cov_1cdwwf0oat().b[3][1]++;}cov_1cdwwf0oat().s[42]++;this.getLeftPosition();cov_1cdwwf0oat().s[43]++;this.getTopPosition();}/**
70
70
  * Event when the control is destroyed.
71
- */ngOnDestroy(){cov_vnuuxsm2m().f[16]++;cov_vnuuxsm2m().s[44]++;// Unregister Event Listener
72
- window.removeEventListener('scroll',this.onContentChange,true);cov_vnuuxsm2m().s[45]++;window.removeEventListener('resize',this.onContentChange,true);cov_vnuuxsm2m().s[46]++;if(this.tooltipcontainer!==undefined){cov_vnuuxsm2m().b[4][0]++;cov_vnuuxsm2m().s[47]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_vnuuxsm2m().b[4][1]++;}}/**
71
+ */ngOnDestroy(){cov_1cdwwf0oat().f[16]++;cov_1cdwwf0oat().s[44]++;// Unregister Event Listener
72
+ window.removeEventListener('scroll',this.onContentChange,true);cov_1cdwwf0oat().s[45]++;window.removeEventListener('resize',this.onContentChange,true);cov_1cdwwf0oat().s[46]++;if(this.tooltipcontainer!==undefined){cov_1cdwwf0oat().b[4][0]++;cov_1cdwwf0oat().s[47]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_1cdwwf0oat().b[4][1]++;}}/**
73
73
  * Event when the control is initialized
74
- */ngOnInit(){cov_vnuuxsm2m().f[17]++;cov_vnuuxsm2m().s[48]++;// Register Event Listener
75
- window.addEventListener('scroll',this.onContentChange,true);cov_vnuuxsm2m().s[49]++;window.addEventListener('resize',this.onContentChange,true);cov_vnuuxsm2m().s[50]++;if(this.tooltipcontainer!==undefined){cov_vnuuxsm2m().b[5][0]++;cov_vnuuxsm2m().s[51]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_vnuuxsm2m().b[5][1]++;}}// #endregion Protected Methods
74
+ */ngOnInit(){cov_1cdwwf0oat().f[17]++;cov_1cdwwf0oat().s[48]++;// Register Event Listener
75
+ window.addEventListener('scroll',this.onContentChange,true);cov_1cdwwf0oat().s[49]++;window.addEventListener('resize',this.onContentChange,true);cov_1cdwwf0oat().s[50]++;if(this.tooltipcontainer!==undefined){cov_1cdwwf0oat().b[5][0]++;cov_1cdwwf0oat().s[51]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_1cdwwf0oat().b[5][1]++;}}// #endregion Protected Methods
76
76
  // #region Private Methods
77
77
  /**
78
78
  * Calculates the position of the tooltip from links
79
- */getLeftPosition(){cov_vnuuxsm2m().f[18]++;const value=(cov_vnuuxsm2m().s[52]++,this.popupHelper.getPositionLeft(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_vnuuxsm2m().s[53]++;this.LeftPos=value;const requiredPosition=(cov_vnuuxsm2m().s[54]++,this.GetTooltipPosition());cov_vnuuxsm2m().s[55]++;if((cov_vnuuxsm2m().b[7][0]++,requiredPosition===TooltipPosition.left)||(cov_vnuuxsm2m().b[7][1]++,requiredPosition===TooltipPosition.right)){cov_vnuuxsm2m().b[6][0]++;cov_vnuuxsm2m().s[56]++;this.posArrowTop=this.getToolTipHeight()/2-6.5;}else{cov_vnuuxsm2m().b[6][1]++;cov_vnuuxsm2m().s[57]++;this.posArrowTop=null;}cov_vnuuxsm2m().s[58]++;return value;}/**
79
+ */getLeftPosition(){cov_1cdwwf0oat().f[18]++;const value=(cov_1cdwwf0oat().s[52]++,this.popupHelper.getPositionLeft(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[53]++;this.LeftPos=value;const requiredPosition=(cov_1cdwwf0oat().s[54]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[55]++;if((cov_1cdwwf0oat().b[7][0]++,requiredPosition===TooltipPosition.left)||(cov_1cdwwf0oat().b[7][1]++,requiredPosition===TooltipPosition.right)){cov_1cdwwf0oat().b[6][0]++;cov_1cdwwf0oat().s[56]++;this.posArrowTop=this.getToolTipHeight()/2-6.5;}else{cov_1cdwwf0oat().b[6][1]++;cov_1cdwwf0oat().s[57]++;this.posArrowTop=null;}cov_1cdwwf0oat().s[58]++;return value;}/**
80
80
  * Calculates the position of the tooltip from the top
81
- */getTopPosition(){cov_vnuuxsm2m().f[19]++;const value=(cov_vnuuxsm2m().s[59]++,this.popupHelper.getPositionTop(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_vnuuxsm2m().s[60]++;this.TopPos=value;const requiredPosition=(cov_vnuuxsm2m().s[61]++,this.GetTooltipPosition());cov_vnuuxsm2m().s[62]++;if((cov_vnuuxsm2m().b[9][0]++,requiredPosition===TooltipPosition.bottom)||(cov_vnuuxsm2m().b[9][1]++,requiredPosition===TooltipPosition.top)){cov_vnuuxsm2m().b[8][0]++;cov_vnuuxsm2m().s[63]++;this.posArrowLeft=this.getToolTipWidth()/2-6.5;}else{cov_vnuuxsm2m().b[8][1]++;cov_vnuuxsm2m().s[64]++;this.posArrowLeft=null;}cov_vnuuxsm2m().s[65]++;return value;}static{cov_vnuuxsm2m().s[66]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_vnuuxsm2m().s[67]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});}}export{SacTooltipCommon};cov_vnuuxsm2m().s[68]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_vnuuxsm2m().f[20]++;cov_vnuuxsm2m().s[69]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{content:[{type:ViewChild,args:['container',{static:true}]}],position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFHSCxTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQ3NCLGdCQUFnQjtJQXlFbEMsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7O09BR0c7SUFDSCxZQUE2QixLQUF3QixFQUFtQixHQUFlO1FBQTFELFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQW1CLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFoRnZGLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNjLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFPOUQ7O1dBRUc7UUFDSyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFPM0M7O1dBRUc7UUFDSSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFFaEQ7O1dBRUc7UUFDSSxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFFekM7O1dBRUc7UUFDSSxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBUTFCOztXQUVHO1FBQ0ksaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBRTFDOztXQUVHO1FBQ0ksZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBRXpDOzs7O1dBSUc7UUFFSSxhQUFRLEdBQVcsWUFBWSxDQUFDO1FBc092Qzs7V0FFRztRQUNjLG9CQUFlLEdB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QUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXJTaUIsZ0JBQWdCO21HQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTO2lJQWdEQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFtQmpDLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQTRCSyxVQUFVO3NCQURwQixLQUFLO2dCQVNLLE9BQU87c0JBRGpCLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIERvQ2hlY2ssXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogUmVxdWlyZXMgdGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBpbiB0aGUgSFRNTCBtYXJrdXBcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmb3IgbmctY29udGVudCBpbiB3aGljaCB0aGUgZWxlbWVudCBpcyBkaXNwbGF5ZWQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQuXHJcbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXHJcbiAqXHJcbiAqIFRvb2x0aXAgbXVzdCBiZSBkaXNwbGF5ZWQgaW4gMiBzdGVwcy4gSW4gYSBmaXJzdCBzdGVwIHRoZSB0b29sdGlwIG1hcmt1cCBpcyBjcmVhdGVkIHdpdGggKG5nSWYpLiBJbiBhIDJuZCBzdGVwXHJcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXHJcbiAqXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1Rvb2x0aXBDb21tb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgRG9DaGVjayB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjbGFzcyB0byBkaXNwbGF5IHRvb2x0aXAgb24gY29ycmVjdCBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzVG9vbHRpcFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5lcnMgZm9yIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgTGVmdFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IGZvciBlbnVtIGluIEFuZ3VsYXIgSFRNTCB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBvc0Fycm93TGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSB0b3BcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXHJcbiAgICAgKlxyXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBLb25zdHJ1a3RvclxyXG4gICAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikge31cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcC4gU2V0cyB0aGUgZGlzcGxheSBtb2RlIG9uIHRoZSB3cmFwcGVyIGVsZW1lbnQgdG8gYGlubGluZWBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVtb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5faW5saW5lbW9kZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyIGZvciB0aGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGUgdG9vbHRpcC4gSXMgcmVxdWlyZWQgYXMgdGhlIHRvb2x0aXAgY2FuIGJlIGhpZGRlbiB2aWEgbmdJZi5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lciA9IGNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIEdldFRvb2x0aXBQb3NpdGlvbigpOiBUb29sdGlwUG9zaXRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHRvb2x0aXBzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cFdpZHRoKHRoaXMudG9vbHRpcGNvbnRhaW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBpbml0aWFsaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gUmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLnJlZixcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLkxlZnRQb3MgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0IHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gdGhpcy5nZXRUb29sVGlwSGVpZ2h0KCkgLyAyIC0gNi41O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25Ub3AoXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLnJlZixcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLlRvcFBvcyA9IHZhbHVlO1xyXG5cclxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcclxuICAgICAgICBpZiAocmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl19
82
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3Zfdm51dXhzbTJtIiwiYWN0dWFsQ292ZXJhZ2UiLCJjb252ZXJ0VG9Cb29sZWFuIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJEaXJlY3RpdmUiLCJJbnB1dCIsIlZpZXdDaGlsZCIsIlNhY1Rvb2x0aXBDb21tb24iLCJjb25zdHJ1Y3RvciIsImNkUmVmIiwicmVmIiwiZiIsInMiLCJwb3B1cEhlbHBlciIsIl9pc1Rvb2x0aXBWaXNpYmxlIiwiSXNUb29sdGlwQ29udGVudFZpc2libGUiLCJMZWZ0UG9zIiwiVG9wUG9zIiwicG9zQXJyb3dMZWZ0IiwicG9zQXJyb3dUb3AiLCJwb3NpdGlvbiIsIm9uQ29udGVudENoYW5nZSIsImIiLCJzZXRUaW1lb3V0IiwiZ2V0TGVmdFBvc2l0aW9uIiwiZ2V0VG9wUG9zaXRpb24iLCJpbmxpbmVtb2RlIiwiX2lubGluZW1vZGUiLCJ2YWx1ZSIsInRvb2x0aXAiLCJjb250ZW50IiwidW5kZWZpbmVkIiwiZG9jdW1lbnQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJuYXRpdmVFbGVtZW50IiwidG9vbHRpcGNvbnRhaW5lciIsImRldGVjdENoYW5nZXMiLCJ0b29sdG9wIiwiR2V0VG9vbHRpcFBvc2l0aW9uIiwiZ2V0RGlzcGxheVBvc2l0aW9uIiwiZ2V0VG9vbHRpcE9mZnNldCIsIkhpZGVUb29sdGlwIiwiSXNUb29sdGlwVmlzaWJsZSIsIlNob3dUb29sdGlwIiwiZ2V0VG9vbFRpcEhlaWdodCIsImdldFBvcHVwSGVpZ2h0IiwiZ2V0VG9vbFRpcFdpZHRoIiwiZ2V0UG9wdXBXaWR0aCIsIm5nQWZ0ZXJWaWV3Q2hlY2tlZCIsIm5nRG9DaGVjayIsIm5nT25EZXN0cm95Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbW92ZUNoaWxkIiwibmdPbkluaXQiLCJhZGRFdmVudExpc3RlbmVyIiwiZ2V0UG9zaXRpb25MZWZ0IiwicmVxdWlyZWRQb3NpdGlvbiIsImxlZnQiLCJyaWdodCIsImdldFBvc2l0aW9uVG9wIiwiYm90dG9tIiwidG9wIiwiZGVwcyIsInRva2VuIiwiaTAiLCJDaGFuZ2VEZXRlY3RvclJlZiIsIkVsZW1lbnRSZWYiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsInRvb2x0aXB0ZXh0Iiwidmlld1F1ZXJpZXMiLCJwcm9wZXJ0eU5hbWUiLCJmaXJzdCIsInByZWRpY2F0ZSIsImRlc2NlbmRhbnRzIiwic3RhdGljIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29udHJvbHMvdG9vbHRpcC90b29sdGlwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XHJcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcclxuaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIERvQ2hlY2ssXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVG9vbHRpcCBDb21wb25lbnRcclxuICpcclxuICogUmVxdWlyZXMgdGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBpbiB0aGUgSFRNTCBtYXJrdXBcclxuICogLSBjb250YWluZXI6IENvbnRhaW5lciBmb3IgbmctY29udGVudCBpbiB3aGljaCB0aGUgZWxlbWVudCBpcyBkaXNwbGF5ZWQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQuXHJcbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXHJcbiAqXHJcbiAqIFRvb2x0aXAgbXVzdCBiZSBkaXNwbGF5ZWQgaW4gMiBzdGVwcy4gSW4gYSBmaXJzdCBzdGVwIHRoZSB0b29sdGlwIG1hcmt1cCBpcyBjcmVhdGVkIHdpdGggKG5nSWYpLiBJbiBhIDJuZCBzdGVwXHJcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXHJcbiAqXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1Rvb2x0aXBDb21tb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgRG9DaGVjayB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjbGFzcyB0byBkaXNwbGF5IHRvb2x0aXAgb24gY29ycmVjdCBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzVG9vbHRpcFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5lcnMgZm9yIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgTGVmdFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IGZvciBlbnVtIGluIEFuZ3VsYXIgSFRNTCB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBvc0Fycm93TGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSB0b3BcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXHJcbiAgICAgKlxyXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBLb25zdHJ1a3RvclxyXG4gICAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikge31cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3BlcnR5IGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcC4gU2V0cyB0aGUgZGlzcGxheSBtb2RlIG9uIHRoZSB3cmFwcGVyIGVsZW1lbnQgdG8gYGlubGluZWBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVtb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5faW5saW5lbW9kZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyIGZvciB0aGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGUgdG9vbHRpcC4gSXMgcmVxdWlyZWQgYXMgdGhlIHRvb2x0aXAgY2FuIGJlIGhpZGRlbiB2aWEgbmdJZi5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lciA9IGNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIEdldFRvb2x0aXBQb3NpdGlvbigpOiBUb29sdGlwUG9zaXRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHRvb2x0aXBzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cFdpZHRoKHRoaXMudG9vbHRpcGNvbnRhaW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBpbml0aWFsaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gUmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLnJlZixcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLkxlZnRQb3MgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0IHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gdGhpcy5nZXRUb29sVGlwSGVpZ2h0KCkgLyAyIC0gNi41O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25Ub3AoXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLnJlZixcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLlRvcFBvcyA9IHZhbHVlO1xyXG5cclxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcclxuICAgICAgICBpZiAocmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiaW54QkF5Qkc7QUFBQUEsYUFBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxhQUFBLEdBekJILE9BQVNFLGdCQUFnQixLQUFRLDRCQUE0QixDQUM3RCxPQUFTQyxlQUFlLEtBQVEsdUJBQXVCLENBQ3ZELE9BQVNDLFdBQVcsS0FBUSw2QkFBNkIsQ0FDekQsT0FHSUMsU0FBUyxDQUdUQyxLQUFLLENBR0xDLFNBQVMsS0FDTixlQUFlLEMsaUNBRXRCOzs7Ozs7Ozs7O0dBV0EsS0FDc0IsQ0FBQUMsZ0JBQWdCLENBeUVsQztBQUVBO0FBRUE7OztPQUlBQyxZQUE2QkMsS0FBd0IsQ0FBbUJDLEdBQWUsRUFBQVgsYUFBQSxHQUFBWSxDQUFBLE1BQUFaLGFBQUEsR0FBQWEsQ0FBQSxNQUExRCxLQUFBSCxLQUFLLENBQUxBLEtBQUssQ0FBbUJWLGFBQUEsR0FBQWEsQ0FBQSxNQUFtQixLQUFBRixHQUFHLENBQUhBLEdBQUcsQ0FoRjNFO0FBRUE7O1dBQUFYLGFBQUEsR0FBQWEsQ0FBQSxNQUdpQixLQUFBQyxXQUFXLENBQWdCLEdBQUksQ0FBQVYsV0FBVyxFQUFFLENBTzdEOztXQUFBSixhQUFBLEdBQUFhLENBQUEsTUFHUSxLQUFBRSxpQkFBaUIsQ0FBWSxLQUFLLENBTzFDOztXQUFBZixhQUFBLEdBQUFhLENBQUEsTUFHTyxLQUFBRyx1QkFBdUIsQ0FBWSxLQUFLLENBRS9DOztXQUFBaEIsYUFBQSxHQUFBYSxDQUFBLE1BR08sS0FBQUksT0FBTyxDQUFXLENBQUMsQ0FFMUI7O1dBQUFqQixhQUFBLEdBQUFhLENBQUEsTUFHTyxLQUFBVixlQUFl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
81
+ */getTopPosition(){cov_1cdwwf0oat().f[19]++;const value=(cov_1cdwwf0oat().s[59]++,this.popupHelper.getPositionTop(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[60]++;this.TopPos=value;const requiredPosition=(cov_1cdwwf0oat().s[61]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[62]++;if((cov_1cdwwf0oat().b[9][0]++,requiredPosition===TooltipPosition.bottom)||(cov_1cdwwf0oat().b[9][1]++,requiredPosition===TooltipPosition.top)){cov_1cdwwf0oat().b[8][0]++;cov_1cdwwf0oat().s[63]++;this.posArrowLeft=this.getToolTipWidth()/2-6.5;}else{cov_1cdwwf0oat().b[8][1]++;cov_1cdwwf0oat().s[64]++;this.posArrowLeft=null;}cov_1cdwwf0oat().s[65]++;return value;}static{cov_1cdwwf0oat().s[66]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_1cdwwf0oat().s[67]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});}}export{SacTooltipCommon};cov_1cdwwf0oat().s[68]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_1cdwwf0oat().f[20]++;cov_1cdwwf0oat().s[69]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{content:[{type:ViewChild,args:['container',{static:true}]}],position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFHSCxTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQ3NCLGdCQUFnQjtJQXlFbEMsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7O09BR0c7SUFDSCxZQUE2QixLQUF3QixFQUFtQixHQUFlO1FBQTFELFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQW1CLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFoRnZGLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNjLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFPOUQ7O1dBRUc7UUFDSyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFPM0M7O1dBRUc7UUFDSSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFFaEQ7O1dBRUc7UUFDSSxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFFekM7O1dBRUc7UUFDSSxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBUTFCOztXQUVHO1FBQ0ksaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBRTFDOztXQUVHO1FBQ0ksZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBRXpDOzs7O1dBSUc7UUFFSSxhQUFRLEdBQVcsWUFBWSxDQUFDO1FBc092Qzs7V0FFRztRQUNjLG9CQUFlLEdB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QUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXJTaUIsZ0JBQWdCO21HQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTO2lJQWdEQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFtQmpDLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQTRCSyxVQUFVO3NCQURwQixLQUFLO2dCQVNLLE9BQU87c0JBRGpCLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY29udmVydGlvbic7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW51bXMnO1xuaW1wb3J0IHsgUG9wVXBIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9wdXBoZWxwZXInO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRvb2x0aXAgQ29tcG9uZW50XG4gKlxuICogUmVxdWlyZXMgdGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBpbiB0aGUgSFRNTCBtYXJrdXBcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxuICogLSB0b29sdGlwOiBDb250YWluZXIgZm9yIHRvb2x0aXBcbiAqXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxuICogdGhlIHRvb2x0aXAgY2FuIHRoZW4gYmUgZGlzcGxheWVkIHZpYSB0aGUgQ1NTIHZpc2liaWxpdHkuIElmIHRoaXMgaXMgbm90IGRvbmUsIGl0IGNhbiBsZWFkIHRvIGEgZmxpY2tlcmluZyBlZmZlY3QgaW4gY2VydGFpbiBicm93c2Vycy5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1Rvb2x0aXBDb21tb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgRG9DaGVjayB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbmxpbmVtb2RlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHZpc2libGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gZGVzIFRvb2x0aXBzIGxpbmtzXG4gICAgICovXG4gICAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBUb3BQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0fGF1dG8nO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgVG9vbFRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBLb25zdHJ1a3RvclxuICAgICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXAuIFNldHMgdGhlIGRpc3BsYXkgbW9kZSBvbiB0aGUgd3JhcHBlciBlbGVtZW50IHRvIGBpbmxpbmVgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlubGluZW1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faW5saW5lbW9kZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lciA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXG4gICAgICovXG4gICAgcHVibGljIElzVG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVjdCBDaGFuZ2VzIGFmdGVyIHZpZXcgY2hlY2tlZC4gUHJldmVudCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIGVycm9yXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgVUkgQ2hhbmdlcyB0byBDYWxjdWxhdGUgVG9vbHRpcCBjb3JyZWN0XG4gICAgICovXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VG9vbHRpcE9mZnNldCgpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLnJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLkxlZnRQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0IHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5Ub3BQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gfHwgcmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMWNkd3dmMG9hdCIsImFjdHVhbENvdmVyYWdlIiwiY29udmVydFRvQm9vbGVhbiIsIlRvb2x0aXBQb3NpdGlvbiIsIlBvcFVwSGVscGVyIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJTYWNUb29sdGlwQ29tbW9uIiwiY29uc3RydWN0b3IiLCJjZFJlZiIsInJlZiIsImYiLCJzIiwicG9wdXBIZWxwZXIiLCJfaXNUb29sdGlwVmlzaWJsZSIsIklzVG9vbHRpcENvbnRlbnRWaXNpYmxlIiwiTGVmdFBvcyIsIlRvcFBvcyIsInBvc0Fycm93TGVmdCIsInBvc0Fycm93VG9wIiwicG9zaXRpb24iLCJvbkNvbnRlbnRDaGFuZ2UiLCJiIiwic2V0VGltZW91dCIsImdldExlZnRQb3NpdGlvbiIsImdldFRvcFBvc2l0aW9uIiwiaW5saW5lbW9kZSIsIl9pbmxpbmVtb2RlIiwidmFsdWUiLCJ0b29sdGlwIiwiY29udGVudCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInRvb2x0aXBjb250YWluZXIiLCJkZXRlY3RDaGFuZ2VzIiwidG9vbHRvcCIsIkdldFRvb2x0aXBQb3NpdGlvbiIsImdldERpc3BsYXlQb3NpdGlvbiIsImdldFRvb2x0aXBPZmZzZXQiLCJIaWRlVG9vbHRpcCIsIklzVG9vbHRpcFZpc2libGUiLCJTaG93VG9vbHRpcCIsImdldFRvb2xUaXBIZWlnaHQiLCJnZXRQb3B1cEhlaWdodCIsImdldFRvb2xUaXBXaWR0aCIsImdldFBvcHVwV2lkdGgiLCJuZ0FmdGVyVmlld0NoZWNrZWQiLCJuZ0RvQ2hlY2siLCJuZ09uRGVzdHJveSIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVDaGlsZCIsIm5nT25Jbml0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImdldFBvc2l0aW9uTGVmdCIsInJlcXVpcmVkUG9zaXRpb24iLCJsZWZ0IiwicmlnaHQiLCJnZXRQb3NpdGlvblRvcCIsImJvdHRvbSIsInRvcCIsImRlcHMiLCJ0b2tlbiIsImkwIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJFbGVtZW50UmVmIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJ0b29sdGlwdGV4dCIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudW1zJztcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUb29sdGlwIENvbXBvbmVudFxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXG4gKiAtIGNvbnRhaW5lcjogQ29udGFpbmVyIGZvciBuZy1jb250ZW50IGluIHdoaWNoIHRoZSBlbGVtZW50IGlzIGRpc3BsYXllZCB3aGVyZSB0aGUgdG9vbHRpcCBpcyBhdHRhY2hlZC5cbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXG4gKlxuICogVG9vbHRpcCBtdXN0IGJlIGRpc3BsYXllZCBpbiAyIHN0ZXBzLiBJbiBhIGZpcnN0IHN0ZXAgdGhlIHRvb2x0aXAgbWFya3VwIGlzIGNyZWF0ZWQgd2l0aCAobmdJZikuIEluIGEgMm5kIHN0ZXBcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcCBvbiBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNUb29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xuICAgICAqL1xuICAgIHB1YmxpYyBMZWZ0UG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gcmVmIEVsZW1lbnQgUmVmZXJlbnpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwLiBTZXRzIHRoZSBkaXNwbGF5IG1vZGUgb24gdGhlIHdyYXBwZXIgZWxlbWVudCB0byBgaW5saW5lYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0VG9vbHRpcFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgdG9vbHRpcHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMucmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuVG9wUG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tIHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IncrdkJBeUJHO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXpCSCxPQUFTRSxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDQUN2RCxPQUFTQyxXQUFXLEtBQVEsNkJBQTZCLENBQ3pELE9BR0lDLFNBQVMsQ0FHVEMsS0FBSyxDQUdMQyxTQUFTLEtBQ04sZUFBZSxDLGlDQUV0Qjs7Ozs7Ozs7OztHQVdBLEtBQ3NCLENBQUFDLGdCQUFnQixDQXlFbEM7QUFFQTtBQUVBOzs7T0FJQUMsWUFBNkJDLEtBQXdCLENBQW1CQyxHQUFlLEVBQUFYLGNBQUEsR0FBQVksQ0FBQSxNQUFBWixjQUFBLEdBQUFhLENBQUEsTUFBMUQsS0FBQUgsS0FBSyxDQUFMQSxLQUFLLENBQW1CVixjQUFBLEdBQUFhLENBQUEsTUFBbUIsS0FBQUYsR0FBRyxDQUFIQSxHQUFHLENBaEYzRTtBQUVBOztXQUFBWCxjQUFBLEdBQUFhLENBQUEsTUFHaUIsS0FBQUMsV0FBVyxDQUFnQixHQUFJLENBQUFWLFdB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