@adlfe/campaign-management-library 2.11.1 → 2.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/adlfe-campaign-management-library.d.ts +14 -9
  2. package/adlfe-campaign-management-library.metadata.json +1 -1
  3. package/bundles/adlfe-campaign-management-library.umd.js +372 -109
  4. package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
  5. package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
  6. package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
  7. package/esm2015/adlfe-campaign-management-library.js +15 -10
  8. package/esm2015/environments/environment.js +3 -3
  9. package/esm2015/lib/campaign-management/campaign-management.module.js +4 -2
  10. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.component.js +113 -0
  11. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.module.js +18 -0
  12. package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
  13. package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  14. package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +45 -43
  15. package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +64 -5
  16. package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  17. package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
  18. package/esm2015/lib/campaign-management/validators/index.js +12 -0
  19. package/esm2015/lib/campaign-management/validators/max.validator.js +14 -0
  20. package/esm2015/lib/campaign-management/validators/min.validator.js +14 -0
  21. package/esm2015/lib/campaign-management/validators/required.validator.js +10 -0
  22. package/esm2015/lib/core/const/constants.const.js +6 -6
  23. package/esm2015/lib/core/const/validation-message.const.js +5 -2
  24. package/esm2015/public-api.js +1 -6
  25. package/esm5/adlfe-campaign-management-library.js +15 -10
  26. package/esm5/environments/environment.js +3 -3
  27. package/esm5/lib/campaign-management/campaign-management.module.js +4 -2
  28. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.component.js +127 -0
  29. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.module.js +21 -0
  30. package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
  31. package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  32. package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +44 -40
  33. package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +68 -5
  34. package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  35. package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
  36. package/esm5/lib/campaign-management/validators/index.js +12 -0
  37. package/esm5/lib/campaign-management/validators/max.validator.js +14 -0
  38. package/esm5/lib/campaign-management/validators/min.validator.js +14 -0
  39. package/esm5/lib/campaign-management/validators/required.validator.js +10 -0
  40. package/esm5/lib/core/const/constants.const.js +6 -6
  41. package/esm5/lib/core/const/validation-message.const.js +5 -2
  42. package/esm5/public-api.js +1 -6
  43. package/fesm2015/adlfe-campaign-management-library.js +419 -179
  44. package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
  45. package/fesm5/adlfe-campaign-management-library.js +439 -176
  46. package/fesm5/adlfe-campaign-management-library.js.map +1 -1
  47. package/lib/campaign-management/components/input-numeric/input-numeric.component.d.ts +30 -0
  48. package/lib/campaign-management/components/input-numeric/input-numeric.module.d.ts +2 -0
  49. package/lib/campaign-management/models/general-information-wa-req.model.d.ts +3 -0
  50. package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +7 -0
  51. package/lib/campaign-management/validators/index.d.ts +8 -0
  52. package/lib/campaign-management/validators/max.validator.d.ts +2 -0
  53. package/lib/campaign-management/validators/min.validator.d.ts +2 -0
  54. package/lib/campaign-management/validators/required.validator.d.ts +2 -0
  55. package/package.json +1 -1
  56. package/public-api.d.ts +0 -5
@@ -35,7 +35,7 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
35
35
  const subs = this.apiAdapterService
36
36
  .executeApiRequest([], `/campaign/${(_d = (_c = this.getCampaignStorage) === null || _c === void 0 ? void 0 : _c.generalInformation) === null || _d === void 0 ? void 0 : _d.id}`, 'GET')
