@simpleangularcontrols/sac-common 16.0.0-rc.13 → 16.0.0-rc.15
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/README.md +15 -15
- package/common/basedatetimecontrol.d.ts.map +1 -1
- package/controls/upload/dropzonemultiple.d.ts +5 -5
- package/controls/upload/dropzonemultiple.d.ts.map +1 -1
- package/controls/upload/dropzonesingle.d.ts +18 -18
- package/controls/upload/dropzonesingle.d.ts.map +1 -1
- package/controls/upload/uploadmultiple.d.ts +1 -1
- package/controls/upload/uploadmultiple.d.ts.map +1 -1
- package/controls/upload/uploadsingle.d.ts +1 -1
- package/controls/upload/uploadsingle.d.ts.map +1 -1
- package/esm2022/common/basedatetimecontrol.mjs +44 -42
- package/esm2022/common/baseinputcontrol.mjs +14 -14
- package/esm2022/common/baselistcontrol.mjs +11 -11
- package/esm2022/common/basemodelcontrol.mjs +75 -75
- package/esm2022/common/baseselectcontrol.mjs +6 -6
- package/esm2022/common/baseuploadcontrol.mjs +58 -58
- package/esm2022/components/browser/browser.mjs +54 -54
- package/esm2022/components/browser/models/browserfile.mjs +3 -3
- package/esm2022/components/browser/models/browserfiledeleterequest.mjs +4 -4
- package/esm2022/components/browser/models/browserfilerenamerequest.mjs +4 -4
- package/esm2022/components/browser/models/browserfileresponse.mjs +3 -3
- package/esm2022/components/browser/models/browserfilesaverequest.mjs +4 -4
- package/esm2022/components/browser/models/browsernode.mjs +3 -3
- package/esm2022/components/browser/models/browsernodedeleterequest.mjs +4 -4
- package/esm2022/components/browser/models/browsernodenewrequest.mjs +4 -4
- package/esm2022/components/browser/models/browsernoderenamerequest.mjs +4 -4
- package/esm2022/components/browser/models/browsernoderequest.mjs +4 -4
- package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -3
- package/esm2022/controls/buttons/button.mjs +19 -19
- package/esm2022/controls/checkbox/checkbox.mjs +8 -8
- package/esm2022/controls/checkbox/radiobutton.mjs +22 -22
- package/esm2022/controls/checkbox/radiobuttons.mjs +15 -15
- package/esm2022/controls/confirm/confirm.button.mjs +6 -6
- package/esm2022/controls/confirm/confirm.mjs +13 -13
- package/esm2022/controls/confirm/confirm.service.mjs +20 -20
- package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -3
- package/esm2022/controls/contextmenu/contextmenu.mjs +20 -20
- package/esm2022/controls/contextmenu/contextmenuanchor.mjs +4 -4
- package/esm2022/controls/contextmenu/contextmenucontainer.mjs +4 -4
- package/esm2022/controls/contextmenu/contextmenuitem.mjs +5 -5
- package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -15
- package/esm2022/controls/datetime/date.mjs +23 -23
- package/esm2022/controls/datetime/dateselector.mjs +51 -51
- package/esm2022/controls/datetime/datetime.mjs +24 -24
- package/esm2022/controls/datetime/time.mjs +23 -23
- package/esm2022/controls/dialog/dialog.mjs +22 -22
- package/esm2022/controls/form/form.mjs +13 -13
- package/esm2022/controls/grid/grid.mjs +21 -21
- package/esm2022/controls/grid/gridbutton.mjs +8 -8
- package/esm2022/controls/grid/gridcolumn.mjs +8 -8
- package/esm2022/controls/grid/gridcolumnaction.mjs +4 -4
- package/esm2022/controls/grid/gridcolumnbase.mjs +16 -16
- package/esm2022/controls/grid/gridimage.mjs +4 -4
- package/esm2022/controls/grid/model.mjs +13 -13
- package/esm2022/controls/grid/paging.mjs +34 -34
- package/esm2022/controls/input/input.mjs +11 -11
- package/esm2022/controls/input/inputarea.mjs +10 -10
- package/esm2022/controls/input/inputcurrency.mjs +6 -6
- package/esm2022/controls/input/inputdecimal.mjs +20 -20
- package/esm2022/controls/input/inputemail.mjs +7 -7
- package/esm2022/controls/input/inputinteger.mjs +19 -19
- package/esm2022/controls/input/inputpassword.mjs +8 -8
- package/esm2022/controls/input/inputsearch.mjs +11 -11
- package/esm2022/controls/layout/formlayout.mjs +16 -16
- package/esm2022/controls/list/buildvaluestring.mjs +7 -7
- package/esm2022/controls/list/dropdown.mjs +25 -25
- package/esm2022/controls/list/dropdownoptions.mjs +10 -10
- package/esm2022/controls/list/listbox.mjs +21 -21
- package/esm2022/controls/multilanguage/multilanguageinput.mjs +26 -26
- package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +27 -27
- package/esm2022/controls/static/formcontainer.mjs +11 -11
- package/esm2022/controls/static/staticlabel.mjs +7 -7
- package/esm2022/controls/tabs/tab.mjs +11 -11
- package/esm2022/controls/tabs/tabitem.mjs +6 -6
- package/esm2022/controls/tinymce/tinymce.mjs +31 -31
- package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +4 -4
- package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
- package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -3
- package/esm2022/controls/tooltip/tooltip.mjs +34 -34
- package/esm2022/controls/treeview/treeview.mjs +44 -44
- package/esm2022/controls/upload/dropzonemultiple.mjs +21 -21
- package/esm2022/controls/upload/dropzonesingle.mjs +23 -20
- package/esm2022/controls/upload/uploadmultiple.mjs +16 -16
- package/esm2022/controls/upload/uploadsingle.mjs +11 -8
- package/esm2022/controls/validation/validationsummary.mjs +14 -14
- package/esm2022/controls/wizard/wizard.mjs +17 -17
- package/esm2022/controls/wizard/wizarditem.mjs +5 -5
- package/esm2022/enums/ButtonRoleType.mjs +3 -3
- package/esm2022/enums/ControlHeight.mjs +6 -6
- package/esm2022/enums/IconType.mjs +4 -4
- package/esm2022/interfaces/ISacConfigurationService.mjs +3 -3
- package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -3
- package/esm2022/interfaces/ISacIconService.mjs +3 -3
- package/esm2022/interfaces/ISacLabelSizes.mjs +3 -3
- package/esm2022/interfaces/ISacLanguageService.mjs +3 -3
- package/esm2022/interfaces/ISacLocalisationService.mjs +3 -3
- package/esm2022/interfaces/ISacUploadEventCompleteState.mjs +3 -3
- package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -3
- package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -3
- package/esm2022/interfaces/iconfirmcomponent.mjs +3 -3
- package/esm2022/interfaces/idatetimecontrol.mjs +3 -3
- package/esm2022/interfaces/iuploadcontrol.mjs +3 -3
- package/esm2022/interfaces/treeviewaction.interface.mjs +3 -3
- package/esm2022/models/languagemodel.mjs +5 -5
- package/esm2022/public_api.mjs +4 -4
- package/esm2022/services/index.mjs +3 -3
- package/esm2022/services/sac-configuration.service.mjs +18 -18
- package/esm2022/services/sac-filebrowser.service.mjs +14 -14
- package/esm2022/services/sac-icon.service.mjs +32 -32
- package/esm2022/services/sac-language.service.mjs +6 -6
- package/esm2022/services/sac-localisation.service.mjs +19 -19
- package/esm2022/services/sac-validationkey.service.mjs +6 -6
- package/esm2022/simpleangularcontrols-sac-common.mjs +3 -3
- package/esm2022/utilities/convertion.mjs +6 -6
- package/esm2022/utilities/datatypes.mjs +4 -4
- package/esm2022/utilities/enums.mjs +10 -10
- package/esm2022/utilities/guid.mjs +6 -6
- package/esm2022/utilities/interpolation.mjs +6 -6
- package/esm2022/utilities/popuphelper.mjs +34 -34
- package/esm2022/utilities/positioning.mjs +20 -20
- package/esm2022/validation/email.validator.mjs +3 -3
- package/esm2022/validation/equals.validator.mjs +3 -3
- package/esm2022/validation/index.mjs +3 -3
- package/esm2022/validation/invaliddate.validator.mjs +3 -3
- package/esm2022/validation/isDateValid.mjs +8 -8
- package/esm2022/validation/maxdate.validator.mjs +4 -4
- package/esm2022/validation/maxtime.validator.mjs +4 -4
- package/esm2022/validation/maxvalue.validator.mjs +3 -3
- package/esm2022/validation/mindate.validator.mjs +4 -4
- package/esm2022/validation/minfiles.validator.mjs +4 -4
- package/esm2022/validation/mintextlength.validator.mjs +5 -5
- package/esm2022/validation/mintime.validator.mjs +4 -4
- package/esm2022/validation/minvalue.validator.mjs +3 -3
- package/esm2022/validation/multilanguagerequired.validator.mjs +3 -3
- package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -3
- package/esm2022/validation/notequals.validator.mjs +3 -3
- package/esm2022/validation/pattern.validator.mjs +3 -3
- package/esm2022/validation/required.validator.mjs +3 -3
- package/esm2022/validation/validation.mjs +22 -22
- package/esm2022/validation/validationerrorcreator.mjs +3 -3
- package/esm2022/validation/validationerroritem.mjs +5 -5
- package/fesm2022/simpleangularcontrols-sac-common.mjs +1154 -1146
- package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
- package/package.json +1 -1
- package/simpleangularcontrols-sac-common-16.0.0-rc.15.tgz +0 -0
- package/simpleangularcontrols-sac-common-16.0.0-rc.13.tgz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function cov_1y8jkaecmb(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\common\\baseuploadcontrol.mjs";var hash="5065c91ec408901763d86fe190b0576c2820eeec";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\common\\baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:32,column:8},end:{line:32,column:33}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:33}},"6":{start:{line:44,column:8},end:{line:44,column:30}},"7":{start:{line:48,column:8},end:{line:48,column:27}},"8":{start:{line:52,column:8},end:{line:52,column:26}},"9":{start:{line:56,column:8},end:{line:60,column:10}},"10":{start:{line:57,column:12},end:{line:59,column:13}},"11":{start:{line:58,column:16},end:{line:58,column:85}},"12":{start:{line:64,column:8},end:{line:64,column:32}},"13":{start:{line:68,column:8},end:{line:68,column:29}},"14":{start:{line:72,column:8},end:{line:72,column:46}},"15":{start:{line:76,column:8},end:{line:76,column:51}},"16":{start:{line:80,column:8},end:{line:80,column:91}},"17":{start:{line:84,column:8},end:{line:84,column:105}},"18":{start:{line:85,column:8},end:{line:85,column:113}},"19":{start:{line:86,column:8},end:{line:86,column:134}},"20":{start:{line:87,column:8},end:{line:87,column:26}},"21":{start:{line:88,column:8},end:{line:88,column:40}},"22":{start:{line:89,column:8},end:{line:89,column:37}},"23":{start:{line:90,column:8},end:{line:90,column:41}},"24":{start:{line:91,column:8},end:{line:91,column:51}},"25":{start:{line:92,column:8},end:{line:92,column:44}},"26":{start:{line:93,column:8},end:{line:93,column:47}},"27":{start:{line:94,column:8},end:{line:96,column:11}},"28":{start:{line:94,column:39},end:{line:96,column:9}},"29":{start:{line:98,column:8},end:{line:98,column:50}},"30":{start:{line:99,column:8},end:{line:99,column:46}},"31":{start:{line:101,column:8},end:{line:101,column:77}},"32":{start:{line:101,column:55},end:{line:101,column:75}},"33":{start:{line:109,column:8},end:{line:109,column:58}},"34":{start:{line:115,column:8},end:{line:115,column:60}},"35":{start:{line:121,column:8},end:{line:121,column:58}},"36":{start:{line:127,column:8},end:{line:127,column:57}},"37":{start:{line:133,column:8},end:{line:133,column:58}},"38":{start:{line:136,column:8},end:{line:136,column:34}},"39":{start:{line:142,column:8},end:{line:142,column:35}},"40":{start:{line:143,column:8},end:{line:143,column:36}},"41":{start:{line:146,column:8},end:{line:146,column:32}},"42":{start:{line:152,column:8},end:{line:152,column:29}},"43":{start:{line:153,column:8},end:{line:153,column:36}},"44":{start:{line:154,column:8},end:{line:154,column:49}},"45":{start:{line:157,column:8},end:{line:157,column:33}},"46":{start:{line:163,column:8},end:{line:163,column:30}},"47":{start:{line:166,column:8},end:{line:166,column:30}},"48":{start:{line:172,column:8},end:{line:172,column:27}},"49":{start:{line:173,column:8},end:{line:173,column:28}},"50":{start:{line:179,column:8},end:{line:179,column:27}},"51":{start:{line:185,column:8},end:{line:185,column:24}},"52":{start:{line:186,column:8},end:{line:186,column:25}},"53":{start:{line:193,column:8},end:{line:198,column:9}},"54":{start:{line:194,column:12},end:{line:194,column:44}},"55":{start:{line:197,column:12},end:{line:197,column:102}},"56":{start:{line:205,column:8},end:{line:205,column:39}},"57":{start:{line:212,column:8},end:{line:217,column:9}},"58":{start:{line:213,column:12},end:{line:213,column:88}},"59":{start:{line:213,column:48},end:{line:213,column:73}},"60":{start:{line:216,column:12},end:{line:216,column:25}},"61":{start:{line:224,column:8},end:{line:224,column:80}},"62":{start:{line:224,column:44},end:{line:224,column:67}},"63":{start:{line:231,column:8},end:{line:231,column:106}},"64":{start:{line:231,column:44},end:{line:231,column:93}},"65":{start:{line:238,column:8},end:{line:238,column:83}},"66":{start:{line:238,column:44},end:{line:238,column:70}},"67":{start:{line:245,column:8},end:{line:250,column:9}},"68":{start:{line:246,column:12},end:{line:246,column:44}},"69":{start:{line:249,column:12},end:{line:249,column:21}},"70":{start:{line:257,column:8},end:{line:257,column:77}},"71":{start:{line:263,column:8},end:{line:265,column:9}},"72":{start:{line:264,column:12},end:{line:264,column:61}},"73":{start:{line:271,column:8},end:{line:273,column:9}},"74":{start:{line:272,column:12},end:{line:272,column:30}},"75":{start:{line:279,column:8},end:{line:279,column:25}},"76":{start:{line:281,column:8},end:{line:281,column:108}},"77":{start:{line:282,column:8},end:{line:282,column:49}},"78":{start:{line:283,column:8},end:{line:283,column:41}},"79":{start:{line:284,column:8},end:{line:284,column:35}},"80":{start:{line:285,column:8},end:{line:287,column:9}},"81":{start:{line:286,column:12},end:{line:286,column:56}},"82":{start:{line:288,column:8},end:{line:288,column:49}},"83":{start:{line:296,column:22},end:{line:296,column:82}},"84":{start:{line:296,column:52},end:{line:296,column:81}},"85":{start:{line:297,column:8},end:{line:335,column:9}},"86":{start:{line:298,column:12},end:{line:311,column:13}},"87":{start:{line:301,column:16},end:{line:301,column:60}},"88":{start:{line:304,column:16},end:{line:304,column:44}},"89":{start:{line:305,column:16},end:{line:310,column:17}},"90":{start:{line:306,column:20},end:{line:306,column:63}},"91":{start:{line:308,column:21},end:{line:310,column:17}},"92":{start:{line:309,column:20},end:{line:309,column:62}},"93":{start:{line:313,column:13},end:{line:335,column:9}},"94":{start:{line:314,column:12},end:{line:316,column:13}},"95":{start:{line:315,column:16},end:{line:315,column:46}},"96":{start:{line:317,column:12},end:{line:317,column:38}},"97":{start:{line:319,column:13},end:{line:335,column:9}},"98":{start:{line:320,column:12},end:{line:320,column:58}},"99":{start:{line:321,column:12},end:{line:321,column:54}},"100":{start:{line:322,column:12},end:{line:322,column:39}},"101":{start:{line:323,column:32},end:{line:327,column:13}},"102":{start:{line:328,column:12},end:{line:328,column:52}},"103":{start:{line:331,column:12},end:{line:334,column:13}},"104":{start:{line:332,column:16},end:{line:332,column:62}},"105":{start:{line:333,column:16},end:{line:333,column:58}},"106":{start:{line:336,column:8},end:{line:336,column:31}},"107":{start:{line:343,column:8},end:{line:343,column:66}},"108":{start:{line:349,column:8},end:{line:351,column:9}},"109":{start:{line:350,column:12},end:{line:350,column:60}},"110":{start:{line:357,column:8},end:{line:357,column:35}},"111":{start:{line:365,column:8},end:{line:365,column:67}},"112":{start:{line:371,column:8},end:{line:373,column:9}},"113":{start:{line:372,column:12},end:{line:372,column:61}},"114":{start:{line:380,column:20},end:{line:380,column:24}},"115":{start:{line:381,column:8},end:{line:383,column:9}},"116":{start:{line:382,column:12},end:{line:382,column:114}},"117":{start:{line:384,column:8},end:{line:384,column:21}},"118":{start:{line:390,column:8},end:{line:392,column:9}},"119":{start:{line:391,column:12},end:{line:391,column:72}},"120":{start:{line:398,column:8},end:{line:398,column:78}},"121":{start:{line:398,column:44},end:{line:398,column:69}},"122":{start:{line:406,column:8},end:{line:408,column:9}},"123":{start:{line:407,column:12},end:{line:407,column:24}},"124":{start:{line:409,column:22},end:{line:409,column:27}},"125":{start:{line:410,column:27},end:{line:410,column:56}},"126":{start:{line:411,column:8},end:{line:415,column:11}},"127":{start:{line:412,column:12},end:{line:414,column:13}},"128":{start:{line:413,column:16},end:{line:413,column:31}},"129":{start:{line:416,column:8},end:{line:416,column:23}},"130":{start:{line:424,column:8},end:{line:426,column:9}},"131":{start:{line:425,column:12},end:{line:425,column:24}},"132":{start:{line:427,column:8},end:{line:427,column:44}},"133":{start:{line:436,column:8},end:{line:438,column:9}},"134":{start:{line:437,column:12},end:{line:437,column:88}},"135":{start:{line:439,column:8},end:{line:439,column:42}},"136":{start:{line:446,column:8},end:{line:446,column:36}},"137":{start:{line:448,column:13},end:{line:448,column:280}},"138":{start:{line:449,column:13},end:{line:449,column:662}},"139":{start:{line:452,column:0},end:{line:479,column:20}},"140":{start:{line:454,column:42},end:{line:454,column:152}},"141":{start:{line:491,column:8},end:{line:491,column:39}},"142":{start:{line:492,column:8},end:{line:492,column:31}},"143":{start:{line:493,column:8},end:{line:493,column:39}},"144":{start:{line:494,column:8},end:{line:494,column:35}},"145":{start:{line:495,column:8},end:{line:495,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:102,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:56,column:28},end:{line:56,column:29}},loc:{start:{line:56,column:34},end:{line:60,column:9}},line:56},"2":{name:"(anonymous_2)",decl:{start:{line:94,column:31},end:{line:94,column:32}},loc:{start:{line:94,column:39},end:{line:96,column:9}},line:94},"3":{name:"(anonymous_3)",decl:{start:{line:101,column:44},end:{line:101,column:45}},loc:{start:{line:101,column:55},end:{line:101,column:75}},line:101},"4":{name:"(anonymous_4)",decl:{start:{line:108,column:4},end:{line:108,column:5}},loc:{start:{line:108,column:21},end:{line:110,column:5}},line:108},"5":{name:"(anonymous_5)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:23},end:{line:116,column:5}},line:114},"6":{name:"(anonymous_6)",decl:{start:{line:120,column:4},end:{line:120,column:5}},loc:{start:{line:120,column:21},end:{line:122,column:5}},line:120},"7":{name:"(anonymous_7)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:20},end:{line:128,column:5}},line:126},"8":{name:"(anonymous_8)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:21},end:{line:134,column:5}},line:132},"9":{name:"(anonymous_9)",decl:{start:{line:135,column:4},end:{line:135,column:5}},loc:{start:{line:135,column:23},end:{line:137,column:5}},line:135},"10":{name:"(anonymous_10)",decl:{start:{line:141,column:4},end:{line:141,column:5}},loc:{start:{line:141,column:28},end:{line:144,column:5}},line:141},"11":{name:"(anonymous_11)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:21},end:{line:147,column:5}},line:145},"12":{name:"(anonymous_12)",decl:{start:{line:151,column:4},end:{line:151,column:5}},loc:{start:{line:151,column:22},end:{line:155,column:5}},line:151},"13":{name:"(anonymous_13)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:22},end:{line:158,column:5}},line:156},"14":{name:"(anonymous_14)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:23},end:{line:164,column:5}},line:162},"15":{name:"(anonymous_15)",decl:{start:{line:165,column:4},end:{line:165,column:5}},loc:{start:{line:165,column:19},end:{line:167,column:5}},line:165},"16":{name:"(anonymous_16)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:20},end:{line:174,column:5}},line:171},"17":{name:"(anonymous_17)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:16},end:{line:180,column:5}},line:178},"18":{name:"(anonymous_18)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:17},end:{line:187,column:5}},line:184},"19":{name:"(anonymous_19)",decl:{start:{line:192,column:4},end:{line:192,column:5}},loc:{start:{line:192,column:15},end:{line:199,column:5}},line:192},"20":{name:"(anonymous_20)",decl:{start:{line:204,column:4},end:{line:204,column:5}},loc:{start:{line:204,column:19},end:{line:206,column:5}},line:204},"21":{name:"(anonymous_21)",decl:{start:{line:211,column:4},end:{line:211,column:5}},loc:{start:{line:211,column:23},end:{line:218,column:5}},line:211},"22":{name:"(anonymous_22)",decl:{start:{line:213,column:39},end:{line:213,column:40}},loc:{start:{line:213,column:48},end:{line:213,column:73}},line:213},"23":{name:"(anonymous_23)",decl:{start:{line:223,column:4},end:{line:223,column:5}},loc:{start:{line:223,column:15},end:{line:225,column:5}},line:223},"24":{name:"(anonymous_24)",decl:{start:{line:224,column:35},end:{line:224,column:36}},loc:{start:{line:224,column:44},end:{line:224,column:67}},line:224},"25":{name:"(anonymous_25)",decl:{start:{line:230,column:4},end:{line:230,column:5}},loc:{start:{line:230,column:22},end:{line:232,column:5}},line:230},"26":{name:"(anonymous_26)",decl:{start:{line:231,column:35},end:{line:231,column:36}},loc:{start:{line:231,column:44},end:{line:231,column:93}},line:231},"27":{name:"(anonymous_27)",decl:{start:{line:237,column:4},end:{line:237,column:5}},loc:{start:{line:237,column:18},end:{line:239,column:5}},line:237},"28":{name:"(anonymous_28)",decl:{start:{line:238,column:35},end:{line:238,column:36}},loc:{start:{line:238,column:44},end:{line:238,column:70}},line:238},"29":{name:"(anonymous_29)",decl:{start:{line:244,column:4},end:{line:244,column:5}},loc:{start:{line:244,column:15},end:{line:251,column:5}},line:244},"30":{name:"(anonymous_30)",decl:{start:{line:256,column:4},end:{line:256,column:5}},loc:{start:{line:256,column:21},end:{line:258,column:5}},line:256},"31":{name:"(anonymous_31)",decl:{start:{line:262,column:4},end:{line:262,column:5}},loc:{start:{line:262,column:16},end:{line:266,column:5}},line:262},"32":{name:"(anonymous_32)",decl:{start:{line:270,column:4},end:{line:270,column:5}},loc:{start:{line:270,column:18},end:{line:274,column:5}},line:270},"33":{name:"(anonymous_33)",decl:{start:{line:278,column:4},end:{line:278,column:5}},loc:{start:{line:278,column:15},end:{line:289,column:5}},line:278},"34":{name:"(anonymous_34)",decl:{start:{line:295,column:4},end:{line:295,column:5}},loc:{start:{line:295,column:20},end:{line:337,column:5}},line:295},"35":{name:"(anonymous_35)",decl:{start:{line:296,column:45},end:{line:296,column:46}},loc:{start:{line:296,column:52},end:{line:296,column:81}},line:296},"36":{name:"(anonymous_36)",decl:{start:{line:342,column:4},end:{line:342,column:5}},loc:{start:{line:342,column:20},end:{line:344,column:5}},line:342},"37":{name:"(anonymous_37)",decl:{start:{line:348,column:4},end:{line:348,column:5}},loc:{start:{line:348,column:15},end:{line:352,column:5}},line:348},"38":{name:"(anonymous_38)",decl:{start:{line:356,column:4},end:{line:356,column:5}},loc:{start:{line:356,column:20},end:{line:358,column:5}},line:356},"39":{name:"(anonymous_39)",decl:{start:{line:364,column:4},end:{line:364,column:5}},loc:{start:{line:364,column:21},end:{line:366,column:5}},line:364},"40":{name:"(anonymous_40)",decl:{start:{line:370,column:4},end:{line:370,column:5}},loc:{start:{line:370,column:16},end:{line:374,column:5}},line:370},"41":{name:"(anonymous_41)",decl:{start:{line:379,column:4},end:{line:379,column:5}},loc:{start:{line:379,column:20},end:{line:385,column:5}},line:379},"42":{name:"(anonymous_42)",decl:{start:{line:388,column:4},end:{line:388,column:5}},loc:{start:{line:388,column:22},end:{line:393,column:5}},line:388},"43":{name:"(anonymous_43)",decl:{start:{line:397,column:4},end:{line:397,column:5}},loc:{start:{line:397,column:24},end:{line:399,column:5}},line:397},"44":{name:"(anonymous_44)",decl:{start:{line:398,column:35},end:{line:398,column:36}},loc:{start:{line:398,column:44},end:{line:398,column:69}},line:398},"45":{name:"(anonymous_45)",decl:{start:{line:405,column:4},end:{line:405,column:5}},loc:{start:{line:405,column:31},end:{line:417,column:5}},line:405},"46":{name:"(anonymous_46)",decl:{start:{line:411,column:27},end:{line:411,column:28}},loc:{start:{line:411,column:36},end:{line:415,column:9}},line:411},"47":{name:"(anonymous_47)",decl:{start:{line:423,column:4},end:{line:423,column:5}},loc:{start:{line:423,column:30},end:{line:428,column:5}},line:423},"48":{name:"(anonymous_48)",decl:{start:{line:434,column:4},end:{line:434,column:5}},loc:{start:{line:434,column:27},end:{line:440,column:5}},line:434},"49":{name:"(anonymous_49)",decl:{start:{line:445,column:4},end:{line:445,column:5}},loc:{start:{line:445,column:21},end:{line:447,column:5}},line:445},"50":{name:"(anonymous_50)",decl:{start:{line:454,column:28},end:{line:454,column:29}},loc:{start:{line:454,column:40},end:{line:454,column:154}},line:454},"51":{name:"(anonymous_51)",decl:{start:{line:490,column:4},end:{line:490,column:5}},loc:{start:{line:490,column:23},end:{line:496,column:5}},line:490}},branchMap:{"0":{loc:{start:{line:57,column:12},end:{line:59,column:13}},type:"if",locations:[{start:{line:57,column:12},end:{line:59,column:13}},{start:{line:57,column:12},end:{line:59,column:13}}],line:57},"1":{loc:{start:{line:193,column:8},end:{line:198,column:9}},type:"if",locations:[{start:{line:193,column:8},end:{line:198,column:9}},{start:{line:193,column:8},end:{line:198,column:9}}],line:193},"2":{loc:{start:{line:212,column:8},end:{line:217,column:9}},type:"if",locations:[{start:{line:212,column:8},end:{line:217,column:9}},{start:{line:212,column:8},end:{line:217,column:9}}],line:212},"3":{loc:{start:{line:231,column:44},end:{line:231,column:93}},type:"binary-expr",locations:[{start:{line:231,column:44},end:{line:231,column:66}},{start:{line:231,column:70},end:{line:231,column:93}}],line:231},"4":{loc:{start:{line:245,column:8},end:{line:250,column:9}},type:"if",locations:[{start:{line:245,column:8},end:{line:250,column:9}},{start:{line:245,column:8},end:{line:250,column:9}}],line:245},"5":{loc:{start:{line:263,column:8},end:{line:265,column:9}},type:"if",locations:[{start:{line:263,column:8},end:{line:265,column:9}},{start:{line:263,column:8},end:{line:265,column:9}}],line:263},"6":{loc:{start:{line:271,column:8},end:{line:273,column:9}},type:"if",locations:[{start:{line:271,column:8},end:{line:273,column:9}},{start:{line:271,column:8},end:{line:273,column:9}}],line:271},"7":{loc:{start:{line:285,column:8},end:{line:287,column:9}},type:"if",locations:[{start:{line:285,column:8},end:{line:287,column:9}},{start:{line:285,column:8},end:{line:287,column:9}}],line:285},"8":{loc:{start:{line:297,column:8},end:{line:335,column:9}},type:"if",locations:[{start:{line:297,column:8},end:{line:335,column:9}},{start:{line:297,column:8},end:{line:335,column:9}}],line:297},"9":{loc:{start:{line:297,column:12},end:{line:297,column:79}},type:"binary-expr",locations:[{start:{line:297,column:12},end:{line:297,column:36}},{start:{line:297,column:41},end:{line:297,column:65}},{start:{line:297,column:69},end:{line:297,column:78}}],line:297},"10":{loc:{start:{line:298,column:12},end:{line:311,column:13}},type:"if",locations:[{start:{line:298,column:12},end:{line:311,column:13}},{start:{line:298,column:12},end:{line:311,column:13}}],line:298},"11":{loc:{start:{line:298,column:16},end:{line:300,column:47}},type:"binary-expr",locations:[{start:{line:298,column:16},end:{line:298,column:49}},{start:{line:299,column:16},end:{line:299,column:48}},{start:{line:300,column:16},end:{line:300,column:47}}],line:298},"12":{loc:{start:{line:305,column:16},end:{line:310,column:17}},type:"if",locations:[{start:{line:305,column:16},end:{line:310,column:17}},{start:{line:305,column:16},end:{line:310,column:17}}],line:305},"13":{loc:{start:{line:308,column:21},end:{line:310,column:17}},type:"if",locations:[{start:{line:308,column:21},end:{line:310,column:17}},{start:{line:308,column:21},end:{line:310,column:17}}],line:308},"14":{loc:{start:{line:313,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:313,column:13},end:{line:335,column:9}},{start:{line:313,column:13},end:{line:335,column:9}}],line:313},"15":{loc:{start:{line:314,column:12},end:{line:316,column:13}},type:"if",locations:[{start:{line:314,column:12},end:{line:316,column:13}},{start:{line:314,column:12},end:{line:316,column:13}}],line:314},"16":{loc:{start:{line:319,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:319,column:13},end:{line:335,column:9}},{start:{line:319,column:13},end:{line:335,column:9}}],line:319},"17":{loc:{start:{line:331,column:12},end:{line:334,column:13}},type:"if",locations:[{start:{line:331,column:12},end:{line:334,column:13}},{start:{line:331,column:12},end:{line:334,column:13}}],line:331},"18":{loc:{start:{line:349,column:8},end:{line:351,column:9}},type:"if",locations:[{start:{line:349,column:8},end:{line:351,column:9}},{start:{line:349,column:8},end:{line:351,column:9}}],line:349},"19":{loc:{start:{line:371,column:8},end:{line:373,column:9}},type:"if",locations:[{start:{line:371,column:8},end:{line:373,column:9}},{start:{line:371,column:8},end:{line:373,column:9}}],line:371},"20":{loc:{start:{line:381,column:8},end:{line:383,column:9}},type:"if",locations:[{start:{line:381,column:8},end:{line:383,column:9}},{start:{line:381,column:8},end:{line:383,column:9}}],line:381},"21":{loc:{start:{line:390,column:8},end:{line:392,column:9}},type:"if",locations:[{start:{line:390,column:8},end:{line:392,column:9}},{start:{line:390,column:8},end:{line:392,column:9}}],line:390},"22":{loc:{start:{line:406,column:8},end:{line:408,column:9}},type:"if",locations:[{start:{line:406,column:8},end:{line:408,column:9}},{start:{line:406,column:8},end:{line:408,column:9}}],line:406},"23":{loc:{start:{line:412,column:12},end:{line:414,column:13}},type:"if",locations:[{start:{line:412,column:12},end:{line:414,column:13}},{start:{line:412,column:12},end:{line:414,column:13}}],line:412},"24":{loc:{start:{line:424,column:8},end:{line:426,column:9}},type:"if",locations:[{start:{line:424,column:8},end:{line:426,column:9}},{start:{line:424,column:8},end:{line:426,column:9}}],line:424},"25":{loc:{start:{line:436,column:8},end:{line:438,column:9}},type:"if",locations:[{start:{line:436,column:8},end:{line:438,column:9}},{start:{line:436,column:8},end:{line:438,column:9}}],line:436},"26":{loc:{start:{line:436,column:12},end:{line:436,column:62}},type:"binary-expr",locations:[{start:{line:436,column:12},end:{line:436,column:28}},{start:{line:436,column:32},end:{line:436,column:62}}],line:436}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacUploadEventCompleteState } from '../interfaces/ISacUploadEventCompleteState';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport { SACVALIDATIONKEY_SERVICE, SacDefaultValidationKeyService } from '../services';\r\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport {\r\n IdService,\r\n UPLOADX_AJAX,\r\n UPLOADX_FACTORY_OPTIONS,\r\n UPLOADX_OPTIONS,\r\n UploadState,\r\n UploadxOptions,\r\n UploadxService,\r\n} from 'ngx-uploadx';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n// #region Exported Classes\r\n\r\n/**\r\n * Base Klasse f\xFCr Uploader Control\r\n */\r\n@Directive()\r\nexport abstract class SacUploadBase<VALUE> extends SacBaseModelControl<VALUE> implements OnInit, OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n private _allowedtypes: string = '*';\r\n\r\n /**\r\n * Files automatisch hochladen\r\n */\r\n private _autoupload: boolean = false;\r\n\r\n /**\r\n * Pausieren von Uploads erlauben\r\n */\r\n private _enablepause: boolean = true;\r\n\r\n /**\r\n * API Endpoint\r\n */\r\n private _endpoint: string = null;\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n private _token: string | null = null;\r\n\r\n /**\r\n * Upload Settings\r\n */\r\n private options: UploadxOptions = {};\r\n\r\n /**\r\n * File Input Control\r\n */\r\n @ViewChild('files', { static: true })\r\n private uploadInput: ElementRef;\r\n\r\n /**\r\n * Upload Service\r\n */\r\n protected uploadService: UploadxService;\r\n\r\n /**\r\n * Handling von neuen Files im Input Control\r\n */\r\n public fileListener = () => {\r\n if (this.uploadInput.nativeElement.files) {\r\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\r\n }\r\n };\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n\r\n /**\r\n * Listener f\xFCr Files\r\n */\r\n public listenerFn: () => void;\r\n\r\n /**\r\n * Service f\xFCr Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n\r\n /**\r\n * Max. Dateigr\xF6sse f\xFCr Files die hochgeladen werden k\xF6nnen. 0 deaktiviert den Filter\r\n */\r\n @Input() public maxfilesize: number = 0;\r\n\r\n /**\r\n * Event when an error is triggered in the component.\r\n */\r\n @Output() public onfileerror = new EventEmitter<string>();\r\n\r\n /**\r\n * Event when a file has been uploaded. The event is triggered for multiple uploads per file.\r\n */\r\n @Output()\r\n public onuploadcomplete = new EventEmitter<ISacUploadEventCompleteState>();\r\n\r\n /**\r\n * Array von Uploads\r\n */\r\n public uploads: SacUploadFile[];\r\n\r\n /**\r\n * Resource Key f\xFCr Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\r\n\r\n /**\r\n * Resource Key f\xFCr Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string = this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer angular rendering engine\r\n * @param ngZone ngzone for handling external scripts\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.uploads = [];\r\n\r\n this.options.allowedTypes = '*';\r\n this.options.concurrency = 1;\r\n this.options.token = 'sometoken';\r\n this.options.autoUpload = this._autoupload;\r\n this.options.withCredentials = true;\r\n this.options.chunkSize = 1024 * 16 * 8;\r\n this.options.headers = (f: File) => ({\r\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\r\n });\r\n\r\n // Init new Service Instance\r\n this.uploadService = new UploadxService();\r\n this.uploadService.init(this.options);\r\n\r\n // Subscripe Event for State changes\r\n this.uploadService.events.subscribe((ufile: UploadState) => this.onUpload(ufile));\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Icon for browse button\r\n */\r\n public get IconBrowse(): string {\r\n return this.iconService.UploadComponentBrowseIcon;\r\n }\r\n\r\n /**\r\n * icon for continous buttons\r\n */\r\n public get IconContinue(): string {\r\n return this.iconService.UploadComponentContinueIcon;\r\n }\r\n\r\n /**\r\n * icon for delete buttons\r\n */\r\n public get IconDelete(): string {\r\n return this.iconService.UploadComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * icon for pause buttons\r\n */\r\n public get IconPause(): string {\r\n return this.iconService.UploadComponentPauseIcon;\r\n }\r\n\r\n /**\r\n * icon for upload button\r\n */\r\n public get IconUpload(): string {\r\n return this.iconService.UploadComponentUploadIcon;\r\n }\r\n\r\n public get allowedtypes(): string {\r\n return this._allowedtypes;\r\n }\r\n\r\n /**\r\n * Erlaubte Dateitypen f\xFCr den Upload. Format: \".xxx,.yyy,.zzz\"\r\n */\r\n @Input()\r\n public set allowedtypes(types: string) {\r\n this._allowedtypes = types;\r\n this.setAllowedTypes(types);\r\n }\r\n\r\n public get autoupload(): boolean {\r\n return this._autoupload;\r\n }\r\n\r\n /**\r\n * Files nach der Auswahl automatisch hochladen\r\n */\r\n @Input()\r\n public set autoupload(v: boolean) {\r\n this._autoupload = v;\r\n this.options.autoUpload = v;\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n public get enablepause(): boolean {\r\n return this._enablepause;\r\n }\r\n\r\n /**\r\n * Uploads k\xF6nnen unterbrochen werden\r\n */\r\n @Input()\r\n public set enablepause(v: boolean) {\r\n this._enablepause = v;\r\n }\r\n\r\n public get endpoint(): string {\r\n return this._endpoint;\r\n }\r\n\r\n /**\r\n * Definiert den Registration Endpoint f\xFCr Uploads.\r\n */\r\n @Input()\r\n public set endpoint(v: string) {\r\n this._endpoint = v;\r\n this.setEndpoint(v);\r\n }\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n public get token(): string | null {\r\n return this._token;\r\n }\r\n\r\n /**\r\n * Token for Bearer Authentication\r\n */\r\n @Input()\r\n public set token(v: string | null) {\r\n this._token = v;\r\n this.setToken(v);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode kann f\xFCr Controls verwendet werden, zus\xE4tzliche Validierungen bei hinzuf\xFCgen der Files zu machen\r\n *\r\n * @param file File das hinzugef\xFCgt wurde.\r\n * @returns Valdierung ist erfolgreich\r\n */\r\n public abstract CustomAddValidation(file: UploadState): boolean;\r\n\r\n /**\r\n * Name der Datei die Hochgeladen wird\r\n * @returns Observable des Dateinamens.\r\n */\r\n public Filename(): Observable<string> {\r\n if (this.uploads.length > 0) {\r\n return of(this.uploads[0].name);\r\n } else {\r\n return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt an ob Queue Elemente beinhaltet\r\n * @returns Elemente in der Queue\r\n */\r\n public HasQueueItem(): boolean {\r\n return this.uploads.length > 0;\r\n }\r\n\r\n /**\r\n * Gibt an ob ein Upload abgeschlossen ist\r\n * @returns Upload erfolgreich\r\n */\r\n public HasSuccessUpload(): boolean {\r\n if (this.uploads.length > 0) {\r\n return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload pausiert\r\n * @returns Pausierter Upload ist vorhanden\r\n */\r\n public IsPaused(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\r\n * @returns Elemente f\xFCr Upload vorhanden\r\n */\r\n public IsStateToUpload(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob ein Upload eines Files am laufen ist\r\n * @returns Upload ist am laufen\r\n */\r\n public IsUploading(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\r\n }\r\n\r\n /**\r\n * Gibt den Uploadfortschritt zur\xFCck\r\n * @returns Upload Fortschritt. Wert von 0-100\r\n */\r\n public Progress(): number {\r\n if (this.uploads.length > 0) {\r\n return this.uploads[0].progress;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Methode welche die Upload ID's in das Model setzt oder l\xF6scht\r\n *\r\n * @param file Type von File ID's\r\n */\r\n public abstract SetUploadValue(file: UploadState): void;\r\n\r\n /**\r\n * Cancel single upload\r\n * @param uploadId ID of File to cancel\r\n */\r\n public cancel(uploadId) {\r\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\r\n }\r\n\r\n /**\r\n * Cancel all Uploaded files\r\n */\r\n public cancelAll() {\r\n if (this.HasQueueItem() === true) {\r\n this.uploadService.control({ action: 'cancel' });\r\n }\r\n }\r\n\r\n /**\r\n * Destroy des Controls\r\n */\r\n public ngOnDestroy() {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n }\r\n }\r\n\r\n /**\r\n * Initialisiert das Control\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n // Init Event Listener for Input File Control and Handling Files\r\n this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);\r\n\r\n this.setAllowedTypes(this._allowedtypes);\r\n this.setEndpoint(this._endpoint);\r\n this.setToken(this._token);\r\n\r\n if (this._endpoint === null) {\r\n throw new Error('endpoint is not defined!');\r\n }\r\n\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Upload Event\r\n *\r\n * @param uploadsOutStream Upload Item\r\n */\r\n public onUpload(ufile: UploadState) {\r\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\r\n\r\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\r\n if (\r\n this.isExtensionValid(ufile.name) &&\r\n this.isFileSizeValid(ufile.size) &&\r\n this.CustomAddValidation(ufile)\r\n ) {\r\n this.uploads.push(new SacUploadFile(ufile));\r\n } else {\r\n this.cancel(ufile.uploadId);\r\n\r\n if (!this.isExtensionValid(ufile.name)) {\r\n this.onfileerror.emit('INVALID_EXTENSION');\r\n } else if (!this.isFileSizeValid(ufile.size)) {\r\n this.onfileerror.emit('INVALID_FILESIZE');\r\n }\r\n }\r\n } else if (ufile.status === 'cancelled') {\r\n if (index >= 0) {\r\n this.uploads.splice(index, 1);\r\n }\r\n\r\n this.SetUploadValue(null);\r\n } else if (ufile.status === 'complete') {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n this.SetUploadValue(ufile);\r\n\r\n const uploadState: ISacUploadEventCompleteState = {\r\n name: ufile.name,\r\n size: ufile.size,\r\n uploadid: this.uploads[index].uploadId,\r\n };\r\n\r\n this.onuploadcomplete.emit(uploadState);\r\n } else {\r\n if (index >= 0) {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n }\r\n }\r\n\r\n this.UpdateFileCount();\r\n }\r\n\r\n /**\r\n * Cancel Single File\r\n * @param uploadId ID of File to Cancel\r\n */\r\n public pause(uploadId) {\r\n this.uploadService.control({ action: 'pause', uploadId });\r\n }\r\n\r\n /**\r\n * Pause all Uploads\r\n */\r\n public pauseAll() {\r\n if (this.IsUploading() === true) {\r\n this.uploadService.control({ action: 'pause' });\r\n }\r\n }\r\n\r\n /**\r\n * Sets the bearer token in the upload service\r\n */\r\n public setToken(value: string) {\r\n this.options.token = value;\r\n }\r\n\r\n /**\r\n * Upload Single File\r\n *\r\n * @param uploadId ID of File to Upload\r\n */\r\n public upload(uploadId) {\r\n this.uploadService.control({ action: 'upload', uploadId });\r\n }\r\n\r\n /**\r\n * Upload all queued Files\r\n */\r\n public uploadAll() {\r\n if (this.IsStateToUpload() === true) {\r\n this.uploadService.control({ action: 'upload' });\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Upload Control\r\n * @param c Control das validiert werden soll\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateFileCount(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IUploadControl).uploadedfilecount = this.UploadedFileCount();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of uploaded files\r\n */\r\n private UploadedFileCount(): number {\r\n return this.uploads.filter((itm) => itm.status === 'complete').length;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob die Dateierweiterung g\xFCltig ist\r\n *\r\n * @param filename Dateiname\r\n */\r\n private isExtensionValid(filename: string): boolean {\r\n if (this._allowedtypes === '*') {\r\n return true;\r\n }\r\n\r\n let isValid: boolean = false;\r\n const extensions: string[] = this._allowedtypes.split(',');\r\n\r\n extensions.forEach((itm) => {\r\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Pr\xFCft ob das File nicht zu gross ist.\r\n *\r\n * @param filesize Max File Size in Bytes\r\n */\r\n private isFileSizeValid(filesize: number): boolean {\r\n if (this.maxfilesize === 0) {\r\n return true;\r\n }\r\n\r\n return this.maxfilesize >= filesize;\r\n }\r\n\r\n /**\r\n * Setzt die erlaubten Datentypen f\xFCr den Upload\r\n *\r\n * @param types Erlaubte File Extensions\r\n */\r\n private setAllowedTypes(types: string) {\r\n // Pr\xFCfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\r\n if (this.uploadInput && this.uploadInput.nativeElement) {\r\n this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);\r\n }\r\n\r\n this.options.allowedTypes = types;\r\n }\r\n\r\n /**\r\n * Setzt den Upload Endpoit\r\n * @param url Register URI\r\n */\r\n private setEndpoint(url: string) {\r\n this.options.endpoint = url;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * Klasse f\xFCr den Upload einer Datei in der Upload Component\r\n */\r\nexport class SacUploadFile {\r\n // #region Properties\r\n\r\n /**\r\n * Document ID\r\n */\r\n public documentid: string;\r\n\r\n /**\r\n * Dateiname\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Upload Fortschritt\r\n */\r\n public progress: number;\r\n\r\n /**\r\n * Upload Status\r\n */\r\n public status: string;\r\n\r\n /**\r\n * Upload ID\r\n */\r\n public uploadId: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ufile Upload Status\r\n */\r\n constructor(ufile: UploadState) {\r\n this.uploadId = ufile.uploadId;\r\n this.name = ufile.name;\r\n this.progress = ufile.progress;\r\n this.status = ufile.status;\r\n this.documentid = null;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n// #endregion Exported Classes\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"5065c91ec408901763d86fe190b0576c2820eeec"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
|
|
2
|
-
|
|
1
|
+
function cov_2j8zwflweb(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/baseuploadcontrol.mjs";var hash="05675024265ad803b3cbc6949e657da6cd2d9180";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/baseuploadcontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:33}},"2":{start:{line:27,column:8},end:{line:27,column:29}},"3":{start:{line:32,column:8},end:{line:32,column:33}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:33}},"6":{start:{line:44,column:8},end:{line:44,column:30}},"7":{start:{line:48,column:8},end:{line:48,column:27}},"8":{start:{line:52,column:8},end:{line:52,column:26}},"9":{start:{line:56,column:8},end:{line:60,column:10}},"10":{start:{line:57,column:12},end:{line:59,column:13}},"11":{start:{line:58,column:16},end:{line:58,column:85}},"12":{start:{line:64,column:8},end:{line:64,column:32}},"13":{start:{line:68,column:8},end:{line:68,column:29}},"14":{start:{line:72,column:8},end:{line:72,column:46}},"15":{start:{line:76,column:8},end:{line:76,column:51}},"16":{start:{line:80,column:8},end:{line:80,column:91}},"17":{start:{line:84,column:8},end:{line:84,column:105}},"18":{start:{line:85,column:8},end:{line:85,column:113}},"19":{start:{line:86,column:8},end:{line:86,column:134}},"20":{start:{line:87,column:8},end:{line:87,column:26}},"21":{start:{line:88,column:8},end:{line:88,column:40}},"22":{start:{line:89,column:8},end:{line:89,column:37}},"23":{start:{line:90,column:8},end:{line:90,column:41}},"24":{start:{line:91,column:8},end:{line:91,column:51}},"25":{start:{line:92,column:8},end:{line:92,column:44}},"26":{start:{line:93,column:8},end:{line:93,column:47}},"27":{start:{line:94,column:8},end:{line:96,column:11}},"28":{start:{line:94,column:39},end:{line:96,column:9}},"29":{start:{line:98,column:8},end:{line:98,column:50}},"30":{start:{line:99,column:8},end:{line:99,column:46}},"31":{start:{line:101,column:8},end:{line:101,column:77}},"32":{start:{line:101,column:55},end:{line:101,column:75}},"33":{start:{line:109,column:8},end:{line:109,column:58}},"34":{start:{line:115,column:8},end:{line:115,column:60}},"35":{start:{line:121,column:8},end:{line:121,column:58}},"36":{start:{line:127,column:8},end:{line:127,column:57}},"37":{start:{line:133,column:8},end:{line:133,column:58}},"38":{start:{line:136,column:8},end:{line:136,column:34}},"39":{start:{line:142,column:8},end:{line:142,column:35}},"40":{start:{line:143,column:8},end:{line:143,column:36}},"41":{start:{line:146,column:8},end:{line:146,column:32}},"42":{start:{line:152,column:8},end:{line:152,column:29}},"43":{start:{line:153,column:8},end:{line:153,column:36}},"44":{start:{line:154,column:8},end:{line:154,column:49}},"45":{start:{line:157,column:8},end:{line:157,column:33}},"46":{start:{line:163,column:8},end:{line:163,column:30}},"47":{start:{line:166,column:8},end:{line:166,column:30}},"48":{start:{line:172,column:8},end:{line:172,column:27}},"49":{start:{line:173,column:8},end:{line:173,column:28}},"50":{start:{line:179,column:8},end:{line:179,column:27}},"51":{start:{line:185,column:8},end:{line:185,column:24}},"52":{start:{line:186,column:8},end:{line:186,column:25}},"53":{start:{line:193,column:8},end:{line:198,column:9}},"54":{start:{line:194,column:12},end:{line:194,column:44}},"55":{start:{line:197,column:12},end:{line:197,column:102}},"56":{start:{line:205,column:8},end:{line:205,column:39}},"57":{start:{line:212,column:8},end:{line:217,column:9}},"58":{start:{line:213,column:12},end:{line:213,column:88}},"59":{start:{line:213,column:48},end:{line:213,column:73}},"60":{start:{line:216,column:12},end:{line:216,column:25}},"61":{start:{line:224,column:8},end:{line:224,column:80}},"62":{start:{line:224,column:44},end:{line:224,column:67}},"63":{start:{line:231,column:8},end:{line:231,column:106}},"64":{start:{line:231,column:44},end:{line:231,column:93}},"65":{start:{line:238,column:8},end:{line:238,column:83}},"66":{start:{line:238,column:44},end:{line:238,column:70}},"67":{start:{line:245,column:8},end:{line:250,column:9}},"68":{start:{line:246,column:12},end:{line:246,column:44}},"69":{start:{line:249,column:12},end:{line:249,column:21}},"70":{start:{line:257,column:8},end:{line:257,column:77}},"71":{start:{line:263,column:8},end:{line:265,column:9}},"72":{start:{line:264,column:12},end:{line:264,column:61}},"73":{start:{line:271,column:8},end:{line:273,column:9}},"74":{start:{line:272,column:12},end:{line:272,column:30}},"75":{start:{line:279,column:8},end:{line:279,column:25}},"76":{start:{line:281,column:8},end:{line:281,column:108}},"77":{start:{line:282,column:8},end:{line:282,column:49}},"78":{start:{line:283,column:8},end:{line:283,column:41}},"79":{start:{line:284,column:8},end:{line:284,column:35}},"80":{start:{line:285,column:8},end:{line:287,column:9}},"81":{start:{line:286,column:12},end:{line:286,column:56}},"82":{start:{line:288,column:8},end:{line:288,column:49}},"83":{start:{line:296,column:22},end:{line:296,column:82}},"84":{start:{line:296,column:52},end:{line:296,column:81}},"85":{start:{line:297,column:8},end:{line:335,column:9}},"86":{start:{line:298,column:12},end:{line:311,column:13}},"87":{start:{line:301,column:16},end:{line:301,column:60}},"88":{start:{line:304,column:16},end:{line:304,column:44}},"89":{start:{line:305,column:16},end:{line:310,column:17}},"90":{start:{line:306,column:20},end:{line:306,column:63}},"91":{start:{line:308,column:21},end:{line:310,column:17}},"92":{start:{line:309,column:20},end:{line:309,column:62}},"93":{start:{line:313,column:13},end:{line:335,column:9}},"94":{start:{line:314,column:12},end:{line:316,column:13}},"95":{start:{line:315,column:16},end:{line:315,column:46}},"96":{start:{line:317,column:12},end:{line:317,column:38}},"97":{start:{line:319,column:13},end:{line:335,column:9}},"98":{start:{line:320,column:12},end:{line:320,column:58}},"99":{start:{line:321,column:12},end:{line:321,column:54}},"100":{start:{line:322,column:12},end:{line:322,column:39}},"101":{start:{line:323,column:32},end:{line:327,column:13}},"102":{start:{line:328,column:12},end:{line:328,column:52}},"103":{start:{line:331,column:12},end:{line:334,column:13}},"104":{start:{line:332,column:16},end:{line:332,column:62}},"105":{start:{line:333,column:16},end:{line:333,column:58}},"106":{start:{line:336,column:8},end:{line:336,column:31}},"107":{start:{line:343,column:8},end:{line:343,column:66}},"108":{start:{line:349,column:8},end:{line:351,column:9}},"109":{start:{line:350,column:12},end:{line:350,column:60}},"110":{start:{line:357,column:8},end:{line:357,column:35}},"111":{start:{line:365,column:8},end:{line:365,column:67}},"112":{start:{line:371,column:8},end:{line:373,column:9}},"113":{start:{line:372,column:12},end:{line:372,column:61}},"114":{start:{line:380,column:20},end:{line:380,column:24}},"115":{start:{line:381,column:8},end:{line:383,column:9}},"116":{start:{line:382,column:12},end:{line:382,column:114}},"117":{start:{line:384,column:8},end:{line:384,column:21}},"118":{start:{line:390,column:8},end:{line:392,column:9}},"119":{start:{line:391,column:12},end:{line:391,column:72}},"120":{start:{line:398,column:8},end:{line:398,column:78}},"121":{start:{line:398,column:44},end:{line:398,column:69}},"122":{start:{line:406,column:8},end:{line:408,column:9}},"123":{start:{line:407,column:12},end:{line:407,column:24}},"124":{start:{line:409,column:22},end:{line:409,column:27}},"125":{start:{line:410,column:27},end:{line:410,column:56}},"126":{start:{line:411,column:8},end:{line:415,column:11}},"127":{start:{line:412,column:12},end:{line:414,column:13}},"128":{start:{line:413,column:16},end:{line:413,column:31}},"129":{start:{line:416,column:8},end:{line:416,column:23}},"130":{start:{line:424,column:8},end:{line:426,column:9}},"131":{start:{line:425,column:12},end:{line:425,column:24}},"132":{start:{line:427,column:8},end:{line:427,column:44}},"133":{start:{line:436,column:8},end:{line:438,column:9}},"134":{start:{line:437,column:12},end:{line:437,column:88}},"135":{start:{line:439,column:8},end:{line:439,column:42}},"136":{start:{line:446,column:8},end:{line:446,column:36}},"137":{start:{line:448,column:13},end:{line:448,column:280}},"138":{start:{line:449,column:13},end:{line:449,column:662}},"139":{start:{line:452,column:0},end:{line:479,column:20}},"140":{start:{line:454,column:42},end:{line:454,column:152}},"141":{start:{line:491,column:8},end:{line:491,column:39}},"142":{start:{line:492,column:8},end:{line:492,column:31}},"143":{start:{line:493,column:8},end:{line:493,column:39}},"144":{start:{line:494,column:8},end:{line:494,column:35}},"145":{start:{line:495,column:8},end:{line:495,column:31}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:56},end:{line:102,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:56,column:28},end:{line:56,column:29}},loc:{start:{line:56,column:34},end:{line:60,column:9}},line:56},"2":{name:"(anonymous_2)",decl:{start:{line:94,column:31},end:{line:94,column:32}},loc:{start:{line:94,column:39},end:{line:96,column:9}},line:94},"3":{name:"(anonymous_3)",decl:{start:{line:101,column:44},end:{line:101,column:45}},loc:{start:{line:101,column:55},end:{line:101,column:75}},line:101},"4":{name:"(anonymous_4)",decl:{start:{line:108,column:4},end:{line:108,column:5}},loc:{start:{line:108,column:21},end:{line:110,column:5}},line:108},"5":{name:"(anonymous_5)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:23},end:{line:116,column:5}},line:114},"6":{name:"(anonymous_6)",decl:{start:{line:120,column:4},end:{line:120,column:5}},loc:{start:{line:120,column:21},end:{line:122,column:5}},line:120},"7":{name:"(anonymous_7)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:20},end:{line:128,column:5}},line:126},"8":{name:"(anonymous_8)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:21},end:{line:134,column:5}},line:132},"9":{name:"(anonymous_9)",decl:{start:{line:135,column:4},end:{line:135,column:5}},loc:{start:{line:135,column:23},end:{line:137,column:5}},line:135},"10":{name:"(anonymous_10)",decl:{start:{line:141,column:4},end:{line:141,column:5}},loc:{start:{line:141,column:28},end:{line:144,column:5}},line:141},"11":{name:"(anonymous_11)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:21},end:{line:147,column:5}},line:145},"12":{name:"(anonymous_12)",decl:{start:{line:151,column:4},end:{line:151,column:5}},loc:{start:{line:151,column:22},end:{line:155,column:5}},line:151},"13":{name:"(anonymous_13)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:22},end:{line:158,column:5}},line:156},"14":{name:"(anonymous_14)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:23},end:{line:164,column:5}},line:162},"15":{name:"(anonymous_15)",decl:{start:{line:165,column:4},end:{line:165,column:5}},loc:{start:{line:165,column:19},end:{line:167,column:5}},line:165},"16":{name:"(anonymous_16)",decl:{start:{line:171,column:4},end:{line:171,column:5}},loc:{start:{line:171,column:20},end:{line:174,column:5}},line:171},"17":{name:"(anonymous_17)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:16},end:{line:180,column:5}},line:178},"18":{name:"(anonymous_18)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:17},end:{line:187,column:5}},line:184},"19":{name:"(anonymous_19)",decl:{start:{line:192,column:4},end:{line:192,column:5}},loc:{start:{line:192,column:15},end:{line:199,column:5}},line:192},"20":{name:"(anonymous_20)",decl:{start:{line:204,column:4},end:{line:204,column:5}},loc:{start:{line:204,column:19},end:{line:206,column:5}},line:204},"21":{name:"(anonymous_21)",decl:{start:{line:211,column:4},end:{line:211,column:5}},loc:{start:{line:211,column:23},end:{line:218,column:5}},line:211},"22":{name:"(anonymous_22)",decl:{start:{line:213,column:39},end:{line:213,column:40}},loc:{start:{line:213,column:48},end:{line:213,column:73}},line:213},"23":{name:"(anonymous_23)",decl:{start:{line:223,column:4},end:{line:223,column:5}},loc:{start:{line:223,column:15},end:{line:225,column:5}},line:223},"24":{name:"(anonymous_24)",decl:{start:{line:224,column:35},end:{line:224,column:36}},loc:{start:{line:224,column:44},end:{line:224,column:67}},line:224},"25":{name:"(anonymous_25)",decl:{start:{line:230,column:4},end:{line:230,column:5}},loc:{start:{line:230,column:22},end:{line:232,column:5}},line:230},"26":{name:"(anonymous_26)",decl:{start:{line:231,column:35},end:{line:231,column:36}},loc:{start:{line:231,column:44},end:{line:231,column:93}},line:231},"27":{name:"(anonymous_27)",decl:{start:{line:237,column:4},end:{line:237,column:5}},loc:{start:{line:237,column:18},end:{line:239,column:5}},line:237},"28":{name:"(anonymous_28)",decl:{start:{line:238,column:35},end:{line:238,column:36}},loc:{start:{line:238,column:44},end:{line:238,column:70}},line:238},"29":{name:"(anonymous_29)",decl:{start:{line:244,column:4},end:{line:244,column:5}},loc:{start:{line:244,column:15},end:{line:251,column:5}},line:244},"30":{name:"(anonymous_30)",decl:{start:{line:256,column:4},end:{line:256,column:5}},loc:{start:{line:256,column:21},end:{line:258,column:5}},line:256},"31":{name:"(anonymous_31)",decl:{start:{line:262,column:4},end:{line:262,column:5}},loc:{start:{line:262,column:16},end:{line:266,column:5}},line:262},"32":{name:"(anonymous_32)",decl:{start:{line:270,column:4},end:{line:270,column:5}},loc:{start:{line:270,column:18},end:{line:274,column:5}},line:270},"33":{name:"(anonymous_33)",decl:{start:{line:278,column:4},end:{line:278,column:5}},loc:{start:{line:278,column:15},end:{line:289,column:5}},line:278},"34":{name:"(anonymous_34)",decl:{start:{line:295,column:4},end:{line:295,column:5}},loc:{start:{line:295,column:20},end:{line:337,column:5}},line:295},"35":{name:"(anonymous_35)",decl:{start:{line:296,column:45},end:{line:296,column:46}},loc:{start:{line:296,column:52},end:{line:296,column:81}},line:296},"36":{name:"(anonymous_36)",decl:{start:{line:342,column:4},end:{line:342,column:5}},loc:{start:{line:342,column:20},end:{line:344,column:5}},line:342},"37":{name:"(anonymous_37)",decl:{start:{line:348,column:4},end:{line:348,column:5}},loc:{start:{line:348,column:15},end:{line:352,column:5}},line:348},"38":{name:"(anonymous_38)",decl:{start:{line:356,column:4},end:{line:356,column:5}},loc:{start:{line:356,column:20},end:{line:358,column:5}},line:356},"39":{name:"(anonymous_39)",decl:{start:{line:364,column:4},end:{line:364,column:5}},loc:{start:{line:364,column:21},end:{line:366,column:5}},line:364},"40":{name:"(anonymous_40)",decl:{start:{line:370,column:4},end:{line:370,column:5}},loc:{start:{line:370,column:16},end:{line:374,column:5}},line:370},"41":{name:"(anonymous_41)",decl:{start:{line:379,column:4},end:{line:379,column:5}},loc:{start:{line:379,column:20},end:{line:385,column:5}},line:379},"42":{name:"(anonymous_42)",decl:{start:{line:388,column:4},end:{line:388,column:5}},loc:{start:{line:388,column:22},end:{line:393,column:5}},line:388},"43":{name:"(anonymous_43)",decl:{start:{line:397,column:4},end:{line:397,column:5}},loc:{start:{line:397,column:24},end:{line:399,column:5}},line:397},"44":{name:"(anonymous_44)",decl:{start:{line:398,column:35},end:{line:398,column:36}},loc:{start:{line:398,column:44},end:{line:398,column:69}},line:398},"45":{name:"(anonymous_45)",decl:{start:{line:405,column:4},end:{line:405,column:5}},loc:{start:{line:405,column:31},end:{line:417,column:5}},line:405},"46":{name:"(anonymous_46)",decl:{start:{line:411,column:27},end:{line:411,column:28}},loc:{start:{line:411,column:36},end:{line:415,column:9}},line:411},"47":{name:"(anonymous_47)",decl:{start:{line:423,column:4},end:{line:423,column:5}},loc:{start:{line:423,column:30},end:{line:428,column:5}},line:423},"48":{name:"(anonymous_48)",decl:{start:{line:434,column:4},end:{line:434,column:5}},loc:{start:{line:434,column:27},end:{line:440,column:5}},line:434},"49":{name:"(anonymous_49)",decl:{start:{line:445,column:4},end:{line:445,column:5}},loc:{start:{line:445,column:21},end:{line:447,column:5}},line:445},"50":{name:"(anonymous_50)",decl:{start:{line:454,column:28},end:{line:454,column:29}},loc:{start:{line:454,column:40},end:{line:454,column:154}},line:454},"51":{name:"(anonymous_51)",decl:{start:{line:490,column:4},end:{line:490,column:5}},loc:{start:{line:490,column:23},end:{line:496,column:5}},line:490}},branchMap:{"0":{loc:{start:{line:57,column:12},end:{line:59,column:13}},type:"if",locations:[{start:{line:57,column:12},end:{line:59,column:13}},{start:{line:57,column:12},end:{line:59,column:13}}],line:57},"1":{loc:{start:{line:193,column:8},end:{line:198,column:9}},type:"if",locations:[{start:{line:193,column:8},end:{line:198,column:9}},{start:{line:193,column:8},end:{line:198,column:9}}],line:193},"2":{loc:{start:{line:212,column:8},end:{line:217,column:9}},type:"if",locations:[{start:{line:212,column:8},end:{line:217,column:9}},{start:{line:212,column:8},end:{line:217,column:9}}],line:212},"3":{loc:{start:{line:231,column:44},end:{line:231,column:93}},type:"binary-expr",locations:[{start:{line:231,column:44},end:{line:231,column:66}},{start:{line:231,column:70},end:{line:231,column:93}}],line:231},"4":{loc:{start:{line:245,column:8},end:{line:250,column:9}},type:"if",locations:[{start:{line:245,column:8},end:{line:250,column:9}},{start:{line:245,column:8},end:{line:250,column:9}}],line:245},"5":{loc:{start:{line:263,column:8},end:{line:265,column:9}},type:"if",locations:[{start:{line:263,column:8},end:{line:265,column:9}},{start:{line:263,column:8},end:{line:265,column:9}}],line:263},"6":{loc:{start:{line:271,column:8},end:{line:273,column:9}},type:"if",locations:[{start:{line:271,column:8},end:{line:273,column:9}},{start:{line:271,column:8},end:{line:273,column:9}}],line:271},"7":{loc:{start:{line:285,column:8},end:{line:287,column:9}},type:"if",locations:[{start:{line:285,column:8},end:{line:287,column:9}},{start:{line:285,column:8},end:{line:287,column:9}}],line:285},"8":{loc:{start:{line:297,column:8},end:{line:335,column:9}},type:"if",locations:[{start:{line:297,column:8},end:{line:335,column:9}},{start:{line:297,column:8},end:{line:335,column:9}}],line:297},"9":{loc:{start:{line:297,column:12},end:{line:297,column:79}},type:"binary-expr",locations:[{start:{line:297,column:12},end:{line:297,column:36}},{start:{line:297,column:41},end:{line:297,column:65}},{start:{line:297,column:69},end:{line:297,column:78}}],line:297},"10":{loc:{start:{line:298,column:12},end:{line:311,column:13}},type:"if",locations:[{start:{line:298,column:12},end:{line:311,column:13}},{start:{line:298,column:12},end:{line:311,column:13}}],line:298},"11":{loc:{start:{line:298,column:16},end:{line:300,column:47}},type:"binary-expr",locations:[{start:{line:298,column:16},end:{line:298,column:49}},{start:{line:299,column:16},end:{line:299,column:48}},{start:{line:300,column:16},end:{line:300,column:47}}],line:298},"12":{loc:{start:{line:305,column:16},end:{line:310,column:17}},type:"if",locations:[{start:{line:305,column:16},end:{line:310,column:17}},{start:{line:305,column:16},end:{line:310,column:17}}],line:305},"13":{loc:{start:{line:308,column:21},end:{line:310,column:17}},type:"if",locations:[{start:{line:308,column:21},end:{line:310,column:17}},{start:{line:308,column:21},end:{line:310,column:17}}],line:308},"14":{loc:{start:{line:313,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:313,column:13},end:{line:335,column:9}},{start:{line:313,column:13},end:{line:335,column:9}}],line:313},"15":{loc:{start:{line:314,column:12},end:{line:316,column:13}},type:"if",locations:[{start:{line:314,column:12},end:{line:316,column:13}},{start:{line:314,column:12},end:{line:316,column:13}}],line:314},"16":{loc:{start:{line:319,column:13},end:{line:335,column:9}},type:"if",locations:[{start:{line:319,column:13},end:{line:335,column:9}},{start:{line:319,column:13},end:{line:335,column:9}}],line:319},"17":{loc:{start:{line:331,column:12},end:{line:334,column:13}},type:"if",locations:[{start:{line:331,column:12},end:{line:334,column:13}},{start:{line:331,column:12},end:{line:334,column:13}}],line:331},"18":{loc:{start:{line:349,column:8},end:{line:351,column:9}},type:"if",locations:[{start:{line:349,column:8},end:{line:351,column:9}},{start:{line:349,column:8},end:{line:351,column:9}}],line:349},"19":{loc:{start:{line:371,column:8},end:{line:373,column:9}},type:"if",locations:[{start:{line:371,column:8},end:{line:373,column:9}},{start:{line:371,column:8},end:{line:373,column:9}}],line:371},"20":{loc:{start:{line:381,column:8},end:{line:383,column:9}},type:"if",locations:[{start:{line:381,column:8},end:{line:383,column:9}},{start:{line:381,column:8},end:{line:383,column:9}}],line:381},"21":{loc:{start:{line:390,column:8},end:{line:392,column:9}},type:"if",locations:[{start:{line:390,column:8},end:{line:392,column:9}},{start:{line:390,column:8},end:{line:392,column:9}}],line:390},"22":{loc:{start:{line:406,column:8},end:{line:408,column:9}},type:"if",locations:[{start:{line:406,column:8},end:{line:408,column:9}},{start:{line:406,column:8},end:{line:408,column:9}}],line:406},"23":{loc:{start:{line:412,column:12},end:{line:414,column:13}},type:"if",locations:[{start:{line:412,column:12},end:{line:414,column:13}},{start:{line:412,column:12},end:{line:414,column:13}}],line:412},"24":{loc:{start:{line:424,column:8},end:{line:426,column:9}},type:"if",locations:[{start:{line:424,column:8},end:{line:426,column:9}},{start:{line:424,column:8},end:{line:426,column:9}}],line:424},"25":{loc:{start:{line:436,column:8},end:{line:438,column:9}},type:"if",locations:[{start:{line:436,column:8},end:{line:438,column:9}},{start:{line:436,column:8},end:{line:438,column:9}}],line:436},"26":{loc:{start:{line:436,column:12},end:{line:436,column:62}},type:"binary-expr",locations:[{start:{line:436,column:12},end:{line:436,column:28}},{start:{line:436,column:32},end:{line:436,column:62}}],line:436}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0],"10":[0,0],"11":[0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0]},inputSourceMap:{version:3,file:"baseuploadcontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/baseuploadcontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\nimport { ISacUploadEventCompleteState } from '../interfaces/ISacUploadEventCompleteState';\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\nimport { SACVALIDATIONKEY_SERVICE, SacDefaultValidationKeyService } from '../services';\nimport { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';\nimport { Validation } from '../validation';\nimport { SacBaseModelControl } from './basemodelcontrol';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport {\n IdService,\n UPLOADX_AJAX,\n UPLOADX_FACTORY_OPTIONS,\n UPLOADX_OPTIONS,\n UploadState,\n UploadxOptions,\n UploadxService,\n} from 'ngx-uploadx';\nimport { Observable, of } from 'rxjs';\n\n// #region Exported Classes\n\n/**\n * Base Klasse f\xFCr Uploader Control\n */\n@Directive()\nexport abstract class SacUploadBase<VALUE> extends SacBaseModelControl<VALUE> implements OnInit, OnDestroy {\n // #region Properties\n\n /**\n * Erlaubte Dateitypen\n */\n private _allowedtypes: string = '*';\n\n /**\n * Files automatisch hochladen\n */\n private _autoupload: boolean = false;\n\n /**\n * Pausieren von Uploads erlauben\n */\n private _enablepause: boolean = true;\n\n /**\n * API Endpoint\n */\n private _endpoint: string = null;\n\n /**\n * Token for Bearer Authentication\n */\n private _token: string | null = null;\n\n /**\n * Upload Settings\n */\n private options: UploadxOptions = {};\n\n /**\n * File Input Control\n */\n @ViewChild('files', { static: true })\n private uploadInput: ElementRef;\n\n /**\n * Upload Service\n */\n protected uploadService: UploadxService;\n\n /**\n * Handling von neuen Files im Input Control\n */\n public fileListener = () => {\n if (this.uploadInput.nativeElement.files) {\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\n }\n };\n\n /**\n * Definiert das Control als Required\n */\n @Input() public isrequired: boolean = false;\n\n /**\n * Listener f\xFCr Files\n */\n public listenerFn: () => void;\n\n /**\n * Service f\xFCr Error Localisation\n */\n public lngResourceService: ISacLocalisationService;\n\n /**\n * Max. Dateigr\xF6sse f\xFCr Files die hochgeladen werden k\xF6nnen. 0 deaktiviert den Filter\n */\n @Input() public maxfilesize: number = 0;\n\n /**\n * Event when an error is triggered in the component.\n */\n @Output() public onfileerror = new EventEmitter<string>();\n\n /**\n * Event when a file has been uploaded. The event is triggered for multiple uploads per file.\n */\n @Output()\n public onuploadcomplete = new EventEmitter<ISacUploadEventCompleteState>();\n\n /**\n * Array von Uploads\n */\n public uploads: SacUploadFile[];\n\n /**\n * Resource Key f\xFCr Validation Message Required bei Control\n */\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\n\n /**\n * Resource Key f\xFCr Validation Message Required in Validation Summary\n */\n @Input()\n public validationmessagesummaryrequired: string = this.validationKeyService.ValidationErrorSummaryRequired;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\n * @param injector Injector for injecting services\n * @param renderer angular rendering engine\n * @param ngZone ngzone for handling external scripts\n */\n constructor(\n formlayout: SacFormLayoutCommon,\n injector: Injector,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n super(formlayout, injector);\n\n this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());\n\n this.lngResourceService = injector.get(\n SACLOCALISATION_SERVICE,\n new SacDefaultLocalisationService(this.validationKeyService)\n );\n\n this.uploads = [];\n\n this.options.allowedTypes = '*';\n this.options.concurrency = 1;\n this.options.token = 'sometoken';\n this.options.autoUpload = this._autoupload;\n this.options.withCredentials = true;\n this.options.chunkSize = 1024 * 16 * 8;\n this.options.headers = (f: File) => ({\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\n });\n\n // Init new Service Instance\n this.uploadService = new UploadxService();\n this.uploadService.init(this.options);\n\n // Subscripe Event for State changes\n this.uploadService.events.subscribe((ufile: UploadState) => this.onUpload(ufile));\n }\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Icon for browse button\n */\n public get IconBrowse(): string {\n return this.iconService.UploadComponentBrowseIcon;\n }\n\n /**\n * icon for continous buttons\n */\n public get IconContinue(): string {\n return this.iconService.UploadComponentContinueIcon;\n }\n\n /**\n * icon for delete buttons\n */\n public get IconDelete(): string {\n return this.iconService.UploadComponentDeleteIcon;\n }\n\n /**\n * icon for pause buttons\n */\n public get IconPause(): string {\n return this.iconService.UploadComponentPauseIcon;\n }\n\n /**\n * icon for upload button\n */\n public get IconUpload(): string {\n return this.iconService.UploadComponentUploadIcon;\n }\n\n public get allowedtypes(): string {\n return this._allowedtypes;\n }\n\n /**\n * Erlaubte Dateitypen f\xFCr den Upload. Format: \".xxx,.yyy,.zzz\"\n */\n @Input()\n public set allowedtypes(types: string) {\n this._allowedtypes = types;\n this.setAllowedTypes(types);\n }\n\n public get autoupload(): boolean {\n return this._autoupload;\n }\n\n /**\n * Files nach der Auswahl automatisch hochladen\n */\n @Input()\n public set autoupload(v: boolean) {\n this._autoupload = v;\n this.options.autoUpload = v;\n this.uploadService.connect(this.options);\n }\n\n public get enablepause(): boolean {\n return this._enablepause;\n }\n\n /**\n * Uploads k\xF6nnen unterbrochen werden\n */\n @Input()\n public set enablepause(v: boolean) {\n this._enablepause = v;\n }\n\n public get endpoint(): string {\n return this._endpoint;\n }\n\n /**\n * Definiert den Registration Endpoint f\xFCr Uploads.\n */\n @Input()\n public set endpoint(v: string) {\n this._endpoint = v;\n this.setEndpoint(v);\n }\n\n /**\n * Token for Bearer Authentication\n */\n public get token(): string | null {\n return this._token;\n }\n\n /**\n * Token for Bearer Authentication\n */\n @Input()\n public set token(v: string | null) {\n this._token = v;\n this.setToken(v);\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Methode kann f\xFCr Controls verwendet werden, zus\xE4tzliche Validierungen bei hinzuf\xFCgen der Files zu machen\n *\n * @param file File das hinzugef\xFCgt wurde.\n * @returns Valdierung ist erfolgreich\n */\n public abstract CustomAddValidation(file: UploadState): boolean;\n\n /**\n * Name der Datei die Hochgeladen wird\n * @returns Observable des Dateinamens.\n */\n public Filename(): Observable<string> {\n if (this.uploads.length > 0) {\n return of(this.uploads[0].name);\n } else {\n return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);\n }\n }\n\n /**\n * Gibt an ob Queue Elemente beinhaltet\n * @returns Elemente in der Queue\n */\n public HasQueueItem(): boolean {\n return this.uploads.length > 0;\n }\n\n /**\n * Gibt an ob ein Upload abgeschlossen ist\n * @returns Upload erfolgreich\n */\n public HasSuccessUpload(): boolean {\n if (this.uploads.length > 0) {\n return this.uploads.filter((itm) => itm.status !== 'complete').length === 0;\n } else {\n return false;\n }\n }\n\n /**\n * Pr\xFCft ob ein Upload pausiert\n * @returns Pausierter Upload ist vorhanden\n */\n public IsPaused(): boolean {\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\n }\n\n /**\n * Pr\xFCft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\n * @returns Elemente f\xFCr Upload vorhanden\n */\n public IsStateToUpload(): boolean {\n return this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0;\n }\n\n /**\n * Pr\xFCft ob ein Upload eines Files am laufen ist\n * @returns Upload ist am laufen\n */\n public IsUploading(): boolean {\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\n }\n\n /**\n * Gibt den Uploadfortschritt zur\xFCck\n * @returns Upload Fortschritt. Wert von 0-100\n */\n public Progress(): number {\n if (this.uploads.length > 0) {\n return this.uploads[0].progress;\n } else {\n return 0;\n }\n }\n\n /**\n * Methode welche die Upload ID's in das Model setzt oder l\xF6scht\n *\n * @param file Type von File ID's\n */\n public abstract SetUploadValue(file: UploadState): void;\n\n /**\n * Cancel single upload\n * @param uploadId ID of File to cancel\n */\n public cancel(uploadId) {\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\n }\n\n /**\n * Cancel all Uploaded files\n */\n public cancelAll() {\n if (this.HasQueueItem() === true) {\n this.uploadService.control({ action: 'cancel' });\n }\n }\n\n /**\n * Destroy des Controls\n */\n public ngOnDestroy() {\n if (this.listenerFn) {\n this.listenerFn();\n }\n }\n\n /**\n * Initialisiert das Control\n */\n public ngOnInit() {\n super.ngOnInit();\n // Init Event Listener for Input File Control and Handling Files\n this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);\n\n this.setAllowedTypes(this._allowedtypes);\n this.setEndpoint(this._endpoint);\n this.setToken(this._token);\n\n if (this._endpoint === null) {\n throw new Error('endpoint is not defined!');\n }\n\n this.uploadService.connect(this.options);\n }\n\n /**\n * Upload Event\n *\n * @param uploadsOutStream Upload Item\n */\n public onUpload(ufile: UploadState) {\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\n\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\n if (\n this.isExtensionValid(ufile.name) &&\n this.isFileSizeValid(ufile.size) &&\n this.CustomAddValidation(ufile)\n ) {\n this.uploads.push(new SacUploadFile(ufile));\n } else {\n this.cancel(ufile.uploadId);\n\n if (!this.isExtensionValid(ufile.name)) {\n this.onfileerror.emit('INVALID_EXTENSION');\n } else if (!this.isFileSizeValid(ufile.size)) {\n this.onfileerror.emit('INVALID_FILESIZE');\n }\n }\n } else if (ufile.status === 'cancelled') {\n if (index >= 0) {\n this.uploads.splice(index, 1);\n }\n\n this.SetUploadValue(null);\n } else if (ufile.status === 'complete') {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n this.SetUploadValue(ufile);\n\n const uploadState: ISacUploadEventCompleteState = {\n name: ufile.name,\n size: ufile.size,\n uploadid: this.uploads[index].uploadId,\n };\n\n this.onuploadcomplete.emit(uploadState);\n } else {\n if (index >= 0) {\n this.uploads[index].progress = ufile.progress;\n this.uploads[index].status = ufile.status;\n }\n }\n\n this.UpdateFileCount();\n }\n\n /**\n * Cancel Single File\n * @param uploadId ID of File to Cancel\n */\n public pause(uploadId) {\n this.uploadService.control({ action: 'pause', uploadId });\n }\n\n /**\n * Pause all Uploads\n */\n public pauseAll() {\n if (this.IsUploading() === true) {\n this.uploadService.control({ action: 'pause' });\n }\n }\n\n /**\n * Sets the bearer token in the upload service\n */\n public setToken(value: string) {\n this.options.token = value;\n }\n\n /**\n * Upload Single File\n *\n * @param uploadId ID of File to Upload\n */\n public upload(uploadId) {\n this.uploadService.control({ action: 'upload', uploadId });\n }\n\n /**\n * Upload all queued Files\n */\n public uploadAll() {\n if (this.IsStateToUpload() === true) {\n this.uploadService.control({ action: 'upload' });\n }\n }\n\n /**\n * Validiert das Upload Control\n * @param c Control das validiert werden soll\n */\n public validateData(c: AbstractControl): ValidationErrors | null {\n let error: ValidationErrors | null = null;\n\n if (this.isrequired) {\n error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);\n }\n\n return error;\n }\n\n // #endregion Public Methods\n\n // #region Private Methods\n\n private UpdateFileCount(): void {\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\n if (this.ngControl) {\n (this.ngControl as unknown as IUploadControl).uploadedfilecount = this.UploadedFileCount();\n }\n }\n\n /**\n * Returns the number of uploaded files\n */\n private UploadedFileCount(): number {\n return this.uploads.filter((itm) => itm.status === 'complete').length;\n }\n\n /**\n * Pr\xFCft ob die Dateierweiterung g\xFCltig ist\n *\n * @param filename Dateiname\n */\n private isExtensionValid(filename: string): boolean {\n if (this._allowedtypes === '*') {\n return true;\n }\n\n let isValid: boolean = false;\n const extensions: string[] = this._allowedtypes.split(',');\n\n extensions.forEach((itm) => {\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\n isValid = true;\n }\n });\n\n return isValid;\n }\n\n /**\n * Pr\xFCft ob das File nicht zu gross ist.\n *\n * @param filesize Max File Size in Bytes\n */\n private isFileSizeValid(filesize: number): boolean {\n if (this.maxfilesize === 0) {\n return true;\n }\n\n return this.maxfilesize >= filesize;\n }\n\n /**\n * Setzt die erlaubten Datentypen f\xFCr den Upload\n *\n * @param types Erlaubte File Extensions\n */\n private setAllowedTypes(types: string) {\n // Pr\xFCfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\n if (this.uploadInput && this.uploadInput.nativeElement) {\n this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);\n }\n\n this.options.allowedTypes = types;\n }\n\n /**\n * Setzt den Upload Endpoit\n * @param url Register URI\n */\n private setEndpoint(url: string) {\n this.options.endpoint = url;\n }\n\n // #endregion Private Methods\n}\n\n/**\n * Klasse f\xFCr den Upload einer Datei in der Upload Component\n */\nexport class SacUploadFile {\n // #region Properties\n\n /**\n * Document ID\n */\n public documentid: string;\n\n /**\n * Dateiname\n */\n public name: string;\n\n /**\n * Upload Fortschritt\n */\n public progress: number;\n\n /**\n * Upload Status\n */\n public status: string;\n\n /**\n * Upload ID\n */\n public uploadId: string;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Konstruktor\n * @param ufile Upload Status\n */\n constructor(ufile: UploadState) {\n this.uploadId = ufile.uploadId;\n this.name = ufile.name;\n this.progress = ufile.progress;\n this.status = ufile.status;\n this.documentid = null;\n }\n\n // #endregion Constructors\n}\n\n// #endregion Exported Classes\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"05675024265ad803b3cbc6949e657da6cd2d9180"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
|
|
2
|
+
cov_2j8zwflweb=function(){return actualCoverage;};}return actualCoverage;}cov_2j8zwflweb();import{SACVALIDATIONKEY_SERVICE,SacDefaultValidationKeyService}from'../services';import{SACLOCALISATION_SERVICE,SacDefaultLocalisationService}from'../services/sac-localisation.service';import{Validation}from'../validation';import{SacBaseModelControl}from'./basemodelcontrol';import{Directive,EventEmitter,Input,Output,ViewChild}from'@angular/core';import{UploadxService}from'ngx-uploadx';import{of}from'rxjs';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";// #region Exported Classes
|
|
3
3
|
/**
|
|
4
4
|
* Base Klasse für Uploader Control
|
|
5
5
|
*/class SacUploadBase extends SacBaseModelControl{// #endregion Properties
|
|
@@ -10,137 +10,137 @@ cov_1y8jkaecmb=function(){return actualCoverage;};}return actualCoverage;}cov_1y
|
|
|
10
10
|
* @param injector Injector for injecting services
|
|
11
11
|
* @param renderer angular rendering engine
|
|
12
12
|
* @param ngZone ngzone for handling external scripts
|
|
13
|
-
*/constructor(formlayout,injector,renderer,ngZone){
|
|
13
|
+
*/constructor(formlayout,injector,renderer,ngZone){cov_2j8zwflweb().f[0]++;cov_2j8zwflweb().s[0]++;super(formlayout,injector);cov_2j8zwflweb().s[1]++;this.renderer=renderer;cov_2j8zwflweb().s[2]++;this.ngZone=ngZone;// #region Properties
|
|
14
14
|
/**
|
|
15
15
|
* Erlaubte Dateitypen
|
|
16
|
-
*/
|
|
16
|
+
*/cov_2j8zwflweb().s[3]++;this._allowedtypes='*';/**
|
|
17
17
|
* Files automatisch hochladen
|
|
18
|
-
*/
|
|
18
|
+
*/cov_2j8zwflweb().s[4]++;this._autoupload=false;/**
|
|
19
19
|
* Pausieren von Uploads erlauben
|
|
20
|
-
*/
|
|
20
|
+
*/cov_2j8zwflweb().s[5]++;this._enablepause=true;/**
|
|
21
21
|
* API Endpoint
|
|
22
|
-
*/
|
|
22
|
+
*/cov_2j8zwflweb().s[6]++;this._endpoint=null;/**
|
|
23
23
|
* Token for Bearer Authentication
|
|
24
|
-
*/
|
|
24
|
+
*/cov_2j8zwflweb().s[7]++;this._token=null;/**
|
|
25
25
|
* Upload Settings
|
|
26
|
-
*/
|
|
26
|
+
*/cov_2j8zwflweb().s[8]++;this.options={};/**
|
|
27
27
|
* Handling von neuen Files im Input Control
|
|
28
|
-
*/
|
|
28
|
+
*/cov_2j8zwflweb().s[9]++;this.fileListener=()=>{cov_2j8zwflweb().f[1]++;cov_2j8zwflweb().s[10]++;if(this.uploadInput.nativeElement.files){cov_2j8zwflweb().b[0][0]++;cov_2j8zwflweb().s[11]++;this.uploadService.handleFiles(this.uploadInput.nativeElement.files);}else{cov_2j8zwflweb().b[0][1]++;}};/**
|
|
29
29
|
* Definiert das Control als Required
|
|
30
|
-
*/
|
|
30
|
+
*/cov_2j8zwflweb().s[12]++;this.isrequired=false;/**
|
|
31
31
|
* Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter
|
|
32
|
-
*/
|
|
32
|
+
*/cov_2j8zwflweb().s[13]++;this.maxfilesize=0;/**
|
|
33
33
|
* Event when an error is triggered in the component.
|
|
34
|
-
*/
|
|
34
|
+
*/cov_2j8zwflweb().s[14]++;this.onfileerror=new EventEmitter();/**
|
|
35
35
|
* Event when a file has been uploaded. The event is triggered for multiple uploads per file.
|
|
36
|
-
*/
|
|
36
|
+
*/cov_2j8zwflweb().s[15]++;this.onuploadcomplete=new EventEmitter();/**
|
|
37
37
|
* Resource Key für Validation Message Required bei Control
|
|
38
|
-
*/
|
|
38
|
+
*/cov_2j8zwflweb().s[16]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
|
|
39
39
|
* Resource Key für Validation Message Required in Validation Summary
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
*/cov_2j8zwflweb().s[17]++;this.validationmessagesummaryrequired=this.validationKeyService.ValidationErrorSummaryRequired;cov_2j8zwflweb().s[18]++;this.validationKeyService=injector.get(SACVALIDATIONKEY_SERVICE,new SacDefaultValidationKeyService());cov_2j8zwflweb().s[19]++;this.lngResourceService=injector.get(SACLOCALISATION_SERVICE,new SacDefaultLocalisationService(this.validationKeyService));cov_2j8zwflweb().s[20]++;this.uploads=[];cov_2j8zwflweb().s[21]++;this.options.allowedTypes='*';cov_2j8zwflweb().s[22]++;this.options.concurrency=1;cov_2j8zwflweb().s[23]++;this.options.token='sometoken';cov_2j8zwflweb().s[24]++;this.options.autoUpload=this._autoupload;cov_2j8zwflweb().s[25]++;this.options.withCredentials=true;cov_2j8zwflweb().s[26]++;this.options.chunkSize=1024*16*8;cov_2j8zwflweb().s[27]++;this.options.headers=f=>{cov_2j8zwflweb().f[2]++;cov_2j8zwflweb().s[28]++;return{'Content-Disposition':`filename=${encodeURI(f.name)}`};};// Init new Service Instance
|
|
41
|
+
cov_2j8zwflweb().s[29]++;this.uploadService=new UploadxService();cov_2j8zwflweb().s[30]++;this.uploadService.init(this.options);// Subscripe Event for State changes
|
|
42
|
+
cov_2j8zwflweb().s[31]++;this.uploadService.events.subscribe(ufile=>{cov_2j8zwflweb().f[3]++;cov_2j8zwflweb().s[32]++;return this.onUpload(ufile);});}// #endregion Constructors
|
|
43
43
|
// #region Public Getters And Setters
|
|
44
44
|
/**
|
|
45
45
|
* Icon for browse button
|
|
46
|
-
*/get IconBrowse(){
|
|
46
|
+
*/get IconBrowse(){cov_2j8zwflweb().f[4]++;cov_2j8zwflweb().s[33]++;return this.iconService.UploadComponentBrowseIcon;}/**
|
|
47
47
|
* icon for continous buttons
|
|
48
|
-
*/get IconContinue(){
|
|
48
|
+
*/get IconContinue(){cov_2j8zwflweb().f[5]++;cov_2j8zwflweb().s[34]++;return this.iconService.UploadComponentContinueIcon;}/**
|
|
49
49
|
* icon for delete buttons
|
|
50
|
-
*/get IconDelete(){
|
|
50
|
+
*/get IconDelete(){cov_2j8zwflweb().f[6]++;cov_2j8zwflweb().s[35]++;return this.iconService.UploadComponentDeleteIcon;}/**
|
|
51
51
|
* icon for pause buttons
|
|
52
|
-
*/get IconPause(){
|
|
52
|
+
*/get IconPause(){cov_2j8zwflweb().f[7]++;cov_2j8zwflweb().s[36]++;return this.iconService.UploadComponentPauseIcon;}/**
|
|
53
53
|
* icon for upload button
|
|
54
|
-
*/get IconUpload(){
|
|
54
|
+
*/get IconUpload(){cov_2j8zwflweb().f[8]++;cov_2j8zwflweb().s[37]++;return this.iconService.UploadComponentUploadIcon;}get allowedtypes(){cov_2j8zwflweb().f[9]++;cov_2j8zwflweb().s[38]++;return this._allowedtypes;}/**
|
|
55
55
|
* Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
|
|
56
|
-
*/set allowedtypes(types){
|
|
56
|
+
*/set allowedtypes(types){cov_2j8zwflweb().f[10]++;cov_2j8zwflweb().s[39]++;this._allowedtypes=types;cov_2j8zwflweb().s[40]++;this.setAllowedTypes(types);}get autoupload(){cov_2j8zwflweb().f[11]++;cov_2j8zwflweb().s[41]++;return this._autoupload;}/**
|
|
57
57
|
* Files nach der Auswahl automatisch hochladen
|
|
58
|
-
*/set autoupload(v){
|
|
58
|
+
*/set autoupload(v){cov_2j8zwflweb().f[12]++;cov_2j8zwflweb().s[42]++;this._autoupload=v;cov_2j8zwflweb().s[43]++;this.options.autoUpload=v;cov_2j8zwflweb().s[44]++;this.uploadService.connect(this.options);}get enablepause(){cov_2j8zwflweb().f[13]++;cov_2j8zwflweb().s[45]++;return this._enablepause;}/**
|
|
59
59
|
* Uploads können unterbrochen werden
|
|
60
|
-
*/set enablepause(v){
|
|
60
|
+
*/set enablepause(v){cov_2j8zwflweb().f[14]++;cov_2j8zwflweb().s[46]++;this._enablepause=v;}get endpoint(){cov_2j8zwflweb().f[15]++;cov_2j8zwflweb().s[47]++;return this._endpoint;}/**
|
|
61
61
|
* Definiert den Registration Endpoint für Uploads.
|
|
62
|
-
*/set endpoint(v){
|
|
62
|
+
*/set endpoint(v){cov_2j8zwflweb().f[16]++;cov_2j8zwflweb().s[48]++;this._endpoint=v;cov_2j8zwflweb().s[49]++;this.setEndpoint(v);}/**
|
|
63
63
|
* Token for Bearer Authentication
|
|
64
|
-
*/get token(){
|
|
64
|
+
*/get token(){cov_2j8zwflweb().f[17]++;cov_2j8zwflweb().s[50]++;return this._token;}/**
|
|
65
65
|
* Token for Bearer Authentication
|
|
66
|
-
*/set token(v){
|
|
66
|
+
*/set token(v){cov_2j8zwflweb().f[18]++;cov_2j8zwflweb().s[51]++;this._token=v;cov_2j8zwflweb().s[52]++;this.setToken(v);}/**
|
|
67
67
|
* Name der Datei die Hochgeladen wird
|
|
68
68
|
* @returns Observable des Dateinamens.
|
|
69
|
-
*/Filename(){
|
|
69
|
+
*/Filename(){cov_2j8zwflweb().f[19]++;cov_2j8zwflweb().s[53]++;if(this.uploads.length>0){cov_2j8zwflweb().b[1][0]++;cov_2j8zwflweb().s[54]++;return of(this.uploads[0].name);}else{cov_2j8zwflweb().b[1][1]++;cov_2j8zwflweb().s[55]++;return this.lngResourceService.GetString(this.validationKeyService.UploadNoFilesSelected);}}/**
|
|
70
70
|
* Gibt an ob Queue Elemente beinhaltet
|
|
71
71
|
* @returns Elemente in der Queue
|
|
72
|
-
*/HasQueueItem(){
|
|
72
|
+
*/HasQueueItem(){cov_2j8zwflweb().f[20]++;cov_2j8zwflweb().s[56]++;return this.uploads.length>0;}/**
|
|
73
73
|
* Gibt an ob ein Upload abgeschlossen ist
|
|
74
74
|
* @returns Upload erfolgreich
|
|
75
|
-
*/HasSuccessUpload(){
|
|
75
|
+
*/HasSuccessUpload(){cov_2j8zwflweb().f[21]++;cov_2j8zwflweb().s[57]++;if(this.uploads.length>0){cov_2j8zwflweb().b[2][0]++;cov_2j8zwflweb().s[58]++;return this.uploads.filter(itm=>{cov_2j8zwflweb().f[22]++;cov_2j8zwflweb().s[59]++;return itm.status!=='complete';}).length===0;}else{cov_2j8zwflweb().b[2][1]++;cov_2j8zwflweb().s[60]++;return false;}}/**
|
|
76
76
|
* Prüft ob ein Upload pausiert
|
|
77
77
|
* @returns Pausierter Upload ist vorhanden
|
|
78
|
-
*/IsPaused(){
|
|
78
|
+
*/IsPaused(){cov_2j8zwflweb().f[23]++;cov_2j8zwflweb().s[61]++;return this.uploads.filter(itm=>{cov_2j8zwflweb().f[24]++;cov_2j8zwflweb().s[62]++;return itm.status==='paused';}).length>0;}/**
|
|
79
79
|
* Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.
|
|
80
80
|
* @returns Elemente für Upload vorhanden
|
|
81
|
-
*/IsStateToUpload(){
|
|
81
|
+
*/IsStateToUpload(){cov_2j8zwflweb().f[25]++;cov_2j8zwflweb().s[63]++;return this.uploads.filter(itm=>{cov_2j8zwflweb().f[26]++;cov_2j8zwflweb().s[64]++;return(cov_2j8zwflweb().b[3][0]++,itm.status==='added')||(cov_2j8zwflweb().b[3][1]++,itm.status==='paused');}).length>0;}/**
|
|
82
82
|
* Prüft ob ein Upload eines Files am laufen ist
|
|
83
83
|
* @returns Upload ist am laufen
|
|
84
|
-
*/IsUploading(){
|
|
84
|
+
*/IsUploading(){cov_2j8zwflweb().f[27]++;cov_2j8zwflweb().s[65]++;return this.uploads.filter(itm=>{cov_2j8zwflweb().f[28]++;cov_2j8zwflweb().s[66]++;return itm.status==='uploading';}).length>0;}/**
|
|
85
85
|
* Gibt den Uploadfortschritt zurück
|
|
86
86
|
* @returns Upload Fortschritt. Wert von 0-100
|
|
87
|
-
*/Progress(){
|
|
87
|
+
*/Progress(){cov_2j8zwflweb().f[29]++;cov_2j8zwflweb().s[67]++;if(this.uploads.length>0){cov_2j8zwflweb().b[4][0]++;cov_2j8zwflweb().s[68]++;return this.uploads[0].progress;}else{cov_2j8zwflweb().b[4][1]++;cov_2j8zwflweb().s[69]++;return 0;}}/**
|
|
88
88
|
* Cancel single upload
|
|
89
89
|
* @param uploadId ID of File to cancel
|
|
90
|
-
*/cancel(uploadId){
|
|
90
|
+
*/cancel(uploadId){cov_2j8zwflweb().f[30]++;cov_2j8zwflweb().s[70]++;this.uploadService.control({action:'cancel',uploadId:uploadId});}/**
|
|
91
91
|
* Cancel all Uploaded files
|
|
92
|
-
*/cancelAll(){
|
|
92
|
+
*/cancelAll(){cov_2j8zwflweb().f[31]++;cov_2j8zwflweb().s[71]++;if(this.HasQueueItem()===true){cov_2j8zwflweb().b[5][0]++;cov_2j8zwflweb().s[72]++;this.uploadService.control({action:'cancel'});}else{cov_2j8zwflweb().b[5][1]++;}}/**
|
|
93
93
|
* Destroy des Controls
|
|
94
|
-
*/ngOnDestroy(){
|
|
94
|
+
*/ngOnDestroy(){cov_2j8zwflweb().f[32]++;cov_2j8zwflweb().s[73]++;if(this.listenerFn){cov_2j8zwflweb().b[6][0]++;cov_2j8zwflweb().s[74]++;this.listenerFn();}else{cov_2j8zwflweb().b[6][1]++;}}/**
|
|
95
95
|
* Initialisiert das Control
|
|
96
|
-
*/ngOnInit(){
|
|
97
|
-
|
|
96
|
+
*/ngOnInit(){cov_2j8zwflweb().f[33]++;cov_2j8zwflweb().s[75]++;super.ngOnInit();// Init Event Listener for Input File Control and Handling Files
|
|
97
|
+
cov_2j8zwflweb().s[76]++;this.listenerFn=this.renderer.listen(this.uploadInput.nativeElement,'change',this.fileListener);cov_2j8zwflweb().s[77]++;this.setAllowedTypes(this._allowedtypes);cov_2j8zwflweb().s[78]++;this.setEndpoint(this._endpoint);cov_2j8zwflweb().s[79]++;this.setToken(this._token);cov_2j8zwflweb().s[80]++;if(this._endpoint===null){cov_2j8zwflweb().b[7][0]++;cov_2j8zwflweb().s[81]++;throw new Error('endpoint is not defined!');}else{cov_2j8zwflweb().b[7][1]++;}cov_2j8zwflweb().s[82]++;this.uploadService.connect(this.options);}/**
|
|
98
98
|
* Upload Event
|
|
99
99
|
*
|
|
100
100
|
* @param uploadsOutStream Upload Item
|
|
101
|
-
*/onUpload(ufile){
|
|
101
|
+
*/onUpload(ufile){cov_2j8zwflweb().f[34]++;const index=(cov_2j8zwflweb().s[83]++,this.uploads.findIndex(f=>{cov_2j8zwflweb().f[35]++;cov_2j8zwflweb().s[84]++;return f.uploadId===ufile.uploadId;}));cov_2j8zwflweb().s[85]++;if((cov_2j8zwflweb().b[9][0]++,ufile.status==='added')||(cov_2j8zwflweb().b[9][1]++,ufile.status==='queue')&&(cov_2j8zwflweb().b[9][2]++,index<0)){cov_2j8zwflweb().b[8][0]++;cov_2j8zwflweb().s[86]++;if((cov_2j8zwflweb().b[11][0]++,this.isExtensionValid(ufile.name))&&(cov_2j8zwflweb().b[11][1]++,this.isFileSizeValid(ufile.size))&&(cov_2j8zwflweb().b[11][2]++,this.CustomAddValidation(ufile))){cov_2j8zwflweb().b[10][0]++;cov_2j8zwflweb().s[87]++;this.uploads.push(new SacUploadFile(ufile));}else{cov_2j8zwflweb().b[10][1]++;cov_2j8zwflweb().s[88]++;this.cancel(ufile.uploadId);cov_2j8zwflweb().s[89]++;if(!this.isExtensionValid(ufile.name)){cov_2j8zwflweb().b[12][0]++;cov_2j8zwflweb().s[90]++;this.onfileerror.emit('INVALID_EXTENSION');}else{cov_2j8zwflweb().b[12][1]++;cov_2j8zwflweb().s[91]++;if(!this.isFileSizeValid(ufile.size)){cov_2j8zwflweb().b[13][0]++;cov_2j8zwflweb().s[92]++;this.onfileerror.emit('INVALID_FILESIZE');}else{cov_2j8zwflweb().b[13][1]++;}}}}else{cov_2j8zwflweb().b[8][1]++;cov_2j8zwflweb().s[93]++;if(ufile.status==='cancelled'){cov_2j8zwflweb().b[14][0]++;cov_2j8zwflweb().s[94]++;if(index>=0){cov_2j8zwflweb().b[15][0]++;cov_2j8zwflweb().s[95]++;this.uploads.splice(index,1);}else{cov_2j8zwflweb().b[15][1]++;}cov_2j8zwflweb().s[96]++;this.SetUploadValue(null);}else{cov_2j8zwflweb().b[14][1]++;cov_2j8zwflweb().s[97]++;if(ufile.status==='complete'){cov_2j8zwflweb().b[16][0]++;cov_2j8zwflweb().s[98]++;this.uploads[index].progress=ufile.progress;cov_2j8zwflweb().s[99]++;this.uploads[index].status=ufile.status;cov_2j8zwflweb().s[100]++;this.SetUploadValue(ufile);const uploadState=(cov_2j8zwflweb().s[101]++,{name:ufile.name,size:ufile.size,uploadid:this.uploads[index].uploadId});cov_2j8zwflweb().s[102]++;this.onuploadcomplete.emit(uploadState);}else{cov_2j8zwflweb().b[16][1]++;cov_2j8zwflweb().s[103]++;if(index>=0){cov_2j8zwflweb().b[17][0]++;cov_2j8zwflweb().s[104]++;this.uploads[index].progress=ufile.progress;cov_2j8zwflweb().s[105]++;this.uploads[index].status=ufile.status;}else{cov_2j8zwflweb().b[17][1]++;}}}}cov_2j8zwflweb().s[106]++;this.UpdateFileCount();}/**
|
|
102
102
|
* Cancel Single File
|
|
103
103
|
* @param uploadId ID of File to Cancel
|
|
104
|
-
*/pause(uploadId){
|
|
104
|
+
*/pause(uploadId){cov_2j8zwflweb().f[36]++;cov_2j8zwflweb().s[107]++;this.uploadService.control({action:'pause',uploadId});}/**
|
|
105
105
|
* Pause all Uploads
|
|
106
|
-
*/pauseAll(){
|
|
106
|
+
*/pauseAll(){cov_2j8zwflweb().f[37]++;cov_2j8zwflweb().s[108]++;if(this.IsUploading()===true){cov_2j8zwflweb().b[18][0]++;cov_2j8zwflweb().s[109]++;this.uploadService.control({action:'pause'});}else{cov_2j8zwflweb().b[18][1]++;}}/**
|
|
107
107
|
* Sets the bearer token in the upload service
|
|
108
|
-
*/setToken(value){
|
|
108
|
+
*/setToken(value){cov_2j8zwflweb().f[38]++;cov_2j8zwflweb().s[110]++;this.options.token=value;}/**
|
|
109
109
|
* Upload Single File
|
|
110
110
|
*
|
|
111
111
|
* @param uploadId ID of File to Upload
|
|
112
|
-
*/upload(uploadId){
|
|
112
|
+
*/upload(uploadId){cov_2j8zwflweb().f[39]++;cov_2j8zwflweb().s[111]++;this.uploadService.control({action:'upload',uploadId});}/**
|
|
113
113
|
* Upload all queued Files
|
|
114
|
-
*/uploadAll(){
|
|
114
|
+
*/uploadAll(){cov_2j8zwflweb().f[40]++;cov_2j8zwflweb().s[112]++;if(this.IsStateToUpload()===true){cov_2j8zwflweb().b[19][0]++;cov_2j8zwflweb().s[113]++;this.uploadService.control({action:'upload'});}else{cov_2j8zwflweb().b[19][1]++;}}/**
|
|
115
115
|
* Validiert das Upload Control
|
|
116
116
|
* @param c Control das validiert werden soll
|
|
117
|
-
*/validateData(c){
|
|
117
|
+
*/validateData(c){cov_2j8zwflweb().f[41]++;let error=(cov_2j8zwflweb().s[114]++,null);cov_2j8zwflweb().s[115]++;if(this.isrequired){cov_2j8zwflweb().b[20][0]++;cov_2j8zwflweb().s[116]++;error=Validation.required(this.validationmessagerequired,this.validationmessagesummaryrequired)(c);}else{cov_2j8zwflweb().b[20][1]++;}cov_2j8zwflweb().s[117]++;return error;}// #endregion Public Methods
|
|
118
118
|
// #region Private Methods
|
|
119
|
-
UpdateFileCount(){
|
|
120
|
-
if(this.ngControl){
|
|
119
|
+
UpdateFileCount(){cov_2j8zwflweb().f[42]++;cov_2j8zwflweb().s[118]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
|
|
120
|
+
if(this.ngControl){cov_2j8zwflweb().b[21][0]++;cov_2j8zwflweb().s[119]++;this.ngControl.uploadedfilecount=this.UploadedFileCount();}else{cov_2j8zwflweb().b[21][1]++;}}/**
|
|
121
121
|
* Returns the number of uploaded files
|
|
122
|
-
*/UploadedFileCount(){
|
|
122
|
+
*/UploadedFileCount(){cov_2j8zwflweb().f[43]++;cov_2j8zwflweb().s[120]++;return this.uploads.filter(itm=>{cov_2j8zwflweb().f[44]++;cov_2j8zwflweb().s[121]++;return itm.status==='complete';}).length;}/**
|
|
123
123
|
* Prüft ob die Dateierweiterung gültig ist
|
|
124
124
|
*
|
|
125
125
|
* @param filename Dateiname
|
|
126
|
-
*/isExtensionValid(filename){
|
|
126
|
+
*/isExtensionValid(filename){cov_2j8zwflweb().f[45]++;cov_2j8zwflweb().s[122]++;if(this._allowedtypes==='*'){cov_2j8zwflweb().b[22][0]++;cov_2j8zwflweb().s[123]++;return true;}else{cov_2j8zwflweb().b[22][1]++;}let isValid=(cov_2j8zwflweb().s[124]++,false);const extensions=(cov_2j8zwflweb().s[125]++,this._allowedtypes.split(','));cov_2j8zwflweb().s[126]++;extensions.forEach(itm=>{cov_2j8zwflweb().f[46]++;cov_2j8zwflweb().s[127]++;if(filename.toLowerCase().endsWith(itm.toLowerCase())){cov_2j8zwflweb().b[23][0]++;cov_2j8zwflweb().s[128]++;isValid=true;}else{cov_2j8zwflweb().b[23][1]++;}});cov_2j8zwflweb().s[129]++;return isValid;}/**
|
|
127
127
|
* Prüft ob das File nicht zu gross ist.
|
|
128
128
|
*
|
|
129
129
|
* @param filesize Max File Size in Bytes
|
|
130
|
-
*/isFileSizeValid(filesize){
|
|
130
|
+
*/isFileSizeValid(filesize){cov_2j8zwflweb().f[47]++;cov_2j8zwflweb().s[130]++;if(this.maxfilesize===0){cov_2j8zwflweb().b[24][0]++;cov_2j8zwflweb().s[131]++;return true;}else{cov_2j8zwflweb().b[24][1]++;}cov_2j8zwflweb().s[132]++;return this.maxfilesize>=filesize;}/**
|
|
131
131
|
* Setzt die erlaubten Datentypen für den Upload
|
|
132
132
|
*
|
|
133
133
|
* @param types Erlaubte File Extensions
|
|
134
|
-
*/setAllowedTypes(types){
|
|
135
|
-
if((
|
|
134
|
+
*/setAllowedTypes(types){cov_2j8zwflweb().f[48]++;cov_2j8zwflweb().s[133]++;// Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
|
|
135
|
+
if((cov_2j8zwflweb().b[26][0]++,this.uploadInput)&&(cov_2j8zwflweb().b[26][1]++,this.uploadInput.nativeElement)){cov_2j8zwflweb().b[25][0]++;cov_2j8zwflweb().s[134]++;this.renderer.setAttribute(this.uploadInput.nativeElement,'accept',types);}else{cov_2j8zwflweb().b[25][1]++;}cov_2j8zwflweb().s[135]++;this.options.allowedTypes=types;}/**
|
|
136
136
|
* Setzt den Upload Endpoit
|
|
137
137
|
* @param url Register URI
|
|
138
|
-
*/setEndpoint(url){
|
|
138
|
+
*/setEndpoint(url){cov_2j8zwflweb().f[49]++;cov_2j8zwflweb().s[136]++;this.options.endpoint=url;}static{cov_2j8zwflweb().s[137]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacUploadBase,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.Renderer2},{token:i0.NgZone}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_2j8zwflweb().s[138]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacUploadBase,inputs:{isrequired:"isrequired",maxfilesize:"maxfilesize",validationmessagerequired:"validationmessagerequired",validationmessagesummaryrequired:"validationmessagesummaryrequired",allowedtypes:"allowedtypes",autoupload:"autoupload",enablepause:"enablepause",endpoint:"endpoint",token:"token"},outputs:{onfileerror:"onfileerror",onuploadcomplete:"onuploadcomplete"},viewQueries:[{propertyName:"uploadInput",first:true,predicate:["files"],descendants:true,static:true}],usesInheritance:true,ngImport:i0});}}export{SacUploadBase};cov_2j8zwflweb().s[139]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacUploadBase,decorators:[{type:Directive}],ctorParameters:function(){cov_2j8zwflweb().f[50]++;cov_2j8zwflweb().s[140]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.Renderer2},{type:i0.NgZone}];},propDecorators:{uploadInput:[{type:ViewChild,args:['files',{static:true}]}],isrequired:[{type:Input}],maxfilesize:[{type:Input}],onfileerror:[{type:Output}],onuploadcomplete:[{type:Output}],validationmessagerequired:[{type:Input}],validationmessagesummaryrequired:[{type:Input}],allowedtypes:[{type:Input}],autoupload:[{type:Input}],enablepause:[{type:Input}],endpoint:[{type:Input}],token:[{type:Input}]}});/**
|
|
139
139
|
* Klasse für den Upload einer Datei in der Upload Component
|
|
140
140
|
*/export class SacUploadFile{// #endregion Properties
|
|
141
141
|
// #region Constructors
|
|
142
142
|
/**
|
|
143
143
|
* Konstruktor
|
|
144
144
|
* @param ufile Upload Status
|
|
145
|
-
*/constructor(ufile){cov_1y8jkaecmb().f[51]++;cov_1y8jkaecmb().s[141]++;this.uploadId=ufile.uploadId;cov_1y8jkaecmb().s[142]++;this.name=ufile.name;cov_1y8jkaecmb().s[143]++;this.progress=ufile.progress;cov_1y8jkaecmb().s[144]++;this.status=ufile.status;cov_1y8jkaecmb().s[145]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQU9ILGNBQWMsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRXRDLDJCQUEyQjtBQUUzQjs7R0FFRztBQUNILE1BQ3NCLGFBQXFCLFNBQVEsbUJBQTBCO0lBb0d6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEgxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ0ssaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFckM7O1dB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LGdDQUFnQztzQkFEdEMsS0FBSztnQkFnR0ssWUFBWTtzQkFEdEIsS0FBSztnQkFjSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFpQkssS0FBSztzQkFEZixLQUFLOztBQW9VVjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ0Qix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQVksS0FBa0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XHJcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUnO1xyXG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcclxuaW1wb3J0IHtcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgTmdab25lLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgICBJZFNlcnZpY2UsXHJcbiAgICBVUExPQURYX0FKQVgsXHJcbiAgICBVUExPQURYX0ZBQ1RPUllfT1BUSU9OUyxcclxuICAgIFVQTE9BRFhfT1BUSU9OUyxcclxuICAgIFVwbG9hZFN0YXRlLFxyXG4gICAgVXBsb2FkeE9wdGlvbnMsXHJcbiAgICBVcGxvYWR4U2VydmljZSxcclxufSBmcm9tICduZ3gtdXBsb2FkeCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBCYXNlIEtsYXNzZSBmw7xyIFVwbG9hZGVyIENvbnRyb2xcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGVzIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXVzaWVyZW4gdm9uIFVwbG9hZHMgZXJsYXViZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZW5hYmxlcGF1c2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQVBJIEVuZHBvaW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF90b2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgU2V0dGluZ3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsZSBJbnB1dCBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHByaXZhdGUgdXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgU2VydmljZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGluZyB2b24gbmV1ZW4gRmlsZXMgaW0gSW5wdXQgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsZUxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbmVyIGbDvHIgRmlsZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxpc3RlbmVyRm46ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNlIGbDvHIgRXJyb3IgTG9jYWxpc2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4LiBEYXRlaWdyw7Zzc2UgZsO8ciBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIGvDtm5uZW4uIDAgZGVha3RpdmllcnQgZGVuIEZpbHRlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBpbiB0aGUgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCB3aGVuIGEgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCBmb3IgbXVsdGlwbGUgdXBsb2FkcyBwZXIgZmlsZS5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb251cGxvYWRjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFycmF5IHZvbiBVcGxvYWRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRzOiBTYWNVcGxvYWRGaWxlW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcclxuICAgICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKCkpO1xyXG5cclxuICAgICAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gJyonO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB0aGlzLl9hdXRvdXBsb2FkO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKGY6IEZpbGUpID0+ICh7XHJcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgVXBsb2FkeFNlcnZpY2UoKTtcclxuICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XHJcblxyXG4gICAgICAgIC8vIFN1YnNjcmlwZSBFdmVudCBmb3IgU3RhdGUgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKCh1ZmlsZTogVXBsb2FkU3RhdGUpID0+IHRoaXMub25VcGxvYWQodWZpbGUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEljb24gZm9yIGJyb3dzZSBidXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIGNvbnRpbm91cyBidXR0b25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvbkNvbnRpbnVlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uRGVsZXRlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIHBhdXNlIGJ1dHRvbnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRQYXVzZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciB1cGxvYWQgYnV0dG9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvblVwbG9hZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBhbGxvd2VkdHlwZXMoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlbiBmw7xyIGRlbiBVcGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsb3dlZHR5cGVzID0gdHlwZXM7XHJcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b3VwbG9hZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdjtcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkcyBrw7ZubmVuIHVudGVyYnJvY2hlbiB3ZXJkZW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2VuYWJsZXBhdXNlID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IGRlbiBSZWdpc3RyYXRpb24gRW5kcG9pbnQgZsO8ciBVcGxvYWRzLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9lbmRwb2ludCA9IHY7XHJcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbih2KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGUuXHJcbiAgICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxyXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBkZXMgRGF0ZWluYW1lbnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRzWzBdLm5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpYnQgYW4gb2IgUXVldWUgRWxlbWVudGUgYmVpbmhhbHRldFxyXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgaW4gZGVyIFF1ZXVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBIYXNRdWV1ZUl0ZW0oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2lidCBhbiBvYiBlaW4gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gaXN0XHJcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgZXJmb2xncmVpY2hcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgcGF1c2llcnRcclxuICAgICAqIEByZXR1cm5zIFBhdXNpZXJ0ZXIgVXBsb2FkIGlzdCB2b3JoYW5kZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIElzUGF1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGluIGRlciBRdWV1ZSBFbGVtZW50ZSBkaWUgenVtIFVwbG9hZCBiZXJlaXQgc2luZCB2b3JoYW5kZW4gc2luZC5cclxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGbDvHIgVXBsb2FkIHZvcmhhbmRlblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBlaW5lcyBGaWxlcyBhbSBsYXVmZW4gaXN0XHJcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXN0IGFtIGxhdWZlblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaWJ0IGRlbiBVcGxvYWRmb3J0c2Nocml0dCB6dXLDvGNrXHJcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgRm9ydHNjaHJpdHQuIFdlcnQgdm9uIDAtMTAwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgd2VsY2hlIGRpZSBVcGxvYWQgSUQncyBpbiBkYXMgTW9kZWwgc2V0enQgb2RlciBsw7ZzY2h0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBTZXRVcGxvYWRWYWx1ZShmaWxlOiBVcGxvYWRTdGF0ZSk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW5jZWwgc2luZ2xlIHVwbG9hZFxyXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWwodXBsb2FkSWQpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbmNlbCBhbGwgVXBsb2FkZWQgZmlsZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5IYXNRdWV1ZUl0ZW0oKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVzdHJveSBkZXMgQ29udHJvbHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyRm4pIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGlzaWVydCBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICAvLyBJbml0IEV2ZW50IExpc3RlbmVyIGZvciBJbnB1dCBGaWxlIENvbnRyb2wgYW5kIEhhbmRsaW5nIEZpbGVzXHJcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xyXG5cclxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0aGlzLl9hbGxvd2VkdHlwZXMpO1xyXG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xyXG4gICAgICAgIHRoaXMuc2V0VG9rZW4odGhpcy5fdG9rZW4pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgRXZlbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgSXRlbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVwbG9hZHMuZmluZEluZGV4KChmKSA9PiBmLnVwbG9hZElkID09PSB1ZmlsZS51cGxvYWRJZCk7XHJcblxyXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwodWZpbGUudXBsb2FkSWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0VYVEVOU0lPTicpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRklMRVNJWkUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY2FuY2VsbGVkJykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcclxuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZSh1ZmlsZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHVmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBzaXplOiB1ZmlsZS5zaXplLFxyXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLlVwZGF0ZUZpbGVDb3VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FuY2VsIFNpbmdsZSBGaWxlXHJcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBDYW5jZWxcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF1c2UgYWxsIFVwbG9hZHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdXNlQWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLklzVXBsb2FkaW5nKCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYmVhcmVyIHRva2VuIGluIHRoZSB1cGxvYWQgc2VydmljZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VG9rZW4odmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gVXBsb2FkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWQodXBsb2FkSWQpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwbG9hZEFsbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxyXG4gICAgICogQHBhcmFtIGMgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBVcGxvYWRlZEZpbGVDb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBkaWUgRGF0ZWllcndlaXRlcnVuZyBnw7xsdGlnIGlzdFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmaWxlbmFtZSBEYXRlaW5hbWVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0V4dGVuc2lvblZhbGlkKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5fYWxsb3dlZHR5cGVzID09PSAnKicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gdGhpcy5fYWxsb3dlZHR5cGVzLnNwbGl0KCcsJyk7XHJcblxyXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgZGFzIEZpbGUgbmljaHQgenUgZ3Jvc3MgaXN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmaWxlc2l6ZSBNYXggRmlsZSBTaXplIGluIEJ5dGVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5tYXhmaWxlc2l6ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0enQgZGllIGVybGF1YnRlbiBEYXRlbnR5cGVuIGbDvHIgZGVuIFVwbG9hZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB0eXBlcyBFcmxhdWJ0ZSBGaWxlIEV4dGVuc2lvbnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRBbGxvd2VkVHlwZXModHlwZXM6IHN0cmluZykge1xyXG4gICAgICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cclxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dCAmJiB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0enQgZGVuIFVwbG9hZCBFbmRwb2l0XHJcbiAgICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldEVuZHBvaW50KHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmVuZHBvaW50ID0gdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIERvY3VtZW50IElEXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkb2N1bWVudGlkOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlaW5hbWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBGb3J0c2Nocml0dFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvZ3Jlc3M6IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBTdGF0dXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXR1czogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIElEXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBLb25zdHJ1a3RvclxyXG4gICAgICogQHBhcmFtIHVmaWxlIFVwbG9hZCBTdGF0dXNcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IHVmaWxlLm5hbWU7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRpZCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXHJcbiJdfQ==
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMXk4amthZWNtYiIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJVcGxvYWR4U2VydmljZSIsIm9mIiwiU2FjVXBsb2FkQmFzZSIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwicmVuZGVyZXIiLCJuZ1pvbmUiLCJmIiwicyIsIl9hbGxvd2VkdHlwZXMiLCJfYXV0b3VwbG9hZCIsIl9lbmFibGVwYXVzZSIsIl9lbmRwb2ludCIsIl90b2tlbiIsIm9wdGlvbnMiLCJmaWxlTGlzdGVuZXIiLCJ1cGxvYWRJbnB1dCIsIm5hdGl2ZUVsZW1lbnQiLCJmaWxlcyIsImIiLCJ1cGxvYWRTZXJ2aWNlIiwiaGFuZGxlRmlsZXMiLCJpc3JlcXVpcmVkIiwibWF4ZmlsZXNpemUiLCJvbmZpbGVlcnJvciIsIm9udXBsb2FkY29tcGxldGUiLCJ2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkIiwidmFsaWRhdGlvbktleVNlcnZpY2UiLCJWYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCIsInZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkIiwiVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkIiwiZ2V0IiwibG5nUmVzb3VyY2VTZXJ2aWNlIiwidXBsb2FkcyIsImFsbG93ZWRUeXBlcyIsImNvbmN1cnJlbmN5IiwidG9rZW4iLCJhdXRvVXBsb2FkIiwid2l0aENyZWRlbnRpYWxzIiwiY2h1bmtTaXplIiwiaGVhZGVycyIsImVuY29kZVVSSSIsIm5hbWUiLCJpbml0IiwiZXZlbnRzIiwic3Vic2NyaWJlIiwidWZpbGUiLCJvblVwbG9hZCIsIkljb25Ccm93c2UiLCJpY29uU2VydmljZSIsIlVwbG9hZENvbXBvbmVudEJyb3dzZUljb24iLCJJY29uQ29udGludWUiLCJVcGxvYWRDb21wb25lbnRDb250aW51ZUljb24iLCJJY29uRGVsZXRlIiwiVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbiIsIkljb25QYXVzZSIsIlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbiIsIkljb25VcGxvYWQiLCJVcGxvYWRDb21wb25lbnRVcGxvYWRJY29uIiwiYWxsb3dlZHR5cGVzIiwidHlwZXMiLCJzZXRBbGxvd2VkVHlwZXMiLCJhdXRvdXBsb2FkIiwidiIsImNvbm5lY3QiLCJlbmFibGVwYXVzZSIsImVuZHBvaW50Iiwic2V0RW5kcG9pbnQiLCJzZXRUb2tlbiIsIkZpbGVuYW1lIiwibGVuZ3RoIiwiR2V0U3RyaW5nIiwiVXBsb2FkTm9GaWxlc1NlbGVjdGVkIiwiSGFzUXVldWVJdGVtIiwiSGFzU3VjY2Vzc1VwbG9hZCIsImZpbHRlciIsIml0bSIsInN0YXR1cyIsIklzUGF1c2VkIiwiSXNTdGF0ZVRvVXBsb2FkIiwiSXNVcGxvYWRpbmciLCJQcm9ncmVzcyIsInByb2dyZXNzIiwiY2FuY2VsIiwidXBsb2FkSWQiLCJjb250cm9sIiwiYWN0aW9uIiwiY2FuY2VsQWxsIiwibmdPbkRlc3Ryb3kiLCJsaXN0ZW5lckZuIiwibmdPbkluaXQiLCJsaXN0ZW4iLCJFcnJvciIsImluZGV4IiwiZmluZEluZGV4IiwiaXNFeHRlbnNpb25WYWxpZCIsImlzRmlsZVNpemVWYWxpZCIsInNpemUiLCJDdXN0b21BZGRWYWxpZGF0aW9uIiwicHVzaCIsIlNhY1VwbG9hZEZpbGUiLCJlbWl0Iiwic3BsaWNlIiwiU2V0VXBsb2FkVmFsdWUiLCJ1cGxvYWRTdGF0ZSIsInVwbG9hZGlkIiwiVXBkYXRlRmlsZUNvdW50IiwicGF1c2UiLCJwYXVzZUFsbCIsInZhbHVlIiwidXBsb2FkIiwidXBsb2FkQWxsIiwidmFsaWRhdGVEYXRhIiwiYyIsImVycm9yIiwicmVxdWlyZWQiLCJuZ0NvbnRyb2wiLCJ1cGxvYWRlZGZpbGVjb3VudCIsIlVwbG9hZGVkRmlsZUNvdW50IiwiZmlsZW5hbWUiLCJpc1ZhbGlkIiwiZXh0ZW5zaW9ucyIsInNwbGl0IiwiZm9yRWFjaCIsInRvTG93ZXJDYXNlIiwiZW5kc1dpdGgiLCJmaWxlc2l6ZSIsInNldEF0dHJpYnV0ZSIsInVybCIsImRlcHMiLCJpMSIsIlNhY0Zvcm1MYXlvdXRDb21tb24iLCJpMCIsIkluamVjdG9yIiwiUmVuZGVyZXIyIiwiTmdab25lIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJvdXRwdXRzIiwidmlld1F1ZXJpZXMiLCJwcm9wZXJ0eU5hbWUiLCJmaXJzdCIsInByZWRpY2F0ZSIsImRlc2NlbmRhbnRzIiwic3RhdGljIiwidXNlc0luaGVyaXRhbmNlIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIiwiZG9jdW1lbnRpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNldXBsb2FkY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcclxuaW1wb3J0IHsgSVVwbG9hZENvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l1cGxvYWRjb250cm9sJztcclxuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XHJcbmltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gICAgSWRTZXJ2aWNlLFxyXG4gICAgVVBMT0FEWF9BSkFYLFxyXG4gICAgVVBMT0FEWF9GQUNUT1JZX09QVElPTlMsXHJcbiAgICBVUExPQURYX09QVElPTlMsXHJcbiAgICBVcGxvYWRTdGF0ZSxcclxuICAgIFVwbG9hZHhPcHRpb25zLFxyXG4gICAgVXBsb2FkeFNlcnZpY2UsXHJcbn0gZnJvbSAnbmd4LXVwbG9hZHgnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXHJcblxyXG4vKipcclxuICogQmFzZSBLbGFzc2UgZsO8ciBVcGxvYWRlciBDb250cm9sXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1VwbG9hZEJhc2U8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzOiBzdHJpbmcgPSAnKic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYXV0b3VwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF1c2llcmVuIHZvbiBVcGxvYWRzIGVybGF1YmVuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFQSSBFbmRwb2ludFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFNldHRpbmdzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdmaWxlcycsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFVwbG9hZHhTZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxpbmcgdm9uIG5ldWVuIEZpbGVzIGltIElucHV0IENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIG1heGZpbGVzaXplOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhbiBlcnJvciBpcyB0cmlnZ2VyZWQgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcclxuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXHJcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXHJcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxyXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9ICcqJztcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdGhpcy5fYXV0b3VwbG9hZDtcclxuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IChmOiBGaWxlKSA9PiAoe1xyXG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKCk7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xyXG5cclxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PiB0aGlzLm9uVXBsb2FkKHVmaWxlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciBjb250aW5vdXMgYnV0dG9uc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvbkRlbGV0ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgdXBsb2FkIGJ1dHRvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRVcGxvYWRJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgYWxsb3dlZHR5cGVzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2FsbG93ZWR0eXBlcyA9IHR5cGVzO1xyXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlcyBuYWNoIGRlciBBdXN3YWhsIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBhdXRvdXBsb2FkKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGVuYWJsZXBhdXNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9lbmFibGVwYXVzZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kcG9pbnQgPSB2O1xyXG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0b2tlbih2OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xyXG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZpbGUgRmlsZSBkYXMgaGluenVnZWbDvGd0IHd1cmRlLlxyXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IEN1c3RvbUFkZFZhbGlkYXRpb24oZmlsZTogVXBsb2FkU3RhdGUpOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBkZXIgRGF0ZWkgZGllIEhvY2hnZWxhZGVuIHdpcmRcclxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRmlsZW5hbWUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcclxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxyXG4gICAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XHJcbiAgICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXHJcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxyXG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xyXG4gICAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FuY2VsIHNpbmdsZSB1cGxvYWRcclxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FuY2VsKHVwbG9hZElkKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJGbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModGhpcy5fYWxsb3dlZHR5cGVzKTtcclxuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcclxuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIEV2ZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xyXG5cclxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKHVmaWxlLnVwbG9hZElkKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9FWFRFTlNJT04nKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogdWZpbGUuc2l6ZSxcclxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxyXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdXNlIGFsbCBVcGxvYWRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGJlYXJlciB0b2tlbiBpbiB0aGUgdXBsb2FkIHNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIFVwbG9hZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnLCB1cGxvYWRJZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRBbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJVXBsb2FkQ29udHJvbCkudXBsb2FkZWRmaWxlY291bnQgPSB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xyXG5cclxuICAgICAgICBleHRlbnNpb25zLmZvckVhY2goKGl0bSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWF4ZmlsZXNpemUgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2FjY2VwdCcsIHR5cGVzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSB0eXBlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxyXG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcblxyXG4vKipcclxuICogS2xhc3NlIGbDvHIgZGVuIFVwbG9hZCBlaW5lciBEYXRlaSBpbiBkZXIgVXBsb2FkIENvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEb2N1bWVudCBJRFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0ZWluYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgU3RhdHVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwbG9hZCBJRFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogS29uc3RydWt0b3JcclxuICAgICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkSWQgPSB1ZmlsZS51cGxvYWRJZDtcclxuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcclxuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcbn1cclxuXHJcbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xyXG4iXSwibWFwcGluZ3MiOiI4anBEQTZJSTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0F6SUosT0FBU0Usd0JBQXdCLENBQUVDLDhCQUE4QixLQUFRLGFBQWEsQ0FDdEYsT0FBU0MsdUJBQXVCLENBQUVDLDZCQUE2QixLQUFRLHNDQUFzQyxDQUM3RyxPQUFTQyxVQUFVLEtBQVEsZUFBZSxDQUMxQyxPQUFTQyxtQkFBbUIsS0FBUSxvQkFBb0IsQ0FDeEQsT0FDSUMsU0FBUyxDQUVUQyxZQUFZLENBRVpDLEtBQUssQ0FJ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
|
|
145
|
+
*/constructor(ufile){cov_2j8zwflweb().f[51]++;cov_2j8zwflweb().s[141]++;this.uploadId=ufile.uploadId;cov_2j8zwflweb().s[142]++;this.name=ufile.name;cov_2j8zwflweb().s[143]++;this.progress=ufile.progress;cov_2j8zwflweb().s[144]++;this.status=ufile.status;cov_2j8zwflweb().s[145]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQU9ILGNBQWMsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRXRDLDJCQUEyQjtBQUUzQjs7R0FFRztBQUNILE1BQ3NCLGFBQXFCLFNBQVEsbUJBQTBCO0lBb0d6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbEgxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ0ssaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFckM7O1dB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LGdDQUFnQztzQkFEdEMsS0FBSztnQkFnR0ssWUFBWTtzQkFEdEIsS0FBSztnQkFjSyxVQUFVO3NCQURwQixLQUFLO2dCQWVLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFpQkssS0FBSztzQkFEZixLQUFLOztBQW9VVjs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBNEJ0Qix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQVksS0FBa0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIElkU2VydmljZSxcbiAgICBVUExPQURYX0FKQVgsXG4gICAgVVBMT0FEWF9GQUNUT1JZX09QVElPTlMsXG4gICAgVVBMT0FEWF9PUFRJT05TLFxuICAgIFVwbG9hZFN0YXRlLFxuICAgIFVwbG9hZHhPcHRpb25zLFxuICAgIFVwbG9hZHhTZXJ2aWNlLFxufSBmcm9tICduZ3gtdXBsb2FkeCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuLyoqXG4gKiBCYXNlIEtsYXNzZSBmw7xyIFVwbG9hZGVyIENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcblxuICAgIC8qKlxuICAgICAqIEZpbGVzIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2F1dG91cGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBhdXNpZXJlbiB2b24gVXBsb2FkcyBlcmxhdWJlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFQSSBFbmRwb2ludFxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGluZyB2b24gbmV1ZW4gRmlsZXMgaW0gSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZsO8ciBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0ZW5lckZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBsbmdSZXNvdXJjZVNlcnZpY2U6IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogTWF4LiBEYXRlaWdyw7Zzc2UgZsO8ciBGaWxlcyBkaWUgaG9jaGdlbGFkZW4gd2VyZGVuIGvDtm5uZW4uIDAgZGVha3RpdmllcnQgZGVuIEZpbHRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhmaWxlc2l6ZTogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGluIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbmZpbGVlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhIGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgZm9yIG11bHRpcGxlIHVwbG9hZHMgcGVyIGZpbGUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9udXBsb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSB2b24gVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRzOiBTYWNVcGxvYWRGaWxlW107XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSByZW5kZXJlciBhbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAgICAgKiBAcGFyYW0gbmdab25lIG5nem9uZSBmb3IgaGFuZGxpbmcgZXh0ZXJuYWwgc2NyaXB0c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIG5ldyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UoKSk7XG5cbiAgICAgICAgdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBTQUNMT0NBTElTQVRJT05fU0VSVklDRSxcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudXBsb2FkcyA9IFtdO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSAnKic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9ICdzb21ldG9rZW4nO1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgICAgIHRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2h1bmtTaXplID0gMTAyNCAqIDE2ICogODtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSAoZjogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJzogYGZpbGVuYW1lPSR7ZW5jb2RlVVJJKGYubmFtZSl9YCxcbiAgICAgICAgfSk7XG5cbiAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKCk7XG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmluaXQodGhpcy5vcHRpb25zKTtcblxuICAgICAgICAvLyBTdWJzY3JpcGUgRXZlbnQgZm9yIFN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoKHVmaWxlOiBVcGxvYWRTdGF0ZSkgPT4gdGhpcy5vblVwbG9hZCh1ZmlsZSkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBJY29uIGZvciBicm93c2UgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudEJyb3dzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgY29udGlub3VzIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Db250aW51ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRDb250aW51ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgZGVsZXRlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25EZWxldGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBwYXVzZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uUGF1c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHVwbG9hZCBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50VXBsb2FkSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWR0eXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW4gZsO8ciBkZW4gVXBsb2FkLiBGb3JtYXQ6IFwiLnh4eCwueXl5LC56enpcIlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhbGxvd2VkdHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hbGxvd2VkdHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModHlwZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b3VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG91cGxvYWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsZXMgbmFjaCBkZXIgQXVzd2FobCBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYXV0b3VwbG9hZCh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG91cGxvYWQgPSB2O1xuICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b1VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmFibGVwYXVzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZXBhdXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZHMga8O2bm5lbiB1bnRlcmJyb2NoZW4gd2VyZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuYWJsZXBhdXNlKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlcGF1c2UgPSB2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkZW4gUmVnaXN0cmF0aW9uIEVuZHBvaW50IGbDvHIgVXBsb2Fkcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5kcG9pbnQodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VuZHBvaW50ID0gdjtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9rZW4odjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl90b2tlbiA9IHY7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSBrYW5uIGbDvHIgQ29udHJvbHMgdmVyd2VuZGV0IHdlcmRlbiwgenVzw6R0emxpY2hlIFZhbGlkaWVydW5nZW4gYmVpIGhpbnp1ZsO8Z2VuIGRlciBGaWxlcyB6dSBtYWNoZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIEZpbGUgZGFzIGhpbnp1Z2Vmw7xndCB3dXJkZS5cbiAgICAgKiBAcmV0dXJucyBWYWxkaWVydW5nIGlzdCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBDdXN0b21BZGRWYWxpZGF0aW9uKGZpbGU6IFVwbG9hZFN0YXRlKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgZGVyIERhdGVpIGRpZSBIb2NoZ2VsYWRlbiB3aXJkXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBkZXMgRGF0ZWluYW1lbnMuXG4gICAgICovXG4gICAgcHVibGljIEZpbGVuYW1lKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2Fkc1swXS5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWROb0ZpbGVzU2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBRdWV1ZSBFbGVtZW50ZSBiZWluaGFsdGV0XG4gICAgICogQHJldHVybnMgRWxlbWVudGUgaW4gZGVyIFF1ZXVlXG4gICAgICovXG4gICAgcHVibGljIEhhc1F1ZXVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgZWluIFVwbG9hZCBhYmdlc2NobG9zc2VuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBlcmZvbGdyZWljaFxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNTdWNjZXNzVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgIT09ICdjb21wbGV0ZScpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIHBhdXNpZXJ0XG4gICAgICogQHJldHVybnMgUGF1c2llcnRlciBVcGxvYWQgaXN0IHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1BhdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGluIGRlciBRdWV1ZSBFbGVtZW50ZSBkaWUgenVtIFVwbG9hZCBiZXJlaXQgc2luZCB2b3JoYW5kZW4gc2luZC5cbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBmw7xyIFVwbG9hZCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNTdGF0ZVRvVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnYWRkZWQnIHx8IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBlaW4gVXBsb2FkIGVpbmVzIEZpbGVzIGFtIGxhdWZlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgaXN0IGFtIGxhdWZlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1VwbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ3VwbG9hZGluZycpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBkZW4gVXBsb2FkZm9ydHNjaHJpdHQgenVyw7xja1xuICAgICAqIEByZXR1cm5zIFVwbG9hZCBGb3J0c2Nocml0dC4gV2VydCB2b24gMC0xMDBcbiAgICAgKi9cbiAgICBwdWJsaWMgUHJvZ3Jlc3MoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzWzBdLnByb2dyZXNzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIHdlbGNoZSBkaWUgVXBsb2FkIElEJ3MgaW4gZGFzIE1vZGVsIHNldHp0IG9kZXIgbMO2c2NodFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgVHlwZSB2b24gRmlsZSBJRCdzXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IFNldFVwbG9hZFZhbHVlKGZpbGU6IFVwbG9hZFN0YXRlKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBzaW5nbGUgdXBsb2FkXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gY2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcsIHVwbG9hZElkOiB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYWxsIFVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSGFzUXVldWVJdGVtKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgZGVzIENvbnRyb2xzXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5saXN0ZW5lckZuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2llcnQgZGFzIENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIEluaXQgRXZlbnQgTGlzdGVuZXIgZm9yIElucHV0IEZpbGUgQ29udHJvbCBhbmQgSGFuZGxpbmcgRmlsZXNcbiAgICAgICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHRoaXMuX2FsbG93ZWR0eXBlcyk7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodGhpcy5fZW5kcG9pbnQpO1xuICAgICAgICB0aGlzLnNldFRva2VuKHRoaXMuX3Rva2VuKTtcblxuICAgICAgICBpZiAodGhpcy5fZW5kcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kcG9pbnQgaXMgbm90IGRlZmluZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBFdmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZHNPdXRTdHJlYW0gVXBsb2FkIEl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgb25VcGxvYWQodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cGxvYWRzLmZpbmRJbmRleCgoZikgPT4gZi51cGxvYWRJZCA9PT0gdWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgKHVmaWxlLnN0YXR1cyA9PT0gJ3F1ZXVlJyAmJiBpbmRleCA8IDApKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLkN1c3RvbUFkZFZhbGlkYXRpb24odWZpbGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMucHVzaChuZXcgU2FjVXBsb2FkRmlsZSh1ZmlsZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCh1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRVhURU5TSU9OJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0ZpbGVTaXplVmFsaWQodWZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0ZJTEVTSVpFJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIHRoaXMuU2V0VXBsb2FkVmFsdWUodWZpbGUpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZTogSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB1ZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IHVmaWxlLnNpemUsXG4gICAgICAgICAgICAgICAgdXBsb2FkaWQ6IHRoaXMudXBsb2Fkc1tpbmRleF0udXBsb2FkSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9udXBsb2FkY29tcGxldGUuZW1pdCh1cGxvYWRTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuVXBkYXRlRmlsZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIFNpbmdsZSBGaWxlXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gQ2FuY2VsXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXVzZSBhbGwgVXBsb2Fkc1xuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNVcGxvYWRpbmcoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiZWFyZXIgdG9rZW4gaW4gdGhlIHVwbG9hZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIHNldFRva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNpbmdsZSBGaWxlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBVcGxvYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGFsbCBxdWV1ZWQgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRpZXJ0IGRhcyBVcGxvYWQgQ29udHJvbFxuICAgICAqIEBwYXJhbSBjIENvbnRyb2wgZGFzIHZhbGlkaWVydCB3ZXJkZW4gc29sbFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkKShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgcHJpdmF0ZSBVcGRhdGVGaWxlQ291bnQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSVVwbG9hZENvbnRyb2wpLnVwbG9hZGVkZmlsZWNvdW50ID0gdGhpcy5VcGxvYWRlZEZpbGVDb3VudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVwbG9hZGVkIGZpbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBVcGxvYWRlZEZpbGVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAnY29tcGxldGUnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRpZSBEYXRlaWVyd2VpdGVydW5nIGfDvGx0aWcgaXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZW5hbWUgRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0V4dGVuc2lvblZhbGlkKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWR0eXBlcyA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gdGhpcy5fYWxsb3dlZHR5cGVzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgZXh0ZW5zaW9ucy5mb3JFYWNoKChpdG0pID0+IHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGl0bS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGFzIEZpbGUgbmljaHQgenUgZ3Jvc3MgaXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzaXplIE1heCBGaWxlIFNpemUgaW4gQnl0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRmlsZVNpemVWYWxpZChmaWxlc2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heGZpbGVzaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1heGZpbGVzaXplID49IGZpbGVzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRpZSBlcmxhdWJ0ZW4gRGF0ZW50eXBlbiBmw7xyIGRlbiBVcGxvYWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlcyBFcmxhdWJ0ZSBGaWxlIEV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbG93ZWRUeXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIC8vIFByw7xmZW4gVXBsb2FkSW5wdXQgYmVyZWl0cyBnZWxhZGVuLCBpc3QgTlVMTCB3ZW5uIEV4dGVuc2lvbiBpbSBNYXJrdXAgbmFjaCBOZ01vZGVsIGdlc2V0enQgd2lyZC5cbiAgICAgICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgJiYgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdhY2NlcHQnLCB0eXBlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGVuIFVwbG9hZCBFbmRwb2l0XG4gICAgICogQHBhcmFtIHVybCBSZWdpc3RlciBVUklcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVuZHBvaW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5lbmRwb2ludCA9IHVybDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuXG4vKipcbiAqIEtsYXNzZSBmw7xyIGRlbiBVcGxvYWQgZWluZXIgRGF0ZWkgaW4gZGVyIFVwbG9hZCBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZEZpbGUge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogRG9jdW1lbnQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZWluYW1lXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBGb3J0c2Nocml0dFxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9ncmVzczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0dXM6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRJZDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gdWZpbGUgVXBsb2FkIFN0YXR1c1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICB0aGlzLnVwbG9hZElkID0gdWZpbGUudXBsb2FkSWQ7XG4gICAgICAgIHRoaXMubmFtZSA9IHVmaWxlLm5hbWU7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRpZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmo4endmbHdlYiIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJVcGxvYWR4U2VydmljZSIsIm9mIiwiU2FjVXBsb2FkQmFzZSIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwicmVuZGVyZXIiLCJuZ1pvbmUiLCJmIiwicyIsIl9hbGxvd2VkdHlwZXMiLCJfYXV0b3VwbG9hZCIsIl9lbmFibGVwYXVzZSIsIl9lbmRwb2ludCIsIl90b2tlbiIsIm9wdGlvbnMiLCJmaWxlTGlzdGVuZXIiLCJ1cGxvYWRJbnB1dCIsIm5hdGl2ZUVsZW1lbnQiLCJmaWxlcyIsImIiLCJ1cGxvYWRTZXJ2aWNlIiwiaGFuZGxlRmlsZXMiLCJpc3JlcXVpcmVkIiwibWF4ZmlsZXNpemUiLCJvbmZpbGVlcnJvciIsIm9udXBsb2FkY29tcGxldGUiLCJ2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkIiwidmFsaWRhdGlvbktleVNlcnZpY2UiLCJWYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCIsInZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkIiwiVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkIiwiZ2V0IiwibG5nUmVzb3VyY2VTZXJ2aWNlIiwidXBsb2FkcyIsImFsbG93ZWRUeXBlcyIsImNvbmN1cnJlbmN5IiwidG9rZW4iLCJhdXRvVXBsb2FkIiwid2l0aENyZWRlbnRpYWxzIiwiY2h1bmtTaXplIiwiaGVhZGVycyIsImVuY29kZVVSSSIsIm5hbWUiLCJpbml0IiwiZXZlbnRzIiwic3Vic2NyaWJlIiwidWZpbGUiLCJvblVwbG9hZCIsIkljb25Ccm93c2UiLCJpY29uU2VydmljZSIsIlVwbG9hZENvbXBvbmVudEJyb3dzZUljb24iLCJJY29uQ29udGludWUiLCJVcGxvYWRDb21wb25lbnRDb250aW51ZUljb24iLCJJY29uRGVsZXRlIiwiVXBsb2FkQ29tcG9uZW50RGVsZXRlSWNvbiIsIkljb25QYXVzZSIsIlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbiIsIkljb25VcGxvYWQiLCJVcGxvYWRDb21wb25lbnRVcGxvYWRJY29uIiwiYWxsb3dlZHR5cGVzIiwidHlwZXMiLCJzZXRBbGxvd2VkVHlwZXMiLCJhdXRvdXBsb2FkIiwidiIsImNvbm5lY3QiLCJlbmFibGVwYXVzZSIsImVuZHBvaW50Iiwic2V0RW5kcG9pbnQiLCJzZXRUb2tlbiIsIkZpbGVuYW1lIiwibGVuZ3RoIiwiR2V0U3RyaW5nIiwiVXBsb2FkTm9GaWxlc1NlbGVjdGVkIiwiSGFzUXVldWVJdGVtIiwiSGFzU3VjY2Vzc1VwbG9hZCIsImZpbHRlciIsIml0bSIsInN0YXR1cyIsIklzUGF1c2VkIiwiSXNTdGF0ZVRvVXBsb2FkIiwiSXNVcGxvYWRpbmciLCJQcm9ncmVzcyIsInByb2dyZXNzIiwiY2FuY2VsIiwidXBsb2FkSWQiLCJjb250cm9sIiwiYWN0aW9uIiwiY2FuY2VsQWxsIiwibmdPbkRlc3Ryb3kiLCJsaXN0ZW5lckZuIiwibmdPbkluaXQiLCJsaXN0ZW4iLCJFcnJvciIsImluZGV4IiwiZmluZEluZGV4IiwiaXNFeHRlbnNpb25WYWxpZCIsImlzRmlsZVNpemVWYWxpZCIsInNpemUiLCJDdXN0b21BZGRWYWxpZGF0aW9uIiwicHVzaCIsIlNhY1VwbG9hZEZpbGUiLCJlbWl0Iiwic3BsaWNlIiwiU2V0VXBsb2FkVmFsdWUiLCJ1cGxvYWRTdGF0ZSIsInVwbG9hZGlkIiwiVXBkYXRlRmlsZUNvdW50IiwicGF1c2UiLCJwYXVzZUFsbCIsInZhbHVlIiwidXBsb2FkIiwidXBsb2FkQWxsIiwidmFsaWRhdGVEYXRhIiwiYyIsImVycm9yIiwicmVxdWlyZWQiLCJuZ0NvbnRyb2wiLCJ1cGxvYWRlZGZpbGVjb3VudCIsIlVwbG9hZGVkRmlsZUNvdW50IiwiZmlsZW5hbWUiLCJpc1ZhbGlkIiwiZXh0ZW5zaW9ucyIsInNwbGl0IiwiZm9yRWFjaCIsInRvTG93ZXJDYXNlIiwiZW5kc1dpdGgiLCJmaWxlc2l6ZSIsInNldEF0dHJpYnV0ZSIsInVybCIsImRlcHMiLCJpMSIsIlNhY0Zvcm1MYXlvdXRDb21tb24iLCJpMCIsIkluamVjdG9yIiwiUmVuZGVyZXIyIiwiTmdab25lIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJvdXRwdXRzIiwidmlld1F1ZXJpZXMiLCJwcm9wZXJ0eU5hbWUiLCJmaXJzdCIsInByZWRpY2F0ZSIsImRlc2NlbmRhbnRzIiwic3RhdGljIiwidXNlc0luaGVyaXRhbmNlIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIiwiZG9jdW1lbnRpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNldXBsb2FkY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xuaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcbmltcG9ydCB7IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUnO1xuaW1wb3J0IHsgSVVwbG9hZENvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l1cGxvYWRjb250cm9sJztcbmltcG9ydCB7IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuL2Jhc2Vtb2RlbGNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJZFNlcnZpY2UsXG4gICAgVVBMT0FEWF9BSkFYLFxuICAgIFVQTE9BRFhfRkFDVE9SWV9PUFRJT05TLFxuICAgIFVQTE9BRFhfT1BUSU9OUyxcbiAgICBVcGxvYWRTdGF0ZSxcbiAgICBVcGxvYWR4T3B0aW9ucyxcbiAgICBVcGxvYWR4U2VydmljZSxcbn0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBVcGxvYWRlciBDb250cm9sXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1VwbG9hZEJhc2U8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzOiBzdHJpbmcgPSAnKic7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXVzaWVyZW4gdm9uIFVwbG9hZHMgZXJsYXViZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmFibGVwYXVzZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBUEkgRW5kcG9pbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIF90b2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2V0dGluZ3NcbiAgICAgKi9cbiAgICBwcml2YXRlIG9wdGlvbnM6IFVwbG9hZHhPcHRpb25zID0ge307XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdmaWxlcycsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSB1cGxvYWRJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFVwbG9hZHhTZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxpbmcgdm9uIG5ldWVuIEZpbGVzIGltIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZXModGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGbDvHIgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25maWxlZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIGZvciBtdWx0aXBsZSB1cGxvYWRzIHBlciBmaWxlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbnVwbG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgdm9uIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gICAgICogQHBhcmFtIG5nWm9uZSBuZ3pvbmUgZm9yIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKCkpO1xuXG4gICAgICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gJyonO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSAnc29tZXRva2VuJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB0aGlzLl9hdXRvdXBsb2FkO1xuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmNodW5rU2l6ZSA9IDEwMjQgKiAxNiAqIDg7XG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKGY6IEZpbGUpID0+ICh7XG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXG4gICAgICAgIH0pO1xuXG4gICAgLy8gSW5pdCBuZXcgU2VydmljZSBJbnN0YW5jZVxuICAgIHRoaXMudXBsb2FkU2VydmljZSA9IG5ldyBVcGxvYWR4U2VydmljZSgpO1xuICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKCh1ZmlsZTogVXBsb2FkU3RhdGUpID0+IHRoaXMub25VcGxvYWQodWZpbGUpKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBmb3IgYnJvd3NlIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGNvbnRpbm91cyBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQ29udGludWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uRGVsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgcGF1c2UgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciB1cGxvYWQgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uVXBsb2FkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhbGxvd2VkdHlwZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuIGbDvHIgZGVuIFVwbG9hZC4gRm9ybWF0OiBcIi54eHgsLnl5eSwuenp6XCJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWxsb3dlZHR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dlZHR5cGVzID0gdHlwZXM7XG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB2O1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGvDtm5uZW4gdW50ZXJicm9jaGVuIHdlcmRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmFibGVwYXVzZSh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZXBhdXNlID0gdjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGVuIFJlZ2lzdHJhdGlvbiBFbmRwb2ludCBmw7xyIFVwbG9hZHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuZHBvaW50KHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbmRwb2ludCA9IHY7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGUuXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxuICAgICAqL1xuICAgIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgUXVldWUgRWxlbWVudGUgYmVpbmhhbHRldFxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNRdWV1ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIGVpbiBVcGxvYWQgYWJnZXNjaGxvc3NlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBwYXVzaWVydFxuICAgICAqIEByZXR1cm5zIFBhdXNpZXJ0ZXIgVXBsb2FkIGlzdCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgZsO8ciBVcGxvYWQgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBlaW5lcyBGaWxlcyBhbSBsYXVmZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgZGVuIFVwbG9hZGZvcnRzY2hyaXR0IHp1csO8Y2tcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgRm9ydHNjaHJpdHQuIFdlcnQgdm9uIDAtMTAwXG4gICAgICovXG4gICAgcHVibGljIFByb2dyZXNzKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSB3ZWxjaGUgZGllIFVwbG9hZCBJRCdzIGluIGRhcyBNb2RlbCBzZXR6dCBvZGVyIGzDtnNjaHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBTZXRVcGxvYWRWYWx1ZShmaWxlOiBVcGxvYWRTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgc2luZ2xlIHVwbG9hZFxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGFsbCBVcGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95IGRlcyBDb250cm9sc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXNpZXJ0IGRhcyBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBJbml0IEV2ZW50IExpc3RlbmVyIGZvciBJbnB1dCBGaWxlIENvbnRyb2wgYW5kIEhhbmRsaW5nIEZpbGVzXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0aGlzLl9hbGxvd2VkdHlwZXMpO1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih0aGlzLl90b2tlbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZHBvaW50IGlzIG5vdCBkZWZpbmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRzT3V0U3RyZWFtIFVwbG9hZCBJdGVtXG4gICAgICovXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudXBsb2Fkcy5maW5kSW5kZXgoKGYpID0+IGYudXBsb2FkSWQgPT09IHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5DdXN0b21BZGRWYWxpZGF0aW9uKHVmaWxlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwodWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0VYVEVOU0lPTicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcblxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdWZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiB1ZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLlVwZGF0ZUZpbGVDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF1c2UgYWxsIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2VBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzVXBsb2FkaW5nKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmVhcmVyIHRva2VuIGluIHRoZSB1cGxvYWQgc2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRUb2tlbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gVXBsb2FkXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkaWUgRGF0ZWllcndlaXRlcnVuZyBnw7xsdGlnIGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlc2l6ZSBNYXggRmlsZSBTaXplIGluIEJ5dGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplVmFsaWQoZmlsZXNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkaWUgZXJsYXVidGVuIERhdGVudHlwZW4gZsO8ciBkZW4gVXBsb2FkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBbGxvd2VkVHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLyoqXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRGaWxlIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIERvY3VtZW50IElEXG4gICAgICovXG4gICAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZ3Jlc3M6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIEtvbnN0cnVrdG9yXG4gICAgICogQHBhcmFtIHVmaWxlIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl0sIm1hcHBpbmdzIjoia3ptREE2SUk7QUFBQUEsY0FBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxjQUFBLEdBeklKLE9BQVNFLHdCQUF3QixDQUFFQyw4QkFBOEIsS0FBUSxhQUFhLENBQ3RGLE9BQVNDLHVCQUF1QixDQUFFQyw2QkFBNkIsS0FBUSxzQ0FBc0MsQ0FDN0csT0FBU0MsVUFBVSxLQUFRLGVBQWUsQ0FDMUMsT0FBU0MsbUJBQW1CLEtBQVEsb0JBQW9CLENBQ3hELE9BQ0lDLFNBQVMsQ0FFVEMsWUFBWSxDQUVaQyxLQUFLLENBSUxDLE1BQU0sQ0FFTkMsU0FBUyxLQUNOLGVBQWUsQ0FFdEIsT0FPSUMsY0FBYyxLQUNYLGFBQWEsQ0FDcEIsT0FBcUJDLEVBQUUsS0FBUSxNQUFNLEMsa0ZBRXJDO0FBRUE7O0dBR0EsS0FDc0IsQ0FBQUMsYUFBcUIsUUFBUSxDQUFBUixtQkFBMEIsQ0FvR3pFO0FBRUE7QUFFQTs7Ozs7O09BT0FTLFlBQ0lDLFVBQStCLENBQy9CQyxRQUFrQixDQUNWQyxRQUFtQixDQUNuQkMsTUFBYyxFQUFBcEIsY0FBQSxHQUFBcUIsQ0FBQSxNQUFBckIsY0FBQSxHQUFBc0IsQ0FBQSxNQUV0QixLQUFLLENBQUNMLFVBQVUsQ0FBRUMsUUFBUSxDQUFDLENBQUNsQixjQUFBLEdBQUFzQixDQUFBLE1BSHBCLEtBQUFILFFBQVEsQ0FBUkEsUUFBUSxDQUFXbkIsY0FBQSxHQUFBc0IsQ0FBQSxNQUNuQixLQUFBRixNQUFNLENBQU5BLE1BQU0sQ0FsSGxCO0FBRUE7O1dB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
|