@carto/kepler.gl 0.0.75-alpha.lodash.2 → 0.0.75-alpha.lodash.3
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/components/common/item-selector/item-selector.js +3 -3
- package/dist/constants/default-settings.js +1 -1
- package/dist/reducers/vis-state-merger.js +3 -3
- package/package.json +1 -1
- package/src/components/common/item-selector/item-selector.js +1 -1
- package/src/reducers/vis-state-merger.js +1 -1
|
@@ -19,7 +19,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
19
19
|
var _react = _interopRequireWildcard(require("react"));
|
|
20
20
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
21
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
22
|
-
var
|
|
22
|
+
var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
|
|
23
23
|
var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside"));
|
|
24
24
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
25
25
|
var _accessor = _interopRequireDefault(require("./accessor"));
|
|
@@ -139,7 +139,7 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
|
|
|
139
139
|
var getValue = _accessor["default"].generateOptionToStringFor(_this.props.getOptionValue || _this.props.displayOption);
|
|
140
140
|
var previousSelected = (0, _utils.toArray)(_this.props.selectedItems);
|
|
141
141
|
if (_this.props.multiSelect) {
|
|
142
|
-
var items =
|
|
142
|
+
var items = (0, _uniqBy["default"])(previousSelected.concat((0, _utils.toArray)(item)), getValue);
|
|
143
143
|
_this.props.onChange(items);
|
|
144
144
|
} else {
|
|
145
145
|
_this.props.onChange(getValue(item));
|
|
@@ -312,4 +312,4 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
|
|
|
312
312
|
});
|
|
313
313
|
var ItemSelectorListen = exports.ItemSelectorListen = (0, _reactOnclickoutside["default"])(ItemSelector);
|
|
314
314
|
var _default = exports["default"] = (0, _reactIntl.injectIntl)((0, _reactOnclickoutside["default"])(ItemSelector));
|
|
315
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3VuaXFieSIsIl9yZWFjdE9uY2xpY2tvdXRzaWRlIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfYWNjZXNzb3IiLCJfY2hpY2tsZXRlZElucHV0IiwiX3R5cGVhaGVhZCIsIl9pY29ucyIsIl9sb2FkaW5nU3Bpbm5lciIsIl9kcm9wZG93bkxpc3QiLCJfdXRpbHMiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImNvbmNhdCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwicHJldmVudENsb3NlU2VsZWN0b3IiLCJJdGVtU2VsZWN0b3IiLCJfQ29tcG9uZW50IiwiX2luaGVyaXRzMiIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2RlZmluZVByb3BlcnR5MiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyIiwic2hvd1R5cGVhaGVhZCIsIl9lJHRhcmdldCIsIl9lJHRhcmdldCRjbGFzc0xpc3QiLCJ0YXJnZXQiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwic2VsZWN0ZWRJdGVtcyIsImluZGV4IiwiZmluZEluZGV4IiwiaXRlbXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2xpY2UiLCJvbkNoYW5nZSIsImNsb3NlT25TZWxlY3QiLCJzZXRTdGF0ZSIsIl9vbkJsdXIiLCJnZXRWYWx1ZSIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImdldE9wdGlvblZhbHVlIiwiZGlzcGxheU9wdGlvbiIsInByZXZpb3VzU2VsZWN0ZWQiLCJ0b0FycmF5IiwibXVsdGlTZWxlY3QiLCJ1bmlxQnkiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsInN0YXRlIiwib25Gb2N1cyIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsIl9yZW5kZXJEcm9wZG93biIsImludGwiLCJjcmVhdGVFbGVtZW50IiwiY3VzdG9tQ2xhc3NlcyIsInJlc3VsdHMiLCJsaXN0SXRlbSIsImxpc3RBbmNob3IiLCJvcHRpb25zIiwiZmlsdGVyT3B0aW9uIiwiZml4ZWRPcHRpb25zIiwicGxhY2Vob2xkZXIiLCJ0eXBlYWhlYWRQbGFjZWhvbGRlciIsImZvcm1hdE1lc3NhZ2UiLCJpZCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJfc2VsZWN0SXRlbSIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJEcm9wZG93bkhlYWRlckNvbXBvbmVudCIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzaG93T3B0aW9uc1doZW5FbXB0eSIsImxpZ2h0Iiwid2l0aFN1Yk9wdGlvbnMiLCJyZW5kZXIiLCJzZWxlY3RlZCIsImhhc1ZhbHVlIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImNsYXNzbmFtZXMiLCJhY3RpdmUiLCJvbkNsaWNrIiwiX3Nob3dUeXBlYWhlYWQiLCJlcnJvciIsImlzRXJyb3IiLCJzdHlsZSIsInBvc2l0aW9uIiwiX2V4dGVuZHMyIiwicmVtb3ZlSXRlbSIsIl9yZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiZXJhc2FibGUiLCJzdHJva2VXaWR0aCIsImdhcCIsIkRlbGV0ZSIsImhlaWdodCIsIl9vbkVyYXNlIiwic2hvd0Fycm93IiwiQXJyb3dEb3duIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwib2JqZWN0IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZHJvcGRvd25IZWFkZXIiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsIkl0ZW1TZWxlY3Rvckxpc3RlbiIsImxpc3RlbnNUb0NsaWNrT3V0c2lkZSIsIl9kZWZhdWx0IiwiaW5qZWN0SW50bCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcWJ5IGZyb20gJ2xvZGFzaC91bmlxYnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbi8vIFRoZSBpdGVtLXNlbGVjdG9yIGNvbXBvbmVudCBkaXNtb3VudCBhbGwgaXRzIGNoaWxkcmVuIGlmIHlvdSBjbGljayBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQgYmVjYXVzZSBvZiBsaXN0ZW5zVG9DbGlja091dHNpZGUgZnVuY3Rpb24uXG4vLyBJZiB5b3Ugd2FudCB0byBwcmV2ZW50IHRoaXMgYmVoYXZpb3VyIHdoZW4geW91IGNsaWNrIG9uIGEgY2hpbGQgYWRkIHRoaXMgY2xhc3MgdG8gaXQuXG4vLyBJdCBpcyB1c2VmdWwgZm9yIGV4YW1wbGUsIHdoZW4geW91IGFkZCB0aGUgY2hpbGQgY29tcG9uZW50IG9uIHRoZSB0b3Agb2YgdHJlZSB3aXRoIGEgUG9ydGFsIGFzIGRyb3Bkb3duLWxpc3QgZG9lcyB3aXRoIGl0ZW0tc2VsZWN0b3Itc3VibWVudVxuZXhwb3J0IGNvbnN0IHByZXZlbnRDbG9zZVNlbGVjdG9yID0gJ3ByZXZlbnRfX2Nsb3NlX19zZWxlY3Rvcic7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBlcmFzYWJsZTogZmFsc2UsXG4gICAgc2hvd0Fycm93OiBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIHNlbGVjdGVkSXRlbXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZ2V0T3B0aW9uVmFsdWU6IG51bGwsXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIGZpeGVkT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dFRoZW1lOiAncHJpbWFyeScsXG4gICAgbXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlci5lbnRlclZhbHVlJyxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgZHJvcGRvd25IZWFkZXI6IG51bGwsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICB3aXRoU3ViT3B0aW9uczogZmFsc2VcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93VHlwZWFoZWFkOiBmYWxzZVxuICB9O1xuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9IGUgPT4ge1xuICAgIGlmIChlPy50YXJnZXQ/LmNsYXNzTGlzdD8uY29udGFpbnMocHJldmVudENsb3NlU2VsZWN0b3IpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2hpZGVUeXBlYWhlYWQoKTtcbiAgfTtcblxuICBfaGlkZVR5cGVhaGVhZCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgIHRoaXMuX29uQmx1cigpO1xuICB9XG5cbiAgX29uQmx1ciA9ICgpID0+IHtcbiAgICAvLyBub3RlOiBjaGlja2xldGVkIGlucHV0IGlzIG5vdCBhIHJlYWwgZm9ybSBlbGVtZW50IHNvIHdlIGNhbGwgb25CbHVyKClcbiAgICAvLyB3aGVuIHdlIGZlZWwgdGhlIGV2ZW50cyBhcmUgYXBwcm9wcmlhdGVcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW1vdmVJdGVtID0gKGl0ZW0sIGUpID0+IHtcbiAgICAvLyBvbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCA9IHRydWVcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCB7c2VsZWN0ZWRJdGVtc30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSBpdGVtKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLnNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAgLi4uc2VsZWN0ZWRJdGVtcy5zbGljZShpbmRleCArIDEsIHNlbGVjdGVkSXRlbXMubGVuZ3RoKVxuICAgIF07XG5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3NlbGVjdEl0ZW0gPSBpdGVtID0+IHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoXG4gICAgICB0aGlzLnByb3BzLmdldE9wdGlvblZhbHVlIHx8IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvblxuICAgICk7XG5cbiAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubXVsdGlTZWxlY3QpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcUJ5KHByZXZpb3VzU2VsZWN0ZWQuY29uY2F0KHRvQXJyYXkoaXRlbSkpLCBnZXRWYWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShnZXRWYWx1ZShpdGVtKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfb25FcmFzZSA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShudWxsKTtcbiAgfTtcblxuICBfc2hvd1R5cGVhaGVhZCA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkICYmICF0aGlzLnByb3BzLmlzTG9hZGluZykge1xuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWQgJiYgdGhpcy5wcm9wcy5vbkZvY3VzKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25Gb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNob3dUeXBlYWhlYWQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcmVuZGVyRHJvcGRvd24oaW50bCkge1xuICAgIHJldHVybiAoXG4gICAgICA8RHJvcGRvd25XcmFwcGVyIHBsYWNlbWVudD17dGhpcy5wcm9wcy5wbGFjZW1lbnR9PlxuICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgY3VzdG9tQ2xhc3Nlcz17e1xuICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gICAgICAgICAgICBsaXN0QW5jaG9yOiAnbGlzdF9faXRlbV9fYW5jaG9yJ1xuICAgICAgICAgIH19XG4gICAgICAgICAgb3B0aW9ucz17dGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgIGZpbHRlck9wdGlvbj17dGhpcy5wcm9wcy5maWx0ZXJPcHRpb259XG4gICAgICAgICAgZml4ZWRPcHRpb25zPXt0aGlzLnByb3BzLmZpeGVkT3B0aW9uc31cbiAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICB0aGlzLnByb3BzLnR5cGVhaGVhZFBsYWNlaG9sZGVyIHx8IGludGxcbiAgICAgICAgICAgICAgPyBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAncGxhY2Vob2xkZXIuc2VhcmNoJ30pXG4gICAgICAgICAgICAgIDogJ1NlYXJjaCdcbiAgICAgICAgICB9XG4gICAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fc2VsZWN0SXRlbX1cbiAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcGRvd25IZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbil9XG4gICAgICAgICAgc2VhcmNoYWJsZT17dGhpcy5wcm9wcy5zZWFyY2hhYmxlfVxuICAgICAgICAgIHNob3dPcHRpb25zV2hlbkVtcHR5XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgd2l0aFN1Yk9wdGlvbnM9e3RoaXMucHJvcHMud2l0aFN1Yk9wdGlvbnN9XG4gICAgICAgIC8+XG4gICAgICA8L0Ryb3Bkb3duV3JhcHBlcj5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuICAgIGNvbnN0IGhhc1ZhbHVlID0gc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IGRpc3BsYXlPcHRpb24gPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbik7XG5cbiAgICBjb25zdCBkcm9wZG93blNlbGVjdFByb3BzID0ge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKHtcbiAgICAgICAgYWN0aXZlOiB0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWRcbiAgICAgIH0pLFxuICAgICAgZGlzcGxheU9wdGlvbixcbiAgICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkLFxuICAgICAgb25DbGljazogdGhpcy5fc2hvd1R5cGVhaGVhZCxcbiAgICAgIGVycm9yOiB0aGlzLnByb3BzLmlzRXJyb3IsXG4gICAgICBpbnB1dFRoZW1lOiB0aGlzLnByb3BzLmlucHV0VGhlbWUsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemVcbiAgICB9O1xuICAgIGNvbnN0IGludGwgPSB0aGlzLnByb3BzLmludGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgIHsvKiB0aGlzIHBhcnQgaXMgdXNlZCB0byBkaXNwbGF5IHRoZSBsYWJlbCAqL31cbiAgICAgICAgICB7dGhpcy5wcm9wcy5tdWx0aVNlbGVjdCA/IChcbiAgICAgICAgICAgIDxDaGlja2xldGVkSW5wdXRcbiAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIHJlbW92ZUl0ZW09e3RoaXMuX3JlbW92ZUl0ZW19XG4gICAgICAgICAgICAgIEN1c3RvbUNoaWNrbGV0Q29tcG9uZW50PXt0aGlzLnByb3BzLkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50fVxuICAgICAgICAgICAgICBpbnB1dFRoZW1lPXt0aGlzLnByb3BzLmlucHV0VGhlbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U3R5bGVkRHJvcGRvd25TZWxlY3Qgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9PlxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgIGhhc1BsYWNlaG9sZGVyPXshaGFzVmFsdWV9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duX192YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aGFzVmFsdWUgPyAoXG4gICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFswXX1cbiAgICAgICAgICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RWYWx1ZSd9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdFZhbHVlPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lcmFzYWJsZSAmJiBoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmlzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIHNpemU9ezE4fSBzdHJva2VXaWR0aD17Mn0gZ2FwPXswfSAvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSBoZWlnaHQ9XCIxMnB4XCIgb25DbGljaz17dGhpcy5fb25FcmFzZX0gLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogdGhpcy5wcm9wcy5zaG93QXJyb3cgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiBvbkNsaWNrPXt0aGlzLl9zaG93VHlwZWFoZWFkfSAvPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duU2VsZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGJ1aWx0IHRoZSBsaXN0ICovfVxuICAgICAgICAgIHt0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWQgJiYgdGhpcy5fcmVuZGVyRHJvcGRvd24oaW50bCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSXRlbVNlbGVjdG9yTGlzdGVuID0gbGlzdGVuc1RvQ2xpY2tPdXRzaWRlKEl0ZW1TZWxlY3Rvcik7XG5leHBvcnQgZGVmYXVsdCBpbmplY3RJbnRsKGxpc3RlbnNUb0NsaWNrT3V0c2lkZShJdGVtU2Vs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
|
|
315
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3VuaXFCeSIsIl9yZWFjdE9uY2xpY2tvdXRzaWRlIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfYWNjZXNzb3IiLCJfY2hpY2tsZXRlZElucHV0IiwiX3R5cGVhaGVhZCIsIl9pY29ucyIsIl9sb2FkaW5nU3Bpbm5lciIsIl9kcm9wZG93bkxpc3QiLCJfdXRpbHMiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImNvbmNhdCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwicHJldmVudENsb3NlU2VsZWN0b3IiLCJJdGVtU2VsZWN0b3IiLCJfQ29tcG9uZW50IiwiX2luaGVyaXRzMiIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2RlZmluZVByb3BlcnR5MiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQyIiwic2hvd1R5cGVhaGVhZCIsIl9lJHRhcmdldCIsIl9lJHRhcmdldCRjbGFzc0xpc3QiLCJ0YXJnZXQiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwic2VsZWN0ZWRJdGVtcyIsImluZGV4IiwiZmluZEluZGV4IiwiaXRlbXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2xpY2UiLCJvbkNoYW5nZSIsImNsb3NlT25TZWxlY3QiLCJzZXRTdGF0ZSIsIl9vbkJsdXIiLCJnZXRWYWx1ZSIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImdldE9wdGlvblZhbHVlIiwiZGlzcGxheU9wdGlvbiIsInByZXZpb3VzU2VsZWN0ZWQiLCJ0b0FycmF5IiwibXVsdGlTZWxlY3QiLCJ1bmlxQnkiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsInN0YXRlIiwib25Gb2N1cyIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsIl9yZW5kZXJEcm9wZG93biIsImludGwiLCJjcmVhdGVFbGVtZW50IiwiY3VzdG9tQ2xhc3NlcyIsInJlc3VsdHMiLCJsaXN0SXRlbSIsImxpc3RBbmNob3IiLCJvcHRpb25zIiwiZmlsdGVyT3B0aW9uIiwiZml4ZWRPcHRpb25zIiwicGxhY2Vob2xkZXIiLCJ0eXBlYWhlYWRQbGFjZWhvbGRlciIsImZvcm1hdE1lc3NhZ2UiLCJpZCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJfc2VsZWN0SXRlbSIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJEcm9wZG93bkhlYWRlckNvbXBvbmVudCIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzaG93T3B0aW9uc1doZW5FbXB0eSIsImxpZ2h0Iiwid2l0aFN1Yk9wdGlvbnMiLCJyZW5kZXIiLCJzZWxlY3RlZCIsImhhc1ZhbHVlIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImNsYXNzbmFtZXMiLCJhY3RpdmUiLCJvbkNsaWNrIiwiX3Nob3dUeXBlYWhlYWQiLCJlcnJvciIsImlzRXJyb3IiLCJzdHlsZSIsInBvc2l0aW9uIiwiX2V4dGVuZHMyIiwicmVtb3ZlSXRlbSIsIl9yZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiZXJhc2FibGUiLCJzdHJva2VXaWR0aCIsImdhcCIsIkRlbGV0ZSIsImhlaWdodCIsIl9vbkVyYXNlIiwic2hvd0Fycm93IiwiQXJyb3dEb3duIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwib2JqZWN0IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZHJvcGRvd25IZWFkZXIiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsIkl0ZW1TZWxlY3Rvckxpc3RlbiIsImxpc3RlbnNUb0NsaWNrT3V0c2lkZSIsIl9kZWZhdWx0IiwiaW5qZWN0SW50bCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbi8vIFRoZSBpdGVtLXNlbGVjdG9yIGNvbXBvbmVudCBkaXNtb3VudCBhbGwgaXRzIGNoaWxkcmVuIGlmIHlvdSBjbGljayBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQgYmVjYXVzZSBvZiBsaXN0ZW5zVG9DbGlja091dHNpZGUgZnVuY3Rpb24uXG4vLyBJZiB5b3Ugd2FudCB0byBwcmV2ZW50IHRoaXMgYmVoYXZpb3VyIHdoZW4geW91IGNsaWNrIG9uIGEgY2hpbGQgYWRkIHRoaXMgY2xhc3MgdG8gaXQuXG4vLyBJdCBpcyB1c2VmdWwgZm9yIGV4YW1wbGUsIHdoZW4geW91IGFkZCB0aGUgY2hpbGQgY29tcG9uZW50IG9uIHRoZSB0b3Agb2YgdHJlZSB3aXRoIGEgUG9ydGFsIGFzIGRyb3Bkb3duLWxpc3QgZG9lcyB3aXRoIGl0ZW0tc2VsZWN0b3Itc3VibWVudVxuZXhwb3J0IGNvbnN0IHByZXZlbnRDbG9zZVNlbGVjdG9yID0gJ3ByZXZlbnRfX2Nsb3NlX19zZWxlY3Rvcic7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBlcmFzYWJsZTogZmFsc2UsXG4gICAgc2hvd0Fycm93OiBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIHNlbGVjdGVkSXRlbXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZ2V0T3B0aW9uVmFsdWU6IG51bGwsXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIGZpeGVkT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dFRoZW1lOiAncHJpbWFyeScsXG4gICAgbXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlci5lbnRlclZhbHVlJyxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgZHJvcGRvd25IZWFkZXI6IG51bGwsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICB3aXRoU3ViT3B0aW9uczogZmFsc2VcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93VHlwZWFoZWFkOiBmYWxzZVxuICB9O1xuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9IGUgPT4ge1xuICAgIGlmIChlPy50YXJnZXQ/LmNsYXNzTGlzdD8uY29udGFpbnMocHJldmVudENsb3NlU2VsZWN0b3IpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2hpZGVUeXBlYWhlYWQoKTtcbiAgfTtcblxuICBfaGlkZVR5cGVhaGVhZCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgIHRoaXMuX29uQmx1cigpO1xuICB9XG5cbiAgX29uQmx1ciA9ICgpID0+IHtcbiAgICAvLyBub3RlOiBjaGlja2xldGVkIGlucHV0IGlzIG5vdCBhIHJlYWwgZm9ybSBlbGVtZW50IHNvIHdlIGNhbGwgb25CbHVyKClcbiAgICAvLyB3aGVuIHdlIGZlZWwgdGhlIGV2ZW50cyBhcmUgYXBwcm9wcmlhdGVcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW1vdmVJdGVtID0gKGl0ZW0sIGUpID0+IHtcbiAgICAvLyBvbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCA9IHRydWVcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCB7c2VsZWN0ZWRJdGVtc30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSBpdGVtKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLnNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAgLi4uc2VsZWN0ZWRJdGVtcy5zbGljZShpbmRleCArIDEsIHNlbGVjdGVkSXRlbXMubGVuZ3RoKVxuICAgIF07XG5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3NlbGVjdEl0ZW0gPSBpdGVtID0+IHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoXG4gICAgICB0aGlzLnByb3BzLmdldE9wdGlvblZhbHVlIHx8IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvblxuICAgICk7XG5cbiAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubXVsdGlTZWxlY3QpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcUJ5KHByZXZpb3VzU2VsZWN0ZWQuY29uY2F0KHRvQXJyYXkoaXRlbSkpLCBnZXRWYWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShnZXRWYWx1ZShpdGVtKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfb25FcmFzZSA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShudWxsKTtcbiAgfTtcblxuICBfc2hvd1R5cGVhaGVhZCA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkICYmICF0aGlzLnByb3BzLmlzTG9hZGluZykge1xuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWQgJiYgdGhpcy5wcm9wcy5vbkZvY3VzKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25Gb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNob3dUeXBlYWhlYWQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcmVuZGVyRHJvcGRvd24oaW50bCkge1xuICAgIHJldHVybiAoXG4gICAgICA8RHJvcGRvd25XcmFwcGVyIHBsYWNlbWVudD17dGhpcy5wcm9wcy5wbGFjZW1lbnR9PlxuICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgY3VzdG9tQ2xhc3Nlcz17e1xuICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgaW5wdXQ6ICd0eXBlYWhlYWRfX2lucHV0JyxcbiAgICAgICAgICAgIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gICAgICAgICAgICBsaXN0QW5jaG9yOiAnbGlzdF9faXRlbV9fYW5jaG9yJ1xuICAgICAgICAgIH19XG4gICAgICAgICAgb3B0aW9ucz17dGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgIGZpbHRlck9wdGlvbj17dGhpcy5wcm9wcy5maWx0ZXJPcHRpb259XG4gICAgICAgICAgZml4ZWRPcHRpb25zPXt0aGlzLnByb3BzLmZpeGVkT3B0aW9uc31cbiAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICB0aGlzLnByb3BzLnR5cGVhaGVhZFBsYWNlaG9sZGVyIHx8IGludGxcbiAgICAgICAgICAgICAgPyBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAncGxhY2Vob2xkZXIuc2VhcmNoJ30pXG4gICAgICAgICAgICAgIDogJ1NlYXJjaCdcbiAgICAgICAgICB9XG4gICAgICAgICAgb25PcHRpb25TZWxlY3RlZD17dGhpcy5fc2VsZWN0SXRlbX1cbiAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcGRvd25IZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbil9XG4gICAgICAgICAgc2VhcmNoYWJsZT17dGhpcy5wcm9wcy5zZWFyY2hhYmxlfVxuICAgICAgICAgIHNob3dPcHRpb25zV2hlbkVtcHR5XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgd2l0aFN1Yk9wdGlvbnM9e3RoaXMucHJvcHMud2l0aFN1Yk9wdGlvbnN9XG4gICAgICAgIC8+XG4gICAgICA8L0Ryb3Bkb3duV3JhcHBlcj5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuICAgIGNvbnN0IGhhc1ZhbHVlID0gc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IGRpc3BsYXlPcHRpb24gPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbik7XG5cbiAgICBjb25zdCBkcm9wZG93blNlbGVjdFByb3BzID0ge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKHtcbiAgICAgICAgYWN0aXZlOiB0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWRcbiAgICAgIH0pLFxuICAgICAgZGlzcGxheU9wdGlvbixcbiAgICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkLFxuICAgICAgb25DbGljazogdGhpcy5fc2hvd1R5cGVhaGVhZCxcbiAgICAgIGVycm9yOiB0aGlzLnByb3BzLmlzRXJyb3IsXG4gICAgICBpbnB1dFRoZW1lOiB0aGlzLnByb3BzLmlucHV0VGhlbWUsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemVcbiAgICB9O1xuICAgIGNvbnN0IGludGwgPSB0aGlzLnByb3BzLmludGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgIHsvKiB0aGlzIHBhcnQgaXMgdXNlZCB0byBkaXNwbGF5IHRoZSBsYWJlbCAqL31cbiAgICAgICAgICB7dGhpcy5wcm9wcy5tdWx0aVNlbGVjdCA/IChcbiAgICAgICAgICAgIDxDaGlja2xldGVkSW5wdXRcbiAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIHJlbW92ZUl0ZW09e3RoaXMuX3JlbW92ZUl0ZW19XG4gICAgICAgICAgICAgIEN1c3RvbUNoaWNrbGV0Q29tcG9uZW50PXt0aGlzLnByb3BzLkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50fVxuICAgICAgICAgICAgICBpbnB1dFRoZW1lPXt0aGlzLnByb3BzLmlucHV0VGhlbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U3R5bGVkRHJvcGRvd25TZWxlY3Qgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9PlxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgIGhhc1BsYWNlaG9sZGVyPXshaGFzVmFsdWV9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duX192YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aGFzVmFsdWUgPyAoXG4gICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFswXX1cbiAgICAgICAgICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RWYWx1ZSd9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdFZhbHVlPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lcmFzYWJsZSAmJiBoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmlzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIHNpemU9ezE4fSBzdHJva2VXaWR0aD17Mn0gZ2FwPXswfSAvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSBoZWlnaHQ9XCIxMnB4XCIgb25DbGljaz17dGhpcy5fb25FcmFzZX0gLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogdGhpcy5wcm9wcy5zaG93QXJyb3cgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiBvbkNsaWNrPXt0aGlzLl9zaG93VHlwZWFoZWFkfSAvPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duU2VsZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGJ1aWx0IHRoZSBsaXN0ICovfVxuICAgICAgICAgIHt0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWQgJiYgdGhpcy5fcmVuZGVyRHJvcGRvd24oaW50bCl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSXRlbVNlbGVjdG9yTGlzdGVuID0gbGlzdGVuc1RvQ2xpY2tPdXRzaWRlKEl0ZW1TZWxlY3Rvcik7XG5leHBvcnQgZGVmYXVsdCBpbmplY3RJbnRsKGxpc3RlbnNUb0NsaWNrT3V0c2lkZShJdGVtU2Vs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
|
|
@@ -116,7 +116,7 @@ var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
|
|
|
116
116
|
// Since we are injecting this during the build process with babel
|
|
117
117
|
// while developing VERSION is not defined, we capture the exception and return
|
|
118
118
|
// an empty string which will allow us to retrieve the latest umd version
|
|
119
|
-
var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "0.0.75-alpha.lodash.
|
|
119
|
+
var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "0.0.75-alpha.lodash.3";
|
|
120
120
|
var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
121
121
|
var DIMENSIONS = exports.DIMENSIONS = {
|
|
122
122
|
sidePanel: {
|
|
@@ -28,7 +28,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
28
28
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
29
29
|
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
30
30
|
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
31
|
-
var
|
|
31
|
+
var _flattenDeep = _interopRequireDefault(require("lodash/flattenDeep"));
|
|
32
32
|
var _utils = require("../utils/utils");
|
|
33
33
|
var _filterUtils = require("../utils/filter-utils");
|
|
34
34
|
var _splitMapUtils = require("../utils/split-map-utils");
|
|
@@ -79,7 +79,7 @@ function mergeFilters(state, filtersToMerge) {
|
|
|
79
79
|
updatedFilters = (0, _gpuFilterUtils.resetFilterGpuMode)(updatedFilters);
|
|
80
80
|
updatedFilters = (0, _gpuFilterUtils.assignGpuChannels)(updatedFilters);
|
|
81
81
|
// filter data
|
|
82
|
-
var datasetsToFilter = (0, _uniq["default"])(
|
|
82
|
+
var datasetsToFilter = (0, _uniq["default"])((0, _flattenDeep["default"])(validated.map(function (f) {
|
|
83
83
|
return f.dataId;
|
|
84
84
|
})));
|
|
85
85
|
var filtered = (0, _filterUtils.applyFiltersToDatasets)(datasetsToFilter, updatedDatasets, updatedFilters, state.layers);
|
|
@@ -562,4 +562,4 @@ var VIS_STATE_MERGERS = exports.VIS_STATE_MERGERS = [{
|
|
|
562
562
|
merge: mergeAnimationConfig,
|
|
563
563
|
prop: 'animationConfig'
|
|
564
564
|
}];
|
|
565
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BpY2siLCJfZmxhdHRlbmRlZXAiLCJfdXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfc3BsaXRNYXBVdGlscyIsIl9ncHVGaWx0ZXJVdGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfc2NoZW1hcyIsIl9leGNsdWRlZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwiVHlwZUVycm9yIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiYXJyIiwibGVuIiwiYXJyMiIsIm93bktleXMiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlRmlsdGVycyIsInN0YXRlIiwiZmlsdGVyc1RvTWVyZ2UiLCJfdmFsaWRhdGVGaWx0ZXJzVXBkYXQiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsInZhbGlkYXRlZCIsImZhaWxlZCIsInVwZGF0ZWREYXRhc2V0cyIsInVwZGF0ZWRGaWx0ZXJzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZpbHRlcnMiLCJyZXNldEZpbHRlckdwdU1vZGUiLCJhc3NpZ25HcHVDaGFubmVscyIsImRhdGFzZXRzVG9GaWx0ZXIiLCJ1bmlxIiwiZmxhdHRlbkRlZXAiLCJtYXAiLCJkYXRhSWQiLCJmaWx0ZXJlZCIsImFwcGx5RmlsdGVyc1RvRGF0YXNldHMiLCJsYXllcnMiLCJkYXRhc2V0cyIsImZpbHRlclRvQmVNZXJnZWQiLCJjcmVhdGVMYXllckZyb21Db25maWciLCJsYXllckNvbmZpZyIsIl92YWxpZGF0ZUxheWVyc0J5RGF0YSIsInZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyIsImxheWVyQ2xhc3NlcyIsIm5ld0xheWVyIiwidXBkYXRlTGF5ZXJEb21haW4iLCJzZXJpYWxpemVMYXllciIsInNhdmVkVmlzU3RhdGUiLCJ2aXNTdGF0ZVNjaGVtYSIsIkNVUlJFTlRfVkVSU0lPTiIsInNhdmUiLCJsYXllck9yZGVyIiwidmlzU3RhdGUiLCJsb2FkZWRMYXllciIsImxvYWQiLCJtZXJnZUxheWVycyIsImxheWVyc1RvTWVyZ2UiLCJmcm9tQ29uZmlnIiwicHJlc2VydmVMYXllck9yZGVyIiwibCIsImlkIiwiX3ZhbGlkYXRlTGF5ZXJzQnlEYXRhMiIsIm1lcmdlZExheWVyIiwidW5tZXJnZWQiLCJfaW5zZXJ0TGF5ZXJBdFJpZ2h0T3IiLCJpbnNlcnRMYXllckF0UmlnaHRPcmRlciIsIm5ld0xheWVyT3JkZXIiLCJuZXdMYXllcnMiLCJsYXllclRvQmVNZXJnZWQiLCJjdXJyZW50TGF5ZXJzIiwibGF5ZXJzVG9JbnNlcnQiLCJjdXJyZW50T3JkZXIiLCJwcmVzZXJ2ZWRPcmRlciIsInVuZGVmaW5lZCIsImxheWVyT3JkZXJRdWV1ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZXhwZWN0ZWRJZHgiLCJpbmRleE9mIiwiaW5zZXJ0QXQiLCJwcmVjZWVkSWR4IiwicHJlY2VlZExheWVyIiwiYXJyYXlJbnNlcnQiLCJmaW5kSW5kZXgiLCJtZXJnZUludGVyYWN0aW9ucyIsImludGVyYWN0aW9uVG9CZU1lcmdlZCIsIm1lcmdlZCIsImtleSIsImludGVyYWN0aW9uQ29uZmlnIiwiY3VycmVudENvbmZpZyIsImNvbmZpZyIsIl9yZWYiLCJlbmFibGVkIiwiY29uZmlnU2F2ZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiY29uZmlnVG9NZXJnZSIsIl9tZXJnZUludGVyYWN0aW9uVG9vbCIsIm1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnIiwibWVyZ2VkVG9vbHRpcCIsInVubWVyZ2VkVG9vbHRpcCIsImZpZWxkc1RvU2hvdyIsInRvb2x0aXAiLCJwaWNrIiwibWVyZ2VTcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzbSIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwicHVzaFRvIiwiZmluZCIsImdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcCIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJ0b29sdGlwQ29uZmlnIiwiX2xvb3AiLCJhbGxGaWVsZHMiLCJmaWVsZHMiLCJkIiwiZm91bmRGaWVsZHNUb1Nob3ciLCJtZXRhZGF0YSIsImlzRHluYW1pY1NwYXRpYWxJbmRleCIsImZpZWxkIiwiaW5jbHVkZXMiLCJtZXJnZUxheWVyQmxlbmRpbmciLCJsYXllckJsZW5kaW5nIiwiTEFZRVJfQkxFTkRJTkdTIiwibWVyZ2VBbmltYXRpb25Db25maWciLCJhbmltYXRpb24iLCJjdXJyZW50VGltZSIsImFuaW1hdGlvbkNvbmZpZyIsImRvbWFpbiIsInZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMiLCJzYXZlZENvbHMiLCJlbXB0eUNvbHMiLCJjb2x1bW5zIiwiX2xvb3AyIiwiX09iamVjdCRrZXlzIiwiX2kiLCJzYXZlZCIsImZpZWxkSWR4IiwiX3JlZjQiLCJhbGxDb2xGb3VuZCIsImV2ZXJ5IiwidmFsaWRhdGVDb2x1bW4iLCJjb2x1bW4iLCJvcHRpb25hbCIsInZhbGlkYXRvciIsInZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwiLCJfcmVmNSIsInNhdmVkVGV4dExhYmVsIiwiX3JlZjYiLCJsYXllclRleHRMYWJlbCIsInNhdmVkVGV4dExhYmVscyIsInRleHRMYWJlbCIsImZkIiwicmVkdWNlIiwiYWNjdSIsInZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyIsInNhdmVkTGF5ZXIiLCJ2YWx1ZXMiLCJ2aXN1YWxDaGFubmVscyIsIl9yZWY3Iiwic2NhbGUiLCJmb3VuZEZpZWxkIiwiY29sb3JGaWVsZFByb3BzIiwiX3NhdmVkTGF5ZXIkY29uZmlnJGZpIiwiY29sb3JDb2x1bW4iLCJjb2xvckNvbHVtbkZpZWxkIiwiY29sb3JDb2x1bW5JZHgiLCJmb3VuZENoYW5uZWwiLCJ1cGRhdGVMYXllckNvbmZpZyIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImxheWVyIiwidmFsaWRhdGVMYXllciIsInZhbGlkYXRlTGF5ZXJXaXRoRGF0YSIsIl9yZWYxMCIsIm9wdGlvbnMiLCJ0eXBlIiwiaGFzT3duUHJvcGVydHkiLCJsYWJlbCIsImNvbG9yIiwiaXNWaXNpYmxlIiwiaGlkZGVuIiwiaGlnaGxpZ2h0Q29sb3IiLCJ2aXNpYmlsaXR5Qnlab29tIiwiY29sdW1uQ29uZmlnIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiYWxsb3dFbXB0eUNvbHVtbiIsInZpc0NvbmZpZyIsImNvcHlMYXllckNvbmZpZyIsInNoYWxsb3dDb3B5IiwiaXNWYWxpZE1lcmdlciIsIm1lcmdlciIsImlzT2JqZWN0IiwibWVyZ2UiLCJwcm9wIiwiVklTX1NUQVRFX01FUkdFUlMiLCJleHBvcnRzIiwidG9NZXJnZVByb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvdmlzLXN0YXRlLW1lcmdlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5pbXBvcnQgZmxhdHRlbmRlZXAgZnJvbSAnbG9kYXNoL2ZsYXR0ZW5kZWVwJztcbmltcG9ydCB7aXNPYmplY3QsIGFycmF5SW5zZXJ0fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2FwcGx5RmlsdGVyc1RvRGF0YXNldHMsIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuXG5pbXBvcnQge2dldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcH0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcbmltcG9ydCB7cmVzZXRGaWx0ZXJHcHVNb2RlLCBhc3NpZ25HcHVDaGFubmVsc30gZnJvbSAndXRpbHMvZ3B1LWZpbHRlci11dGlscyc7XG5pbXBvcnQge0xBWUVSX0JMRU5ESU5HU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtDVVJSRU5UX1ZFUlNJT04sIHZpc1N0YXRlU2NoZW1hfSBmcm9tICdzY2hlbWFzJztcblxuLyoqXG4gKiBNZXJnZSBsb2FkZWQgZmlsdGVycyB3aXRoIGN1cnJlbnQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlRmlsdGVyc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVycyhzdGF0ZSwgZmlsdGVyc1RvTWVyZ2UpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnNUb01lcmdlKSB8fCAhZmlsdGVyc1RvTWVyZ2UubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkLCB1cGRhdGVkRGF0YXNldHN9ID0gdmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMoc3RhdGUsIGZpbHRlcnNUb01lcmdlKTtcblxuICAvLyBtZXJnZSBmaWx0ZXIgd2l0aCBleGlzdGluZ1xuICBsZXQgdXBkYXRlZEZpbHRlcnMgPSBbLi4uKHN0YXRlLmZpbHRlcnMgfHwgW10pLCAuLi52YWxpZGF0ZWRdO1xuICB1cGRhdGVkRmlsdGVycyA9IHJlc2V0RmlsdGVyR3B1TW9kZSh1cGRhdGVkRmlsdGVycyk7XG4gIHVwZGF0ZWRGaWx0ZXJzID0gYXNzaWduR3B1Q2hhbm5lbHModXBkYXRlZEZpbHRlcnMpO1xuICAvLyBmaWx0ZXIgZGF0YVxuICBjb25zdCBkYXRhc2V0c1RvRmlsdGVyID0gdW5pcShmbGF0dGVuRGVlcCh2YWxpZGF0ZWQubWFwKGYgPT4gZi5kYXRhSWQpKSk7XG5cbiAgY29uc3QgZmlsdGVyZWQgPSBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKFxuICAgIGRhdGFzZXRzVG9GaWx0ZXIsXG4gICAgdXBkYXRlZERhdGFzZXRzLFxuICAgIHVwZGF0ZWRGaWx0ZXJzLFxuICAgIHN0YXRlLmxheWVyc1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogdXBkYXRlZEZpbHRlcnMsXG4gICAgZGF0YXNldHM6IGZpbHRlcmVkLFxuICAgIGZpbHRlclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5maWx0ZXJUb0JlTWVyZ2VkLCAuLi5mYWlsZWRdXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYXllckZyb21Db25maWcoc3RhdGUsIGxheWVyQ29uZmlnKSB7XG4gIC8vIGZpcnN0IHZhbGlkYXRlIGNvbmZpZyBhZ2FpbnN0IGRhdGFzZXRcbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhzdGF0ZS5kYXRhc2V0cywgc3RhdGUubGF5ZXJDbGFzc2VzLCBbXG4gICAgbGF5ZXJDb25maWdcbiAgXSk7XG5cbiAgaWYgKGZhaWxlZC5sZW5ndGggfHwgIXZhbGlkYXRlZC5sZW5ndGgpIHtcbiAgICAvLyBmYWlsZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5ld0xheWVyID0gdmFsaWRhdGVkWzBdO1xuICBuZXdMYXllci51cGRhdGVMYXllckRvbWFpbihzdGF0ZS5kYXRhc2V0cyk7XG4gIHJldHVybiBuZXdMYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxheWVyKG5ld0xheWVyKSB7XG4gIGNvbnN0IHNhdmVkVmlzU3RhdGUgPSB2aXNTdGF0ZVNjaGVtYVtDVVJSRU5UX1ZFUlNJT05dLnNhdmUoe1xuICAgIGxheWVyczogW25ld0xheWVyXSxcbiAgICBsYXllck9yZGVyOiBbMF1cbiAgfSkudmlzU3RhdGU7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gdmlzU3RhdGVTY2hlbWFbQ1VSUkVOVF9WRVJTSU9OXS5sb2FkKHNhdmVkVmlzU3RhdGUpLnZpc1N0YXRlLmxheWVyc1swXTtcbiAgcmV0dXJuIGxvYWRlZExheWVyO1xufVxuXG4vKipcbiAqIE1lcmdlIGxheWVycyBmcm9tIGRlLXNlcmlhbGl6ZWQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlTGF5ZXJzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllcnMoc3RhdGUsIGxheWVyc1RvTWVyZ2UsIGZyb21Db25maWcpIHtcbiAgY29uc3QgcHJlc2VydmVMYXllck9yZGVyID0gZnJvbUNvbmZpZyA/IGxheWVyc1RvTWVyZ2UubWFwKGwgPT4gbC5pZCkgOiBzdGF0ZS5wcmVzZXJ2ZUxheWVyT3JkZXI7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxheWVyc1RvTWVyZ2UpIHx8ICFsYXllcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQ6IG1lcmdlZExheWVyLCBmYWlsZWQ6IHVubWVyZ2VkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhcbiAgICBzdGF0ZS5kYXRhc2V0cyxcbiAgICBzdGF0ZS5sYXllckNsYXNzZXMsXG4gICAgbGF5ZXJzVG9NZXJnZVxuICApO1xuXG4gIC8vIHB1dCBuZXcgbGF5ZXJzIGluIGZyb250IG9mIGN1cnJlbnQgbGF5ZXJzXG4gIGNvbnN0IHtuZXdMYXllck9yZGVyLCBuZXdMYXllcnN9ID0gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gICAgc3RhdGUubGF5ZXJzLFxuICAgIG1lcmdlZExheWVyLFxuICAgIHN0YXRlLmxheWVyT3JkZXIsXG4gICAgcHJlc2VydmVMYXllck9yZGVyXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllck9yZGVyOiBuZXdMYXllck9yZGVyLFxuICAgIHByZXNlcnZlTGF5ZXJPcmRlcixcbiAgICBsYXllclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5sYXllclRvQmVNZXJnZWQsIC4uLnVubWVyZ2VkXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gIGN1cnJlbnRMYXllcnMsXG4gIGxheWVyc1RvSW5zZXJ0LFxuICBjdXJyZW50T3JkZXIsXG4gIHByZXNlcnZlZE9yZGVyID0gW11cbikge1xuICAvLyBwZXJzZXJ2ZWRPcmRlciBbJ2EnLCAnYicsICdjJ107XG4gIC8vIGxheWVyT3JkZXIgWzEsIDAsIDNdXG4gIC8vIGxheWVyT3JkZXJNYXAgWydhJywgJ2MnXVxuICBsZXQgbGF5ZXJPcmRlclF1ZXVlID0gY3VycmVudE9yZGVyLm1hcChpID0+IGN1cnJlbnRMYXllcnNbaV0uaWQpO1xuICBsZXQgbmV3TGF5ZXJzID0gY3VycmVudExheWVycztcblxuICBmb3IgKGNvbnN0IG5ld0xheWVyIG9mIGxheWVyc1RvSW5zZXJ0KSB7XG4gICAgLy8gZmluZCB3aGVyZSB0byBpbnNlcnQgaXRcbiAgICBjb25zdCBleHBlY3RlZElkeCA9IHByZXNlcnZlZE9yZGVyLmluZGV4T2YobmV3TGF5ZXIuaWQpO1xuICAgIC8vIGlmIGNhbnQgZmluZCBwbGFjZSB0byBpbnNlcnQsIGluc2VydCBhdCB0aGUgZm9udFxuICAgIGxldCBpbnNlcnRBdCA9IDA7XG5cbiAgICBpZiAoZXhwZWN0ZWRJZHggPiAwKSB7XG4gICAgICAvLyBsb29rIGZvciBsYXllciB0byBpbnNlcnQgYWZ0ZXJcbiAgICAgIGxldCBpID0gZXhwZWN0ZWRJZHggKyAxO1xuICAgICAgbGV0IHByZWNlZWRJZHggPSAtMTtcbiAgICAgIHdoaWxlIChpLS0gPiAwICYmIHByZWNlZWRJZHggPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHByZWNlZWRMYXllciA9IHByZXNlcnZlZE9yZGVyW2ldO1xuICAgICAgICBwcmVjZWVkSWR4ID0gbGF5ZXJPcmRlclF1ZXVlLmluZGV4T2YocHJlY2VlZExheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWNlZWRJZHggPiAtMSkge1xuICAgICAgICBpbnNlcnRBdCA9IHByZWNlZWRJZHggKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxheWVyT3JkZXJRdWV1ZSA9IGFycmF5SW5zZXJ0KGxheWVyT3JkZXJRdWV1ZSwgaW5zZXJ0QXQsIG5ld0xheWVyLmlkKTtcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuY29uY2F0KG5ld0xheWVyKTtcbiAgfVxuXG4gIC8vIHJlY29uc3RydWN0IGxheWVyT3JkZXIgYWZ0ZXIgaW5zZXJ0XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBsYXllck9yZGVyUXVldWUubWFwKGlkID0+IG5ld0xheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBpZCkpO1xuXG4gIHJldHVybiB7XG4gICAgbmV3TGF5ZXJPcmRlcixcbiAgICBuZXdMYXllcnNcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbnMgd2l0aCBzYXZlZCBjb25maWdcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykubWVyZ2VJbnRlcmFjdGlvbnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUludGVyYWN0aW9ucyhzdGF0ZSwgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKSB7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuICBjb25zdCB1bm1lcmdlZCA9IHt9O1xuXG4gIGlmIChpbnRlcmFjdGlvblRvQmVNZXJnZWQpIHtcbiAgICBPYmplY3Qua2V5cyhpbnRlcmFjdGlvblRvQmVNZXJnZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZ1trZXldLmNvbmZpZztcblxuICAgICAgY29uc3Qge2VuYWJsZWQsIC4uLmNvbmZpZ1NhdmVkfSA9IGludGVyYWN0aW9uVG9CZU1lcmdlZFtrZXldIHx8IHt9O1xuICAgICAgbGV0IGNvbmZpZ1RvTWVyZ2UgPSBjb25maWdTYXZlZDtcblxuICAgICAgaWYgKGtleSA9PT0gJ3Rvb2x0aXAnKSB7XG4gICAgICAgIGNvbnN0IHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9ID0gbWVyZ2VJbnRlcmFjdGlvblRvb2x0aXBDb25maWcoc3RhdGUsIGNvbmZpZ1NhdmVkKTtcblxuICAgICAgICAvLyBtZXJnZSBuZXcgZGF0YXNldCB0b29sdGlwcyB3aXRoIG9yaWdpbmFsIGRhdGFzZXQgdG9vbHRpcHNcbiAgICAgICAgY29uZmlnVG9NZXJnZSA9IHtcbiAgICAgICAgICBmaWVsZHNUb1Nob3c6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgLi4ubWVyZ2VkVG9vbHRpcFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModW5tZXJnZWRUb29sdGlwKS5sZW5ndGgpIHtcbiAgICAgICAgICB1bm1lcmdlZC50b29sdGlwID0ge2ZpZWxkc1RvU2hvdzogdW5tZXJnZWRUb29sdGlwLCBlbmFibGVkfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZXJnZWRba2V5XSA9IHtcbiAgICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSxcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgICAgLi4uKGN1cnJlbnRDb25maWdcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY29uZmlnOiBwaWNrKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAuLi5jb25maWdUb01lcmdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnOiB7XG4gICAgICAuLi5zdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgIC4uLm1lcmdlZFxuICAgIH0sXG4gICAgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkOiB1bm1lcmdlZFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIHNwbGl0TWFwcyBjb25maWcgd2l0aCBjdXJyZW50IHZpc1N0ZXRlLlxuICogMS4gaWYgY3VycmVudCBtYXAgaXMgc3BsaXQsIGJ1dCBzcGxpdE1hcCBET0VTTk9UIGNvbnRhaW4gbWFwc1xuICogICAgOiBkb24ndCBtZXJnZSBhbnl0aGluZ1xuICogMi4gaWYgY3VycmVudCBtYXAgaXMgTk9UIHNwbGl0LCBidXQgc3BsaXRNYXBzIGNvbnRhaW4gbWFwc1xuICogICAgOiBhZGQgdG8gc3BsaXRNYXBzLCBhbmQgYWRkIGN1cnJlbnQgbGF5ZXJzIHRvIHNwbGl0TWFwc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlSW50ZXJhY3Rpb25zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTcGxpdE1hcHMoc3RhdGUsIHNwbGl0TWFwcyA9IFtdKSB7XG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5zdGF0ZS5zcGxpdE1hcHNdO1xuICBjb25zdCB1bm1lcmdlZCA9IFtdO1xuICBzcGxpdE1hcHMuZm9yRWFjaCgoc20sIGkpID0+IHtcbiAgICBPYmplY3QuZW50cmllcyhzbS5sYXllcnMpLmZvckVhY2goKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBsYXllciBleGlzdHNcbiAgICAgIGNvbnN0IHB1c2hUbyA9IHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpID8gbWVyZ2VkIDogdW5tZXJnZWQ7XG5cbiAgICAgIC8vIGNyZWF0ZSBtYXAgcGFuZWwgaWYgY3VycmVudCBtYXAgaXMgbm90IHNwbGl0XG4gICAgICBwdXNoVG9baV0gPSBwdXNoVG9baV0gfHwge1xuICAgICAgICBsYXllcnM6IHB1c2hUbyA9PT0gbWVyZ2VkID8gZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwKHN0YXRlLmxheWVycykgOiBbXVxuICAgICAgfTtcbiAgICAgIHB1c2hUb1tpXS5sYXllcnMgPSB7XG4gICAgICAgIC4uLnB1c2hUb1tpXS5sYXllcnMsXG4gICAgICAgIFtpZF06IHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNwbGl0TWFwczogbWVyZ2VkLFxuICAgIHNwbGl0TWFwc1RvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5zcGxpdE1hcHNUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwIHdpdGggc2F2ZWQgY29uZmlnLFxuICogdmFsaWRhdGUgZmllbGRzVG9TaG93XG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlXG4gKiBAcGFyYW0ge29iamVjdH0gdG9vbHRpcENvbmZpZ1xuICogQHJldHVybiB7b2JqZWN0fSAtIHttZXJnZWRUb29sdGlwOiB7fSwgdW5tZXJnZWRUb29sdGlwOiB7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKHN0YXRlLCB0b29sdGlwQ29uZmlnID0ge30pIHtcbiAgY29uc3QgdW5tZXJnZWRUb29sdGlwID0ge307XG4gIGNvbnN0IG1lcmdlZFRvb2x0aXAgPSB7fTtcblxuICBpZiAoIXRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93IHx8ICFPYmplY3Qua2V5cyh0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvdykubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9O1xuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhSWQgaW4gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpIHtcbiAgICBpZiAoIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIC8vIGlzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICB1bm1lcmdlZFRvb2x0aXBbZGF0YUlkXSA9IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgbG9hZGVkXG4gICAgICBjb25zdCBhbGxGaWVsZHMgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLmZpZWxkcy5tYXAoZCA9PiBkLm5hbWUpO1xuICAgICAgY29uc3QgZm91bmRGaWVsZHNUb1Nob3cgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLm1ldGFkYXRhLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgICAgICA/IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF1cbiAgICAgICAgOiB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdLmZpbHRlcihmaWVsZCA9PiBhbGxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpO1xuXG4gICAgICBtZXJnZWRUb29sdGlwW2RhdGFJZF0gPSBmb3VuZEZpZWxkc1RvU2hvdztcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH07XG59XG4vKipcbiAqIE1lcmdlIGxheWVyQmxlbmRpbmcgd2l0aCBzYXZlZFxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUxheWVyQmxlbmRpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyQmxlbmRpbmcoc3RhdGUsIGxheWVyQmxlbmRpbmcpIHtcbiAgaWYgKGxheWVyQmxlbmRpbmcgJiYgTEFZRVJfQkxFTkRJTkdTW2xheWVyQmxlbmRpbmddKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJCbGVuZGluZ1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogTWVyZ2UgYW5pbWF0aW9uIGNvbmZpZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlQW5pbWF0aW9uQ29uZmlnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VBbmltYXRpb25Db25maWcoc3RhdGUsIGFuaW1hdGlvbikge1xuICBpZiAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi5jdXJyZW50VGltZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgICAgICAuLi5zdGF0ZS5hbmltYXRpb25Db25maWcsXG4gICAgICAgIC4uLmFuaW1hdGlvbixcbiAgICAgICAgZG9tYWluOiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb2x1bW5zIHdpdGggbmV3IGRhdGEsXG4gKiB1cGRhdGUgZmllbGRJZHggYmFzZWQgb24gbmV3IGZpZWxkc1xuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gZmllbGRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2F2ZWRDb2xzXG4gKiBAcGFyYW0ge09iamVjdH0gZW1wdHlDb2xzXG4gKiBAcmV0dXJuIHtudWxsIHwgT2JqZWN0fSAtIHZhbGlkYXRlZCBjb2x1bW5zIG9yIG51bGxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZExheWVyQ29sdW1ucyhmaWVsZHMsIHNhdmVkQ29scyA9IHt9LCBlbXB0eUNvbHMpIHtcbiAgLy8gUHJlcGFyZSBjb2x1bW5zIGZvciB0aGUgdmFsaWRhdG9yXG4gIGNvbnN0IGNvbHVtbnMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1wdHlDb2xzKSkge1xuICAgIGNvbHVtbnNba2V5XSA9IHsuLi5lbXB0eUNvbHNba2V5XX07XG5cbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29sc1trZXldO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgY29uc3QgZmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KCh7bmFtZX0pID0+IG5hbWUgPT09IHNhdmVkKTtcblxuICAgICAgaWYgKGZpZWxkSWR4ID4gLTEpIHtcbiAgICAgICAgLy8gdXBkYXRlIGZvdW5kIGNvbHVtbnNcbiAgICAgICAgY29sdW1uc1trZXldLmZpZWxkSWR4ID0gZmllbGRJZHg7XG4gICAgICAgIGNvbHVtbnNba2V5XS52YWx1ZSA9IHNhdmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgYWN0dWFsIGNvbHVtbiBmaWVsZElkeCwgaW4gY2FzZSBpdCBoYXMgY2hhbmdlZFxuICBjb25zdCBhbGxDb2xGb3VuZCA9IE9iamVjdC5rZXlzKGNvbHVtbnMpLmV2ZXJ5KGtleSA9PlxuICAgIHZhbGlkYXRlQ29sdW1uKGNvbHVtbnNba2V5XSwgY29sdW1ucywgZmllbGRzKVxuICApO1xuXG4gIGlmIChhbGxDb2xGb3VuZCkge1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbHVtbihjb2x1bW4sIGNvbHVtbnMsIGFsbEZpZWxkcykge1xuICBpZiAoY29sdW1uLm9wdGlvbmFsIHx8IGNvbHVtbi52YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb2x1bW4udmFsaWRhdG9yKSB7XG4gICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0b3IoY29sdW1uLCBjb2x1bW5zLCBhbGxGaWVsZHMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCB0ZXh0IGxhYmVsIGNvbmZpZyB3aXRoIG5ldyBkYXRhXG4gKiByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFRleHRMYWJlbFNjaGVtYVYxXG4gKlxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBmaWVsZHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzYXZlZFRleHRMYWJlbFxuICogQHJldHVybiB7T2JqZWN0fSAtIHZhbGlkYXRlZCB0ZXh0bGFiZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwoZmllbGRzLCBbbGF5ZXJUZXh0TGFiZWxdLCBzYXZlZFRleHRMYWJlbCkge1xuICBjb25zdCBzYXZlZFRleHRMYWJlbHMgPSBBcnJheS5pc0FycmF5KHNhdmVkVGV4dExhYmVsKSA/IHNhdmVkVGV4dExhYmVsIDogW3NhdmVkVGV4dExhYmVsXTtcblxuICAvLyB2YWxpZGF0ZSBmaWVsZFxuICByZXR1cm4gc2F2ZWRUZXh0TGFiZWxzLm1hcCh0ZXh0TGFiZWwgPT4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGV4dExhYmVsLmZpZWxkXG4gICAgICA/IGZpZWxkcy5maW5kKGZkID0+XG4gICAgICAgICAgT2JqZWN0LmtleXModGV4dExhYmVsLmZpZWxkKS5ldmVyeShrZXkgPT4gdGV4dExhYmVsLmZpZWxkW2tleV0gPT09IGZkW2tleV0pXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhsYXllclRleHRMYWJlbCkucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IGtleSA9PT0gJ2ZpZWxkJyA/IGZpZWxkIDogdGV4dExhYmVsW2tleV0gfHwgbGF5ZXJUZXh0TGFiZWxba2V5XVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIHZpc3VhbCBjaGFubmVscyBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpIHtcbiAgT2JqZWN0LnZhbHVlcyhuZXdMYXllci52aXN1YWxDaGFubmVscykuZm9yRWFjaCgoe2ZpZWxkLCBzY2FsZSwga2V5fSkgPT4ge1xuICAgIGxldCBmb3VuZEZpZWxkO1xuICAgIGNvbnN0IGNvbG9yRmllbGRQcm9wcyA9IHt9O1xuICAgIGlmIChzYXZlZExheWVyLmNvbmZpZykge1xuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXSkge1xuICAgICAgICBmb3VuZEZpZWxkID0gZmllbGRzLmZpbmQoXG4gICAgICAgICAgZmQgPT4gc2F2ZWRMYXllci5jb25maWcgJiYgZmQubmFtZSA9PT0gc2F2ZWRMYXllci5jb25maWdbZmllbGRdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXT8uY29sb3JDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgY29sb3JDb2x1bW5GaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5jb2xvckNvbHVtblxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb2xvckNvbHVtbkZpZWxkKSB7XG4gICAgICAgICAgY29sb3JGaWVsZFByb3BzLmNvbG9yQ29sdW1uID0gY29sb3JDb2x1bW5GaWVsZC5uYW1lO1xuICAgICAgICAgIGNvbG9yRmllbGRQcm9wcy5jb2xvckNvbHVtbklkeCA9IGNvbG9yQ29sdW1uRmllbGQuZmllbGRJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRDaGFubmVsID0ge1xuICAgICAgICAuLi4oZm91bmRGaWVsZCA/IHtbZmllbGRdOiB7Li4uZm91bmRGaWVsZCwgLi4uY29sb3JGaWVsZFByb3BzfX0gOiB7fSksXG4gICAgICAgIC4uLihzYXZlZExheWVyLmNvbmZpZ1tzY2FsZV0gPyB7W3NjYWxlXTogc2F2ZWRMYXllci5jb25maWdbc2NhbGVdfSA6IHt9KVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhmb3VuZENoYW5uZWwpLmxlbmd0aCkge1xuICAgICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyhmb3VuZENoYW5uZWwpO1xuICAgICAgfVxuXG4gICAgICBuZXdMYXllci52YWxpZGF0ZVZpc3VhbENoYW5uZWwoa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoZGF0YXNldHMsIGxheWVyQ2xhc3NlcywgbGF5ZXJzKSB7XG4gIGNvbnN0IHZhbGlkYXRlZCA9IFtdO1xuICBjb25zdCBmYWlsZWQgPSBbXTtcblxuICBsYXllcnMuZm9yRWFjaChsYXllciA9PiB7XG4gICAgbGV0IHZhbGlkYXRlTGF5ZXI7XG4gICAgaWYgKCFsYXllciB8fCAhbGF5ZXIuY29uZmlnKSB7XG4gICAgICB2YWxpZGF0ZUxheWVyID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdKSB7XG4gICAgICAvLyBkYXRhc2V0cyBhcmUgYWxyZWFkeSBsb2FkZWRcbiAgICAgIHZhbGlkYXRlTGF5ZXIgPSB2YWxpZGF0ZUxheWVyV2l0aERhdGEoZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0sIGxheWVyLCBsYXllckNsYXNzZXMpO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZUxheWVyKSB7XG4gICAgICB2YWxpZGF0ZWQucHVzaCh2YWxpZGF0ZUxheWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGF0YXNldHMgbm90IHlldCBsb2FkZWRcbiAgICAgIGZhaWxlZC5wdXNoKGxheWVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7dmFsaWRhdGVkLCBmYWlsZWR9O1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHVwZGF0ZSBmaWVsZElkeCBiYXNlZCBvbiBuZXcgZmllbGRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVMYXllcldpdGhEYXRhfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcldpdGhEYXRhKFxuICB7ZmllbGRzLCBpZDogZGF0YUlkfSxcbiAgc2F2ZWRMYXllcixcbiAgbGF5ZXJDbGFzc2VzLFxuICBvcHRpb25zID0ge31cbikge1xuICBjb25zdCB7dHlwZX0gPSBzYXZlZExheWVyO1xuICAvLyBsYXllciBkb2VzbnQgaGF2ZSBhIHZhbGlkIHR5cGVcbiAgaWYgKCF0eXBlIHx8ICFsYXllckNsYXNzZXMuaGFzT3duUHJvcGVydHkodHlwZSkgfHwgIXNhdmVkTGF5ZXIuY29uZmlnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3R5cGVdKHtcbiAgICBpZDogc2F2ZWRMYXllci5pZCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWw6IHNhdmVkTGF5ZXIuY29uZmlnLmxhYmVsLFxuICAgIGNvbG9yOiBzYXZlZExheWVyLmNvbmZpZy5jb2xvcixcbiAgICBpc1Zpc2libGU6IHNhdmVkTGF5ZXIuY29uZmlnLmlzVmlzaWJsZSxcbiAgICBoaWRkZW46IHNhdmVkTGF5ZXIuY29uZmlnLmhpZGRlbixcbiAgICBoaWdobGlnaHRDb2xvcjogc2F2ZWRMYXllci5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgdmlzaWJpbGl0eUJ5Wm9vbTogc2F2ZWRMYXllci5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbVxuICB9KTtcblxuICAvLyBmaW5kIGNvbHVtbiBmaWVsZElkeFxuICBjb25zdCBjb2x1bW5Db25maWcgPSBuZXdMYXllci5nZXRMYXllckNvbHVtbnMoKTtcbiAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbkNvbmZpZykubGVuZ3RoKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMoZmllbGRzLCBzYXZlZExheWVyLmNvbmZpZy5jb2x1bW5zLCBjb2x1bW5Db25maWcpO1xuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7Y29sdW1uc30pO1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuYWxsb3dFbXB0eUNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdmlzdWFsIGNoYW5uZWwgZmllbGQgaXMgc2F2ZWQgdG8gYmUge25hbWUsIHR5cGV9XG4gIC8vIGZpbmQgdmlzdWFsIGNoYW5uZWwgZmllbGQgYnkgbWF0Y2hpbmcgYm90aCBuYW1lIGFuZCB0eXBlXG4gIC8vIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gIG5ld0xheWVyID0gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpO1xuXG4gIGNvbnN0IHRleHRMYWJlbCA9XG4gICAgc2F2ZWRMYXllci5jb25maWcudGV4dExhYmVsICYmIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWxcbiAgICAgID8gdmFsaWRhdGVTYXZlZFRleHRMYWJlbChmaWVsZHMsIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWwsIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbClcbiAgICAgIDogbmV3TGF5ZXIuY29uZmlnLnRleHRMYWJlbDtcblxuICAvLyBjb3B5IHZpc0NvbmZpZyBvdmVyIHRvIGVtcHR5TGF5ZXIgdG8gbWFrZSBzdXJlIGl0IGhhcyBhbGwgdGhlIHByb3BzXG4gIGNvbnN0IHZpc0NvbmZpZyA9IG5ld0xheWVyLmNvcHlMYXllckNvbmZpZyhcbiAgICBuZXdMYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyB8fCB7fSxcbiAgICB7c2hhbGxvd0NvcHk6IFsnY29sb3JSYW5nZScsICdzdHJva2VDb2xvclJhbmdlJ119XG4gICk7XG5cbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgIHZpc0NvbmZpZyxcbiAgICB0ZXh0TGFiZWxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lcmdlcihtZXJnZXIpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG1lcmdlcikgJiYgdHlwZW9mIG1lcmdlci5tZXJnZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgbWVyZ2VyLnByb3AgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgY29uc3QgVklTX1NUQVRFX01FUkdFUlMgPSBbXG4gIHttZXJnZTogbWVyZ2VMYXllcnMsIHByb3A6ICdsYXllcnMnLCB0b01lcmdlUHJvcDogJ2xheWVyVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlRmlsdGVycywgcHJvcDogJ2ZpbHRlcnMnLCB0b01lcmdlUHJvcDogJ2ZpbHRlclRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUludGVyYWN0aW9ucywgcHJvcDogJ2ludGVyYWN0aW9uQ29uZmlnJywgdG9NZXJnZVByb3A6ICdpbnRlcmFjdGlvblRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUxheWVyQmxlbmRpbmcsIHByb3A6ICdsYXllckJsZW5kaW5nJ30sXG4gIHttZXJnZTogbWVyZ2VTcGxpdE1hcHMsIHByb3A6ICdzcGxpdE1hcHMnLCB0b01lcmdlUHJvcDogJ3NwbGl0TWFwc1RvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUFuaW1hdGlvbkNvbmZpZywgcHJvcDogJ2FuaW1hdGlvbkNvbmZpZyd9XG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgs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
|
|
565
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BpY2siLCJfZmxhdHRlbkRlZXAiLCJfdXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfc3BsaXRNYXBVdGlscyIsIl9ncHVGaWx0ZXJVdGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfc2NoZW1hcyIsIl9leGNsdWRlZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwiVHlwZUVycm9yIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiYXJyIiwibGVuIiwiYXJyMiIsIm93bktleXMiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlRmlsdGVycyIsInN0YXRlIiwiZmlsdGVyc1RvTWVyZ2UiLCJfdmFsaWRhdGVGaWx0ZXJzVXBkYXQiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsInZhbGlkYXRlZCIsImZhaWxlZCIsInVwZGF0ZWREYXRhc2V0cyIsInVwZGF0ZWRGaWx0ZXJzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZpbHRlcnMiLCJyZXNldEZpbHRlckdwdU1vZGUiLCJhc3NpZ25HcHVDaGFubmVscyIsImRhdGFzZXRzVG9GaWx0ZXIiLCJ1bmlxIiwiZmxhdHRlbkRlZXAiLCJtYXAiLCJkYXRhSWQiLCJmaWx0ZXJlZCIsImFwcGx5RmlsdGVyc1RvRGF0YXNldHMiLCJsYXllcnMiLCJkYXRhc2V0cyIsImZpbHRlclRvQmVNZXJnZWQiLCJjcmVhdGVMYXllckZyb21Db25maWciLCJsYXllckNvbmZpZyIsIl92YWxpZGF0ZUxheWVyc0J5RGF0YSIsInZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyIsImxheWVyQ2xhc3NlcyIsIm5ld0xheWVyIiwidXBkYXRlTGF5ZXJEb21haW4iLCJzZXJpYWxpemVMYXllciIsInNhdmVkVmlzU3RhdGUiLCJ2aXNTdGF0ZVNjaGVtYSIsIkNVUlJFTlRfVkVSU0lPTiIsInNhdmUiLCJsYXllck9yZGVyIiwidmlzU3RhdGUiLCJsb2FkZWRMYXllciIsImxvYWQiLCJtZXJnZUxheWVycyIsImxheWVyc1RvTWVyZ2UiLCJmcm9tQ29uZmlnIiwicHJlc2VydmVMYXllck9yZGVyIiwibCIsImlkIiwiX3ZhbGlkYXRlTGF5ZXJzQnlEYXRhMiIsIm1lcmdlZExheWVyIiwidW5tZXJnZWQiLCJfaW5zZXJ0TGF5ZXJBdFJpZ2h0T3IiLCJpbnNlcnRMYXllckF0UmlnaHRPcmRlciIsIm5ld0xheWVyT3JkZXIiLCJuZXdMYXllcnMiLCJsYXllclRvQmVNZXJnZWQiLCJjdXJyZW50TGF5ZXJzIiwibGF5ZXJzVG9JbnNlcnQiLCJjdXJyZW50T3JkZXIiLCJwcmVzZXJ2ZWRPcmRlciIsInVuZGVmaW5lZCIsImxheWVyT3JkZXJRdWV1ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZXhwZWN0ZWRJZHgiLCJpbmRleE9mIiwiaW5zZXJ0QXQiLCJwcmVjZWVkSWR4IiwicHJlY2VlZExheWVyIiwiYXJyYXlJbnNlcnQiLCJmaW5kSW5kZXgiLCJtZXJnZUludGVyYWN0aW9ucyIsImludGVyYWN0aW9uVG9CZU1lcmdlZCIsIm1lcmdlZCIsImtleSIsImludGVyYWN0aW9uQ29uZmlnIiwiY3VycmVudENvbmZpZyIsImNvbmZpZyIsIl9yZWYiLCJlbmFibGVkIiwiY29uZmlnU2F2ZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiY29uZmlnVG9NZXJnZSIsIl9tZXJnZUludGVyYWN0aW9uVG9vbCIsIm1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnIiwibWVyZ2VkVG9vbHRpcCIsInVubWVyZ2VkVG9vbHRpcCIsImZpZWxkc1RvU2hvdyIsInRvb2x0aXAiLCJwaWNrIiwibWVyZ2VTcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzbSIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwicHVzaFRvIiwiZmluZCIsImdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcCIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJ0b29sdGlwQ29uZmlnIiwiX2xvb3AiLCJhbGxGaWVsZHMiLCJmaWVsZHMiLCJkIiwiZm91bmRGaWVsZHNUb1Nob3ciLCJtZXRhZGF0YSIsImlzRHluYW1pY1NwYXRpYWxJbmRleCIsImZpZWxkIiwiaW5jbHVkZXMiLCJtZXJnZUxheWVyQmxlbmRpbmciLCJsYXllckJsZW5kaW5nIiwiTEFZRVJfQkxFTkRJTkdTIiwibWVyZ2VBbmltYXRpb25Db25maWciLCJhbmltYXRpb24iLCJjdXJyZW50VGltZSIsImFuaW1hdGlvbkNvbmZpZyIsImRvbWFpbiIsInZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMiLCJzYXZlZENvbHMiLCJlbXB0eUNvbHMiLCJjb2x1bW5zIiwiX2xvb3AyIiwiX09iamVjdCRrZXlzIiwiX2kiLCJzYXZlZCIsImZpZWxkSWR4IiwiX3JlZjQiLCJhbGxDb2xGb3VuZCIsImV2ZXJ5IiwidmFsaWRhdGVDb2x1bW4iLCJjb2x1bW4iLCJvcHRpb25hbCIsInZhbGlkYXRvciIsInZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwiLCJfcmVmNSIsInNhdmVkVGV4dExhYmVsIiwiX3JlZjYiLCJsYXllclRleHRMYWJlbCIsInNhdmVkVGV4dExhYmVscyIsInRleHRMYWJlbCIsImZkIiwicmVkdWNlIiwiYWNjdSIsInZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyIsInNhdmVkTGF5ZXIiLCJ2YWx1ZXMiLCJ2aXN1YWxDaGFubmVscyIsIl9yZWY3Iiwic2NhbGUiLCJmb3VuZEZpZWxkIiwiY29sb3JGaWVsZFByb3BzIiwiX3NhdmVkTGF5ZXIkY29uZmlnJGZpIiwiY29sb3JDb2x1bW4iLCJjb2xvckNvbHVtbkZpZWxkIiwiY29sb3JDb2x1bW5JZHgiLCJmb3VuZENoYW5uZWwiLCJ1cGRhdGVMYXllckNvbmZpZyIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImxheWVyIiwidmFsaWRhdGVMYXllciIsInZhbGlkYXRlTGF5ZXJXaXRoRGF0YSIsIl9yZWYxMCIsIm9wdGlvbnMiLCJ0eXBlIiwiaGFzT3duUHJvcGVydHkiLCJsYWJlbCIsImNvbG9yIiwiaXNWaXNpYmxlIiwiaGlkZGVuIiwiaGlnaGxpZ2h0Q29sb3IiLCJ2aXNpYmlsaXR5Qnlab29tIiwiY29sdW1uQ29uZmlnIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiYWxsb3dFbXB0eUNvbHVtbiIsInZpc0NvbmZpZyIsImNvcHlMYXllckNvbmZpZyIsInNoYWxsb3dDb3B5IiwiaXNWYWxpZE1lcmdlciIsIm1lcmdlciIsImlzT2JqZWN0IiwibWVyZ2UiLCJwcm9wIiwiVklTX1NUQVRFX01FUkdFUlMiLCJleHBvcnRzIiwidG9NZXJnZVByb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvdmlzLXN0YXRlLW1lcmdlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5pbXBvcnQgZmxhdHRlbkRlZXAgZnJvbSAnbG9kYXNoL2ZsYXR0ZW5EZWVwJztcbmltcG9ydCB7aXNPYmplY3QsIGFycmF5SW5zZXJ0fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2FwcGx5RmlsdGVyc1RvRGF0YXNldHMsIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuXG5pbXBvcnQge2dldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcH0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcbmltcG9ydCB7cmVzZXRGaWx0ZXJHcHVNb2RlLCBhc3NpZ25HcHVDaGFubmVsc30gZnJvbSAndXRpbHMvZ3B1LWZpbHRlci11dGlscyc7XG5pbXBvcnQge0xBWUVSX0JMRU5ESU5HU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtDVVJSRU5UX1ZFUlNJT04sIHZpc1N0YXRlU2NoZW1hfSBmcm9tICdzY2hlbWFzJztcblxuLyoqXG4gKiBNZXJnZSBsb2FkZWQgZmlsdGVycyB3aXRoIGN1cnJlbnQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlRmlsdGVyc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVycyhzdGF0ZSwgZmlsdGVyc1RvTWVyZ2UpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnNUb01lcmdlKSB8fCAhZmlsdGVyc1RvTWVyZ2UubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkLCB1cGRhdGVkRGF0YXNldHN9ID0gdmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMoc3RhdGUsIGZpbHRlcnNUb01lcmdlKTtcblxuICAvLyBtZXJnZSBmaWx0ZXIgd2l0aCBleGlzdGluZ1xuICBsZXQgdXBkYXRlZEZpbHRlcnMgPSBbLi4uKHN0YXRlLmZpbHRlcnMgfHwgW10pLCAuLi52YWxpZGF0ZWRdO1xuICB1cGRhdGVkRmlsdGVycyA9IHJlc2V0RmlsdGVyR3B1TW9kZSh1cGRhdGVkRmlsdGVycyk7XG4gIHVwZGF0ZWRGaWx0ZXJzID0gYXNzaWduR3B1Q2hhbm5lbHModXBkYXRlZEZpbHRlcnMpO1xuICAvLyBmaWx0ZXIgZGF0YVxuICBjb25zdCBkYXRhc2V0c1RvRmlsdGVyID0gdW5pcShmbGF0dGVuRGVlcCh2YWxpZGF0ZWQubWFwKGYgPT4gZi5kYXRhSWQpKSk7XG5cbiAgY29uc3QgZmlsdGVyZWQgPSBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKFxuICAgIGRhdGFzZXRzVG9GaWx0ZXIsXG4gICAgdXBkYXRlZERhdGFzZXRzLFxuICAgIHVwZGF0ZWRGaWx0ZXJzLFxuICAgIHN0YXRlLmxheWVyc1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogdXBkYXRlZEZpbHRlcnMsXG4gICAgZGF0YXNldHM6IGZpbHRlcmVkLFxuICAgIGZpbHRlclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5maWx0ZXJUb0JlTWVyZ2VkLCAuLi5mYWlsZWRdXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYXllckZyb21Db25maWcoc3RhdGUsIGxheWVyQ29uZmlnKSB7XG4gIC8vIGZpcnN0IHZhbGlkYXRlIGNvbmZpZyBhZ2FpbnN0IGRhdGFzZXRcbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhzdGF0ZS5kYXRhc2V0cywgc3RhdGUubGF5ZXJDbGFzc2VzLCBbXG4gICAgbGF5ZXJDb25maWdcbiAgXSk7XG5cbiAgaWYgKGZhaWxlZC5sZW5ndGggfHwgIXZhbGlkYXRlZC5sZW5ndGgpIHtcbiAgICAvLyBmYWlsZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5ld0xheWVyID0gdmFsaWRhdGVkWzBdO1xuICBuZXdMYXllci51cGRhdGVMYXllckRvbWFpbihzdGF0ZS5kYXRhc2V0cyk7XG4gIHJldHVybiBuZXdMYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxheWVyKG5ld0xheWVyKSB7XG4gIGNvbnN0IHNhdmVkVmlzU3RhdGUgPSB2aXNTdGF0ZVNjaGVtYVtDVVJSRU5UX1ZFUlNJT05dLnNhdmUoe1xuICAgIGxheWVyczogW25ld0xheWVyXSxcbiAgICBsYXllck9yZGVyOiBbMF1cbiAgfSkudmlzU3RhdGU7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gdmlzU3RhdGVTY2hlbWFbQ1VSUkVOVF9WRVJTSU9OXS5sb2FkKHNhdmVkVmlzU3RhdGUpLnZpc1N0YXRlLmxheWVyc1swXTtcbiAgcmV0dXJuIGxvYWRlZExheWVyO1xufVxuXG4vKipcbiAqIE1lcmdlIGxheWVycyBmcm9tIGRlLXNlcmlhbGl6ZWQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlTGF5ZXJzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllcnMoc3RhdGUsIGxheWVyc1RvTWVyZ2UsIGZyb21Db25maWcpIHtcbiAgY29uc3QgcHJlc2VydmVMYXllck9yZGVyID0gZnJvbUNvbmZpZyA/IGxheWVyc1RvTWVyZ2UubWFwKGwgPT4gbC5pZCkgOiBzdGF0ZS5wcmVzZXJ2ZUxheWVyT3JkZXI7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxheWVyc1RvTWVyZ2UpIHx8ICFsYXllcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQ6IG1lcmdlZExheWVyLCBmYWlsZWQ6IHVubWVyZ2VkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhcbiAgICBzdGF0ZS5kYXRhc2V0cyxcbiAgICBzdGF0ZS5sYXllckNsYXNzZXMsXG4gICAgbGF5ZXJzVG9NZXJnZVxuICApO1xuXG4gIC8vIHB1dCBuZXcgbGF5ZXJzIGluIGZyb250IG9mIGN1cnJlbnQgbGF5ZXJzXG4gIGNvbnN0IHtuZXdMYXllck9yZGVyLCBuZXdMYXllcnN9ID0gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gICAgc3RhdGUubGF5ZXJzLFxuICAgIG1lcmdlZExheWVyLFxuICAgIHN0YXRlLmxheWVyT3JkZXIsXG4gICAgcHJlc2VydmVMYXllck9yZGVyXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllck9yZGVyOiBuZXdMYXllck9yZGVyLFxuICAgIHByZXNlcnZlTGF5ZXJPcmRlcixcbiAgICBsYXllclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5sYXllclRvQmVNZXJnZWQsIC4uLnVubWVyZ2VkXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gIGN1cnJlbnRMYXllcnMsXG4gIGxheWVyc1RvSW5zZXJ0LFxuICBjdXJyZW50T3JkZXIsXG4gIHByZXNlcnZlZE9yZGVyID0gW11cbikge1xuICAvLyBwZXJzZXJ2ZWRPcmRlciBbJ2EnLCAnYicsICdjJ107XG4gIC8vIGxheWVyT3JkZXIgWzEsIDAsIDNdXG4gIC8vIGxheWVyT3JkZXJNYXAgWydhJywgJ2MnXVxuICBsZXQgbGF5ZXJPcmRlclF1ZXVlID0gY3VycmVudE9yZGVyLm1hcChpID0+IGN1cnJlbnRMYXllcnNbaV0uaWQpO1xuICBsZXQgbmV3TGF5ZXJzID0gY3VycmVudExheWVycztcblxuICBmb3IgKGNvbnN0IG5ld0xheWVyIG9mIGxheWVyc1RvSW5zZXJ0KSB7XG4gICAgLy8gZmluZCB3aGVyZSB0byBpbnNlcnQgaXRcbiAgICBjb25zdCBleHBlY3RlZElkeCA9IHByZXNlcnZlZE9yZGVyLmluZGV4T2YobmV3TGF5ZXIuaWQpO1xuICAgIC8vIGlmIGNhbnQgZmluZCBwbGFjZSB0byBpbnNlcnQsIGluc2VydCBhdCB0aGUgZm9udFxuICAgIGxldCBpbnNlcnRBdCA9IDA7XG5cbiAgICBpZiAoZXhwZWN0ZWRJZHggPiAwKSB7XG4gICAgICAvLyBsb29rIGZvciBsYXllciB0byBpbnNlcnQgYWZ0ZXJcbiAgICAgIGxldCBpID0gZXhwZWN0ZWRJZHggKyAxO1xuICAgICAgbGV0IHByZWNlZWRJZHggPSAtMTtcbiAgICAgIHdoaWxlIChpLS0gPiAwICYmIHByZWNlZWRJZHggPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHByZWNlZWRMYXllciA9IHByZXNlcnZlZE9yZGVyW2ldO1xuICAgICAgICBwcmVjZWVkSWR4ID0gbGF5ZXJPcmRlclF1ZXVlLmluZGV4T2YocHJlY2VlZExheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWNlZWRJZHggPiAtMSkge1xuICAgICAgICBpbnNlcnRBdCA9IHByZWNlZWRJZHggKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxheWVyT3JkZXJRdWV1ZSA9IGFycmF5SW5zZXJ0KGxheWVyT3JkZXJRdWV1ZSwgaW5zZXJ0QXQsIG5ld0xheWVyLmlkKTtcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuY29uY2F0KG5ld0xheWVyKTtcbiAgfVxuXG4gIC8vIHJlY29uc3RydWN0IGxheWVyT3JkZXIgYWZ0ZXIgaW5zZXJ0XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBsYXllck9yZGVyUXVldWUubWFwKGlkID0+IG5ld0xheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBpZCkpO1xuXG4gIHJldHVybiB7XG4gICAgbmV3TGF5ZXJPcmRlcixcbiAgICBuZXdMYXllcnNcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbnMgd2l0aCBzYXZlZCBjb25maWdcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykubWVyZ2VJbnRlcmFjdGlvbnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUludGVyYWN0aW9ucyhzdGF0ZSwgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKSB7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuICBjb25zdCB1bm1lcmdlZCA9IHt9O1xuXG4gIGlmIChpbnRlcmFjdGlvblRvQmVNZXJnZWQpIHtcbiAgICBPYmplY3Qua2V5cyhpbnRlcmFjdGlvblRvQmVNZXJnZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZ1trZXldLmNvbmZpZztcblxuICAgICAgY29uc3Qge2VuYWJsZWQsIC4uLmNvbmZpZ1NhdmVkfSA9IGludGVyYWN0aW9uVG9CZU1lcmdlZFtrZXldIHx8IHt9O1xuICAgICAgbGV0IGNvbmZpZ1RvTWVyZ2UgPSBjb25maWdTYXZlZDtcblxuICAgICAgaWYgKGtleSA9PT0gJ3Rvb2x0aXAnKSB7XG4gICAgICAgIGNvbnN0IHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9ID0gbWVyZ2VJbnRlcmFjdGlvblRvb2x0aXBDb25maWcoc3RhdGUsIGNvbmZpZ1NhdmVkKTtcblxuICAgICAgICAvLyBtZXJnZSBuZXcgZGF0YXNldCB0b29sdGlwcyB3aXRoIG9yaWdpbmFsIGRhdGFzZXQgdG9vbHRpcHNcbiAgICAgICAgY29uZmlnVG9NZXJnZSA9IHtcbiAgICAgICAgICBmaWVsZHNUb1Nob3c6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgLi4ubWVyZ2VkVG9vbHRpcFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModW5tZXJnZWRUb29sdGlwKS5sZW5ndGgpIHtcbiAgICAgICAgICB1bm1lcmdlZC50b29sdGlwID0ge2ZpZWxkc1RvU2hvdzogdW5tZXJnZWRUb29sdGlwLCBlbmFibGVkfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZXJnZWRba2V5XSA9IHtcbiAgICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSxcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgICAgLi4uKGN1cnJlbnRDb25maWdcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY29uZmlnOiBwaWNrKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAuLi5jb25maWdUb01lcmdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnOiB7XG4gICAgICAuLi5zdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgIC4uLm1lcmdlZFxuICAgIH0sXG4gICAgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkOiB1bm1lcmdlZFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIHNwbGl0TWFwcyBjb25maWcgd2l0aCBjdXJyZW50IHZpc1N0ZXRlLlxuICogMS4gaWYgY3VycmVudCBtYXAgaXMgc3BsaXQsIGJ1dCBzcGxpdE1hcCBET0VTTk9UIGNvbnRhaW4gbWFwc1xuICogICAgOiBkb24ndCBtZXJnZSBhbnl0aGluZ1xuICogMi4gaWYgY3VycmVudCBtYXAgaXMgTk9UIHNwbGl0LCBidXQgc3BsaXRNYXBzIGNvbnRhaW4gbWFwc1xuICogICAgOiBhZGQgdG8gc3BsaXRNYXBzLCBhbmQgYWRkIGN1cnJlbnQgbGF5ZXJzIHRvIHNwbGl0TWFwc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlSW50ZXJhY3Rpb25zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTcGxpdE1hcHMoc3RhdGUsIHNwbGl0TWFwcyA9IFtdKSB7XG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5zdGF0ZS5zcGxpdE1hcHNdO1xuICBjb25zdCB1bm1lcmdlZCA9IFtdO1xuICBzcGxpdE1hcHMuZm9yRWFjaCgoc20sIGkpID0+IHtcbiAgICBPYmplY3QuZW50cmllcyhzbS5sYXllcnMpLmZvckVhY2goKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBsYXllciBleGlzdHNcbiAgICAgIGNvbnN0IHB1c2hUbyA9IHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpID8gbWVyZ2VkIDogdW5tZXJnZWQ7XG5cbiAgICAgIC8vIGNyZWF0ZSBtYXAgcGFuZWwgaWYgY3VycmVudCBtYXAgaXMgbm90IHNwbGl0XG4gICAgICBwdXNoVG9baV0gPSBwdXNoVG9baV0gfHwge1xuICAgICAgICBsYXllcnM6IHB1c2hUbyA9PT0gbWVyZ2VkID8gZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwKHN0YXRlLmxheWVycykgOiBbXVxuICAgICAgfTtcbiAgICAgIHB1c2hUb1tpXS5sYXllcnMgPSB7XG4gICAgICAgIC4uLnB1c2hUb1tpXS5sYXllcnMsXG4gICAgICAgIFtpZF06IHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNwbGl0TWFwczogbWVyZ2VkLFxuICAgIHNwbGl0TWFwc1RvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5zcGxpdE1hcHNUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwIHdpdGggc2F2ZWQgY29uZmlnLFxuICogdmFsaWRhdGUgZmllbGRzVG9TaG93XG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlXG4gKiBAcGFyYW0ge29iamVjdH0gdG9vbHRpcENvbmZpZ1xuICogQHJldHVybiB7b2JqZWN0fSAtIHttZXJnZWRUb29sdGlwOiB7fSwgdW5tZXJnZWRUb29sdGlwOiB7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKHN0YXRlLCB0b29sdGlwQ29uZmlnID0ge30pIHtcbiAgY29uc3QgdW5tZXJnZWRUb29sdGlwID0ge307XG4gIGNvbnN0IG1lcmdlZFRvb2x0aXAgPSB7fTtcblxuICBpZiAoIXRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93IHx8ICFPYmplY3Qua2V5cyh0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvdykubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9O1xuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhSWQgaW4gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpIHtcbiAgICBpZiAoIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIC8vIGlzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICB1bm1lcmdlZFRvb2x0aXBbZGF0YUlkXSA9IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgbG9hZGVkXG4gICAgICBjb25zdCBhbGxGaWVsZHMgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLmZpZWxkcy5tYXAoZCA9PiBkLm5hbWUpO1xuICAgICAgY29uc3QgZm91bmRGaWVsZHNUb1Nob3cgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLm1ldGFkYXRhLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgICAgICA/IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF1cbiAgICAgICAgOiB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdLmZpbHRlcihmaWVsZCA9PiBhbGxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpO1xuXG4gICAgICBtZXJnZWRUb29sdGlwW2RhdGFJZF0gPSBmb3VuZEZpZWxkc1RvU2hvdztcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH07XG59XG4vKipcbiAqIE1lcmdlIGxheWVyQmxlbmRpbmcgd2l0aCBzYXZlZFxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUxheWVyQmxlbmRpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyQmxlbmRpbmcoc3RhdGUsIGxheWVyQmxlbmRpbmcpIHtcbiAgaWYgKGxheWVyQmxlbmRpbmcgJiYgTEFZRVJfQkxFTkRJTkdTW2xheWVyQmxlbmRpbmddKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJCbGVuZGluZ1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogTWVyZ2UgYW5pbWF0aW9uIGNvbmZpZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlQW5pbWF0aW9uQ29uZmlnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VBbmltYXRpb25Db25maWcoc3RhdGUsIGFuaW1hdGlvbikge1xuICBpZiAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi5jdXJyZW50VGltZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgICAgICAuLi5zdGF0ZS5hbmltYXRpb25Db25maWcsXG4gICAgICAgIC4uLmFuaW1hdGlvbixcbiAgICAgICAgZG9tYWluOiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb2x1bW5zIHdpdGggbmV3IGRhdGEsXG4gKiB1cGRhdGUgZmllbGRJZHggYmFzZWQgb24gbmV3IGZpZWxkc1xuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gZmllbGRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2F2ZWRDb2xzXG4gKiBAcGFyYW0ge09iamVjdH0gZW1wdHlDb2xzXG4gKiBAcmV0dXJuIHtudWxsIHwgT2JqZWN0fSAtIHZhbGlkYXRlZCBjb2x1bW5zIG9yIG51bGxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZExheWVyQ29sdW1ucyhmaWVsZHMsIHNhdmVkQ29scyA9IHt9LCBlbXB0eUNvbHMpIHtcbiAgLy8gUHJlcGFyZSBjb2x1bW5zIGZvciB0aGUgdmFsaWRhdG9yXG4gIGNvbnN0IGNvbHVtbnMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1wdHlDb2xzKSkge1xuICAgIGNvbHVtbnNba2V5XSA9IHsuLi5lbXB0eUNvbHNba2V5XX07XG5cbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29sc1trZXldO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgY29uc3QgZmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KCh7bmFtZX0pID0+IG5hbWUgPT09IHNhdmVkKTtcblxuICAgICAgaWYgKGZpZWxkSWR4ID4gLTEpIHtcbiAgICAgICAgLy8gdXBkYXRlIGZvdW5kIGNvbHVtbnNcbiAgICAgICAgY29sdW1uc1trZXldLmZpZWxkSWR4ID0gZmllbGRJZHg7XG4gICAgICAgIGNvbHVtbnNba2V5XS52YWx1ZSA9IHNhdmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgYWN0dWFsIGNvbHVtbiBmaWVsZElkeCwgaW4gY2FzZSBpdCBoYXMgY2hhbmdlZFxuICBjb25zdCBhbGxDb2xGb3VuZCA9IE9iamVjdC5rZXlzKGNvbHVtbnMpLmV2ZXJ5KGtleSA9PlxuICAgIHZhbGlkYXRlQ29sdW1uKGNvbHVtbnNba2V5XSwgY29sdW1ucywgZmllbGRzKVxuICApO1xuXG4gIGlmIChhbGxDb2xGb3VuZCkge1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbHVtbihjb2x1bW4sIGNvbHVtbnMsIGFsbEZpZWxkcykge1xuICBpZiAoY29sdW1uLm9wdGlvbmFsIHx8IGNvbHVtbi52YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb2x1bW4udmFsaWRhdG9yKSB7XG4gICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0b3IoY29sdW1uLCBjb2x1bW5zLCBhbGxGaWVsZHMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCB0ZXh0IGxhYmVsIGNvbmZpZyB3aXRoIG5ldyBkYXRhXG4gKiByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFRleHRMYWJlbFNjaGVtYVYxXG4gKlxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBmaWVsZHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzYXZlZFRleHRMYWJlbFxuICogQHJldHVybiB7T2JqZWN0fSAtIHZhbGlkYXRlZCB0ZXh0bGFiZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwoZmllbGRzLCBbbGF5ZXJUZXh0TGFiZWxdLCBzYXZlZFRleHRMYWJlbCkge1xuICBjb25zdCBzYXZlZFRleHRMYWJlbHMgPSBBcnJheS5pc0FycmF5KHNhdmVkVGV4dExhYmVsKSA/IHNhdmVkVGV4dExhYmVsIDogW3NhdmVkVGV4dExhYmVsXTtcblxuICAvLyB2YWxpZGF0ZSBmaWVsZFxuICByZXR1cm4gc2F2ZWRUZXh0TGFiZWxzLm1hcCh0ZXh0TGFiZWwgPT4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGV4dExhYmVsLmZpZWxkXG4gICAgICA/IGZpZWxkcy5maW5kKGZkID0+XG4gICAgICAgICAgT2JqZWN0LmtleXModGV4dExhYmVsLmZpZWxkKS5ldmVyeShrZXkgPT4gdGV4dExhYmVsLmZpZWxkW2tleV0gPT09IGZkW2tleV0pXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhsYXllclRleHRMYWJlbCkucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IGtleSA9PT0gJ2ZpZWxkJyA/IGZpZWxkIDogdGV4dExhYmVsW2tleV0gfHwgbGF5ZXJUZXh0TGFiZWxba2V5XVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIHZpc3VhbCBjaGFubmVscyBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpIHtcbiAgT2JqZWN0LnZhbHVlcyhuZXdMYXllci52aXN1YWxDaGFubmVscykuZm9yRWFjaCgoe2ZpZWxkLCBzY2FsZSwga2V5fSkgPT4ge1xuICAgIGxldCBmb3VuZEZpZWxkO1xuICAgIGNvbnN0IGNvbG9yRmllbGRQcm9wcyA9IHt9O1xuICAgIGlmIChzYXZlZExheWVyLmNvbmZpZykge1xuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXSkge1xuICAgICAgICBmb3VuZEZpZWxkID0gZmllbGRzLmZpbmQoXG4gICAgICAgICAgZmQgPT4gc2F2ZWRMYXllci5jb25maWcgJiYgZmQubmFtZSA9PT0gc2F2ZWRMYXllci5jb25maWdbZmllbGRdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXT8uY29sb3JDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgY29sb3JDb2x1bW5GaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5jb2xvckNvbHVtblxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb2xvckNvbHVtbkZpZWxkKSB7XG4gICAgICAgICAgY29sb3JGaWVsZFByb3BzLmNvbG9yQ29sdW1uID0gY29sb3JDb2x1bW5GaWVsZC5uYW1lO1xuICAgICAgICAgIGNvbG9yRmllbGRQcm9wcy5jb2xvckNvbHVtbklkeCA9IGNvbG9yQ29sdW1uRmllbGQuZmllbGRJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRDaGFubmVsID0ge1xuICAgICAgICAuLi4oZm91bmRGaWVsZCA/IHtbZmllbGRdOiB7Li4uZm91bmRGaWVsZCwgLi4uY29sb3JGaWVsZFByb3BzfX0gOiB7fSksXG4gICAgICAgIC4uLihzYXZlZExheWVyLmNvbmZpZ1tzY2FsZV0gPyB7W3NjYWxlXTogc2F2ZWRMYXllci5jb25maWdbc2NhbGVdfSA6IHt9KVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhmb3VuZENoYW5uZWwpLmxlbmd0aCkge1xuICAgICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyhmb3VuZENoYW5uZWwpO1xuICAgICAgfVxuXG4gICAgICBuZXdMYXllci52YWxpZGF0ZVZpc3VhbENoYW5uZWwoa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoZGF0YXNldHMsIGxheWVyQ2xhc3NlcywgbGF5ZXJzKSB7XG4gIGNvbnN0IHZhbGlkYXRlZCA9IFtdO1xuICBjb25zdCBmYWlsZWQgPSBbXTtcblxuICBsYXllcnMuZm9yRWFjaChsYXllciA9PiB7XG4gICAgbGV0IHZhbGlkYXRlTGF5ZXI7XG4gICAgaWYgKCFsYXllciB8fCAhbGF5ZXIuY29uZmlnKSB7XG4gICAgICB2YWxpZGF0ZUxheWVyID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdKSB7XG4gICAgICAvLyBkYXRhc2V0cyBhcmUgYWxyZWFkeSBsb2FkZWRcbiAgICAgIHZhbGlkYXRlTGF5ZXIgPSB2YWxpZGF0ZUxheWVyV2l0aERhdGEoZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0sIGxheWVyLCBsYXllckNsYXNzZXMpO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZUxheWVyKSB7XG4gICAgICB2YWxpZGF0ZWQucHVzaCh2YWxpZGF0ZUxheWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGF0YXNldHMgbm90IHlldCBsb2FkZWRcbiAgICAgIGZhaWxlZC5wdXNoKGxheWVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7dmFsaWRhdGVkLCBmYWlsZWR9O1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHVwZGF0ZSBmaWVsZElkeCBiYXNlZCBvbiBuZXcgZmllbGRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVMYXllcldpdGhEYXRhfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcldpdGhEYXRhKFxuICB7ZmllbGRzLCBpZDogZGF0YUlkfSxcbiAgc2F2ZWRMYXllcixcbiAgbGF5ZXJDbGFzc2VzLFxuICBvcHRpb25zID0ge31cbikge1xuICBjb25zdCB7dHlwZX0gPSBzYXZlZExheWVyO1xuICAvLyBsYXllciBkb2VzbnQgaGF2ZSBhIHZhbGlkIHR5cGVcbiAgaWYgKCF0eXBlIHx8ICFsYXllckNsYXNzZXMuaGFzT3duUHJvcGVydHkodHlwZSkgfHwgIXNhdmVkTGF5ZXIuY29uZmlnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3R5cGVdKHtcbiAgICBpZDogc2F2ZWRMYXllci5pZCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWw6IHNhdmVkTGF5ZXIuY29uZmlnLmxhYmVsLFxuICAgIGNvbG9yOiBzYXZlZExheWVyLmNvbmZpZy5jb2xvcixcbiAgICBpc1Zpc2libGU6IHNhdmVkTGF5ZXIuY29uZmlnLmlzVmlzaWJsZSxcbiAgICBoaWRkZW46IHNhdmVkTGF5ZXIuY29uZmlnLmhpZGRlbixcbiAgICBoaWdobGlnaHRDb2xvcjogc2F2ZWRMYXllci5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgdmlzaWJpbGl0eUJ5Wm9vbTogc2F2ZWRMYXllci5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbVxuICB9KTtcblxuICAvLyBmaW5kIGNvbHVtbiBmaWVsZElkeFxuICBjb25zdCBjb2x1bW5Db25maWcgPSBuZXdMYXllci5nZXRMYXllckNvbHVtbnMoKTtcbiAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbkNvbmZpZykubGVuZ3RoKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMoZmllbGRzLCBzYXZlZExheWVyLmNvbmZpZy5jb2x1bW5zLCBjb2x1bW5Db25maWcpO1xuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7Y29sdW1uc30pO1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuYWxsb3dFbXB0eUNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdmlzdWFsIGNoYW5uZWwgZmllbGQgaXMgc2F2ZWQgdG8gYmUge25hbWUsIHR5cGV9XG4gIC8vIGZpbmQgdmlzdWFsIGNoYW5uZWwgZmllbGQgYnkgbWF0Y2hpbmcgYm90aCBuYW1lIGFuZCB0eXBlXG4gIC8vIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gIG5ld0xheWVyID0gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpO1xuXG4gIGNvbnN0IHRleHRMYWJlbCA9XG4gICAgc2F2ZWRMYXllci5jb25maWcudGV4dExhYmVsICYmIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWxcbiAgICAgID8gdmFsaWRhdGVTYXZlZFRleHRMYWJlbChmaWVsZHMsIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWwsIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbClcbiAgICAgIDogbmV3TGF5ZXIuY29uZmlnLnRleHRMYWJlbDtcblxuICAvLyBjb3B5IHZpc0NvbmZpZyBvdmVyIHRvIGVtcHR5TGF5ZXIgdG8gbWFrZSBzdXJlIGl0IGhhcyBhbGwgdGhlIHByb3BzXG4gIGNvbnN0IHZpc0NvbmZpZyA9IG5ld0xheWVyLmNvcHlMYXllckNvbmZpZyhcbiAgICBuZXdMYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyB8fCB7fSxcbiAgICB7c2hhbGxvd0NvcHk6IFsnY29sb3JSYW5nZScsICdzdHJva2VDb2xvclJhbmdlJ119XG4gICk7XG5cbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgIHZpc0NvbmZpZyxcbiAgICB0ZXh0TGFiZWxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lcmdlcihtZXJnZXIpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG1lcmdlcikgJiYgdHlwZW9mIG1lcmdlci5tZXJnZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgbWVyZ2VyLnByb3AgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgY29uc3QgVklTX1NUQVRFX01FUkdFUlMgPSBbXG4gIHttZXJnZTogbWVyZ2VMYXllcnMsIHByb3A6ICdsYXllcnMnLCB0b01lcmdlUHJvcDogJ2xheWVyVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlRmlsdGVycywgcHJvcDogJ2ZpbHRlcnMnLCB0b01lcmdlUHJvcDogJ2ZpbHRlclRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUludGVyYWN0aW9ucywgcHJvcDogJ2ludGVyYWN0aW9uQ29uZmlnJywgdG9NZXJnZVByb3A6ICdpbnRlcmFjdGlvblRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUxheWVyQmxlbmRpbmcsIHByb3A6ICdsYXllckJsZW5kaW5nJ30sXG4gIHttZXJnZTogbWVyZ2VTcGxpdE1hcHMsIHByb3A6ICdzcGxpdE1hcHMnLCB0b01lcmdlUHJvcDogJ3NwbGl0TWFwc1RvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUFuaW1hdGlvbkNvbmZpZywgcHJvcDogJ2FuaW1hdGlvbkNvbmZpZyd9XG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgs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
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
3
|
"author": "CARTO",
|
|
4
4
|
"homepage": "https://github.com/CartoDB/carto-kepler#readme",
|
|
5
|
-
"version": "0.0.75-alpha.lodash.
|
|
5
|
+
"version": "0.0.75-alpha.lodash.3",
|
|
6
6
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "dist/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import React, {Component} from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
23
|
import classnames from 'classnames';
|
|
24
|
-
import
|
|
24
|
+
import uniqBy from 'lodash/uniqBy';
|
|
25
25
|
import listensToClickOutside from 'react-onclickoutside';
|
|
26
26
|
import styled from 'styled-components';
|
|
27
27
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
import uniq from 'lodash/uniq';
|
|
22
22
|
import pick from 'lodash/pick';
|
|
23
|
-
import
|
|
23
|
+
import flattenDeep from 'lodash/flattenDeep';
|
|
24
24
|
import {isObject, arrayInsert} from 'utils/utils';
|
|
25
25
|
import {applyFiltersToDatasets, validateFiltersUpdateDatasets} from 'utils/filter-utils';
|
|
26
26
|
|