@imperium/layout 7.3.0 → 8.0.0

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/dist/client.js CHANGED
@@ -21,11 +21,13 @@ __webpack_require__.r(__webpack_exports__);
21
21
 
22
22
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
23
23
  // Module
24
- ___CSS_LOADER_EXPORT___.push([module.id, ".content-components-styles__parent--qcZqw {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.content-components-styles__content--fhSXG {\n\tflex: 1;\n\tpadding: 10px;\n\tborder-right: solid lightgrey 1px;\n\tflex-basis: calc(65%);\n}\n\n.content-components-styles__header--NOGyc {\n\tborder-bottom: 1px solid lightgrey;\n\tmargin-bottom: 15px;\n}\n\n.content-components-styles__sidebar--rLU5R {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.content-components-styles__sidebarItem--Eylgf {\n\tmargin-bottom: 5px;\n}\n\n.content-components-styles__actionsHeader--N6zzM {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 767.98px) {\n\t.content-components-styles__parent--qcZqw {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.content-components-styles__content--fhSXG {\n\t\tborder-right: none;\n\t\tborder-bottom: 1px solid lightgray;\n\t\tpadding-bottom: 20px;\n\t}\n\t.content-components-styles__sidebar--rLU5R {\n\t\tmin-width: auto;\n\t}\n\t.content-components-styles__actionsHeader--N6zzM {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n", "",{"version":3,"sources":["webpack://./content/components/styles.css"],"names":[],"mappings":"AAAA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,OAAO;CACP,aAAa;CACb,iCAAiC;CACjC,qBAAqB;AACtB;;AAEA;CACC,kCAAkC;CAClC,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC;EACC,sBAAsB;EACtB,YAAY;CACb;CACA;EACC,kBAAkB;EAClB,kCAAkC;EAClC,oBAAoB;CACrB;CACA;EACC,eAAe;CAChB;CACA;EACC,cAAc;EACd,kBAAkB;CACnB;AACD","sourcesContent":[".parent {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.content {\n\tflex: 1;\n\tpadding: 10px;\n\tborder-right: solid lightgrey 1px;\n\tflex-basis: calc(65%);\n}\n\n.header {\n\tborder-bottom: 1px solid lightgrey;\n\tmargin-bottom: 15px;\n}\n\n.sidebar {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.sidebarItem {\n\tmargin-bottom: 5px;\n}\n\n.actionsHeader {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 767.98px) {\n\t.parent {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.content {\n\t\tborder-right: none;\n\t\tborder-bottom: 1px solid lightgray;\n\t\tpadding-bottom: 20px;\n\t}\n\t.sidebar {\n\t\tmin-width: auto;\n\t}\n\t.actionsHeader {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n"],"sourceRoot":""}]);
24
+ ___CSS_LOADER_EXPORT___.push([module.id, ".content-components-styles__parent--qcZqw {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.content-components-styles__wrapper--mbzSi {\n\tflex: 1;\n\tflex-basis: calc(65%);\n}\n\n.content-components-styles__content--fhSXG {\n\tmargin: 0 0.8rem 0.8rem 0.8rem;\n}\n\n.content-components-styles__contentFull--kUW3_ {\n\theight: 100%;\n\tmargin: 0 0;\n}\n\n.content-components-styles__header--NOGyc {\n\tpadding: 0.8rem 0.8rem 0 0.8rem;\n\tmargin-bottom: 0.8rem;\n}\n\n.content-components-styles__sidebar--rLU5R {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.content-components-styles__sidebarItem--Eylgf {\n\tmargin-bottom: 5px;\n}\n\n.content-components-styles__actionsHeader--N6zzM {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 767.98px) {\n\t.content-components-styles__parent--qcZqw {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.content-components-styles__wrapper--mbzSi {\n\t\tborder-right: none;\n\t\tpadding-bottom: 20px;\n\t}\n\t.content-components-styles__sidebar--rLU5R {\n\t\tmin-width: auto;\n\t}\n\t.content-components-styles__actionsHeader--N6zzM {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n", "",{"version":3,"sources":["webpack://./content/components/styles.css"],"names":[],"mappings":"AAAA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,OAAO;CACP,qBAAqB;AACtB;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,+BAA+B;CAC/B,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC;EACC,sBAAsB;EACtB,YAAY;CACb;CACA;EACC,kBAAkB;EAClB,oBAAoB;CACrB;CACA;EACC,eAAe;CAChB;CACA;EACC,cAAc;EACd,kBAAkB;CACnB;AACD","sourcesContent":[".parent {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.wrapper {\n\tflex: 1;\n\tflex-basis: calc(65%);\n}\n\n.content {\n\tmargin: 0 0.8rem 0.8rem 0.8rem;\n}\n\n.contentFull {\n\theight: 100%;\n\tmargin: 0 0;\n}\n\n.header {\n\tpadding: 0.8rem 0.8rem 0 0.8rem;\n\tmargin-bottom: 0.8rem;\n}\n\n.sidebar {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.sidebarItem {\n\tmargin-bottom: 5px;\n}\n\n.actionsHeader {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 767.98px) {\n\t.parent {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.wrapper {\n\t\tborder-right: none;\n\t\tpadding-bottom: 20px;\n\t}\n\t.sidebar {\n\t\tmin-width: auto;\n\t}\n\t.actionsHeader {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n"],"sourceRoot":""}]);
25
25
  // Exports
26
26
  ___CSS_LOADER_EXPORT___.locals = {
27
27
  "parent": "content-components-styles__parent--qcZqw",
28
+ "wrapper": "content-components-styles__wrapper--mbzSi",
28
29
  "content": "content-components-styles__content--fhSXG",
30
+ "contentFull": "content-components-styles__contentFull--kUW3_",
29
31
  "header": "content-components-styles__header--NOGyc",
30
32
  "sidebar": "content-components-styles__sidebar--rLU5R",
31
33
  "sidebarItem": "content-components-styles__sidebarItem--Eylgf",
@@ -55,14 +57,14 @@ __webpack_require__.r(__webpack_exports__);
55
57
 
56
58
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
57
59
  // Module
58
- ___CSS_LOADER_EXPORT___.push([module.id, "/* Need to pass 100% height all the way down */\n#root {\n\theight: 100%;\n}\n#root > div {\n\theight: 100%;\n}\n\n.layout-components-styles__parent--sws8O {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.layout-components-styles__menubar--WMcXn {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.layout-components-styles__statusbar--Ha4f_ {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.layout-components-styles__sidebar--JnA2I {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.layout-components-styles__sidebarHidden--ic4kr {\n\tmargin-left: -220px !important;\n}\n\n.layout-components-styles__contentWrapper--SaYGn {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.layout-components-styles__content--JGDuW {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\tpadding: 1em 1em;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n\tbackground-color: #e9e9e9;\n}\n\n.layout-components-styles__footer--A7LSH {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.layout-components-styles__verticalDropdownIcon--V69Cw {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownIconRotated--bZyNO {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownTitle--s6Asq {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.layout-components-styles__verticalDropdownContent--xGHxa {\n\tborder: 1px solid rgb(45, 45, 45);\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n\tbackground-color: rgb(45, 45, 45);\n}\n\n.layout-components-styles__icon--Gtl4t {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.layout-components-styles__iconRotated--XB67Y {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./layout/components/styles.css"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,2BAA2B;CAC3B,oBAAoB;AACrB;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;CAC3B,4CAA4C;AAC7C;;AAEA;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,uBAAuB;CACvB,2BAA2B;CAC3B,oBAAoB;CACpB,gBAAgB,EAAE,8DAA8D;CAChF,wCAAwC;AACzC;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,sCAAsC,EAAE,2EAA2E;CACnH,gBAAgB,EAAE,8DAA8D;AACjF;;AAEA;CACC,OAAO,EAAE,6FAA6F;CACtG,yBAAyB;CACzB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB,EAAE,8DAA8D;CAChF,kBAAkB,EAAE,8DAA8D;CAClF,yBAAyB;AAC1B;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;CAC3B,4CAA4C;AAC7C;;AAEA;CACC,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,wBAAwB;CACxB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,sBAAsB;AACvB;;AAEA;CACC,iCAAiC;CACjC,yBAAyB;CACzB,2BAA2B;CAC3B,gBAAgB;CAChB,iCAAiC;AAClC;;AAEA;CACC,uBAAuB;CACvB,iCAAiC;CACjC,eAAe;AAChB;;AAEA;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,eAAe;AAChB","sourcesContent":["/* Need to pass 100% height all the way down */\n:global(#root) {\n\theight: 100%;\n}\n:global(#root) > div {\n\theight: 100%;\n}\n\n.parent {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.menubar {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.statusbar {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.sidebar {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.sidebarHidden {\n\tmargin-left: -220px !important;\n}\n\n.contentWrapper {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.content {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\tpadding: 1em 1em;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n\tbackground-color: #e9e9e9;\n}\n\n.footer {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.verticalDropdownIcon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownIconRotated {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownTitle {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.verticalDropdownContent {\n\tborder: 1px solid rgb(45, 45, 45);\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n\tbackground-color: rgb(45, 45, 45);\n}\n\n.icon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.iconRotated {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n"],"sourceRoot":""}]);
60
+ ___CSS_LOADER_EXPORT___.push([module.id, "/* Need to pass 100% height all the way down */\n#root {\n\theight: 100%;\n}\n#root > div {\n\theight: 100%;\n}\n\n.layout-components-styles__parent--sws8O {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.layout-components-styles__menubar--WMcXn {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.layout-components-styles__statusbar--Ha4f_ {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.layout-components-styles__secondaryMenu--byu6y {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.layout-components-styles__secondaryMenuHidden--ek7Qz {\n\tmargin-left: -220px !important;\n}\n\n.layout-components-styles__contentWrapper--SaYGn {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.layout-components-styles__content--JGDuW {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n}\n\n.layout-components-styles__footer--A7LSH {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.layout-components-styles__verticalDropdownIcon--V69Cw {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownIconRotated--bZyNO {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownTitle--s6Asq {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.layout-components-styles__verticalDropdownContent--xGHxa {\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n}\n\n.layout-components-styles__icon--Gtl4t {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.layout-components-styles__iconRotated--XB67Y {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./layout/components/styles.css"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,2BAA2B;CAC3B,oBAAoB;AACrB;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;AAC5B;;AAEA;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,uBAAuB;CACvB,2BAA2B;CAC3B,oBAAoB;CACpB,gBAAgB,EAAE,8DAA8D;CAChF,wCAAwC;AACzC;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,sCAAsC,EAAE,2EAA2E;CACnH,gBAAgB,EAAE,8DAA8D;AACjF;;AAEA;CACC,OAAO,EAAE,6FAA6F;CACtG,yBAAyB;CACzB,YAAY;CACZ,gBAAgB,EAAE,8DAA8D;CAChF,kBAAkB,EAAE,8DAA8D;AACnF;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;AAC5B;;AAEA;CACC,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,wBAAwB;CACxB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,sBAAsB;AACvB;;AAEA;CACC,yBAAyB;CACzB,2BAA2B;CAC3B,gBAAgB;AACjB;;AAEA;CACC,uBAAuB;CACvB,iCAAiC;CACjC,eAAe;AAChB;;AAEA;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,eAAe;AAChB","sourcesContent":["/* Need to pass 100% height all the way down */\n:global(#root) {\n\theight: 100%;\n}\n:global(#root) > div {\n\theight: 100%;\n}\n\n.parent {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.menubar {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.statusbar {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.secondaryMenu {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.secondaryMenuHidden {\n\tmargin-left: -220px !important;\n}\n\n.contentWrapper {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.content {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n}\n\n.footer {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.verticalDropdownIcon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownIconRotated {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownTitle {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.verticalDropdownContent {\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n}\n\n.icon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.iconRotated {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n"],"sourceRoot":""}]);
59
61
  // Exports
60
62
  ___CSS_LOADER_EXPORT___.locals = {
61
63
  "parent": "layout-components-styles__parent--sws8O",
62
64
  "menubar": "layout-components-styles__menubar--WMcXn",
63
65
  "statusbar": "layout-components-styles__statusbar--Ha4f_",
64
- "sidebar": "layout-components-styles__sidebar--JnA2I",
65
- "sidebarHidden": "layout-components-styles__sidebarHidden--ic4kr",
66
+ "secondaryMenu": "layout-components-styles__secondaryMenu--byu6y",
67
+ "secondaryMenuHidden": "layout-components-styles__secondaryMenuHidden--ek7Qz",
66
68
  "contentWrapper": "layout-components-styles__contentWrapper--SaYGn",
67
69
  "content": "layout-components-styles__content--JGDuW",
68
70
  "footer": "layout-components-styles__footer--A7LSH",
@@ -275,7 +277,7 @@ __webpack_require__.r(__webpack_exports__);
275
277
  /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
276
278
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
277
279
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
278
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionForm.tsx",
280
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/ActionForm.tsx",
279
281
  _s = $RefreshSig$();
280
282
 
281
283
 
@@ -431,7 +433,7 @@ __webpack_require__.r(__webpack_exports__);
431
433
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
432
434
 
433
435
 
434
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionFormSidebarItemComponent.tsx",
436
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/ActionFormSidebarItemComponent.tsx",
435
437
  _s = $RefreshSig$();
436
438
 
437
439
 
@@ -512,7 +514,7 @@ __webpack_require__.r(__webpack_exports__);
512
514
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./content/utils.tsx");
513
515
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
514
516
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
515
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionSidebarItemComponent.tsx";
517
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/ActionSidebarItemComponent.tsx";
516
518
 
517
519
 
518
520
 
@@ -567,7 +569,7 @@ __webpack_require__.r(__webpack_exports__);
567
569
  /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styles.css */ "./content/components/styles.css");
568
570
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
569
571
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
570
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ContentComponent.tsx",
572
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/ContentComponent.tsx",
571
573
  _s = $RefreshSig$();
572
574
 
573
575
 
@@ -594,9 +596,9 @@ function ContentComponent(_ref) {
594
596
  var content = page.content(data);
595
597
  var sidebarItems = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sortWeightedItems)(page.sidebar || []);
596
598
  var sidebar = sidebarItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
597
- className: _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].sidebar,
599
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].sidebar, " imperiumContentSidebar"),
598
600
  children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
599
- className: _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].actionsHeader,
601
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].actionsHeader, " imperiumContentSidebarHeader"),
600
602
  children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("h3", {
601
603
  children: "Actions"
602
604
  }, void 0, false, {
@@ -636,9 +638,9 @@ function ContentComponent(_ref) {
636
638
  columnNumber: 4
637
639
  }, this) : null;
638
640
  return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
639
- className: _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].parent,
641
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].parent, " imperiumContentWrapperParent"),
640
642
  children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
641
- className: _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].content,
643
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].wrapper, " imperiumContentWrapper"),
642
644
  children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(_Header__WEBPACK_IMPORTED_MODULE_5__.Header, {
643
645
  header: page.header,
644
646
  data: data
@@ -646,7 +648,14 @@ function ContentComponent(_ref) {
646
648
  fileName: _jsxFileName,
647
649
  lineNumber: 45,
648
650
  columnNumber: 5
649
- }, this), content]
651
+ }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
652
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].content, " imperiumContent ").concat(page.full && _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].contentFull),
653
+ children: content
654
+ }, void 0, false, {
655
+ fileName: _jsxFileName,
656
+ lineNumber: 46,
657
+ columnNumber: 5
658
+ }, this)]
650
659
  }, void 0, true, {
651
660
  fileName: _jsxFileName,
652
661
  lineNumber: 44,
@@ -717,7 +726,7 @@ __webpack_require__.r(__webpack_exports__);
717
726
  /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.css */ "./content/components/styles.css");
718
727
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
719
728
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
720
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/Header.tsx";
729
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/Header.tsx";
721
730
 
722
731
 
723
732
 
@@ -741,7 +750,7 @@ function Header(_ref) {
741
750
  }
742
751
 
743
752
  return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("div", {
744
- className: _styles_css__WEBPACK_IMPORTED_MODULE_2__["default"].header,
753
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_2__["default"].header, " imperiumContentHeader"),
745
754
  children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)("h2", {
746
755
  children: headerInfo.title
747
756
  }, void 0, false, {
@@ -785,7 +794,7 @@ __webpack_require__.r(__webpack_exports__);
785
794
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./content/utils.tsx");
786
795
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
787
796
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
788
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/PlainSidebarItem.tsx";
797
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/PlainSidebarItem.tsx";
789
798
 
790
799
 
791
800
 
@@ -844,7 +853,7 @@ __webpack_require__.r(__webpack_exports__);
844
853
  /* harmony import */ var _PlainSidebarItem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PlainSidebarItem */ "./content/components/PlainSidebarItem.tsx");
845
854
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
846
855
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__);
847
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/SidebarItemWrapper.tsx",
856
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/components/SidebarItemWrapper.tsx",
848
857
  _s = $RefreshSig$();
849
858
 
850
859
 
@@ -961,10 +970,11 @@ __webpack_require__.r(__webpack_exports__);
961
970
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
962
971
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
963
972
  /* harmony import */ var _components_ContentComponent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/ContentComponent */ "./content/components/ContentComponent.tsx");
964
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
965
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
973
+ /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types */ "./content/types.ts");
974
+ /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
975
+ /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
966
976
 
967
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/createPages.tsx";
977
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/createPages.tsx";
968
978
 
969
979
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
970
980
 
@@ -974,19 +984,35 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
974
984
 
975
985
 
976
986
 
987
+
977
988
  var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.content.createPages');
978
989
  function createPages(routes, pages) {
979
990
  var _this = this;
980
991
 
981
992
  var renderRoutePropsObj = Object.keys(routes.types).reduce(function (memo, key) {
982
993
  return _objectSpread(_objectSpread({}, memo), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, key, function (params) {
983
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_components_ContentComponent__WEBPACK_IMPORTED_MODULE_3__.ContentComponent, {
984
- page: pages[key],
994
+ var pg = pages[key];
995
+
996
+ if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isPage)(pg)) {
997
+ return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_components_ContentComponent__WEBPACK_IMPORTED_MODULE_3__.ContentComponent, {
998
+ page: pg,
999
+ params: params
1000
+ }, void 0, false, {
1001
+ fileName: _jsxFileName,
1002
+ lineNumber: 17,
1003
+ columnNumber: 13
1004
+ }, _this);
1005
+ }
1006
+
1007
+ return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_components_ContentComponent__WEBPACK_IMPORTED_MODULE_3__.ContentComponent, {
1008
+ page: {
1009
+ content: pg
1010
+ },
985
1011
  params: params
986
1012
  }, void 0, false, {
987
1013
  fileName: _jsxFileName,
988
- lineNumber: 14,
989
- columnNumber: 12
1014
+ lineNumber: 20,
1015
+ columnNumber: 6
990
1016
  }, _this);
991
1017
  }));
992
1018
  }, {});
@@ -1065,11 +1091,15 @@ _s(useBuildContentData, "yk5pGS0moWWVjdJ9ddvs9cW3Gsc=", false, function () {
1065
1091
 
1066
1092
  __webpack_require__.r(__webpack_exports__);
1067
1093
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1094
+ /* harmony export */ "isPage": () => (/* binding */ isPage),
1068
1095
  /* harmony export */ "isActionSidebarItem": () => (/* binding */ isActionSidebarItem),
1069
1096
  /* harmony export */ "isActionFormSidebarItem": () => (/* binding */ isActionFormSidebarItem),
1070
1097
  /* harmony export */ "isCustomSidebarItem": () => (/* binding */ isCustomSidebarItem),
1071
1098
  /* harmony export */ "isDividerSidebarItem": () => (/* binding */ isDividerSidebarItem)
1072
1099
  /* harmony export */ });
1100
+ function isPage(value) {
1101
+ return !!value.content;
1102
+ }
1073
1103
  function isActionSidebarItem(value) {
1074
1104
  return !!value.onClick;
1075
1105
  }
@@ -1104,7 +1134,7 @@ __webpack_require__.r(__webpack_exports__);
1104
1134
  /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__);
1105
1135
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1106
1136
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
1107
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/utils.tsx";
1137
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/content/utils.tsx";
1108
1138
 
1109
1139
 
1110
1140
 
@@ -1160,7 +1190,7 @@ __webpack_require__.r(__webpack_exports__);
1160
1190
  /* harmony import */ var _ExecuteDataHook__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ExecuteDataHook */ "./datahooks/ExecuteDataHook.tsx");
1161
1191
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1162
1192
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
1163
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/datahooks/DataHooks.tsx",
1193
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/datahooks/DataHooks.tsx",
1164
1194
  _s = $RefreshSig$();
1165
1195
 
1166
1196
 
@@ -1463,7 +1493,7 @@ __webpack_require__.r(__webpack_exports__);
1463
1493
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
1464
1494
 
1465
1495
 
1466
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/DropdownItem.tsx",
1496
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/DropdownItem.tsx",
1467
1497
  _s = $RefreshSig$();
1468
1498
 
1469
1499
 
@@ -1589,7 +1619,7 @@ __webpack_require__.r(__webpack_exports__);
1589
1619
 
1590
1620
 
1591
1621
 
1592
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/Layout.tsx",
1622
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/Layout.tsx",
1593
1623
  _s = $RefreshSig$();
1594
1624
 
1595
1625
 
@@ -1660,12 +1690,12 @@ function Layout(_ref) {
1660
1690
  })
1661
1691
  }]) : secondaryMenu);
1662
1692
  var secondaryMenuComp = secondaryMenuItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1693
+ className: "imperiumSecondaryMenuWrapper",
1663
1694
  children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1664
- name: "sidebar",
1665
1695
  items: secondaryMenuItems,
1666
1696
  inverted: true,
1667
1697
  vertical: true,
1668
- className: isMobile && !menuOpen ? "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].sidebar, " ").concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].sidebarHidden, " imperiumSidebar") : "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].sidebar, " imperiumSidebar")
1698
+ className: isMobile && !menuOpen ? "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenu, " ").concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenuHidden, " imperiumSecondaryMenu") : "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenu, " imperiumSecondaryMenu")
1669
1699
  }, void 0, false, {
1670
1700
  fileName: _jsxFileName,
1671
1701
  lineNumber: 63,
@@ -1686,58 +1716,57 @@ function Layout(_ref) {
1686
1716
  borderless: true
1687
1717
  }, void 0, false, {
1688
1718
  fileName: _jsxFileName,
1689
- lineNumber: 77,
1719
+ lineNumber: 80,
1690
1720
  columnNumber: 4
1691
1721
  }, this) : null; // Determine status bar items
1692
1722
 
1693
1723
  var statusbarItems = (0,_moveItems__WEBPACK_IMPORTED_MODULE_6__.moveItems)(statusbar);
1694
1724
  var statusbarComp = statusbarItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1695
- name: "statusbar",
1696
1725
  items: statusbarItems,
1697
1726
  inverted: true,
1698
1727
  className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].statusbar, " imperiumStatusbar")
1699
1728
  }, void 0, false, {
1700
1729
  fileName: _jsxFileName,
1701
- lineNumber: 84,
1702
- columnNumber: 4
1730
+ lineNumber: 86,
1731
+ columnNumber: 31
1703
1732
  }, this) : null;
1704
1733
  return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1705
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].parent, " imperiumLayout"),
1734
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].parent, " imperiumLayout ").concat(isMobile ? 'imperiumMobile' : 'imperiumNotMobile'),
1706
1735
  children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1736
+ className: "imperiumPrimaryMenuWrapper",
1707
1737
  children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1708
- name: "menubar",
1709
1738
  items: primaryMenuItems,
1710
1739
  inverted: true,
1711
1740
  borderless: true,
1712
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].menubar, " imperiumMenubar")
1741
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].menubar, " imperiumPrimaryMenu")
1713
1742
  }, void 0, false, {
1714
1743
  fileName: _jsxFileName,
1715
- lineNumber: 90,
1744
+ lineNumber: 91,
1716
1745
  columnNumber: 5
1717
1746
  }, this), statusbarComp]
1718
1747
  }, void 0, true, {
1719
1748
  fileName: _jsxFileName,
1720
- lineNumber: 89,
1749
+ lineNumber: 90,
1721
1750
  columnNumber: 4
1722
1751
  }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Segment, {
1723
1752
  attached: true,
1724
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].contentWrapper, " imperiumContentWrapper"),
1753
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].contentWrapper, " imperiumLayoutContentWrapper"),
1725
1754
  children: [secondaryMenuComp, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1726
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].content, " imperiumContent"),
1755
+ className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].content, " imperiumLayoutContent"),
1727
1756
  children: children
1728
1757
  }, void 0, false, {
1729
1758
  fileName: _jsxFileName,
1730
- lineNumber: 95,
1759
+ lineNumber: 96,
1731
1760
  columnNumber: 5
1732
1761
  }, this)]
1733
1762
  }, void 0, true, {
1734
1763
  fileName: _jsxFileName,
1735
- lineNumber: 93,
1764
+ lineNumber: 94,
1736
1765
  columnNumber: 4
1737
1766
  }, this), footerComp]
1738
1767
  }, void 0, true, {
1739
1768
  fileName: _jsxFileName,
1740
- lineNumber: 88,
1769
+ lineNumber: 89,
1741
1770
  columnNumber: 3
1742
1771
  }, this);
1743
1772
  }
@@ -1782,7 +1811,7 @@ __webpack_require__.r(__webpack_exports__);
1782
1811
 
1783
1812
 
1784
1813
  var _excluded = ["items"];
1785
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/LayoutItemBar.tsx";
1814
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/LayoutItemBar.tsx";
1786
1815
 
1787
1816
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1788
1817
 
@@ -1883,7 +1912,7 @@ __webpack_require__.r(__webpack_exports__);
1883
1912
  /* harmony import */ var _PlainItem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PlainItem */ "./layout/components/PlainItem.tsx");
1884
1913
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1885
1914
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__);
1886
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/LayoutItemWrapper.tsx",
1915
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/LayoutItemWrapper.tsx",
1887
1916
  _s = $RefreshSig$();
1888
1917
 
1889
1918
 
@@ -2036,7 +2065,7 @@ __webpack_require__.r(__webpack_exports__);
2036
2065
  /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__);
2037
2066
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2038
2067
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
2039
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/MenuItem.tsx";
2068
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/MenuItem.tsx";
2040
2069
 
2041
2070
 
2042
2071
 
@@ -2092,7 +2121,7 @@ __webpack_require__.r(__webpack_exports__);
2092
2121
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2093
2122
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
2094
2123
 
2095
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/PlainItem.tsx";
2124
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/PlainItem.tsx";
2096
2125
 
2097
2126
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2098
2127
 
@@ -2141,7 +2170,7 @@ __webpack_require__.r(__webpack_exports__);
2141
2170
  /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.css */ "./layout/components/styles.css");
2142
2171
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2143
2172
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
2144
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/SecondaryMenuToggleItem.tsx";
2173
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/components/SecondaryMenuToggleItem.tsx";
2145
2174
 
2146
2175
 
2147
2176
 
@@ -2364,7 +2393,7 @@ __webpack_require__.r(__webpack_exports__);
2364
2393
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2365
2394
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
2366
2395
 
2367
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/utils.tsx";
2396
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/utils.tsx";
2368
2397
 
2369
2398
 
2370
2399
 
@@ -2447,7 +2476,7 @@ __webpack_require__.r(__webpack_exports__);
2447
2476
  /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
2448
2477
 
2449
2478
 
2450
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/withLayout.tsx";
2479
+ var _jsxFileName = "/home/mike/dev/imperium-fix/packages/layout/src/layout/withLayout.tsx";
2451
2480
 
2452
2481
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2453
2482
 
@@ -3378,4 +3407,4 @@ function layoutClientModule() {
3378
3407
  module.exports = __webpack_exports__;
3379
3408
  /******/ })()
3380
3409
  ;