37
37
  .subscribe((resp) => {
38
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60;
38
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67;
39
39
  if (!resp)
40
40
  return;
41
41
  const generalInformation = {
@@ -43,63 +43,65 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
43
43
  medium: (_b = resp.data) === null || _b === void 0 ? void 0 : _b.platform,
44
44
  channel: ['image', 'video', 'document'].includes((_c = resp.data) === null || _c === void 0 ? void 0 : _c.type)
45
45
  ? 'MEDIA'
46
- : (_e = (_d = resp.data) === null || _d === void 0 ? void 0 : _d.type) === null || _e === void 0 ? void 0 : _e.toUpperCase(),
47
- media: (_g = (_f = resp.data) === null || _f === void 0 ? void 0 : _f.type) === null || _g === void 0 ? void 0 : _g.toUpperCase(),
46
+ : ((_d = resp.data) === null || _d === void 0 ? void 0 : _d.isDirectSend) ? 'utility'
47
+ : (_f = (_e = resp.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.toUpperCase(),
48
+ media: (_h = (_g = resp.data) === null || _g === void 0 ? void 0 : _g.type) === null || _h === void 0 ? void 0 : _h.toUpperCase(),
49
+ isPrevTemplate: (_k = (_j = resp) === null || _j === void 0 ? void 0 : _j.data) === null || _k === void 0 ? void 0 : _k.isPrevTemplate,
50
+ templateName: (_m = (_l = resp) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.templateName,
51
+ ttl: (_p = (_o = resp) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.ttlSeconds,
48
52
  from: {
49
- id: (_h = resp.data) === null || _h === void 0 ? void 0 : _h.accountId,
50
- name: (_j = resp.data) === null || _j === void 0 ? void 0 : _j.accountName,
51
- platform: (_k = resp.data) === null || _k === void 0 ? void 0 : _k.platform,
52
- clientId: (_l = resp.data) === null || _l === void 0 ? void 0 : _l.clientId,
53
- clientName: (_m = resp.data) === null || _m === void 0 ? void 0 : _m.clientName,
54
- accountNo: (_o = resp.data) === null || _o === void 0 ? void 0 : _o.accountNo,
55
- wabaId: (_q = (_p = resp.data) === null || _p === void 0 ? void 0 : _p.wabaId, (_q !== null && _q !== void 0 ? _q : '')),
53
+ id: (_q = resp.data) === null || _q === void 0 ? void 0 : _q.accountId,
54
+ name: (_r = resp.data) === null || _r === void 0 ? void 0 : _r.accountName,
55
+ platform: (_s = resp.data) === null || _s === void 0 ? void 0 : _s.platform,
56
+ clientId: (_t = resp.data) === null || _t === void 0 ? void 0 : _t.clientId,
57
+ clientName: (_u = resp.data) === null || _u === void 0 ? void 0 : _u.clientName,
58
+ accountNo: (_v = resp.data) === null || _v === void 0 ? void 0 : _v.accountNo,
59
+ wabaId: (_x = (_w = resp.data) === null || _w === void 0 ? void 0 : _w.wabaId, (_x !== null && _x !== void 0 ? _x : '')),
56
60
  },
57
- text: (_s = (_r = resp.data) === null || _r === void 0 ? void 0 : _r.details) === null || _s === void 0 ? void 0 : _s.text,
58
- targetURL: (_4 = (_0 = (_w = (_v = (_u = (_t = resp.data) === null || _t === void 0 ? void 0 : _t.details) === null || _u === void 0 ? void 0 : _u.image) === null || _v === void 0 ? void 0 : _v.url, (_w !== null && _w !== void 0 ? _w : (_z = (_y = (_x = resp.data) === null || _x === void 0 ? void 0 : _x.details) === null || _y === void 0 ? void 0 : _y.document) === null || _z === void 0 ? void 0 : _z.url)), (_0 !== null && _0 !== void 0 ? _0 : (_3 = (_2 = (_1 = resp.data) === null || _1 === void 0 ? void 0 : _1.details) === null || _2 === void 0 ? void 0 : _2.video) === null || _3 === void 0 ? void 0 : _3.url)), (_4 !== null && _4 !== void 0 ? _4 : (_7 = (_6 = (_5 = resp.data) === null || _5 === void 0 ? void 0 : _5.details) === null || _6 === void 0 ? void 0 : _6.template) === null || _7 === void 0 ? void 0 : _7.headerURL)),
59
- paramHeader: (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.template) === null || _10 === void 0 ? void 0 : _10.header,
60
- paramBody: (_13 = (_12 = (_11 = resp.data) === null || _11 === void 0 ? void 0 : _11.details) === null || _12 === void 0 ? void 0 : _12.template) === null || _13 === void 0 ? void 0 : _13.data,
61
- paramButton: (_16 = (_15 = (_14 = resp.data) === null || _14 === void 0 ? void 0 : _14.details) === null || _15 === void 0 ? void 0 : _15.template) === null || _16 === void 0 ? void 0 : _16.button,
62
- otpValue: (_21 = [
63
- ...(_20 = (_19 = (_18 = (_17 = resp.data) === null || _17 === void 0 ? void 0 : _17.details) === null || _18 === void 0 ? void 0 : _18.template) === null || _19 === void 0 ? void 0 : _19.data, (_20 !== null && _20 !== void 0 ? _20 : [])),
64
- ]) === null || _21 === void 0 ? void 0 : _21.pop(),
61
+ text: (_z = (_y = resp.data) === null || _y === void 0 ? void 0 : _y.details) === null || _z === void 0 ? void 0 : _z.text,
62
+ targetURL: (_11 = (_7 = (_3 = (_2 = (_1 = (_0 = resp.data) === null || _0 === void 0 ? void 0 : _0.details) === null || _1 === void 0 ? void 0 : _1.image) === null || _2 === void 0 ? void 0 : _2.url, (_3 !== null && _3 !== void 0 ? _3 : (_6 = (_5 = (_4 = resp.data) === null || _4 === void 0 ? void 0 : _4.details) === null || _5 === void 0 ? void 0 : _5.document) === null || _6 === void 0 ? void 0 : _6.url)), (_7 !== null && _7 !== void 0 ? _7 : (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.video) === null || _10 === void 0 ? void 0 : _10.url)), (_11 !== null && _11 !== void 0 ? _11 : (_14 = (_13 = (_12 = resp.data) === null || _12 === void 0 ? void 0 : _12.details) === null || _13 === void 0 ? void 0 : _13.template) === null || _14 === void 0 ? void 0 : _14.headerURL)),
63
+ paramHeader: (_17 = (_16 = (_15 = resp.data) === null || _15 === void 0 ? void 0 : _15.details) === null || _16 === void 0 ? void 0 : _16.template) === null || _17 === void 0 ? void 0 : _17.header,
64
+ paramBody: (_20 = (_19 = (_18 = resp.data) === null || _18 === void 0 ? void 0 : _18.details) === null || _19 === void 0 ? void 0 : _19.template) === null || _20 === void 0 ? void 0 : _20.data,
65
+ paramButton: (_23 = (_22 = (_21 = resp.data) === null || _21 === void 0 ? void 0 : _21.details) === null || _22 === void 0 ? void 0 : _22.template) === null || _23 === void 0 ? void 0 : _23.button,
66
+ otpValue: (_28 = [...(_27 = (_26 = (_25 = (_24 = resp.data) === null || _24 === void 0 ? void 0 : _24.details) === null || _25 === void 0 ? void 0 : _25.template) === null || _26 === void 0 ? void 0 : _26.data, (_27 !== null && _27 !== void 0 ? _27 : []))]) === null || _28 === void 0 ? void 0 : _28.pop(),
65
67
  template: {
66
- ID: (_24 = (_23 = (_22 = resp.data) === null || _22 === void 0 ? void 0 : _22.details) === null || _23 === void 0 ? void 0 : _23.template) === null || _24 === void 0 ? void 0 : _24.id,
67
- name: (_27 = (_26 = (_25 = resp.data) === null || _25 === void 0 ? void 0 : _25.details) === null || _26 === void 0 ? void 0 : _26.template) === null || _27 === void 0 ? void 0 : _27.name,
68
- lang: (_30 = (_29 = (_28 = resp.data) === null || _28 === void 0 ? void 0 : _28.details) === null || _29 === void 0 ? void 0 : _29.template) === null || _30 === void 0 ? void 0 : _30.lang,
69
- platform: (_31 = resp.data) === null || _31 === void 0 ? void 0 : _31.platform,
70
- headerURL: (_34 = (_33 = (_32 = resp.data) === null || _32 === void 0 ? void 0 : _32.details) === null || _33 === void 0 ? void 0 : _33.template) === null || _34 === void 0 ? void 0 : _34.headerURL,
68
+ ID: (_31 = (_30 = (_29 = resp.data) === null || _29 === void 0 ? void 0 : _29.details) === null || _30 === void 0 ? void 0 : _30.template) === null || _31 === void 0 ? void 0 : _31.id,
69
+ name: (_34 = (_33 = (_32 = resp.data) === null || _32 === void 0 ? void 0 : _32.details) === null || _33 === void 0 ? void 0 : _33.template) === null || _34 === void 0 ? void 0 : _34.name,
70
+ lang: (_37 = (_36 = (_35 = resp.data) === null || _35 === void 0 ? void 0 : _35.details) === null || _36 === void 0 ? void 0 : _36.template) === null || _37 === void 0 ? void 0 : _37.lang,
71
+ platform: (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.platform,
72
+ headerURL: (_41 = (_40 = (_39 = resp.data) === null || _39 === void 0 ? void 0 : _39.details) === null || _40 === void 0 ? void 0 : _40.template) === null || _41 === void 0 ? void 0 : _41.headerURL,
71
73
  header: {
72
- examples: (_37 = (_36 = (_35 = resp.data) === null || _35 === void 0 ? void 0 : _35.details) === null || _36 === void 0 ? void 0 : _36.template) === null || _37 === void 0 ? void 0 : _37.header,
74
+ examples: (_44 = (_43 = (_42 = resp.data) === null || _42 === void 0 ? void 0 : _42.details) === null || _43 === void 0 ? void 0 : _43.template) === null || _44 === void 0 ? void 0 : _44.header,
73
75
  },
74
76
  body: {
75
- examples: (_40 = (_39 = (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.details) === null || _39 === void 0 ? void 0 : _39.template) === null || _40 === void 0 ? void 0 : _40.data,
77
+ examples: (_47 = (_46 = (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.details) === null || _46 === void 0 ? void 0 : _46.template) === null || _47 === void 0 ? void 0 : _47.data,
76
78
  },
77
- buttons: (_43 = (_42 = (_41 = resp.data) === null || _41 === void 0 ? void 0 : _41.details) === null || _42 === void 0 ? void 0 : _42.template) === null || _43 === void 0 ? void 0 : _43.button,
78
- ClientId: (_44 = resp.data) === null || _44 === void 0 ? void 0 : _44.clientId,
79
- ClientName: (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.clientName,
79
+ buttons: (_50 = (_49 = (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.details) === null || _49 === void 0 ? void 0 : _49.template) === null || _50 === void 0 ? void 0 : _50.button,
80
+ ClientId: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.clientId,
81
+ ClientName: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.clientName,
80
82
  },
81
- isUpload: ((_46 = resp.data) === null || _46 === void 0 ? void 0 : _46.fileId) !== '',
82
- fileId: (_47 = resp.data) === null || _47 === void 0 ? void 0 : _47.fileId,
83
+ isUpload: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.fileId) !== '',
84
+ fileId: (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.fileId,
83
85
  };
84
86
  localStorage.setItem('telin.campaign', JSON.stringify(Object.assign(Object.assign({}, this.getCampaignStorage), {
85
87
  generalInformation: {
86
- id: (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.id,
88
+ id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
87
89
  form: generalInformation,
88
90
  },
89
- failover: (_49 = resp.data) === null || _49 === void 0 ? void 0 : _49.failover,
90
- targetAudience: (_50 = resp.data) === null || _50 === void 0 ? void 0 : _50.targets,
91
+ failover: (_56 = resp.data) === null || _56 === void 0 ? void 0 : _56.failover,
92
+ targetAudience: (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.targets,
91
93
  targetAudienceFile: {
92
- name: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.fileName,
93
- targetURL: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.targetURL,
94
+ name: (_58 = resp.data) === null || _58 === void 0 ? void 0 : _58.fileName,
95
+ targetURL: (_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.targetURL,
94
96
  },
95
97
  scheduler: {
96
- schedulerType: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.scheduleType) === 'MULTI'
98
+ schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
97
99
  ? 'ONE_TIME'
98
- : (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.scheduleType,
99
- startDate: (_56 = (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.startTime) === null || _56 === void 0 ? void 0 : _56.split(' ')[0],
100
- startTime: (_58 = (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.startTime) === null || _58 === void 0 ? void 0 : _58.split(' ')[1],
101
- isRepeat: ((_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.scheduleType) === 'MULTI',
102
- delivery: (_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.repeat,
100
+ : (_61 = resp.data) === null || _61 === void 0 ? void 0 : _61.scheduleType,
101
+ startDate: (_63 = (_62 = resp.data) === null || _62 === void 0 ? void 0 : _62.startTime) === null || _63 === void 0 ? void 0 : _63.split(' ')[0],
102
+ startTime: (_65 = (_64 = resp.data) === null || _64 === void 0 ? void 0 : _64.startTime) === null || _65 === void 0 ? void 0 : _65.split(' ')[1],
103
+ isRepeat: ((_66 = resp.data) === null || _66 === void 0 ? void 0 : _66.scheduleType) === 'MULTI',
104
+ delivery: (_67 = resp.data) === null || _67 === void 0 ? void 0 : _67.repeat,
103
105
  },
104
106
  })));
105
107
  this.isLoading = false;
@@ -149,7 +151,7 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
149
151
  this.dialogRef.close();
150
152
  }
151
153
  ngOnDestroy() {
152
- this.subscribers.forEach(each => each.unsubscribe());
154
+ this.subscribers.forEach((each) => each.unsubscribe());
153
155
  }
154
156
  };
155
157
  PendingApprovalDialogViewComponent.ctorParameters = () => [
@@ -165,4 +167,4 @@ PendingApprovalDialogViewComponent = __decorate([
165
167
  })
166
168
  ], PendingApprovalDialogViewComponent);
167
169
  export { PendingApprovalDialogViewComponent };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9jYW1wYWlnbi1pbmRleC9kaWFsb2cvcGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy9wZW5kaW5nLWFwcHJvdmFsLWRpYWxvZy12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPeEUsSUFBYSxrQ0FBa0MsR0FBL0MsTUFBYSxrQ0FBa0M7SUFPOUMsWUFDUyxTQUEyRCxFQUMzRCxpQkFBMkMsRUFDM0MsTUFBcUI7UUFGckIsY0FBUyxHQUFULFNBQVMsQ0FBa0Q7UUFDM0Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVHZCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU3QixnQkFBVyxHQUFtQixFQUFFLENBQUM7SUFNdEMsQ0FBQztJQUVKLFFBQVE7O1FBQ1AsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLFlBQVkscUJBQ2hCLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsa0JBQWtCLDBDQUFFLFlBQVksdUNBQUksS0FBSyxFQUFBLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3JC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LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL21vZGVscy91dGlsL2FwaS1kdG8vcmVzcG9uc2UtbW9kZWxzJztcclxuaW1wb3J0IHsgQXBpQWRhcHRlclNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1wZW5kaW5nLWFwcHJvdmFsLWRpYWxvZy12aWV3JyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsRGlhbG9nVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGlzU3VibWl0OiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGlzU2hvd0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIHN1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UGVuZGluZ0FwcHJvdmFsRGlhbG9nVmlld0NvbXBvbmVudD4sXHJcblx0XHRwcml2YXRlIGFwaUFkYXB0ZXJTZXJ2aWNlOiBBcGlBZGFwdGVyU2VydmljZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZVxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmdldENhbXBhaWduRGV0YWlsU2VydmljZSgpO1xyXG5cclxuXHRcdHRoaXMuaXNTaG93QnV0dG9uID1cclxuXHRcdFx0dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaXNTaG93QnV0dG9uID8/IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0Z2V0IGdldENhbXBhaWduU3RvcmFnZSgpOiBhbnkge1xyXG5cdFx0cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpXHJcblx0XHRcdD8gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsaW4uY2FtcGFpZ24nKSlcclxuXHRcdFx0OiB7fTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29udmVydFVUQ0RhdGVUb0xvY2FsRGF0ZShkYXRlOiBEYXRlKSB7XHJcblx0XHRjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoXHJcblx0XHRcdGRhdGUuZ2V0VGltZSgpIC0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhbXBhaWduRGV0YWlsU2VydmljZSgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWQpIHJldHVybjtcclxuXHJcblx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuXHRcdFx0LmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG5cdFx0XHRcdFtdLFxyXG5cdFx0XHRcdGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH1gLFxyXG5cdFx0XHRcdCdHRVQnXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKCFyZXNwKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgZ2VuZXJhbEluZm9ybWF0aW9uID0ge1xyXG5cdFx0XHRcdFx0XHRjYW1wYWlnbk5hbWU6IHJlc3AuZGF0YT8ubmFtZSxcclxuXHRcdFx0XHRcdFx0bWVkaXVtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG5cdFx0XHRcdFx0XHRjaGFubmVsOiBbJ2ltYWdlJywgJ3ZpZGVvJywgJ2RvY3VtZW50J10uaW5jbHVkZXMoXHJcblx0XHRcdFx0XHRcdFx0cmVzcC5kYXRhPy50eXBlXHJcblx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQ/ICdNRURJQSdcclxuXHRcdFx0XHRcdFx0XHQ6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuXHRcdFx0XHRcdFx0bWVkaWE6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuXHRcdFx0XHRcdFx0ZnJvbToge1xyXG5cdFx0XHRcdFx0XHRcdGlkOiByZXNwLmRhdGE/LmFjY291bnRJZCxcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiByZXNwLmRhdGE/LmFjY291bnROYW1lLFxyXG5cdFx0XHRcdFx0XHRcdHBsYXRmb3JtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG5cdFx0XHRcdFx0XHRcdGNsaWVudElkOiByZXNwLmRhdGE/LmNsaWVudElkLFxyXG5cdFx0XHRcdFx0XHRcdGNsaWVudE5hbWU6IHJlc3AuZGF0YT8uY2xpZW50TmFtZSxcclxuXHRcdFx0XHRcdFx0XHRhY2NvdW50Tm86IHJlc3AuZGF0YT8uYWNjb3VudE5vLFxyXG5cdFx0XHRcdFx0XHRcdHdhYmFJZDogcmVzcC5kYXRhPy53YWJhSWQgPz8gJycsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdHRleHQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGV4dCxcclxuXHRcdFx0XHRcdFx0dGFyZ2V0VVJMOlxyXG5cdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uZGV0YWlscz8uaW1hZ2U/LnVybCA/P1xyXG5cdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uZGV0YWlscz8uZG9jdW1lbnQ/LnVybCA/P1xyXG5cdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uZGV0YWlscz8udmlkZW8/LnVybCA/P1xyXG5cdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlclVSTCxcclxuXHRcdFx0XHRcdFx0cGFyYW1IZWFkZXI6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlcixcclxuXHRcdFx0XHRcdFx0cGFyYW1Cb2R5OiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhLFxyXG5cdFx0XHRcdFx0XHRwYXJhbUJ1dHRvbjogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uYnV0dG9uLFxyXG5cdFx0XHRcdFx0XHRvdHBWYWx1ZTogW1xyXG5cdFx0XHRcdFx0XHRcdC4uLihyZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhID8/IFtdKSxcclxuXHRcdFx0XHRcdFx0XT8ucG9wKCksXHJcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiB7XHJcblx0XHRcdFx0XHRcdFx0SUQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmlkLFxyXG5cdFx0XHRcdFx0XHRcdG5hbWU6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/Lm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0bGFuZzogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8ubGFuZyxcclxuXHRcdFx0XHRcdFx0XHRwbGF0Zm9ybTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuXHRcdFx0XHRcdFx0XHRoZWFkZXJVUkw6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlclVSTCxcclxuXHRcdFx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0XHRcdGV4YW1wbGVzOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXIsXHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRib2R5OiB7XHJcblx0XHRcdFx0XHRcdFx0XHRleGFtcGxlczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uZGF0YSxcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdGJ1dHRvbnM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmJ1dHRvbixcclxuXHRcdFx0XHRcdFx0XHRDbGllbnRJZDogcmVzcC5kYXRhPy5jbGllbnRJZCxcclxuXHRcdFx0XHRcdFx0XHRDbGllbnROYW1lOiByZXNwLmRhdGE/LmNsaWVudE5hbWUsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGlzVXBsb2FkOiByZXNwLmRhdGE/LmZpbGVJZCAhPT0gJycsXHJcblx0XHRcdFx0XHRcdGZpbGVJZDogcmVzcC5kYXRhPy5maWxlSWQsXHJcblx0XHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG5cdFx0XHRcdFx0XHQndGVsaW4uY2FtcGFpZ24nLFxyXG5cdFx0XHRcdFx0XHRKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRcdFx0Li4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcblx0XHRcdFx0XHRcdFx0Li4ue1xyXG5cdFx0XHRcdFx0XHRcdFx0Z2VuZXJhbEluZm9ybWF0aW9uOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlkOiByZXNwLmRhdGE/LmlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtOiBnZW5lcmFsSW5mb3JtYXRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0ZmFpbG92ZXI6IHJlc3AuZGF0YT8uZmFpbG92ZXIsXHJcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXRBdWRpZW5jZTogcmVzcC5kYXRhPy50YXJnZXRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGFyZ2V0QXVkaWVuY2VGaWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IHJlc3AuZGF0YT8uZmlsZU5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldFVSTDogcmVzcC5kYXRhPy50YXJnZXRVUkwsXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0c2NoZWR1bGVyOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHNjaGVkdWxlclR5cGU6XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUgPT09ICdNVUxUSSdcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ09ORV9USU1FJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3RhcnREYXRlOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uc3RhcnRUaW1lPy5zcGxpdCgnICcpWzBdLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdGFydFRpbWU6XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzcC5kYXRhPy5zdGFydFRpbWU/LnNwbGl0KCcgJylbMV0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlzUmVwZWF0OlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc3AuZGF0YT8uc2NoZWR1bGVUeXBlID09PSAnTVVMVEknLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWxpdmVyeTogcmVzcC5kYXRhPy5yZXBlYXQsXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcmVqZWN0Q2FtcGFpZ25TZXJ2aWNlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1N1Ym1pdCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuXHRcdFx0LmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG5cdFx0XHRcdFtdLFxyXG5cdFx0XHRcdGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vcmVqZWN0YCxcclxuXHRcdFx0XHQnUE9TVCdcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXNwOiBBcHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdFx0aWYgKCFyZXNwIHx8ICFyZXNwPy5kYXRhKVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy50b2FzdHIuZXJyb3IoJ0Vycm9yIFJlamVjdGluZyBDYW1wYWlnbiEnKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLnRvYXN0ci5zdWNjZXNzKCdDYW1wYWlnbiBSZWplY3RlZCBTdWNjZXNzZnVsbHkhJyk7XHJcblx0XHRcdFx0XHR0aGlzLm9uQ2xvc2UoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMudG9hc3RyLmVycm9yKCdFcnJvciBSZWplY3RpbmcgQ2FtcGFpZ24hJyk7XHJcblx0XHRcdFx0XHR0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhcHByb3ZlQ2FtcGFpZ25TZXJ2aWNlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1N1Ym1pdCA9IHRydWU7XHJcblxyXG5cdFx0Y29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuXHRcdFx0LmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG5cdFx0XHRcdFtdLFxyXG5cdFx0XHRcdGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vYXBwcm92ZWAsXHJcblx0XHRcdFx0J1BPU1QnXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdGlmICghcmVzcCB8fCAhcmVzcD8uZGF0YSlcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMudG9hc3RyLmVycm9yKCdFcnJvciBBcHByb3ZpbmcgQ2FtcGFpZ24hJyk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy50b2FzdHIuc3VjY2VzcygnQ2FtcGFpZ24gQXBwcm92ZWQgU3VjY2Vzc2Z1bGx5IScpO1xyXG5cdFx0XHRcdFx0dGhpcy5vbkNsb3NlKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnRvYXN0ci5lcnJvcignRXJyb3IgQXBwcm92aW5nIENhbXBhaWduIScpO1xyXG5cdFx0XHRcdFx0dGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0ZWxpbi5jYW1wYWlnbicpO1xyXG5cdFx0dGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKGVhY2ggPT4gZWFjaC51bnN1YnNjcmliZSgpKTtcclxuXHR9XHJcbn1cclxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRsZmUvY2FtcGFpZ24tbWFuYWdlbWVudC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2NhbXBhaWduLW1hbmFnZW1lbnQvbW9kdWxlcy9jYW1wYWlnbi1pbmRleC9kaWFsb2cvcGVuZGluZy1hcHByb3ZhbC1kaWFsb2ctdmlldy9wZW5kaW5nLWFwcHJvdmFsLWRpYWxvZy12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPeEUsSUFBYSxrQ0FBa0MsR0FBL0MsTUFBYSxrQ0FBa0M7SUFPM0MsWUFDWSxTQUEyRCxFQUMzRCxpQkFBMkMsRUFDM0MsTUFBcUI7UUFGckIsY0FBUyxHQUFULFNBQVMsQ0FBa0Q7UUFDM0Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVDFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU3QixnQkFBVyxHQUFtQixFQUFFLENBQUM7SUFNdEMsQ0FBQztJQUVKLFFBQVE7O1FBQ0osSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLFlBQVkscUJBQUcsSUFBSSxDQUFDLGtCQUFrQiwwQ0FBRSxrQkFBa0IsMENBQUUsWUFBWSx1Q0FBSSxLQUFLLEVBQUEsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIs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OztZQTdMMEIsWUFBWTtZQUNKLHdCQUF3QjtZQUNuQyxhQUFhOztBQVZ4QixrQ0FBa0M7SUFMOUMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGtDQUFrQztRQUM1Qyxta0RBQTREOztLQUUvRCxDQUFDO0dBQ1csa0NBQWtDLENBcU05QztTQXJNWSxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktZHRvL3Jlc3BvbnNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1wZW5kaW5nLWFwcHJvdmFsLWRpYWxvZy12aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wZW5kaW5nLWFwcHJvdmFsLWRpYWxvZy12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3BlbmRpbmctYXBwcm92YWwtZGlhbG9nLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBlbmRpbmdBcHByb3ZhbERpYWxvZ1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc1Nob3dCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UGVuZGluZ0FwcHJvdmFsRGlhbG9nVmlld0NvbXBvbmVudD4sXHJcbiAgICAgICAgcHJpdmF0ZSBhcGlBZGFwdGVyU2VydmljZTogQXBpQWRhcHRlclNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nZXRDYW1wYWlnbkRldGFpbFNlcnZpY2UoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1Nob3dCdXR0b24gPSB0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pc1Nob3dCdXR0b24gPz8gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGdldENhbXBhaWduU3RvcmFnZSgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsaW4uY2FtcGFpZ24nKVxyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJykpXHJcbiAgICAgICAgICAgIDoge307XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb252ZXJ0VVRDRGF0ZVRvTG9jYWxEYXRlKGRhdGU6IERhdGUpIHtcclxuICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCAqIDEwMDApO1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2FtcGFpZ25EZXRhaWxTZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBbXSxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH1gLFxyXG4gICAgICAgICAgICAgICAgJ0dFVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3A6IEFwcFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3ApIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhbEluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1wYWlnbk5hbWU6IHJlc3AuZGF0YT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaXVtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBbJ2ltYWdlJywgJ3ZpZGVvJywgJ2RvY3VtZW50J10uaW5jbHVkZXMocmVzcC5kYXRhPy50eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnTUVESUEnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8uaXNEaXJlY3RTZW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3V0aWxpdHknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhPy50eXBlPy50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYTogcmVzcC5kYXRhPy50eXBlPy50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ByZXZUZW1wbGF0ZTogcmVzcD8uZGF0YT8uaXNQcmV2VGVtcGxhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTmFtZTogcmVzcD8uZGF0YT8udGVtcGxhdGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dGw6IHJlc3A/LmRhdGE/LnR0bFNlY29uZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGE/LmFjY291bnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJlc3AuZGF0YT8uYWNjb3VudE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiByZXNwLmRhdGE/LmNsaWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzcC5kYXRhPy5jbGllbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudE5vOiByZXNwLmRhdGE/LmFjY291bnRObyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhYmFJZDogcmVzcC5kYXRhPy53YWJhSWQgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VVJMOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy5pbWFnZT8udXJsID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LmRvY3VtZW50Py51cmwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8udmlkZW8/LnVybCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUhlYWRlcjogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUJvZHk6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtQnV0dG9uOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5idXR0b24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG90cFZhbHVlOiBbLi4uKHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEgPz8gW10pXT8ucG9wKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZzogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8ubGFuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVVJMOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXJVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5idXR0b24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnRJZDogcmVzcC5kYXRhPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudE5hbWU6IHJlc3AuZGF0YT8uY2xpZW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNVcGxvYWQ6IHJlc3AuZGF0YT8uZmlsZUlkICE9PSAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUlkOiByZXNwLmRhdGE/LmZpbGVJZCxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbEluZm9ybWF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiBnZW5lcmFsSW5mb3JtYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb3ZlcjogcmVzcC5kYXRhPy5mYWlsb3ZlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogcmVzcC5kYXRhPy50YXJnZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlRmlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRVUkw6IHJlc3AuZGF0YT8udGFyZ2V0VVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlclR5cGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSA9PT0gJ01VTFRJJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ09ORV9USU1FJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogcmVzcC5kYXRhPy5zdGFydFRpbWU/LnNwbGl0KCcgJylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogcmVzcC5kYXRhPy5zdGFydFRpbWU/LnNwbGl0KCcgJylbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVwZWF0OiByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSA9PT0gJ01VTFRJJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnk6IHJlc3AuZGF0YT8ucmVwZWF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVqZWN0Q2FtcGFpZ25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBbXSxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vcmVqZWN0YCxcclxuICAgICAgICAgICAgICAgICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcDogQXBwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwIHx8ICFyZXNwPy5kYXRhKSByZXR1cm4gdGhpcy50b2FzdHIuZXJyb3IoJ0Vycm9yIFJlamVjdGluZyBDYW1wYWlnbiEnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ2FtcGFpZ24gUmVqZWN0ZWQgU3VjY2Vzc2Z1bGx5IScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRXJyb3IgUmVqZWN0aW5nIENhbXBhaWduIScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhcHByb3ZlQ2FtcGFpZ25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBbXSxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vYXBwcm92ZWAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3A6IEFwcFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcCB8fCAhcmVzcD8uZGF0YSkgcmV0dXJuIHRoaXMudG9hc3RyLmVycm9yKCdFcnJvciBBcHByb3ZpbmcgQ2FtcGFpZ24hJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NhbXBhaWduIEFwcHJvdmVkIFN1Y2Nlc3NmdWxseSEnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0Vycm9yIEFwcHJvdmluZyBDYW1wYWlnbiEnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndGVsaW4uY2FtcGFpZ24nKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoZWFjaCkgPT4gZWFjaC51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxufVxyXG4iXX0=