@simpleangularcontrols/sac-common 16.0.0-rc.4 → 16.0.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/basedatetimecontrol.d.ts.map +1 -1
- package/common/basemodelcontrol.d.ts +19 -1
- package/common/basemodelcontrol.d.ts.map +1 -1
- package/common/baseuploadcontrol.d.ts.map +1 -1
- package/components/browser/browser.d.ts +11 -6
- package/components/browser/browser.d.ts.map +1 -1
- package/controls/buttons/button.d.ts +23 -22
- package/controls/buttons/button.d.ts.map +1 -1
- package/controls/checkbox/radiobutton.d.ts +9 -0
- package/controls/checkbox/radiobutton.d.ts.map +1 -1
- package/controls/checkbox/radiobuttons.d.ts +20 -20
- package/controls/checkbox/radiobuttons.d.ts.map +1 -1
- package/controls/confirm/confirm.button.d.ts +14 -8
- package/controls/confirm/confirm.button.d.ts.map +1 -1
- package/controls/confirm/confirm.service.d.ts +24 -19
- package/controls/confirm/confirm.service.d.ts.map +1 -1
- package/controls/contextmenu/contextmenu.d.ts.map +1 -1
- package/controls/datetime/date.d.ts +33 -33
- package/controls/datetime/date.d.ts.map +1 -1
- package/controls/datetime/datetime.d.ts +31 -31
- package/controls/datetime/datetime.d.ts.map +1 -1
- package/controls/datetime/time.d.ts +29 -29
- package/controls/datetime/time.d.ts.map +1 -1
- package/controls/grid/grid.d.ts +57 -54
- package/controls/grid/grid.d.ts.map +1 -1
- package/controls/grid/paging.d.ts +70 -67
- package/controls/grid/paging.d.ts.map +1 -1
- package/controls/input/input.d.ts +11 -11
- package/controls/input/input.d.ts.map +1 -1
- package/controls/input/inputdecimal.d.ts.map +1 -1
- package/controls/input/inputemail.d.ts.map +1 -1
- package/controls/input/inputinteger.d.ts +21 -21
- package/controls/input/inputinteger.d.ts.map +1 -1
- package/controls/input/inputpassword.d.ts +5 -5
- package/controls/input/inputpassword.d.ts.map +1 -1
- package/controls/layout/formlayout.d.ts +14 -9
- package/controls/layout/formlayout.d.ts.map +1 -1
- package/controls/list/dropdown.d.ts.map +1 -1
- package/controls/list/listbox.d.ts +20 -20
- package/controls/list/listbox.d.ts.map +1 -1
- package/controls/multilanguage/multilanguageinput.d.ts +31 -31
- package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
- package/controls/multilanguage/multilanguageinputarea.d.ts +34 -34
- package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
- package/controls/tinymce/tinymce.d.ts.map +1 -1
- package/controls/upload/dropzonemultiple.d.ts +24 -24
- package/controls/upload/dropzonemultiple.d.ts.map +1 -1
- package/controls/upload/uploadmultiple.d.ts +9 -9
- package/controls/upload/uploadmultiple.d.ts.map +1 -1
- package/controls/validation/validationsummary.d.ts +18 -13
- package/controls/validation/validationsummary.d.ts.map +1 -1
- package/enums/ButtonRoleType.d.ts +2 -0
- package/enums/ButtonRoleType.d.ts.map +1 -0
- package/enums/ControlHeight.d.ts +18 -0
- package/enums/ControlHeight.d.ts.map +1 -0
- package/esm2022/common/basedatetimecontrol.mjs +32 -148
- package/esm2022/common/baseinputcontrol.mjs +20 -77
- package/esm2022/common/baselistcontrol.mjs +11 -56
- package/esm2022/common/basemodelcontrol.mjs +81 -408
- package/esm2022/common/baseselectcontrol.mjs +6 -27
- package/esm2022/common/baseuploadcontrol.mjs +64 -389
- package/esm2022/components/browser/browser.mjs +66 -474
- package/esm2022/components/browser/models/browserfile.mjs +3 -2
- package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
- package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
- package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
- package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
- package/esm2022/components/browser/models/browsernode.mjs +3 -2
- package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
- package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
- package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
- package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
- package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
- package/esm2022/controls/buttons/button.mjs +32 -131
- package/esm2022/controls/checkbox/checkbox.mjs +7 -34
- package/esm2022/controls/checkbox/radiobutton.mjs +24 -98
- package/esm2022/controls/checkbox/radiobuttons.mjs +26 -104
- package/esm2022/controls/confirm/confirm.button.mjs +17 -21
- package/esm2022/controls/confirm/confirm.mjs +19 -69
- package/esm2022/controls/confirm/confirm.service.mjs +29 -74
- package/esm2022/controls/contextmenu/contextmenu.mjs +31 -169
- package/esm2022/controls/contextmenu/contextmenuanchor.mjs +7 -20
- package/esm2022/controls/contextmenu/contextmenucontainer.mjs +7 -20
- package/esm2022/controls/contextmenu/contextmenuitem.mjs +4 -13
- package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -91
- package/esm2022/controls/datetime/date.mjs +39 -203
- package/esm2022/controls/datetime/dateselector.mjs +65 -409
- package/esm2022/controls/datetime/datetime.mjs +41 -220
- package/esm2022/controls/datetime/time.mjs +38 -201
- package/esm2022/controls/dialog/dialog.mjs +33 -194
- package/esm2022/controls/form/form.mjs +24 -96
- package/esm2022/controls/grid/grid.mjs +39 -146
- package/esm2022/controls/grid/gridbutton.mjs +9 -52
- package/esm2022/controls/grid/gridcolumn.mjs +9 -41
- package/esm2022/controls/grid/gridcolumnaction.mjs +5 -20
- package/esm2022/controls/grid/gridcolumnbase.mjs +20 -114
- package/esm2022/controls/grid/gridimage.mjs +4 -15
- package/esm2022/controls/grid/model.mjs +16 -59
- package/esm2022/controls/grid/paging.mjs +65 -232
- package/esm2022/controls/input/input.mjs +17 -65
- package/esm2022/controls/input/inputarea.mjs +10 -53
- package/esm2022/controls/input/inputcurrency.mjs +4 -14
- package/esm2022/controls/input/inputdecimal.mjs +25 -140
- package/esm2022/controls/input/inputemail.mjs +10 -37
- package/esm2022/controls/input/inputinteger.mjs +32 -127
- package/esm2022/controls/input/inputpassword.mjs +12 -43
- package/esm2022/controls/input/inputsearch.mjs +8 -37
- package/esm2022/controls/layout/formlayout.mjs +20 -65
- package/esm2022/controls/list/dropdown.mjs +54 -219
- package/esm2022/controls/list/listbox.mjs +40 -159
- package/esm2022/controls/multilanguage/multilanguageinput.mjs +45 -213
- package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +48 -215
- package/esm2022/controls/static/formcontainer.mjs +10 -44
- package/esm2022/controls/static/staticlabel.mjs +7 -28
- package/esm2022/controls/tabs/tab.mjs +14 -68
- package/esm2022/controls/tabs/tabitem.mjs +7 -37
- package/esm2022/controls/tinymce/tinymce.mjs +41 -218
- package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
- package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
- package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
- package/esm2022/controls/tooltip/tooltip.mjs +46 -327
- package/esm2022/controls/treeview/ngtreeitemaction.mjs +9 -56
- package/esm2022/controls/treeview/treeview.mjs +53 -299
- package/esm2022/controls/treeview/treeviewchild.mjs +5 -19
- package/esm2022/controls/upload/dropzonemultiple.mjs +32 -152
- package/esm2022/controls/upload/dropzonesingle.mjs +12 -91
- package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
- package/esm2022/controls/upload/uploadsingle.mjs +8 -50
- package/esm2022/controls/validation/validationsummary.mjs +23 -120
- package/esm2022/controls/wizard/wizard.mjs +20 -128
- package/esm2022/controls/wizard/wizarditem.mjs +6 -31
- package/esm2022/enums/ButtonRoleType.mjs +3 -0
- package/esm2022/enums/ControlHeight.mjs +11 -0
- package/esm2022/enums/IconType.mjs +4 -8
- package/esm2022/interfaces/ISacConfigurationService.mjs +3 -2
- package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
- package/esm2022/interfaces/ISacIconService.mjs +3 -2
- package/esm2022/interfaces/ISacLabelSizes.mjs +3 -2
- package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
- package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
- package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
- package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
- package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
- package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
- package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
- package/esm2022/models/languagemodel.mjs +5 -11
- package/esm2022/public_api.mjs +23 -95
- package/esm2022/services/index.mjs +3 -6
- package/esm2022/services/sac-configuration.service.mjs +13 -59
- package/esm2022/services/sac-filebrowser.service.mjs +15 -167
- package/esm2022/services/sac-icon.service.mjs +49 -155
- package/esm2022/services/sac-language.service.mjs +7 -45
- package/esm2022/services/sac-localisation.service.mjs +33 -428
- package/esm2022/services/sac-validationkey.service.mjs +7 -0
- package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
- package/esm2022/utilities/convertion.mjs +6 -26
- package/esm2022/utilities/datatypes.mjs +4 -6
- package/esm2022/utilities/enums.mjs +8 -15
- package/esm2022/utilities/guid.mjs +5 -15
- package/esm2022/utilities/interpolation.mjs +7 -42
- package/esm2022/utilities/positioning.mjs +23 -266
- package/esm2022/validation/email.validator.mjs +3 -13
- package/esm2022/validation/index.mjs +3 -3
- package/esm2022/validation/invaliddate.validator.mjs +3 -14
- package/esm2022/validation/isDateValid.mjs +5 -14
- package/esm2022/validation/maxdate.validator.mjs +4 -21
- package/esm2022/validation/maxtime.validator.mjs +4 -21
- package/esm2022/validation/maxvalue.validator.mjs +3 -16
- package/esm2022/validation/mindate.validator.mjs +4 -21
- package/esm2022/validation/minfiles.validator.mjs +4 -19
- package/esm2022/validation/minlength.validator.mjs +3 -21
- package/esm2022/validation/mintime.validator.mjs +4 -21
- package/esm2022/validation/minvalue.validator.mjs +3 -16
- package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
- package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
- package/esm2022/validation/pattern.validator.mjs +3 -16
- package/esm2022/validation/required.validator.mjs +3 -13
- package/esm2022/validation/validation.mjs +20 -99
- package/esm2022/validation/validationerrorcreator.mjs +3 -11
- package/esm2022/validation/validationerroritem.mjs +7 -19
- package/fesm2022/simpleangularcontrols-sac-common.mjs +1625 -9018
- package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
- package/interfaces/ISacConfigurationService.d.ts +5 -0
- package/interfaces/ISacConfigurationService.d.ts.map +1 -1
- package/interfaces/ISacValidationKeyService.d.ts +53 -0
- package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
- package/package.json +1 -1
- package/public_api.d.ts +4 -1
- package/public_api.d.ts.map +1 -1
- package/services/index.d.ts +1 -0
- package/services/index.d.ts.map +1 -1
- package/services/sac-configuration.service.d.ts +6 -0
- package/services/sac-configuration.service.d.ts.map +1 -1
- package/services/sac-localisation.service.d.ts +103 -97
- package/services/sac-localisation.service.d.ts.map +1 -1
- package/services/sac-validationkey.service.d.ts +59 -0
- package/services/sac-validationkey.service.d.ts.map +1 -0
- package/simpleangularcontrols-sac-common-16.0.0-rc.6.tgz +0 -0
- package/simpleangularcontrols-sac-common-16.0.0-rc.4.tgz +0 -0
|
@@ -1,344 +1,98 @@
|
|
|
1
|
-
import { ContentChild, Directive, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import
|
|
3
|
-
/**
|
|
1
|
+
function cov_1qqjitsvap(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\treeview\\treeview.mjs";var hash="04cced2a16680b7458d2e4a8f1c03ef839486824";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\\treeview\\treeview.mjs",statementMap:{"0":{start:{line:11,column:8},end:{line:11,column:24}},"1":{start:{line:15,column:8},end:{line:15,column:42}},"2":{start:{line:19,column:8},end:{line:19,column:39}},"3":{start:{line:23,column:8},end:{line:23,column:51}},"4":{start:{line:27,column:8},end:{line:27,column:24}},"5":{start:{line:31,column:8},end:{line:31,column:23}},"6":{start:{line:36,column:8},end:{line:36,column:33}},"7":{start:{line:40,column:8},end:{line:40,column:31}},"8":{start:{line:44,column:8},end:{line:44,column:27}},"9":{start:{line:48,column:8},end:{line:48,column:38}},"10":{start:{line:52,column:8},end:{line:52,column:39}},"11":{start:{line:56,column:8},end:{line:56,column:51}},"12":{start:{line:60,column:8},end:{line:60,column:54}},"13":{start:{line:64,column:8},end:{line:64,column:47}},"14":{start:{line:70,column:8},end:{line:70,column:26}},"15":{start:{line:76,column:8},end:{line:76,column:27}},"16":{start:{line:77,column:8},end:{line:77,column:27}},"17":{start:{line:79,column:8},end:{line:79,column:24}},"18":{start:{line:80,column:8},end:{line:82,column:9}},"19":{start:{line:81,column:12},end:{line:81,column:52}},"20":{start:{line:88,column:8},end:{line:88,column:26}},"21":{start:{line:94,column:8},end:{line:94,column:29}},"22":{start:{line:100,column:8},end:{line:100,column:34}},"23":{start:{line:106,column:8},end:{line:106,column:37}},"24":{start:{line:113,column:8},end:{line:113,column:34}},"25":{start:{line:114,column:8},end:{line:116,column:9}},"26":{start:{line:115,column:12},end:{line:115,column:52}},"27":{start:{line:125,column:8},end:{line:125,column:33}},"28":{start:{line:131,column:8},end:{line:131,column:32}},"29":{start:{line:132,column:8},end:{line:132,column:83}},"30":{start:{line:133,column:8},end:{line:133,column:90}},"31":{start:{line:139,column:8},end:{line:139,column:70}},"32":{start:{line:149,column:8},end:{line:149,column:73}},"33":{start:{line:155,column:8},end:{line:155,column:31}},"34":{start:{line:156,column:8},end:{line:159,column:9}},"35":{start:{line:157,column:12},end:{line:157,column:56}},"36":{start:{line:158,column:12},end:{line:158,column:60}},"37":{start:{line:165,column:8},end:{line:165,column:34}},"38":{start:{line:172,column:8},end:{line:172,column:48}},"39":{start:{line:173,column:8},end:{line:174,column:46}},"40":{start:{line:174,column:12},end:{line:174,column:46}},"41":{start:{line:181,column:21},end:{line:181,column:26}},"42":{start:{line:182,column:8},end:{line:190,column:9}},"43":{start:{line:182,column:21},end:{line:182,column:22}},"44":{start:{line:183,column:12},end:{line:185,column:75}},"45":{start:{line:185,column:16},end:{line:185,column:75}},"46":{start:{line:186,column:12},end:{line:189,column:13}},"47":{start:{line:187,column:16},end:{line:187,column:51}},"48":{start:{line:188,column:16},end:{line:188,column:28}},"49":{start:{line:191,column:8},end:{line:191,column:21}},"50":{start:{line:198,column:23},end:{line:198,column:66}},"51":{start:{line:198,column:45},end:{line:198,column:65}},"52":{start:{line:200,column:8},end:{line:200,column:83}},"53":{start:{line:206,column:8},end:{line:208,column:9}},"54":{start:{line:207,column:12},end:{line:207,column:63}},"55":{start:{line:214,column:8},end:{line:214,column:33}},"56":{start:{line:215,column:8},end:{line:215,column:50}},"57":{start:{line:222,column:8},end:{line:222,column:36}},"58":{start:{line:228,column:8},end:{line:232,column:11}},"59":{start:{line:229,column:12},end:{line:231,column:13}},"60":{start:{line:230,column:16},end:{line:230,column:87}},"61":{start:{line:234,column:12},end:{line:234,column:41}},"62":{start:{line:235,column:12},end:{line:239,column:15}},"63":{start:{line:236,column:16},end:{line:238,column:17}},"64":{start:{line:237,column:20},end:{line:237,column:82}},"65":{start:{line:250,column:21},end:{line:250,column:25}},"66":{start:{line:251,column:8},end:{line:261,column:9}},"67":{start:{line:251,column:21},end:{line:251,column:22}},"68":{start:{line:252,column:12},end:{line:260,column:13}},"69":{start:{line:253,column:16},end:{line:253,column:33}},"70":{start:{line:255,column:16},end:{line:259,column:17}},"71":{start:{line:256,column:42},end:{line:256,column:102}},"72":{start:{line:257,column:20},end:{line:258,column:49}},"73":{start:{line:258,column:24},end:{line:258,column:49}},"74":{start:{line:262,column:8},end:{line:262,column:22}},"75":{start:{line:268,column:8},end:{line:275,column:9}},"76":{start:{line:269,column:12},end:{line:274,column:13}},"77":{start:{line:269,column:25},end:{line:269,column:26}},"78":{start:{line:269,column:34},end:{line:269,column:45}},"79":{start:{line:270,column:16},end:{line:270,column:38}},"80":{start:{line:271,column:16},end:{line:273,column:17}},"81":{start:{line:272,column:20},end:{line:272,column:90}},"82":{start:{line:281,column:21},end:{line:281,column:23}},"83":{start:{line:281,column:34},end:{line:281,column:36}},"84":{start:{line:282,column:8},end:{line:288,column:9}},"85":{start:{line:282,column:21},end:{line:282,column:22}},"86":{start:{line:282,column:30},end:{line:282,column:41}},"87":{start:{line:283,column:12},end:{line:283,column:51}},"88":{start:{line:284,column:12},end:{line:284,column:44}},"89":{start:{line:285,column:12},end:{line:285,column:46}},"90":{start:{line:286,column:12},end:{line:286,column:45}},"91":{start:{line:287,column:12},end:{line:287,column:52}},"92":{start:{line:289,column:8},end:{line:296,column:9}},"93":{start:{line:289,column:21},end:{line:289,column:22}},"94":{start:{line:289,column:30},end:{line:289,column:41}},"95":{start:{line:290,column:12},end:{line:295,column:13}},"96":{start:{line:291,column:16},end:{line:291,column:82}},"97":{start:{line:294,column:16},end:{line:294,column:35}},"98":{start:{line:297,column:8},end:{line:297,column:20}},"99":{start:{line:299,column:13},end:{line:299,column:180}},"100":{start:{line:300,column:13},end:{line:300,column:805}},"101":{start:{line:303,column:0},end:{line:343,column:20}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:7,column:4},end:{line:7,column:5}},loc:{start:{line:7,column:18},end:{line:65,column:5}},line:7},"1":{name:"(anonymous_1)",decl:{start:{line:69,column:4},end:{line:69,column:5}},loc:{start:{line:69,column:15},end:{line:71,column:5}},line:69},"2":{name:"(anonymous_2)",decl:{start:{line:75,column:4},end:{line:75,column:5}},loc:{start:{line:75,column:20},end:{line:83,column:5}},line:75},"3":{name:"(anonymous_3)",decl:{start:{line:87,column:4},end:{line:87,column:5}},loc:{start:{line:87,column:28},end:{line:89,column:5}},line:87},"4":{name:"(anonymous_4)",decl:{start:{line:93,column:4},end:{line:93,column:5}},loc:{start:{line:93,column:27},end:{line:95,column:5}},line:93},"5":{name:"(anonymous_5)",decl:{start:{line:99,column:4},end:{line:99,column:5}},loc:{start:{line:99,column:24},end:{line:101,column:5}},line:99},"6":{name:"(anonymous_6)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:23},end:{line:107,column:5}},line:105},"7":{name:"(anonymous_7)",decl:{start:{line:112,column:4},end:{line:112,column:5}},loc:{start:{line:112,column:27},end:{line:120,column:5}},line:112},"8":{name:"(anonymous_8)",decl:{start:{line:124,column:4},end:{line:124,column:5}},loc:{start:{line:124,column:22},end:{line:126,column:5}},line:124},"9":{name:"(anonymous_9)",decl:{start:{line:130,column:4},end:{line:130,column:5}},loc:{start:{line:130,column:25},end:{line:134,column:5}},line:130},"10":{name:"(anonymous_10)",decl:{start:{line:138,column:4},end:{line:138,column:5}},loc:{start:{line:138,column:22},end:{line:144,column:5}},line:138},"11":{name:"(anonymous_11)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:21},end:{line:150,column:5}},line:148},"12":{name:"(anonymous_12)",decl:{start:{line:154,column:4},end:{line:154,column:5}},loc:{start:{line:154,column:24},end:{line:160,column:5}},line:154},"13":{name:"(anonymous_13)",decl:{start:{line:164,column:4},end:{line:164,column:5}},loc:{start:{line:164,column:23},end:{line:166,column:5}},line:164},"14":{name:"(anonymous_14)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:15},end:{line:175,column:5}},line:171},"15":{name:"(anonymous_15)",decl:{start:{line:180,column:4},end:{line:180,column:5}},loc:{start:{line:180,column:27},end:{line:192,column:5}},line:180},"16":{name:"(anonymous_16)",decl:{start:{line:196,column:4},end:{line:196,column:5}},loc:{start:{line:196,column:15},end:{line:201,column:5}},line:196},"17":{name:"(anonymous_17)",decl:{start:{line:198,column:38},end:{line:198,column:39}},loc:{start:{line:198,column:45},end:{line:198,column:65}},line:198},"18":{name:"(anonymous_18)",decl:{start:{line:205,column:4},end:{line:205,column:5}},loc:{start:{line:205,column:26},end:{line:209,column:5}},line:205},"19":{name:"(anonymous_19)",decl:{start:{line:213,column:4},end:{line:213,column:5}},loc:{start:{line:213,column:18},end:{line:217,column:5}},line:213},"20":{name:"(anonymous_20)",decl:{start:{line:221,column:4},end:{line:221,column:5}},loc:{start:{line:221,column:25},end:{line:223,column:5}},line:221},"21":{name:"(anonymous_21)",decl:{start:{line:227,column:4},end:{line:227,column:5}},loc:{start:{line:227,column:29},end:{line:241,column:5}},line:227},"22":{name:"(anonymous_22)",decl:{start:{line:228,column:27},end:{line:228,column:28}},loc:{start:{line:228,column:37},end:{line:232,column:9}},line:228},"23":{name:"collapseAllHIdden",decl:{start:{line:233,column:17},end:{line:233,column:34}},loc:{start:{line:233,column:78},end:{line:240,column:9}},line:233},"24":{name:"(anonymous_24)",decl:{start:{line:235,column:34},end:{line:235,column:35}},loc:{start:{line:235,column:45},end:{line:239,column:13}},line:235},"25":{name:"(anonymous_25)",decl:{start:{line:249,column:4},end:{line:249,column:5}},loc:{start:{line:249,column:38},end:{line:263,column:5}},line:249},"26":{name:"(anonymous_26)",decl:{start:{line:267,column:4},end:{line:267,column:5}},loc:{start:{line:267,column:52},end:{line:276,column:5}},line:267},"27":{name:"(anonymous_27)",decl:{start:{line:280,column:4},end:{line:280,column:5}},loc:{start:{line:280,column:27},end:{line:298,column:5}},line:280}},branchMap:{"0":{loc:{start:{line:80,column:8},end:{line:82,column:9}},type:"if",locations:[{start:{line:80,column:8},end:{line:82,column:9}},{start:{line:80,column:8},end:{line:82,column:9}}],line:80},"1":{loc:{start:{line:114,column:8},end:{line:116,column:9}},type:"if",locations:[{start:{line:114,column:8},end:{line:116,column:9}},{start:{line:114,column:8},end:{line:116,column:9}}],line:114},"2":{loc:{start:{line:114,column:12},end:{line:114,column:68}},type:"binary-expr",locations:[{start:{line:114,column:12},end:{line:114,column:22}},{start:{line:114,column:26},end:{line:114,column:43}},{start:{line:114,column:47},end:{line:114,column:68}}],line:114},"3":{loc:{start:{line:149,column:15},end:{line:149,column:72}},type:"cond-expr",locations:[{start:{line:149,column:35},end:{line:149,column:65}},{start:{line:149,column:68},end:{line:149,column:72}}],line:149},"4":{loc:{start:{line:156,column:8},end:{line:159,column:9}},type:"if",locations:[{start:{line:156,column:8},end:{line:159,column:9}},{start:{line:156,column:8},end:{line:159,column:9}}],line:156},"5":{loc:{start:{line:173,column:8},end:{line:174,column:46}},type:"if",locations:[{start:{line:173,column:8},end:{line:174,column:46}},{start:{line:173,column:8},end:{line:174,column:46}}],line:173},"6":{loc:{start:{line:183,column:12},end:{line:185,column:75}},type:"if",locations:[{start:{line:183,column:12},end:{line:185,column:75}},{start:{line:183,column:12},end:{line:185,column:75}}],line:183},"7":{loc:{start:{line:183,column:16},end:{line:184,column:55}},type:"binary-expr",locations:[{start:{line:183,column:16},end:{line:183,column:49}},{start:{line:184,column:16},end:{line:184,column:55}}],line:183},"8":{loc:{start:{line:186,column:12},end:{line:189,column:13}},type:"if",locations:[{start:{line:186,column:12},end:{line:189,column:13}},{start:{line:186,column:12},end:{line:189,column:13}}],line:186},"9":{loc:{start:{line:186,column:16},end:{line:186,column:65}},type:"binary-expr",locations:[{start:{line:186,column:16},end:{line:186,column:22}},{start:{line:186,column:26},end:{line:186,column:65}}],line:186},"10":{loc:{start:{line:200,column:21},end:{line:200,column:82}},type:"cond-expr",locations:[{start:{line:200,column:40},end:{line:200,column:69}},{start:{line:200,column:72},end:{line:200,column:82}}],line:200},"11":{loc:{start:{line:206,column:8},end:{line:208,column:9}},type:"if",locations:[{start:{line:206,column:8},end:{line:208,column:9}},{start:{line:206,column:8},end:{line:208,column:9}}],line:206},"12":{loc:{start:{line:229,column:12},end:{line:231,column:13}},type:"if",locations:[{start:{line:229,column:12},end:{line:231,column:13}},{start:{line:229,column:12},end:{line:231,column:13}}],line:229},"13":{loc:{start:{line:236,column:16},end:{line:238,column:17}},type:"if",locations:[{start:{line:236,column:16},end:{line:238,column:17}},{start:{line:236,column:16},end:{line:238,column:17}}],line:236},"14":{loc:{start:{line:252,column:12},end:{line:260,column:13}},type:"if",locations:[{start:{line:252,column:12},end:{line:260,column:13}},{start:{line:252,column:12},end:{line:260,column:13}}],line:252},"15":{loc:{start:{line:255,column:16},end:{line:259,column:17}},type:"if",locations:[{start:{line:255,column:16},end:{line:259,column:17}},{start:{line:255,column:16},end:{line:259,column:17}}],line:255},"16":{loc:{start:{line:257,column:20},end:{line:258,column:49}},type:"if",locations:[{start:{line:257,column:20},end:{line:258,column:49}},{start:{line:257,column:20},end:{line:258,column:49}}],line:257},"17":{loc:{start:{line:268,column:8},end:{line:275,column:9}},type:"if",locations:[{start:{line:268,column:8},end:{line:275,column:9}},{start:{line:268,column:8},end:{line:275,column:9}}],line:268},"18":{loc:{start:{line:271,column:16},end:{line:273,column:17}},type:"if",locations:[{start:{line:271,column:16},end:{line:273,column:17}},{start:{line:271,column:16},end:{line:273,column:17}}],line:271},"19":{loc:{start:{line:290,column:12},end:{line:295,column:13}},type:"if",locations:[{start:{line:290,column:12},end:{line:295,column:13}},{start:{line:290,column:12},end:{line:295,column:13}}],line:290}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},b:{"0":[0,0],"1":[0,0],"2":[0,0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0]},inputSourceMap:{version:3,file:"treeview.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/treeview/treeview.ts"],names:[],mappings:"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",sourcesContent:["import {\r\n ContentChild,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente f\xFCr SacTreeView\r\n */\r\n@Directive()\r\nexport class SacTreeViewCommon implements OnInit {\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items collapsed sind. Default value: undefined/null\r\n */\r\n public _collapseAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items selected sind. Default value: undefined/null\r\n */\r\n private _selectAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt array of nodes. Default value: empty array [].\r\n */\r\n public nodes: any[] = [];\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isCollapsed'. Es wird benutzt beim rendering. F\xFCr Expand/Collapsed Sicht des Node(Wert)\r\n */\r\n public collapseAttr = 'isCollapsed';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isSelected'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public selectAttr = 'isSelected';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isIndeterminate'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public inDeterminateAttr = 'isIndeterminate';\r\n\r\n /**\r\n * Providen data for tree.\r\n */\r\n private _data: any[] = [];\r\n\r\n /**\r\n * Getter f\xFCr Data des TreeView\r\n */\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n /**\r\n * Input Property f\xFCr Data des TreeView\r\n */\r\n @Input()\r\n set data(value: any[]) {\r\n this._data = value;\r\n this.nodes = value;\r\n\r\n // this.nodes.forEach(node => node[\"typeId\"] = \"13\")\r\n\r\n this.LoadTree();\r\n\r\n if (this._collapseAll !== undefined) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n }\r\n\r\n /**\r\n * Input Property f\xFCr template des TreeView. Type: TemplateRef<any>.\r\n */\r\n @Input()\r\n template: TemplateRef<any>;\r\n\r\n /**\r\n * Die Directive erh\xE4lt die actions f\xFCr das TreeView\r\n */\r\n @ContentChild('actions', { static: true })\r\n public set treeviewTemplate(v: TemplateRef<any>) {\r\n this.template = v;\r\n }\r\n\r\n /**\r\n * Getter f\xFCr das TreeView Template\r\n */\r\n public get treeviewTemplate(): TemplateRef<any> {\r\n return this.template;\r\n }\r\n\r\n /**\r\n * Input property erh\xE4lt Icon f\xFCr das Template\r\n */\r\n @Input()\r\n fileicontemplate: TemplateRef<any>;\r\n\r\n /**\r\n * Setter property. Deffiniert das FileIcon f\xFCr das TreeView\r\n */\r\n @ContentChild('treefileicon', { static: true })\r\n public set treefileicon(v: TemplateRef<any>) {\r\n this.fileicontemplate = v;\r\n }\r\n\r\n /**\r\n * Getter property. Ergibt das FileIcon f\xFCr das TreeView\r\n */\r\n public get treefileicon(): TemplateRef<any> {\r\n return this.fileicontemplate;\r\n }\r\n\r\n /**\r\n * Input property f\xFCr den Namen des TreeView. Type string. Default value: \"\"\r\n */\r\n @Input()\r\n name: string = '';\r\n\r\n /**\r\n * A flag indicating data is flatten in array and prepare is required.(Default\r\n * is false).\r\n */\r\n @Input() prepareData = false;\r\n\r\n /**\r\n * Attribute for Text in Tree\r\n */\r\n @Input() textAttr = 'data';\r\n\r\n /**\r\n * Name of ID property in input data.\r\n */\r\n @Input() idAttr = 'id';\r\n\r\n /**\r\n * Name of parent property in input data.\r\n */\r\n @Input() parentAttr = 'PARENT_ID';\r\n\r\n /**\r\n * Name of children list property in input data.\r\n */\r\n @Input() childrenAttr = 'children';\r\n\r\n /**\r\n * Title des Treeview\r\n */\r\n @Input() title;\r\n\r\n // @Input(\"titleAction\") _titleAction: string\r\n\r\n /**\r\n * Collapse or expand all parent nodes.\r\n */\r\n @Input()\r\n set collapseall(value: boolean) {\r\n this._collapseAll = value;\r\n if (this.nodes && this.nodes.length && this.nodes.length > 0) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n\r\n // this._recursiveEdit(\r\n // this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);\r\n\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Getter f\xFCr das collapse property. Ergibt boolean Wert, ob die Items collapsed/expand sind.\r\n */\r\n get collapseall(): boolean {\r\n return this._collapseAll;\r\n }\r\n\r\n /**\r\n * Select or deselect all nodes.\r\n */\r\n @Input()\r\n set selectall(value: boolean) {\r\n this._selectAll = value;\r\n this._recursiveEdit(this.nodes, this.childrenAttr, this.selectAttr, value);\r\n this._recursiveEdit(\r\n this.nodes,\r\n this.childrenAttr,\r\n this.inDeterminateAttr,\r\n false\r\n );\r\n }\r\n\r\n /**\r\n * Input property - setter. Deffiniert das ID des selektierten Item(node)\r\n */\r\n @Input()\r\n set selectedid(v: any) {\r\n this.selectedNode = this.findNode(this.nodes, v, this.idAttr);\r\n\r\n // if (this.selectedNode) {\r\n // this.selectedIdEmitter.emit(this.selectedNode[this.idAttr]);\r\n // this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);\r\n // }\r\n }\r\n\r\n /**\r\n * Getter. Ergibt das ID des selektierten Item(node)\r\n */\r\n get selectedId(): any {\r\n return this.selectedNode ? this.selectedNode[this.idAttr] : null;\r\n }\r\n\r\n /**\r\n * Das Property erh\xE4lt das selektierte Wert(node). Default value: undefined/null\r\n */\r\n private _selectedNode;\r\n\r\n /**\r\n * Setter f\xFCr das selektierte Wert(node). Wenn aufgerufen das ID und TextAttr des selected Node wird emitted\r\n */\r\n set selectedNode(v: any) {\r\n this._selectedNode = v;\r\n\r\n if (this._selectedNode) {\r\n this.selectedidchange.emit(this.selectedId);\r\n this.selectedtextchanged.emit(v[this.textAttr]);\r\n }\r\n }\r\n\r\n /**\r\n * Getter f\xFCr das selektierte Wert(node). Ergibt das selektierte Wert(node).\r\n */\r\n get selectedNode(): any {\r\n return this._selectedNode;\r\n }\r\n\r\n /**\r\n * Output Emitter. Emit das ID des selected Node.\r\n */\r\n @Output()\r\n selectedidchange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Output Emitter. Emit das TextAttr des selected Node.\r\n */\r\n @Output()\r\n selectedtextchanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Output Emitter. Emit wenn ein Node selektiert wird.\r\n */\r\n @Output()\r\n selecteditem: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.\r\n * Define an ngOnInit() method to handle any additional initialization tasks.\r\n */\r\n ngOnInit() {\r\n this.collapseAllNode(this._collapseAll);\r\n\r\n if (this.selectedId) this.openSelectedNode(this.nodes);\r\n }\r\n\r\n /**\r\n * Funktion setzt alle parent items recusiv zum selected node\r\n * auf collapsed = false\r\n */\r\n private openSelectedNode(data): boolean {\r\n let result: boolean = false;\r\n for (let i = 0; i < data.length; i++) {\r\n if (\r\n data[i][this.childrenAttr].length &&\r\n data[i][this.idAttr] != this.selectedId\r\n )\r\n result = this.openSelectedNode(data[i][this.childrenAttr]);\r\n if (result || data[i][this.idAttr] == this.selectedId) {\r\n data[i][this.collapseAttr] = false;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Die Methode vorbereitet die Daten f\xFCr das TreeView. Die Funktion sollte ge\xE4ndert werden abh\xE4ngig von dem kommenden Daten (wenn array)\r\n */\r\n private LoadTree() {\r\n //if the tree structure require array the function below should be changed\r\n const cloned = this._data.map((x) => Object.assign({}, x));\r\n\r\n // If data is flat, prepare data with recursive function.\r\n this.nodes = this.prepareData ? this._getPreparedData(cloned) : this._data;\r\n }\r\n\r\n /**\r\n * Die Methode collapse/expand den selectierten Node\r\n */\r\n onCollapseClick(node) {\r\n if (node[this.childrenAttr].length) {\r\n node[this.collapseAttr] = !node[this.collapseAttr];\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode set den selektierten Node und emit es.\r\n */\r\n onClick(node) {\r\n this.selectedNode = node;\r\n this.selecteditem.emit(this.selectedNode);\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Die Methode wird ein event mit Meldung zu Parent emit-en.\r\n */\r\n sendMsgToParent(msg) {\r\n this.selecteditem.emit(msg);\r\n }\r\n\r\n /**\r\n * Die Methode wird alle Nodes collapse\r\n */\r\n collapseAllNode(command) {\r\n this.nodes.forEach((node) => {\r\n if (node[this.childrenAttr].length) {\r\n collapseAllHIdden(node, this.collapseAttr, command, this.childrenAttr);\r\n }\r\n });\r\n function collapseAllHIdden(node, collapseAttr, command, childrenAttr) {\r\n node[collapseAttr] = command;\r\n node.children.forEach((child: any) => {\r\n if (child[childrenAttr].length) {\r\n collapseAllHIdden(child, collapseAttr, command, childrenAttr);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Funktion gibt node aus der liste zur\xFCck, welches das Value auf dem gew\xFCnschten Attribut hat\r\n * Wenn node nicht gefunden wird, wird null zur\xFCck gegeben\r\n * @param data Liste der nodes\r\n * @param searchValue Das gesuchte value\r\n * @param attr Der namen des Attributs auf dem das value gesucht wird\r\n */\r\n private findNode(data, searchValue, attr): any {\r\n let result: any = null;\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i][attr] == searchValue) result = data[i];\r\n else {\r\n if (data[i][this.childrenAttr].length) {\r\n let recursiveResult = this.findNode(\r\n data[i][this.childrenAttr],\r\n searchValue,\r\n attr\r\n );\r\n if (recursiveResult) result = recursiveResult;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Die Methode editiert (recursive) alle eingegebene Nodes abh\xE4ngig von gegebenen Attibute und Value Kriterien.\r\n */\r\n private _recursiveEdit(list, childrenAttr, attr, value) {\r\n if (Array.isArray(list)) {\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n list[i][attr] = value;\r\n if (list[i][childrenAttr].length) {\r\n this._recursiveEdit(list[i][childrenAttr], childrenAttr, attr, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode erstellt eine standarte Sicht-Liste von Nodes\r\n */\r\n private _getPreparedData(list) {\r\n const tree = [],\r\n lookup = {};\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n lookup[list[i][this.idAttr]] = list[i];\r\n list[i][this.childrenAttr] = [];\r\n list[i][this.collapseAttr] = true;\r\n list[i][this.selectAttr] = false;\r\n list[i][this.inDeterminateAttr] = false;\r\n }\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n if (list[i][this.parentAttr]) {\r\n lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);\r\n } else {\r\n tree.push(list[i]);\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"04cced2a16680b7458d2e4a8f1c03ef839486824"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
|
|
2
|
+
cov_1qqjitsvap=function(){return actualCoverage;};}return actualCoverage;}cov_1qqjitsvap();import{ContentChild,Directive,EventEmitter,Input,Output}from'@angular/core';import*as i0 from"@angular/core";/**
|
|
4
3
|
* Basis Komponente für SacTreeView
|
|
5
|
-
*/
|
|
6
|
-
class SacTreeViewCommon {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
4
|
+
*/class SacTreeViewCommon{constructor(){cov_1qqjitsvap().f[0]++;cov_1qqjitsvap().s[0]++;/**
|
|
9
5
|
* Das Property enthielt array of nodes. Default value: empty array [].
|
|
10
|
-
*/
|
|
11
|
-
this.nodes = [];
|
|
12
|
-
/**
|
|
6
|
+
*/this.nodes=[];/**
|
|
13
7
|
* Das Property enthielt node attribute: 'isCollapsed'. Es wird benutzt beim rendering. Für Expand/Collapsed Sicht des Node(Wert)
|
|
14
|
-
*/
|
|
15
|
-
this.collapseAttr = 'isCollapsed';
|
|
16
|
-
/**
|
|
8
|
+
*/cov_1qqjitsvap().s[1]++;this.collapseAttr='isCollapsed';/**
|
|
17
9
|
* Das Property enthielt node attribute: 'isSelected'. Es wird benutzt beim Vorbereitung des Data des TreeView
|
|
18
|
-
*/
|
|
19
|
-
this.selectAttr = 'isSelected';
|
|
20
|
-
/**
|
|
10
|
+
*/cov_1qqjitsvap().s[2]++;this.selectAttr='isSelected';/**
|
|
21
11
|
* Das Property enthielt node attribute: 'isIndeterminate'. Es wird benutzt beim Vorbereitung des Data des TreeView
|
|
22
|
-
*/
|
|
23
|
-
this.inDeterminateAttr = 'isIndeterminate';
|
|
24
|
-
/**
|
|
12
|
+
*/cov_1qqjitsvap().s[3]++;this.inDeterminateAttr='isIndeterminate';/**
|
|
25
13
|
* Providen data for tree.
|
|
26
|
-
*/
|
|
27
|
-
this._data = [];
|
|
28
|
-
/**
|
|
14
|
+
*/cov_1qqjitsvap().s[4]++;this._data=[];/**
|
|
29
15
|
* Input property für den Namen des TreeView. Type string. Default value: ""
|
|
30
|
-
*/
|
|
31
|
-
this.name = '';
|
|
32
|
-
/**
|
|
16
|
+
*/cov_1qqjitsvap().s[5]++;this.name='';/**
|
|
33
17
|
* A flag indicating data is flatten in array and prepare is required.(Default
|
|
34
18
|
* is false).
|
|
35
|
-
*/
|
|
36
|
-
this.prepareData = false;
|
|
37
|
-
/**
|
|
19
|
+
*/cov_1qqjitsvap().s[6]++;this.prepareData=false;/**
|
|
38
20
|
* Attribute for Text in Tree
|
|
39
|
-
*/
|
|
40
|
-
this.textAttr = 'data';
|
|
41
|
-
/**
|
|
21
|
+
*/cov_1qqjitsvap().s[7]++;this.textAttr='data';/**
|
|
42
22
|
* Name of ID property in input data.
|
|
43
|
-
*/
|
|
44
|
-
this.idAttr = 'id';
|
|
45
|
-
/**
|
|
23
|
+
*/cov_1qqjitsvap().s[8]++;this.idAttr='id';/**
|
|
46
24
|
* Name of parent property in input data.
|
|
47
|
-
*/
|
|
48
|
-
this.parentAttr = 'PARENT_ID';
|
|
49
|
-
/**
|
|
25
|
+
*/cov_1qqjitsvap().s[9]++;this.parentAttr='PARENT_ID';/**
|
|
50
26
|
* Name of children list property in input data.
|
|
51
|
-
*/
|
|
52
|
-
this.childrenAttr = 'children';
|
|
53
|
-
/**
|
|
27
|
+
*/cov_1qqjitsvap().s[10]++;this.childrenAttr='children';/**
|
|
54
28
|
* Output Emitter. Emit das ID des selected Node.
|
|
55
|
-
*/
|
|
56
|
-
this.selectedidchange = new EventEmitter();
|
|
57
|
-
/**
|
|
29
|
+
*/cov_1qqjitsvap().s[11]++;this.selectedidchange=new EventEmitter();/**
|
|
58
30
|
* Output Emitter. Emit das TextAttr des selected Node.
|
|
59
|
-
*/
|
|
60
|
-
this.selectedtextchanged = new EventEmitter();
|
|
61
|
-
/**
|
|
31
|
+
*/cov_1qqjitsvap().s[12]++;this.selectedtextchanged=new EventEmitter();/**
|
|
62
32
|
* Output Emitter. Emit wenn ein Node selektiert wird.
|
|
63
|
-
*/
|
|
64
|
-
this.selecteditem = new EventEmitter();
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
33
|
+
*/cov_1qqjitsvap().s[13]++;this.selecteditem=new EventEmitter();}/**
|
|
67
34
|
* Getter für Data des TreeView
|
|
68
|
-
*/
|
|
69
|
-
get data() {
|
|
70
|
-
return this._data;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
35
|
+
*/get data(){cov_1qqjitsvap().f[1]++;cov_1qqjitsvap().s[14]++;return this._data;}/**
|
|
73
36
|
* Input Property für Data des TreeView
|
|
74
|
-
*/
|
|
75
|
-
|
|
76
|
-
this._data = value;
|
|
77
|
-
this.nodes = value;
|
|
78
|
-
// this.nodes.forEach(node => node["typeId"] = "13")
|
|
79
|
-
this.LoadTree();
|
|
80
|
-
if (this._collapseAll !== undefined) {
|
|
81
|
-
this.collapseAllNode(this._collapseAll);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
37
|
+
*/set data(value){cov_1qqjitsvap().f[2]++;cov_1qqjitsvap().s[15]++;this._data=value;cov_1qqjitsvap().s[16]++;this.nodes=value;// this.nodes.forEach(node => node["typeId"] = "13")
|
|
38
|
+
cov_1qqjitsvap().s[17]++;this.LoadTree();cov_1qqjitsvap().s[18]++;if(this._collapseAll!==undefined){cov_1qqjitsvap().b[0][0]++;cov_1qqjitsvap().s[19]++;this.collapseAllNode(this._collapseAll);}else{cov_1qqjitsvap().b[0][1]++;}}/**
|
|
85
39
|
* Die Directive erhält die actions für das TreeView
|
|
86
|
-
*/
|
|
87
|
-
set treeviewTemplate(v) {
|
|
88
|
-
this.template = v;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
40
|
+
*/set treeviewTemplate(v){cov_1qqjitsvap().f[3]++;cov_1qqjitsvap().s[20]++;this.template=v;}/**
|
|
91
41
|
* Getter für das TreeView Template
|
|
92
|
-
*/
|
|
93
|
-
get treeviewTemplate() {
|
|
94
|
-
return this.template;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
42
|
+
*/get treeviewTemplate(){cov_1qqjitsvap().f[4]++;cov_1qqjitsvap().s[21]++;return this.template;}/**
|
|
97
43
|
* Setter property. Deffiniert das FileIcon für das TreeView
|
|
98
|
-
*/
|
|
99
|
-
set treefileicon(v) {
|
|
100
|
-
this.fileicontemplate = v;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
44
|
+
*/set treefileicon(v){cov_1qqjitsvap().f[5]++;cov_1qqjitsvap().s[22]++;this.fileicontemplate=v;}/**
|
|
103
45
|
* Getter property. Ergibt das FileIcon für das TreeView
|
|
104
|
-
*/
|
|
105
|
-
|
|
106
|
-
return this.fileicontemplate;
|
|
107
|
-
}
|
|
108
|
-
// @Input("titleAction") _titleAction: string
|
|
109
|
-
/**
|
|
46
|
+
*/get treefileicon(){cov_1qqjitsvap().f[6]++;cov_1qqjitsvap().s[23]++;return this.fileicontemplate;}// @Input("titleAction") _titleAction: string
|
|
47
|
+
/**
|
|
110
48
|
* Collapse or expand all parent nodes.
|
|
111
|
-
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.collapseAllNode(this._collapseAll);
|
|
116
|
-
}
|
|
117
|
-
// this._recursiveEdit(
|
|
118
|
-
// this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);
|
|
119
|
-
// this.cd.detectChanges();
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
49
|
+
*/set collapseall(value){cov_1qqjitsvap().f[7]++;cov_1qqjitsvap().s[24]++;this._collapseAll=value;cov_1qqjitsvap().s[25]++;if((cov_1qqjitsvap().b[2][0]++,this.nodes)&&(cov_1qqjitsvap().b[2][1]++,this.nodes.length)&&(cov_1qqjitsvap().b[2][2]++,this.nodes.length>0)){cov_1qqjitsvap().b[1][0]++;cov_1qqjitsvap().s[26]++;this.collapseAllNode(this._collapseAll);}else{cov_1qqjitsvap().b[1][1]++;}// this._recursiveEdit(
|
|
50
|
+
// this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);
|
|
51
|
+
// this.cd.detectChanges();
|
|
52
|
+
}/**
|
|
122
53
|
* Getter für das collapse property. Ergibt boolean Wert, ob die Items collapsed/expand sind.
|
|
123
|
-
*/
|
|
124
|
-
get collapseall() {
|
|
125
|
-
return this._collapseAll;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
54
|
+
*/get collapseall(){cov_1qqjitsvap().f[8]++;cov_1qqjitsvap().s[27]++;return this._collapseAll;}/**
|
|
128
55
|
* Select or deselect all nodes.
|
|
129
|
-
*/
|
|
130
|
-
set selectall(value) {
|
|
131
|
-
this._selectAll = value;
|
|
132
|
-
this._recursiveEdit(this.nodes, this.childrenAttr, this.selectAttr, value);
|
|
133
|
-
this._recursiveEdit(this.nodes, this.childrenAttr, this.inDeterminateAttr, false);
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
56
|
+
*/set selectall(value){cov_1qqjitsvap().f[9]++;cov_1qqjitsvap().s[28]++;this._selectAll=value;cov_1qqjitsvap().s[29]++;this._recursiveEdit(this.nodes,this.childrenAttr,this.selectAttr,value);cov_1qqjitsvap().s[30]++;this._recursiveEdit(this.nodes,this.childrenAttr,this.inDeterminateAttr,false);}/**
|
|
136
57
|
* Input property - setter. Deffiniert das ID des selektierten Item(node)
|
|
137
|
-
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);
|
|
143
|
-
// }
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
58
|
+
*/set selectedid(v){cov_1qqjitsvap().f[10]++;cov_1qqjitsvap().s[31]++;this.selectedNode=this.findNode(this.nodes,v,this.idAttr);// if (this.selectedNode) {
|
|
59
|
+
// this.selectedIdEmitter.emit(this.selectedNode[this.idAttr]);
|
|
60
|
+
// this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);
|
|
61
|
+
// }
|
|
62
|
+
}/**
|
|
146
63
|
* Getter. Ergibt das ID des selektierten Item(node)
|
|
147
|
-
*/
|
|
148
|
-
get selectedId() {
|
|
149
|
-
return this.selectedNode ? this.selectedNode[this.idAttr] : null;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
64
|
+
*/get selectedId(){cov_1qqjitsvap().f[11]++;cov_1qqjitsvap().s[32]++;return this.selectedNode?(cov_1qqjitsvap().b[3][0]++,this.selectedNode[this.idAttr]):(cov_1qqjitsvap().b[3][1]++,null);}/**
|
|
152
65
|
* Setter für das selektierte Wert(node). Wenn aufgerufen das ID und TextAttr des selected Node wird emitted
|
|
153
|
-
*/
|
|
154
|
-
set selectedNode(v) {
|
|
155
|
-
this._selectedNode = v;
|
|
156
|
-
if (this._selectedNode) {
|
|
157
|
-
this.selectedidchange.emit(this.selectedId);
|
|
158
|
-
this.selectedtextchanged.emit(v[this.textAttr]);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
66
|
+
*/set selectedNode(v){cov_1qqjitsvap().f[12]++;cov_1qqjitsvap().s[33]++;this._selectedNode=v;cov_1qqjitsvap().s[34]++;if(this._selectedNode){cov_1qqjitsvap().b[4][0]++;cov_1qqjitsvap().s[35]++;this.selectedidchange.emit(this.selectedId);cov_1qqjitsvap().s[36]++;this.selectedtextchanged.emit(v[this.textAttr]);}else{cov_1qqjitsvap().b[4][1]++;}}/**
|
|
162
67
|
* Getter für das selektierte Wert(node). Ergibt das selektierte Wert(node).
|
|
163
|
-
*/
|
|
164
|
-
get selectedNode() {
|
|
165
|
-
return this._selectedNode;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
68
|
+
*/get selectedNode(){cov_1qqjitsvap().f[13]++;cov_1qqjitsvap().s[37]++;return this._selectedNode;}/**
|
|
168
69
|
* A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.
|
|
169
70
|
* Define an ngOnInit() method to handle any additional initialization tasks.
|
|
170
|
-
*/
|
|
171
|
-
ngOnInit() {
|
|
172
|
-
this.collapseAllNode(this._collapseAll);
|
|
173
|
-
if (this.selectedId)
|
|
174
|
-
this.openSelectedNode(this.nodes);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
71
|
+
*/ngOnInit(){cov_1qqjitsvap().f[14]++;cov_1qqjitsvap().s[38]++;this.collapseAllNode(this._collapseAll);cov_1qqjitsvap().s[39]++;if(this.selectedId){cov_1qqjitsvap().b[5][0]++;cov_1qqjitsvap().s[40]++;this.openSelectedNode(this.nodes);}else{cov_1qqjitsvap().b[5][1]++;}}/**
|
|
177
72
|
* Funktion setzt alle parent items recusiv zum selected node
|
|
178
73
|
* auf collapsed = false
|
|
179
|
-
*/
|
|
180
|
-
openSelectedNode(data) {
|
|
181
|
-
let result = false;
|
|
182
|
-
for (let i = 0; i < data.length; i++) {
|
|
183
|
-
if (data[i][this.childrenAttr].length &&
|
|
184
|
-
data[i][this.idAttr] != this.selectedId)
|
|
185
|
-
result = this.openSelectedNode(data[i][this.childrenAttr]);
|
|
186
|
-
if (result || data[i][this.idAttr] == this.selectedId) {
|
|
187
|
-
data[i][this.collapseAttr] = false;
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
74
|
+
*/openSelectedNode(data){cov_1qqjitsvap().f[15]++;let result=(cov_1qqjitsvap().s[41]++,false);cov_1qqjitsvap().s[42]++;for(let i=(cov_1qqjitsvap().s[43]++,0);i<data.length;i++){cov_1qqjitsvap().s[44]++;if((cov_1qqjitsvap().b[7][0]++,data[i][this.childrenAttr].length)&&(cov_1qqjitsvap().b[7][1]++,data[i][this.idAttr]!=this.selectedId)){cov_1qqjitsvap().b[6][0]++;cov_1qqjitsvap().s[45]++;result=this.openSelectedNode(data[i][this.childrenAttr]);}else{cov_1qqjitsvap().b[6][1]++;}cov_1qqjitsvap().s[46]++;if((cov_1qqjitsvap().b[9][0]++,result)||(cov_1qqjitsvap().b[9][1]++,data[i][this.idAttr]==this.selectedId)){cov_1qqjitsvap().b[8][0]++;cov_1qqjitsvap().s[47]++;data[i][this.collapseAttr]=false;cov_1qqjitsvap().s[48]++;return true;}else{cov_1qqjitsvap().b[8][1]++;}}cov_1qqjitsvap().s[49]++;return false;}/**
|
|
194
75
|
* Die Methode vorbereitet die Daten für das TreeView. Die Funktion sollte geändert werden abhängig von dem kommenden Daten (wenn array)
|
|
195
|
-
*/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const cloned = this._data.map((x) => Object.assign({}, x));
|
|
199
|
-
// If data is flat, prepare data with recursive function.
|
|
200
|
-
this.nodes = this.prepareData ? this._getPreparedData(cloned) : this._data;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
76
|
+
*/LoadTree(){cov_1qqjitsvap().f[16]++;//if the tree structure require array the function below should be changed
|
|
77
|
+
const cloned=(cov_1qqjitsvap().s[50]++,this._data.map(x=>{cov_1qqjitsvap().f[17]++;cov_1qqjitsvap().s[51]++;return Object.assign({},x);}));// If data is flat, prepare data with recursive function.
|
|
78
|
+
cov_1qqjitsvap().s[52]++;this.nodes=this.prepareData?(cov_1qqjitsvap().b[10][0]++,this._getPreparedData(cloned)):(cov_1qqjitsvap().b[10][1]++,this._data);}/**
|
|
203
79
|
* Die Methode collapse/expand den selectierten Node
|
|
204
|
-
*/
|
|
205
|
-
onCollapseClick(node) {
|
|
206
|
-
if (node[this.childrenAttr].length) {
|
|
207
|
-
node[this.collapseAttr] = !node[this.collapseAttr];
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
80
|
+
*/onCollapseClick(node){cov_1qqjitsvap().f[18]++;cov_1qqjitsvap().s[53]++;if(node[this.childrenAttr].length){cov_1qqjitsvap().b[11][0]++;cov_1qqjitsvap().s[54]++;node[this.collapseAttr]=!node[this.collapseAttr];}else{cov_1qqjitsvap().b[11][1]++;}}/**
|
|
211
81
|
* Die Methode set den selektierten Node und emit es.
|
|
212
|
-
*/
|
|
213
|
-
|
|
214
|
-
this.selectedNode = node;
|
|
215
|
-
this.selecteditem.emit(this.selectedNode);
|
|
216
|
-
// this.cd.detectChanges();
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
82
|
+
*/onClick(node){cov_1qqjitsvap().f[19]++;cov_1qqjitsvap().s[55]++;this.selectedNode=node;cov_1qqjitsvap().s[56]++;this.selecteditem.emit(this.selectedNode);// this.cd.detectChanges();
|
|
83
|
+
}/**
|
|
219
84
|
* Die Methode wird ein event mit Meldung zu Parent emit-en.
|
|
220
|
-
*/
|
|
221
|
-
sendMsgToParent(msg) {
|
|
222
|
-
this.selecteditem.emit(msg);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
85
|
+
*/sendMsgToParent(msg){cov_1qqjitsvap().f[20]++;cov_1qqjitsvap().s[57]++;this.selecteditem.emit(msg);}/**
|
|
225
86
|
* Die Methode wird alle Nodes collapse
|
|
226
|
-
*/
|
|
227
|
-
collapseAllNode(command) {
|
|
228
|
-
this.nodes.forEach((node) => {
|
|
229
|
-
if (node[this.childrenAttr].length) {
|
|
230
|
-
collapseAllHIdden(node, this.collapseAttr, command, this.childrenAttr);
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
function collapseAllHIdden(node, collapseAttr, command, childrenAttr) {
|
|
234
|
-
node[collapseAttr] = command;
|
|
235
|
-
node.children.forEach((child) => {
|
|
236
|
-
if (child[childrenAttr].length) {
|
|
237
|
-
collapseAllHIdden(child, collapseAttr, command, childrenAttr);
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
87
|
+
*/collapseAllNode(command){cov_1qqjitsvap().f[21]++;cov_1qqjitsvap().s[58]++;this.nodes.forEach(node=>{cov_1qqjitsvap().f[22]++;cov_1qqjitsvap().s[59]++;if(node[this.childrenAttr].length){cov_1qqjitsvap().b[12][0]++;cov_1qqjitsvap().s[60]++;collapseAllHIdden(node,this.collapseAttr,command,this.childrenAttr);}else{cov_1qqjitsvap().b[12][1]++;}});function collapseAllHIdden(node,collapseAttr,command,childrenAttr){cov_1qqjitsvap().f[23]++;cov_1qqjitsvap().s[61]++;node[collapseAttr]=command;cov_1qqjitsvap().s[62]++;node.children.forEach(child=>{cov_1qqjitsvap().f[24]++;cov_1qqjitsvap().s[63]++;if(child[childrenAttr].length){cov_1qqjitsvap().b[13][0]++;cov_1qqjitsvap().s[64]++;collapseAllHIdden(child,collapseAttr,command,childrenAttr);}else{cov_1qqjitsvap().b[13][1]++;}});}}/**
|
|
243
88
|
* Funktion gibt node aus der liste zurück, welches das Value auf dem gewünschten Attribut hat
|
|
244
89
|
* Wenn node nicht gefunden wird, wird null zurück gegeben
|
|
245
90
|
* @param data Liste der nodes
|
|
246
91
|
* @param searchValue Das gesuchte value
|
|
247
92
|
* @param attr Der namen des Attributs auf dem das value gesucht wird
|
|
248
|
-
*/
|
|
249
|
-
findNode(data, searchValue, attr) {
|
|
250
|
-
let result = null;
|
|
251
|
-
for (let i = 0; i < data.length; i++) {
|
|
252
|
-
if (data[i][attr] == searchValue)
|
|
253
|
-
result = data[i];
|
|
254
|
-
else {
|
|
255
|
-
if (data[i][this.childrenAttr].length) {
|
|
256
|
-
let recursiveResult = this.findNode(data[i][this.childrenAttr], searchValue, attr);
|
|
257
|
-
if (recursiveResult)
|
|
258
|
-
result = recursiveResult;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return result;
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
93
|
+
*/findNode(data,searchValue,attr){cov_1qqjitsvap().f[25]++;let result=(cov_1qqjitsvap().s[65]++,null);cov_1qqjitsvap().s[66]++;for(let i=(cov_1qqjitsvap().s[67]++,0);i<data.length;i++){cov_1qqjitsvap().s[68]++;if(data[i][attr]==searchValue){cov_1qqjitsvap().b[14][0]++;cov_1qqjitsvap().s[69]++;result=data[i];}else{cov_1qqjitsvap().b[14][1]++;cov_1qqjitsvap().s[70]++;if(data[i][this.childrenAttr].length){cov_1qqjitsvap().b[15][0]++;let recursiveResult=(cov_1qqjitsvap().s[71]++,this.findNode(data[i][this.childrenAttr],searchValue,attr));cov_1qqjitsvap().s[72]++;if(recursiveResult){cov_1qqjitsvap().b[16][0]++;cov_1qqjitsvap().s[73]++;result=recursiveResult;}else{cov_1qqjitsvap().b[16][1]++;}}else{cov_1qqjitsvap().b[15][1]++;}}}cov_1qqjitsvap().s[74]++;return result;}/**
|
|
265
94
|
* Die Methode editiert (recursive) alle eingegebene Nodes abhängig von gegebenen Attibute und Value Kriterien.
|
|
266
|
-
*/
|
|
267
|
-
_recursiveEdit(list, childrenAttr, attr, value) {
|
|
268
|
-
if (Array.isArray(list)) {
|
|
269
|
-
for (let i = 0, len = list.length; i < len; i++) {
|
|
270
|
-
list[i][attr] = value;
|
|
271
|
-
if (list[i][childrenAttr].length) {
|
|
272
|
-
this._recursiveEdit(list[i][childrenAttr], childrenAttr, attr, value);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
95
|
+
*/_recursiveEdit(list,childrenAttr,attr,value){cov_1qqjitsvap().f[26]++;cov_1qqjitsvap().s[75]++;if(Array.isArray(list)){cov_1qqjitsvap().b[17][0]++;cov_1qqjitsvap().s[76]++;for(let i=(cov_1qqjitsvap().s[77]++,0),len=(cov_1qqjitsvap().s[78]++,list.length);i<len;i++){cov_1qqjitsvap().s[79]++;list[i][attr]=value;cov_1qqjitsvap().s[80]++;if(list[i][childrenAttr].length){cov_1qqjitsvap().b[18][0]++;cov_1qqjitsvap().s[81]++;this._recursiveEdit(list[i][childrenAttr],childrenAttr,attr,value);}else{cov_1qqjitsvap().b[18][1]++;}}}else{cov_1qqjitsvap().b[17][1]++;}}/**
|
|
278
96
|
* Die Methode erstellt eine standarte Sicht-Liste von Nodes
|
|
279
|
-
*/
|
|
280
|
-
_getPreparedData(list) {
|
|
281
|
-
const tree = [], lookup = {};
|
|
282
|
-
for (let i = 0, len = list.length; i < len; i++) {
|
|
283
|
-
lookup[list[i][this.idAttr]] = list[i];
|
|
284
|
-
list[i][this.childrenAttr] = [];
|
|
285
|
-
list[i][this.collapseAttr] = true;
|
|
286
|
-
list[i][this.selectAttr] = false;
|
|
287
|
-
list[i][this.inDeterminateAttr] = false;
|
|
288
|
-
}
|
|
289
|
-
for (let i = 0, len = list.length; i < len; i++) {
|
|
290
|
-
if (list[i][this.parentAttr]) {
|
|
291
|
-
lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
294
|
-
tree.push(list[i]);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return tree;
|
|
298
|
-
}
|
|
299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTreeViewCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
300
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacTreeViewCommon, inputs: { data: "data", template: "template", fileicontemplate: "fileicontemplate", name: "name", prepareData: "prepareData", textAttr: "textAttr", idAttr: "idAttr", parentAttr: "parentAttr", childrenAttr: "childrenAttr", title: "title", collapseall: "collapseall", selectall: "selectall", selectedid: "selectedid" }, outputs: { selectedidchange: "selectedidchange", selectedtextchanged: "selectedtextchanged", selecteditem: "selecteditem" }, queries: [{ propertyName: "treeviewTemplate", first: true, predicate: ["actions"], descendants: true, static: true }, { propertyName: "treefileicon", first: true, predicate: ["treefileicon"], descendants: true, static: true }], ngImport: i0 }); }
|
|
301
|
-
}
|
|
302
|
-
export { SacTreeViewCommon };
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTreeViewCommon, decorators: [{
|
|
304
|
-
type: Directive
|
|
305
|
-
}], propDecorators: { data: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], template: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], treeviewTemplate: [{
|
|
310
|
-
type: ContentChild,
|
|
311
|
-
args: ['actions', { static: true }]
|
|
312
|
-
}], fileicontemplate: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], treefileicon: [{
|
|
315
|
-
type: ContentChild,
|
|
316
|
-
args: ['treefileicon', { static: true }]
|
|
317
|
-
}], name: [{
|
|
318
|
-
type: Input
|
|
319
|
-
}], prepareData: [{
|
|
320
|
-
type: Input
|
|
321
|
-
}], textAttr: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], idAttr: [{
|
|
324
|
-
type: Input
|
|
325
|
-
}], parentAttr: [{
|
|
326
|
-
type: Input
|
|
327
|
-
}], childrenAttr: [{
|
|
328
|
-
type: Input
|
|
329
|
-
}], title: [{
|
|
330
|
-
type: Input
|
|
331
|
-
}], collapseall: [{
|
|
332
|
-
type: Input
|
|
333
|
-
}], selectall: [{
|
|
334
|
-
type: Input
|
|
335
|
-
}], selectedid: [{
|
|
336
|
-
type: Input
|
|
337
|
-
}], selectedidchange: [{
|
|
338
|
-
type: Output
|
|
339
|
-
}], selectedtextchanged: [{
|
|
340
|
-
type: Output
|
|
341
|
-
}], selecteditem: [{
|
|
342
|
-
type: Output
|
|
343
|
-
}] } });
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy90cmVldmlldy90cmVldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7O0dBRUc7QUFDSCxNQUNhLGlCQUFpQjtJQUQ5QjtRQVlFOztXQUVHO1FBQ0ksVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNJLGlCQUFZLEdBQUcsYUFBYSxDQUFDO1FBRXBDOztXQUVHO1FBQ0ksZUFBVSxHQUFHLFlBQVksQ0FBQztRQUVqQzs7V0FFRztRQUNJLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBRTdDOztXQUVHO1FBQ0ssVUFBSyxHQUFVLEVBQUUsQ0FBQztRQW9FMUI7O1dBRUc7UUFFSCxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCOzs7V0FHRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRTdCOztXQUVHO1FBQ00sYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUUzQjs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFdkI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsV0FBVyxDQUFDO1FBRWxDOztXQUVHO1FBQ00saUJBQVksR0FBRyxVQUFVLENBQUM7UUEyRm5DOztXQUVHO1FBRUgscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFOUQ7O1dBRUc7UUFFSCx3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RTs7V0FFRztRQUVILGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7S0FxSmpFO0lBaFdDOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFD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QWxCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUYsV0FBVztzQkFEZCxLQUFLO2dCQXdCRixTQUFTO3NCQURaLEtBQUs7Z0JBZ0JGLFVBQVU7c0JBRGIsS0FBSztnQkE2Q04sZ0JBQWdCO3NCQURmLE1BQU07Z0JBT1AsbUJBQW1CO3NCQURsQixNQUFNO2dCQU9QLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpcyBLb21wb25lbnRlIGbDvHIgU2FjVHJlZVZpZXdcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjVHJlZVZpZXdDb21tb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBib29sZWFuIFdlcnQgdW5kIGRlZmZpbmllcnQsIG9iIGFsbGUgSXRlbXMgY29sbGFwc2VkIHNpbmQuIERlZmF1bHQgdmFsdWU6IHVuZGVmaW5lZC9udWxsXHJcbiAgICovXHJcbiAgcHVibGljIF9jb2xsYXBzZUFsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IGJvb2xlYW4gV2VydCB1bmQgZGVmZmluaWVydCwgb2IgYWxsZSBJdGVtcyBzZWxlY3RlZCBzaW5kLiBEZWZhdWx0IHZhbHVlOiB1bmRlZmluZWQvbnVsbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3NlbGVjdEFsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IGFycmF5IG9mIG5vZGVzLiBEZWZhdWx0IHZhbHVlOiBlbXB0eSBhcnJheSBbXS5cclxuICAgKi9cclxuICBwdWJsaWMgbm9kZXM6IGFueVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBub2RlIGF0dHJpYnV0ZTogJ2lzQ29sbGFwc2VkJy4gRXMgd2lyZCBiZW51dHp0IGJlaW0gcmVuZGVyaW5nLiBGw7xyIEV4cGFuZC9Db2xsYXBzZWQgU2ljaHQgZGVzIE5vZGUoV2VydClcclxuICAgKi9cclxuICBwdWJsaWMgY29sbGFwc2VBdHRyID0gJ2lzQ29sbGFwc2VkJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IG5vZGUgYXR0cmlidXRlOiAnaXNTZWxlY3RlZCcuIEVzIHdpcmQgYmVudXR6dCBiZWltIFZvcmJlcmVpdHVuZyBkZXMgRGF0YSBkZXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0QXR0ciA9ICdpc1NlbGVjdGVkJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IG5vZGUgYXR0cmlidXRlOiAnaXNJbmRldGVybWluYXRlJy4gRXMgd2lyZCBiZW51dHp0IGJlaW0gVm9yYmVyZWl0dW5nIGRlcyBEYXRhIGRlcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIHB1YmxpYyBpbkRldGVybWluYXRlQXR0ciA9ICdpc0luZGV0ZXJtaW5hdGUnO1xyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlbiBkYXRhIGZvciB0cmVlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2RhdGE6IGFueVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIERhdGEgZGVzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eSBmw7xyIERhdGEgZGVzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMubm9kZXMgPSB2YWx1ZTtcclxuXHJcbiAgICAvLyB0aGlzLm5vZGVzLmZvckVhY2gobm9kZSA9PiBub2RlW1widHlwZUlkXCJdID0gXCIxM1wiKVxyXG5cclxuICAgIHRoaXMuTG9hZFRyZWUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5fY29sbGFwc2VBbGwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlQWxsTm9kZSh0aGlzLl9jb2xsYXBzZUFsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eSBmw7xyIHRlbXBsYXRlIGRlcyBUcmVlVmlldy4gVHlwZTogVGVtcGxhdGVSZWY8YW55Pi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBEaWUgRGlyZWN0aXZlIGVyaMOkbHQgZGllIGFjdGlvbnMgZsO8ciBkYXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCdhY3Rpb25zJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgc2V0IHRyZWV2aWV3VGVtcGxhdGUodjogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgdGhpcy50ZW1wbGF0ZSA9IHY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZsO8ciBkYXMgVHJlZVZpZXcgVGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHRyZWV2aWV3VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGVyaMOkbHQgSWNvbiBmw7xyIGRhcyBUZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZmlsZWljb250ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIHByb3BlcnR5LiBEZWZmaW5pZXJ0IGRhcyBGaWxlSWNvbiBmw7xyIGRhcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGQoJ3RyZWVmaWxlaWNvbicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHNldCB0cmVlZmlsZWljb24odjogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgdGhpcy5maWxlaWNvbnRlbXBsYXRlID0gdjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBwcm9wZXJ0eS4gRXJnaWJ0IGRhcyBGaWxlSWNvbiBmw7xyIGRhcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdHJlZWZpbGVpY29uKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZWljb250ZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGbDvHIgZGVuIE5hbWVuIGRlcyBUcmVlVmlldy4gVHlwZSBzdHJpbmcuIERlZmF1bHQgdmFsdWU6IFwiXCJcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZsYWcgaW5kaWNhdGluZyBkYXRhIGlzIGZsYXR0ZW4gaW4gYXJyYXkgYW5kIHByZXBhcmUgaXMgcmVxdWlyZWQuKERlZmF1bHRcclxuICAgKiBpcyBmYWxzZSkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHJlcGFyZURhdGEgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXR0cmlidXRlIGZvciBUZXh0IGluIFRyZWVcclxuICAgKi9cclxuICBASW5wdXQoKSB0ZXh0QXR0ciA9ICdkYXRhJztcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBvZiBJRCBwcm9wZXJ0eSBpbiBpbnB1dCBkYXRhLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlkQXR0ciA9ICdpZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgcGFyZW50IHByb3BlcnR5IGluIGlucHV0IGRhdGEuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFyZW50QXR0ciA9ICdQQVJFTlRfSUQnO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIGNoaWxkcmVuIGxpc3QgcHJvcGVydHkgaW4gaW5wdXQgZGF0YS5cclxuICAgKi9cclxuICBASW5wdXQoKSBjaGlsZHJlbkF0dHIgPSAnY2hpbGRyZW4nO1xyXG5cclxuICAvKipcclxuICAgKiBUaXRsZSBkZXMgVHJlZXZpZXdcclxuICAgKi9cclxuICBASW5wdXQoKSB0aXRsZTtcclxuXHJcbiAgLy8gQElucHV0KFwidGl0bGVBY3Rpb25cIikgX3RpdGxlQWN0aW9uOiBzdHJpbmdcclxuXHJcbiAgLyoqXHJcbiAgICogQ29sbGFwc2Ugb3IgZXhwYW5kIGFsbCBwYXJlbnQgbm9kZXMuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY29sbGFwc2VhbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NvbGxhcHNlQWxsID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5ub2RlcyAmJiB0aGlzLm5vZGVzLmxlbmd0aCAmJiB0aGlzLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbE5vZGUodGhpcy5fY29sbGFwc2VBbGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuX3JlY3Vyc2l2ZUVkaXQoXHJcbiAgICAvLyAgIHRoaXMubm9kZXMsIHRoaXMuY2hpbGRyZW5BdHRyLCB0aGlzLmNvbGxhcHNlQXR0ciwgdGhpcy5fY29sbGFwc2VBbGwpO1xyXG5cclxuICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGbDvHIgZGFzIGNvbGxhcHNlIHByb3BlcnR5LiBFcmdpYnQgYm9vbGVhbiBXZXJ0LCBvYiBkaWUgSXRlbXMgY29sbGFwc2VkL2V4cGFuZCBzaW5kLlxyXG4gICAqL1xyXG4gIGdldCBjb2xsYXBzZWFsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZUFsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBvciBkZXNlbGVjdCBhbGwgbm9kZXMuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc2VsZWN0YWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RBbGwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3JlY3Vyc2l2ZUVkaXQodGhpcy5ub2RlcywgdGhpcy5jaGlsZHJlbkF0dHIsIHRoaXMuc2VsZWN0QXR0ciwgdmFsdWUpO1xyXG4gICAgdGhpcy5fcmVjdXJzaXZlRWRpdChcclxuICAgICAgdGhpcy5ub2RlcyxcclxuICAgICAgdGhpcy5jaGlsZHJlbkF0dHIsXHJcbiAgICAgIHRoaXMuaW5EZXRlcm1pbmF0ZUF0dHIsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcHJvcGVydHkgLSBzZXR0ZXIuIERlZmZpbmllcnQgZGFzIElEIGRlcyBzZWxla3RpZXJ0ZW4gSXRlbShub2RlKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkaWQodjogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuZmluZE5vZGUodGhpcy5ub2RlcywgdiwgdGhpcy5pZEF0dHIpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSWRFbWl0dGVyLmVtaXQodGhpcy5zZWxlY3RlZE5vZGVbdGhpcy5pZEF0dHJdKTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFRleHRFbWl0dGVyLmVtaXQodGhpcy5zZWxlY3RlZE5vZGVbdGhpcy50ZXh0QXR0cl0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyLiBFcmdpYnQgZGFzIElEIGRlcyBzZWxla3RpZXJ0ZW4gSXRlbShub2RlKVxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZElkKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUgPyB0aGlzLnNlbGVjdGVkTm9kZVt0aGlzLmlkQXR0cl0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVyaMOkbHQgZGFzIHNlbGVrdGllcnRlIFdlcnQobm9kZSkuIERlZmF1bHQgdmFsdWU6IHVuZGVmaW5lZC9udWxsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBkYXMgc2VsZWt0aWVydGUgV2VydChub2RlKS4gV2VubiBhdWZnZXJ1ZmVuIGRhcyBJRCB1bmQgVGV4dEF0dHIgZGVzIHNlbGVjdGVkIE5vZGUgd2lyZCBlbWl0dGVkXHJcbiAgICovXHJcbiAgc2V0IHNlbGVjdGVkTm9kZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkTm9kZSA9IHY7XHJcblxyXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkTm9kZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkaWRjaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSWQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkdGV4dGNoYW5nZWQuZW1pdCh2W3RoaXMudGV4dEF0dHJdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIGRhcyBzZWxla3RpZXJ0ZSBXZXJ0KG5vZGUpLiBFcmdpYnQgZGFzIHNlbGVrdGllcnRlIFdlcnQobm9kZSkuXHJcbiAgICovXHJcbiAgZ2V0IHNlbGVjdGVkTm9kZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkTm9kZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dHB1dCBFbWl0dGVyLiBFbWl0IGRhcyBJRCBkZXMgc2VsZWN0ZWQgTm9kZS5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZGlkY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgRW1pdHRlci4gRW1pdCBkYXMgVGV4dEF0dHIgZGVzIHNlbGVjdGVkIE5vZGUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWR0ZXh0Y2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT3V0cHV0IEVtaXR0ZXIuIEVtaXQgd2VubiBlaW4gTm9kZSBzZWxla3RpZXJ0IHdpcmQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWRpdGVtOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBBIGxpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIEFuZ3VsYXIgaGFzIGluaXRpYWxpemVkIGFsbCBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUuXHJcbiAgICogRGVmaW5lIGFuIG5nT25Jbml0KCkgbWV0aG9kIHRvIGhhbmRsZSBhbnkgYWRkaXRpb25hbCBpbml0aWFsaXphdGlvbiB0YXNrcy5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29sbGFwc2VBbGxOb2RlKHRoaXMuX2NvbGxhcHNlQWxsKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZElkKSB0aGlzLm9wZW5TZWxlY3RlZE5vZGUodGhpcy5ub2Rlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5rdGlvbiBzZXR6dCBhbGxlIHBhcmVudCBpdGVtcyByZWN1c2l2IHp1bSBzZWxlY3RlZCBub2RlXHJcbiAgICogYXVmIGNvbGxhcHNlZCA9IGZhbHNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuU2VsZWN0ZWROb2RlKGRhdGEpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZGF0YVtpXVt0aGlzLmNoaWxkcmVuQXR0cl0ubGVuZ3RoICYmXHJcbiAgICAgICAgZGF0YVtpXVt0aGlzLmlkQXR0cl0gIT0gdGhpcy5zZWxlY3RlZElkXHJcbiAgICAgIClcclxuICAgICAgICByZXN1bHQgPSB0aGlzLm9wZW5TZWxlY3RlZE5vZGUoZGF0YVtpXVt0aGlzLmNoaWxkcmVuQXR0cl0pO1xyXG4gICAgICBpZiAocmVzdWx0IHx8IGRhdGFbaV1bdGhpcy5pZEF0dHJdID09IHRoaXMuc2VsZWN0ZWRJZCkge1xyXG4gICAgICAgIGRhdGFbaV1bdGhpcy5jb2xsYXBzZUF0dHJdID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHZvcmJlcmVpdGV0IGRpZSBEYXRlbiBmw7xyIGRhcyBUcmVlVmlldy4gRGllIEZ1bmt0aW9uIHNvbGx0ZSBnZcOkbmRlcnQgd2VyZGVuIGFiaMOkbmdpZyB2b24gZGVtIGtvbW1lbmRlbiBEYXRlbiAod2VubiBhcnJheSlcclxuICAgKi9cclxuICBwcml2YXRlIExvYWRUcmVlKCkge1xyXG4gICAgLy9pZiB0aGUgdHJlZSBzdHJ1Y3R1cmUgcmVxdWlyZSBhcnJheSB0aGUgZnVuY3Rpb24gYmVsb3cgc2hvdWxkIGJlIGNoYW5nZWRcclxuICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuX2RhdGEubWFwKCh4KSA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSk7XHJcblxyXG4gICAgLy8gSWYgZGF0YSBpcyBmbGF0LCBwcmVwYXJlIGRhdGEgd2l0aCByZWN1cnNpdmUgZnVuY3Rpb24uXHJcbiAgICB0aGlzLm5vZGVzID0gdGhpcy5wcmVwYXJlRGF0YSA/IHRoaXMuX2dldFByZXBhcmVkRGF0YShjbG9uZWQpIDogdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGNvbGxhcHNlL2V4cGFuZCBkZW4gc2VsZWN0aWVydGVuIE5vZGVcclxuICAgKi9cclxuICBvbkNvbGxhcHNlQ2xpY2sobm9kZSkge1xyXG4gICAgaWYgKG5vZGVbdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICBub2RlW3RoaXMuY29sbGFwc2VBdHRyXSA9ICFub2RlW3RoaXMuY29sbGFwc2VBdHRyXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHNldCBkZW4gc2VsZWt0aWVydGVuIE5vZGUgdW5kIGVtaXQgZXMuXHJcbiAgICovXHJcbiAgb25DbGljayhub2RlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLnNlbGVjdGVkaXRlbS5lbWl0KHRoaXMuc2VsZWN0ZWROb2RlKTtcclxuICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgd2lyZCBlaW4gZXZlbnQgbWl0IE1lbGR1bmcgenUgUGFyZW50IGVtaXQtZW4uXHJcbiAgICovXHJcbiAgc2VuZE1zZ1RvUGFyZW50KG1zZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZGl0ZW0uZW1pdChtc2cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgd2lyZCBhbGxlIE5vZGVzIGNvbGxhcHNlXHJcbiAgICovXHJcbiAgY29sbGFwc2VBbGxOb2RlKGNvbW1hbmQpIHtcclxuICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBpZiAobm9kZVt0aGlzLmNoaWxkcmVuQXR0cl0ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sbGFwc2VBbGxISWRkZW4obm9kZSwgdGhpcy5jb2xsYXBzZUF0dHIsIGNvbW1hbmQsIHRoaXMuY2hpbGRyZW5BdHRyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBmdW5jdGlvbiBjb2xsYXBzZUFsbEhJZGRlbihub2RlLCBjb2xsYXBzZUF0dHIsIGNvbW1hbmQsIGNoaWxkcmVuQXR0cikge1xyXG4gICAgICBub2RlW2NvbGxhcHNlQXR0cl0gPSBjb21tYW5kO1xyXG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGRbY2hpbGRyZW5BdHRyXS5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbGxhcHNlQWxsSElkZGVuKGNoaWxkLCBjb2xsYXBzZUF0dHIsIGNvbW1hbmQsIGNoaWxkcmVuQXR0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmt0aW9uIGdpYnQgbm9kZSBhdXMgZGVyIGxpc3RlIHp1csO8Y2ssIHdlbGNoZXMgZGFzIFZhbHVlIGF1ZiBkZW0gZ2V3w7xuc2NodGVuIEF0dHJpYnV0IGhhdFxyXG4gICAqIFdlbm4gbm9kZSBuaWNodCBnZWZ1bmRlbiB3aXJkLCB3aXJkIG51bGwgenVyw7xjayBnZWdlYmVuXHJcbiAgICogQHBhcmFtIGRhdGEgTGlzdGUgZGVyIG5vZGVzXHJcbiAgICogQHBhcmFtIHNlYXJjaFZhbHVlIERhcyBnZXN1Y2h0ZSB2YWx1ZVxyXG4gICAqIEBwYXJhbSBhdHRyIERlciBuYW1lbiBkZXMgQXR0cmlidXRzIGF1ZiBkZW0gZGFzIHZhbHVlIGdlc3VjaHQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmluZE5vZGUoZGF0YSwgc2VhcmNoVmFsdWUsIGF0dHIpOiBhbnkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXVthdHRyXSA9PSBzZWFyY2hWYWx1ZSkgcmVzdWx0ID0gZGF0YVtpXTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IHJlY3Vyc2l2ZVJlc3VsdCA9IHRoaXMuZmluZE5vZGUoXHJcbiAgICAgICAgICAgIGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdLFxyXG4gICAgICAgICAgICBzZWFyY2hWYWx1ZSxcclxuICAgICAgICAgICAgYXR0clxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZWN1cnNpdmVSZXN1bHQpIHJlc3VsdCA9IHJlY3Vyc2l2ZVJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBlZGl0aWVydCAocmVjdXJzaXZlKSBhbGxlIGVpbmdlZ2ViZW5lIE5vZGVzIGFiaMOkbmdpZyB2b24gZ2VnZWJlbmVuIEF0dGlidXRlIHVuZCBWYWx1ZSBLcml0ZXJpZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcmVjdXJzaXZlRWRpdChsaXN0LCBjaGlsZHJlbkF0dHIsIGF0dHIsIHZhbHVlKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIGxpc3RbaV1bYXR0cl0gPSB2YWx1ZTtcclxuICAgICAgICBpZiAobGlzdFtpXVtjaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5fcmVjdXJzaXZlRWRpdChsaXN0W2ldW2NoaWxkcmVuQXR0cl0sIGNoaWxkcmVuQXR0ciwgYXR0ciwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgZXJzdGVsbHQgZWluZSBzdGFuZGFydGUgU2ljaHQtTGlzdGUgdm9uIE5vZGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2V0UHJlcGFyZWREYXRhKGxpc3QpIHtcclxuICAgIGNvbnN0IHRyZWUgPSBbXSxcclxuICAgICAgbG9va3VwID0ge307XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBsb29rdXBbbGlzdFtpXVt0aGlzLmlkQXR0cl1dID0gbGlzdFtpXTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmNoaWxkcmVuQXR0cl0gPSBbXTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmNvbGxhcHNlQXR0cl0gPSB0cnVlO1xyXG4gICAgICBsaXN0W2ldW3RoaXMuc2VsZWN0QXR0cl0gPSBmYWxzZTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmluRGV0ZXJtaW5hdGVBdHRyXSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGxpc3QubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgaWYgKGxpc3RbaV1bdGhpcy5wYXJlbnRBdHRyXSkge1xyXG4gICAgICAgIGxvb2t1cFtsaXN0W2ldW3RoaXMucGFyZW50QXR0cl1dW3RoaXMuY2hpbGRyZW5BdHRyXS5wdXNoKGxpc3RbaV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRyZWUucHVzaChsaXN0W2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
97
|
+
*/_getPreparedData(list){cov_1qqjitsvap().f[27]++;const tree=(cov_1qqjitsvap().s[82]++,[]),lookup=(cov_1qqjitsvap().s[83]++,{});cov_1qqjitsvap().s[84]++;for(let i=(cov_1qqjitsvap().s[85]++,0),len=(cov_1qqjitsvap().s[86]++,list.length);i<len;i++){cov_1qqjitsvap().s[87]++;lookup[list[i][this.idAttr]]=list[i];cov_1qqjitsvap().s[88]++;list[i][this.childrenAttr]=[];cov_1qqjitsvap().s[89]++;list[i][this.collapseAttr]=true;cov_1qqjitsvap().s[90]++;list[i][this.selectAttr]=false;cov_1qqjitsvap().s[91]++;list[i][this.inDeterminateAttr]=false;}cov_1qqjitsvap().s[92]++;for(let i=(cov_1qqjitsvap().s[93]++,0),len=(cov_1qqjitsvap().s[94]++,list.length);i<len;i++){cov_1qqjitsvap().s[95]++;if(list[i][this.parentAttr]){cov_1qqjitsvap().b[19][0]++;cov_1qqjitsvap().s[96]++;lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);}else{cov_1qqjitsvap().b[19][1]++;cov_1qqjitsvap().s[97]++;tree.push(list[i]);}}cov_1qqjitsvap().s[98]++;return tree;}static{cov_1qqjitsvap().s[99]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTreeViewCommon,deps:[],target:i0.ɵɵFactoryTarget.Directive});}static{cov_1qqjitsvap().s[100]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTreeViewCommon,inputs:{data:"data",template:"template",fileicontemplate:"fileicontemplate",name:"name",prepareData:"prepareData",textAttr:"textAttr",idAttr:"idAttr",parentAttr:"parentAttr",childrenAttr:"childrenAttr",title:"title",collapseall:"collapseall",selectall:"selectall",selectedid:"selectedid"},outputs:{selectedidchange:"selectedidchange",selectedtextchanged:"selectedtextchanged",selecteditem:"selecteditem"},queries:[{propertyName:"treeviewTemplate",first:true,predicate:["actions"],descendants:true,static:true},{propertyName:"treefileicon",first:true,predicate:["treefileicon"],descendants:true,static:true}],ngImport:i0});}}export{SacTreeViewCommon};cov_1qqjitsvap().s[101]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTreeViewCommon,decorators:[{type:Directive}],propDecorators:{data:[{type:Input}],template:[{type:Input}],treeviewTemplate:[{type:ContentChild,args:['actions',{static:true}]}],fileicontemplate:[{type:Input}],treefileicon:[{type:ContentChild,args:['treefileicon',{static:true}]}],name:[{type:Input}],prepareData:[{type:Input}],textAttr:[{type:Input}],idAttr:[{type:Input}],parentAttr:[{type:Input}],childrenAttr:[{type:Input}],title:[{type:Input}],collapseall:[{type:Input}],selectall:[{type:Input}],selectedid:[{type:Input}],selectedidchange:[{type:Output}],selectedtextchanged:[{type:Output}],selecteditem:[{type:Output}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy90cmVldmlldy90cmVldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7O0dBRUc7QUFDSCxNQUNhLGlCQUFpQjtJQUQ5QjtRQVlFOztXQUVHO1FBQ0ksVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNJLGlCQUFZLEdBQUcsYUFBYSxDQUFDO1FBRXBDOztXQUVHO1FBQ0ksZUFBVSxHQUFHLFlBQVksQ0FBQztRQUVqQzs7V0FFRztRQUNJLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBRTdDOztXQUVHO1FBQ0ssVUFBSyxHQUFVLEVBQUUsQ0FBQztRQW9FMUI7O1dBRUc7UUFFSCxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCOzs7V0FHRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRTdCOztXQUVHO1FBQ00sYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUUzQjs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFdkI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsV0FBVyxDQUFDO1FBRWxDOztXQUVHO1FBQ00saUJBQVksR0FBRyxVQUFVLENBQUM7UUEyRm5DOztXQUVHO1FBRUgscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFOUQ7O1dBRUc7UUFFSCx3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RTs7V0FFRztRQUVILGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7S0FxSmpFO0lBaFdDOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksSUFBSSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsb0RBQW9EO1FBRXBELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFDVyxnQkFBZ0IsQ0FBQyxDQUFtQjtRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFDVyxZQUFZLENBQUMsQ0FBbUI7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQXVDRCw2Q0FBNkM7SUFFN0M7O09BRUc7SUFDSCxJQUNJLFdBQVcsQ0FBQyxLQUFjO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDekM7UUFFRCx1QkFBdUI7UUFDdkIsMEVBQTBFO1FBRTFFLDJCQUEyQjtJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxTQUFTLENBQUMsS0FBYztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxjQUFjLENBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksVUFBVSxDQUFDLENBQU07UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5RCwyQkFBMkI7UUFDM0IsaUVBQWlFO1FBQ2pFLHFFQUFxRTtRQUNyRSxJQUFJO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25FLENBQUM7SUFPRDs7T0FFRztJQUNILElBQUksWUFBWSxDQUFDLENBQU07UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFvQkQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxJQUFJO1FBQzNCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUNFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTTtnQkFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVTtnQkFFdkMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxRQUFRO1FBQ2QsMEVBQTBFO1FBQzFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNELHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsSUFBSTtRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQUk7UUFDVixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsMkJBQTJCO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxHQUFHO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxPQUFPO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDbEMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUM5QixpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztpQkFDL0Q7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSTtRQUN0QyxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVztnQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5QztnQkFDSCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNyQyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUMxQixXQUFXLEVBQ1gsSUFBSSxDQUNMLENBQUM7b0JBQ0YsSUFBSSxlQUFlO3dCQUFFLE1BQU0sR0FBRyxlQUFlLENBQUM7aUJBQy9DO2FBQ0Y7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3ZFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLElBQUk7UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUNiLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDekM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25FO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEI7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0FuWVUsaUJBQWlCO21HQUFqQixpQkFBaUI7O1NBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTOzhCQWdESixJQUFJO3NCQURQLEtBQUs7Z0JBa0JOLFFBQVE7c0JBRFAsS0FBSztnQkFPSyxnQkFBZ0I7c0JBRDFCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFnQnpDLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9LLFlBQVk7c0JBRHRCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFnQjlDLElBQUk7c0JBREgsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUYsV0FBVztzQkFEZCxLQUFLO2dCQXdCRixTQUFTO3NCQURaLEtBQUs7Z0JBZ0JGLFVBQVU7c0JBRGIsS0FBSztnQkE2Q04sZ0JBQWdCO3NCQURmLE1BQU07Z0JBT1AsbUJBQW1CO3NCQURsQixNQUFNO2dCQU9QLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBCYXNpcyBLb21wb25lbnRlIGbDvHIgU2FjVHJlZVZpZXdcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjVHJlZVZpZXdDb21tb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBib29sZWFuIFdlcnQgdW5kIGRlZmZpbmllcnQsIG9iIGFsbGUgSXRlbXMgY29sbGFwc2VkIHNpbmQuIERlZmF1bHQgdmFsdWU6IHVuZGVmaW5lZC9udWxsXHJcbiAgICovXHJcbiAgcHVibGljIF9jb2xsYXBzZUFsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IGJvb2xlYW4gV2VydCB1bmQgZGVmZmluaWVydCwgb2IgYWxsZSBJdGVtcyBzZWxlY3RlZCBzaW5kLiBEZWZhdWx0IHZhbHVlOiB1bmRlZmluZWQvbnVsbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3NlbGVjdEFsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IGFycmF5IG9mIG5vZGVzLiBEZWZhdWx0IHZhbHVlOiBlbXB0eSBhcnJheSBbXS5cclxuICAgKi9cclxuICBwdWJsaWMgbm9kZXM6IGFueVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBub2RlIGF0dHJpYnV0ZTogJ2lzQ29sbGFwc2VkJy4gRXMgd2lyZCBiZW51dHp0IGJlaW0gcmVuZGVyaW5nLiBGw7xyIEV4cGFuZC9Db2xsYXBzZWQgU2ljaHQgZGVzIE5vZGUoV2VydClcclxuICAgKi9cclxuICBwdWJsaWMgY29sbGFwc2VBdHRyID0gJ2lzQ29sbGFwc2VkJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IG5vZGUgYXR0cmlidXRlOiAnaXNTZWxlY3RlZCcuIEVzIHdpcmQgYmVudXR6dCBiZWltIFZvcmJlcmVpdHVuZyBkZXMgRGF0YSBkZXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0QXR0ciA9ICdpc1NlbGVjdGVkJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVudGhpZWx0IG5vZGUgYXR0cmlidXRlOiAnaXNJbmRldGVybWluYXRlJy4gRXMgd2lyZCBiZW51dHp0IGJlaW0gVm9yYmVyZWl0dW5nIGRlcyBEYXRhIGRlcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIHB1YmxpYyBpbkRldGVybWluYXRlQXR0ciA9ICdpc0luZGV0ZXJtaW5hdGUnO1xyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlbiBkYXRhIGZvciB0cmVlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2RhdGE6IGFueVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIERhdGEgZGVzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgZ2V0IGRhdGEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eSBmw7xyIERhdGEgZGVzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMubm9kZXMgPSB2YWx1ZTtcclxuXHJcbiAgICAvLyB0aGlzLm5vZGVzLmZvckVhY2gobm9kZSA9PiBub2RlW1widHlwZUlkXCJdID0gXCIxM1wiKVxyXG5cclxuICAgIHRoaXMuTG9hZFRyZWUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5fY29sbGFwc2VBbGwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlQWxsTm9kZSh0aGlzLl9jb2xsYXBzZUFsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eSBmw7xyIHRlbXBsYXRlIGRlcyBUcmVlVmlldy4gVHlwZTogVGVtcGxhdGVSZWY8YW55Pi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBEaWUgRGlyZWN0aXZlIGVyaMOkbHQgZGllIGFjdGlvbnMgZsO8ciBkYXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCdhY3Rpb25zJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgc2V0IHRyZWV2aWV3VGVtcGxhdGUodjogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgdGhpcy50ZW1wbGF0ZSA9IHY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZsO8ciBkYXMgVHJlZVZpZXcgVGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHRyZWV2aWV3VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGVyaMOkbHQgSWNvbiBmw7xyIGRhcyBUZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZmlsZWljb250ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIHByb3BlcnR5LiBEZWZmaW5pZXJ0IGRhcyBGaWxlSWNvbiBmw7xyIGRhcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGQoJ3RyZWVmaWxlaWNvbicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHNldCB0cmVlZmlsZWljb24odjogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgdGhpcy5maWxlaWNvbnRlbXBsYXRlID0gdjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBwcm9wZXJ0eS4gRXJnaWJ0IGRhcyBGaWxlSWNvbiBmw7xyIGRhcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdHJlZWZpbGVpY29uKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZWljb250ZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGbDvHIgZGVuIE5hbWVuIGRlcyBUcmVlVmlldy4gVHlwZSBzdHJpbmcuIERlZmF1bHQgdmFsdWU6IFwiXCJcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZsYWcgaW5kaWNhdGluZyBkYXRhIGlzIGZsYXR0ZW4gaW4gYXJyYXkgYW5kIHByZXBhcmUgaXMgcmVxdWlyZWQuKERlZmF1bHRcclxuICAgKiBpcyBmYWxzZSkuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHJlcGFyZURhdGEgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXR0cmlidXRlIGZvciBUZXh0IGluIFRyZWVcclxuICAgKi9cclxuICBASW5wdXQoKSB0ZXh0QXR0ciA9ICdkYXRhJztcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBvZiBJRCBwcm9wZXJ0eSBpbiBpbnB1dCBkYXRhLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlkQXR0ciA9ICdpZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgcGFyZW50IHByb3BlcnR5IGluIGlucHV0IGRhdGEuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFyZW50QXR0ciA9ICdQQVJFTlRfSUQnO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIGNoaWxkcmVuIGxpc3QgcHJvcGVydHkgaW4gaW5wdXQgZGF0YS5cclxuICAgKi9cclxuICBASW5wdXQoKSBjaGlsZHJlbkF0dHIgPSAnY2hpbGRyZW4nO1xyXG5cclxuICAvKipcclxuICAgKiBUaXRsZSBkZXMgVHJlZXZpZXdcclxuICAgKi9cclxuICBASW5wdXQoKSB0aXRsZTtcclxuXHJcbiAgLy8gQElucHV0KFwidGl0bGVBY3Rpb25cIikgX3RpdGxlQWN0aW9uOiBzdHJpbmdcclxuXHJcbiAgLyoqXHJcbiAgICogQ29sbGFwc2Ugb3IgZXhwYW5kIGFsbCBwYXJlbnQgbm9kZXMuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY29sbGFwc2VhbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NvbGxhcHNlQWxsID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5ub2RlcyAmJiB0aGlzLm5vZGVzLmxlbmd0aCAmJiB0aGlzLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbE5vZGUodGhpcy5fY29sbGFwc2VBbGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuX3JlY3Vyc2l2ZUVkaXQoXHJcbiAgICAvLyAgIHRoaXMubm9kZXMsIHRoaXMuY2hpbGRyZW5BdHRyLCB0aGlzLmNvbGxhcHNlQXR0ciwgdGhpcy5fY29sbGFwc2VBbGwpO1xyXG5cclxuICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGbDvHIgZGFzIGNvbGxhcHNlIHByb3BlcnR5LiBFcmdpYnQgYm9vbGVhbiBXZXJ0LCBvYiBkaWUgSXRlbXMgY29sbGFwc2VkL2V4cGFuZCBzaW5kLlxyXG4gICAqL1xyXG4gIGdldCBjb2xsYXBzZWFsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZUFsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBvciBkZXNlbGVjdCBhbGwgbm9kZXMuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc2VsZWN0YWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RBbGwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3JlY3Vyc2l2ZUVkaXQodGhpcy5ub2RlcywgdGhpcy5jaGlsZHJlbkF0dHIsIHRoaXMuc2VsZWN0QXR0ciwgdmFsdWUpO1xyXG4gICAgdGhpcy5fcmVjdXJzaXZlRWRpdChcclxuICAgICAgdGhpcy5ub2RlcyxcclxuICAgICAgdGhpcy5jaGlsZHJlbkF0dHIsXHJcbiAgICAgIHRoaXMuaW5EZXRlcm1pbmF0ZUF0dHIsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcHJvcGVydHkgLSBzZXR0ZXIuIERlZmZpbmllcnQgZGFzIElEIGRlcyBzZWxla3RpZXJ0ZW4gSXRlbShub2RlKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkaWQodjogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuZmluZE5vZGUodGhpcy5ub2RlcywgdiwgdGhpcy5pZEF0dHIpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSWRFbWl0dGVyLmVtaXQodGhpcy5zZWxlY3RlZE5vZGVbdGhpcy5pZEF0dHJdKTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFRleHRFbWl0dGVyLmVtaXQodGhpcy5zZWxlY3RlZE5vZGVbdGhpcy50ZXh0QXR0cl0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyLiBFcmdpYnQgZGFzIElEIGRlcyBzZWxla3RpZXJ0ZW4gSXRlbShub2RlKVxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZElkKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUgPyB0aGlzLnNlbGVjdGVkTm9kZVt0aGlzLmlkQXR0cl0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIFByb3BlcnR5IGVyaMOkbHQgZGFzIHNlbGVrdGllcnRlIFdlcnQobm9kZSkuIERlZmF1bHQgdmFsdWU6IHVuZGVmaW5lZC9udWxsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZsO8ciBkYXMgc2VsZWt0aWVydGUgV2VydChub2RlKS4gV2VubiBhdWZnZXJ1ZmVuIGRhcyBJRCB1bmQgVGV4dEF0dHIgZGVzIHNlbGVjdGVkIE5vZGUgd2lyZCBlbWl0dGVkXHJcbiAgICovXHJcbiAgc2V0IHNlbGVjdGVkTm9kZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkTm9kZSA9IHY7XHJcblxyXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkTm9kZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkaWRjaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSWQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkdGV4dGNoYW5nZWQuZW1pdCh2W3RoaXMudGV4dEF0dHJdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIGRhcyBzZWxla3RpZXJ0ZSBXZXJ0KG5vZGUpLiBFcmdpYnQgZGFzIHNlbGVrdGllcnRlIFdlcnQobm9kZSkuXHJcbiAgICovXHJcbiAgZ2V0IHNlbGVjdGVkTm9kZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkTm9kZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dHB1dCBFbWl0dGVyLiBFbWl0IGRhcyBJRCBkZXMgc2VsZWN0ZWQgTm9kZS5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZGlkY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgRW1pdHRlci4gRW1pdCBkYXMgVGV4dEF0dHIgZGVzIHNlbGVjdGVkIE5vZGUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWR0ZXh0Y2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT3V0cHV0IEVtaXR0ZXIuIEVtaXQgd2VubiBlaW4gTm9kZSBzZWxla3RpZXJ0IHdpcmQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWRpdGVtOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBBIGxpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIEFuZ3VsYXIgaGFzIGluaXRpYWxpemVkIGFsbCBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUuXHJcbiAgICogRGVmaW5lIGFuIG5nT25Jbml0KCkgbWV0aG9kIHRvIGhhbmRsZSBhbnkgYWRkaXRpb25hbCBpbml0aWFsaXphdGlvbiB0YXNrcy5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29sbGFwc2VBbGxOb2RlKHRoaXMuX2NvbGxhcHNlQWxsKTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZElkKSB0aGlzLm9wZW5TZWxlY3RlZE5vZGUodGhpcy5ub2Rlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5rdGlvbiBzZXR6dCBhbGxlIHBhcmVudCBpdGVtcyByZWN1c2l2IHp1bSBzZWxlY3RlZCBub2RlXHJcbiAgICogYXVmIGNvbGxhcHNlZCA9IGZhbHNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuU2VsZWN0ZWROb2RlKGRhdGEpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZGF0YVtpXVt0aGlzLmNoaWxkcmVuQXR0cl0ubGVuZ3RoICYmXHJcbiAgICAgICAgZGF0YVtpXVt0aGlzLmlkQXR0cl0gIT0gdGhpcy5zZWxlY3RlZElkXHJcbiAgICAgIClcclxuICAgICAgICByZXN1bHQgPSB0aGlzLm9wZW5TZWxlY3RlZE5vZGUoZGF0YVtpXVt0aGlzLmNoaWxkcmVuQXR0cl0pO1xyXG4gICAgICBpZiAocmVzdWx0IHx8IGRhdGFbaV1bdGhpcy5pZEF0dHJdID09IHRoaXMuc2VsZWN0ZWRJZCkge1xyXG4gICAgICAgIGRhdGFbaV1bdGhpcy5jb2xsYXBzZUF0dHJdID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHZvcmJlcmVpdGV0IGRpZSBEYXRlbiBmw7xyIGRhcyBUcmVlVmlldy4gRGllIEZ1bmt0aW9uIHNvbGx0ZSBnZcOkbmRlcnQgd2VyZGVuIGFiaMOkbmdpZyB2b24gZGVtIGtvbW1lbmRlbiBEYXRlbiAod2VubiBhcnJheSlcclxuICAgKi9cclxuICBwcml2YXRlIExvYWRUcmVlKCkge1xyXG4gICAgLy9pZiB0aGUgdHJlZSBzdHJ1Y3R1cmUgcmVxdWlyZSBhcnJheSB0aGUgZnVuY3Rpb24gYmVsb3cgc2hvdWxkIGJlIGNoYW5nZWRcclxuICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuX2RhdGEubWFwKCh4KSA9PiBPYmplY3QuYXNzaWduKHt9LCB4KSk7XHJcblxyXG4gICAgLy8gSWYgZGF0YSBpcyBmbGF0LCBwcmVwYXJlIGRhdGEgd2l0aCByZWN1cnNpdmUgZnVuY3Rpb24uXHJcbiAgICB0aGlzLm5vZGVzID0gdGhpcy5wcmVwYXJlRGF0YSA/IHRoaXMuX2dldFByZXBhcmVkRGF0YShjbG9uZWQpIDogdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGNvbGxhcHNlL2V4cGFuZCBkZW4gc2VsZWN0aWVydGVuIE5vZGVcclxuICAgKi9cclxuICBvbkNvbGxhcHNlQ2xpY2sobm9kZSkge1xyXG4gICAgaWYgKG5vZGVbdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICBub2RlW3RoaXMuY29sbGFwc2VBdHRyXSA9ICFub2RlW3RoaXMuY29sbGFwc2VBdHRyXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHNldCBkZW4gc2VsZWt0aWVydGVuIE5vZGUgdW5kIGVtaXQgZXMuXHJcbiAgICovXHJcbiAgb25DbGljayhub2RlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLnNlbGVjdGVkaXRlbS5lbWl0KHRoaXMuc2VsZWN0ZWROb2RlKTtcclxuICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgd2lyZCBlaW4gZXZlbnQgbWl0IE1lbGR1bmcgenUgUGFyZW50IGVtaXQtZW4uXHJcbiAgICovXHJcbiAgc2VuZE1zZ1RvUGFyZW50KG1zZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZGl0ZW0uZW1pdChtc2cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgd2lyZCBhbGxlIE5vZGVzIGNvbGxhcHNlXHJcbiAgICovXHJcbiAgY29sbGFwc2VBbGxOb2RlKGNvbW1hbmQpIHtcclxuICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBpZiAobm9kZVt0aGlzLmNoaWxkcmVuQXR0cl0ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sbGFwc2VBbGxISWRkZW4obm9kZSwgdGhpcy5jb2xsYXBzZUF0dHIsIGNvbW1hbmQsIHRoaXMuY2hpbGRyZW5BdHRyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBmdW5jdGlvbiBjb2xsYXBzZUFsbEhJZGRlbihub2RlLCBjb2xsYXBzZUF0dHIsIGNvbW1hbmQsIGNoaWxkcmVuQXR0cikge1xyXG4gICAgICBub2RlW2NvbGxhcHNlQXR0cl0gPSBjb21tYW5kO1xyXG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGRbY2hpbGRyZW5BdHRyXS5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbGxhcHNlQWxsSElkZGVuKGNoaWxkLCBjb2xsYXBzZUF0dHIsIGNvbW1hbmQsIGNoaWxkcmVuQXR0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmt0aW9uIGdpYnQgbm9kZSBhdXMgZGVyIGxpc3RlIHp1csO8Y2ssIHdlbGNoZXMgZGFzIFZhbHVlIGF1ZiBkZW0gZ2V3w7xuc2NodGVuIEF0dHJpYnV0IGhhdFxyXG4gICAqIFdlbm4gbm9kZSBuaWNodCBnZWZ1bmRlbiB3aXJkLCB3aXJkIG51bGwgenVyw7xjayBnZWdlYmVuXHJcbiAgICogQHBhcmFtIGRhdGEgTGlzdGUgZGVyIG5vZGVzXHJcbiAgICogQHBhcmFtIHNlYXJjaFZhbHVlIERhcyBnZXN1Y2h0ZSB2YWx1ZVxyXG4gICAqIEBwYXJhbSBhdHRyIERlciBuYW1lbiBkZXMgQXR0cmlidXRzIGF1ZiBkZW0gZGFzIHZhbHVlIGdlc3VjaHQgd2lyZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmluZE5vZGUoZGF0YSwgc2VhcmNoVmFsdWUsIGF0dHIpOiBhbnkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0gbnVsbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXVthdHRyXSA9PSBzZWFyY2hWYWx1ZSkgcmVzdWx0ID0gZGF0YVtpXTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IHJlY3Vyc2l2ZVJlc3VsdCA9IHRoaXMuZmluZE5vZGUoXHJcbiAgICAgICAgICAgIGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdLFxyXG4gICAgICAgICAgICBzZWFyY2hWYWx1ZSxcclxuICAgICAgICAgICAgYXR0clxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZWN1cnNpdmVSZXN1bHQpIHJlc3VsdCA9IHJlY3Vyc2l2ZVJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBlZGl0aWVydCAocmVjdXJzaXZlKSBhbGxlIGVpbmdlZ2ViZW5lIE5vZGVzIGFiaMOkbmdpZyB2b24gZ2VnZWJlbmVuIEF0dGlidXRlIHVuZCBWYWx1ZSBLcml0ZXJpZW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcmVjdXJzaXZlRWRpdChsaXN0LCBjaGlsZHJlbkF0dHIsIGF0dHIsIHZhbHVlKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgIGxpc3RbaV1bYXR0cl0gPSB2YWx1ZTtcclxuICAgICAgICBpZiAobGlzdFtpXVtjaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5fcmVjdXJzaXZlRWRpdChsaXN0W2ldW2NoaWxkcmVuQXR0cl0sIGNoaWxkcmVuQXR0ciwgYXR0ciwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgZXJzdGVsbHQgZWluZSBzdGFuZGFydGUgU2ljaHQtTGlzdGUgdm9uIE5vZGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2V0UHJlcGFyZWREYXRhKGxpc3QpIHtcclxuICAgIGNvbnN0IHRyZWUgPSBbXSxcclxuICAgICAgbG9va3VwID0ge307XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGlzdC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBsb29rdXBbbGlzdFtpXVt0aGlzLmlkQXR0cl1dID0gbGlzdFtpXTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmNoaWxkcmVuQXR0cl0gPSBbXTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmNvbGxhcHNlQXR0cl0gPSB0cnVlO1xyXG4gICAgICBsaXN0W2ldW3RoaXMuc2VsZWN0QXR0cl0gPSBmYWxzZTtcclxuICAgICAgbGlzdFtpXVt0aGlzLmluRGV0ZXJtaW5hdGVBdHRyXSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGxpc3QubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgaWYgKGxpc3RbaV1bdGhpcy5wYXJlbnRBdHRyXSkge1xyXG4gICAgICAgIGxvb2t1cFtsaXN0W2ldW3RoaXMucGFyZW50QXR0cl1dW3RoaXMuY2hpbGRyZW5BdHRyXS5wdXNoKGxpc3RbaV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRyZWUucHVzaChsaXN0W2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMXFxaml0c3ZhcCIsImFjdHVhbENvdmVyYWdlIiwiQ29udGVudENoaWxkIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJTYWNUcmVlVmlld0NvbW1vbiIsImNvbnN0cnVjdG9yIiwiZiIsInMiLCJub2RlcyIsImNvbGxhcHNlQXR0ciIsInNlbGVjdEF0dHIiLCJpbkRldGVybWluYXRlQXR0ciIsIl9kYXRhIiwibmFtZSIsInByZXBhcmVEYXRhIiwidGV4dEF0dHIiLCJpZEF0dHIiLCJwYXJlbnRBdHRyIiwiY2hpbGRyZW5BdHRyIiwic2VsZWN0ZWRpZGNoYW5nZSIsInNlbGVjdGVkdGV4dGNoYW5nZWQiLCJzZWxlY3RlZGl0ZW0iLCJkYXRhIiwidmFsdWUiLCJMb2FkVHJlZSIsIl9jb2xsYXBzZUFsbCIsInVuZGVmaW5lZCIsImIiLCJjb2xsYXBzZUFsbE5vZGUiLCJ0cmVldmlld1RlbXBsYXRlIiwidiIsInRlbXBsYXRlIiwidHJlZWZpbGVpY29uIiwiZmlsZWljb250ZW1wbGF0ZSIsImNvbGxhcHNlYWxsIiwibGVuZ3RoIiwic2VsZWN0YWxsIiwiX3NlbGVjdEFsbCIsIl9yZWN1cnNpdmVFZGl0Iiwic2VsZWN0ZWRpZCIsInNlbGVjdGVkTm9kZSIsImZpbmROb2RlIiwic2VsZWN0ZWRJZCIsIl9zZWxlY3RlZE5vZGUiLCJlbWl0IiwibmdPbkluaXQiLCJvcGVuU2VsZWN0ZWROb2RlIiwicmVzdWx0IiwiaSIsImNsb25lZCIsIm1hcCIsIngiLCJPYmplY3QiLCJhc3NpZ24iLCJfZ2V0UHJlcGFyZWREYXRhIiwib25Db2xsYXBzZUNsaWNrIiwibm9kZSIsIm9uQ2xpY2siLCJzZW5kTXNnVG9QYXJlbnQiLCJtc2ciLCJjb21tYW5kIiwiZm9yRWFjaCIsImNvbGxhcHNlQWxsSElkZGVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInNlYXJjaFZhbHVlIiwiYXR0ciIsInJlY3Vyc2l2ZVJlc3VsdCIsImxpc3QiLCJBcnJheSIsImlzQXJyYXkiLCJsZW4iLCJ0cmVlIiwibG9va3VwIiwicHVzaCIsImRlcHMiLCJ0YXJnZXQiLCJpMCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwidGl0bGUiLCJvdXRwdXRzIiwicXVlcmllcyIsInByb3BlcnR5TmFtZSIsImZpcnN0IiwicHJlZGljYXRlIiwiZGVzY2VuZGFudHMiLCJzdGF0aWMiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy90cmVldmlldy90cmVldmlldy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQmFzaXMgS29tcG9uZW50ZSBmw7xyIFNhY1RyZWVWaWV3XHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY1RyZWVWaWV3Q29tbW9uIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKipcclxuICAgKiBEYXMgUHJvcGVydHkgZW50aGllbHQgYm9vbGVhbiBXZXJ0IHVuZCBkZWZmaW5pZXJ0LCBvYiBhbGxlIEl0ZW1zIGNvbGxhcHNlZCBzaW5kLiBEZWZhdWx0IHZhbHVlOiB1bmRlZmluZWQvbnVsbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBfY29sbGFwc2VBbGw6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBib29sZWFuIFdlcnQgdW5kIGRlZmZpbmllcnQsIG9iIGFsbGUgSXRlbXMgc2VsZWN0ZWQgc2luZC4gRGVmYXVsdCB2YWx1ZTogdW5kZWZpbmVkL251bGxcclxuICAgKi9cclxuICBwcml2YXRlIF9zZWxlY3RBbGw6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBhcnJheSBvZiBub2Rlcy4gRGVmYXVsdCB2YWx1ZTogZW1wdHkgYXJyYXkgW10uXHJcbiAgICovXHJcbiAgcHVibGljIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBEYXMgUHJvcGVydHkgZW50aGllbHQgbm9kZSBhdHRyaWJ1dGU6ICdpc0NvbGxhcHNlZCcuIEVzIHdpcmQgYmVudXR6dCBiZWltIHJlbmRlcmluZy4gRsO8ciBFeHBhbmQvQ29sbGFwc2VkIFNpY2h0IGRlcyBOb2RlKFdlcnQpXHJcbiAgICovXHJcbiAgcHVibGljIGNvbGxhcHNlQXR0ciA9ICdpc0NvbGxhcHNlZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBub2RlIGF0dHJpYnV0ZTogJ2lzU2VsZWN0ZWQnLiBFcyB3aXJkIGJlbnV0enQgYmVpbSBWb3JiZXJlaXR1bmcgZGVzIERhdGEgZGVzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdEF0dHIgPSAnaXNTZWxlY3RlZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlbnRoaWVsdCBub2RlIGF0dHJpYnV0ZTogJ2lzSW5kZXRlcm1pbmF0ZScuIEVzIHdpcmQgYmVudXR6dCBiZWltIFZvcmJlcmVpdHVuZyBkZXMgRGF0YSBkZXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBwdWJsaWMgaW5EZXRlcm1pbmF0ZUF0dHIgPSAnaXNJbmRldGVybWluYXRlJztcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZW4gZGF0YSBmb3IgdHJlZS5cclxuICAgKi9cclxuICBwcml2YXRlIF9kYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZsO8ciBEYXRhIGRlcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIGdldCBkYXRhKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgUHJvcGVydHkgZsO8ciBEYXRhIGRlcyBUcmVlVmlld1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGEodmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLm5vZGVzID0gdmFsdWU7XHJcblxyXG4gICAgLy8gdGhpcy5ub2Rlcy5mb3JFYWNoKG5vZGUgPT4gbm9kZVtcInR5cGVJZFwiXSA9IFwiMTNcIilcclxuXHJcbiAgICB0aGlzLkxvYWRUcmVlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2NvbGxhcHNlQWxsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUFsbE5vZGUodGhpcy5fY29sbGFwc2VBbGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgUHJvcGVydHkgZsO8ciB0ZW1wbGF0ZSBkZXMgVHJlZVZpZXcuIFR5cGU6IFRlbXBsYXRlUmVmPGFueT4uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGllIERpcmVjdGl2ZSBlcmjDpGx0IGRpZSBhY3Rpb25zIGbDvHIgZGFzIFRyZWVWaWV3XHJcbiAgICovXHJcbiAgQENvbnRlbnRDaGlsZCgnYWN0aW9ucycsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHNldCB0cmVldmlld1RlbXBsYXRlKHY6IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgIHRoaXMudGVtcGxhdGUgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGbDvHIgZGFzIFRyZWVWaWV3IFRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIGdldCB0cmVldmlld1RlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBwcm9wZXJ0eSBlcmjDpGx0IEljb24gZsO8ciBkYXMgVGVtcGxhdGVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGZpbGVpY29udGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHRlciBwcm9wZXJ0eS4gRGVmZmluaWVydCBkYXMgRmlsZUljb24gZsO8ciBkYXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCd0cmVlZmlsZWljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHB1YmxpYyBzZXQgdHJlZWZpbGVpY29uKHY6IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgIHRoaXMuZmlsZWljb250ZW1wbGF0ZSA9IHY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgcHJvcGVydHkuIEVyZ2lidCBkYXMgRmlsZUljb24gZsO8ciBkYXMgVHJlZVZpZXdcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHRyZWVmaWxlaWNvbigpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVpY29udGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmw7xyIGRlbiBOYW1lbiBkZXMgVHJlZVZpZXcuIFR5cGUgc3RyaW5nLiBEZWZhdWx0IHZhbHVlOiBcIlwiXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBuYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBmbGFnIGluZGljYXRpbmcgZGF0YSBpcyBmbGF0dGVuIGluIGFycmF5IGFuZCBwcmVwYXJlIGlzIHJlcXVpcmVkLihEZWZhdWx0XHJcbiAgICogaXMgZmFsc2UpLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHByZXBhcmVEYXRhID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dHJpYnV0ZSBmb3IgVGV4dCBpbiBUcmVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dEF0dHIgPSAnZGF0YSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgSUQgcHJvcGVydHkgaW4gaW5wdXQgZGF0YS5cclxuICAgKi9cclxuICBASW5wdXQoKSBpZEF0dHIgPSAnaWQnO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIG9mIHBhcmVudCBwcm9wZXJ0eSBpbiBpbnB1dCBkYXRhLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhcmVudEF0dHIgPSAnUEFSRU5UX0lEJztcclxuXHJcbiAgLyoqXHJcbiAgICogTmFtZSBvZiBjaGlsZHJlbiBsaXN0IHByb3BlcnR5IGluIGlucHV0IGRhdGEuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2hpbGRyZW5BdHRyID0gJ2NoaWxkcmVuJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0bGUgZGVzIFRyZWV2aWV3XHJcbiAgICovXHJcbiAgQElucHV0KCkgdGl0bGU7XHJcblxyXG4gIC8vIEBJbnB1dChcInRpdGxlQWN0aW9uXCIpIF90aXRsZUFjdGlvbjogc3RyaW5nXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbGxhcHNlIG9yIGV4cGFuZCBhbGwgcGFyZW50IG5vZGVzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbGxhcHNlYWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jb2xsYXBzZUFsbCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMubm9kZXMgJiYgdGhpcy5ub2Rlcy5sZW5ndGggJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxOb2RlKHRoaXMuX2NvbGxhcHNlQWxsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLl9yZWN1cnNpdmVFZGl0KFxyXG4gICAgLy8gICB0aGlzLm5vZGVzLCB0aGlzLmNoaWxkcmVuQXR0ciwgdGhpcy5jb2xsYXBzZUF0dHIsIHRoaXMuX2NvbGxhcHNlQWxsKTtcclxuXHJcbiAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmw7xyIGRhcyBjb2xsYXBzZSBwcm9wZXJ0eS4gRXJnaWJ0IGJvb2xlYW4gV2VydCwgb2IgZGllIEl0ZW1zIGNvbGxhcHNlZC9leHBhbmQgc2luZC5cclxuICAgKi9cclxuICBnZXQgY29sbGFwc2VhbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VBbGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3Qgb3IgZGVzZWxlY3QgYWxsIG5vZGVzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGFsbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2VsZWN0QWxsID0gdmFsdWU7XHJcbiAgICB0aGlzLl9yZWN1cnNpdmVFZGl0KHRoaXMubm9kZXMsIHRoaXMuY2hpbGRyZW5BdHRyLCB0aGlzLnNlbGVjdEF0dHIsIHZhbHVlKTtcclxuICAgIHRoaXMuX3JlY3Vyc2l2ZUVkaXQoXHJcbiAgICAgIHRoaXMubm9kZXMsXHJcbiAgICAgIHRoaXMuY2hpbGRyZW5BdHRyLFxyXG4gICAgICB0aGlzLmluRGV0ZXJtaW5hdGVBdHRyLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IC0gc2V0dGVyLiBEZWZmaW5pZXJ0IGRhcyBJRCBkZXMgc2VsZWt0aWVydGVuIEl0ZW0obm9kZSlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBzZWxlY3RlZGlkKHY6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSB0aGlzLmZpbmROb2RlKHRoaXMubm9kZXMsIHYsIHRoaXMuaWRBdHRyKTtcclxuXHJcbiAgICAvLyBpZiAodGhpcy5zZWxlY3RlZE5vZGUpIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZElkRW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMuaWRBdHRyXSk7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRUZXh0RW1pdHRlci5lbWl0KHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGV4dEF0dHJdKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlci4gRXJnaWJ0IGRhcyBJRCBkZXMgc2VsZWt0aWVydGVuIEl0ZW0obm9kZSlcclxuICAgKi9cclxuICBnZXQgc2VsZWN0ZWRJZCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROb2RlID8gdGhpcy5zZWxlY3RlZE5vZGVbdGhpcy5pZEF0dHJdIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBQcm9wZXJ0eSBlcmjDpGx0IGRhcyBzZWxla3RpZXJ0ZSBXZXJ0KG5vZGUpLiBEZWZhdWx0IHZhbHVlOiB1bmRlZmluZWQvbnVsbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkTm9kZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGbDvHIgZGFzIHNlbGVrdGllcnRlIFdlcnQobm9kZSkuIFdlbm4gYXVmZ2VydWZlbiBkYXMgSUQgdW5kIFRleHRBdHRyIGRlcyBzZWxlY3RlZCBOb2RlIHdpcmQgZW1pdHRlZFxyXG4gICAqL1xyXG4gIHNldCBzZWxlY3RlZE5vZGUodjogYW55KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZE5vZGUgPSB2O1xyXG5cclxuICAgIGlmICh0aGlzLl9zZWxlY3RlZE5vZGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZGlkY2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZElkKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZHRleHRjaGFuZ2VkLmVtaXQodlt0aGlzLnRleHRBdHRyXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZsO8ciBkYXMgc2VsZWt0aWVydGUgV2VydChub2RlKS4gRXJnaWJ0IGRhcyBzZWxla3RpZXJ0ZSBXZXJ0KG5vZGUpLlxyXG4gICAqL1xyXG4gIGdldCBzZWxlY3RlZE5vZGUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE5vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgRW1pdHRlci4gRW1pdCBkYXMgSUQgZGVzIHNlbGVjdGVkIE5vZGUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWRpZGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT3V0cHV0IEVtaXR0ZXIuIEVtaXQgZGFzIFRleHRBdHRyIGRlcyBzZWxlY3RlZCBOb2RlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGVkdGV4dGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dHB1dCBFbWl0dGVyLiBFbWl0IHdlbm4gZWluIE5vZGUgc2VsZWt0aWVydCB3aXJkLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGVkaXRlbTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBsaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBBbmd1bGFyIGhhcyBpbml0aWFsaXplZCBhbGwgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgZGlyZWN0aXZlLlxyXG4gICAqIERlZmluZSBhbiBuZ09uSW5pdCgpIG1ldGhvZCB0byBoYW5kbGUgYW55IGFkZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24gdGFza3MuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlQWxsTm9kZSh0aGlzLl9jb2xsYXBzZUFsbCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZCkgdGhpcy5vcGVuU2VsZWN0ZWROb2RlKHRoaXMubm9kZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVua3Rpb24gc2V0enQgYWxsZSBwYXJlbnQgaXRlbXMgcmVjdXNpdiB6dW0gc2VsZWN0ZWQgbm9kZVxyXG4gICAqIGF1ZiBjb2xsYXBzZWQgPSBmYWxzZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3BlblNlbGVjdGVkTm9kZShkYXRhKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCAmJlxyXG4gICAgICAgIGRhdGFbaV1bdGhpcy5pZEF0dHJdICE9IHRoaXMuc2VsZWN0ZWRJZFxyXG4gICAgICApXHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5vcGVuU2VsZWN0ZWROb2RlKGRhdGFbaV1bdGhpcy5jaGlsZHJlbkF0dHJdKTtcclxuICAgICAgaWYgKHJlc3VsdCB8fCBkYXRhW2ldW3RoaXMuaWRBdHRyXSA9PSB0aGlzLnNlbGVjdGVkSWQpIHtcclxuICAgICAgICBkYXRhW2ldW3RoaXMuY29sbGFwc2VBdHRyXSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSB2b3JiZXJlaXRldCBkaWUgRGF0ZW4gZsO8ciBkYXMgVHJlZVZpZXcuIERpZSBGdW5rdGlvbiBzb2xsdGUgZ2XDpG5kZXJ0IHdlcmRlbiBhYmjDpG5naWcgdm9uIGRlbSBrb21tZW5kZW4gRGF0ZW4gKHdlbm4gYXJyYXkpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBMb2FkVHJlZSgpIHtcclxuICAgIC8vaWYgdGhlIHRyZWUgc3RydWN0dXJlIHJlcXVpcmUgYXJyYXkgdGhlIGZ1bmN0aW9uIGJlbG93IHNob3VsZCBiZSBjaGFuZ2VkXHJcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLl9kYXRhLm1hcCgoeCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgeCkpO1xyXG5cclxuICAgIC8vIElmIGRhdGEgaXMgZmxhdCwgcHJlcGFyZSBkYXRhIHdpdGggcmVjdXJzaXZlIGZ1bmN0aW9uLlxyXG4gICAgdGhpcy5ub2RlcyA9IHRoaXMucHJlcGFyZURhdGEgPyB0aGlzLl9nZXRQcmVwYXJlZERhdGEoY2xvbmVkKSA6IHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBjb2xsYXBzZS9leHBhbmQgZGVuIHNlbGVjdGllcnRlbiBOb2RlXHJcbiAgICovXHJcbiAgb25Db2xsYXBzZUNsaWNrKG5vZGUpIHtcclxuICAgIGlmIChub2RlW3RoaXMuY2hpbGRyZW5BdHRyXS5sZW5ndGgpIHtcclxuICAgICAgbm9kZVt0aGlzLmNvbGxhcHNlQXR0cl0gPSAhbm9kZVt0aGlzLmNvbGxhcHNlQXR0cl07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBzZXQgZGVuIHNlbGVrdGllcnRlbiBOb2RlIHVuZCBlbWl0IGVzLlxyXG4gICAqL1xyXG4gIG9uQ2xpY2sobm9kZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xyXG4gICAgdGhpcy5zZWxlY3RlZGl0ZW0uZW1pdCh0aGlzLnNlbGVjdGVkTm9kZSk7XHJcbiAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHdpcmQgZWluIGV2ZW50IG1pdCBNZWxkdW5nIHp1IFBhcmVudCBlbWl0LWVuLlxyXG4gICAqL1xyXG4gIHNlbmRNc2dUb1BhcmVudChtc2cpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRpdGVtLmVtaXQobXNnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHdpcmQgYWxsZSBOb2RlcyBjb2xsYXBzZVxyXG4gICAqL1xyXG4gIGNvbGxhcHNlQWxsTm9kZShjb21tYW5kKSB7XHJcbiAgICB0aGlzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgaWYgKG5vZGVbdGhpcy5jaGlsZHJlbkF0dHJdLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbGxhcHNlQWxsSElkZGVuKG5vZGUsIHRoaXMuY29sbGFwc2VBdHRyLCBjb21tYW5kLCB0aGlzLmNoaWxkcmVuQXR0cik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gY29sbGFwc2VBbGxISWRkZW4obm9kZSwgY29sbGFwc2VBdHRyLCBjb21tYW5kLCBjaGlsZHJlbkF0dHIpIHtcclxuICAgICAgbm9kZVtjb2xsYXBzZUF0dHJdID0gY29tbWFuZDtcclxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNoaWxkW2NoaWxkcmVuQXR0cl0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb2xsYXBzZUFsbEhJZGRlbihjaGlsZCwgY29sbGFwc2VBdHRyLCBjb21tYW5kLCBjaGlsZHJlbkF0dHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5rdGlvbiBnaWJ0IG5vZGUgYXVzIGRlciBsaXN0ZSB6dXLDvGNrLCB3ZWxjaGVzIGRhcyBWYWx1ZSBhdWYgZGVtIGdld8O8bnNjaHRlbiBBdHRyaWJ1dCBoYXRcclxuICAgKiBXZW5uIG5vZGUgbmljaHQgZ2VmdW5kZW4gd2lyZCwgd2lyZCBudWxsIHp1csO8Y2sgZ2VnZWJlblxyXG4gICAqIEBwYXJhbSBkYXRhIExpc3RlIGRlciBub2Rlc1xyXG4gICAqIEBwYXJhbSBzZWFyY2hWYWx1ZSBEYXMgZ2VzdWNodGUgdmFsdWVcclxuICAgKiBAcGFyYW0gYXR0ciBEZXIgbmFtZW4gZGVzIEF0dHJpYnV0cyBhdWYgZGVtIGRhcyB2YWx1ZSBnZXN1Y2h0IHdpcmRcclxuICAgKi9cclxuICBwcml2YXRlIGZpbmROb2RlKGRhdGEsIHNlYXJjaFZhbHVlLCBhdHRyKTogYW55IHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGRhdGFbaV1bYXR0cl0gPT0gc2VhcmNoVmFsdWUpIHJlc3VsdCA9IGRhdGFbaV07XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChkYXRhW2ldW3RoaXMuY2hpbGRyZW5BdHRyXS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCByZWN1cnNpdmVSZXN1bHQgPSB0aGlzLmZpbmROb2RlKFxyXG4gICAgICAgICAgICBkYXRhW2ldW3RoaXMuY2hpbGRyZW5BdHRyXSxcclxuICAgICAgICAgICAgc2VhcmNoVmFsdWUsXHJcbiAgICAgICAgICAgIGF0dHJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocmVjdXJzaXZlUmVzdWx0KSByZXN1bHQgPSByZWN1cnNpdmVSZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgZWRpdGllcnQgKHJlY3Vyc2l2ZSkgYWxsZSBlaW5nZWdlYmVuZSBOb2RlcyBhYmjDpG5naWcgdm9uIGdlZ2ViZW5lbiBBdHRpYnV0ZSB1bmQgVmFsdWUgS3JpdGVyaWVuLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3JlY3Vyc2l2ZUVkaXQobGlzdCwgY2hpbGRyZW5BdHRyLCBhdHRyLCB2YWx1ZSkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGxpc3QubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBsaXN0W2ldW2F0dHJdID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKGxpc3RbaV1bY2hpbGRyZW5BdHRyXS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuX3JlY3Vyc2l2ZUVkaXQobGlzdFtpXVtjaGlsZHJlbkF0dHJdLCBjaGlsZHJlbkF0dHIsIGF0dHIsIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIGVyc3RlbGx0IGVpbmUgc3RhbmRhcnRlIFNpY2h0LUxpc3RlIHZvbiBOb2Rlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dldFByZXBhcmVkRGF0YShsaXN0KSB7XHJcbiAgICBjb25zdCB0cmVlID0gW10sXHJcbiAgICAgIGxvb2t1cCA9IHt9O1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGxpc3QubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgbG9va3VwW2xpc3RbaV1bdGhpcy5pZEF0dHJdXSA9IGxpc3RbaV07XHJcbiAgICAgIGxpc3RbaV1bdGhpcy5jaGlsZHJlbkF0dHJdID0gW107XHJcbiAgICAgIGxpc3RbaV1bdGhpcy5jb2xsYXBzZUF0dHJdID0gdHJ1ZTtcclxuICAgICAgbGlzdFtpXVt0aGlzLnNlbGVjdEF0dHJdID0gZmFsc2U7XHJcbiAgICAgIGxpc3RbaV1bdGhpcy5pbkRldGVybWluYXRlQXR0cl0gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBsaXN0Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChsaXN0W2ldW3RoaXMucGFyZW50QXR0cl0pIHtcclxuICAgICAgICBsb29rdXBbbGlzdFtpXVt0aGlzLnBhcmVudEF0dHJdXVt0aGlzLmNoaWxkcmVuQXR0cl0ucHVzaChsaXN0W2ldKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0cmVlLnB1c2gobGlzdFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZTtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiaXVrQ0FtQ0U7QUFBQUEsY0FBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxjQUFBLEdBbkNGLE9BQ0VFLFlBQVksQ0FDWkMsU0FBUyxDQUNUQyxZQUFZLENBQ1pDLEtBQUssQ0FFTEMsTUFBTSxLQUVELGVBQWUsQyxpQ0FFdEI7O0dBR0EsS0FDYSxDQUFBQyxpQkFBaUIsQ0FEOUJDLFlBQUEsRUFBQVIsY0FBQSxHQUFBUyxDQUFBLE1BQUFULGNBQUEsR0FBQVUsQ0FBQSxNQVlFOztXQUdPLEtBQUFDLEtBQUssQ0FBVSxFQUFFLENBRXhCOztXQUFBWCxjQUFBLEdBQUFVLENBQUEsTUFHTyxLQUFBRSxZQUFZLENBQUcsYUFBYSxDQUVuQzs7V0FBQVosY0FBQSxHQUFBVSxDQUFBLE1BR08sS0FBQUcsVUFBVSxDQUFHLFlBQVksQ0FFaEM7O1dBQUFiLGNBQUEsR0FBQVUsQ0FBQSxNQUdPLEtBQUFJLGlCQUFpQixDQUFHLGlCQUFpQixDQUU1Qzs7V0FBQWQsY0FBQSxHQUFBVSxDQUFBLE1BR1EsS0FBQUssS0FBSyxDQUFVLEVBQUUsQ0FvRXpCOztXQUFBZixjQUFBLEdBQUFVLENBQUEsTUFJQSxLQUFBTSxJQUFJLENBQVcsRUFBRSxDQUVqQjs7O1dBQUFoQixjQUFBLEdBQUFVLENBQUEsTUFJUyxLQUFBTyxXQUFXLENBQUcsS0FBSyxDQUU1Qjs7V0FBQWpCLGNBQUEsR0FBQVUsQ0FBQSxNQUdTLEtBQUFRLFFBQVEsQ0FBRyxNQUFNLENBRTFCOztXQUFBbEIsY0FBQSxHQUFBVSxDQUFBLE1BR1MsS0FBQVMsTUFBTSxDQUFHLElBQUksQ0FFdEI7O1dBQUFuQixjQUFBLEdBQUFVLENBQUEsTUFHUyxLQUFBVSxVQUFVLENBQUcsV0FBVyxDQUVqQzs7V0FBQXBCLGNBQUEsR0FBQVUsQ0FBQSxPQUdTLEtBQUFXLFlBQVks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
|