3381
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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MEVBQUQ7QUFESjtBQUxGLEdBQVA7QUFTQTtBQUdEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly8vLi9jb21tb25JdGVtcy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uRm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvSGVhZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvUGxhaW5TaWRlYmFySXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL1NpZGViYXJJdGVtV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jcmVhdGVQYWdlcy50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9kaXZpZGVyU2lkZWJhckl0ZW0udHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvdHlwZXMudHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0RhdGFIb29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVEYXRhSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlQnVpbGREYXRhLnRzIiwid2VicGFjazovLy8uL2hvb2tzL3VzZUlzQWN0aXZlUm91dGUudHMiLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlU2VsZWN0U3RhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvRHJvcGRvd25JdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9MYXlvdXQudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dEl0ZW1CYXIudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dEl0ZW1XcmFwcGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9NZW51SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvUGxhaW5JdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9TZWNvbmRhcnlNZW51VG9nZ2xlSXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2hvb2tzL3VzZU1vYmlsZUxheW91dC50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvbW92ZUl0ZW1zLnRzIiwid2VicGFjazovLy8uL2xheW91dC90eXBlcy50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvdXRpbHMudHN4Iiwid2VicGFjazovLy8uL2xheW91dC93aXRoTGF5b3V0LnRzeCIsIndlYnBhY2s6Ly8vLi9zdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi90eXBlcy50cyIsIndlYnBhY2s6Ly8vLi91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzcz9kMWY1Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL3N0eWxlcy5jc3M/MTZmMCIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBpbXBlcml1bS9zdGF0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAdGh4L2NvbnRyb2xzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiZGVidWdcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvY29tcGFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9mbG93UmlnaHRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvZnBcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvZ3JvdXBCeVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9tZW1vaXplXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lcmdlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL3NvcnRCeVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIm1pbmdvXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicXVlcnlzdHJpbmdcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVzcG9uc2l2ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJvdXRlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJvdXRlci1kb21cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJzZW1hbnRpYy11aS1yZWFjdFwiIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly8vLi9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXFjWnF3IHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1maFNYRyB7XFxuXFx0ZmxleDogMTtcXG5cXHRwYWRkaW5nOiAxMHB4O1xcblxcdGJvcmRlci1yaWdodDogc29saWQgbGlnaHRncmV5IDFweDtcXG5cXHRmbGV4LWJhc2lzOiBjYWxjKDY1JSk7XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19oZWFkZXItLU5PR3ljIHtcXG5cXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmV5O1xcblxcdG1hcmdpbi1ib3R0b206IDE1cHg7XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UiB7XFxuXFx0bWluLXdpZHRoOiAyNTBweDtcXG5cXHRwYWRkaW5nOiAxMHB4O1xcblxcdG92ZXJmbG93LXk6IGF1dG87XFxuXFx0b3ZlcmZsb3cteDogaGlkZGVuO1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmIHtcXG5cXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19hY3Rpb25zSGVhZGVyLS1ONnp6TSB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjcuOThweCkge1xcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXFjWnF3IHtcXG5cXHRcXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcdFxcdGhlaWdodDogYXV0bztcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHIHtcXG5cXHRcXHRib3JkZXItcmlnaHQ6IG5vbmU7XFxuXFx0XFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JheTtcXG5cXHRcXHRwYWRkaW5nLWJvdHRvbTogMjBweDtcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXItLXJMVTVSIHtcXG5cXHRcXHRtaW4td2lkdGg6IGF1dG87XFxuXFx0fVxcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19hY3Rpb25zSGVhZGVyLS1ONnp6TSB7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcblxcdH1cXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29udGVudC9jb21wb25lbnRzL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7Q0FDQyxPQUFPO0NBQ1AsYUFBYTtDQUNiLG1CQUFtQjtDQUNuQixZQUFZO0FBQ2I7O0FBRUE7Q0FDQyxPQUFPO0NBQ1AsYUFBYTtDQUNiLGlDQUFpQztDQUNqQyxxQkFBcUI7QUFDdEI7O0FBRUE7Q0FDQyxrQ0FBa0M7Q0FDbEMsbUJBQW1CO0FBQ3BCOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsa0JBQWtCO0FBQ25COztBQUVBO0NBQ0Msa0JBQWtCO0FBQ25COztBQUVBO0NBQ0MsYUFBYTtBQUNkOztBQUVBO0NBQ0M7RUFDQyxzQkFBc0I7RUFDdEIsWUFBWTtDQUNiO0NBQ0E7RUFDQyxrQkFBa0I7RUFDbEIsa0NBQWtDO0VBQ2xDLG9CQUFvQjtDQUNyQjtDQUNBO0VBQ0MsZUFBZTtDQUNoQjtDQUNBO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtDQUNuQjtBQUNEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5wYXJlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0cGFkZGluZzogMTBweDtcXG5cXHRib3JkZXItcmlnaHQ6IHNvbGlkIGxpZ2h0Z3JleSAxcHg7XFxuXFx0ZmxleC1iYXNpczogY2FsYyg2NSUpO1xcbn1cXG5cXG4uaGVhZGVyIHtcXG5cXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmV5O1xcblxcdG1hcmdpbi1ib3R0b206IDE1cHg7XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDI1MHB4O1xcblxcdHBhZGRpbmc6IDEwcHg7XFxuXFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcblxcbi5zaWRlYmFySXRlbSB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uYWN0aW9uc0hlYWRlciB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjcuOThweCkge1xcblxcdC5wYXJlbnQge1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0XFx0aGVpZ2h0OiBhdXRvO1xcblxcdH1cXG5cXHQuY29udGVudCB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyYXk7XFxuXFx0XFx0cGFkZGluZy1ib3R0b206IDIwcHg7XFxuXFx0fVxcblxcdC5zaWRlYmFyIHtcXG5cXHRcXHRtaW4td2lkdGg6IGF1dG87XFxuXFx0fVxcblxcdC5hY3Rpb25zSGVhZGVyIHtcXG5cXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxuXFx0fVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJwYXJlbnRcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXFjWnF3XCIsXG5cdFwiY29udGVudFwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHXCIsXG5cdFwiaGVhZGVyXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19faGVhZGVyLS1OT0d5Y1wiLFxuXHRcInNpZGViYXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UlwiLFxuXHRcInNpZGViYXJJdGVtXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmXCIsXG5cdFwiYWN0aW9uc0hlYWRlclwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXN3czhPIHtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tV01jWG4ge1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1IYTRmXyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1KbkEySSB7XFxuXFx0bWluLXdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xcblxcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdG92ZXJmbG93LXg6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJIaWRkZW4tLWljNGtyIHtcXG5cXHRtYXJnaW4tbGVmdDogLTIyMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1TYVlHbiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLUpHRHVXIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRwYWRkaW5nOiAxZW0gMWVtO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2Zvb3Rlci0tQTdMU0gge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDUsIDQ1LCA0NSkgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkljb24tLVY2OUN3IHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQtLWJaeU5PIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93blRpdGxlLS1zNkFzcSB7XFxuXFx0cGFkZGluZzogMDtcXG5cXHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duQ29udGVudC0teEdIeGEge1xcblxcdGJvcmRlcjogMXB4IHNvbGlkIHJnYig0NSwgNDUsIDQ1KTtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KTtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2ljb25Sb3RhdGVkLS1YQjY3WSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDhDQUE4QztBQUM5QztDQUNDLFlBQVk7QUFDYjtBQUNBO0NBQ0MsWUFBWTtBQUNiOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isb0JBQW9CO0FBQ3JCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtDQUMzQiw0Q0FBNEM7QUFDN0M7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isc0JBQXNCO0NBQ3RCLHVCQUF1QjtDQUN2QiwyQkFBMkI7Q0FDM0Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFLDhEQUE4RDtDQUNoRix3Q0FBd0M7QUFDekM7O0FBRUE7Q0FDQyw4QkFBOEI7QUFDL0I7O0FBRUE7Q0FDQyxPQUFPO0NBQ1AsYUFBYTtDQUNiLG1CQUFtQjtDQUNuQixpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLHNDQUFzQyxFQUFFLDJFQUEyRTtDQUNuSCxnQkFBZ0IsRUFBRSw4REFBOEQ7QUFDakY7O0FBRUE7Q0FDQyxPQUFPLEVBQUUsNkZBQTZGO0NBQ3RHLHlCQUF5QjtDQUN6QixnQkFBZ0I7Q0FDaEIsWUFBWTtDQUNaLGdCQUFnQixFQUFFLDhEQUE4RDtDQUNoRixrQkFBa0IsRUFBRSw4REFBOEQ7Q0FDbEYseUJBQXlCO0FBQzFCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtDQUMzQiw0Q0FBNEM7QUFDN0M7O0FBRUE7Q0FDQyx1QkFBdUI7Q0FDdkIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyx3QkFBd0I7Q0FDeEIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyxVQUFVO0NBQ1Ysc0JBQXNCO0FBQ3ZCOztBQUVBO0NBQ0MsaUNBQWlDO0NBQ2pDLHlCQUF5QjtDQUN6QiwyQkFBMkI7Q0FDM0IsZ0JBQWdCO0NBQ2hCLGlDQUFpQztBQUNsQzs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDQ1LCA0NSwgNDUpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNpZGViYXJIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHRvdmVyZmxvdy15OiBhdXRvOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7IC8qIGNoYW5nZWQgdGhpcyB0byBoYXZlIGEgZmxleCBvZiBvbmUgaW5zdGVhZCBvZiBhdXRvIHNvIHRoZSBzaWRlIG1lbnUgZG9lc24ndCBnZXQgc3F1aXNoZWQgKi9cXG5cXHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xcblxcdHBhZGRpbmc6IDFlbSAxZW07XFxuXFx0aGVpZ2h0OiAxMDAlO1xcblxcdG1heC1oZWlnaHQ6IDEwMCU7IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdG92ZXJmbG93LXg6IGhpZGRlbjsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0YmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTtcXG59XFxuXFxuLmZvb3RlciB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93bkljb24ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93blRpdGxlIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duQ29udGVudCB7XFxuXFx0Ym9yZGVyOiAxcHggc29saWQgcmdiKDQ1LCA0NSwgNDUpO1xcblxcdHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwIC0xLjE0Mjg1NzE0ZW0gMCAwO1xcblxcdGJvcmRlci1yYWRpdXM6IDA7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDQ1LCA0NSwgNDUpO1xcbn1cXG5cXG4uaWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgbGluZWFyO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInBhcmVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1zd3M4T1wiLFxuXHRcIm1lbnViYXJcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLVdNY1huXCIsXG5cdFwic3RhdHVzYmFyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zdGF0dXNiYXItLUhhNGZfXCIsXG5cdFwic2lkZWJhclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tSm5BMklcIixcblx0XCJzaWRlYmFySGlkZGVuXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFySGlkZGVuLS1pYzRrclwiLFxuXHRcImNvbnRlbnRXcmFwcGVyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50V3JhcHBlci0tU2FZR25cIixcblx0XCJjb250ZW50XCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1KR0R1V1wiLFxuXHRcImZvb3RlclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25JY29uXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3dcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWRcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk9cIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25UaXRsZS0tczZBc3FcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLXhHSHhhXCIsXG5cdFwiaWNvblwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLVhCNjdZXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNbX2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbW9kdWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pMl0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiaW1wb3J0IHR5cGUge0RhdGEsIFN0YXRlU2VsZWN0b3JIb29rLCBWaXNpYmlsaXR5UXVlcnlGbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gaGlkZSBpdHNlbGYgYmFzZWQgb24gcmVkdXggc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXNpYmlsaXR5SXRlbSB7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdOyAvLyBIb29rIG9yIGFycmF5IG9mIGhvb2tzIHRoYXQgc2VsZWN0IHN0YXRlXG5cdHZpc2libGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFZpc2liaWxpdHlRdWVyeUZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHdpdGggb3B0aW9uYWwgd2VpZ2h0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2VpZ2h0ZWRJdGVtIHtcblx0d2VpZ2h0PzogbnVtYmVyOyAvLyBMYXJnZXIgbnVtYmVycyBtb3ZlIHJpZ2h0L2Rvd25cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGxpbmtzIHRvIGEgcm91dGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZUl0ZW0ge1xuXHR0bz86IHN0cmluZyB8ICgoZGF0YTogRGF0YSkgPT4gc3RyaW5nKTtcblx0ZXhhY3Q/OiBib29sZWFuO1xuXHRzdHJpY3Q/OiBib29sZWFuO1xuXHRzZW5zaXRpdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgY2FuIGJlIHBvc2l0aW9uZWQgaG9yaXpvbnRhbGx5IGxlZnQgb3IgcmlnaHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRwb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7IC8vIERlZmF1bHQgaXMgbGVmdFxuXHRzdGlja09uTW9iaWxlPzogYm9vbGVhbjsgLy8gSWYgdHJ1ZSwgd2lsbCBub3QgYmUgaGlkZGVuIHdoZW4gaW4gbW9iaWxlIG1vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRyZXR1cm4gISEoKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkucG9zaXRpb24gfHwgKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkuc3RpY2tPbk1vYmlsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JvdXRlSXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUm91dGVJdGVtIHtcblx0cmV0dXJuICEhKCh2YWx1ZSBhcyBSb3V0ZUl0ZW0pLnRvIHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW0pLmV4YWN0IHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW0pLnN0cmljdCB8fCAodmFsdWUgYXMgUm91dGVJdGVtKS5zZW5zaXRpdmUpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQge3VzZVRGb3JtfSBmcm9tICdAdGh4L2NvbnRyb2xzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b24sIEZvcm0sIEljb24sIE1lc3NhZ2UsIFBvcHVwfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybScpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG5cdG9uSGlkZUZvcm06ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3Rpb25Gb3JtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YSwgb25IaWRlRm9ybX06IEFjdGlvbkZvcm1Qcm9wczxULCBLPikge1xuXHQvLyBHZXQgaW5pdGlhbCB2YWx1ZXNcblx0bGV0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblx0aWYgKGl0ZW0uaW5pdGlhbFZhbHVlcykge1xuXHRcdGlmICh0eXBlb2YgaXRlbS5pbml0aWFsVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzKGRhdGEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRGb3JtXG5cdGNvbnN0IHtoYXNFcnJvcnMsIGhhc1dhcm5pbmdzLCBoYW5kbGVTdWJtaXQsIGhhbmRsZUNoYW5nZSwgdmFsdWVzLCByZXNldEZvcm0sIGVycm9ycywgZmllbGRFcnJvcn0gPSB1c2VURm9ybSh7XG5cdFx0aW5pdGlhbFZhbHVlcyxcblx0XHRvblN1Ym1pdDogc3VibWl0VmFsdWVzID0+IHtcblx0XHRcdGlmIChpdGVtLm9uU3VibWl0KSB7XG5cdFx0XHRcdGl0ZW0ub25TdWJtaXQoc3VibWl0VmFsdWVzLCBkYXRhKTtcblx0XHRcdH1cblx0XHRcdG9uSGlkZUZvcm0oKTtcblx0XHR9LFxuXHRcdGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcblx0XHR2YWxpZGF0aW9uU2NoZW1hOiBpdGVtLnZhbGlkYXRpb25TY2hlbWEsXG5cdH0pO1xuXG5cdGNvbnN0IHNhdmVCdXR0b24gPSBoYXNXYXJuaW5ncyA/IChcblx0XHQ8UG9wdXBcblx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHQ8QnV0dG9uIHBvc2l0aXZlIHR5cGU9XCJzdWJtaXRcIiBmbG9hdGVkPVwicmlnaHRcIiBpY29uIGxhYmVsUG9zaXRpb249XCJsZWZ0XCI+XG5cdFx0XHRcdFx0PEljb24gbmFtZT1cImV4Y2xhbWF0aW9uIGNpcmNsZVwiIGNvbG9yPVwicmVkXCIgLz5cblx0XHRcdFx0XHRTYXZlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0Y29udGVudD17PE1lc3NhZ2UgZXJyb3IgbGlzdD17T2JqZWN0LnZhbHVlcyhlcnJvcnMpfSAvPn1cblx0XHRcdG9uPVwiaG92ZXJcIlxuXHRcdC8+XG5cdCkgOiAoXG5cdFx0PEJ1dHRvbiBwb3NpdGl2ZSB0eXBlPVwic3VibWl0XCIgZmxvYXRlZD1cInJpZ2h0XCI+XG5cdFx0XHRTYXZlXG5cdFx0PC9CdXR0b24+XG5cdCk7XG5cblx0Ly8gUmVuZGVyIGZvcm1cblx0cmV0dXJuIChcblx0XHQ8Rm9ybSBlcnJvcj17aGFzRXJyb3JzfSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG5cdFx0XHR7aXRlbS5mb3JtKHtoYW5kbGVDaGFuZ2UsIHZhbHVlcywgZGF0YSwgZmllbGRFcnJvcn0pfVxuXHRcdFx0e3NhdmVCdXR0b259XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cmVzZXRGb3JtKCk7XG5cdFx0XHRcdFx0b25IaWRlRm9ybSgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHRDYW5jZWxcblx0XHRcdDwvQnV0dG9uPlxuXHRcdDwvRm9ybT5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0FjdGlvbkZvcm1TaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7QWN0aW9uRm9ybX0gZnJvbSAnLi9BY3Rpb25Gb3JtJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCcpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe1xuXHRpdGVtLFxuXHRkYXRhLFxufTogQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgW2lzRWRpdCwgc2V0SXNFZGl0XSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuXHRpZiAoaXNFZGl0KSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxBY3Rpb25Gb3JtXG5cdFx0XHRcdGl0ZW09e2l0ZW19XG5cdFx0XHRcdGRhdGE9e2RhdGF9XG5cdFx0XHRcdG9uSGlkZUZvcm09eygpID0+IHtcblx0XHRcdFx0XHRzZXRJc0VkaXQoZmFsc2UpO1xuXHRcdFx0XHR9fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0Ly8gUmVuZGVyIGFjdGlvbiBidXR0b25cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uXG5cdFx0XHRmbHVpZFxuXHRcdFx0Y29tcGFjdFxuXHRcdFx0Y29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfVxuXHRcdFx0aWNvbj17ISFpY29ufVxuXHRcdFx0bGFiZWxQb3NpdGlvbj17aWNvbiA/ICdsZWZ0JyA6IHVuZGVmaW5lZH1cblx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0c2V0SXNFZGl0KHRydWUpO1xuXHRcdFx0fX1cblx0XHQ+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdGZsdWlkXG5cdFx0XHRjb21wYWN0XG5cdFx0XHRjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9XG5cdFx0XHRpY29uPXshIWljb259XG5cdFx0XHRsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfVxuXHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRpdGVtLm9uQ2xpY2soZGF0YSk7XG5cdFx0XHR9fVxuXHRcdD5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtEYXRhSG9va3N9IGZyb20gJy4uLy4uL2RhdGFob29rcy9EYXRhSG9va3MnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHt1c2VCdWlsZENvbnRlbnREYXRhfSBmcm9tICcuLi9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhJztcbmltcG9ydCB0eXBlIHtQYWdlLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7SGVhZGVyfSBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQge1NpZGViYXJJdGVtV3JhcHBlcn0gZnJvbSAnLi9TaWRlYmFySXRlbVdyYXBwZXInO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQ29udGVudENvbXBvbmVudCcpO1xuXG5pbnRlcmZhY2UgQ29udGVudENvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdHBhZ2U6IFBhZ2U8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRlbnRDb21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtwYWdlLCBwYXJhbXN9OiBDb250ZW50Q29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkQ29udGVudERhdGEoe3N0YXRlU2VsZWN0b3JIb29rOiBwYWdlLnN0YXRlU2VsZWN0b3JIb29rLCBwYXJhbXN9KTtcblxuXHRjb25zdCBjb250ZW50ID0gcGFnZS5jb250ZW50KGRhdGEpO1xuXHRjb25zdCBzaWRlYmFySXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhwYWdlLnNpZGViYXIgfHwgW10pO1xuXG5cdGNvbnN0IHNpZGViYXIgPVxuXHRcdHNpZGViYXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9e3N0eWxlcy5zaWRlYmFyfT5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25zSGVhZGVyfT5cblx0XHRcdFx0XHQ8aDM+QWN0aW9uczwvaDM+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHR7c2lkZWJhckl0ZW1zLm1hcCgoc2IsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc2lkZWJhckl0ZW19IGtleT17aW5kZXh9PlxuXHRcdFx0XHRcdFx0XHQ8U2lkZWJhckl0ZW1XcmFwcGVyIGl0ZW09e3NifSBwYXJhbXM9e3BhcmFtc30gZGF0YT17ZGF0YX0gLz5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pfVxuXHRcdFx0PC9kaXY+XG5cdFx0KSA6IG51bGw7XG5cblx0cmV0dXJuIChcblx0XHQ8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnBhcmVudH0+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRlbnR9PlxuXHRcdFx0XHQ8SGVhZGVyIGhlYWRlcj17cGFnZS5oZWFkZXJ9IGRhdGE9e2RhdGF9IC8+XG5cdFx0XHRcdHtjb250ZW50fVxuXHRcdFx0PC9kaXY+XG5cdFx0XHR7c2lkZWJhcn1cblx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtwYWdlLmRhdGFIb29rcyB8fCBbXX0gLz5cblx0XHQ8L2Rpdj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBDdXN0b21TaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBDdXN0b21TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGF9OiBDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQsIEs+KSB7XG5cdHJldHVybiBpdGVtLnJlbmRlcihkYXRhKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIENvbnRlbnRIZWFkZXJ9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkhlYWRlcicpO1xuXG5pbnRlcmZhY2UgSGVhZGVyUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aGVhZGVyOiBDb250ZW50SGVhZGVyPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2RhdGEsIGhlYWRlcn06IEhlYWRlclByb3BzPFQsIEs+KSB7XG5cdGlmIChoZWFkZXIpIHtcblx0XHRsZXQgaGVhZGVySW5mbyA9IHtcblx0XHRcdHRpdGxlOiAnJyxcblx0XHR9O1xuXHRcdGlmICh0eXBlb2YgaGVhZGVyID09PSAnc3RyaW5nJykge1xuXHRcdFx0aGVhZGVySW5mby50aXRsZSA9IGhlYWRlcjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXIoZGF0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXI7XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG5cdFx0XHRcdDxoMj57aGVhZGVySW5mby50aXRsZX08L2gyPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TGlua30gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0FjdGlvbkZvcm1TaWRlYmFySXRlbSwgQWN0aW9uU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhLCBDdXN0b21TaWRlYmFySXRlbSwgRGl2aWRlclNpZGViYXJJdGVtLCBTaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRDb2xvciwgZ2V0SWNvbiwgZ2V0Um91dGVUbywgZ2V0VGV4dH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgUGxhaW5TaWRlYmFySXRlbVByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEV4Y2x1ZGU8U2lkZWJhckl0ZW08VCwgSz4sIEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+IHwgQWN0aW9uU2lkZWJhckl0ZW08VCwgSz4gfCBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz4gfCBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz4+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFBsYWluU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogUGxhaW5TaWRlYmFySXRlbVByb3BzPFQsIEs+KSB7XG5cdGNvbnN0IGljb24gPSBnZXRJY29uKGl0ZW0sIGRhdGEpO1xuXG5cdHJldHVybiAoXG5cdFx0PEJ1dHRvbiBmbHVpZCBjb21wYWN0IGNvbG9yPXtnZXRDb2xvcihpdGVtLCBkYXRhKX0gaWNvbj17ISFpY29ufSBsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfSBhcz17TGlua30gdG89e2dldFJvdXRlVG8oaXRlbSwgZGF0YSl9PlxuXHRcdFx0e2ljb259XG5cdFx0XHR7Z2V0VGV4dChpdGVtLCBkYXRhKX1cblx0XHQ8L0J1dHRvbj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJ21pbmdvJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0RpdmlkZXJ9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlQnVpbGRDb250ZW50RGF0YX0gZnJvbSAnLi4vaG9va3MvdXNlQnVpbGRDb250ZW50RGF0YSc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIFJvdXRlUGFyYW1ldGVycywgU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7aXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0sIGlzQWN0aW9uU2lkZWJhckl0ZW0sIGlzQ3VzdG9tU2lkZWJhckl0ZW0sIGlzRGl2aWRlclNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9BY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQnO1xuaW1wb3J0IHtBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9BY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50fSBmcm9tICcuL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7UGxhaW5TaWRlYmFySXRlbX0gZnJvbSAnLi9QbGFpblNpZGViYXJJdGVtJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLlNpZGViYXJJdGVtV3JhcHBlcicpO1xuXG5pbnRlcmZhY2UgU2lkZWJhckl0ZW1XcmFwcGVyUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE/OiBDb250ZW50RGF0YTxULCBLPjtcblx0cGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFtLXVsncGFyYW1zJ10+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2lkZWJhckl0ZW1XcmFwcGVyPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YTogcGFyZW50RGF0YSwgcGFyYW1zfTogU2lkZWJhckl0ZW1XcmFwcGVyUHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkQ29udGVudERhdGEoe2RhdGE6IHBhcmVudERhdGEsIHN0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLCBwYXJhbXN9KTtcblxuXHQvLyBDaGVjayBpZiB2aXNpYmxlXG5cdGlmIChpdGVtLnZpc2libGUpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0udmlzaWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aWYgKCFpdGVtLnZpc2libGUoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBxID0gbmV3IFF1ZXJ5KGl0ZW0udmlzaWJsZSB8fCB7fSk7XG5cdFx0XHRpZiAoIXEudGVzdChkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzQ3VzdG9tU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50IGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cblx0aWYgKGlzQWN0aW9uU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50IGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cblx0aWYgKGlzQWN0aW9uRm9ybVNpZGViYXJJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIDxBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNEaXZpZGVyU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPERpdmlkZXIgLz47XG5cdH1cblxuXHQvLyBAdHMtaWdub3JlIFRoZXNlIHR5cGVzIHNob3VsZCB3b3JrLCBub3Qgc3VyZSB3aHkgaXQncyBub3QuIFJ1bnRpbWUgY29kZSBpcyBmaW5lLlxuXHRyZXR1cm4gPFBsYWluU2lkZWJhckl0ZW0gaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG59XG4iLCJpbXBvcnQgdHlwZSB7Um91dGVzLCBEZWZpbmVSb3V0ZU9wdGlvbnMsIEtleWVkUm91dGVSZW5kZXJGbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0NvbnRlbnRDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9Db250ZW50Q29tcG9uZW50JztcbmltcG9ydCB0eXBlIHtQYWdlcywgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jcmVhdGVQYWdlcycpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnZXM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucz4ocm91dGVzOiBSb3V0ZXM8VD4sIHBhZ2VzOiBQYWdlczxUPikge1xuXHRjb25zdCByZW5kZXJSb3V0ZVByb3BzT2JqID0gT2JqZWN0LmtleXMocm91dGVzLnR5cGVzKS5yZWR1Y2UoKG1lbW8sIGtleSkgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5tZW1vLFxuXHRcdFx0W2tleV06IChwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW3R5cGVvZiBrZXldWydwYXJhbXMnXT4pID0+IHtcblx0XHRcdFx0cmV0dXJuIDxDb250ZW50Q29tcG9uZW50IHBhZ2U9e3BhZ2VzW2tleV19IHBhcmFtcz17cGFyYW1zfSAvPjtcblx0XHRcdH0sXG5cdFx0fTtcblx0fSwge30gYXMgS2V5ZWRSb3V0ZVJlbmRlckZuczxUPik7XG5cblx0cmV0dXJuIHJvdXRlcy5yZW5kZXJSb3V0ZVByb3BzKHJlbmRlclJvdXRlUHJvcHNPYmopO1xufVxuIiwiaW1wb3J0IHR5cGUge0RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkaXZpZGVyU2lkZWJhckl0ZW06IERpdmlkZXJTaWRlYmFySXRlbTxhbnksIGFueT4gPSB7XG5cdHRleHQ6ICcnLFxuXHRkaXZpZGVyOiB0cnVlLFxufTtcbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHR5cGUge1VzZUJ1aWxkRGF0YVBhcmFtc30gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB7dXNlQnVpbGREYXRhfSBmcm9tICcuLi8uLi9ob29rcy91c2VCdWlsZERhdGEnO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIFVzZUJ1aWxkQ29udGVudERhdGFQYXJhbXM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgVXNlQnVpbGREYXRhUGFyYW1zIHtcblx0ZGF0YT86IENvbnRlbnREYXRhPFQsIEs+O1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VCdWlsZENvbnRlbnREYXRhPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7XG5cdGRhdGEsXG5cdHN0YXRlU2VsZWN0b3JIb29rLFxuXHRyb3V0ZUl0ZW0sXG5cdHBhcmFtcyxcbn06IFVzZUJ1aWxkQ29udGVudERhdGFQYXJhbXM8VCwgSz4pIHtcblx0Y29uc3QgYnVpbGREYXRhID0gdXNlQnVpbGREYXRhKHtkYXRhLCBzdGF0ZVNlbGVjdG9ySG9vaywgcm91dGVJdGVtfSk7XG5cdHJldHVybiB7XG5cdFx0Li4uYnVpbGREYXRhLFxuXHRcdHBhcmFtcyxcblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnMsIFBhcmFtZXRlcnNGcm9tQXNzZXJ0aW9ufSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtTZW1hbnRpY0NPTE9SUywgU2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbSwgVmlzaWJpbGl0eUl0ZW0sIFdlaWdodGVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGFIb29rSXRlbX0gZnJvbSAnLi4vZGF0YWhvb2tzL3R5cGVzJztcbmltcG9ydCB0eXBlIHtEYXRhLCBTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZVBhcmFtZXRlcnM8VCBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkPiA9IFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA/IFBhcmFtZXRlcnNGcm9tQXNzZXJ0aW9uPFQ+IDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudERhdGE8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgRGF0YSB7XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gPSAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IEpTWC5FbGVtZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0dGV4dDogc3RyaW5nIHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gc3RyaW5nKTtcblx0aWNvbj86IFNlbWFudGljSUNPTlMgfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBTZW1hbnRpY0lDT05TKTtcblx0Y29sb3I/OiBTZW1hbnRpY0NPTE9SUyB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IFNlbWFudGljQ09MT1JTKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXZpZGVyU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgQmFzZVNpZGViYXJJdGVtPFQsIEs+IHtcblx0ZGl2aWRlcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBCYXNlU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRvbkNsaWNrOiAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Gb3JtUGFyYW1zPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0aGFuZGxlQ2hhbmdlOiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8YW55PikgPT4gdm9pZDtcblx0ZmllbGRFcnJvcjogKGZpZWxkTmFtZTogc3RyaW5nIHwgbnVtYmVyKSA9PiBib29sZWFuO1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIEJhc2VTaWRlYmFySXRlbTxULCBLPiB7XG5cdGZvcm06IChwYXJhbXM6IEFjdGlvbkZvcm1TaWRlYmFySXRlbUZvcm1QYXJhbXM8VCwgSz4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblx0aW5pdGlhbFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcblx0b25TdWJtaXQ/OiAodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gdm9pZDtcblx0dmFsaWRhdGlvblNjaGVtYT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0cmVuZGVyOiAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID1cblx0fCAoQmFzZVNpZGViYXJJdGVtPFQsIEs+ICYgUm91dGVJdGVtKVxuXHR8IEFjdGlvblNpZGViYXJJdGVtPFQsIEs+XG5cdHwgQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz5cblx0fCBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz5cblx0fCBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz47XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRIZWFkZXI8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID1cblx0fCBzdHJpbmdcblx0fCB7dGl0bGU6IHN0cmluZzsgaWNvbj86IHN0cmluZ30gLy8gVE9ETyBpY29uIHNob3VsZCBwcm9iYWJseSBiZSBTZW1hbnRpY0lDT05TXG5cdHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4ge3RpdGxlOiBzdHJpbmc7IGljb24/OiBzdHJpbmd9KVxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGRhdGFIb29rcz86IERhdGFIb29rSXRlbVtdO1xuXHRzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXTtcblx0Y29udGVudDogQ29udGVudDxULCBLPjtcblx0aGVhZGVyPzogQ29udGVudEhlYWRlcjxULCBLPjtcblx0c2lkZWJhcj86IFNpZGViYXJJdGVtPFQsIEs+W107XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnM+ID0ge1xuXHRba2V5IGluIGtleW9mIFRdOiBQYWdlPFQsIGtleT47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEFjdGlvblNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEFjdGlvblNpZGViYXJJdGVtPFQsIEs+KS5vbkNsaWNrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+KS5mb3JtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+KS5yZW5kZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpdmlkZXJTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIERpdmlkZXJTaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAodmFsdWUgYXMgRGl2aWRlclNpZGViYXJJdGVtPFQsIEs+KS5kaXZpZGVyO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBTZW1hbnRpY0NPTE9SU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0Jhc2VTaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRpZiAoaXRlbS5pY29uKSB7XG5cdFx0Y29uc3QgaWNvbk5hbWUgPSB0eXBlb2YgaXRlbS5pY29uID09PSAnZnVuY3Rpb24nID8gaXRlbS5pY29uKGRhdGEpIDogaXRlbS5pY29uO1xuXHRcdHJldHVybiA8SWNvbiBuYW1lPXtpY29uTmFtZX0gLz47XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVRvPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBSb3V0ZUl0ZW0sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSB7XG5cdGlmIChpdGVtLnRvKSB7XG5cdFx0cmV0dXJuIHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nID8gaXRlbS50byhkYXRhKSA6IGl0ZW0udG87XG5cdH1cblx0cmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRyZXR1cm4gdHlwZW9mIGl0ZW0udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udGV4dChkYXRhKSA6IGl0ZW0udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBCYXNlU2lkZWJhckl0ZW08VCwgSz4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KTogU2VtYW50aWNDT0xPUlMge1xuXHRpZiAoIWl0ZW0uY29sb3IpIHJldHVybiAnYmx1ZSc7XG5cdHJldHVybiB0eXBlb2YgaXRlbS5jb2xvciA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uY29sb3IoZGF0YSkgOiBpdGVtLmNvbG9yO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Y29tcG9zZX0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7RXhlY3V0ZURhdGFIb29rfSBmcm9tICcuL0V4ZWN1dGVEYXRhSG9vayc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuZGF0YWhvb2tzLkRhdGFIb29rcycpO1xuXG5pbnRlcmZhY2UgRGF0YUhvb2tzUHJvcHMge1xuXHRkYXRhSG9va3M6IERhdGFIb29rSXRlbVtdO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgbGF5b3V0IGRhdGEgaG9va3MuIFRoZXNlIGhvb2tzIHNob3VsZCByZXR1cm4gbm90aGluZy4gQWxsIGludGVyYWN0aW9uIHNob3VsZCBiZSBpbiBzaWRlLWVmZmVjdHMsIHVzdWFsbHkgcmV0cmlldmluZyBkYXRhIGFuZCBzZXR0aW5nIFJlZHV4IHN0YXRlLlxuICogQHBhcmFtIGRhdGFIb29rc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRhSG9va3Moe2RhdGFIb29rc306IERhdGFIb29rc1Byb3BzKSB7XG5cdGNvbnN0IHtwYXRobmFtZX0gPSB1c2VMb2NhdGlvbigpO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdHtkYXRhSG9va3MubWFwKChob29rLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGhvb2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleH0gZGF0YUhvb2s9e2hvb2t9IC8+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGZuID0gQXJyYXkuaXNBcnJheShob29rLnJvdXRlTWF0Y2gpID8gY29tcG9zZShob29rLnJvdXRlTWF0Y2gpIDogaG9vay5yb3V0ZU1hdGNoO1xuXHRcdFx0XHRjb25zdCByb3V0ZVBhcmFtcyA9IGZuKHBhdGhuYW1lKTtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaG9vay5kYXRhSG9vaykpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRcdFx0PFJlYWN0LkZyYWdtZW50IGtleT17aW5kZXh9PlxuXHRcdFx0XHRcdFx0XHR7aG9vay5kYXRhSG9vay5tYXAoKGRoLCBpbmRleDIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleDJ9IGRhdGFIb29rPXtkaH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdFx0XHRcdFx0fSl9XG5cdFx0XHRcdFx0XHQ8L1JlYWN0LkZyYWdtZW50PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBkYXRhSG9vaz17aG9vay5kYXRhSG9va30ga2V5PXtpbmRleH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdH0pfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGFIb29rfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEV4ZWN1dGVEYXRhSG9va1Byb3BzIHtcblx0ZGF0YUhvb2s6IERhdGFIb29rO1xuXHRyb3V0ZVBhcmFtcz86IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVEYXRhSG9vayh7ZGF0YUhvb2ssIHJvdXRlUGFyYW1zfTogRXhlY3V0ZURhdGFIb29rUHJvcHMpIHtcblx0ZGF0YUhvb2socm91dGVQYXJhbXMpO1xuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb259IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSAncXVlcnlzdHJpbmcnO1xuaW1wb3J0IHt1c2VMb2NhdGlvbn0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgU3RhdGVTZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7dXNlSXNBY3RpdmVSb3V0ZX0gZnJvbSAnLi91c2VJc0FjdGl2ZVJvdXRlJztcbmltcG9ydCB7dXNlU2VsZWN0U3RhdGV9IGZyb20gJy4vdXNlU2VsZWN0U3RhdGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5ob29rcy51c2VCdWlsZERhdGEnKTtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VCdWlsZERhdGFQYXJhbXMge1xuXHRkYXRhPzogRGF0YTtcblx0cm91dGVJdGVtPzogYW55O1xuXHRzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJ1aWxkRGF0YSh7c3RhdGVTZWxlY3Rvckhvb2ssIGRhdGEsIHJvdXRlSXRlbX06IFVzZUJ1aWxkRGF0YVBhcmFtcykge1xuXHRjb25zdCBzdGF0ZSA9IHVzZVNlbGVjdFN0YXRlKHN0YXRlU2VsZWN0b3JIb29rKTtcblx0Y29uc3QgbG9jID0gdXNlTG9jYXRpb24oKSBhcyBMb2NhdGlvbjtcblx0Y29uc3Qgcm91dGUgPSB7XG5cdFx0cGF0aDogY29tcGFjdChsb2MucGF0aG5hbWUuc3BsaXQoJy8nKSksXG5cdFx0aGFzaDogbG9jLmhhc2gsXG5cdFx0c2VhcmNoOiBxdWVyeVN0cmluZy5wYXJzZShsb2Muc2VhcmNoKSxcblx0fTtcblx0Y29uc3QgYWN0aXZlID0gdXNlSXNBY3RpdmVSb3V0ZSh7bG9jLCByb3V0ZSwgc3RhdGUsIGFjdGl2ZTogZmFsc2V9LCByb3V0ZUl0ZW0pO1xuXHRjb25zdCBuZXdEYXRhOiBEYXRhID0ge3N0YXRlLCBsb2MsIGFjdGl2ZSwgcm91dGV9O1xuXG5cdHJldHVybiBkYXRhID8gbWVyZ2UoZGF0YSwgbmV3RGF0YSkgOiBuZXdEYXRhO1xufVxuIiwiaW1wb3J0IHt1c2VSb3V0ZU1hdGNofSBmcm9tICdyZWFjdC1yb3V0ZXInO1xuaW1wb3J0IHR5cGUge1JvdXRlUHJvcHN9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtpc1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzQWN0aXZlUm91dGUoZGF0YTogRGF0YSwgaXRlbT86IGFueSkge1xuXHQvLyBEZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcm91dGUgbWF0Y2hlcyB0aGUgdG8gcm91dGUgdG8gc2VlIGlmIHRoZSBsaW5rIGlzIGFjdGl2ZVxuXHRjb25zdCByb3V0ZU1hdGNoT2JqZWN0OiBSb3V0ZVByb3BzID0ge307XG5cdGlmIChpdGVtICYmIGlzUm91dGVJdGVtKGl0ZW0pKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnc3RyaW5nJykge1xuXHRcdFx0cm91dGVNYXRjaE9iamVjdC5wYXRoID0gaXRlbS50bztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyb3V0ZU1hdGNoT2JqZWN0LnBhdGggPSBpdGVtLnRvKGRhdGEpO1xuXHRcdH1cblx0XHRyb3V0ZU1hdGNoT2JqZWN0LmV4YWN0ID0gaXRlbS5leGFjdCAhPT0gZmFsc2U7XG5cdFx0cm91dGVNYXRjaE9iamVjdC5zZW5zaXRpdmUgPSBpdGVtLnNlbnNpdGl2ZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnN0cmljdCA9IGl0ZW0uc3RyaWN0O1xuXHR9XG5cdGNvbnN0IHJvdXRlTWF0Y2ggPSB1c2VSb3V0ZU1hdGNoKHJvdXRlTWF0Y2hPYmplY3QpO1xuXHRyZXR1cm4gcm91dGVNYXRjaCAhPT0gbnVsbDtcbn1cbiIsImltcG9ydCBmbG93UmlnaHQgZnJvbSAnbG9kYXNoL2Zsb3dSaWdodCc7XG5pbXBvcnQgdHlwZSB7U3RhdGVTZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdFN0YXRlKHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdKSB7XG5cdGxldCBmaW5hbFNlbGVjdG9ySG9vazogKCkgPT4gYW55ID0gKCkgPT4gKHt9KTtcblx0aWYgKHN0YXRlU2VsZWN0b3JIb29rKSB7XG5cdFx0ZmluYWxTZWxlY3Rvckhvb2sgPSBBcnJheS5pc0FycmF5KHN0YXRlU2VsZWN0b3JIb29rKSA/IGZsb3dSaWdodChzdGF0ZVNlbGVjdG9ySG9vaykgOiBzdGF0ZVNlbGVjdG9ySG9vaztcblx0fVxuXHRyZXR1cm4gZmluYWxTZWxlY3Rvckhvb2soKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q3VzdG9tTGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudFByb3BzIHtcblx0aXRlbTogQ3VzdG9tTGF5b3V0SXRlbTtcblx0ZGF0YTogRGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnQoe2l0ZW0sIGRhdGF9OiBDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50UHJvcHMpIHtcblx0cmV0dXJuIGl0ZW0ucmVuZGVyKGRhdGEpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0FjY29yZGlvbiwgRHJvcGRvd24sIEljb24sIE1lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7RHJvcGRvd25MYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldFRleHR9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5Ecm9wZG93bkl0ZW0nKTtcblxuaW50ZXJmYWNlIERyb3Bkb3duSXRlbVByb3BzIHtcblx0aXRlbTogRHJvcGRvd25MYXlvdXRJdGVtO1xuXHRjaGlsZHJlbjogSlNYLkVsZW1lbnRbXTtcblx0ZGF0YTogRGF0YTtcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcGRvd25JdGVtKHtpdGVtLCB2ZXJ0aWNhbCwgY2hpbGRyZW4sIGRhdGF9OiBEcm9wZG93bkl0ZW1Qcm9wcykge1xuXHRjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0aWYgKHZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNZW51Lkl0ZW0gY2xhc3NOYW1lPVwiaW1wZXJpdW1WZXJ0aWNhbERyb3Bkb3duXCI+XG5cdFx0XHRcdDxBY2NvcmRpb24gZmx1aWQ+XG5cdFx0XHRcdFx0PEFjY29yZGlvbi5UaXRsZVxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXtzdHlsZXMudmVydGljYWxEcm9wZG93blRpdGxlfVxuXHRcdFx0XHRcdFx0b25DbGljaz17ZXYgPT4ge1xuXHRcdFx0XHRcdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdFx0c2V0T3Blbighb3Blbik7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdDxJY29uIGNsYXNzTmFtZT17b3BlbiA/IHN0eWxlcy52ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQgOiBzdHlsZXMudmVydGljYWxEcm9wZG93bkljb259IG5hbWU9XCJhcnJvdyByaWdodFwiIC8+XG5cdFx0XHRcdFx0XHR7aXRlbS50ZXh0fVxuXHRcdFx0XHRcdDwvQWNjb3JkaW9uLlRpdGxlPlxuXHRcdFx0XHRcdDxBY2NvcmRpb24uQ29udGVudCBhY3RpdmU9e29wZW59IGNsYXNzTmFtZT17YCR7c3R5bGVzLnZlcnRpY2FsRHJvcGRvd25Db250ZW50fSBpbXBlcml1bVZlcnRpY2FsRHJvcGRvd25Db250ZW50YH0gY2hpbGRyZW49e2NoaWxkcmVufSAvPlxuXHRcdFx0XHQ8L0FjY29yZGlvbj5cblx0XHRcdDwvTWVudS5JdGVtPlxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gKFxuXHRcdDxEcm9wZG93biBpdGVtIHRleHQ9e2dldFRleHQoaXRlbSwgZGF0YSl9IGNsYXNzTmFtZT1cImltcGVyaXVtRHJvcGRvd25cIj5cblx0XHRcdDxEcm9wZG93bi5NZW51IGNsYXNzTmFtZT1cImltcGVyaXVtRHJvcGRvd25Db250ZW50XCI+e2NoaWxkcmVufTwvRHJvcGRvd24uTWVudT5cblx0XHQ8L0Ryb3Bkb3duPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge1JlYWN0Tm9kZSwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2VnbWVudH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuaW1wb3J0IHttb3ZlSXRlbXN9IGZyb20gJy4uL21vdmVJdGVtcyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXRJdGVtQmFyfSBmcm9tICcuL0xheW91dEl0ZW1CYXInO1xuaW1wb3J0IHtTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbX0gZnJvbSAnLi9TZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0Jyk7XG5cbmludGVyZmFjZSBMYXlvdXRQcm9wcyBleHRlbmRzIFJlcXVpcmVkPExheW91dERhdGE+IHtcblx0Y2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgbWFpbiBsYXlvdXQuXG4gKiBIaWRlcy9zaG93cy9jb2xsYXBzZXMgdGhpbmdzIGFzIG5lZWQgZm9yIG1vYmlsZSBsYXlvdXQuXG4gKiBUcmFja3Mgc3RhdGUgdG8gd2hldGhlciB0aGUgc2lkZSBtZW51IGlzIG9wZW4gb3Igbm90LlxuICogQHBhcmFtIGZvb3RlclxuICogQHBhcmFtIG1lbnViYXJcbiAqIEBwYXJhbSBzdGF0dXNiYXJcbiAqIEBwYXJhbSBjaGlsZHJlblxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXQoe2Zvb3RlciwgcHJpbWFyeU1lbnUsIHN0YXR1c2Jhciwgc2Vjb25kYXJ5TWVudSwgY2hpbGRyZW59OiBMYXlvdXRQcm9wcykge1xuXHRjb25zdCB7aXNNb2JpbGV9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3QgW21lbnVPcGVuLCBzZXRNZW51T3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuXHRjb25zdCBwcmltYXJ5TWVudVRvZ2dsZSA9IHtcblx0XHRzdGlja09uTW9iaWxlOiB0cnVlLFxuXHRcdHdlaWdodDogLTE5OTk5LFxuXHRcdHJlbmRlcjogKCkgPT4ge1xuXHRcdFx0aWYgKCFpc01vYmlsZSkgcmV0dXJuIG51bGw7XG5cdFx0XHRyZXR1cm4gPFNlY29uZGFyeU1lbnVUb2dnbGVJdGVtIG1lbnVPcGVuPXttZW51T3Blbn0gc2V0TWVudU9wZW49e3NldE1lbnVPcGVufSAvPjtcblx0XHR9LFxuXHR9O1xuXG5cdC8vIERldGVybWluZSBtZW51YmFyIGl0ZW1zXG5cdGNvbnN0IHByaW1hcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGUgPyBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgPT09IHRydWUpIDogW3ByaW1hcnlNZW51VG9nZ2xlLCAuLi5wcmltYXJ5TWVudV0sXG5cdCk7XG5cblx0Ly8gY29uc3QgcG1pID0gbWVyZ2VJdGVtcyhwcmltYXJ5TWVudUl0ZW1zKTtcblxuXHQvLyBEZXRlcm1pbmUgc2lkZWJhciBpdGVtc1xuXHRjb25zdCBzZWNvbmRhcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGVcblx0XHRcdD8gW1xuXHRcdFx0XHRcdC4uLnNlY29uZGFyeU1lbnUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGV4dDogJycsXG5cdFx0XHRcdFx0XHRtZW51OiBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgIT09IHRydWUpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHQgIF1cblx0XHRcdDogc2Vjb25kYXJ5TWVudSxcblx0KTtcblxuXHRjb25zdCBzZWNvbmRhcnlNZW51Q29tcCA9XG5cdFx0c2Vjb25kYXJ5TWVudUl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8TGF5b3V0SXRlbUJhclxuXHRcdFx0XHRcdG5hbWU9XCJzaWRlYmFyXCJcblx0XHRcdFx0XHRpdGVtcz17c2Vjb25kYXJ5TWVudUl0ZW1zfVxuXHRcdFx0XHRcdGludmVydGVkXG5cdFx0XHRcdFx0dmVydGljYWxcblx0XHRcdFx0XHRjbGFzc05hbWU9e2lzTW9iaWxlICYmICFtZW51T3BlbiA/IGAke3N0eWxlcy5zaWRlYmFyfSAke3N0eWxlcy5zaWRlYmFySGlkZGVufSBpbXBlcml1bVNpZGViYXJgIDogYCR7c3R5bGVzLnNpZGViYXJ9IGltcGVyaXVtU2lkZWJhcmB9XG5cdFx0XHRcdC8+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpIDogbnVsbDtcblxuXHQvLyBEZXRlcm1pbmUgZm9vdGVyIGl0ZW1zXG5cdGNvbnN0IGZvb3Rlckl0ZW1zID0gbW92ZUl0ZW1zKGZvb3Rlcik7XG5cdGNvbnN0IGZvb3RlckNvbXAgPVxuXHRcdGZvb3Rlckl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8TGF5b3V0SXRlbUJhciBuYW1lPVwiZm9vdGVyXCIgaXRlbXM9e2Zvb3Rlckl0ZW1zfSBjbGFzc05hbWU9e2Ake3N0eWxlcy5mb290ZXJ9IGltcGVyaXVtRm9vdGVyYH0gaW52ZXJ0ZWQgYm9yZGVybGVzcyAvPlxuXHRcdCkgOiBudWxsO1xuXG5cdC8vIERldGVybWluZSBzdGF0dXMgYmFyIGl0ZW1zXG5cdGNvbnN0IHN0YXR1c2Jhckl0ZW1zID0gbW92ZUl0ZW1zKHN0YXR1c2Jhcik7XG5cdGNvbnN0IHN0YXR1c2JhckNvbXAgPVxuXHRcdHN0YXR1c2Jhckl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8TGF5b3V0SXRlbUJhciBuYW1lPVwic3RhdHVzYmFyXCIgaXRlbXM9e3N0YXR1c2Jhckl0ZW1zfSBpbnZlcnRlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zdGF0dXNiYXJ9IGltcGVyaXVtU3RhdHVzYmFyYH0gLz5cblx0XHQpIDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMucGFyZW50fSBpbXBlcml1bUxheW91dGB9PlxuXHRcdFx0PGRpdj5cblx0XHRcdFx0PExheW91dEl0ZW1CYXIgbmFtZT1cIm1lbnViYXJcIiBpdGVtcz17cHJpbWFyeU1lbnVJdGVtc30gaW52ZXJ0ZWQgYm9yZGVybGVzcyBjbGFzc05hbWU9e2Ake3N0eWxlcy5tZW51YmFyfSBpbXBlcml1bU1lbnViYXJgfSAvPlxuXHRcdFx0XHR7c3RhdHVzYmFyQ29tcH1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PFNlZ21lbnQgYXR0YWNoZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudFdyYXBwZXJ9IGltcGVyaXVtQ29udGVudFdyYXBwZXJgfT5cblx0XHRcdFx0e3NlY29uZGFyeU1lbnVDb21wfVxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmNvbnRlbnR9IGltcGVyaXVtQ29udGVudGB9PntjaGlsZHJlbn08L2Rpdj5cblx0XHRcdDwvU2VnbWVudD5cblx0XHRcdHtmb290ZXJDb21wfVxuXHRcdDwvZGl2PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7TWVudVByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge01lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3NwbGl0UG9zaXRpb25lZEl0ZW1zfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0xheW91dEl0ZW1XcmFwcGVyfSBmcm9tICcuL0xheW91dEl0ZW1XcmFwcGVyJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5MYXlvdXRJdGVtQmFyJyk7XG5cbmludGVyZmFjZSBJdGVtQmFyUHJvcHMgZXh0ZW5kcyBNZW51UHJvcHMge1xuXHRpdGVtczogTGF5b3V0SXRlbVtdO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJhciBvZiBtZW51IGl0ZW1zLlxuICogQHBhcmFtIG5hbWVcbiAqIEBwYXJhbSBpdGVtc1xuICogQHBhcmFtIHJlc3RcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gTGF5b3V0SXRlbUJhcih7aXRlbXMsIC4uLnJlc3R9OiBJdGVtQmFyUHJvcHMpIHtcblx0Y29uc3QgaW1zID0gc3BsaXRQb3NpdGlvbmVkSXRlbXMoaXRlbXMpO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0Y29uc3QgbGVmdEl0ZW1zID0gc29ydFdlaWdodGVkSXRlbXMoaW1zLmxlZnRJdGVtcykubWFwKChpdGVtLCBpbmRleCkgPT4gPExheW91dEl0ZW1XcmFwcGVyIGl0ZW09e2l0ZW19IGtleT17aW5kZXh9IHZlcnRpY2FsPXtyZXN0LnZlcnRpY2FsfSAvPik7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0Y29uc3QgcmlnaHRJdGVtcyA9IHNvcnRXZWlnaHRlZEl0ZW1zKGltcy5yaWdodEl0ZW1zKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIgaXRlbT17aXRlbX0ga2V5PXtpbmRleH0gdmVydGljYWw9e3Jlc3QudmVydGljYWx9IC8+KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxNZW51IHsuLi5yZXN0fT5cblx0XHRcdHtsZWZ0SXRlbXN9XG5cdFx0XHR7cmVzdC52ZXJ0aWNhbCA/IHJpZ2h0SXRlbXMgOiA8TWVudS5NZW51IHBvc2l0aW9uPVwicmlnaHRcIj57cmlnaHRJdGVtc308L01lbnUuTWVudT59XG5cdFx0PC9NZW51PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJ21pbmdvJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3dufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUJ1aWxkRGF0YX0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge3NvcnRXZWlnaHRlZEl0ZW1zfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtpc0N1c3RvbUxheW91dEl0ZW0sIGlzRHJvcGRvd25MYXlvdXRJdGVtLCBpc01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0N1c3RvbUxheW91dEl0ZW1Db21wb25lbnR9IGZyb20gJy4vQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbX0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAnLi9NZW51SXRlbSc7XG5pbXBvcnQge1BsYWluSXRlbX0gZnJvbSAnLi9QbGFpbkl0ZW0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1XcmFwcGVyJyk7XG5cbmludGVyZmFjZSBJdGVtV3JhcHBlclByb3BzIHtcblx0aXRlbTogTGF5b3V0SXRlbTtcblx0YXM/OiBSZWFjdC5Db21wb25lbnRDbGFzcztcblx0dmVydGljYWw/OiBib29sZWFuO1xuXHRkYXRhPzogRGF0YTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFueSB0eXBlIG9mIEl0ZW0uIEdhdGhlcnMgc3RhdGUsIHJvdXRlIGFuZCBvdGhlciBkYXRhIGFuZCBjaGVja3MgZm9yIHZpc2liaWxpdHkuXG4gKiBAcGFyYW0gaXRlbVxuICogQHBhcmFtIGFzXG4gKiBAcGFyYW0gdmVydGljYWxcbiAqIEBwYXJhbSBwYXJlbnREYXRhXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dEl0ZW1XcmFwcGVyKHtpdGVtLCBhcywgdmVydGljYWwsIGRhdGE6IHBhcmVudERhdGF9OiBJdGVtV3JhcHBlclByb3BzKSB7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZERhdGEoe3N0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLCByb3V0ZUl0ZW06IGl0ZW0sIGRhdGE6IHBhcmVudERhdGF9KTtcblxuXHQvLyBDaGVjayBpZiB2aXNpYmxlXG5cdGlmIChpdGVtLnZpc2libGUpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0udmlzaWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aWYgKCFpdGVtLnZpc2libGUoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBxID0gbmV3IFF1ZXJ5KGl0ZW0udmlzaWJsZSB8fCB7fSk7XG5cdFx0XHRpZiAoIXEudGVzdChkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzQ3VzdG9tTGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8Q3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXHRpZiAoaXNEcm9wZG93bkxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpdGVtLmRyb3Bkb3duKS5tYXAoKHYsIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIga2V5PXtpbmRleH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IGRhdGE9e2RhdGF9IC8+KTtcblx0XHRyZXR1cm4gPERyb3Bkb3duSXRlbSBpdGVtPXtpdGVtfSBjaGlsZHJlbj17Y2hpbGRyZW59IHZlcnRpY2FsPXt2ZXJ0aWNhbH0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpdGVtLm1lbnUpLm1hcCgodiwgaW5kZXgpID0+IChcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdDxMYXlvdXRJdGVtV3JhcHBlciBrZXk9e2luZGV4fSBpdGVtPXt2fSBhcz17RHJvcGRvd24uSXRlbX0gdmVydGljYWw9e3ZlcnRpY2FsfSBkYXRhPXtkYXRhfSAvPlxuXHRcdCkpO1xuXHRcdHJldHVybiA8TWVudUl0ZW0gaXRlbT17aXRlbX0gY2hpbGRyZW49e2NoaWxkcmVufSAvPjtcblx0fVxuXHRyZXR1cm4gPFBsYWluSXRlbSBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSBhcz17YXN9IC8+O1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBNZW51SXRlbVByb3BzIHtcblx0aXRlbTogTWVudUxheW91dEl0ZW07XG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVudUl0ZW0oe2l0ZW0sIGNoaWxkcmVufTogTWVudUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8TWVudS5IZWFkZXI+e2l0ZW0udGV4dH08L01lbnUuSGVhZGVyPlxuXHRcdFx0PE1lbnUuTWVudSBjb21wYWN0PVwiXCI+e2NoaWxkcmVufTwvTWVudS5NZW51PlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtDdXN0b21MYXlvdXRJdGVtLCBEcm9wZG93bkxheW91dEl0ZW0sIExheW91dEl0ZW0sIE1lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldEljb24sIGdldFRleHQsIGxpbmtQYXJhbWV0ZXJzfSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBQbGFpbkl0ZW1Qcm9wcyB7XG5cdGl0ZW06IEV4Y2x1ZGU8TGF5b3V0SXRlbSwgTWVudUxheW91dEl0ZW0gfCBEcm9wZG93bkxheW91dEl0ZW0gfCBDdXN0b21MYXlvdXRJdGVtPjtcblx0ZGF0YTogRGF0YTtcblx0YXM/OiBSZWFjdC5Db21wb25lbnRDbGFzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFBsYWluSXRlbSh7aXRlbSwgZGF0YSwgYXN9OiBQbGFpbkl0ZW1Qcm9wcykge1xuXHRjb25zdCBsaW5rUGFyYW1zID0gbGlua1BhcmFtZXRlcnMoaXRlbSwgZGF0YSk7XG5cblx0Y29uc3QgSXRlbVggPSBhcyB8fCBNZW51Lkl0ZW07XG5cblx0cmV0dXJuIChcblx0XHQ8SXRlbVggey4uLmxpbmtQYXJhbXN9PlxuXHRcdFx0e2dldEljb24oaXRlbSwgZGF0YSl9XG5cdFx0XHR7Z2V0VGV4dChpdGVtLCBkYXRhKX1cblx0XHQ8L0l0ZW1YPlxuXHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5pbnRlcmZhY2UgU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcyB7XG5cdG1lbnVPcGVuOiBib29sZWFuO1xuXHRzZXRNZW51T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSh7bWVudU9wZW4sIHNldE1lbnVPcGVufTogU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8SWNvblxuXHRcdFx0XHRjbGFzc05hbWU9e21lbnVPcGVuID8gc3R5bGVzLmljb25Sb3RhdGVkIDogc3R5bGVzLmljb259XG5cdFx0XHRcdG5hbWU9e21lbnVPcGVuID8gJ2Nsb3NlJyA6ICdzaWRlYmFyJ31cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdHNldE1lbnVPcGVuKCFtZW51T3Blbik7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7dXNlTWVkaWFRdWVyeX0gZnJvbSAncmVhY3QtcmVzcG9uc2l2ZSc7XG5pbXBvcnQge2FjdGlvbnN9IGZyb20gJy4uLy4uL3N0YXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vYmlsZUxheW91dCgpIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkoe3F1ZXJ5OiAnKG1heC13aWR0aDogOTAwcHgpJ30pO1xuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGRpc3BhdGNoKGFjdGlvbnMuc2V0TW9iaWxlKGlzTW9iaWxlKSk7XG5cdH0sIFtkaXNwYXRjaCwgaXNNb2JpbGVdKTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgZ3JvdXBCeSBmcm9tICdsb2Rhc2gvZ3JvdXBCeSc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0SXRlbX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2lzRHJvcGRvd25MYXlvdXRJdGVtLCBpc01lbnVMYXlvdXRJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQubW92ZUl0ZW1zJyk7XG5cbmZ1bmN0aW9uIHB1bGxJdGVtcyhpdGVtczogTGF5b3V0SXRlbVtdLCBwdWxsZWQ6IExheW91dEl0ZW1bXSA9IFtdKTogTGF5b3V0SXRlbVtdIHtcblx0cmV0dXJuIGl0ZW1zLnJlZHVjZSgobWVtbywgaXRlbSkgPT4ge1xuXHRcdGlmIChpc0Ryb3Bkb3duTGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0Li4ubWVtbyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC4uLml0ZW0sXG5cdFx0XHRcdFx0ZHJvcGRvd246IHB1bGxJdGVtcyhpdGVtLmRyb3Bkb3duLCBwdWxsZWQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAoaXNNZW51TGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0Li4ubWVtbyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC4uLml0ZW0sXG5cdFx0XHRcdFx0bWVudTogcHVsbEl0ZW1zKGl0ZW0ubWVudSwgcHVsbGVkKSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKCFpdGVtLm1vdmVUb0tleSkge1xuXHRcdFx0cmV0dXJuIFsuLi5tZW1vLCBpdGVtXTtcblx0XHR9XG5cblx0XHRwdWxsZWQucHVzaChpdGVtKTtcblx0XHRyZXR1cm4gbWVtbztcblx0fSwgW10gYXMgTGF5b3V0SXRlbVtdKTtcbn1cblxuZnVuY3Rpb24gYWRkSXRlbXMoaXRlbXM6IExheW91dEl0ZW1bXSwgcHVsbGVkOiBSZWNvcmQ8c3RyaW5nLCBMYXlvdXRJdGVtW10+KTogTGF5b3V0SXRlbVtdIHtcblx0cmV0dXJuIGl0ZW1zLnJlZHVjZSgobWVtbywgaXRlbSkgPT4ge1xuXHRcdGlmIChpc0Ryb3Bkb3duTGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdFx0Y29uc3QgbmV3SXRlbXMgPSBpdGVtLmtleSAmJiBwdWxsZWRbaXRlbS5rZXldID8gcHVsbGVkW2l0ZW0ua2V5XSA6IFtdO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0Li4ubWVtbyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC4uLml0ZW0sXG5cdFx0XHRcdFx0ZHJvcGRvd246IFsuLi5hZGRJdGVtcyhpdGVtLmRyb3Bkb3duLCBwdWxsZWQpLCAuLi5uZXdJdGVtc10sXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pICYmIGl0ZW0ua2V5KSB7XG5cdFx0XHRjb25zdCBuZXdJdGVtcyA9IGl0ZW0ua2V5ICYmIHB1bGxlZFtpdGVtLmtleV0gPyBwdWxsZWRbaXRlbS5rZXldIDogW107XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRtZW51OiBbLi4uYWRkSXRlbXMoaXRlbS5tZW51LCBwdWxsZWQpLCAuLi5uZXdJdGVtc10sXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblx0XHRyZXR1cm4gWy4uLm1lbW8sIGl0ZW1dO1xuXHR9LCBbXSBhcyBMYXlvdXRJdGVtW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZUl0ZW1zKGl0ZW1zOiBMYXlvdXRJdGVtW10pIHtcblx0Y29uc3QgcHVsbGVkOiBMYXlvdXRJdGVtW10gPSBbXTtcblx0Y29uc3QgaXRlbXNNaW51c1B1bGxlZCA9IHB1bGxJdGVtcyhpdGVtcywgcHVsbGVkKTtcblx0cmV0dXJuIGFkZEl0ZW1zKGl0ZW1zTWludXNQdWxsZWQsIGdyb3VwQnkocHVsbGVkLCAnbW92ZVRvS2V5JykpO1xufVxuIiwiaW1wb3J0IHR5cGUge1NlbWFudGljSUNPTlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0sIFJvdXRlSXRlbSwgVmlzaWJpbGl0eUl0ZW0sIFdlaWdodGVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGFIb29rSXRlbX0gZnJvbSAnLi4vZGF0YWhvb2tzL3R5cGVzJztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgYmFzaWMgd2VpZ2h0ZWQsIHBvc3NpYmx5IHZpc2libGUgaXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VMYXlvdXRJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHRleHQ6IHN0cmluZyB8ICgoZGF0YTogRGF0YSkgPT4gc3RyaW5nKTtcblx0aWNvbj86IFNlbWFudGljSUNPTlMgfCAoKGRhdGE6IERhdGEpID0+IFNlbWFudGljSUNPTlMpO1xuXHRtb3ZlVG9LZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTGF5b3V0SXRlbSBleHRlbmRzIFdlaWdodGVkSXRlbSwgVmlzaWJpbGl0eUl0ZW0ge1xuXHRyZW5kZXI6IChkYXRhOiBEYXRhKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG5cdG1vdmVUb0tleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBtZW51IHRoYXQgZGlzcGxheXMgYSBkcm9wZG93biBsaXN0IG9mIGl0ZW1zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25MYXlvdXRJdGVtIGV4dGVuZHMgQmFzZUxheW91dEl0ZW0ge1xuXHRkcm9wZG93bjogKChCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbSkgfCBDdXN0b21MYXlvdXRJdGVtKVtdO1xuXHRrZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgc3ViIG1lbnUgKG5vdCBhIGRyb3Bkb3duIGxpc3QpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUxheW91dEl0ZW0gZXh0ZW5kcyBCYXNlTGF5b3V0SXRlbSB7XG5cdG1lbnU6ICgoQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW0pIHwgQ3VzdG9tTGF5b3V0SXRlbSlbXTtcblx0a2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIGhvcml6b250YWwgbWVudSBpdGVtIHdoaWNoIGlzIGVpdGhlciBhIHJvdXRlIGl0ZW0gb3IgZHJvcGRvd24gbWVudVxuICovXG5leHBvcnQgdHlwZSBMYXlvdXRJdGVtID0gKEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtKSB8IERyb3Bkb3duTGF5b3V0SXRlbSB8IE1lbnVMYXlvdXRJdGVtIHwgQ3VzdG9tTGF5b3V0SXRlbTtcblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXREYXRhIHtcblx0ZGF0YUhvb2tzPzogRGF0YUhvb2tJdGVtW107XG5cdHByaW1hcnlNZW51PzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIHByaW1hcnkgbWVudVxuXHRzdGF0dXNiYXI/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTtcblx0c2Vjb25kYXJ5TWVudT86IExheW91dEl0ZW1bXTsgLy8gc2Vjb25kYXJ5IG1lbnVcblx0Zm9vdGVyPzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIGZvb3RlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21MYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbUxheW91dEl0ZW0pLnJlbmRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHJvcGRvd25MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEcm9wZG93bkxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgRHJvcGRvd25MYXlvdXRJdGVtKS5kcm9wZG93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWVudUxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIE1lbnVMYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIE1lbnVMYXlvdXRJdGVtKS5tZW51O1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TGlua30gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge0ljb24sIFNlbWFudGljSUNPTlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtSb3V0ZUl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB7aXNIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7QmFzZUxheW91dEl0ZW0sIExheW91dEl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNwbGl0cyBwb3NpdGlvbmVkIGl0ZW1zIGludG8gbGVmdCBhbmQgcmlnaHQgYXJyYXlzIChpZiBob3Jpem9udGFsKVxuICogQHBhcmFtIGl0ZW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFBvc2l0aW9uZWRJdGVtczxUIGV4dGVuZHMgTGF5b3V0SXRlbT4oaXRlbXM6IFRbXSkge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKFxuXHRcdChtZW1vLCB2KSA9PiB7XG5cdFx0XHRpZiAoaXNIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0odikgJiYgdi5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxlZnRJdGVtczogbWVtby5sZWZ0SXRlbXMsXG5cdFx0XHRcdFx0cmlnaHRJdGVtczogWy4uLm1lbW8ucmlnaHRJdGVtcywgdl0sXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRsZWZ0SXRlbXM6IFsuLi5tZW1vLmxlZnRJdGVtcywgdl0sXG5cdFx0XHRcdHJpZ2h0SXRlbXM6IG1lbW8ucmlnaHRJdGVtcyxcblx0XHRcdH07XG5cdFx0fSxcblx0XHR7bGVmdEl0ZW1zOiBbXSwgcmlnaHRJdGVtczogW119IGFzIHtsZWZ0SXRlbXM6IFRbXTsgcmlnaHRJdGVtczogVFtdfSxcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtQYXJhbWV0ZXJzKGl0ZW06IEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtLCBkYXRhOiBEYXRhKSB7XG5cdHJldHVybiBpdGVtLnRvXG5cdFx0PyB7XG5cdFx0XHRcdGFzOiBMaW5rLFxuXHRcdFx0XHRhY3RpdmU6IGRhdGEuYWN0aXZlLFxuXHRcdFx0XHR0bzogdHlwZW9mIGl0ZW0udG8gPT09ICdmdW5jdGlvbicgPyBpdGVtLnRvKGRhdGEpIDogaXRlbS50byxcblx0XHQgIH1cblx0XHQ6IHt9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dChpdGVtOiBCYXNlTGF5b3V0SXRlbSwgZGF0YTogRGF0YSkge1xuXHRyZXR1cm4gdHlwZW9mIGl0ZW0udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udGV4dChkYXRhKSA6IGl0ZW0udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEljb24oaXRlbTogQmFzZUxheW91dEl0ZW0sIGRhdGE6IERhdGEpIHtcblx0Ly8gR2VuZXJhdGUgdGhlIGljb24gY29tcG9uZW50LCBpZiBpdCBleGlzdHNcblx0bGV0IGljb25OYW1lOiBTZW1hbnRpY0lDT05TIHwgdW5kZWZpbmVkO1xuXHRpZiAoaXRlbS5pY29uKSB7XG5cdFx0aWNvbk5hbWUgPSB0eXBlb2YgaXRlbS5pY29uID09PSAnZnVuY3Rpb24nID8gaXRlbS5pY29uKGRhdGEpIDogaXRlbS5pY29uO1xuXHR9XG5cdHJldHVybiBpdGVtLmljb24gPyA8SWNvbiBuYW1lPXtpY29uTmFtZX0gLz4gOiBudWxsO1xufVxuIiwiaW1wb3J0IHR5cGUge0hvYywgSW1wZXJpdW1DbGllbnR9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGF0YUhvb2tzfSBmcm9tICcuLi9kYXRhaG9va3MvRGF0YUhvb2tzJztcbmltcG9ydCB7aXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXR9IGZyb20gJy4vY29tcG9uZW50cy9MYXlvdXQnO1xuaW1wb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC53aXRoTGF5b3V0Jyk7XG5cbmNvbnN0IGluaXRpYWxMYXlvdXRNb2R1bGVEYXRhOiBSZXF1aXJlZDxMYXlvdXREYXRhPiA9IHtcblx0ZGF0YUhvb2tzOiBbXSxcblx0cHJpbWFyeU1lbnU6IFtdLFxuXHRzdGF0dXNiYXI6IFtdLFxuXHRzZWNvbmRhcnlNZW51OiBbXSxcblx0Zm9vdGVyOiBbXSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTGF5b3V0KGNsaWVudDogSW1wZXJpdW1DbGllbnQpOiBIb2Mge1xuXHRjb25zdCBsYXlvdXRNb2R1bGVEYXRhID0gY2xpZW50Lm1vZHVsZXMucmVkdWNlKChtZW1vLCBtb2R1bGUpID0+IHtcblx0XHRpZiAoaXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZShtb2R1bGUpKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkYXRhSG9va3M6IFsuLi4obWVtby5kYXRhSG9va3MgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5kYXRhSG9va3MgfHwgW10pXSxcblx0XHRcdFx0cHJpbWFyeU1lbnU6IFsuLi4obWVtby5wcmltYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnByaW1hcnlNZW51IHx8IFtdKV0sXG5cdFx0XHRcdHN0YXR1c2JhcjogWy4uLihtZW1vLnN0YXR1c2JhciB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnN0YXR1c2JhciB8fCBbXSldLFxuXHRcdFx0XHRzZWNvbmRhcnlNZW51OiBbLi4uKG1lbW8uc2Vjb25kYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnNlY29uZGFyeU1lbnUgfHwgW10pXSxcblx0XHRcdFx0Zm9vdGVyOiBbLi4uKG1lbW8uZm9vdGVyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuZm9vdGVyIHx8IFtdKV0sXG5cdFx0XHR9IGFzIFJlcXVpcmVkPExheW91dERhdGE+O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtbztcblx0fSwgaW5pdGlhbExheW91dE1vZHVsZURhdGEpO1xuXHRkKCdMYXlvdXQgaXRlbXMgcHJvY2Vzc2VkJywgbGF5b3V0TW9kdWxlRGF0YSk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0cmV0dXJuIGZ1bmN0aW9uIGxheW91dEhvYyhXcmFwcGVkOiBDb21wb25lbnRUeXBlPGFueT4pIHtcblx0XHRjb25zdCBkaXNwbGF5TmFtZSA9IFdyYXBwZWQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZC5uYW1lIHx8ICcnO1xuXG5cdFx0ZnVuY3Rpb24gV2l0aExheW91dChwcm9wczogdW5rbm93bikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PD5cblx0XHRcdFx0XHQ8TGF5b3V0IHsuLi5sYXlvdXRNb2R1bGVEYXRhfT5cblx0XHRcdFx0XHRcdDxXcmFwcGVkIHsuLi5wcm9wc30gbGF5b3V0PXtsYXlvdXRNb2R1bGVEYXRhfSAvPlxuXHRcdFx0XHRcdDwvTGF5b3V0PlxuXHRcdFx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtsYXlvdXRNb2R1bGVEYXRhLmRhdGFIb29rc30gLz5cblx0XHRcdFx0PC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdFdpdGhMYXlvdXQuZGlzcGxheU5hbWUgPSBgd2l0aExheW91dCgke2Rpc3BsYXlOYW1lfSlgO1xuXG5cdFx0cmV0dXJuIFdpdGhMYXlvdXQ7XG5cdH07XG59XG4iLCJpbXBvcnQge2NyZWF0ZVNsaWNlSG9va30gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7Y3JlYXRlU2xpY2UsIFBheWxvYWRBY3Rpb259IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuXG5leHBvcnQgY29uc3Qgc3RhdGUgPSBjcmVhdGVTbGljZSh7XG5cdG5hbWU6ICdpbXBlcml1bUxheW91dCcsXG5cdGluaXRpYWxTdGF0ZToge1xuXHRcdGlzTW9iaWxlOiBmYWxzZSxcblx0fSxcblx0cmVkdWNlcnM6IHtcblx0XHRzZXRNb2JpbGU6IChzdCwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4+KSA9PiAoey4uLnN0LCBpc01vYmlsZTogYWN0aW9uLnBheWxvYWR9KSxcblx0fSxcbn0pO1xuXG5leHBvcnQgY29uc3QgdXNlTGF5b3V0U3RhdGUgPSBjcmVhdGVTbGljZUhvb2soc3RhdGUpO1xuXG5leHBvcnQgY29uc3Qge2FjdGlvbnN9ID0gc3RhdGU7XG4iLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1DbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge0xvY2F0aW9ufSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuL2xheW91dC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFN0YXRlID0gUmVjb3JkPHN0cmluZywgYW55Pjtcbi8qKlxuICogQSBob29rIHRoYXQgc2VsZWN0cyBmcm9tIHJlZHV4IHN0YXRlLlxuICovXG5leHBvcnQgdHlwZSBTdGF0ZVNlbGVjdG9ySG9vayA9ICgpID0+IFN0YXRlO1xuLyoqXG4gKiBUaGUgdmlzaWJpbGl0eSBxdWVyeSBjYW4gZWl0aGVyIGJlIGEgbWluZ28gcXVlcnkgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBib29sZWFuLiBUaGUgZGF0YSBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgcm91dGVyIHBhdGggbWVyZ2VkIHdpdGggYW55IHN0YXRlIHNlbGVjdG9yIGhvb2sgZGF0YS5cbiAqL1xuZXhwb3J0IHR5cGUgVmlzaWJpbGl0eVF1ZXJ5Rm4gPSAoZGF0YTogRGF0YSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRsb2M6IExvY2F0aW9uO1xuXHRyb3V0ZToge1xuXHRcdHBhdGg6IHN0cmluZ1tdO1xuXHRcdGhhc2g6IHN0cmluZztcblx0XHRzZWFyY2g6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cdH07XG5cdHN0YXRlOiBTdGF0ZTtcblx0YWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIGV4dGVuZHMgSW1wZXJpdW1DbGllbnRNb2R1bGUge1xuXHRsYXlvdXQ6IExheW91dERhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZTogSW1wZXJpdW1DbGllbnRNb2R1bGUpOiBtb2R1bGUgaXMgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUge1xuXHRjb25zdCBsYXlvdXRNb2R1bGUgPSBtb2R1bGUgYXMgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGU7XG5cdHJldHVybiBsYXlvdXRNb2R1bGUubGF5b3V0ICE9PSB1bmRlZmluZWQ7XG59XG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5pbXBvcnQgc29ydEJ5IGZyb20gJ2xvZGFzaC9zb3J0QnknO1xuaW1wb3J0IHR5cGUge1dlaWdodGVkSXRlbX0gZnJvbSAnLi9jb21tb25JdGVtcyc7XG5cbi8qKlxuICogU29ydHMgd2VpZ2h0ZWQgaXRlbXNcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRXZWlnaHRlZEl0ZW1zID0gbWVtb2l6ZShmdW5jdGlvbiBzb3J0V2VpZ2h0ZWRJdGVtc0ltcGw8VCBleHRlbmRzIFdlaWdodGVkSXRlbT4oaXRlbXM6IFRbXSkge1xuXHRyZXR1cm4gc29ydEJ5KGl0ZW1zLCB2ID0+IHYud2VpZ2h0IHx8IDApO1xufSk7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGltcGVyaXVtL3N0YXRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9jb250cm9sc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvY29tcGFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZmxvd1JpZ2h0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9mcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZ3JvdXBCeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvbWVtb2l6ZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtaW5nb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZXNwb25zaXZlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXItZG9tXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzZW1hbnRpYy11aS1yZWFjdFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IHR5cGUge0ltcGVyaXVtU3RhdGVDbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9zdGF0ZSc7XG5pbXBvcnQge3VzZU1vYmlsZUxheW91dH0gZnJvbSAnLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0JztcbmltcG9ydCB7d2l0aExheW91dH0gZnJvbSAnLi9sYXlvdXQvd2l0aExheW91dCc7XG5pbXBvcnQge3N0YXRlfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXRDbGllbnRNb2R1bGUoKTogSW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZSAmIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiAnQGltcGVyaXVtL2xheW91dCcsXG5cdFx0b3JkZXI6IDMwLFxuXHRcdGhvY3M6IFt3aXRoTGF5b3V0XSxcblx0XHRzdGF0ZSxcblx0XHRsYXlvdXQ6IHtcblx0XHRcdGRhdGFIb29rczogW3VzZU1vYmlsZUxheW91dF0sXG5cdFx0fSxcblx0fTtcbn1cblxuZXhwb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vbGF5b3V0L3R5cGVzJztcbmV4cG9ydCB7dXNlTGF5b3V0U3RhdGUsIGFjdGlvbnMgYXMgbGF5b3V0QWN0aW9uc30gZnJvbSAnLi9zdGF0ZSc7XG5leHBvcnQge2NyZWF0ZVBhZ2VzfSBmcm9tICcuL2NvbnRlbnQvY3JlYXRlUGFnZXMnO1xuZXhwb3J0IHR5cGUge0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7ZGl2aWRlclNpZGViYXJJdGVtfSBmcm9tICcuL2NvbnRlbnQvZGl2aWRlclNpZGViYXJJdGVtJztcbiJdLCJuYW1lcyI6WyJpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSIsInZhbHVlIiwicG9zaXRpb24iLCJzdGlja09uTW9iaWxlIiwiaXNSb3V0ZUl0ZW0iLCJ0byIsImV4YWN0Iiwic3RyaWN0Iiwic2Vuc2l0aXZlIiwidXNlVEZvcm0iLCJkZWJ1ZyIsIlJlYWN0IiwiQnV0dG9uIiwiRm9ybSIsIkljb24iLCJNZXNzYWdlIiwiUG9wdXAiLCJkIiwiQWN0aW9uRm9ybSIsIml0ZW0iLCJkYXRhIiwib25IaWRlRm9ybSIsImluaXRpYWxWYWx1ZXMiLCJvblN1Ym1pdCIsInN1Ym1pdFZhbHVlcyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsInZhbGlkYXRpb25TY2hlbWEiLCJoYXNFcnJvcnMiLCJoYXNXYXJuaW5ncyIsImhhbmRsZVN1Ym1pdCIsImhhbmRsZUNoYW5nZSIsInZhbHVlcyIsInJlc2V0Rm9ybSIsImVycm9ycyIsImZpZWxkRXJyb3IiLCJzYXZlQnV0dG9uIiwiT2JqZWN0IiwiZm9ybSIsInVzZVN0YXRlIiwiZ2V0Q29sb3IiLCJnZXRJY29uIiwiZ2V0VGV4dCIsIkFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCIsImlzRWRpdCIsInNldElzRWRpdCIsImljb24iLCJ1bmRlZmluZWQiLCJBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudCIsIm9uQ2xpY2siLCJEYXRhSG9va3MiLCJzb3J0V2VpZ2h0ZWRJdGVtcyIsInVzZUJ1aWxkQ29udGVudERhdGEiLCJIZWFkZXIiLCJTaWRlYmFySXRlbVdyYXBwZXIiLCJzdHlsZXMiLCJDb250ZW50Q29tcG9uZW50IiwicGFnZSIsInBhcmFtcyIsInN0YXRlU2VsZWN0b3JIb29rIiwiY29udGVudCIsInNpZGViYXJJdGVtcyIsInNpZGViYXIiLCJsZW5ndGgiLCJhY3Rpb25zSGVhZGVyIiwibWFwIiwic2IiLCJpbmRleCIsInNpZGViYXJJdGVtIiwicGFyZW50IiwiaGVhZGVyIiwiZGF0YUhvb2tzIiwiQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQiLCJyZW5kZXIiLCJoZWFkZXJJbmZvIiwidGl0bGUiLCJMaW5rIiwiZ2V0Um91dGVUbyIsIlBsYWluU2lkZWJhckl0ZW0iLCJRdWVyeSIsIkRpdmlkZXIiLCJpc0FjdGlvbkZvcm1TaWRlYmFySXRlbSIsImlzQWN0aW9uU2lkZWJhckl0ZW0iLCJpc0N1c3RvbVNpZGViYXJJdGVtIiwiaXNEaXZpZGVyU2lkZWJhckl0ZW0iLCJwYXJlbnREYXRhIiwidmlzaWJsZSIsInEiLCJ0ZXN0IiwiY3JlYXRlUGFnZXMiLCJyb3V0ZXMiLCJwYWdlcyIsInJlbmRlclJvdXRlUHJvcHNPYmoiLCJrZXlzIiwidHlwZXMiLCJyZWR1Y2UiLCJtZW1vIiwia2V5IiwicmVuZGVyUm91dGVQcm9wcyIsImRpdmlkZXJTaWRlYmFySXRlbSIsInRleHQiLCJkaXZpZGVyIiwidXNlQnVpbGREYXRhIiwicm91dGVJdGVtIiwiYnVpbGREYXRhIiwiaWNvbk5hbWUiLCJjb2xvciIsImNvbXBvc2UiLCJ1c2VMb2NhdGlvbiIsIkV4ZWN1dGVEYXRhSG9vayIsInBhdGhuYW1lIiwiaG9vayIsImZuIiwiQXJyYXkiLCJpc0FycmF5Iiwicm91dGVNYXRjaCIsInJvdXRlUGFyYW1zIiwiZGF0YUhvb2siLCJkaCIsImluZGV4MiIsImNvbXBhY3QiLCJtZXJnZSIsInF1ZXJ5U3RyaW5nIiwidXNlSXNBY3RpdmVSb3V0ZSIsInVzZVNlbGVjdFN0YXRlIiwic3RhdGUiLCJsb2MiLCJyb3V0ZSIsInBhdGgiLCJzcGxpdCIsImhhc2giLCJzZWFyY2giLCJwYXJzZSIsImFjdGl2ZSIsIm5ld0RhdGEiLCJ1c2VSb3V0ZU1hdGNoIiwicm91dGVNYXRjaE9iamVjdCIsImZsb3dSaWdodCIsImZpbmFsU2VsZWN0b3JIb29rIiwiQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCIsIkFjY29yZGlvbiIsIkRyb3Bkb3duIiwiTWVudSIsIkRyb3Bkb3duSXRlbSIsInZlcnRpY2FsIiwiY2hpbGRyZW4iLCJvcGVuIiwic2V0T3BlbiIsInZlcnRpY2FsRHJvcGRvd25UaXRsZSIsImV2Iiwic3RvcFByb3BhZ2F0aW9uIiwidmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIiwidmVydGljYWxEcm9wZG93bkljb24iLCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudCIsIlNlZ21lbnQiLCJ1c2VMYXlvdXRTdGF0ZSIsIm1vdmVJdGVtcyIsIkxheW91dEl0ZW1CYXIiLCJTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSIsIkxheW91dCIsImZvb3RlciIsInByaW1hcnlNZW51Iiwic3RhdHVzYmFyIiwic2Vjb25kYXJ5TWVudSIsImlzTW9iaWxlIiwibWVudU9wZW4iLCJzZXRNZW51T3BlbiIsInByaW1hcnlNZW51VG9nZ2xlIiwid2VpZ2h0IiwicHJpbWFyeU1lbnVJdGVtcyIsImZpbHRlciIsInYiLCJzZWNvbmRhcnlNZW51SXRlbXMiLCJtZW51Iiwic2Vjb25kYXJ5TWVudUNvbXAiLCJzaWRlYmFySGlkZGVuIiwiZm9vdGVySXRlbXMiLCJmb290ZXJDb21wIiwic3RhdHVzYmFySXRlbXMiLCJzdGF0dXNiYXJDb21wIiwibWVudWJhciIsImNvbnRlbnRXcmFwcGVyIiwic3BsaXRQb3NpdGlvbmVkSXRlbXMiLCJMYXlvdXRJdGVtV3JhcHBlciIsIml0ZW1zIiwicmVzdCIsImltcyIsImxlZnRJdGVtcyIsInJpZ2h0SXRlbXMiLCJpc0N1c3RvbUxheW91dEl0ZW0iLCJpc0Ryb3Bkb3duTGF5b3V0SXRlbSIsImlzTWVudUxheW91dEl0ZW0iLCJNZW51SXRlbSIsIlBsYWluSXRlbSIsImFzIiwiZHJvcGRvd24iLCJJdGVtIiwibGlua1BhcmFtZXRlcnMiLCJsaW5rUGFyYW1zIiwiSXRlbVgiLCJpY29uUm90YXRlZCIsInVzZUVmZmVjdCIsInVzZURpc3BhdGNoIiwidXNlTWVkaWFRdWVyeSIsImFjdGlvbnMiLCJ1c2VNb2JpbGVMYXlvdXQiLCJkaXNwYXRjaCIsInF1ZXJ5Iiwic2V0TW9iaWxlIiwiZ3JvdXBCeSIsInB1bGxJdGVtcyIsInB1bGxlZCIsIm1vdmVUb0tleSIsInB1c2giLCJhZGRJdGVtcyIsIm5ld0l0ZW1zIiwiaXRlbXNNaW51c1B1bGxlZCIsImlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUiLCJpbml0aWFsTGF5b3V0TW9kdWxlRGF0YSIsIndpdGhMYXlvdXQiLCJjbGllbnQiLCJsYXlvdXRNb2R1bGVEYXRhIiwibW9kdWxlcyIsIm1vZHVsZSIsImxheW91dCIsImxheW91dEhvYyIsIldyYXBwZWQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJXaXRoTGF5b3V0IiwicHJvcHMiLCJjcmVhdGVTbGljZUhvb2siLCJjcmVhdGVTbGljZSIsImluaXRpYWxTdGF0ZSIsInJlZHVjZXJzIiwic3QiLCJhY3Rpb24iLCJwYXlsb2FkIiwibGF5b3V0TW9kdWxlIiwibWVtb2l6ZSIsInNvcnRCeSIsInNvcnRXZWlnaHRlZEl0ZW1zSW1wbCIsImxheW91dENsaWVudE1vZHVsZSIsIm9yZGVyIiwiaG9jcyIsImxheW91dEFjdGlvbnMiXSwic291cmNlUm9vdCI6IiJ9
3410
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ3NIO0FBQ2pCO0FBQ3JHLDhCQUE4QixtRkFBMkIsQ0FBQyw0RkFBcUM7QUFDL0Y7QUFDQSxxRkFBcUYsWUFBWSxrQkFBa0Isd0JBQXdCLGlCQUFpQixHQUFHLGdEQUFnRCxZQUFZLDBCQUEwQixHQUFHLGdEQUFnRCxtQ0FBbUMsR0FBRyxvREFBb0QsaUJBQWlCLGdCQUFnQixHQUFHLCtDQUErQyxvQ0FBb0MsMEJBQTBCLEdBQUcsZ0RBQWdELHFCQUFxQixrQkFBa0IscUJBQXFCLHVCQUF1QixHQUFHLG9EQUFvRCx1QkFBdUIsR0FBRyxzREFBc0Qsa0JBQWtCLEdBQUcsa0RBQWtELCtDQUErQyw2QkFBNkIsbUJBQW1CLEtBQUssZ0RBQWdELHlCQUF5QiwyQkFBMkIsS0FBSyxnREFBZ0Qsc0JBQXNCLEtBQUssc0RBQXNELHFCQUFxQix5QkFBeUIsS0FBSyxHQUFHLFNBQVMsZ0dBQWdHLFVBQVUsVUFBVSxZQUFZLFdBQVcsTUFBTSxLQUFLLFVBQVUsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssVUFBVSxVQUFVLE1BQU0sS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFVBQVUsTUFBTSxLQUFLLEtBQUssWUFBWSxXQUFXLEtBQUssS0FBSyxZQUFZLGFBQWEsTUFBTSxLQUFLLFVBQVUsTUFBTSxLQUFLLFVBQVUsWUFBWSxNQUFNLGtDQUFrQyxZQUFZLGtCQUFrQix3QkFBd0IsaUJBQWlCLEdBQUcsY0FBYyxZQUFZLDBCQUEwQixHQUFHLGNBQWMsbUNBQW1DLEdBQUcsa0JBQWtCLGlCQUFpQixnQkFBZ0IsR0FBRyxhQUFhLG9DQUFvQywwQkFBMEIsR0FBRyxjQUFjLHFCQUFxQixrQkFBa0IscUJBQXFCLHVCQUF1QixHQUFHLGtCQUFrQix1QkFBdUIsR0FBRyxvQkFBb0Isa0JBQWtCLEdBQUcsa0RBQWtELGFBQWEsNkJBQTZCLG1CQUFtQixLQUFLLGNBQWMseUJBQXlCLDJCQUEyQixLQUFLLGNBQWMsc0JBQXNCLEtBQUssb0JBQW9CLHFCQUFxQix5QkFBeUIsS0FBSyxHQUFHLHFCQUFxQjtBQUNua0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLHVCQUF1QixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakJ2QztBQUNzSDtBQUNqQjtBQUNyRyw4QkFBOEIsbUZBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0Esa0dBQWtHLGlCQUFpQixHQUFHLGVBQWUsaUJBQWlCLEdBQUcsOENBQThDLHFCQUFxQixrQkFBa0IsMkJBQTJCLEdBQUcsK0NBQStDLGdDQUFnQyx5QkFBeUIsR0FBRyxpREFBaUQseUJBQXlCLGdDQUFnQyxHQUFHLHFEQUFxRCxnQ0FBZ0MsMkJBQTJCLDRCQUE0QixnQ0FBZ0MseUJBQXlCLHNCQUFzQiw0R0FBNEcsR0FBRywyREFBMkQsbUNBQW1DLEdBQUcsc0RBQXNELFlBQVksa0JBQWtCLHdCQUF3QixzQkFBc0IsMEJBQTBCLDRDQUE0QyxrR0FBa0csa0VBQWtFLCtDQUErQyxhQUFhLDRIQUE0SCxpQkFBaUIsc0JBQXNCLHVGQUF1RixrRUFBa0UsOENBQThDLHlCQUF5QixnQ0FBZ0MsR0FBRyw0REFBNEQsNEJBQTRCLGdDQUFnQyxvQkFBb0IsR0FBRyxtRUFBbUUsNkJBQTZCLGdDQUFnQyxvQkFBb0IsR0FBRyw2REFBNkQsZUFBZSwyQkFBMkIsR0FBRywrREFBK0QsOEJBQThCLGdDQUFnQyxxQkFBcUIsR0FBRyw0Q0FBNEMsNEJBQTRCLHNDQUFzQyxvQkFBb0IsR0FBRyxtREFBbUQsK0JBQStCLCtCQUErQixvQkFBb0IsR0FBRyxTQUFTLHNHQUFzRyxNQUFNLFVBQVUsS0FBSyxLQUFLLFVBQVUsTUFBTSxLQUFLLFlBQVksV0FBVyxZQUFZLE9BQU8sS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLHlCQUF5QixhQUFhLE9BQU8sS0FBSyxZQUFZLE9BQU8sS0FBSyxVQUFVLFVBQVUsWUFBWSxhQUFhLGFBQWEseUJBQXlCLHlCQUF5QixPQUFPLEtBQUssc0JBQXNCLGFBQWEsV0FBVyx3QkFBd0IseUJBQXlCLE9BQU8sS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFlBQVksYUFBYSxXQUFXLE9BQU8sS0FBSyxZQUFZLGFBQWEsV0FBVyxPQUFPLEtBQUssVUFBVSxZQUFZLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLFdBQVcsT0FBTyxLQUFLLFlBQVksYUFBYSxXQUFXLDJGQUEyRixpQkFBaUIsR0FBRyx3QkFBd0IsaUJBQWlCLEdBQUcsYUFBYSxxQkFBcUIsa0JBQWtCLDJCQUEyQixHQUFHLGNBQWMsZ0NBQWdDLHlCQUF5QixHQUFHLGdCQUFnQix5QkFBeUIsZ0NBQWdDLEdBQUcsb0JBQW9CLGdDQUFnQywyQkFBMkIsNEJBQTRCLGdDQUFnQyx5QkFBeUIsc0JBQXNCLDRHQUE0RyxHQUFHLDBCQUEwQixtQ0FBbUMsR0FBRyxxQkFBcUIsWUFBWSxrQkFBa0Isd0JBQXdCLHNCQUFzQiwwQkFBMEIsNENBQTRDLGtHQUFrRyxrRUFBa0UsY0FBYyxhQUFhLDRIQUE0SCxpQkFBaUIsc0JBQXNCLHVGQUF1RixrRUFBa0UsYUFBYSx5QkFBeUIsZ0NBQWdDLEdBQUcsMkJBQTJCLDRCQUE0QixnQ0FBZ0Msb0JBQW9CLEdBQUcsa0NBQWtDLDZCQUE2QixnQ0FBZ0Msb0JBQW9CLEdBQUcsNEJBQTRCLGVBQWUsMkJBQTJCLEdBQUcsOEJBQThCLDhCQUE4QixnQ0FBZ0MscUJBQXFCLEdBQUcsV0FBVyw0QkFBNEIsc0NBQXNDLG9CQUFvQixHQUFHLGtCQUFrQiwrQkFBK0IsK0JBQStCLG9CQUFvQixHQUFHLHFCQUFxQjtBQUN4aEw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLHVCQUF1QixFQUFDOzs7Ozs7Ozs7OztBQ3ZCMUI7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxREFBcUQ7QUFDckQ7O0FBRUE7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQSxxRkFBcUY7QUFDckY7O0FBRUE7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLHNCQUFzQjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHNGQUFzRixxQkFBcUI7QUFDM0c7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixpREFBaUQscUJBQXFCO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Ysc0RBQXNELHFCQUFxQjtBQUMzRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7QUNyR2E7O0FBRWI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURBQXVELGNBQWM7QUFDckU7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7QUFDQTs7QUFNQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBOztBQVFBO0FBQ0E7QUFDQTtBQU1PLFNBQVNBLDBCQUFULENBQW9DQyxLQUFwQyxFQUFtRjtBQUN6RixTQUFPLENBQUMsRUFBR0EsS0FBRCxDQUFvQ0MsUUFBcEMsSUFBaURELEtBQUQsQ0FBb0NFLGFBQXRGLENBQVI7QUFDQTtBQUVNLFNBQVNDLFdBQVQsQ0FBd0JILEtBQXhCLEVBQTJEO0FBQ2pFLFNBQU8sQ0FBQyxFQUFHQSxLQUFELENBQXdCSSxFQUF4QixJQUErQkosS0FBRCxDQUF3QkssS0FBdEQsSUFBZ0VMLEtBQUQsQ0FBd0JNLE1BQXZGLElBQWtHTixLQUFELENBQXdCTyxTQUEzSCxDQUFSO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hDRDtBQUNBO0FBQ0E7QUFDQTs7QUFHQSxJQUFNUyxDQUFDLEdBQUdQLDRDQUFLLENBQUMsK0NBQUQsQ0FBZjtBQVFPLFNBQVNRLFVBQVQsT0FBc0g7QUFBQTs7QUFBQSxNQUFoREMsSUFBZ0QsUUFBaERBLElBQWdEO0FBQUEsTUFBMUNDLElBQTBDLFFBQTFDQSxJQUEwQztBQUFBLE1BQXBDQyxVQUFvQyxRQUFwQ0EsVUFBb0M7QUFDNUg7QUFDQSxNQUFJQyxhQUFhLEdBQUcsRUFBcEI7O0FBQ0EsTUFBSUgsSUFBSSxDQUFDRyxhQUFULEVBQXdCO0FBQ3ZCLFFBQUksT0FBT0gsSUFBSSxDQUFDRyxhQUFaLEtBQThCLFVBQWxDLEVBQThDO0FBQzdDQSxNQUFBQSxhQUFhLEdBQUdILElBQUksQ0FBQ0csYUFBTCxDQUFtQkYsSUFBbkIsQ0FBaEI7QUFDQSxLQUZELE1BRU87QUFDTkUsTUFBQUEsYUFBYSxHQUFHSCxJQUFJLENBQUNHLGFBQXJCO0FBQ0E7QUFDRCxHQVQySCxDQVc1SDs7O0FBQ0Esa0JBQW9HYix1REFBUSxDQUFDO0FBQzVHYSxJQUFBQSxhQUFhLEVBQWJBLGFBRDRHO0FBRTVHQyxJQUFBQSxRQUFRLEVBQUUsa0JBQUFDLFlBQVksRUFBSTtBQUN6QixVQUFJTCxJQUFJLENBQUNJLFFBQVQsRUFBbUI7QUFDbEJKLFFBQUFBLElBQUksQ0FBQ0ksUUFBTCxDQUFjQyxZQUFkLEVBQTRCSixJQUE1QjtBQUNBOztBQUNEQyxNQUFBQSxVQUFVO0FBQ1YsS0FQMkc7QUFRNUdJLElBQUFBLGtCQUFrQixFQUFFLElBUndGO0FBUzVHQyxJQUFBQSxnQkFBZ0IsRUFBRVAsSUFBSSxDQUFDTztBQVRxRixHQUFELENBQTVHO0FBQUEsTUFBT0MsU0FBUCxhQUFPQSxTQUFQO0FBQUEsTUFBa0JDLFdBQWxCLGFBQWtCQSxXQUFsQjtBQUFBLE1BQStCQyxZQUEvQixhQUErQkEsWUFBL0I7QUFBQSxNQUE2Q0MsWUFBN0MsYUFBNkNBLFlBQTdDO0FBQUEsTUFBMkRDLE1BQTNELGFBQTJEQSxNQUEzRDtBQUFBLE1BQW1FQyxTQUFuRSxhQUFtRUEsU0FBbkU7QUFBQSxNQUE4RUMsTUFBOUUsYUFBOEVBLE1BQTlFO0FBQUEsTUFBc0ZDLFVBQXRGLGFBQXNGQSxVQUF0Rjs7QUFZQSxNQUFNQyxVQUFVLEdBQUdQLFdBQVcsZ0JBQzdCLDhEQUFDLG9EQUFEO0FBQ0MsV0FBTyxlQUNOLDhEQUFDLHFEQUFEO0FBQVEsY0FBUSxNQUFoQjtBQUFpQixVQUFJLEVBQUMsUUFBdEI7QUFBK0IsYUFBTyxFQUFDLE9BQXZDO0FBQStDLFVBQUksTUFBbkQ7QUFBb0QsbUJBQWEsRUFBQyxNQUFsRTtBQUFBLDhCQUNDLDhEQUFDLG1EQUFEO0FBQU0sWUFBSSxFQUFDLG9CQUFYO0FBQWdDLGFBQUssRUFBQztBQUF0QztBQUFBO0FBQUE7QUFBQTtBQUFBLGNBREQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBRkY7QUFPQyxXQUFPLGVBQUUsOERBQUMsc0RBQUQ7QUFBUyxXQUFLLE1BQWQ7QUFBZSxVQUFJLEVBQUVRLE1BQU0sQ0FBQ0wsTUFBUCxDQUFjRSxNQUFkO0FBQXJCO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFQVjtBQVFDLE1BQUUsRUFBQztBQVJKO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFENkIsZ0JBWTdCLDhEQUFDLHFEQUFEO0FBQVEsWUFBUSxNQUFoQjtBQUFpQixRQUFJLEVBQUMsUUFBdEI7QUFBK0IsV0FBTyxFQUFDLE9BQXZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBWkQsQ0F4QjRILENBeUM1SDs7QUFDQSxzQkFDQyw4REFBQyxtREFBRDtBQUFNLFNBQUssRUFBRU4sU0FBYjtBQUF3QixXQUFPLEVBQUVDLFdBQWpDO0FBQThDLFlBQVEsRUFBRUMsWUFBeEQ7QUFBQSxlQUNFVixJQUFJLENBQUNrQixJQUFMLENBQVU7QUFBQ1AsTUFBQUEsWUFBWSxFQUFaQSxZQUFEO0FBQWVDLE1BQUFBLE1BQU0sRUFBTkEsTUFBZjtBQUF1QlgsTUFBQUEsSUFBSSxFQUFKQSxJQUF2QjtBQUE2QmMsTUFBQUEsVUFBVSxFQUFWQTtBQUE3QixLQUFWLENBREYsRUFFRUMsVUFGRixlQUdDLDhEQUFDLHFEQUFEO0FBQ0MsVUFBSSxFQUFDLFFBRE47QUFFQyxhQUFPLEVBQUUsbUJBQU07QUFDZEgsUUFBQUEsU0FBUztBQUNUWCxRQUFBQSxVQUFVO0FBQ1YsT0FMRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUhEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBZUE7O0dBekRlSDtVQVlxRlQ7OztLQVpyRlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZGhCO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7O0FBRUEsSUFBTUQsQ0FBQyxHQUFHUCw0Q0FBSyxDQUFDLG1FQUFELENBQWY7QUFPTyxTQUFTZ0MsOEJBQVQsT0FHdUM7QUFBQTs7QUFBQSxNQUY3Q3ZCLElBRTZDLFFBRjdDQSxJQUU2QztBQUFBLE1BRDdDQyxJQUM2QyxRQUQ3Q0EsSUFDNkM7O0FBQzdDLGtCQUE0QmtCLCtDQUFRLENBQUMsS0FBRCxDQUFwQztBQUFBO0FBQUEsTUFBT0ssTUFBUDtBQUFBLE1BQWVDLFNBQWY7O0FBRUEsTUFBSUQsTUFBSixFQUFZO0FBQ1gsd0JBQ0MsOERBQUMsbURBQUQ7QUFDQyxVQUFJLEVBQUV4QixJQURQO0FBRUMsVUFBSSxFQUFFQyxJQUZQO0FBR0MsZ0JBQVUsRUFBRSxzQkFBTTtBQUNqQndCLFFBQUFBLFNBQVMsQ0FBQyxLQUFELENBQVQ7QUFDQTtBQUxGO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERDtBQVNBOztBQUVELE1BQU1DLElBQUksR0FBR0wsK0NBQU8sQ0FBQ3JCLElBQUQsRUFBT0MsSUFBUCxDQUFwQixDQWY2QyxDQWlCN0M7O0FBQ0Esc0JBQ0MsOERBQUMscURBQUQ7QUFDQyxTQUFLLE1BRE47QUFFQyxXQUFPLE1BRlI7QUFHQyxTQUFLLEVBQUVtQixnREFBUSxDQUFDcEIsSUFBRCxFQUFPQyxJQUFQLENBSGhCO0FBSUMsUUFBSSxFQUFFLENBQUMsQ0FBQ3lCLElBSlQ7QUFLQyxpQkFBYSxFQUFFQSxJQUFJLEdBQUcsTUFBSCxHQUFZQyxTQUxoQztBQU1DLFdBQU8sRUFBRSxtQkFBTTtBQUNkRixNQUFBQSxTQUFTLENBQUMsSUFBRCxDQUFUO0FBQ0EsS0FSRjtBQUFBLGVBVUVDLElBVkYsRUFXRUosK0NBQU8sQ0FBQ3RCLElBQUQsRUFBT0MsSUFBUCxDQVhUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBZUE7O0dBcENlc0I7O0tBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2RoQjtBQUNBO0FBRUE7O0FBT08sU0FBU0ssMEJBQVQsT0FBMEk7QUFBQSxNQUFwRDVCLElBQW9ELFFBQXBEQSxJQUFvRDtBQUFBLE1BQTlDQyxJQUE4QyxRQUE5Q0EsSUFBOEM7QUFDaEosTUFBTXlCLElBQUksR0FBR0wsK0NBQU8sQ0FBQ3JCLElBQUQsRUFBT0MsSUFBUCxDQUFwQjtBQUVBLHNCQUNDLDhEQUFDLHFEQUFEO0FBQ0MsU0FBSyxNQUROO0FBRUMsV0FBTyxNQUZSO0FBR0MsU0FBSyxFQUFFbUIsZ0RBQVEsQ0FBQ3BCLElBQUQsRUFBT0MsSUFBUCxDQUhoQjtBQUlDLFFBQUksRUFBRSxDQUFDLENBQUN5QixJQUpUO0FBS0MsaUJBQWEsRUFBRUEsSUFBSSxHQUFHLE1BQUgsR0FBWUMsU0FMaEM7QUFNQyxXQUFPLEVBQUUsbUJBQU07QUFDZDNCLE1BQUFBLElBQUksQ0FBQzZCLE9BQUwsQ0FBYTVCLElBQWI7QUFDQSxLQVJGO0FBQUEsZUFVRXlCLElBVkYsRUFXRUosK0NBQU8sQ0FBQ3RCLElBQUQsRUFBT0MsSUFBUCxDQVhUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBZUE7S0FsQmUyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVmhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTTlCLENBQUMsR0FBR1AsNENBQUssQ0FBQyxxREFBRCxDQUFmO0FBT08sU0FBUzZDLGdCQUFULE9BQXdIO0FBQUE7O0FBQUE7O0FBQUEsTUFBNUNDLElBQTRDLFFBQTVDQSxJQUE0QztBQUFBLE1BQXRDQyxNQUFzQyxRQUF0Q0EsTUFBc0M7QUFDOUgsTUFBTXJDLElBQUksR0FBRytCLCtFQUFtQixDQUFDO0FBQUNPLElBQUFBLGlCQUFpQixFQUFFRixJQUFJLENBQUNFLGlCQUF6QjtBQUE0Q0QsSUFBQUEsTUFBTSxFQUFOQTtBQUE1QyxHQUFELENBQWhDO0FBRUEsTUFBTUUsT0FBTyxHQUFHSCxJQUFJLENBQUNHLE9BQUwsQ0FBYXZDLElBQWIsQ0FBaEI7QUFDQSxNQUFNd0MsWUFBWSxHQUFHVix5REFBaUIsQ0FBQ00sSUFBSSxDQUFDSyxPQUFMLElBQWdCLEVBQWpCLENBQXRDO0FBRUEsTUFBTUEsT0FBTyxHQUNaRCxZQUFZLENBQUNFLE1BQWIsR0FBc0IsQ0FBdEIsZ0JBQ0M7QUFBSyxhQUFTLFlBQUtSLDJEQUFMLDRCQUFkO0FBQUEsNEJBQ0M7QUFBSyxlQUFTLFlBQUtBLGlFQUFMLGtDQUFkO0FBQUEsNkJBQ0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERDtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBREQsRUFJRU0sWUFBWSxDQUFDSSxHQUFiLENBQWlCLFVBQUNDLEVBQUQsRUFBS0MsS0FBTCxFQUFlO0FBQ2hDO0FBQUE7QUFDQztBQUNBO0FBQUssbUJBQVMsRUFBRVosK0RBQWhCO0FBQUEsaUNBQ0MsOERBQUMsbUVBQUQ7QUFBb0IsZ0JBQUksRUFBRVcsRUFBMUI7QUFBOEIsa0JBQU0sRUFBRVIsTUFBdEM7QUFBOEMsZ0JBQUksRUFBRXJDO0FBQXBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERCxXQUF5QzhDLEtBQXpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFGRDtBQU1BLEtBUEEsQ0FKRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERCxHQWNJLElBZkw7QUFpQkEsc0JBQ0M7QUFBSyxhQUFTLFlBQUtaLDBEQUFMLGtDQUFkO0FBQUEsNEJBQ0M7QUFBSyxlQUFTLFlBQUtBLDJEQUFMLDRCQUFkO0FBQUEsOEJBQ0MsOERBQUMsMkNBQUQ7QUFBUSxjQUFNLEVBQUVFLElBQUksQ0FBQ2MsTUFBckI7QUFBNkIsWUFBSSxFQUFFbEQ7QUFBbkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQURELGVBRUM7QUFBSyxpQkFBUyxZQUFLa0MsMkRBQUwsOEJBQXVDRSxJQUFJLENBQUNlLElBQUwsSUFBYWpCLCtEQUFwRCxDQUFkO0FBQUEsa0JBQXlGSztBQUF6RjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBRkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBREQsRUFLRUUsT0FMRixlQU1DLDhEQUFDLDJEQUFEO0FBQVcsZUFBUyxFQUFFTCxJQUFJLENBQUNpQixTQUFMLElBQWtCO0FBQXhDO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFORDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERDtBQVVBOztHQWpDZWxCO1VBQ0ZKOzs7S0FERUk7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZULFNBQVNtQiwwQkFBVCxPQUEwSTtBQUFBLE1BQXBEdkQsSUFBb0QsUUFBcERBLElBQW9EO0FBQUEsTUFBOUNDLElBQThDLFFBQTlDQSxJQUE4QztBQUNoSixTQUFPRCxJQUFJLENBQUN3RCxNQUFMLENBQVl2RCxJQUFaLENBQVA7QUFDQTtLQUZlc0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUGhCO0FBQ0E7QUFFQTs7QUFFQSxJQUFNekQsQ0FBQyxHQUFHUCw0Q0FBSyxDQUFDLDJDQUFELENBQWY7QUFPTyxTQUFTMEMsTUFBVCxPQUFvRztBQUFBLE1BQWxDaEMsSUFBa0MsUUFBbENBLElBQWtDO0FBQUEsTUFBNUJrRCxNQUE0QixRQUE1QkEsTUFBNEI7O0FBQzFHLE1BQUlBLE1BQUosRUFBWTtBQUNYLFFBQUlNLFVBQVUsR0FBRztBQUNoQkMsTUFBQUEsS0FBSyxFQUFFO0FBRFMsS0FBakI7O0FBR0EsUUFBSSxPQUFPUCxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO0FBQy9CTSxNQUFBQSxVQUFVLENBQUNDLEtBQVgsR0FBbUJQLE1BQW5CO0FBQ0EsS0FGRCxNQUVPLElBQUksT0FBT0EsTUFBUCxLQUFrQixVQUF0QixFQUFrQztBQUN4Q00sTUFBQUEsVUFBVSxHQUFHTixNQUFNLENBQUNsRCxJQUFELENBQW5CO0FBQ0EsS0FGTSxNQUVBO0FBQ053RCxNQUFBQSxVQUFVLEdBQUdOLE1BQWI7QUFDQTs7QUFDRCx3QkFDQztBQUFLLGVBQVMsWUFBS2hCLDBEQUFMLDJCQUFkO0FBQUEsNkJBQ0M7QUFBQSxrQkFBS3NCLFVBQVUsQ0FBQ0M7QUFBaEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUREO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERDtBQUtBOztBQUNELFNBQU8sSUFBUDtBQUNBO0tBbkJlekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNaaEI7QUFDQTtBQUNBO0FBRUE7O0FBT08sU0FBUzRCLGdCQUFULE9BQXNIO0FBQUEsTUFBMUM3RCxJQUEwQyxRQUExQ0EsSUFBMEM7QUFBQSxNQUFwQ0MsSUFBb0MsUUFBcENBLElBQW9DO0FBQzVILE1BQU15QixJQUFJLEdBQUdMLCtDQUFPLENBQUNyQixJQUFELEVBQU9DLElBQVAsQ0FBcEI7QUFFQSxzQkFDQyw4REFBQyxxREFBRDtBQUFRLFNBQUssTUFBYjtBQUFjLFdBQU8sTUFBckI7QUFBc0IsU0FBSyxFQUFFbUIsZ0RBQVEsQ0FBQ3BCLElBQUQsRUFBT0MsSUFBUCxDQUFyQztBQUFtRCxRQUFJLEVBQUUsQ0FBQyxDQUFDeUIsSUFBM0Q7QUFBaUUsaUJBQWEsRUFBRUEsSUFBSSxHQUFHLE1BQUgsR0FBWUMsU0FBaEc7QUFBMkcsTUFBRSxFQUFFZ0Msa0RBQS9HO0FBQXFILE1BQUUsRUFBRUMsa0RBQVUsQ0FBQzVELElBQUQsRUFBT0MsSUFBUCxDQUFuSTtBQUFBLGVBQ0V5QixJQURGLEVBRUVKLCtDQUFPLENBQUN0QixJQUFELEVBQU9DLElBQVAsQ0FGVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERDtBQU1BO0tBVGU0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1hoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNL0QsQ0FBQyxHQUFHUCw0Q0FBSyxDQUFDLHVEQUFELENBQWY7QUFRTyxTQUFTMkMsa0JBQVQsT0FBOEk7QUFBQTs7QUFBQSxNQUFoRWxDLElBQWdFLFFBQWhFQSxJQUFnRTtBQUFBLE1BQXBEb0UsVUFBb0QsUUFBMURuRSxJQUEwRDtBQUFBLE1BQXhDcUMsTUFBd0MsUUFBeENBLE1BQXdDO0FBQ3BKLE1BQU1yQyxJQUFJLEdBQUcrQiwrRUFBbUIsQ0FBQztBQUFDL0IsSUFBQUEsSUFBSSxFQUFFbUUsVUFBUDtBQUFtQjdCLElBQUFBLGlCQUFpQixFQUFFdkMsSUFBSSxDQUFDdUMsaUJBQTNDO0FBQThERCxJQUFBQSxNQUFNLEVBQU5BO0FBQTlELEdBQUQsQ0FBaEMsQ0FEb0osQ0FHcEo7O0FBQ0EsTUFBSXRDLElBQUksQ0FBQ3FFLE9BQVQsRUFBa0I7QUFDakIsUUFBSSxPQUFPckUsSUFBSSxDQUFDcUUsT0FBWixLQUF3QixVQUE1QixFQUF3QztBQUN2QyxVQUFJLENBQUNyRSxJQUFJLENBQUNxRSxPQUFMLENBQWFwRSxJQUFiLENBQUwsRUFBeUIsT0FBTyxJQUFQO0FBQ3pCLEtBRkQsTUFFTztBQUNOLFVBQU1xRSxDQUFDLEdBQUcsSUFBSVIsd0NBQUosQ0FBVTlELElBQUksQ0FBQ3FFLE9BQUwsSUFBZ0IsRUFBMUIsQ0FBVjtBQUNBLFVBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxJQUFGLENBQU90RSxJQUFQLENBQUwsRUFBbUIsT0FBTyxJQUFQO0FBQ25CO0FBQ0Q7O0FBRUQsTUFBSWlFLDJEQUFtQixDQUFDbEUsSUFBRCxDQUF2QixFQUErQjtBQUM5Qix3QkFBTywrREFBQyxtRkFBRDtBQUE0QixVQUFJLEVBQUVBLElBQWxDO0FBQXdDLFVBQUksRUFBRUM7QUFBOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFQO0FBQ0E7O0FBRUQsTUFBSWdFLDJEQUFtQixDQUFDakUsSUFBRCxDQUF2QixFQUErQjtBQUM5Qix3QkFBTywrREFBQyxtRkFBRDtBQUE0QixVQUFJLEVBQUVBLElBQWxDO0FBQXdDLFVBQUksRUFBRUM7QUFBOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFQO0FBQ0E7O0FBRUQsTUFBSStELCtEQUF1QixDQUFDaEUsSUFBRCxDQUEzQixFQUFtQztBQUNsQyx3QkFBTywrREFBQywyRkFBRDtBQUFnQyxVQUFJLEVBQUVBLElBQXRDO0FBQTRDLFVBQUksRUFBRUM7QUFBbEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFQO0FBQ0E7O0FBRUQsTUFBSWtFLDREQUFvQixDQUFDbkUsSUFBRCxDQUF4QixFQUFnQztBQUMvQix3QkFBTywrREFBQyxzREFBRDtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQVA7QUFDQSxHQTNCbUosQ0E2QnBKOzs7QUFDQSxzQkFBTywrREFBQywrREFBRDtBQUFrQixRQUFJLEVBQUVBLElBQXhCO0FBQThCLFFBQUksRUFBRUM7QUFBcEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFQO0FBQ0E7O0dBL0JlaUM7VUFDRkY7OztLQURFRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQmhCO0FBQ0E7QUFDQTtBQUVBOztBQUVBLElBQU1wQyxDQUFDLEdBQUdQLDRDQUFLLENBQUMscUNBQUQsQ0FBZjtBQUVPLFNBQVNrRixXQUFULENBQW1EQyxNQUFuRCxFQUFzRUMsS0FBdEUsRUFBdUY7QUFBQTs7QUFDN0YsTUFBTUMsbUJBQW1CLEdBQUczRCxNQUFNLENBQUM0RCxJQUFQLENBQVlILE1BQU0sQ0FBQ0ksS0FBbkIsRUFBMEJDLE1BQTFCLENBQWlDLFVBQUNDLElBQUQsRUFBT0MsR0FBUCxFQUFlO0FBQzNFLDJDQUNJRCxJQURKLHdGQUVFQyxHQUZGLEVBRVEsVUFBQzNDLE1BQUQsRUFBc0Q7QUFDNUQsVUFBTTRDLEVBQUUsR0FBR1AsS0FBSyxDQUFDTSxHQUFELENBQWhCOztBQUNBLFVBQUlULDhDQUFNLENBQUNVLEVBQUQsQ0FBVixFQUFnQjtBQUNmLDRCQUFPLDhEQUFDLDBFQUFEO0FBQWtCLGNBQUksRUFBRUEsRUFBeEI7QUFBNEIsZ0JBQU0sRUFBRTVDO0FBQXBDO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBQVA7QUFDQTs7QUFDRCwwQkFDQyw4REFBQywwRUFBRDtBQUNDLFlBQUksRUFBRTtBQUNMRSxVQUFBQSxPQUFPLEVBQUUwQztBQURKLFNBRFA7QUFJQyxjQUFNLEVBQUU1QztBQUpUO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFERDtBQVFBLEtBZkY7QUFpQkEsR0FsQjJCLEVBa0J6QixFQWxCeUIsQ0FBNUI7QUFvQkEsU0FBT29DLE1BQU0sQ0FBQ1MsZ0JBQVAsQ0FBd0JQLG1CQUF4QixDQUFQO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDN0JNLElBQU1RLGtCQUFnRCxHQUFHO0FBQy9EQyxFQUFBQSxJQUFJLEVBQUUsRUFEeUQ7QUFFL0RDLEVBQUFBLE9BQU8sRUFBRTtBQUZzRCxDQUF6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQO0FBUU8sU0FBU3RELG1CQUFULE9BSzZCO0FBQUE7O0FBQUEsTUFKbkMvQixJQUltQyxRQUpuQ0EsSUFJbUM7QUFBQSxNQUhuQ3NDLGlCQUdtQyxRQUhuQ0EsaUJBR21DO0FBQUEsTUFGbkNpRCxTQUVtQyxRQUZuQ0EsU0FFbUM7QUFBQSxNQURuQ2xELE1BQ21DLFFBRG5DQSxNQUNtQztBQUNuQyxNQUFNbUQsU0FBUyxHQUFHRixpRUFBWSxDQUFDO0FBQUN0RixJQUFBQSxJQUFJLEVBQUpBLElBQUQ7QUFBT3NDLElBQUFBLGlCQUFpQixFQUFqQkEsaUJBQVA7QUFBMEJpRCxJQUFBQSxTQUFTLEVBQVRBO0FBQTFCLEdBQUQsQ0FBOUI7QUFDQSx5Q0FDSUMsU0FESjtBQUVDbkQsSUFBQUEsTUFBTSxFQUFOQTtBQUZEO0FBSUE7O0dBWGVOO1VBTUd1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3dEWixTQUFTZixNQUFULENBQWlFMUYsS0FBakUsRUFBa0c7QUFDeEcsU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBc0IwRCxPQUEvQjtBQUNBO0FBRU0sU0FBU3lCLG1CQUFULENBQThFbkYsS0FBOUUsRUFBNEg7QUFDbEksU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBbUMrQyxPQUE1QztBQUNBO0FBRU0sU0FBU21DLHVCQUFULENBQWtGbEYsS0FBbEYsRUFBb0k7QUFDMUksU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBdUNvQyxJQUFoRDtBQUNBO0FBRU0sU0FBU2dELG1CQUFULENBQThFcEYsS0FBOUUsRUFBNEg7QUFDbEksU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBbUMwRSxNQUE1QztBQUNBO0FBRU0sU0FBU1csb0JBQVQsQ0FBK0VyRixLQUEvRSxFQUE4SDtBQUNwSSxTQUFRQSxLQUFELENBQW9Dd0csT0FBM0M7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekZEO0FBQ0E7O0FBSU8sU0FBU2pFLE9BQVQsQ0FBa0VyQixJQUFsRSxFQUErRkMsSUFBL0YsRUFBd0g7QUFDOUgsTUFBSUQsSUFBSSxDQUFDMEIsSUFBVCxFQUFlO0FBQ2QsUUFBTWdFLFFBQVEsR0FBRyxPQUFPMUYsSUFBSSxDQUFDMEIsSUFBWixLQUFxQixVQUFyQixHQUFrQzFCLElBQUksQ0FBQzBCLElBQUwsQ0FBVXpCLElBQVYsQ0FBbEMsR0FBb0RELElBQUksQ0FBQzBCLElBQTFFO0FBQ0Esd0JBQU8sOERBQUMsbURBQUQ7QUFBTSxVQUFJLEVBQUVnRTtBQUFaO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBUDtBQUNBOztBQUNELFNBQU8sSUFBUDtBQUNBO0FBRU0sU0FBUzlCLFVBQVQsQ0FBcUU1RCxJQUFyRSxFQUF5R0MsSUFBekcsRUFBa0k7QUFDeEksTUFBSUQsSUFBSSxDQUFDZCxFQUFULEVBQWE7QUFDWixXQUFPLE9BQU9jLElBQUksQ0FBQ2QsRUFBWixLQUFtQixVQUFuQixHQUFnQ2MsSUFBSSxDQUFDZCxFQUFMLENBQVFlLElBQVIsQ0FBaEMsR0FBZ0RELElBQUksQ0FBQ2QsRUFBNUQ7QUFDQTs7QUFDRCxTQUFPLEVBQVA7QUFDQTtBQUVNLFNBQVNvQyxPQUFULENBQWtFdEIsSUFBbEUsRUFBK0ZDLElBQS9GLEVBQXdIO0FBQzlILFNBQU8sT0FBT0QsSUFBSSxDQUFDcUYsSUFBWixLQUFxQixVQUFyQixHQUFrQ3JGLElBQUksQ0FBQ3FGLElBQUwsQ0FBVXBGLElBQVYsQ0FBbEMsR0FBb0RELElBQUksQ0FBQ3FGLElBQWhFO0FBQ0E7QUFFTSxTQUFTakUsUUFBVCxDQUFtRXBCLElBQW5FLEVBQWdHQyxJQUFoRyxFQUF5STtBQUMvSSxNQUFJLENBQUNELElBQUksQ0FBQzJGLEtBQVYsRUFBaUIsT0FBTyxNQUFQO0FBQ2pCLFNBQU8sT0FBTzNGLElBQUksQ0FBQzJGLEtBQVosS0FBc0IsVUFBdEIsR0FBbUMzRixJQUFJLENBQUMyRixLQUFMLENBQVcxRixJQUFYLENBQW5DLEdBQXNERCxJQUFJLENBQUMyRixLQUFsRTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLElBQU03RixDQUFDLEdBQUdQLDRDQUFLLENBQUMscUNBQUQsQ0FBZjs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3VDLFNBQVQsT0FBZ0Q7QUFBQTs7QUFBQTs7QUFBQSxNQUE1QndCLFNBQTRCLFFBQTVCQSxTQUE0Qjs7QUFDdEQscUJBQW1CdUMsNkRBQVcsRUFBOUI7QUFBQSxNQUFPRSxRQUFQLGdCQUFPQSxRQUFQOztBQUVBLHNCQUNDO0FBQUEsY0FDRXpDLFNBQVMsQ0FBQ1QsR0FBVixDQUFjLFVBQUNtRCxJQUFELEVBQU9qRCxLQUFQLEVBQWlCO0FBQy9CLFVBQUksT0FBT2lELElBQVAsS0FBZ0IsVUFBcEIsRUFBZ0M7QUFDL0I7QUFDQSw0QkFBTyw4REFBQyw2REFBRDtBQUE2QixrQkFBUSxFQUFFQTtBQUF2QyxXQUFzQmpELEtBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBQVA7QUFDQTs7QUFDRCxVQUFNa0QsRUFBRSxHQUFHQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsSUFBSSxDQUFDSSxVQUFuQixJQUFpQ1Isa0RBQU8sQ0FBQ0ksSUFBSSxDQUFDSSxVQUFOLENBQXhDLEdBQTRESixJQUFJLENBQUNJLFVBQTVFO0FBQ0EsVUFBTUMsV0FBVyxHQUFHSixFQUFFLENBQUNGLFFBQUQsQ0FBdEI7O0FBQ0EsVUFBSUcsS0FBSyxDQUFDQyxPQUFOLENBQWNILElBQUksQ0FBQ00sUUFBbkIsQ0FBSixFQUFrQztBQUNqQztBQUFBO0FBQ0M7QUFDQSx3RUFBQyx1REFBRDtBQUFBLHNCQUNFTixJQUFJLENBQUNNLFFBQUwsQ0FBY3pELEdBQWQsQ0FBa0IsVUFBQzBELEVBQUQsRUFBS0MsTUFBTCxFQUFnQjtBQUNsQztBQUNBLGtDQUFPLDhEQUFDLDZEQUFEO0FBQThCLHdCQUFRLEVBQUVELEVBQXhDO0FBQTRDLDJCQUFXLEVBQUVGO0FBQXpELGlCQUFzQkcsTUFBdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBUDtBQUNBLGFBSEE7QUFERixhQUFxQnpELEtBQXJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFGRDtBQVNBLE9BakI4QixDQWtCL0I7OztBQUNBLDBCQUFPLDhEQUFDLDZEQUFEO0FBQWlCLGdCQUFRLEVBQUVpRCxJQUFJLENBQUNNLFFBQWhDO0FBQXNELG1CQUFXLEVBQUVEO0FBQW5FLFNBQStDdEQsS0FBL0M7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFQO0FBQ0EsS0FwQkE7QUFERixtQkFERDtBQXlCQTs7R0E1QmVqQjtVQUNJK0Q7OztLQURKL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1hULFNBQVNnRSxlQUFULE9BQXdFO0FBQUEsTUFBOUNRLFFBQThDLFFBQTlDQSxRQUE4QztBQUFBLE1BQXBDRCxXQUFvQyxRQUFwQ0EsV0FBb0M7QUFDOUVDLEVBQUFBLFFBQVEsQ0FBQ0QsV0FBRCxDQUFSO0FBQ0EsU0FBTyxJQUFQO0FBQ0E7S0FIZVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUGhCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUEsSUFBTWhHLENBQUMsR0FBR1AsNENBQUssQ0FBQyxvQ0FBRCxDQUFmO0FBUU8sU0FBU2dHLFlBQVQsT0FBZ0Y7QUFBQTs7QUFBQSxNQUF6RGhELGlCQUF5RCxRQUF6REEsaUJBQXlEO0FBQUEsTUFBdEN0QyxJQUFzQyxRQUF0Q0EsSUFBc0M7QUFBQSxNQUFoQ3VGLFNBQWdDLFFBQWhDQSxTQUFnQztBQUN0RixNQUFNc0IsS0FBSyxHQUFHRCwrREFBYyxDQUFDdEUsaUJBQUQsQ0FBNUI7QUFDQSxNQUFNd0UsR0FBRyxHQUFHbEIsNkRBQVcsRUFBdkI7QUFDQSxNQUFNbUIsS0FBSyxHQUFHO0FBQ2JDLElBQUFBLElBQUksRUFBRVIscURBQU8sQ0FBQ00sR0FBRyxDQUFDaEIsUUFBSixDQUFhbUIsS0FBYixDQUFtQixHQUFuQixDQUFELENBREE7QUFFYkMsSUFBQUEsSUFBSSxFQUFFSixHQUFHLENBQUNJLElBRkc7QUFHYkMsSUFBQUEsTUFBTSxFQUFFVCx3REFBQSxDQUFrQkksR0FBRyxDQUFDSyxNQUF0QjtBQUhLLEdBQWQ7QUFLQSxNQUFNRSxNQUFNLEdBQUdWLG1FQUFnQixDQUFDO0FBQUNHLElBQUFBLEdBQUcsRUFBSEEsR0FBRDtBQUFNQyxJQUFBQSxLQUFLLEVBQUxBLEtBQU47QUFBYUYsSUFBQUEsS0FBSyxFQUFMQSxLQUFiO0FBQW9CUSxJQUFBQSxNQUFNLEVBQUU7QUFBNUIsR0FBRCxFQUFxQzlCLFNBQXJDLENBQS9CO0FBQ0EsTUFBTStCLE9BQWEsR0FBRztBQUFDVCxJQUFBQSxLQUFLLEVBQUxBLEtBQUQ7QUFBUUMsSUFBQUEsR0FBRyxFQUFIQSxHQUFSO0FBQWFPLElBQUFBLE1BQU0sRUFBTkEsTUFBYjtBQUFxQk4sSUFBQUEsS0FBSyxFQUFMQTtBQUFyQixHQUF0QjtBQUVBLFNBQU8vRyxJQUFJLEdBQUd5RyxtREFBSyxDQUFDekcsSUFBRCxFQUFPc0gsT0FBUCxDQUFSLEdBQTBCQSxPQUFyQztBQUNBOztHQVplaEM7VUFDRHNCLDZEQUNGaEIsMkRBTUdlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFCaEI7QUFFQTtBQUdPLFNBQVNBLGdCQUFULENBQTBCM0csSUFBMUIsRUFBc0NELElBQXRDLEVBQWtEO0FBQUE7O0FBQ3hEO0FBQ0EsTUFBTXlILGdCQUE0QixHQUFHLEVBQXJDOztBQUNBLE1BQUl6SCxJQUFJLElBQUlmLHlEQUFXLENBQUNlLElBQUQsQ0FBdkIsRUFBK0I7QUFDOUIsUUFBSSxPQUFPQSxJQUFJLENBQUNkLEVBQVosS0FBbUIsUUFBdkIsRUFBaUM7QUFDaEN1SSxNQUFBQSxnQkFBZ0IsQ0FBQ1IsSUFBakIsR0FBd0JqSCxJQUFJLENBQUNkLEVBQTdCO0FBQ0E7O0FBQ0QsUUFBSSxPQUFPYyxJQUFJLENBQUNkLEVBQVosS0FBbUIsVUFBdkIsRUFBbUM7QUFDbEN1SSxNQUFBQSxnQkFBZ0IsQ0FBQ1IsSUFBakIsR0FBd0JqSCxJQUFJLENBQUNkLEVBQUwsQ0FBUWUsSUFBUixDQUF4QjtBQUNBOztBQUNEd0gsSUFBQUEsZ0JBQWdCLENBQUN0SSxLQUFqQixHQUF5QmEsSUFBSSxDQUFDYixLQUFMLEtBQWUsS0FBeEM7QUFDQXNJLElBQUFBLGdCQUFnQixDQUFDcEksU0FBakIsR0FBNkJXLElBQUksQ0FBQ1gsU0FBbEM7QUFDQW9JLElBQUFBLGdCQUFnQixDQUFDckksTUFBakIsR0FBMEJZLElBQUksQ0FBQ1osTUFBL0I7QUFDQTs7QUFDRCxNQUFNZ0gsVUFBVSxHQUFHb0IsMkRBQWEsQ0FBQ0MsZ0JBQUQsQ0FBaEM7QUFDQSxTQUFPckIsVUFBVSxLQUFLLElBQXRCO0FBQ0E7O0dBaEJlUTtVQWNJWTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQnBCO0FBR08sU0FBU1gsY0FBVCxDQUF3QnRFLGlCQUF4QixFQUFxRjtBQUMzRixNQUFJb0YsaUJBQTRCLEdBQUc7QUFBQSxXQUFPLEVBQVA7QUFBQSxHQUFuQzs7QUFDQSxNQUFJcEYsaUJBQUosRUFBdUI7QUFDdEJvRixJQUFBQSxpQkFBaUIsR0FBR3pCLEtBQUssQ0FBQ0MsT0FBTixDQUFjNUQsaUJBQWQsSUFBbUNtRix1REFBUyxDQUFDbkYsaUJBQUQsQ0FBNUMsR0FBa0VBLGlCQUF0RjtBQUNBOztBQUNELFNBQU9vRixpQkFBaUIsRUFBeEI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNETSxTQUFTQyx5QkFBVCxPQUFpRjtBQUFBLE1BQTdDNUgsSUFBNkMsUUFBN0NBLElBQTZDO0FBQUEsTUFBdkNDLElBQXVDLFFBQXZDQSxJQUF1QztBQUN2RixTQUFPRCxJQUFJLENBQUN3RCxNQUFMLENBQVl2RCxJQUFaLENBQVA7QUFDQTtLQUZlMkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhCO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7O0FBRUEsSUFBTTlILENBQUMsR0FBR1AsNENBQUssQ0FBQyx5Q0FBRCxDQUFmO0FBU08sU0FBU3lJLFlBQVQsT0FBMkU7QUFBQTs7QUFBQSxNQUFwRGhJLElBQW9ELFFBQXBEQSxJQUFvRDtBQUFBLE1BQTlDaUksUUFBOEMsUUFBOUNBLFFBQThDO0FBQUEsTUFBcENDLFFBQW9DLFFBQXBDQSxRQUFvQztBQUFBLE1BQTFCakksSUFBMEIsUUFBMUJBLElBQTBCOztBQUNqRixrQkFBd0JrQiwrQ0FBUSxDQUFDLEtBQUQsQ0FBaEM7QUFBQTtBQUFBLE1BQU9nSCxJQUFQO0FBQUEsTUFBYUMsT0FBYjs7QUFFQSxNQUFJSCxRQUFKLEVBQWM7QUFDYix3QkFDQyw4REFBQyx3REFBRDtBQUFXLGVBQVMsRUFBQywwQkFBckI7QUFBQSw2QkFDQyw4REFBQyx3REFBRDtBQUFXLGFBQUssTUFBaEI7QUFBQSxnQ0FDQyw4REFBQyw4REFBRDtBQUNDLG1CQUFTLEVBQUU5Rix5RUFEWjtBQUVDLGlCQUFPLEVBQUUsaUJBQUFtRyxFQUFFLEVBQUk7QUFDZEEsWUFBQUEsRUFBRSxDQUFDQyxlQUFIO0FBQ0FILFlBQUFBLE9BQU8sQ0FBQyxDQUFDRCxJQUFGLENBQVA7QUFDQSxXQUxGO0FBQUEsa0NBT0MsOERBQUMsbURBQUQ7QUFBTSxxQkFBUyxFQUFFQSxJQUFJLEdBQUdoRywrRUFBSCxHQUF3Q0Esd0VBQTdEO0FBQTBGLGdCQUFJLEVBQUM7QUFBL0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQkFQRCxFQVFFbkMsSUFBSSxDQUFDcUYsSUFSUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBREQsZUFXQyw4REFBQyxnRUFBRDtBQUFtQixnQkFBTSxFQUFFOEMsSUFBM0I7QUFBaUMsbUJBQVMsWUFBS2hHLDJFQUFMLHFDQUExQztBQUFpSCxrQkFBUSxFQUFFK0Y7QUFBM0g7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFYRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERDtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBREQ7QUFpQkE7O0FBRUQsc0JBQ0MsOERBQUMsdURBQUQ7QUFBVSxRQUFJLE1BQWQ7QUFBZSxRQUFJLEVBQUU1RywrQ0FBTyxDQUFDdEIsSUFBRCxFQUFPQyxJQUFQLENBQTVCO0FBQTBDLGFBQVMsRUFBQyxrQkFBcEQ7QUFBQSwyQkFDQyw4REFBQyw0REFBRDtBQUFlLGVBQVMsRUFBQyx5QkFBekI7QUFBQSxnQkFBb0RpSTtBQUFwRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBS0E7O0dBNUJlRjs7S0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakJoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQU1sSSxDQUFDLEdBQUdQLDRDQUFLLENBQUMsbUNBQUQsQ0FBZjs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVN5SixNQUFULE9BQXdGO0FBQUE7O0FBQUE7O0FBQUEsTUFBdkVDLE1BQXVFLFFBQXZFQSxNQUF1RTtBQUFBLE1BQS9EQyxXQUErRCxRQUEvREEsV0FBK0Q7QUFBQSxNQUFsREMsU0FBa0QsUUFBbERBLFNBQWtEO0FBQUEsTUFBdkNDLGFBQXVDLFFBQXZDQSxhQUF1QztBQUFBLE1BQXhCbEIsUUFBd0IsUUFBeEJBLFFBQXdCOztBQUM5Rix3QkFBbUJVLHNEQUFjLEVBQWpDO0FBQUEsTUFBT1MsUUFBUCxtQkFBT0EsUUFBUDs7QUFDQSxrQkFBZ0NsSSwrQ0FBUSxDQUFDLElBQUQsQ0FBeEM7QUFBQTtBQUFBLE1BQU9tSSxRQUFQO0FBQUEsTUFBaUJDLFdBQWpCOztBQUVBLE1BQU1DLGlCQUFpQixHQUFHO0FBQ3pCeEssSUFBQUEsYUFBYSxFQUFFLElBRFU7QUFFekJ5SyxJQUFBQSxNQUFNLEVBQUUsQ0FBQyxLQUZnQjtBQUd6QmpHLElBQUFBLE1BQU0sRUFBRSxrQkFBTTtBQUNiLFVBQUksQ0FBQzZGLFFBQUwsRUFBZSxPQUFPLElBQVA7QUFDZiwwQkFBTywrREFBQyw2RUFBRDtBQUF5QixnQkFBUSxFQUFFQyxRQUFuQztBQUE2QyxtQkFBVyxFQUFFQztBQUExRDtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQVA7QUFDQTtBQU53QixHQUExQixDQUo4RixDQWE5Rjs7QUFDQSxNQUFNRyxnQkFBZ0IsR0FBR2IscURBQVMsQ0FDakNRLFFBQVEsR0FBRyxDQUFDRyxpQkFBRCx5RkFBdUJOLFdBQXZCLEdBQW9DUyxNQUFwQyxDQUEyQyxVQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBQyxDQUFDNUssYUFBRixLQUFvQixJQUF4QjtBQUFBLEdBQTVDLENBQUgsSUFBZ0Z3SyxpQkFBaEYseUZBQXNHTixXQUF0RyxFQUR5QixDQUFsQyxDQWQ4RixDQWtCOUY7QUFFQTs7QUFDQSxNQUFNVyxrQkFBa0IsR0FBR2hCLHFEQUFTLENBQ25DUSxRQUFRLDZGQUVGRCxhQUZFLElBR0w7QUFDQy9ELElBQUFBLElBQUksRUFBRSxFQURQO0FBRUN5RSxJQUFBQSxJQUFJLEVBQUUsQ0FBQ04saUJBQUQseUZBQXVCTixXQUF2QixHQUFvQ1MsTUFBcEMsQ0FBMkMsVUFBQUMsQ0FBQztBQUFBLGFBQUlBLENBQUMsQ0FBQzVLLGFBQUYsS0FBb0IsSUFBeEI7QUFBQSxLQUE1QztBQUZQLEdBSEssS0FRTG9LLGFBVGdDLENBQXBDO0FBWUEsTUFBTVcsaUJBQWlCLEdBQ3RCRixrQkFBa0IsQ0FBQ2xILE1BQW5CLEdBQTRCLENBQTVCLGdCQUNDO0FBQUssYUFBUyxFQUFDLDhCQUFmO0FBQUEsMkJBQ0MsK0RBQUMseURBQUQ7QUFDQyxXQUFLLEVBQUVrSCxrQkFEUjtBQUVDLGNBQVEsTUFGVDtBQUdDLGNBQVEsTUFIVDtBQUlDLGVBQVMsRUFDUlIsUUFBUSxJQUFJLENBQUNDLFFBQWIsYUFDTW5ILGlFQUROLGNBQzhCQSx1RUFEOUIsd0NBRU1BLGlFQUZOO0FBTEY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUREO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERCxHQWFJLElBZEwsQ0FqQzhGLENBaUQ5Rjs7QUFDQSxNQUFNOEgsV0FBVyxHQUFHcEIscURBQVMsQ0FBQ0ksTUFBRCxDQUE3QjtBQUNBLE1BQU1pQixVQUFVLEdBQ2ZELFdBQVcsQ0FBQ3RILE1BQVosR0FBcUIsQ0FBckIsZ0JBQ0MsK0RBQUMseURBQUQ7QUFBZSxRQUFJLEVBQUMsUUFBcEI7QUFBNkIsU0FBSyxFQUFFc0gsV0FBcEM7QUFBaUQsYUFBUyxZQUFLOUgsMERBQUwsb0JBQTFEO0FBQStGLFlBQVEsTUFBdkc7QUFBd0csY0FBVTtBQUFsSDtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBREQsR0FFSSxJQUhMLENBbkQ4RixDQXdEOUY7O0FBQ0EsTUFBTWdJLGNBQWMsR0FBR3RCLHFEQUFTLENBQUNNLFNBQUQsQ0FBaEM7QUFDQSxNQUFNaUIsYUFBYSxHQUNsQkQsY0FBYyxDQUFDeEgsTUFBZixHQUF3QixDQUF4QixnQkFBNEIsK0RBQUMseURBQUQ7QUFBZSxTQUFLLEVBQUV3SCxjQUF0QjtBQUFzQyxZQUFRLE1BQTlDO0FBQStDLGFBQVMsWUFBS2hJLDZEQUFMO0FBQXhEO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFBNUIsR0FBb0ksSUFEckk7QUFHQSxzQkFDQztBQUFLLGFBQVMsWUFBS0EsMERBQUwsNkJBQXFDa0gsUUFBUSxHQUFHLGdCQUFILEdBQXNCLG1CQUFuRSxDQUFkO0FBQUEsNEJBQ0M7QUFBSyxlQUFTLEVBQUMsNEJBQWY7QUFBQSw4QkFDQywrREFBQyx5REFBRDtBQUFlLGFBQUssRUFBRUssZ0JBQXRCO0FBQXdDLGdCQUFRLE1BQWhEO0FBQWlELGtCQUFVLE1BQTNEO0FBQTRELGlCQUFTLFlBQUt2SCwyREFBTDtBQUFyRTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBREQsRUFFRWlJLGFBRkY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBREQsZUFLQywrREFBQyxzREFBRDtBQUFTLGNBQVEsTUFBakI7QUFBa0IsZUFBUyxZQUFLakksa0VBQUwsa0NBQTNCO0FBQUEsaUJBQ0U0SCxpQkFERixlQUVDO0FBQUssaUJBQVMsWUFBSzVILDJEQUFMLDJCQUFkO0FBQUEsa0JBQTREK0Y7QUFBNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUZEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUxELEVBU0VnQyxVQVRGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBYUE7O0dBMUVlbEI7VUFDSUo7OztLQURKSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUJoQjtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7O0FBRUEsSUFBTWxKLENBQUMsR0FBR1AsNENBQUssQ0FBQywwQ0FBRCxDQUFmOztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3VKLGFBQVQsT0FBdUQ7QUFBQTs7QUFBQSxNQUEvQjJCLEtBQStCLFFBQS9CQSxLQUErQjtBQUFBLE1BQXJCQyxJQUFxQjs7QUFDN0QsTUFBTUMsR0FBRyxHQUFHSiw0REFBb0IsQ0FBQ0UsS0FBRCxDQUFoQyxDQUQ2RCxDQUc3RDs7QUFDQSxNQUFNRyxTQUFTLEdBQUc3SSx5REFBaUIsQ0FBQzRJLEdBQUcsQ0FBQ0MsU0FBTCxDQUFqQixDQUFpQy9ILEdBQWpDLENBQXFDLFVBQUM3QyxJQUFELEVBQU8rQyxLQUFQO0FBQUEsd0JBQWlCLDhEQUFDLGlFQUFEO0FBQW1CLFVBQUksRUFBRS9DLElBQXpCO0FBQTJDLGNBQVEsRUFBRTBLLElBQUksQ0FBQ3pDO0FBQTFELE9BQW9DbEYsS0FBcEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFqQjtBQUFBLEdBQXJDLENBQWxCLENBSjZELENBSzdEOztBQUNBLE1BQU04SCxVQUFVLEdBQUc5SSx5REFBaUIsQ0FBQzRJLEdBQUcsQ0FBQ0UsVUFBTCxDQUFqQixDQUFrQ2hJLEdBQWxDLENBQXNDLFVBQUM3QyxJQUFELEVBQU8rQyxLQUFQO0FBQUEsd0JBQWlCLDhEQUFDLGlFQUFEO0FBQW1CLFVBQUksRUFBRS9DLElBQXpCO0FBQTJDLGNBQVEsRUFBRTBLLElBQUksQ0FBQ3pDO0FBQTFELE9BQW9DbEYsS0FBcEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFqQjtBQUFBLEdBQXRDLENBQW5CO0FBRUEsc0JBQ0MsOERBQUMsbURBQUQsa0NBQVUySCxJQUFWO0FBQUEsZUFDRUUsU0FERixFQUVFRixJQUFJLENBQUN6QyxRQUFMLEdBQWdCNEMsVUFBaEIsZ0JBQTZCLDhEQUFDLHdEQUFEO0FBQVcsY0FBUSxFQUFDLE9BQXBCO0FBQUEsZ0JBQTZCQTtBQUE3QjtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBRi9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBTUE7S0FkZS9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNaEosQ0FBQyxHQUFHUCw0Q0FBSyxDQUFDLDhDQUFELENBQWY7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNpTCxpQkFBVCxPQUFxRjtBQUFBOztBQUFBOztBQUFBLE1BQXpEeEssSUFBeUQsUUFBekRBLElBQXlEO0FBQUEsTUFBbkRtTCxFQUFtRCxRQUFuREEsRUFBbUQ7QUFBQSxNQUEvQ2xELFFBQStDLFFBQS9DQSxRQUErQztBQUFBLE1BQS9CN0QsVUFBK0IsUUFBckNuRSxJQUFxQztBQUMzRixNQUFNQSxJQUFJLEdBQUdzRixpRUFBWSxDQUFDO0FBQUNoRCxJQUFBQSxpQkFBaUIsRUFBRXZDLElBQUksQ0FBQ3VDLGlCQUF6QjtBQUE0Q2lELElBQUFBLFNBQVMsRUFBRXhGLElBQXZEO0FBQTZEQyxJQUFBQSxJQUFJLEVBQUVtRTtBQUFuRSxHQUFELENBQXpCLENBRDJGLENBRzNGOztBQUNBLE1BQUlwRSxJQUFJLENBQUNxRSxPQUFULEVBQWtCO0FBQ2pCLFFBQUksT0FBT3JFLElBQUksQ0FBQ3FFLE9BQVosS0FBd0IsVUFBNUIsRUFBd0M7QUFDdkMsVUFBSSxDQUFDckUsSUFBSSxDQUFDcUUsT0FBTCxDQUFhcEUsSUFBYixDQUFMLEVBQXlCLE9BQU8sSUFBUDtBQUN6QixLQUZELE1BRU87QUFDTixVQUFNcUUsQ0FBQyxHQUFHLElBQUlSLHdDQUFKLENBQVU5RCxJQUFJLENBQUNxRSxPQUFMLElBQWdCLEVBQTFCLENBQVY7QUFDQSxVQUFJLENBQUNDLENBQUMsQ0FBQ0MsSUFBRixDQUFPdEUsSUFBUCxDQUFMLEVBQW1CLE9BQU8sSUFBUDtBQUNuQjtBQUNEOztBQUVELE1BQUk2SywwREFBa0IsQ0FBQzlLLElBQUQsQ0FBdEIsRUFBOEI7QUFDN0Isd0JBQU8sK0RBQUMsaUZBQUQ7QUFBMkIsVUFBSSxFQUFFQSxJQUFqQztBQUF1QyxVQUFJLEVBQUVDO0FBQTdDO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBUDtBQUNBOztBQUNELE1BQUk4Syw0REFBb0IsQ0FBQy9LLElBQUQsQ0FBeEIsRUFBZ0M7QUFDL0I7QUFDQSxRQUFNa0ksUUFBUSxHQUFHbkcseURBQWlCLENBQUMvQixJQUFJLENBQUNvTCxRQUFOLENBQWpCLENBQWlDdkksR0FBakMsQ0FBcUMsVUFBQytHLENBQUQsRUFBSTdHLEtBQUo7QUFBQSwwQkFBYywrREFBQyxpQkFBRDtBQUErQixZQUFJLEVBQUU2RyxDQUFyQztBQUF3QyxVQUFFLEVBQUU5Qiw0REFBNUM7QUFBMkQsWUFBSSxFQUFFN0g7QUFBakUsU0FBd0I4QyxLQUF4QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQWQ7QUFBQSxLQUFyQyxDQUFqQjtBQUNBLHdCQUFPLCtEQUFDLHVEQUFEO0FBQWMsVUFBSSxFQUFFL0MsSUFBcEI7QUFBMEIsY0FBUSxFQUFFa0ksUUFBcEM7QUFBOEMsY0FBUSxFQUFFRCxRQUF4RDtBQUFrRSxVQUFJLEVBQUVoSTtBQUF4RTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQVA7QUFDQTs7QUFDRCxNQUFJK0ssd0RBQWdCLENBQUNoTCxJQUFELENBQXBCLEVBQTRCO0FBQzNCO0FBQ0EsUUFBTWtJLFNBQVEsR0FBR25HLHlEQUFpQixDQUFDL0IsSUFBSSxDQUFDOEosSUFBTixDQUFqQixDQUE2QmpILEdBQTdCLENBQWlDLFVBQUMrRyxDQUFELEVBQUk3RyxLQUFKO0FBQUE7QUFBQTtBQUNqRDtBQUNBLHVFQUFDLGlCQUFEO0FBQStCLGNBQUksRUFBRTZHLENBQXJDO0FBQXdDLFlBQUUsRUFBRTlCLDREQUE1QztBQUEyRCxrQkFBUSxFQUFFRyxRQUFyRTtBQUErRSxjQUFJLEVBQUVoSTtBQUFyRixXQUF3QjhDLEtBQXhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFGaUQ7QUFBQSxLQUFqQyxDQUFqQjs7QUFJQSx3QkFBTywrREFBQywrQ0FBRDtBQUFVLFVBQUksRUFBRS9DLElBQWhCO0FBQXNCLGNBQVEsRUFBRWtJO0FBQWhDO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBUDtBQUNBOztBQUNELHNCQUFPLCtEQUFDLGtEQUFEO0FBQVcsUUFBSSxFQUFFbEksSUFBakI7QUFBdUIsUUFBSSxFQUFFQyxJQUE3QjtBQUFtQyxNQUFFLEVBQUVrTDtBQUF2QztBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQVA7QUFDQTs7R0E5QmVYO1VBQ0ZqRjs7O0tBREVpRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9CaEI7QUFDQTs7QUFRTyxTQUFTUyxRQUFULE9BQW1EO0FBQUEsTUFBaENqTCxJQUFnQyxRQUFoQ0EsSUFBZ0M7QUFBQSxNQUExQmtJLFFBQTBCLFFBQTFCQSxRQUEwQjtBQUN6RCxzQkFDQyw4REFBQyx3REFBRDtBQUFBLDRCQUNDLDhEQUFDLDBEQUFEO0FBQUEsZ0JBQWNsSSxJQUFJLENBQUNxRjtBQUFuQjtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBREQsZUFFQyw4REFBQyx3REFBRDtBQUFXLGFBQU8sRUFBQyxFQUFuQjtBQUFBLGdCQUF1QjZDO0FBQXZCO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFGRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERDtBQU1BO0tBUGUrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1RoQjtBQUNBO0FBR0E7O0FBUU8sU0FBU0MsU0FBVCxPQUFxRDtBQUFBLE1BQWpDbEwsSUFBaUMsUUFBakNBLElBQWlDO0FBQUEsTUFBM0JDLElBQTJCLFFBQTNCQSxJQUEyQjtBQUFBLE1BQXJCa0wsRUFBcUIsUUFBckJBLEVBQXFCO0FBQzNELE1BQU1JLFVBQVUsR0FBR0Qsc0RBQWMsQ0FBQ3RMLElBQUQsRUFBT0MsSUFBUCxDQUFqQztBQUVBLE1BQU11TCxLQUFLLEdBQUdMLEVBQUUsSUFBSXBELHdEQUFwQjtBQUVBLHNCQUNDLDhEQUFDLEtBQUQsa0NBQVd3RCxVQUFYO0FBQUEsZUFDRWxLLCtDQUFPLENBQUNyQixJQUFELEVBQU9DLElBQVAsQ0FEVCxFQUVFcUIsK0NBQU8sQ0FBQ3RCLElBQUQsRUFBT0MsSUFBUCxDQUZUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUREO0FBTUE7S0FYZWlMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1poQjtBQUNBO0FBQ0E7O0FBT08sU0FBU25DLHVCQUFULE9BQXdGO0FBQUEsTUFBdERPLFFBQXNELFFBQXREQSxRQUFzRDtBQUFBLE1BQTVDQyxXQUE0QyxRQUE1Q0EsV0FBNEM7QUFDOUYsc0JBQ0MsOERBQUMsd0RBQUQ7QUFBQSwyQkFDQyw4REFBQyxtREFBRDtBQUNDLGVBQVMsRUFBRUQsUUFBUSxHQUFHbkgsK0RBQUgsR0FBd0JBLHdEQUQ1QztBQUVDLFVBQUksRUFBRW1ILFFBQVEsR0FBRyxPQUFILEdBQWEsU0FGNUI7QUFHQyxhQUFPLEVBQUUsbUJBQU07QUFDZEMsUUFBQUEsV0FBVyxDQUFDLENBQUNELFFBQUYsQ0FBWDtBQUNBO0FBTEY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUREO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFERDtBQVdBO0tBWmVQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNUaEI7QUFDQTtBQUNBO0FBQ0E7QUFFTyxTQUFTK0MsZUFBVCxHQUEyQjtBQUFBOztBQUNqQyxNQUFNQyxRQUFRLEdBQUdKLHdEQUFXLEVBQTVCO0FBQ0EsTUFBTXRDLFFBQVEsR0FBR3VDLCtEQUFhLENBQUM7QUFBQ0ksSUFBQUEsS0FBSyxFQUFFO0FBQVIsR0FBRCxDQUE5QjtBQUNBTixFQUFBQSxnREFBUyxDQUFDLFlBQU07QUFDZkssSUFBQUEsUUFBUSxDQUFDRixxREFBQSxDQUFrQnhDLFFBQWxCLENBQUQsQ0FBUjtBQUNBLEdBRlEsRUFFTixDQUFDMEMsUUFBRCxFQUFXMUMsUUFBWCxDQUZNLENBQVQ7QUFHQTs7R0FOZXlDO1VBQ0VILHNEQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1BsQjtBQUNBO0FBRUE7QUFFQSxJQUFNOUwsQ0FBQyxHQUFHUCw0Q0FBSyxDQUFDLDJCQUFELENBQWY7O0FBRUEsU0FBUzRNLFNBQVQsQ0FBbUIxQixLQUFuQixFQUFpRjtBQUFBLE1BQXpDMkIsTUFBeUMsdUVBQWxCLEVBQWtCO0FBQ2hGLFNBQU8zQixLQUFLLENBQUMxRixNQUFOLENBQWEsVUFBQ0MsSUFBRCxFQUFPaEYsSUFBUCxFQUFnQjtBQUNuQyxRQUFJK0ssNERBQW9CLENBQUMvSyxJQUFELENBQXhCLEVBQWdDO0FBQy9CLHVHQUNJZ0YsSUFESixvQ0FHS2hGLElBSEw7QUFJRW9MLFFBQUFBLFFBQVEsRUFBRWUsU0FBUyxDQUFDbk0sSUFBSSxDQUFDb0wsUUFBTixFQUFnQmdCLE1BQWhCO0FBSnJCO0FBT0E7O0FBRUQsUUFBSXBCLHdEQUFnQixDQUFDaEwsSUFBRCxDQUFwQixFQUE0QjtBQUMzQix1R0FDSWdGLElBREosb0NBR0toRixJQUhMO0FBSUU4SixRQUFBQSxJQUFJLEVBQUVxQyxTQUFTLENBQUNuTSxJQUFJLENBQUM4SixJQUFOLEVBQVlzQyxNQUFaO0FBSmpCO0FBT0E7O0FBRUQsUUFBSSxDQUFDcE0sSUFBSSxDQUFDcU0sU0FBVixFQUFxQjtBQUNwQix1R0FBV3JILElBQVgsSUFBaUJoRixJQUFqQjtBQUNBOztBQUVEb00sSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVl0TSxJQUFaO0FBQ0EsV0FBT2dGLElBQVA7QUFDQSxHQTNCTSxFQTJCSixFQTNCSSxDQUFQO0FBNEJBOztBQUVELFNBQVN1SCxRQUFULENBQWtCOUIsS0FBbEIsRUFBdUMyQixNQUF2QyxFQUEyRjtBQUMxRixTQUFPM0IsS0FBSyxDQUFDMUYsTUFBTixDQUFhLFVBQUNDLElBQUQsRUFBT2hGLElBQVAsRUFBZ0I7QUFDbkMsUUFBSStLLDREQUFvQixDQUFDL0ssSUFBRCxDQUF4QixFQUFnQztBQUMvQixVQUFNd00sUUFBUSxHQUFHeE0sSUFBSSxDQUFDaUYsR0FBTCxJQUFZbUgsTUFBTSxDQUFDcE0sSUFBSSxDQUFDaUYsR0FBTixDQUFsQixHQUErQm1ILE1BQU0sQ0FBQ3BNLElBQUksQ0FBQ2lGLEdBQU4sQ0FBckMsR0FBa0QsRUFBbkU7QUFDQSx1R0FDSUQsSUFESixvQ0FHS2hGLElBSEw7QUFJRW9MLFFBQUFBLFFBQVEsNEZBQU1tQixRQUFRLENBQUN2TSxJQUFJLENBQUNvTCxRQUFOLEVBQWdCZ0IsTUFBaEIsQ0FBZCxtRkFBMENJLFFBQTFDO0FBSlY7QUFPQTs7QUFFRCxRQUFJeEIsd0RBQWdCLENBQUNoTCxJQUFELENBQWhCLElBQTBCQSxJQUFJLENBQUNpRixHQUFuQyxFQUF3QztBQUN2QyxVQUFNdUgsU0FBUSxHQUFHeE0sSUFBSSxDQUFDaUYsR0FBTCxJQUFZbUgsTUFBTSxDQUFDcE0sSUFBSSxDQUFDaUYsR0FBTixDQUFsQixHQUErQm1ILE1BQU0sQ0FBQ3BNLElBQUksQ0FBQ2lGLEdBQU4sQ0FBckMsR0FBa0QsRUFBbkU7O0FBQ0EsdUdBQ0lELElBREosb0NBR0toRixJQUhMO0FBSUU4SixRQUFBQSxJQUFJLDRGQUFNeUMsUUFBUSxDQUFDdk0sSUFBSSxDQUFDOEosSUFBTixFQUFZc0MsTUFBWixDQUFkLG1GQUFzQ0ksU0FBdEM7QUFKTjtBQU9BOztBQUNELHFHQUFXeEgsSUFBWCxJQUFpQmhGLElBQWpCO0FBQ0EsR0F2Qk0sRUF1QkosRUF2QkksQ0FBUDtBQXdCQTs7QUFFTSxTQUFTNkksU0FBVCxDQUFtQjRCLEtBQW5CLEVBQXdDO0FBQzlDLE1BQU0yQixNQUFvQixHQUFHLEVBQTdCO0FBQ0EsTUFBTUssZ0JBQWdCLEdBQUdOLFNBQVMsQ0FBQzFCLEtBQUQsRUFBUTJCLE1BQVIsQ0FBbEM7QUFDQSxTQUFPRyxRQUFRLENBQUNFLGdCQUFELEVBQW1CUCxxREFBTyxDQUFDRSxNQUFELEVBQVMsV0FBVCxDQUExQixDQUFmO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRUQ7QUFDQTtBQUNBOztBQVlBO0FBQ0E7QUFDQTs7QUFNQTtBQUNBO0FBQ0E7O0FBTUE7QUFDQTtBQUNBO0FBV08sU0FBU3RCLGtCQUFULENBQTRCaE0sS0FBNUIsRUFBbUU7QUFDekUsU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBNEIwRSxNQUFyQztBQUNBO0FBRU0sU0FBU3VILG9CQUFULENBQThCak0sS0FBOUIsRUFBdUU7QUFDN0UsU0FBTyxDQUFDLENBQUVBLEtBQUQsQ0FBOEJzTSxRQUF2QztBQUNBO0FBRU0sU0FBU0osZ0JBQVQsQ0FBMEJsTSxLQUExQixFQUErRDtBQUNyRSxTQUFPLENBQUMsQ0FBRUEsS0FBRCxDQUEwQmdMLElBQW5DO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFERDtBQUNBO0FBQ0E7QUFFQTs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTUyxvQkFBVCxDQUFvREUsS0FBcEQsRUFBZ0U7QUFDdEUsU0FBT0EsS0FBSyxDQUFDMUYsTUFBTixDQUNOLFVBQUNDLElBQUQsRUFBTzRFLENBQVAsRUFBYTtBQUNaLFFBQUkvSyx3RUFBMEIsQ0FBQytLLENBQUQsQ0FBMUIsSUFBaUNBLENBQUMsQ0FBQzdLLFFBQUYsS0FBZSxPQUFwRCxFQUE2RDtBQUM1RCxhQUFPO0FBQ042TCxRQUFBQSxTQUFTLEVBQUU1RixJQUFJLENBQUM0RixTQURWO0FBRU5DLFFBQUFBLFVBQVUsNEZBQU03RixJQUFJLENBQUM2RixVQUFYLElBQXVCakIsQ0FBdkI7QUFGSixPQUFQO0FBSUE7O0FBQ0QsV0FBTztBQUNOZ0IsTUFBQUEsU0FBUyw0RkFBTTVGLElBQUksQ0FBQzRGLFNBQVgsSUFBc0JoQixDQUF0QixFQURIO0FBRU5pQixNQUFBQSxVQUFVLEVBQUU3RixJQUFJLENBQUM2RjtBQUZYLEtBQVA7QUFJQSxHQVpLLEVBYU47QUFBQ0QsSUFBQUEsU0FBUyxFQUFFLEVBQVo7QUFBZ0JDLElBQUFBLFVBQVUsRUFBRTtBQUE1QixHQWJNLENBQVA7QUFlQTtBQUVNLFNBQVNTLGNBQVQsQ0FBd0J0TCxJQUF4QixFQUFnRUMsSUFBaEUsRUFBNEU7QUFDbEYsU0FBT0QsSUFBSSxDQUFDZCxFQUFMLEdBQ0o7QUFDQWlNLElBQUFBLEVBQUUsRUFBRXhILGtEQURKO0FBRUEyRCxJQUFBQSxNQUFNLEVBQUVySCxJQUFJLENBQUNxSCxNQUZiO0FBR0FwSSxJQUFBQSxFQUFFLEVBQUUsT0FBT2MsSUFBSSxDQUFDZCxFQUFaLEtBQW1CLFVBQW5CLEdBQWdDYyxJQUFJLENBQUNkLEVBQUwsQ0FBUWUsSUFBUixDQUFoQyxHQUFnREQsSUFBSSxDQUFDZDtBQUh6RCxHQURJLEdBTUosRUFOSDtBQU9BO0FBRU0sU0FBU29DLE9BQVQsQ0FBaUJ0QixJQUFqQixFQUF1Q0MsSUFBdkMsRUFBbUQ7QUFDekQsU0FBTyxPQUFPRCxJQUFJLENBQUNxRixJQUFaLEtBQXFCLFVBQXJCLEdBQWtDckYsSUFBSSxDQUFDcUYsSUFBTCxDQUFVcEYsSUFBVixDQUFsQyxHQUFvREQsSUFBSSxDQUFDcUYsSUFBaEU7QUFDQTtBQUVNLFNBQVNoRSxPQUFULENBQWlCckIsSUFBakIsRUFBdUNDLElBQXZDLEVBQW1EO0FBQ3pEO0FBQ0EsTUFBSXlGLFFBQUo7O0FBQ0EsTUFBSTFGLElBQUksQ0FBQzBCLElBQVQsRUFBZTtBQUNkZ0UsSUFBQUEsUUFBUSxHQUFHLE9BQU8xRixJQUFJLENBQUMwQixJQUFaLEtBQXFCLFVBQXJCLEdBQWtDMUIsSUFBSSxDQUFDMEIsSUFBTCxDQUFVekIsSUFBVixDQUFsQyxHQUFvREQsSUFBSSxDQUFDMEIsSUFBcEU7QUFDQTs7QUFDRCxTQUFPMUIsSUFBSSxDQUFDMEIsSUFBTCxnQkFBWSw4REFBQyxtREFBRDtBQUFNLFFBQUksRUFBRWdFO0FBQVo7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFaLEdBQXVDLElBQTlDO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLElBQU01RixDQUFDLEdBQUdQLDRDQUFLLENBQUMsNEJBQUQsQ0FBZjtBQUVBLElBQU1vTix1QkFBNkMsR0FBRztBQUNyRHJKLEVBQUFBLFNBQVMsRUFBRSxFQUQwQztBQUVyRDRGLEVBQUFBLFdBQVcsRUFBRSxFQUZ3QztBQUdyREMsRUFBQUEsU0FBUyxFQUFFLEVBSDBDO0FBSXJEQyxFQUFBQSxhQUFhLEVBQUUsRUFKc0M7QUFLckRILEVBQUFBLE1BQU0sRUFBRTtBQUw2QyxDQUF0RDtBQVFPLFNBQVMyRCxVQUFULENBQW9CQyxNQUFwQixFQUFpRDtBQUN2RCxNQUFNQyxnQkFBZ0IsR0FBR0QsTUFBTSxDQUFDRSxPQUFQLENBQWVoSSxNQUFmLENBQXNCLFVBQUNDLElBQUQsRUFBT2dJLE1BQVAsRUFBa0I7QUFDaEUsUUFBSU4sb0VBQTRCLENBQUNNLE1BQUQsQ0FBaEMsRUFBMEM7QUFDekMsYUFBTztBQUNOMUosUUFBQUEsU0FBUyw0RkFBTzBCLElBQUksQ0FBQzFCLFNBQUwsSUFBa0IsRUFBekIsbUZBQWtDMEosTUFBTSxDQUFDQyxNQUFQLENBQWMzSixTQUFkLElBQTJCLEVBQTdELEVBREg7QUFFTjRGLFFBQUFBLFdBQVcsNEZBQU9sRSxJQUFJLENBQUNrRSxXQUFMLElBQW9CLEVBQTNCLG1GQUFvQzhELE1BQU0sQ0FBQ0MsTUFBUCxDQUFjL0QsV0FBZCxJQUE2QixFQUFqRSxFQUZMO0FBR05DLFFBQUFBLFNBQVMsNEZBQU9uRSxJQUFJLENBQUNtRSxTQUFMLElBQWtCLEVBQXpCLG1GQUFrQzZELE1BQU0sQ0FBQ0MsTUFBUCxDQUFjOUQsU0FBZCxJQUEyQixFQUE3RCxFQUhIO0FBSU5DLFFBQUFBLGFBQWEsNEZBQU9wRSxJQUFJLENBQUNvRSxhQUFMLElBQXNCLEVBQTdCLG1GQUFzQzRELE1BQU0sQ0FBQ0MsTUFBUCxDQUFjN0QsYUFBZCxJQUErQixFQUFyRSxFQUpQO0FBS05ILFFBQUFBLE1BQU0sNEZBQU9qRSxJQUFJLENBQUNpRSxNQUFMLElBQWUsRUFBdEIsbUZBQStCK0QsTUFBTSxDQUFDQyxNQUFQLENBQWNoRSxNQUFkLElBQXdCLEVBQXZEO0FBTEEsT0FBUDtBQU9BOztBQUNELFdBQU9qRSxJQUFQO0FBQ0EsR0FYd0IsRUFXdEIySCx1QkFYc0IsQ0FBekI7QUFZQTdNLEVBQUFBLENBQUMsQ0FBQyx3QkFBRCxFQUEyQmdOLGdCQUEzQixDQUFELENBYnVELENBZXZEOztBQUNBLFNBQU8sU0FBU0ksU0FBVCxDQUFtQkMsT0FBbkIsRUFBZ0Q7QUFDdEQsUUFBTUMsV0FBVyxHQUFHRCxPQUFPLENBQUNDLFdBQVIsSUFBdUJELE9BQU8sQ0FBQ0UsSUFBL0IsSUFBdUMsRUFBM0Q7O0FBRUEsYUFBU0MsVUFBVCxDQUFvQkMsS0FBcEIsRUFBb0M7QUFDbkMsMEJBQ0M7QUFBQSxnQ0FDQyw4REFBQyxzREFBRCxrQ0FBWVQsZ0JBQVo7QUFBQSxpQ0FDQyw4REFBQyxPQUFELGtDQUFhUyxLQUFiO0FBQW9CLGtCQUFNLEVBQUVUO0FBQTVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERDtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQURELGVBSUMsOERBQUMsMkRBQUQ7QUFBVyxtQkFBUyxFQUFFQSxnQkFBZ0IsQ0FBQ3hKO0FBQXZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBSkQ7QUFBQSxzQkFERDtBQVFBOztBQUVEZ0ssSUFBQUEsVUFBVSxDQUFDRixXQUFYLHdCQUF1Q0EsV0FBdkM7QUFFQSxXQUFPRSxVQUFQO0FBQ0EsR0FqQkQ7QUFrQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwREQ7QUFDQTtBQUVPLElBQU14RyxLQUFLLEdBQUcyRyw2REFBVyxDQUFDO0FBQ2hDSixFQUFBQSxJQUFJLEVBQUUsZ0JBRDBCO0FBRWhDSyxFQUFBQSxZQUFZLEVBQUU7QUFDYnJFLElBQUFBLFFBQVEsRUFBRTtBQURHLEdBRmtCO0FBS2hDc0UsRUFBQUEsUUFBUSxFQUFFO0FBQ1QxQixJQUFBQSxTQUFTLEVBQUUsbUJBQUMyQixFQUFELEVBQUtDLE1BQUw7QUFBQSw2Q0FBNkNELEVBQTdDO0FBQWlEdkUsUUFBQUEsUUFBUSxFQUFFd0UsTUFBTSxDQUFDQztBQUFsRTtBQUFBO0FBREY7QUFMc0IsQ0FBRCxDQUF6QjtBQVVBLElBQU1sRixjQUFjLEdBQUc0RSxnRUFBZSxDQUFDMUcsS0FBRCxDQUF0QztBQUVBLElBQU8rRSxPQUFQLEdBQWtCL0UsS0FBbEIsQ0FBTytFLE9BQVA7Ozs7Ozs7Ozs7Ozs7OztBQ1ZQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFrQk8sU0FBU2EsNEJBQVQsQ0FBc0NNLE1BQXRDLEVBQTBHO0FBQ2hILE1BQU1lLFlBQVksR0FBR2YsTUFBckI7QUFDQSxTQUFPZSxZQUFZLENBQUNkLE1BQWIsS0FBd0J0TCxTQUEvQjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQ0Q7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDTyxJQUFNSSxpQkFBaUIsR0FBR2lNLHFEQUFPLENBQUMsU0FBU0UscUJBQVQsQ0FBdUR6RCxLQUF2RCxFQUFtRTtBQUMzRyxTQUFPd0Qsb0RBQU0sQ0FBQ3hELEtBQUQsRUFBUSxVQUFBYixDQUFDO0FBQUEsV0FBSUEsQ0FBQyxDQUFDSCxNQUFGLElBQVksQ0FBaEI7QUFBQSxHQUFULENBQWI7QUFDQSxDQUZ1QyxDQUFqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05QLE1BQTJHO0FBQzNHLE1BQWlHO0FBQ2pHLE1BQXdHO0FBQ3hHLE1BQTJIO0FBQzNILE1BQW9IO0FBQ3BILE1BQW9IO0FBQ3BILE1BQTRJO0FBQzVJO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHFHQUFtQjtBQUMvQyx3QkFBd0Isa0hBQWE7O0FBRXJDLHVCQUF1Qix1R0FBYTtBQUNwQztBQUNBLGlCQUFpQiwrRkFBTTtBQUN2Qiw2QkFBNkIsc0dBQWtCOztBQUUvQyxhQUFhLDBHQUFHLENBQUMsK0dBQU87Ozs7QUFJc0Y7QUFDOUcsT0FBTyxpRUFBZSwrR0FBTyxJQUFJLHNIQUFjLEdBQUcsc0hBQWMsWUFBWSxFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCN0UsTUFBMkc7QUFDM0csTUFBaUc7QUFDakcsTUFBd0c7QUFDeEcsTUFBMkg7QUFDM0gsTUFBb0g7QUFDcEgsTUFBb0g7QUFDcEgsTUFBNEk7QUFDNUk7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIscUdBQW1CO0FBQy9DLHdCQUF3QixrSEFBYTs7QUFFckMsdUJBQXVCLHVHQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLCtGQUFNO0FBQ3ZCLDZCQUE2QixzR0FBa0I7O0FBRS9DLGFBQWEsMEdBQUcsQ0FBQywrR0FBTzs7OztBQUlzRjtBQUM5RyxPQUFPLGlFQUFlLCtHQUFPLElBQUksc0hBQWMsR0FBRyxzSEFBYyxZQUFZLEVBQUM7Ozs7Ozs7Ozs7O0FDMUJoRTs7QUFFYjs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQix3QkFBd0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FDdkdhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQ3RDYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQ1ZhOztBQUViO0FBQ0E7QUFDQSxjQUFjLEtBQXdDLEdBQUcsc0JBQWlCLEdBQUcsQ0FBSTs7QUFFakY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7QUNYYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQSwwQ0FBMEM7QUFDMUM7O0FBRUE7O0FBRUE7QUFDQSxpRkFBaUY7QUFDakY7O0FBRUE7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7O0FBRUE7QUFDQSx5REFBeUQ7QUFDekQsSUFBSTs7QUFFSjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7O0FDckVhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7QUNmQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0xBO0FBQ0E7QUFDQTtBQUdPLFNBQVMwRSxrQkFBVCxHQUFzRjtBQUM1RixTQUFPO0FBQ05kLElBQUFBLElBQUksRUFBRSxrQkFEQTtBQUVOZSxJQUFBQSxLQUFLLEVBQUUsRUFGRDtBQUdOQyxJQUFBQSxJQUFJLEVBQUUsQ0FBQ3pCLDBEQUFELENBSEE7QUFJTjlGLElBQUFBLEtBQUssRUFBTEEseUNBSk07QUFLTm1HLElBQUFBLE1BQU0sRUFBRTtBQUNQM0osTUFBQUEsU0FBUyxFQUFFLENBQUN3SSwwRUFBRDtBQURKO0FBTEYsR0FBUDtBQVNBO0FBR0Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovLy8uL2NvbW1vbkl0ZW1zLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9BY3Rpb25Gb3JtLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQudHN4Iiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9Db250ZW50Q29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQudHN4Iiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9IZWFkZXIudHN4Iiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9QbGFpblNpZGViYXJJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvU2lkZWJhckl0ZW1XcmFwcGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NyZWF0ZVBhZ2VzLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2RpdmlkZXJTaWRlYmFySXRlbS50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2hvb2tzL3VzZUJ1aWxkQ29udGVudERhdGEudHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC90eXBlcy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L3V0aWxzLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRhaG9va3MvRGF0YUhvb2tzLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRhaG9va3MvRXhlY3V0ZURhdGFIb29rLnRzeCIsIndlYnBhY2s6Ly8vLi9ob29rcy91c2VCdWlsZERhdGEudHMiLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlSXNBY3RpdmVSb3V0ZS50cyIsIndlYnBhY2s6Ly8vLi9ob29rcy91c2VTZWxlY3RTdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9Ecm9wZG93bkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dC50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbUJhci50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbVdyYXBwZXIudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9QbGFpbkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0LnRzIiwid2VicGFjazovLy8uL2xheW91dC9tb3ZlSXRlbXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3R5cGVzLnRzIiwid2VicGFjazovLy8uL2xheW91dC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3dpdGhMYXlvdXQudHN4Iiwid2VicGFjazovLy8uL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3R5cGVzLnRzIiwid2VicGFjazovLy8uL3V0aWxzLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9zdHlsZXMuY3NzP2QxZjUiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvc3R5bGVzLmNzcz8xNmYwIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL3N0YXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvY29udHJvbHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL2Zsb3dSaWdodFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9mcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9ncm91cEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvbWVyZ2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibWluZ29cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZXNwb25zaXZlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tcWNacXcge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3dyYXBwZXItLW1ielNpIHtcXG5cXHRmbGV4OiAxO1xcblxcdGZsZXgtYmFzaXM6IGNhbGMoNjUlKTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHIHtcXG5cXHRtYXJnaW46IDAgMC44cmVtIDAuOHJlbSAwLjhyZW07XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50RnVsbC0ta1VXM18ge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2hlYWRlci0tTk9HeWMge1xcblxcdHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMCAwLjhyZW07XFxuXFx0bWFyZ2luLWJvdHRvbTogMC44cmVtO1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdG1pbi13aWR0aDogMjUwcHg7XFxuXFx0cGFkZGluZzogMTBweDtcXG5cXHRvdmVyZmxvdy15OiBhdXRvO1xcblxcdG92ZXJmbG93LXg6IGhpZGRlbjtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJJdGVtLS1FeWxnZiB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fYWN0aW9uc0hlYWRlci0tTjZ6ek0ge1xcblxcdGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxdyB7XFxuXFx0XFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0fVxcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaSB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdFxcdG1pbi13aWR0aDogYXV0bztcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNIHtcXG5cXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxuXFx0fVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLFlBQVk7QUFDYjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxxQkFBcUI7QUFDdEI7O0FBRUE7Q0FDQyw4QkFBOEI7QUFDL0I7O0FBRUE7Q0FDQyxZQUFZO0NBQ1osV0FBVztBQUNaOztBQUVBO0NBQ0MsK0JBQStCO0NBQy9CLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGFBQWE7QUFDZDs7QUFFQTtDQUNDO0VBQ0Msc0JBQXNCO0VBQ3RCLFlBQVk7Q0FDYjtDQUNBO0VBQ0Msa0JBQWtCO0VBQ2xCLG9CQUFvQjtDQUNyQjtDQUNBO0VBQ0MsZUFBZTtDQUNoQjtDQUNBO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtDQUNuQjtBQUNEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5wYXJlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLndyYXBwZXIge1xcblxcdGZsZXg6IDE7XFxuXFx0ZmxleC1iYXNpczogY2FsYyg2NSUpO1xcbn1cXG5cXG4uY29udGVudCB7XFxuXFx0bWFyZ2luOiAwIDAuOHJlbSAwLjhyZW0gMC44cmVtO1xcbn1cXG5cXG4uY29udGVudEZ1bGwge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmhlYWRlciB7XFxuXFx0cGFkZGluZzogMC44cmVtIDAuOHJlbSAwIDAuOHJlbTtcXG5cXHRtYXJnaW4tYm90dG9tOiAwLjhyZW07XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDI1MHB4O1xcblxcdHBhZGRpbmc6IDEwcHg7XFxuXFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcblxcbi5zaWRlYmFySXRlbSB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uYWN0aW9uc0hlYWRlciB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjcuOThweCkge1xcblxcdC5wYXJlbnQge1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0XFx0aGVpZ2h0OiBhdXRvO1xcblxcdH1cXG5cXHQud3JhcHBlciB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuc2lkZWJhciB7XFxuXFx0XFx0bWluLXdpZHRoOiBhdXRvO1xcblxcdH1cXG5cXHQuYWN0aW9uc0hlYWRlciB7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcblxcdH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwicGFyZW50XCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxd1wiLFxuXHRcIndyYXBwZXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaVwiLFxuXHRcImNvbnRlbnRcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1maFNYR1wiLFxuXHRcImNvbnRlbnRGdWxsXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fY29udGVudEZ1bGwtLWtVVzNfXCIsXG5cdFwiaGVhZGVyXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19faGVhZGVyLS1OT0d5Y1wiLFxuXHRcInNpZGViYXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UlwiLFxuXHRcInNpZGViYXJJdGVtXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmXCIsXG5cdFwiYWN0aW9uc0hlYWRlclwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXN3czhPIHtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tV01jWG4ge1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1IYTRmXyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51LS1ieXU2eSB7XFxuXFx0bWluLXdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xcblxcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdG92ZXJmbG93LXg6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3NlY29uZGFyeU1lbnVIaWRkZW4tLWVrN1F6IHtcXG5cXHRtYXJnaW4tbGVmdDogLTIyMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1TYVlHbiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLUpHRHVXIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0bWF4LWhlaWdodDogMTAwJTsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0b3ZlcmZsb3cteDogaGlkZGVuOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3cge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk8ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLXM2QXNxIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS14R0h4YSB7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2ljb25Sb3RhdGVkLS1YQjY3WSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDhDQUE4QztBQUM5QztDQUNDLFlBQVk7QUFDYjtBQUNBO0NBQ0MsWUFBWTtBQUNiOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isb0JBQW9CO0FBQ3JCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLDJCQUEyQjtDQUMzQixzQkFBc0I7Q0FDdEIsdUJBQXVCO0NBQ3ZCLDJCQUEyQjtDQUMzQixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLHdDQUF3QztBQUN6Qzs7QUFFQTtDQUNDLDhCQUE4QjtBQUMvQjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLGlCQUFpQjtDQUNqQixxQkFBcUI7Q0FDckIsc0NBQXNDLEVBQUUsMkVBQTJFO0NBQ25ILGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLFlBQVk7Q0FDWixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsa0JBQWtCLEVBQUUsOERBQThEO0FBQ25GOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLHdCQUF3QjtDQUN4QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLFVBQVU7Q0FDVixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQyx5QkFBeUI7Q0FDekIsMkJBQTJCO0NBQzNCLGdCQUFnQjtBQUNqQjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zZWNvbmRhcnlNZW51IHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNlY29uZGFyeU1lbnVIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHRvdmVyZmxvdy15OiBhdXRvOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7IC8qIGNoYW5nZWQgdGhpcyB0byBoYXZlIGEgZmxleCBvZiBvbmUgaW5zdGVhZCBvZiBhdXRvIHNvIHRoZSBzaWRlIG1lbnUgZG9lc24ndCBnZXQgc3F1aXNoZWQgKi9cXG5cXHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uZm9vdGVyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duSWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duVGl0bGUge1xcblxcdHBhZGRpbmc6IDA7XFxuXFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25Db250ZW50IHtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG4uaWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgbGluZWFyO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInBhcmVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1zd3M4T1wiLFxuXHRcIm1lbnViYXJcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLVdNY1huXCIsXG5cdFwic3RhdHVzYmFyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zdGF0dXNiYXItLUhhNGZfXCIsXG5cdFwic2Vjb25kYXJ5TWVudVwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc2Vjb25kYXJ5TWVudS0tYnl1NnlcIixcblx0XCJzZWNvbmRhcnlNZW51SGlkZGVuXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51SGlkZGVuLS1lazdRelwiLFxuXHRcImNvbnRlbnRXcmFwcGVyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50V3JhcHBlci0tU2FZR25cIixcblx0XCJjb250ZW50XCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1KR0R1V1wiLFxuXHRcImZvb3RlclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25JY29uXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3dcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWRcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk9cIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25UaXRsZS0tczZBc3FcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLXhHSHhhXCIsXG5cdFwiaWNvblwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLVhCNjdZXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNbX2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbW9kdWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pMl0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiaW1wb3J0IHR5cGUge1N0YXRlU2VsZWN0b3JIb29rLCBWaXNpYmlsaXR5UXVlcnlGbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gaGlkZSBpdHNlbGYgYmFzZWQgb24gcmVkdXggc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXNpYmlsaXR5SXRlbSB7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdOyAvLyBIb29rIG9yIGFycmF5IG9mIGhvb2tzIHRoYXQgc2VsZWN0IHN0YXRlXG5cdHZpc2libGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFZpc2liaWxpdHlRdWVyeUZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHdpdGggb3B0aW9uYWwgd2VpZ2h0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2VpZ2h0ZWRJdGVtIHtcblx0d2VpZ2h0PzogbnVtYmVyOyAvLyBMYXJnZXIgbnVtYmVycyBtb3ZlIHJpZ2h0L2Rvd25cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGxpbmtzIHRvIGEgcm91dGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZUl0ZW08VD4ge1xuXHR0bz86IHN0cmluZyB8ICgoZGF0YTogVCkgPT4gc3RyaW5nKTtcblx0ZXhhY3Q/OiBib29sZWFuO1xuXHRzdHJpY3Q/OiBib29sZWFuO1xuXHRzZW5zaXRpdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgY2FuIGJlIHBvc2l0aW9uZWQgaG9yaXpvbnRhbGx5IGxlZnQgb3IgcmlnaHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRwb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7IC8vIERlZmF1bHQgaXMgbGVmdFxuXHRzdGlja09uTW9iaWxlPzogYm9vbGVhbjsgLy8gSWYgdHJ1ZSwgd2lsbCBub3QgYmUgaGlkZGVuIHdoZW4gaW4gbW9iaWxlIG1vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRyZXR1cm4gISEoKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkucG9zaXRpb24gfHwgKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkuc3RpY2tPbk1vYmlsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JvdXRlSXRlbTxUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUm91dGVJdGVtPFQ+IHtcblx0cmV0dXJuICEhKCh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLnRvIHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLmV4YWN0IHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLnN0cmljdCB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5zZW5zaXRpdmUpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQge3VzZVRGb3JtfSBmcm9tICdAdGh4L2NvbnRyb2xzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b24sIEZvcm0sIEljb24sIE1lc3NhZ2UsIFBvcHVwfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybScpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG5cdG9uSGlkZUZvcm06ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3Rpb25Gb3JtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YSwgb25IaWRlRm9ybX06IEFjdGlvbkZvcm1Qcm9wczxULCBLPikge1xuXHQvLyBHZXQgaW5pdGlhbCB2YWx1ZXNcblx0bGV0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblx0aWYgKGl0ZW0uaW5pdGlhbFZhbHVlcykge1xuXHRcdGlmICh0eXBlb2YgaXRlbS5pbml0aWFsVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzKGRhdGEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRGb3JtXG5cdGNvbnN0IHtoYXNFcnJvcnMsIGhhc1dhcm5pbmdzLCBoYW5kbGVTdWJtaXQsIGhhbmRsZUNoYW5nZSwgdmFsdWVzLCByZXNldEZvcm0sIGVycm9ycywgZmllbGRFcnJvcn0gPSB1c2VURm9ybSh7XG5cdFx0aW5pdGlhbFZhbHVlcyxcblx0XHRvblN1Ym1pdDogc3VibWl0VmFsdWVzID0+IHtcblx0XHRcdGlmIChpdGVtLm9uU3VibWl0KSB7XG5cdFx0XHRcdGl0ZW0ub25TdWJtaXQoc3VibWl0VmFsdWVzLCBkYXRhKTtcblx0XHRcdH1cblx0XHRcdG9uSGlkZUZvcm0oKTtcblx0XHR9LFxuXHRcdGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcblx0XHR2YWxpZGF0aW9uU2NoZW1hOiBpdGVtLnZhbGlkYXRpb25TY2hlbWEsXG5cdH0pO1xuXG5cdGNvbnN0IHNhdmVCdXR0b24gPSBoYXNXYXJuaW5ncyA/IChcblx0XHQ8UG9wdXBcblx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHQ8QnV0dG9uIHBvc2l0aXZlIHR5cGU9XCJzdWJtaXRcIiBmbG9hdGVkPVwicmlnaHRcIiBpY29uIGxhYmVsUG9zaXRpb249XCJsZWZ0XCI+XG5cdFx0XHRcdFx0PEljb24gbmFtZT1cImV4Y2xhbWF0aW9uIGNpcmNsZVwiIGNvbG9yPVwicmVkXCIgLz5cblx0XHRcdFx0XHRTYXZlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0Y29udGVudD17PE1lc3NhZ2UgZXJyb3IgbGlzdD17T2JqZWN0LnZhbHVlcyhlcnJvcnMpfSAvPn1cblx0XHRcdG9uPVwiaG92ZXJcIlxuXHRcdC8+XG5cdCkgOiAoXG5cdFx0PEJ1dHRvbiBwb3NpdGl2ZSB0eXBlPVwic3VibWl0XCIgZmxvYXRlZD1cInJpZ2h0XCI+XG5cdFx0XHRTYXZlXG5cdFx0PC9CdXR0b24+XG5cdCk7XG5cblx0Ly8gUmVuZGVyIGZvcm1cblx0cmV0dXJuIChcblx0XHQ8Rm9ybSBlcnJvcj17aGFzRXJyb3JzfSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG5cdFx0XHR7aXRlbS5mb3JtKHtoYW5kbGVDaGFuZ2UsIHZhbHVlcywgZGF0YSwgZmllbGRFcnJvcn0pfVxuXHRcdFx0e3NhdmVCdXR0b259XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cmVzZXRGb3JtKCk7XG5cdFx0XHRcdFx0b25IaWRlRm9ybSgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHRDYW5jZWxcblx0XHRcdDwvQnV0dG9uPlxuXHRcdDwvRm9ybT5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0FjdGlvbkZvcm1TaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7QWN0aW9uRm9ybX0gZnJvbSAnLi9BY3Rpb25Gb3JtJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCcpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe1xuXHRpdGVtLFxuXHRkYXRhLFxufTogQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgW2lzRWRpdCwgc2V0SXNFZGl0XSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuXHRpZiAoaXNFZGl0KSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxBY3Rpb25Gb3JtXG5cdFx0XHRcdGl0ZW09e2l0ZW19XG5cdFx0XHRcdGRhdGE9e2RhdGF9XG5cdFx0XHRcdG9uSGlkZUZvcm09eygpID0+IHtcblx0XHRcdFx0XHRzZXRJc0VkaXQoZmFsc2UpO1xuXHRcdFx0XHR9fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0Ly8gUmVuZGVyIGFjdGlvbiBidXR0b25cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uXG5cdFx0XHRmbHVpZFxuXHRcdFx0Y29tcGFjdFxuXHRcdFx0Y29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfVxuXHRcdFx0aWNvbj17ISFpY29ufVxuXHRcdFx0bGFiZWxQb3NpdGlvbj17aWNvbiA/ICdsZWZ0JyA6IHVuZGVmaW5lZH1cblx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0c2V0SXNFZGl0KHRydWUpO1xuXHRcdFx0fX1cblx0XHQ+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdGZsdWlkXG5cdFx0XHRjb21wYWN0XG5cdFx0XHRjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9XG5cdFx0XHRpY29uPXshIWljb259XG5cdFx0XHRsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfVxuXHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRpdGVtLm9uQ2xpY2soZGF0YSk7XG5cdFx0XHR9fVxuXHRcdD5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtEYXRhSG9va3N9IGZyb20gJy4uLy4uL2RhdGFob29rcy9EYXRhSG9va3MnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHt1c2VCdWlsZENvbnRlbnREYXRhfSBmcm9tICcuLi9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhJztcbmltcG9ydCB0eXBlIHtQYWdlLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7SGVhZGVyfSBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQge1NpZGViYXJJdGVtV3JhcHBlcn0gZnJvbSAnLi9TaWRlYmFySXRlbVdyYXBwZXInO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQ29udGVudENvbXBvbmVudCcpO1xuXG5pbnRlcmZhY2UgQ29udGVudENvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdHBhZ2U6IFBhZ2U8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRlbnRDb21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtwYWdlLCBwYXJhbXN9OiBDb250ZW50Q29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkQ29udGVudERhdGEoe3N0YXRlU2VsZWN0b3JIb29rOiBwYWdlLnN0YXRlU2VsZWN0b3JIb29rLCBwYXJhbXN9KTtcblxuXHRjb25zdCBjb250ZW50ID0gcGFnZS5jb250ZW50KGRhdGEpO1xuXHRjb25zdCBzaWRlYmFySXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhwYWdlLnNpZGViYXIgfHwgW10pO1xuXG5cdGNvbnN0IHNpZGViYXIgPVxuXHRcdHNpZGViYXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5zaWRlYmFyfSBpbXBlcml1bUNvbnRlbnRTaWRlYmFyYH0+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYWN0aW9uc0hlYWRlcn0gaW1wZXJpdW1Db250ZW50U2lkZWJhckhlYWRlcmB9PlxuXHRcdFx0XHRcdDxoMz5BY3Rpb25zPC9oMz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdHtzaWRlYmFySXRlbXMubWFwKChzYiwgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9e3N0eWxlcy5zaWRlYmFySXRlbX0ga2V5PXtpbmRleH0+XG5cdFx0XHRcdFx0XHRcdDxTaWRlYmFySXRlbVdyYXBwZXIgaXRlbT17c2J9IHBhcmFtcz17cGFyYW1zfSBkYXRhPXtkYXRhfSAvPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSl9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpIDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMucGFyZW50fSBpbXBlcml1bUNvbnRlbnRXcmFwcGVyUGFyZW50YH0+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9IGltcGVyaXVtQ29udGVudFdyYXBwZXJgfT5cblx0XHRcdFx0PEhlYWRlciBoZWFkZXI9e3BhZ2UuaGVhZGVyfSBkYXRhPXtkYXRhfSAvPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmNvbnRlbnR9IGltcGVyaXVtQ29udGVudCAke3BhZ2UuZnVsbCAmJiBzdHlsZXMuY29udGVudEZ1bGx9YH0+e2NvbnRlbnR9PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdHtzaWRlYmFyfVxuXHRcdFx0PERhdGFIb29rcyBkYXRhSG9va3M9e3BhZ2UuZGF0YUhvb2tzIHx8IFtdfSAvPlxuXHRcdDwvZGl2PlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIEN1c3RvbVNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YX06IEN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0cmV0dXJuIGl0ZW0ucmVuZGVyKGRhdGEpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgQ29udGVudEhlYWRlcn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuSGVhZGVyJyk7XG5cbmludGVyZmFjZSBIZWFkZXJQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRoZWFkZXI6IENvbnRlbnRIZWFkZXI8VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVyPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7ZGF0YSwgaGVhZGVyfTogSGVhZGVyUHJvcHM8VCwgSz4pIHtcblx0aWYgKGhlYWRlcikge1xuXHRcdGxldCBoZWFkZXJJbmZvID0ge1xuXHRcdFx0dGl0bGU6ICcnLFxuXHRcdH07XG5cdFx0aWYgKHR5cGVvZiBoZWFkZXIgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRoZWFkZXJJbmZvLnRpdGxlID0gaGVhZGVyO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aGVhZGVySW5mbyA9IGhlYWRlcihkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGVhZGVySW5mbyA9IGhlYWRlcjtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuaGVhZGVyfSBpbXBlcml1bUNvbnRlbnRIZWFkZXJgfT5cblx0XHRcdFx0PGgyPntoZWFkZXJJbmZvLnRpdGxlfTwvaDI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGEsIEN1c3RvbVNpZGViYXJJdGVtLCBEaXZpZGVyU2lkZWJhckl0ZW0sIFNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRSb3V0ZVRvLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogRXhjbHVkZTxTaWRlYmFySXRlbTxULCBLPiwgQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz4gfCBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB8IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPiB8IERpdmlkZXJTaWRlYmFySXRlbTxULCBLPj47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGxhaW5TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGF9OiBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uIGZsdWlkIGNvbXBhY3QgY29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfSBpY29uPXshIWljb259IGxhYmVsUG9zaXRpb249e2ljb24gPyAnbGVmdCcgOiB1bmRlZmluZWR9IGFzPXtMaW5rfSB0bz17Z2V0Um91dGVUbyhpdGVtLCBkYXRhKX0+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGl2aWRlcn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VCdWlsZENvbnRlbnREYXRhfSBmcm9tICcuLi9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgUm91dGVQYXJhbWV0ZXJzLCBTaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtpc0FjdGlvbkZvcm1TaWRlYmFySXRlbSwgaXNBY3Rpb25TaWRlYmFySXRlbSwgaXNDdXN0b21TaWRlYmFySXRlbSwgaXNEaXZpZGVyU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7QWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50fSBmcm9tICcuL0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50fSBmcm9tICcuL0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7Q3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnR9IGZyb20gJy4vQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQnO1xuaW1wb3J0IHtQbGFpblNpZGViYXJJdGVtfSBmcm9tICcuL1BsYWluU2lkZWJhckl0ZW0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuU2lkZWJhckl0ZW1XcmFwcGVyJyk7XG5cbmludGVyZmFjZSBTaWRlYmFySXRlbVdyYXBwZXJQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBTaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YT86IENvbnRlbnREYXRhPFQsIEs+O1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaWRlYmFySXRlbVdyYXBwZXI8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhOiBwYXJlbnREYXRhLCBwYXJhbXN9OiBTaWRlYmFySXRlbVdyYXBwZXJQcm9wczxULCBLPikge1xuXHRjb25zdCBkYXRhID0gdXNlQnVpbGRDb250ZW50RGF0YSh7ZGF0YTogcGFyZW50RGF0YSwgc3RhdGVTZWxlY3Rvckhvb2s6IGl0ZW0uc3RhdGVTZWxlY3Rvckhvb2ssIHBhcmFtc30pO1xuXG5cdC8vIENoZWNrIGlmIHZpc2libGVcblx0aWYgKGl0ZW0udmlzaWJsZSkge1xuXHRcdGlmICh0eXBlb2YgaXRlbS52aXNpYmxlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoIWl0ZW0udmlzaWJsZShkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHEgPSBuZXcgUXVlcnkoaXRlbS52aXNpYmxlIHx8IHt9KTtcblx0XHRcdGlmICghcS50ZXN0KGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRpZiAoaXNDdXN0b21TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8Q3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8QWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXG5cdGlmIChpc0RpdmlkZXJTaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8RGl2aWRlciAvPjtcblx0fVxuXG5cdC8vIEB0cy1pZ25vcmUgVGhlc2UgdHlwZXMgc2hvdWxkIHdvcmssIG5vdCBzdXJlIHdoeSBpdCdzIG5vdC4gUnVudGltZSBjb2RlIGlzIGZpbmUuXG5cdHJldHVybiA8UGxhaW5TaWRlYmFySXRlbSBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcbn1cbiIsImltcG9ydCB0eXBlIHtSb3V0ZXMsIERlZmluZVJvdXRlT3B0aW9ucywgS2V5ZWRSb3V0ZVJlbmRlckZuc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL0NvbnRlbnRDb21wb25lbnQnO1xuaW1wb3J0IHR5cGUge1BhZ2VzLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtpc1BhZ2V9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNyZWF0ZVBhZ2VzJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYWdlczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zPihyb3V0ZXM6IFJvdXRlczxUPiwgcGFnZXM6IFBhZ2VzPFQ+KSB7XG5cdGNvbnN0IHJlbmRlclJvdXRlUHJvcHNPYmogPSBPYmplY3Qua2V5cyhyb3V0ZXMudHlwZXMpLnJlZHVjZSgobWVtbywga2V5KSA9PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLm1lbW8sXG5cdFx0XHRba2V5XTogKHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbdHlwZW9mIGtleV1bJ3BhcmFtcyddPikgPT4ge1xuXHRcdFx0XHRjb25zdCBwZyA9IHBhZ2VzW2tleV07XG5cdFx0XHRcdGlmIChpc1BhZ2UocGcpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIDxDb250ZW50Q29tcG9uZW50IHBhZ2U9e3BnfSBwYXJhbXM9e3BhcmFtc30gLz47XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQ8Q29udGVudENvbXBvbmVudFxuXHRcdFx0XHRcdFx0cGFnZT17e1xuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBwZyxcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRwYXJhbXM9e3BhcmFtc31cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9LCB7fSBhcyBLZXllZFJvdXRlUmVuZGVyRm5zPFQ+KTtcblxuXHRyZXR1cm4gcm91dGVzLnJlbmRlclJvdXRlUHJvcHMocmVuZGVyUm91dGVQcm9wc09iaik7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGl2aWRlclNpZGViYXJJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGRpdmlkZXJTaWRlYmFySXRlbTogRGl2aWRlclNpZGViYXJJdGVtPGFueSwgYW55PiA9IHtcblx0dGV4dDogJycsXG5cdGRpdmlkZXI6IHRydWUsXG59O1xuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7VXNlQnVpbGREYXRhUGFyYW1zfSBmcm9tICcuLi8uLi9ob29rcy91c2VCdWlsZERhdGEnO1xuaW1wb3J0IHt1c2VCdWlsZERhdGF9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUJ1aWxkRGF0YSc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIFJvdXRlUGFyYW1ldGVyc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgVXNlQnVpbGRDb250ZW50RGF0YVBhcmFtczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBVc2VCdWlsZERhdGFQYXJhbXMge1xuXHRkYXRhPzogQ29udGVudERhdGE8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJ1aWxkQ29udGVudERhdGE8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtcblx0ZGF0YSxcblx0c3RhdGVTZWxlY3Rvckhvb2ssXG5cdHJvdXRlSXRlbSxcblx0cGFyYW1zLFxufTogVXNlQnVpbGRDb250ZW50RGF0YVBhcmFtczxULCBLPikge1xuXHRjb25zdCBidWlsZERhdGEgPSB1c2VCdWlsZERhdGEoe2RhdGEsIHN0YXRlU2VsZWN0b3JIb29rLCByb3V0ZUl0ZW19KTtcblx0cmV0dXJuIHtcblx0XHQuLi5idWlsZERhdGEsXG5cdFx0cGFyYW1zLFxuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9ucywgUGFyYW1ldGVyc0Zyb21Bc3NlcnRpb259IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1NlbWFudGljQ09MT1JTLCBTZW1hbnRpY0lDT05TfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7Um91dGVJdGVtLCBWaXNpYmlsaXR5SXRlbSwgV2VpZ2h0ZWRJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuLi9kYXRhaG9va3MvdHlwZXMnO1xuaW1wb3J0IHR5cGUge0RhdGEsIFN0YXRlU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlUGFyYW1ldGVyczxUIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10gfCB1bmRlZmluZWQ+ID0gVCBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdID8gUGFyYW1ldGVyc0Zyb21Bc3NlcnRpb248VD4gOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50RGF0YTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBEYXRhIHtcblx0cGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFtLXVsncGFyYW1zJ10+O1xufVxuXG5leHBvcnQgdHlwZSBDb250ZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gSlNYLkVsZW1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIFdlaWdodGVkSXRlbSwgVmlzaWJpbGl0eUl0ZW0ge1xuXHR0ZXh0OiBzdHJpbmcgfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBzdHJpbmcpO1xuXHRpY29uPzogU2VtYW50aWNJQ09OUyB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IFNlbWFudGljSUNPTlMpO1xuXHRjb2xvcj86IFNlbWFudGljQ09MT1JTIHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gU2VtYW50aWNDT0xPUlMpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpdmlkZXJTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBCYXNlU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRkaXZpZGVyOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvblNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIEJhc2VTaWRlYmFySXRlbTxULCBLPiB7XG5cdG9uQ2xpY2s6IChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIEFjdGlvbkZvcm1TaWRlYmFySXRlbUZvcm1QYXJhbXM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0dmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHRoYW5kbGVDaGFuZ2U6IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxhbnk+KSA9PiB2b2lkO1xuXHRmaWVsZEVycm9yOiAoZmllbGROYW1lOiBzdHJpbmcgfCBudW1iZXIpID0+IGJvb2xlYW47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgQmFzZVNpZGViYXJJdGVtPFQsIEs+IHtcblx0Zm9ybTogKHBhcmFtczogQWN0aW9uRm9ybVNpZGViYXJJdGVtRm9ybVBhcmFtczxULCBLPikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXHRpbml0aWFsVmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PiB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IFJlY29yZDxzdHJpbmcsIGFueT4pO1xuXHRvblN1Ym1pdD86ICh2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiB2b2lkO1xuXHR2YWxpZGF0aW9uU2NoZW1hPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIFdlaWdodGVkSXRlbSwgVmlzaWJpbGl0eUl0ZW0ge1xuXHRyZW5kZXI6IChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gPVxuXHR8IChCYXNlU2lkZWJhckl0ZW08VCwgSz4gJiBSb3V0ZUl0ZW08Q29udGVudERhdGE8VCwgSz4+KVxuXHR8IEFjdGlvblNpZGViYXJJdGVtPFQsIEs+XG5cdHwgQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz5cblx0fCBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz5cblx0fCBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz47XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRIZWFkZXI8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID1cblx0fCBzdHJpbmdcblx0fCB7dGl0bGU6IHN0cmluZzsgaWNvbj86IHN0cmluZ30gLy8gVE9ETyBpY29uIHNob3VsZCBwcm9iYWJseSBiZSBTZW1hbnRpY0lDT05TXG5cdHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4ge3RpdGxlOiBzdHJpbmc7IGljb24/OiBzdHJpbmd9KVxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGRhdGFIb29rcz86IERhdGFIb29rSXRlbVtdO1xuXHRzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXTtcblx0Y29udGVudDogQ29udGVudDxULCBLPjtcblx0aGVhZGVyPzogQ29udGVudEhlYWRlcjxULCBLPjtcblx0c2lkZWJhcj86IFNpZGViYXJJdGVtPFQsIEs+W107XG5cdGZ1bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQYWdlczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zPiA9IHtcblx0W2tleSBpbiBrZXlvZiBUXTogUGFnZTxULCBrZXk+IHwgQ29udGVudDxULCBrZXk+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFnZTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFBhZ2U8VCwgSz4ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgUGFnZTxULCBLPikuY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPikub25DbGljaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPikuZm9ybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPikucmVuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXZpZGVyU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRyZXR1cm4gKHZhbHVlIGFzIERpdmlkZXJTaWRlYmFySXRlbTxULCBLPikuZGl2aWRlcjtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SWNvbiwgU2VtYW50aWNDT0xPUlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtSb3V0ZUl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB0eXBlIHtCYXNlU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEljb248VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KGl0ZW06IEJhc2VTaWRlYmFySXRlbTxULCBLPiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pIHtcblx0aWYgKGl0ZW0uaWNvbikge1xuXHRcdGNvbnN0IGljb25OYW1lID0gdHlwZW9mIGl0ZW0uaWNvbiA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uaWNvbihkYXRhKSA6IGl0ZW0uaWNvbjtcblx0XHRyZXR1cm4gPEljb24gbmFtZT17aWNvbk5hbWV9IC8+O1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVUbzxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogUm91dGVJdGVtPENvbnRlbnREYXRhPFQsIEs+PiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pIHtcblx0aWYgKGl0ZW0udG8pIHtcblx0XHRyZXR1cm4gdHlwZW9mIGl0ZW0udG8gPT09ICdmdW5jdGlvbicgPyBpdGVtLnRvKGRhdGEpIDogaXRlbS50bztcblx0fVxuXHRyZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBCYXNlU2lkZWJhckl0ZW08VCwgSz4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSB7XG5cdHJldHVybiB0eXBlb2YgaXRlbS50ZXh0ID09PSAnZnVuY3Rpb24nID8gaXRlbS50ZXh0KGRhdGEpIDogaXRlbS50ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3I8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KGl0ZW06IEJhc2VTaWRlYmFySXRlbTxULCBLPiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pOiBTZW1hbnRpY0NPTE9SUyB7XG5cdGlmICghaXRlbS5jb2xvcikgcmV0dXJuICdibHVlJztcblx0cmV0dXJuIHR5cGVvZiBpdGVtLmNvbG9yID09PSAnZnVuY3Rpb24nID8gaXRlbS5jb2xvcihkYXRhKSA6IGl0ZW0uY29sb3I7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtjb21wb3NlfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlTG9jYXRpb259IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtFeGVjdXRlRGF0YUhvb2t9IGZyb20gJy4vRXhlY3V0ZURhdGFIb29rJztcbmltcG9ydCB0eXBlIHtEYXRhSG9va0l0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5kYXRhaG9va3MuRGF0YUhvb2tzJyk7XG5cbmludGVyZmFjZSBEYXRhSG9va3NQcm9wcyB7XG5cdGRhdGFIb29rczogRGF0YUhvb2tJdGVtW107XG59XG5cbi8qKlxuICogUmVuZGVycyBsYXlvdXQgZGF0YSBob29rcy4gVGhlc2UgaG9va3Mgc2hvdWxkIHJldHVybiBub3RoaW5nLiBBbGwgaW50ZXJhY3Rpb24gc2hvdWxkIGJlIGluIHNpZGUtZWZmZWN0cywgdXN1YWxseSByZXRyaWV2aW5nIGRhdGEgYW5kIHNldHRpbmcgUmVkdXggc3RhdGUuXG4gKiBAcGFyYW0gZGF0YUhvb2tzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERhdGFIb29rcyh7ZGF0YUhvb2tzfTogRGF0YUhvb2tzUHJvcHMpIHtcblx0Y29uc3Qge3BhdGhuYW1lfSA9IHVzZUxvY2F0aW9uKCk7XG5cblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0e2RhdGFIb29rcy5tYXAoKGhvb2ssIGluZGV4KSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgaG9vayA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4fSBkYXRhSG9vaz17aG9va30gLz47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZm4gPSBBcnJheS5pc0FycmF5KGhvb2sucm91dGVNYXRjaCkgPyBjb21wb3NlKGhvb2sucm91dGVNYXRjaCkgOiBob29rLnJvdXRlTWF0Y2g7XG5cdFx0XHRcdGNvbnN0IHJvdXRlUGFyYW1zID0gZm4ocGF0aG5hbWUpO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShob29rLmRhdGFIb29rKSkge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHQ8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+XG5cdFx0XHRcdFx0XHRcdHtob29rLmRhdGFIb29rLm1hcCgoZGgsIGluZGV4MikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4Mn0gZGF0YUhvb2s9e2RofSByb3V0ZVBhcmFtcz17cm91dGVQYXJhbXN9IC8+O1xuXHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdDwvUmVhY3QuRnJhZ21lbnQ+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdHJldHVybiA8RXhlY3V0ZURhdGFIb29rIGRhdGFIb29rPXtob29rLmRhdGFIb29rfSBrZXk9e2luZGV4fSByb3V0ZVBhcmFtcz17cm91dGVQYXJhbXN9IC8+O1xuXHRcdFx0fSl9XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGF0YUhvb2t9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgRXhlY3V0ZURhdGFIb29rUHJvcHMge1xuXHRkYXRhSG9vazogRGF0YUhvb2s7XG5cdHJvdXRlUGFyYW1zPzogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZURhdGFIb29rKHtkYXRhSG9vaywgcm91dGVQYXJhbXN9OiBFeGVjdXRlRGF0YUhvb2tQcm9wcykge1xuXHRkYXRhSG9vayhyb3V0ZVBhcmFtcyk7XG5cdHJldHVybiBudWxsO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbn0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeXN0cmluZyc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB0eXBlIHtEYXRhLCBTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHt1c2VJc0FjdGl2ZVJvdXRlfSBmcm9tICcuL3VzZUlzQWN0aXZlUm91dGUnO1xuaW1wb3J0IHt1c2VTZWxlY3RTdGF0ZX0gZnJvbSAnLi91c2VTZWxlY3RTdGF0ZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0Lmhvb2tzLnVzZUJ1aWxkRGF0YScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUJ1aWxkRGF0YVBhcmFtcyB7XG5cdGRhdGE/OiBEYXRhO1xuXHRyb3V0ZUl0ZW0/OiBhbnk7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQnVpbGREYXRhKHtzdGF0ZVNlbGVjdG9ySG9vaywgZGF0YSwgcm91dGVJdGVtfTogVXNlQnVpbGREYXRhUGFyYW1zKSB7XG5cdGNvbnN0IHN0YXRlID0gdXNlU2VsZWN0U3RhdGUoc3RhdGVTZWxlY3Rvckhvb2spO1xuXHRjb25zdCBsb2MgPSB1c2VMb2NhdGlvbigpIGFzIExvY2F0aW9uO1xuXHRjb25zdCByb3V0ZSA9IHtcblx0XHRwYXRoOiBjb21wYWN0KGxvYy5wYXRobmFtZS5zcGxpdCgnLycpKSxcblx0XHRoYXNoOiBsb2MuaGFzaCxcblx0XHRzZWFyY2g6IHF1ZXJ5U3RyaW5nLnBhcnNlKGxvYy5zZWFyY2gpLFxuXHR9O1xuXHRjb25zdCBhY3RpdmUgPSB1c2VJc0FjdGl2ZVJvdXRlKHtsb2MsIHJvdXRlLCBzdGF0ZSwgYWN0aXZlOiBmYWxzZX0sIHJvdXRlSXRlbSk7XG5cdGNvbnN0IG5ld0RhdGE6IERhdGEgPSB7c3RhdGUsIGxvYywgYWN0aXZlLCByb3V0ZX07XG5cblx0cmV0dXJuIGRhdGEgPyBtZXJnZShkYXRhLCBuZXdEYXRhKSA6IG5ld0RhdGE7XG59XG4iLCJpbXBvcnQge3VzZVJvdXRlTWF0Y2h9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7Um91dGVQcm9wc30gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge2lzUm91dGVJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNBY3RpdmVSb3V0ZShkYXRhOiBEYXRhLCBpdGVtPzogYW55KSB7XG5cdC8vIERldGVybWluZSBpZiB0aGUgY3VycmVudCByb3V0ZSBtYXRjaGVzIHRoZSB0byByb3V0ZSB0byBzZWUgaWYgdGhlIGxpbmsgaXMgYWN0aXZlXG5cdGNvbnN0IHJvdXRlTWF0Y2hPYmplY3Q6IFJvdXRlUHJvcHMgPSB7fTtcblx0aWYgKGl0ZW0gJiYgaXNSb3V0ZUl0ZW0oaXRlbSkpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0udG8gPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyb3V0ZU1hdGNoT2JqZWN0LnBhdGggPSBpdGVtLnRvO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGl0ZW0udG8gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJvdXRlTWF0Y2hPYmplY3QucGF0aCA9IGl0ZW0udG8oZGF0YSk7XG5cdFx0fVxuXHRcdHJvdXRlTWF0Y2hPYmplY3QuZXhhY3QgPSBpdGVtLmV4YWN0ICE9PSBmYWxzZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnNlbnNpdGl2ZSA9IGl0ZW0uc2Vuc2l0aXZlO1xuXHRcdHJvdXRlTWF0Y2hPYmplY3Quc3RyaWN0ID0gaXRlbS5zdHJpY3Q7XG5cdH1cblx0Y29uc3Qgcm91dGVNYXRjaCA9IHVzZVJvdXRlTWF0Y2gocm91dGVNYXRjaE9iamVjdCk7XG5cdHJldHVybiByb3V0ZU1hdGNoICE9PSBudWxsO1xufVxuIiwiaW1wb3J0IGZsb3dSaWdodCBmcm9tICdsb2Rhc2gvZmxvd1JpZ2h0JztcbmltcG9ydCB0eXBlIHtTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0U3RhdGUoc3RhdGVTZWxlY3Rvckhvb2s/OiBTdGF0ZVNlbGVjdG9ySG9vayB8IFN0YXRlU2VsZWN0b3JIb29rW10pIHtcblx0bGV0IGZpbmFsU2VsZWN0b3JIb29rOiAoKSA9PiBhbnkgPSAoKSA9PiAoe30pO1xuXHRpZiAoc3RhdGVTZWxlY3Rvckhvb2spIHtcblx0XHRmaW5hbFNlbGVjdG9ySG9vayA9IEFycmF5LmlzQXJyYXkoc3RhdGVTZWxlY3Rvckhvb2spID8gZmxvd1JpZ2h0KHN0YXRlU2VsZWN0b3JIb29rKSA6IHN0YXRlU2VsZWN0b3JIb29rO1xuXHR9XG5cdHJldHVybiBmaW5hbFNlbGVjdG9ySG9vaygpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtDdXN0b21MYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50UHJvcHMge1xuXHRpdGVtOiBDdXN0b21MYXlvdXRJdGVtO1xuXHRkYXRhOiBEYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCh7aXRlbSwgZGF0YX06IEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnRQcm9wcykge1xuXHRyZXR1cm4gaXRlbS5yZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QWNjb3JkaW9uLCBEcm9wZG93biwgSWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtEcm9wZG93bkxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0VGV4dH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkRyb3Bkb3duSXRlbScpO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25JdGVtUHJvcHMge1xuXHRpdGVtOiBEcm9wZG93bkxheW91dEl0ZW07XG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudFtdO1xuXHRkYXRhOiBEYXRhO1xuXHR2ZXJ0aWNhbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wZG93bkl0ZW0oe2l0ZW0sIHZlcnRpY2FsLCBjaGlsZHJlbiwgZGF0YX06IERyb3Bkb3duSXRlbVByb3BzKSB7XG5cdGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuXHRpZiAodmVydGljYWwpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1lbnUuSXRlbSBjbGFzc05hbWU9XCJpbXBlcml1bVZlcnRpY2FsRHJvcGRvd25cIj5cblx0XHRcdFx0PEFjY29yZGlvbiBmbHVpZD5cblx0XHRcdFx0XHQ8QWNjb3JkaW9uLlRpdGxlXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e3N0eWxlcy52ZXJ0aWNhbERyb3Bkb3duVGl0bGV9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXtldiA9PiB7XG5cdFx0XHRcdFx0XHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0XHRzZXRPcGVuKCFvcGVuKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEljb24gY2xhc3NOYW1lPXtvcGVuID8gc3R5bGVzLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCA6IHN0eWxlcy52ZXJ0aWNhbERyb3Bkb3duSWNvbn0gbmFtZT1cImFycm93IHJpZ2h0XCIgLz5cblx0XHRcdFx0XHRcdHtpdGVtLnRleHR9XG5cdFx0XHRcdFx0PC9BY2NvcmRpb24uVGl0bGU+XG5cdFx0XHRcdFx0PEFjY29yZGlvbi5Db250ZW50IGFjdGl2ZT17b3Blbn0gY2xhc3NOYW1lPXtgJHtzdHlsZXMudmVydGljYWxEcm9wZG93bkNvbnRlbnR9IGltcGVyaXVtVmVydGljYWxEcm9wZG93bkNvbnRlbnRgfSBjaGlsZHJlbj17Y2hpbGRyZW59IC8+XG5cdFx0XHRcdDwvQWNjb3JkaW9uPlxuXHRcdFx0PC9NZW51Lkl0ZW0+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PERyb3Bkb3duIGl0ZW0gdGV4dD17Z2V0VGV4dChpdGVtLCBkYXRhKX0gY2xhc3NOYW1lPVwiaW1wZXJpdW1Ecm9wZG93blwiPlxuXHRcdFx0PERyb3Bkb3duLk1lbnUgY2xhc3NOYW1lPVwiaW1wZXJpdW1Ecm9wZG93bkNvbnRlbnRcIj57Y2hpbGRyZW59PC9Ecm9wZG93bi5NZW51PlxuXHRcdDwvRHJvcGRvd24+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7UmVhY3ROb2RlLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTZWdtZW50fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUxheW91dFN0YXRlfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5pbXBvcnQge21vdmVJdGVtc30gZnJvbSAnLi4vbW92ZUl0ZW1zJztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0xheW91dEl0ZW1CYXJ9IGZyb20gJy4vTGF5b3V0SXRlbUJhcic7XG5pbXBvcnQge1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtfSBmcm9tICcuL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5MYXlvdXQnKTtcblxuaW50ZXJmYWNlIExheW91dFByb3BzIGV4dGVuZHMgUmVxdWlyZWQ8TGF5b3V0RGF0YT4ge1xuXHRjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBtYWluIGxheW91dC5cbiAqIEhpZGVzL3Nob3dzL2NvbGxhcHNlcyB0aGluZ3MgYXMgbmVlZCBmb3IgbW9iaWxlIGxheW91dC5cbiAqIFRyYWNrcyBzdGF0ZSB0byB3aGV0aGVyIHRoZSBzaWRlIG1lbnUgaXMgb3BlbiBvciBub3QuXG4gKiBAcGFyYW0gZm9vdGVyXG4gKiBAcGFyYW0gbWVudWJhclxuICogQHBhcmFtIHN0YXR1c2JhclxuICogQHBhcmFtIGNoaWxkcmVuXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dCh7Zm9vdGVyLCBwcmltYXJ5TWVudSwgc3RhdHVzYmFyLCBzZWNvbmRhcnlNZW51LCBjaGlsZHJlbn06IExheW91dFByb3BzKSB7XG5cdGNvbnN0IHtpc01vYmlsZX0gPSB1c2VMYXlvdXRTdGF0ZSgpO1xuXHRjb25zdCBbbWVudU9wZW4sIHNldE1lbnVPcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuXG5cdGNvbnN0IHByaW1hcnlNZW51VG9nZ2xlID0ge1xuXHRcdHN0aWNrT25Nb2JpbGU6IHRydWUsXG5cdFx0d2VpZ2h0OiAtMTk5OTksXG5cdFx0cmVuZGVyOiAoKSA9PiB7XG5cdFx0XHRpZiAoIWlzTW9iaWxlKSByZXR1cm4gbnVsbDtcblx0XHRcdHJldHVybiA8U2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW0gbWVudU9wZW49e21lbnVPcGVufSBzZXRNZW51T3Blbj17c2V0TWVudU9wZW59IC8+O1xuXHRcdH0sXG5cdH07XG5cblx0Ly8gRGV0ZXJtaW5lIG1lbnViYXIgaXRlbXNcblx0Y29uc3QgcHJpbWFyeU1lbnVJdGVtcyA9IG1vdmVJdGVtcyhcblx0XHRpc01vYmlsZSA/IFtwcmltYXJ5TWVudVRvZ2dsZSwgLi4ucHJpbWFyeU1lbnVdLmZpbHRlcih2ID0+IHYuc3RpY2tPbk1vYmlsZSA9PT0gdHJ1ZSkgOiBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XSxcblx0KTtcblxuXHQvLyBjb25zdCBwbWkgPSBtZXJnZUl0ZW1zKHByaW1hcnlNZW51SXRlbXMpO1xuXG5cdC8vIERldGVybWluZSBzaWRlYmFyIGl0ZW1zXG5cdGNvbnN0IHNlY29uZGFyeU1lbnVJdGVtcyA9IG1vdmVJdGVtcyhcblx0XHRpc01vYmlsZVxuXHRcdFx0PyBbXG5cdFx0XHRcdFx0Li4uc2Vjb25kYXJ5TWVudSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0ZXh0OiAnJyxcblx0XHRcdFx0XHRcdG1lbnU6IFtwcmltYXJ5TWVudVRvZ2dsZSwgLi4ucHJpbWFyeU1lbnVdLmZpbHRlcih2ID0+IHYuc3RpY2tPbk1vYmlsZSAhPT0gdHJ1ZSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdCAgXVxuXHRcdFx0OiBzZWNvbmRhcnlNZW51LFxuXHQpO1xuXG5cdGNvbnN0IHNlY29uZGFyeU1lbnVDb21wID1cblx0XHRzZWNvbmRhcnlNZW51SXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiaW1wZXJpdW1TZWNvbmRhcnlNZW51V3JhcHBlclwiPlxuXHRcdFx0XHQ8TGF5b3V0SXRlbUJhclxuXHRcdFx0XHRcdGl0ZW1zPXtzZWNvbmRhcnlNZW51SXRlbXN9XG5cdFx0XHRcdFx0aW52ZXJ0ZWRcblx0XHRcdFx0XHR2ZXJ0aWNhbFxuXHRcdFx0XHRcdGNsYXNzTmFtZT17XG5cdFx0XHRcdFx0XHRpc01vYmlsZSAmJiAhbWVudU9wZW5cblx0XHRcdFx0XHRcdFx0PyBgJHtzdHlsZXMuc2Vjb25kYXJ5TWVudX0gJHtzdHlsZXMuc2Vjb25kYXJ5TWVudUhpZGRlbn0gaW1wZXJpdW1TZWNvbmRhcnlNZW51YFxuXHRcdFx0XHRcdFx0XHQ6IGAke3N0eWxlcy5zZWNvbmRhcnlNZW51fSBpbXBlcml1bVNlY29uZGFyeU1lbnVgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9kaXY+XG5cdFx0KSA6IG51bGw7XG5cblx0Ly8gRGV0ZXJtaW5lIGZvb3RlciBpdGVtc1xuXHRjb25zdCBmb290ZXJJdGVtcyA9IG1vdmVJdGVtcyhmb290ZXIpO1xuXHRjb25zdCBmb290ZXJDb21wID1cblx0XHRmb290ZXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PExheW91dEl0ZW1CYXIgbmFtZT1cImZvb3RlclwiIGl0ZW1zPXtmb290ZXJJdGVtc30gY2xhc3NOYW1lPXtgJHtzdHlsZXMuZm9vdGVyfSBpbXBlcml1bUZvb3RlcmB9IGludmVydGVkIGJvcmRlcmxlc3MgLz5cblx0XHQpIDogbnVsbDtcblxuXHQvLyBEZXRlcm1pbmUgc3RhdHVzIGJhciBpdGVtc1xuXHRjb25zdCBzdGF0dXNiYXJJdGVtcyA9IG1vdmVJdGVtcyhzdGF0dXNiYXIpO1xuXHRjb25zdCBzdGF0dXNiYXJDb21wID1cblx0XHRzdGF0dXNiYXJJdGVtcy5sZW5ndGggPiAwID8gPExheW91dEl0ZW1CYXIgaXRlbXM9e3N0YXR1c2Jhckl0ZW1zfSBpbnZlcnRlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zdGF0dXNiYXJ9IGltcGVyaXVtU3RhdHVzYmFyYH0gLz4gOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5wYXJlbnR9IGltcGVyaXVtTGF5b3V0ICR7aXNNb2JpbGUgPyAnaW1wZXJpdW1Nb2JpbGUnIDogJ2ltcGVyaXVtTm90TW9iaWxlJ31gfT5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiaW1wZXJpdW1QcmltYXJ5TWVudVdyYXBwZXJcIj5cblx0XHRcdFx0PExheW91dEl0ZW1CYXIgaXRlbXM9e3ByaW1hcnlNZW51SXRlbXN9IGludmVydGVkIGJvcmRlcmxlc3MgY2xhc3NOYW1lPXtgJHtzdHlsZXMubWVudWJhcn0gaW1wZXJpdW1QcmltYXJ5TWVudWB9IC8+XG5cdFx0XHRcdHtzdGF0dXNiYXJDb21wfVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8U2VnbWVudCBhdHRhY2hlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5jb250ZW50V3JhcHBlcn0gaW1wZXJpdW1MYXlvdXRDb250ZW50V3JhcHBlcmB9PlxuXHRcdFx0XHR7c2Vjb25kYXJ5TWVudUNvbXB9XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudH0gaW1wZXJpdW1MYXlvdXRDb250ZW50YH0+e2NoaWxkcmVufTwvZGl2PlxuXHRcdFx0PC9TZWdtZW50PlxuXHRcdFx0e2Zvb3RlckNvbXB9XG5cdFx0PC9kaXY+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtNZW51UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHR5cGUge0xheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7c3BsaXRQb3NpdGlvbmVkSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7TGF5b3V0SXRlbVdyYXBwZXJ9IGZyb20gJy4vTGF5b3V0SXRlbVdyYXBwZXInO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1CYXInKTtcblxuaW50ZXJmYWNlIEl0ZW1CYXJQcm9wcyBleHRlbmRzIE1lbnVQcm9wcyB7XG5cdGl0ZW1zOiBMYXlvdXRJdGVtW107XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGhvcml6b250YWwgb3IgdmVydGljYWwgYmFyIG9mIG1lbnUgaXRlbXMuXG4gKiBAcGFyYW0gbmFtZVxuICogQHBhcmFtIGl0ZW1zXG4gKiBAcGFyYW0gcmVzdFxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXRJdGVtQmFyKHtpdGVtcywgLi4ucmVzdH06IEl0ZW1CYXJQcm9wcykge1xuXHRjb25zdCBpbXMgPSBzcGxpdFBvc2l0aW9uZWRJdGVtcyhpdGVtcyk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCBsZWZ0SXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMubGVmdEl0ZW1zKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIgaXRlbT17aXRlbX0ga2V5PXtpbmRleH0gdmVydGljYWw9e3Jlc3QudmVydGljYWx9IC8+KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCByaWdodEl0ZW1zID0gc29ydFdlaWdodGVkSXRlbXMoaW1zLnJpZ2h0SXRlbXMpLm1hcCgoaXRlbSwgaW5kZXgpID0+IDxMYXlvdXRJdGVtV3JhcHBlciBpdGVtPXtpdGVtfSBrZXk9e2luZGV4fSB2ZXJ0aWNhbD17cmVzdC52ZXJ0aWNhbH0gLz4pO1xuXG5cdHJldHVybiAoXG5cdFx0PE1lbnUgey4uLnJlc3R9PlxuXHRcdFx0e2xlZnRJdGVtc31cblx0XHRcdHtyZXN0LnZlcnRpY2FsID8gcmlnaHRJdGVtcyA6IDxNZW51Lk1lbnUgcG9zaXRpb249XCJyaWdodFwiPntyaWdodEl0ZW1zfTwvTWVudS5NZW51Pn1cblx0XHQ8L01lbnU+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RHJvcGRvd259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlQnVpbGREYXRhfSBmcm9tICcuLi8uLi9ob29rcy91c2VCdWlsZERhdGEnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzQ3VzdG9tTGF5b3V0SXRlbSwgaXNEcm9wZG93bkxheW91dEl0ZW0sIGlzTWVudUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Q3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudH0gZnJvbSAnLi9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25JdGVtfSBmcm9tICcuL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICcuL01lbnVJdGVtJztcbmltcG9ydCB7UGxhaW5JdGVtfSBmcm9tICcuL1BsYWluSXRlbSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0SXRlbVdyYXBwZXInKTtcblxuaW50ZXJmYWNlIEl0ZW1XcmFwcGVyUHJvcHMge1xuXHRpdGVtOiBMYXlvdXRJdGVtO1xuXHRhcz86IFJlYWN0LkNvbXBvbmVudENsYXNzO1xuXHR2ZXJ0aWNhbD86IGJvb2xlYW47XG5cdGRhdGE/OiBEYXRhO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW55IHR5cGUgb2YgSXRlbS4gR2F0aGVycyBzdGF0ZSwgcm91dGUgYW5kIG90aGVyIGRhdGEgYW5kIGNoZWNrcyBmb3IgdmlzaWJpbGl0eS5cbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gYXNcbiAqIEBwYXJhbSB2ZXJ0aWNhbFxuICogQHBhcmFtIHBhcmVudERhdGFcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gTGF5b3V0SXRlbVdyYXBwZXIoe2l0ZW0sIGFzLCB2ZXJ0aWNhbCwgZGF0YTogcGFyZW50RGF0YX06IEl0ZW1XcmFwcGVyUHJvcHMpIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkRGF0YSh7c3RhdGVTZWxlY3Rvckhvb2s6IGl0ZW0uc3RhdGVTZWxlY3Rvckhvb2ssIHJvdXRlSXRlbTogaXRlbSwgZGF0YTogcGFyZW50RGF0YX0pO1xuXG5cdC8vIENoZWNrIGlmIHZpc2libGVcblx0aWYgKGl0ZW0udmlzaWJsZSkge1xuXHRcdGlmICh0eXBlb2YgaXRlbS52aXNpYmxlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoIWl0ZW0udmlzaWJsZShkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHEgPSBuZXcgUXVlcnkoaXRlbS52aXNpYmxlIHx8IHt9KTtcblx0XHRcdGlmICghcS50ZXN0KGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRpZiAoaXNDdXN0b21MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIDxDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50IGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cdGlmIChpc0Ryb3Bkb3duTGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRjb25zdCBjaGlsZHJlbiA9IHNvcnRXZWlnaHRlZEl0ZW1zKGl0ZW0uZHJvcGRvd24pLm1hcCgodiwgaW5kZXgpID0+IDxMYXlvdXRJdGVtV3JhcHBlciBrZXk9e2luZGV4fSBpdGVtPXt2fSBhcz17RHJvcGRvd24uSXRlbX0gZGF0YT17ZGF0YX0gLz4pO1xuXHRcdHJldHVybiA8RHJvcGRvd25JdGVtIGl0ZW09e2l0ZW19IGNoaWxkcmVuPXtjaGlsZHJlbn0gdmVydGljYWw9e3ZlcnRpY2FsfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXHRpZiAoaXNNZW51TGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRjb25zdCBjaGlsZHJlbiA9IHNvcnRXZWlnaHRlZEl0ZW1zKGl0ZW0ubWVudSkubWFwKCh2LCBpbmRleCkgPT4gKFxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0PExheW91dEl0ZW1XcmFwcGVyIGtleT17aW5kZXh9IGl0ZW09e3Z9IGFzPXtEcm9wZG93bi5JdGVtfSB2ZXJ0aWNhbD17dmVydGljYWx9IGRhdGE9e2RhdGF9IC8+XG5cdFx0KSk7XG5cdFx0cmV0dXJuIDxNZW51SXRlbSBpdGVtPXtpdGVtfSBjaGlsZHJlbj17Y2hpbGRyZW59IC8+O1xuXHR9XG5cdHJldHVybiA8UGxhaW5JdGVtIGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IGFzPXthc30gLz47XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7TWVudUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIE1lbnVJdGVtUHJvcHMge1xuXHRpdGVtOiBNZW51TGF5b3V0SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZW51SXRlbSh7aXRlbSwgY2hpbGRyZW59OiBNZW51SXRlbVByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PE1lbnUuSXRlbT5cblx0XHRcdDxNZW51LkhlYWRlcj57aXRlbS50ZXh0fTwvTWVudS5IZWFkZXI+XG5cdFx0XHQ8TWVudS5NZW51IGNvbXBhY3Q9XCJcIj57Y2hpbGRyZW59PC9NZW51Lk1lbnU+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge0N1c3RvbUxheW91dEl0ZW0sIERyb3Bkb3duTGF5b3V0SXRlbSwgTGF5b3V0SXRlbSwgTWVudUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0SWNvbiwgZ2V0VGV4dCwgbGlua1BhcmFtZXRlcnN9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIFBsYWluSXRlbVByb3BzIHtcblx0aXRlbTogRXhjbHVkZTxMYXlvdXRJdGVtLCBNZW51TGF5b3V0SXRlbSB8IERyb3Bkb3duTGF5b3V0SXRlbSB8IEN1c3RvbUxheW91dEl0ZW0+O1xuXHRkYXRhOiBEYXRhO1xuXHRhcz86IFJlYWN0LkNvbXBvbmVudENsYXNzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGxhaW5JdGVtKHtpdGVtLCBkYXRhLCBhc306IFBsYWluSXRlbVByb3BzKSB7XG5cdGNvbnN0IGxpbmtQYXJhbXMgPSBsaW5rUGFyYW1ldGVycyhpdGVtLCBkYXRhKTtcblxuXHRjb25zdCBJdGVtWCA9IGFzIHx8IE1lbnUuSXRlbTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJdGVtWCB7Li4ubGlua1BhcmFtc30+XG5cdFx0XHR7Z2V0SWNvbihpdGVtLCBkYXRhKX1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvSXRlbVg+XG5cdCk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmludGVyZmFjZSBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbVByb3BzIHtcblx0bWVudU9wZW46IGJvb2xlYW47XG5cdHNldE1lbnVPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlY29uZGFyeU1lbnVUb2dnbGVJdGVtKHttZW51T3Blbiwgc2V0TWVudU9wZW59OiBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbVByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PE1lbnUuSXRlbT5cblx0XHRcdDxJY29uXG5cdFx0XHRcdGNsYXNzTmFtZT17bWVudU9wZW4gPyBzdHlsZXMuaWNvblJvdGF0ZWQgOiBzdHlsZXMuaWNvbn1cblx0XHRcdFx0bmFtZT17bWVudU9wZW4gPyAnY2xvc2UnIDogJ3NpZGViYXInfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0c2V0TWVudU9wZW4oIW1lbnVPcGVuKTtcblx0XHRcdFx0fX1cblx0XHRcdC8+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJpbXBvcnQge3VzZUVmZmVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VEaXNwYXRjaH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHt1c2VNZWRpYVF1ZXJ5fSBmcm9tICdyZWFjdC1yZXNwb25zaXZlJztcbmltcG9ydCB7YWN0aW9uc30gZnJvbSAnLi4vLi4vc3RhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9iaWxlTGF5b3V0KCkge1xuXHRjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cdGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh7cXVlcnk6ICcobWF4LXdpZHRoOiA5MDBweCknfSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0ZGlzcGF0Y2goYWN0aW9ucy5zZXRNb2JpbGUoaXNNb2JpbGUpKTtcblx0fSwgW2Rpc3BhdGNoLCBpc01vYmlsZV0pO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBncm91cEJ5IGZyb20gJ2xvZGFzaC9ncm91cEJ5JztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7aXNEcm9wZG93bkxheW91dEl0ZW0sIGlzTWVudUxheW91dEl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5tb3ZlSXRlbXMnKTtcblxuZnVuY3Rpb24gcHVsbEl0ZW1zKGl0ZW1zOiBMYXlvdXRJdGVtW10sIHB1bGxlZDogTGF5b3V0SXRlbVtdID0gW10pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogcHVsbEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRtZW51OiBwdWxsSXRlbXMoaXRlbS5tZW51LCBwdWxsZWQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAoIWl0ZW0ubW92ZVRvS2V5KSB7XG5cdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGl0ZW1dO1xuXHRcdH1cblxuXHRcdHB1bGxlZC5wdXNoKGl0ZW0pO1xuXHRcdHJldHVybiBtZW1vO1xuXHR9LCBbXSBhcyBMYXlvdXRJdGVtW10pO1xufVxuXG5mdW5jdGlvbiBhZGRJdGVtcyhpdGVtczogTGF5b3V0SXRlbVtdLCBwdWxsZWQ6IFJlY29yZDxzdHJpbmcsIExheW91dEl0ZW1bXT4pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRjb25zdCBuZXdJdGVtcyA9IGl0ZW0ua2V5ICYmIHB1bGxlZFtpdGVtLmtleV0gPyBwdWxsZWRbaXRlbS5rZXldIDogW107XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogWy4uLmFkZEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkgJiYgaXRlbS5rZXkpIHtcblx0XHRcdGNvbnN0IG5ld0l0ZW1zID0gaXRlbS5rZXkgJiYgcHVsbGVkW2l0ZW0ua2V5XSA/IHB1bGxlZFtpdGVtLmtleV0gOiBbXTtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdG1lbnU6IFsuLi5hZGRJdGVtcyhpdGVtLm1lbnUsIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXHRcdHJldHVybiBbLi4ubWVtbywgaXRlbV07XG5cdH0sIFtdIGFzIExheW91dEl0ZW1bXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSXRlbXMoaXRlbXM6IExheW91dEl0ZW1bXSkge1xuXHRjb25zdCBwdWxsZWQ6IExheW91dEl0ZW1bXSA9IFtdO1xuXHRjb25zdCBpdGVtc01pbnVzUHVsbGVkID0gcHVsbEl0ZW1zKGl0ZW1zLCBwdWxsZWQpO1xuXHRyZXR1cm4gYWRkSXRlbXMoaXRlbXNNaW51c1B1bGxlZCwgZ3JvdXBCeShwdWxsZWQsICdtb3ZlVG9LZXknKSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7U2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSwgUm91dGVJdGVtLCBWaXNpYmlsaXR5SXRlbSwgV2VpZ2h0ZWRJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuLi9kYXRhaG9va3MvdHlwZXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEZXNjcmliZXMgYSBiYXNpYyB3ZWlnaHRlZCwgcG9zc2libHkgdmlzaWJsZSBpdGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUxheW91dEl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0dGV4dDogc3RyaW5nIHwgKChkYXRhOiBEYXRhKSA9PiBzdHJpbmcpO1xuXHRpY29uPzogU2VtYW50aWNJQ09OUyB8ICgoZGF0YTogRGF0YSkgPT4gU2VtYW50aWNJQ09OUyk7XG5cdG1vdmVUb0tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHJlbmRlcjogKGRhdGE6IERhdGEpID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblx0bW92ZVRvS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIG1lbnUgdGhhdCBkaXNwbGF5cyBhIGRyb3Bkb3duIGxpc3Qgb2YgaXRlbXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bkxheW91dEl0ZW0gZXh0ZW5kcyBCYXNlTGF5b3V0SXRlbSB7XG5cdGRyb3Bkb3duOiAoKEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtPERhdGE+KSB8IEN1c3RvbUxheW91dEl0ZW0pW107XG5cdGtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBtZW51IHRoYXQgZGlzcGxheXMgYSBzdWIgbWVudSAobm90IGEgZHJvcGRvd24gbGlzdClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51TGF5b3V0SXRlbSBleHRlbmRzIEJhc2VMYXlvdXRJdGVtIHtcblx0bWVudTogKChCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbTxEYXRhPikgfCBDdXN0b21MYXlvdXRJdGVtKVtdO1xuXHRrZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgaG9yaXpvbnRhbCBtZW51IGl0ZW0gd2hpY2ggaXMgZWl0aGVyIGEgcm91dGUgaXRlbSBvciBkcm9wZG93biBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIExheW91dEl0ZW0gPSAoQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4pIHwgRHJvcGRvd25MYXlvdXRJdGVtIHwgTWVudUxheW91dEl0ZW0gfCBDdXN0b21MYXlvdXRJdGVtO1xuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dERhdGEge1xuXHRkYXRhSG9va3M/OiBEYXRhSG9va0l0ZW1bXTtcblx0cHJpbWFyeU1lbnU/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTsgLy8gcHJpbWFyeSBtZW51XG5cdHN0YXR1c2Jhcj86IChMYXlvdXRJdGVtICYgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKVtdO1xuXHRzZWNvbmRhcnlNZW51PzogTGF5b3V0SXRlbVtdOyAvLyBzZWNvbmRhcnkgbWVudVxuXHRmb290ZXI/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTsgLy8gZm9vdGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1c3RvbUxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIEN1c3RvbUxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgQ3VzdG9tTGF5b3V0SXRlbSkucmVuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEcm9wZG93bkxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIERyb3Bkb3duTGF5b3V0SXRlbSB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBEcm9wZG93bkxheW91dEl0ZW0pLmRyb3Bkb3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNZW51TGF5b3V0SXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgTWVudUxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgTWVudUxheW91dEl0ZW0pLm1lbnU7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7SWNvbiwgU2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHtpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtCYXNlTGF5b3V0SXRlbSwgTGF5b3V0SXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU3BsaXRzIHBvc2l0aW9uZWQgaXRlbXMgaW50byBsZWZ0IGFuZCByaWdodCBhcnJheXMgKGlmIGhvcml6b250YWwpXG4gKiBAcGFyYW0gaXRlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0UG9zaXRpb25lZEl0ZW1zPFQgZXh0ZW5kcyBMYXlvdXRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoXG5cdFx0KG1lbW8sIHYpID0+IHtcblx0XHRcdGlmIChpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSh2KSAmJiB2LnBvc2l0aW9uID09PSAncmlnaHQnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bGVmdEl0ZW1zOiBtZW1vLmxlZnRJdGVtcyxcblx0XHRcdFx0XHRyaWdodEl0ZW1zOiBbLi4ubWVtby5yaWdodEl0ZW1zLCB2XSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGxlZnRJdGVtczogWy4uLm1lbW8ubGVmdEl0ZW1zLCB2XSxcblx0XHRcdFx0cmlnaHRJdGVtczogbWVtby5yaWdodEl0ZW1zLFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHtsZWZ0SXRlbXM6IFtdLCByaWdodEl0ZW1zOiBbXX0gYXMge2xlZnRJdGVtczogVFtdOyByaWdodEl0ZW1zOiBUW119LFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1BhcmFtZXRlcnMoaXRlbTogQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4sIGRhdGE6IERhdGEpIHtcblx0cmV0dXJuIGl0ZW0udG9cblx0XHQ/IHtcblx0XHRcdFx0YXM6IExpbmssXG5cdFx0XHRcdGFjdGl2ZTogZGF0YS5hY3RpdmUsXG5cdFx0XHRcdHRvOiB0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udG8oZGF0YSkgOiBpdGVtLnRvLFxuXHRcdCAgfVxuXHRcdDoge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KGl0ZW06IEJhc2VMYXlvdXRJdGVtLCBkYXRhOiBEYXRhKSB7XG5cdHJldHVybiB0eXBlb2YgaXRlbS50ZXh0ID09PSAnZnVuY3Rpb24nID8gaXRlbS50ZXh0KGRhdGEpIDogaXRlbS50ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbihpdGVtOiBCYXNlTGF5b3V0SXRlbSwgZGF0YTogRGF0YSkge1xuXHQvLyBHZW5lcmF0ZSB0aGUgaWNvbiBjb21wb25lbnQsIGlmIGl0IGV4aXN0c1xuXHRsZXQgaWNvbk5hbWU6IFNlbWFudGljSUNPTlMgfCB1bmRlZmluZWQ7XG5cdGlmIChpdGVtLmljb24pIHtcblx0XHRpY29uTmFtZSA9IHR5cGVvZiBpdGVtLmljb24gPT09ICdmdW5jdGlvbicgPyBpdGVtLmljb24oZGF0YSkgOiBpdGVtLmljb247XG5cdH1cblx0cmV0dXJuIGl0ZW0uaWNvbiA/IDxJY29uIG5hbWU9e2ljb25OYW1lfSAvPiA6IG51bGw7XG59XG4iLCJpbXBvcnQgdHlwZSB7SG9jLCBJbXBlcml1bUNsaWVudH0gZnJvbSAnQGltcGVyaXVtL2NsaWVudCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtEYXRhSG9va3N9IGZyb20gJy4uL2RhdGFob29rcy9EYXRhSG9va3MnO1xuaW1wb3J0IHtpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi9jb21wb25lbnRzL0xheW91dCc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LndpdGhMYXlvdXQnKTtcblxuY29uc3QgaW5pdGlhbExheW91dE1vZHVsZURhdGE6IFJlcXVpcmVkPExheW91dERhdGE+ID0ge1xuXHRkYXRhSG9va3M6IFtdLFxuXHRwcmltYXJ5TWVudTogW10sXG5cdHN0YXR1c2JhcjogW10sXG5cdHNlY29uZGFyeU1lbnU6IFtdLFxuXHRmb290ZXI6IFtdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMYXlvdXQoY2xpZW50OiBJbXBlcml1bUNsaWVudCk6IEhvYyB7XG5cdGNvbnN0IGxheW91dE1vZHVsZURhdGEgPSBjbGllbnQubW9kdWxlcy5yZWR1Y2UoKG1lbW8sIG1vZHVsZSkgPT4ge1xuXHRcdGlmIChpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZSkpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGRhdGFIb29rczogWy4uLihtZW1vLmRhdGFIb29rcyB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LmRhdGFIb29rcyB8fCBbXSldLFxuXHRcdFx0XHRwcmltYXJ5TWVudTogWy4uLihtZW1vLnByaW1hcnlNZW51IHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQucHJpbWFyeU1lbnUgfHwgW10pXSxcblx0XHRcdFx0c3RhdHVzYmFyOiBbLi4uKG1lbW8uc3RhdHVzYmFyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuc3RhdHVzYmFyIHx8IFtdKV0sXG5cdFx0XHRcdHNlY29uZGFyeU1lbnU6IFsuLi4obWVtby5zZWNvbmRhcnlNZW51IHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuc2Vjb25kYXJ5TWVudSB8fCBbXSldLFxuXHRcdFx0XHRmb290ZXI6IFsuLi4obWVtby5mb290ZXIgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5mb290ZXIgfHwgW10pXSxcblx0XHRcdH0gYXMgUmVxdWlyZWQ8TGF5b3V0RGF0YT47XG5cdFx0fVxuXHRcdHJldHVybiBtZW1vO1xuXHR9LCBpbml0aWFsTGF5b3V0TW9kdWxlRGF0YSk7XG5cdGQoJ0xheW91dCBpdGVtcyBwcm9jZXNzZWQnLCBsYXlvdXRNb2R1bGVEYXRhKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRyZXR1cm4gZnVuY3Rpb24gbGF5b3V0SG9jKFdyYXBwZWQ6IENvbXBvbmVudFR5cGU8YW55Pikge1xuXHRcdGNvbnN0IGRpc3BsYXlOYW1lID0gV3JhcHBlZC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkLm5hbWUgfHwgJyc7XG5cblx0XHRmdW5jdGlvbiBXaXRoTGF5b3V0KHByb3BzOiB1bmtub3duKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8PlxuXHRcdFx0XHRcdDxMYXlvdXQgey4uLmxheW91dE1vZHVsZURhdGF9PlxuXHRcdFx0XHRcdFx0PFdyYXBwZWQgey4uLnByb3BzfSBsYXlvdXQ9e2xheW91dE1vZHVsZURhdGF9IC8+XG5cdFx0XHRcdFx0PC9MYXlvdXQ+XG5cdFx0XHRcdFx0PERhdGFIb29rcyBkYXRhSG9va3M9e2xheW91dE1vZHVsZURhdGEuZGF0YUhvb2tzfSAvPlxuXHRcdFx0XHQ8Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0V2l0aExheW91dC5kaXNwbGF5TmFtZSA9IGB3aXRoTGF5b3V0KCR7ZGlzcGxheU5hbWV9KWA7XG5cblx0XHRyZXR1cm4gV2l0aExheW91dDtcblx0fTtcbn1cbiIsImltcG9ydCB7Y3JlYXRlU2xpY2VIb29rfSBmcm9tICdAaW1wZXJpdW0vc3RhdGUnO1xuaW1wb3J0IHtjcmVhdGVTbGljZSwgUGF5bG9hZEFjdGlvbn0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5cbmV4cG9ydCBjb25zdCBzdGF0ZSA9IGNyZWF0ZVNsaWNlKHtcblx0bmFtZTogJ2ltcGVyaXVtTGF5b3V0Jyxcblx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0aXNNb2JpbGU6IGZhbHNlLFxuXHR9LFxuXHRyZWR1Y2Vyczoge1xuXHRcdHNldE1vYmlsZTogKHN0LCBhY3Rpb246IFBheWxvYWRBY3Rpb248Ym9vbGVhbj4pID0+ICh7Li4uc3QsIGlzTW9iaWxlOiBhY3Rpb24ucGF5bG9hZH0pLFxuXHR9LFxufSk7XG5cbmV4cG9ydCBjb25zdCB1c2VMYXlvdXRTdGF0ZSA9IGNyZWF0ZVNsaWNlSG9vayhzdGF0ZSk7XG5cbmV4cG9ydCBjb25zdCB7YWN0aW9uc30gPSBzdGF0ZTtcbiIsImltcG9ydCB0eXBlIHtJbXBlcml1bUNsaWVudE1vZHVsZX0gZnJvbSAnQGltcGVyaXVtL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb259IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vbGF5b3V0L3R5cGVzJztcblxuZXhwb3J0IHR5cGUgU3RhdGUgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLyoqXG4gKiBBIGhvb2sgdGhhdCBzZWxlY3RzIGZyb20gcmVkdXggc3RhdGUuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlU2VsZWN0b3JIb29rID0gKCkgPT4gU3RhdGU7XG4vKipcbiAqIFRoZSB2aXNpYmlsaXR5IHF1ZXJ5IGNhbiBlaXRoZXIgYmUgYSBtaW5nbyBxdWVyeSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIFRoZSBkYXRhIGlzIGFuIG9iamVjdCB3aXRoIHRoZSByb3V0ZXIgcGF0aCBtZXJnZWQgd2l0aCBhbnkgc3RhdGUgc2VsZWN0b3IgaG9vayBkYXRhLlxuICovXG5leHBvcnQgdHlwZSBWaXNpYmlsaXR5UXVlcnlGbiA9IChkYXRhOiBEYXRhKSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdGxvYzogTG9jYXRpb247XG5cdHJvdXRlOiB7XG5cdFx0cGF0aDogc3RyaW5nW107XG5cdFx0aGFzaDogc3RyaW5nO1xuXHRcdHNlYXJjaDogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0fTtcblx0c3RhdGU6IFN0YXRlO1xuXHRhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUgZXh0ZW5kcyBJbXBlcml1bUNsaWVudE1vZHVsZSB7XG5cdGxheW91dDogTGF5b3V0RGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUobW9kdWxlOiBJbXBlcml1bUNsaWVudE1vZHVsZSk6IG1vZHVsZSBpcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSB7XG5cdGNvbnN0IGxheW91dE1vZHVsZSA9IG1vZHVsZSBhcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZTtcblx0cmV0dXJuIGxheW91dE1vZHVsZS5sYXlvdXQgIT09IHVuZGVmaW5lZDtcbn1cbiIsImltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgdHlwZSB7V2VpZ2h0ZWRJdGVtfSBmcm9tICcuL2NvbW1vbkl0ZW1zJztcblxuLyoqXG4gKiBTb3J0cyB3ZWlnaHRlZCBpdGVtc1xuICovXG5leHBvcnQgY29uc3Qgc29ydFdlaWdodGVkSXRlbXMgPSBtZW1vaXplKGZ1bmN0aW9uIHNvcnRXZWlnaHRlZEl0ZW1zSW1wbDxUIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBzb3J0QnkoaXRlbXMsIHYgPT4gdi53ZWlnaHQgfHwgMCk7XG59KTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAaW1wZXJpdW0vc3RhdGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L2NvbnRyb2xzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRlYnVnXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9jb21wYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9mbG93UmlnaHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2ZwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9ncm91cEJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9tZW1vaXplXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9tZXJnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvc29ydEJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1pbmdvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInF1ZXJ5c3RyaW5nXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlc3BvbnNpdmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LWRldi1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInNlbWFudGljLXVpLXJlYWN0XCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZX0gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7dXNlTW9iaWxlTGF5b3V0fSBmcm9tICcuL2xheW91dC9ob29rcy91c2VNb2JpbGVMYXlvdXQnO1xuaW1wb3J0IHt3aXRoTGF5b3V0fSBmcm9tICcuL2xheW91dC93aXRoTGF5b3V0JztcbmltcG9ydCB7c3RhdGV9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHR5cGUge0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxheW91dENsaWVudE1vZHVsZSgpOiBJbXBlcml1bVN0YXRlQ2xpZW50TW9kdWxlICYgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUge1xuXHRyZXR1cm4ge1xuXHRcdG5hbWU6ICdAaW1wZXJpdW0vbGF5b3V0Jyxcblx0XHRvcmRlcjogMzAsXG5cdFx0aG9jczogW3dpdGhMYXlvdXRdLFxuXHRcdHN0YXRlLFxuXHRcdGxheW91dDoge1xuXHRcdFx0ZGF0YUhvb2tzOiBbdXNlTW9iaWxlTGF5b3V0XSxcblx0XHR9LFxuXHR9O1xufVxuXG5leHBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi9sYXlvdXQvdHlwZXMnO1xuZXhwb3J0IHt1c2VMYXlvdXRTdGF0ZSwgYWN0aW9ucyBhcyBsYXlvdXRBY3Rpb25zfSBmcm9tICcuL3N0YXRlJztcbmV4cG9ydCB7Y3JlYXRlUGFnZXN9IGZyb20gJy4vY29udGVudC9jcmVhdGVQYWdlcyc7XG5leHBvcnQgdHlwZSB7SW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGV9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHtkaXZpZGVyU2lkZWJhckl0ZW19IGZyb20gJy4vY29udGVudC9kaXZpZGVyU2lkZWJhckl0ZW0nO1xuIl0sIm5hbWVzIjpbImlzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtIiwidmFsdWUiLCJwb3NpdGlvbiIsInN0aWNrT25Nb2JpbGUiLCJpc1JvdXRlSXRlbSIsInRvIiwiZXhhY3QiLCJzdHJpY3QiLCJzZW5zaXRpdmUiLCJ1c2VURm9ybSIsImRlYnVnIiwiUmVhY3QiLCJCdXR0b24iLCJGb3JtIiwiSWNvbiIsIk1lc3NhZ2UiLCJQb3B1cCIsImQiLCJBY3Rpb25Gb3JtIiwiaXRlbSIsImRhdGEiLCJvbkhpZGVGb3JtIiwiaW5pdGlhbFZhbHVlcyIsIm9uU3VibWl0Iiwic3VibWl0VmFsdWVzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwidmFsaWRhdGlvblNjaGVtYSIsImhhc0Vycm9ycyIsImhhc1dhcm5pbmdzIiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2hhbmdlIiwidmFsdWVzIiwicmVzZXRGb3JtIiwiZXJyb3JzIiwiZmllbGRFcnJvciIsInNhdmVCdXR0b24iLCJPYmplY3QiLCJmb3JtIiwidXNlU3RhdGUiLCJnZXRDb2xvciIsImdldEljb24iLCJnZXRUZXh0IiwiQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50IiwiaXNFZGl0Iiwic2V0SXNFZGl0IiwiaWNvbiIsInVuZGVmaW5lZCIsIkFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50Iiwib25DbGljayIsIkRhdGFIb29rcyIsInNvcnRXZWlnaHRlZEl0ZW1zIiwidXNlQnVpbGRDb250ZW50RGF0YSIsIkhlYWRlciIsIlNpZGViYXJJdGVtV3JhcHBlciIsInN0eWxlcyIsIkNvbnRlbnRDb21wb25lbnQiLCJwYWdlIiwicGFyYW1zIiwic3RhdGVTZWxlY3Rvckhvb2siLCJjb250ZW50Iiwic2lkZWJhckl0ZW1zIiwic2lkZWJhciIsImxlbmd0aCIsImFjdGlvbnNIZWFkZXIiLCJtYXAiLCJzYiIsImluZGV4Iiwic2lkZWJhckl0ZW0iLCJwYXJlbnQiLCJ3cmFwcGVyIiwiaGVhZGVyIiwiZnVsbCIsImNvbnRlbnRGdWxsIiwiZGF0YUhvb2tzIiwiQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQiLCJyZW5kZXIiLCJoZWFkZXJJbmZvIiwidGl0bGUiLCJMaW5rIiwiZ2V0Um91dGVUbyIsIlBsYWluU2lkZWJhckl0ZW0iLCJRdWVyeSIsIkRpdmlkZXIiLCJpc0FjdGlvbkZvcm1TaWRlYmFySXRlbSIsImlzQWN0aW9uU2lkZWJhckl0ZW0iLCJpc0N1c3RvbVNpZGViYXJJdGVtIiwiaXNEaXZpZGVyU2lkZWJhckl0ZW0iLCJwYXJlbnREYXRhIiwidmlzaWJsZSIsInEiLCJ0ZXN0IiwiaXNQYWdlIiwiY3JlYXRlUGFnZXMiLCJyb3V0ZXMiLCJwYWdlcyIsInJlbmRlclJvdXRlUHJvcHNPYmoiLCJrZXlzIiwidHlwZXMiLCJyZWR1Y2UiLCJtZW1vIiwia2V5IiwicGciLCJyZW5kZXJSb3V0ZVByb3BzIiwiZGl2aWRlclNpZGViYXJJdGVtIiwidGV4dCIsImRpdmlkZXIiLCJ1c2VCdWlsZERhdGEiLCJyb3V0ZUl0ZW0iLCJidWlsZERhdGEiLCJpY29uTmFtZSIsImNvbG9yIiwiY29tcG9zZSIsInVzZUxvY2F0aW9uIiwiRXhlY3V0ZURhdGFIb29rIiwicGF0aG5hbWUiLCJob29rIiwiZm4iLCJBcnJheSIsImlzQXJyYXkiLCJyb3V0ZU1hdGNoIiwicm91dGVQYXJhbXMiLCJkYXRhSG9vayIsImRoIiwiaW5kZXgyIiwiY29tcGFjdCIsIm1lcmdlIiwicXVlcnlTdHJpbmciLCJ1c2VJc0FjdGl2ZVJvdXRlIiwidXNlU2VsZWN0U3RhdGUiLCJzdGF0ZSIsImxvYyIsInJvdXRlIiwicGF0aCIsInNwbGl0IiwiaGFzaCIsInNlYXJjaCIsInBhcnNlIiwiYWN0aXZlIiwibmV3RGF0YSIsInVzZVJvdXRlTWF0Y2giLCJyb3V0ZU1hdGNoT2JqZWN0IiwiZmxvd1JpZ2h0IiwiZmluYWxTZWxlY3Rvckhvb2siLCJDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50IiwiQWNjb3JkaW9uIiwiRHJvcGRvd24iLCJNZW51IiwiRHJvcGRvd25JdGVtIiwidmVydGljYWwiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRPcGVuIiwidmVydGljYWxEcm9wZG93blRpdGxlIiwiZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQiLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvbiIsInZlcnRpY2FsRHJvcGRvd25Db250ZW50IiwiU2VnbWVudCIsInVzZUxheW91dFN0YXRlIiwibW92ZUl0ZW1zIiwiTGF5b3V0SXRlbUJhciIsIlNlY29uZGFyeU1lbnVUb2dnbGVJdGVtIiwiTGF5b3V0IiwiZm9vdGVyIiwicHJpbWFyeU1lbnUiLCJzdGF0dXNiYXIiLCJzZWNvbmRhcnlNZW51IiwiaXNNb2JpbGUiLCJtZW51T3BlbiIsInNldE1lbnVPcGVuIiwicHJpbWFyeU1lbnVUb2dnbGUiLCJ3ZWlnaHQiLCJwcmltYXJ5TWVudUl0ZW1zIiwiZmlsdGVyIiwidiIsInNlY29uZGFyeU1lbnVJdGVtcyIsIm1lbnUiLCJzZWNvbmRhcnlNZW51Q29tcCIsInNlY29uZGFyeU1lbnVIaWRkZW4iLCJmb290ZXJJdGVtcyIsImZvb3RlckNvbXAiLCJzdGF0dXNiYXJJdGVtcyIsInN0YXR1c2JhckNvbXAiLCJtZW51YmFyIiwiY29udGVudFdyYXBwZXIiLCJzcGxpdFBvc2l0aW9uZWRJdGVtcyIsIkxheW91dEl0ZW1XcmFwcGVyIiwiaXRlbXMiLCJyZXN0IiwiaW1zIiwibGVmdEl0ZW1zIiwicmlnaHRJdGVtcyIsImlzQ3VzdG9tTGF5b3V0SXRlbSIsImlzRHJvcGRvd25MYXlvdXRJdGVtIiwiaXNNZW51TGF5b3V0SXRlbSIsIk1lbnVJdGVtIiwiUGxhaW5JdGVtIiwiYXMiLCJkcm9wZG93biIsIkl0ZW0iLCJsaW5rUGFyYW1ldGVycyIsImxpbmtQYXJhbXMiLCJJdGVtWCIsImljb25Sb3RhdGVkIiwidXNlRWZmZWN0IiwidXNlRGlzcGF0Y2giLCJ1c2VNZWRpYVF1ZXJ5IiwiYWN0aW9ucyIsInVzZU1vYmlsZUxheW91dCIsImRpc3BhdGNoIiwicXVlcnkiLCJzZXRNb2JpbGUiLCJncm91cEJ5IiwicHVsbEl0ZW1zIiwicHVsbGVkIiwibW92ZVRvS2V5IiwicHVzaCIsImFkZEl0ZW1zIiwibmV3SXRlbXMiLCJpdGVtc01pbnVzUHVsbGVkIiwiaXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSIsImluaXRpYWxMYXlvdXRNb2R1bGVEYXRhIiwid2l0aExheW91dCIsImNsaWVudCIsImxheW91dE1vZHVsZURhdGEiLCJtb2R1bGVzIiwibW9kdWxlIiwibGF5b3V0IiwibGF5b3V0SG9jIiwiV3JhcHBlZCIsImRpc3BsYXlOYW1lIiwibmFtZSIsIldpdGhMYXlvdXQiLCJwcm9wcyIsImNyZWF0ZVNsaWNlSG9vayIsImNyZWF0ZVNsaWNlIiwiaW5pdGlhbFN0YXRlIiwicmVkdWNlcnMiLCJzdCIsImFjdGlvbiIsInBheWxvYWQiLCJsYXlvdXRNb2R1bGUiLCJtZW1vaXplIiwic29ydEJ5Iiwic29ydFdlaWdodGVkSXRlbXNJbXBsIiwibGF5b3V0Q2xpZW50TW9kdWxlIiwib3JkZXIiLCJob2NzIiwibGF5b3V0QWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=