easy-richtextarea 4.0.4 → 4.0.5

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/lib/browser.js CHANGED
@@ -25,7 +25,7 @@ _export(exports, {
25
25
  return _delete.default;
26
26
  },
27
27
  transformContent: function() {
28
- return _transform.default;
28
+ return _content.default;
29
29
  },
30
30
  operationsToJSON: function() {
31
31
  return _toJSON.default;
@@ -36,8 +36,11 @@ _export(exports, {
36
36
  generateOperations: function() {
37
37
  return _generate.default;
38
38
  },
39
+ transformSelection: function() {
40
+ return _selection1.default;
41
+ },
39
42
  transformOperations: function() {
40
- return _transform1.default;
43
+ return _operations.default;
41
44
  }
42
45
  });
43
46
  var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
@@ -45,15 +48,16 @@ var _richTextarea = /*#__PURE__*/ _interopRequireDefault(require("./richTextarea
45
48
  var _empty = /*#__PURE__*/ _interopRequireDefault(require("./operation/empty"));
46
49
  var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
47
50
  var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
48
- var _transform = /*#__PURE__*/ _interopRequireDefault(require("./content/transform"));
51
+ var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
49
52
  var _toJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/toJSON"));
50
53
  var _fromJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/fromJSON"));
51
54
  var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
52
- var _transform1 = /*#__PURE__*/ _interopRequireDefault(require("./operations/transform"));
55
+ var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
56
+ var _operations = /*#__PURE__*/ _interopRequireDefault(require("./transform/operations"));
53
57
  function _interopRequireDefault(obj) {
54
58
  return obj && obj.__esModule ? obj : {
55
59
  default: obj
56
60
  };
57
61
  }
58
62
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJpY2hUZXh0YXJlYSB9IGZyb20gXCIuL3JpY2hUZXh0YXJlYVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbXB0eU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9lbXB0eVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbnNlcnRPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIERlbGV0ZU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9kZWxldGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtQ29udGVudCB9IGZyb20gXCIuL2NvbnRlbnQvdHJhbnNmb3JtXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9wZXJhdGlvbnNUb0pTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL3RvSlNPTlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvcGVyYXRpb25zRnJvbUpTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL2Zyb21KU09OXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdlbmVyYXRlT3BlcmF0aW9ucyB9IGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtT3BlcmF0aW9ucyB9IGZyb20gXCIuL29wZXJhdGlvbnMvdHJhbnNmb3JtXCI7XG5cbiJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJSaWNoVGV4dGFyZWEiLCJFbXB0eU9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsInRyYW5zZm9ybUNvbnRlbnQiLCJvcGVyYXRpb25zVG9KU09OIiwib3BlcmF0aW9uc0Zyb21KU09OIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwidHJhbnNmb3JtT3BlcmF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBR29CQSxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxZQUFZO2VBQVpBLHFCQUFZOztJQUNaQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFDZkMsZUFBZTtlQUFmQSxlQUFlOztJQUNmQyxnQkFBZ0I7ZUFBaEJBLGtCQUFnQjs7SUFDaEJDLGdCQUFnQjtlQUFoQkEsZUFBZ0I7O0lBQ2hCQyxrQkFBa0I7ZUFBbEJBLGlCQUFrQjs7SUFDbEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsbUJBQW1CO2VBQW5CQSxtQkFBbUI7Ozs4REFURjtpRUFDRzswREFDRTsyREFDQzsyREFDQTs4REFDQzsyREFDQTs2REFDRTs2REFDQTsrREFDQyJ9
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJpY2hUZXh0YXJlYSB9IGZyb20gXCIuL3JpY2hUZXh0YXJlYVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbXB0eU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9lbXB0eVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbnNlcnRPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIERlbGV0ZU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9kZWxldGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtQ29udGVudCB9IGZyb20gXCIuL3RyYW5zZm9ybS9jb250ZW50XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9wZXJhdGlvbnNUb0pTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL3RvSlNPTlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvcGVyYXRpb25zRnJvbUpTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL2Zyb21KU09OXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdlbmVyYXRlT3BlcmF0aW9ucyB9IGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtU2VsZWN0aW9uIH0gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmFuc2Zvcm1PcGVyYXRpb25zIH0gZnJvbSBcIi4vdHJhbnNmb3JtL29wZXJhdGlvbnNcIjtcbiJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJSaWNoVGV4dGFyZWEiLCJFbXB0eU9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsInRyYW5zZm9ybUNvbnRlbnQiLCJvcGVyYXRpb25zVG9KU09OIiwib3BlcmF0aW9uc0Zyb21KU09OIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwidHJhbnNmb3JtT3BlcmF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBR29CQSxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxZQUFZO2VBQVpBLHFCQUFZOztJQUNaQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFDZkMsZUFBZTtlQUFmQSxlQUFlOztJQUNmQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFDaEJDLGdCQUFnQjtlQUFoQkEsZUFBZ0I7O0lBQ2hCQyxrQkFBa0I7ZUFBbEJBLGlCQUFrQjs7SUFDbEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsa0JBQWtCO2VBQWxCQSxtQkFBa0I7O0lBQ2xCQyxtQkFBbUI7ZUFBbkJBLG1CQUFtQjs7OzhEQVZGO2lFQUNHOzBEQUNFOzJEQUNDOzJEQUNBOzREQUNDOzJEQUNBOzZEQUNFOzZEQUNBOytEQUNBOytEQUNDIn0=
package/lib/main.js CHANGED
@@ -25,7 +25,7 @@ _export(exports, {
25
25
  return _delete.default;
26
26
  },
27
27
  transformContent: function() {
28
- return _transform.default;
28
+ return _content.default;
29
29
  },
30
30
  operationsToJSON: function() {
31
31
  return _toJSON.default;
@@ -36,8 +36,11 @@ _export(exports, {
36
36
  generateOperations: function() {
37
37
  return _generate.default;
38
38
  },
39
+ transformSelection: function() {
40
+ return _selection1.default;
41
+ },
39
42
  transformOperations: function() {
40
- return _transform1.default;
43
+ return _operations.default;
41
44
  }
42
45
  });
43
46
  var _types = /*#__PURE__*/ _interopRequireDefault(require("./types"));
@@ -45,15 +48,16 @@ var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
45
48
  var _empty = /*#__PURE__*/ _interopRequireDefault(require("./operation/empty"));
46
49
  var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
47
50
  var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
48
- var _transform = /*#__PURE__*/ _interopRequireDefault(require("./content/transform"));
51
+ var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
49
52
  var _toJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/toJSON"));
50
53
  var _fromJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/fromJSON"));
51
54
  var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
52
- var _transform1 = /*#__PURE__*/ _interopRequireDefault(require("./operations/transform"));
55
+ var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
56
+ var _operations = /*#__PURE__*/ _interopRequireDefault(require("./transform/operations"));
53
57
  function _interopRequireDefault(obj) {
54
58
  return obj && obj.__esModule ? obj : {
55
59
  default: obj
56
60
  };
57
61
  }
58
62
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHR5cGVzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRW1wdHlPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZW1wdHlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW5zZXJ0T3BlcmF0aW9uIH0gZnJvbSBcIi4vb3BlcmF0aW9uL2luc2VydFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEZWxldGVPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybUNvbnRlbnQgfSBmcm9tIFwiLi9jb250ZW50L3RyYW5zZm9ybVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvcGVyYXRpb25zVG9KU09OIH0gZnJvbSBcIi4vb3BlcmF0aW9ucy90b0pTT05cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3BlcmF0aW9uc0Zyb21KU09OIH0gZnJvbSBcIi4vb3BlcmF0aW9ucy9mcm9tSlNPTlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZW5lcmF0ZU9wZXJhdGlvbnMgfSBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybU9wZXJhdGlvbnMgfSBmcm9tIFwiLi9vcGVyYXRpb25zL3RyYW5zZm9ybVwiO1xuIl0sIm5hbWVzIjpbInR5cGVzIiwiU2VsZWN0aW9uIiwiRW1wdHlPcGVyYXRpb24iLCJJbnNlcnRPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJ0cmFuc2Zvcm1Db250ZW50Iiwib3BlcmF0aW9uc1RvSlNPTiIsIm9wZXJhdGlvbnNGcm9tSlNPTiIsImdlbmVyYXRlT3BlcmF0aW9ucyIsInRyYW5zZm9ybU9wZXJhdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsS0FBSztlQUFMQSxjQUFLOztJQUNMQyxTQUFTO2VBQVRBLGtCQUFTOztJQUVUQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFDZkMsZUFBZTtlQUFmQSxlQUFlOztJQUNmQyxnQkFBZ0I7ZUFBaEJBLGtCQUFnQjs7SUFDaEJDLGdCQUFnQjtlQUFoQkEsZUFBZ0I7O0lBQ2hCQyxrQkFBa0I7ZUFBbEJBLGlCQUFrQjs7SUFDbEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsbUJBQW1CO2VBQW5CQSxtQkFBbUI7OzswREFWTjs4REFDSTswREFFSzsyREFDQzsyREFDQTs4REFDQzsyREFDQTs2REFDRTs2REFDQTsrREFDQyJ9
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHR5cGVzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VsZWN0aW9uIH0gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRW1wdHlPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZW1wdHlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW5zZXJ0T3BlcmF0aW9uIH0gZnJvbSBcIi4vb3BlcmF0aW9uL2luc2VydFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEZWxldGVPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybUNvbnRlbnQgfSBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvcGVyYXRpb25zVG9KU09OIH0gZnJvbSBcIi4vb3BlcmF0aW9ucy90b0pTT05cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3BlcmF0aW9uc0Zyb21KU09OIH0gZnJvbSBcIi4vb3BlcmF0aW9ucy9mcm9tSlNPTlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZW5lcmF0ZU9wZXJhdGlvbnMgfSBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybVNlbGVjdGlvbiB9IGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtT3BlcmF0aW9ucyB9IGZyb20gXCIuL3RyYW5zZm9ybS9vcGVyYXRpb25zXCI7XG4iXSwibmFtZXMiOlsidHlwZXMiLCJTZWxlY3Rpb24iLCJFbXB0eU9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsInRyYW5zZm9ybUNvbnRlbnQiLCJvcGVyYXRpb25zVG9KU09OIiwib3BlcmF0aW9uc0Zyb21KU09OIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwidHJhbnNmb3JtT3BlcmF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxLQUFLO2VBQUxBLGNBQUs7O0lBQ0xDLFNBQVM7ZUFBVEEsa0JBQVM7O0lBRVRDLGNBQWM7ZUFBZEEsY0FBYzs7SUFDZEMsZUFBZTtlQUFmQSxlQUFlOztJQUNmQyxlQUFlO2VBQWZBLGVBQWU7O0lBQ2ZDLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQUNoQkMsZ0JBQWdCO2VBQWhCQSxlQUFnQjs7SUFDaEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsa0JBQWtCO2VBQWxCQSxpQkFBa0I7O0lBQ2xCQyxrQkFBa0I7ZUFBbEJBLG1CQUFrQjs7SUFDbEJDLG1CQUFtQjtlQUFuQkEsbUJBQW1COzs7MERBWE47OERBQ0k7MERBRUs7MkRBQ0M7MkRBQ0E7NERBQ0M7MkRBQ0E7NkRBQ0U7NkRBQ0E7K0RBQ0E7K0RBQ0MifQ==
@@ -13,6 +13,8 @@ var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
13
13
  var _undoBuffer = /*#__PURE__*/ _interopRequireDefault(require("./undoBuffer"));
14
14
  var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
15
15
  var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
16
+ var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
17
+ var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
16
18
  var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
17
19
  var _keyCodes = require("./keyCodes");
18
20
  var _constants = require("./constants");
@@ -468,6 +470,21 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
468
470
  this.setSelection(selection, setPreviousSelection);
469
471
  }
470
472
  },
473
+ {
474
+ key: "transform",
475
+ value: function transform(transformedPendingOperations) {
476
+ var content = this.getContent(), selection = this.getSelection();
477
+ var operations = transformedPendingOperations, transformedContent = (0, _content.default)(content, operations), transformedSelection = (0, _selection1.default)(selection, operations);
478
+ content = transformedContent; ///
479
+ selection = transformedSelection; ///
480
+ var setPreviousContent = false, setPreviousSelection = false;
481
+ this.setContent(content, setPreviousContent);
482
+ this.setSelection(selection, setPreviousSelection);
483
+ this.undoBuffer.transform(transformedPendingOperations);
484
+ var event = null, element = this, undoable = false, eventType = CHANGE_EVENT_TYPE;
485
+ this.intermediateHandler(event, element, undoable, eventType);
486
+ }
487
+ },
471
488
  {
472
489
  key: "activate",
473
490
  value: function activate() {
@@ -643,4 +660,4 @@ function defer(func) {
643
660
  setTimeout(func, 0);
644
661
  }
645
662
 
646
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgZ2VuZXJhdGVPcGVyYXRpb25zIGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcclxuXHJcbmltcG9ydCB7IFpfS0VZX0NPREUgfSBmcm9tIFwiLi9rZXlDb2Rlc1wiO1xyXG5pbXBvcnQgeyBURVhULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IHsgQ1VUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgQ09QWV9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBLRVlET1dOX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICBTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJpY2hUZXh0YXJlYSBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHNlbGVjdG9yLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgc3VwZXIoc2VsZWN0b3IpO1xyXG5cclxuICAgIHRoaXMuZm9jdXNlZCA9IGZvY3VzZWQ7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgICB0aGlzLnVuZG9CdWZmZXIgPSB1bmRvQnVmZmVyO1xyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBpc0ZvY3VzZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkT25seSgpIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRPbmx5O1xyXG4gIH1cclxuXHJcbiAgZ2V0VW5kb0J1ZmZlcigpIHtcclxuICAgIHJldHVybiB0aGlzLnVuZG9CdWZmZXI7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c0NvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2b3VzQ29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRGb2N1c2VkKGZvY3VzZWQpIHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRSZWFkT25seShyZWFkT25seSkge1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdW5kb2FibGUgPSB0cnVlLCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSwgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpKSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5wcmV2aW91c0NvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSB0aGlzLmhhc0NvbnRlbnRDaGFuZ2VkKCksXHJcbiAgICAgICAgICBjaGFuZ2VkID0gKGNvbnRlbnRDaGFuZ2VkIHx8IHNlbGVjdGlvbkNoYW5nZWQpO1xyXG5cclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1bmRvYWJsZSkge1xyXG4gICAgICBpZiAoY29udGVudENoYW5nZWQpIHtcclxuICAgICAgICBjb25zdCBvcGVyYXRpb25zID0gZ2VuZXJhdGVPcGVyYXRpb25zKHRoaXMucHJldmlvdXNDb250ZW50LCBjb250ZW50KTtcclxuXHJcbiAgICAgICAgdGhpcy51bmRvQnVmZmVyLmFkZE9wZXJhdGlvbnMob3BlcmF0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2VIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250ZXh0bWVudUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcclxuXHJcbiAgICBpZiAoa2V5Q29kZSA9PT0gWl9LRVlfQ09ERSkge1xyXG4gICAgICBjb25zdCB7IGN0cmxLZXksIG1ldGFLZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgaWYgKGN0cmxLZXkgfHwgbWV0YUtleSkge1xyXG4gICAgICAgIGNvbnN0IHsgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgICBzaGlmdEtleSA/XHJcbiAgICAgICAgICB0aGlzLnJlZG8oZXZlbnQsIGVsZW1lbnQpIDpcclxuICAgICAgICAgICAgdGhpcy51bmRvKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGZvY3VzSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBibHVySGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdW5kb2FibGUgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHBhc3RlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjbGlwYm9hcmREYXRhIH0gPSBldmVudCxcclxuICAgICAgICAgIHRleHREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFRFWFQpO1xyXG5cclxuICAgIGlmICh0ZXh0RGF0YSA9PT0gRU1QVFlfU1RSSU5HKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmICghc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0ZXh0RGF0YSwgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGluc2VydE9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBjb3B5SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIHVuZG8oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMudW5kb0J1ZmZlci51bmRvKCk7XHJcblxyXG4gICAgaWYgKG9wZXJhdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIucmVkbygpO1xyXG5cclxuICAgIGlmIChvcGVyYXRpb24gIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgdW5kb2FibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgY29udGVudFByZXZpb3VzQ29udGVudCA9IChjb250ZW50ID09PSB0aGlzLnByZXZpb3VzQ29udGVudCksXHJcbiAgICAgICAgICBjb250ZW50Q2hhbmdlZCA9ICFjb250ZW50UHJldmlvdXNDb250ZW50O1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24uaXNFcXVhbFRvKHRoaXMucHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9ICFzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbkNoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCA9IHRydWUpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHNldFByZXZpb3VzQ29udGVudCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHNldFByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIGRvbUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XHJcblxyXG4gICAgaWYgKHNldFByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IG9wZXJhdGlvbi50cmFuc2Zvcm1Db250ZW50KGNvbnRlbnQpLFxyXG4gICAgICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBvcGVyYXRpb24udHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbik7XHJcblxyXG4gICAgY29udGVudCA9IHRyYW5zZm9ybWVkQ29udGVudDsgLy8vXHJcblxyXG4gICAgc2VsZWN0aW9uID0gdHJhbnNmb3JtZWRTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIGNvbnN0IHNldFByZXZpb3VzQ29udGVudCA9IGZhbHNlLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHNldFByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vbihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihCTFVSX0VWRU5UX1RZUEUsIHRoaXMuYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZCbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZvY3VzKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgaGFuZGxlckVsZW1lbnQgPSBlbGVtZW50OyAvLy9cclxuXHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIGlmICgoaGFuZGxlciAhPT0gdGhpcy5ibHVySGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuZm9jdXNIYW5kbGVyKSAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKSkge1xyXG4gICAgICAgIGhhbmRsZXIuY2FsbChoYW5kbGVyRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oUEFTVEVfRVZFTlRfVFlQRSwgdGhpcy5wYXN0ZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvblNjcm9sbCwgb25Gb2N1cywgb25CbHVyIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2UsIC8vL1xyXG4gICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsLCAvLy9cclxuICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXI7IC8vL1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25CbHVyXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBmb2N1c2VkID0gZmFsc2UsXHJcbiAgICAgICAgICByZWFkT25seSA9IGZhbHNlLFxyXG4gICAgICAgICAgdW5kb0J1ZmZlciA9IFVuZG9CdWZmZXIuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IG51bGwsXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IG51bGwsXHJcbiAgICAgICAgICByaWNoVGV4dGFyZWEgPSBFbGVtZW50LmZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24sIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XHJcblxyXG4gICAgcmV0dXJuIHJpY2hUZXh0YXJlYTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJDVVRfRVZFTlRfVFlQRSIsImV2ZW50VHlwZXMiLCJDT1BZX0VWRU5UX1RZUEUiLCJCTFVSX0VWRU5UX1RZUEUiLCJQQVNURV9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJDSEFOR0VfRVZFTlRfVFlQRSIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsIlNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFIiwic2VsZWN0b3IiLCJmb2N1c2VkIiwicmVhZE9ubHkiLCJ1bmRvQnVmZmVyIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJjaGFuZ2VkIiwiY2FsbEhhbmRsZXJzIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJaX0tFWV9DT0RFIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsInJlZG8iLCJ1bmRvIiwiZGVmZXIiLCJzY3JvbGxIYW5kbGVyIiwiZm9jdXNIYW5kbGVyIiwiYmx1ckhhbmRsZXIiLCJpbnB1dEhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJjbGlwYm9hcmREYXRhIiwidGV4dERhdGEiLCJnZXREYXRhIiwiVEVYVCIsIkVNUFRZX1NUUklORyIsInNlbGVjdGlvbkVtcHR5IiwiaXNFbXB0eSIsImRlbGV0ZU9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsImZyb21Db250ZW50QW5kU2VsZWN0aW9uIiwib3BlcmF0aW9uIiwiYXBwbHlPcGVyYXRpb24iLCJpbnNlcnRPcGVyYXRpb24iLCJJbnNlcnRPcGVyYXRpb24iLCJjb3B5SGFuZGxlciIsInNlbGVjdGVkQ29udGVudCIsImdldFNlbGVjdGVkQ29udGVudCIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsImN1dEhhbmRsZXIiLCJpc0ZvY3VzZWQiLCJpc1JlYWRPbmx5IiwiZ2V0VW5kb0J1ZmZlciIsImdldFByZXZpb3VzQ29udGVudCIsInByZXZvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZXRGb2N1c2VkIiwic2V0UmVhZE9ubHkiLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsImlzQWN0aXZlIiwiYWN0aXZlIiwiaGFzQ2xhc3MiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNsaWNlIiwiY29udGVudFByZXZpb3VzQ29udGVudCIsInNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uIiwiaXNFcXVhbFRvIiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybUNvbnRlbnQiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsImFjdGl2YXRlIiwib24iLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsIm9uQmx1ciIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkZvY3VzIiwib2ZmRm9jdXMiLCJvblNjcm9sbCIsIm9mZlNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIm9mZkNoYW5nZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJkb2N1bWVudCIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUF5QnFCQTs7O29CQXZCeUI7OERBRXhCOytEQUNDOzJEQUNLOzJEQUNBOzZEQUNHO3dCQUVKO3lCQUNROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
663
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgVEVYVCwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5jb25zdCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgUEFTVEVfRVZFTlRfVFlQRSxcclxuICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSA9IGV2ZW50VHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGtleUNvZGUgPT09IFpfS0VZX0NPREUpIHtcclxuICAgICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgc2hpZnRLZXkgP1xyXG4gICAgICAgICAgdGhpcy5yZWRvKGV2ZW50LCBlbGVtZW50KSA6XHJcbiAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY29weUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGN1dEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbXB0eSA9IHNlbGVjdGlvbi5pc0VtcHR5KCk7XHJcblxyXG4gICAgaWYgKHNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZENvbnRlbnQgPSB0aGlzLmdldFNlbGVjdGVkQ29udGVudCgpO1xyXG5cclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHNlbGVjdGVkQ29udGVudCk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWxldGVPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIudW5kbygpO1xyXG5cclxuICAgIGlmIChvcGVyYXRpb24gIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgdW5kb2FibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVkbyhldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnJlZG8oKTtcclxuXHJcbiAgICBpZiAob3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gdGhpcy5wcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyh0aGlzLnByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbnRlbnQgPSBvcGVyYXRpb24udHJhbnNmb3JtQ29udGVudChjb250ZW50KSxcclxuICAgICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gb3BlcmF0aW9uLnRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24pO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0odHJhbnNmb3JtZWRQZW5kaW5nT3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSB0cmFuc2Zvcm1lZFBlbmRpbmdPcGVyYXRpb25zLCAgLy8vXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZENvbnRlbnQgPSB0cmFuc2Zvcm1Db250ZW50KGNvbnRlbnQsIG9wZXJhdGlvbnMpLFxyXG4gICAgICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uLCBvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG5cclxuICAgIHRoaXMudW5kb0J1ZmZlci50cmFuc2Zvcm0odHJhbnNmb3JtZWRQZW5kaW5nT3BlcmF0aW9ucyk7XHJcblxyXG4gICAgY29uc3QgZXZlbnQgPSBudWxsLFxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMsXHJcbiAgICAgICAgICB1bmRvYWJsZSA9IGZhbHNlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vbihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihCTFVSX0VWRU5UX1RZUEUsIHRoaXMuYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZCbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZvY3VzKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgaGFuZGxlckVsZW1lbnQgPSBlbGVtZW50OyAvLy9cclxuXHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIGlmICgoaGFuZGxlciAhPT0gdGhpcy5ibHVySGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuZm9jdXNIYW5kbGVyKSAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKSkge1xyXG4gICAgICAgIGhhbmRsZXIuY2FsbChoYW5kbGVyRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oUEFTVEVfRVZFTlRfVFlQRSwgdGhpcy5wYXN0ZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQ2hhbmdlLCBvblNjcm9sbCwgb25Gb2N1cywgb25CbHVyIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2UsIC8vL1xyXG4gICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsLCAvLy9cclxuICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXI7IC8vL1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25CbHVyXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBmb2N1c2VkID0gZmFsc2UsXHJcbiAgICAgICAgICByZWFkT25seSA9IGZhbHNlLFxyXG4gICAgICAgICAgdW5kb0J1ZmZlciA9IFVuZG9CdWZmZXIuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IG51bGwsXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IG51bGwsXHJcbiAgICAgICAgICByaWNoVGV4dGFyZWEgPSBFbGVtZW50LmZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24sIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XHJcblxyXG4gICAgcmV0dXJuIHJpY2hUZXh0YXJlYTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJDVVRfRVZFTlRfVFlQRSIsImV2ZW50VHlwZXMiLCJDT1BZX0VWRU5UX1RZUEUiLCJCTFVSX0VWRU5UX1RZUEUiLCJQQVNURV9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJDSEFOR0VfRVZFTlRfVFlQRSIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsIlNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFIiwic2VsZWN0b3IiLCJmb2N1c2VkIiwicmVhZE9ubHkiLCJ1bmRvQnVmZmVyIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJjaGFuZ2VkIiwiY2FsbEhhbmRsZXJzIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJaX0tFWV9DT0RFIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsInJlZG8iLCJ1bmRvIiwiZGVmZXIiLCJzY3JvbGxIYW5kbGVyIiwiZm9jdXNIYW5kbGVyIiwiYmx1ckhhbmRsZXIiLCJpbnB1dEhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJjbGlwYm9hcmREYXRhIiwidGV4dERhdGEiLCJnZXREYXRhIiwiVEVYVCIsIkVNUFRZX1NUUklORyIsInNlbGVjdGlvbkVtcHR5IiwiaXNFbXB0eSIsImRlbGV0ZU9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsImZyb21Db250ZW50QW5kU2VsZWN0aW9uIiwib3BlcmF0aW9uIiwiYXBwbHlPcGVyYXRpb24iLCJpbnNlcnRPcGVyYXRpb24iLCJJbnNlcnRPcGVyYXRpb24iLCJjb3B5SGFuZGxlciIsInNlbGVjdGVkQ29udGVudCIsImdldFNlbGVjdGVkQ29udGVudCIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsImN1dEhhbmRsZXIiLCJpc0ZvY3VzZWQiLCJpc1JlYWRPbmx5IiwiZ2V0VW5kb0J1ZmZlciIsImdldFByZXZpb3VzQ29udGVudCIsInByZXZvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZXRGb2N1c2VkIiwic2V0UmVhZE9ubHkiLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsImlzQWN0aXZlIiwiYWN0aXZlIiwiaGFzQ2xhc3MiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNsaWNlIiwiY29udGVudFByZXZpb3VzQ29udGVudCIsInNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uIiwiaXNFcXVhbFRvIiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybUNvbnRlbnQiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInRyYW5zZm9ybSIsInRyYW5zZm9ybWVkUGVuZGluZ09wZXJhdGlvbnMiLCJhY3RpdmF0ZSIsIm9uIiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJvbkJsdXIiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9mZkJsdXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25Gb2N1cyIsIm9mZkZvY3VzIiwib25TY3JvbGwiLCJvZmZTY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvZmZDaGFuZ2UiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlckVsZW1lbnQiLCJjYWxsIiwiZGlkTW91bnQiLCJwcm9wZXJ0aWVzIiwiZG9jdW1lbnQiLCJ3aWxsVW5tb3VudCIsImZyb21DbGFzcyIsIkNsYXNzIiwiRWxlbWVudCIsIlVuZG9CdWZmZXIiLCJmcm9tTm90aGluZyIsInJpY2hUZXh0YXJlYSIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwiZnVuYyIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBMkJxQkE7OztvQkF6QnlCOzhEQUV4QjsrREFD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
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return transformContent;
9
+ }
10
+ });
11
+ function transformContent(content, operations) {
12
+ operations.forEach(function(operation) {
13
+ var transformedContent = operation.transformContent(content);
14
+ content = transformedContent; ///
15
+ });
16
+ return content;
17
+ }
18
+
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm0vY29udGVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucykge1xyXG4gIG9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbnRlbnQgPSBvcGVyYXRpb24udHJhbnNmb3JtQ29udGVudChjb250ZW50KTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuICB9KVxyXG5cclxuICByZXR1cm4gY29udGVudDtcclxufVxyXG4iXSwibmFtZXMiOlsidHJhbnNmb3JtQ29udGVudCIsImNvbnRlbnQiLCJvcGVyYXRpb25zIiwiZm9yRWFjaCIsIm9wZXJhdGlvbiIsInRyYW5zZm9ybWVkQ29udGVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBRUE7OztlQUF3QkE7OztBQUFULFNBQVNBLGlCQUFpQkMsT0FBTyxFQUFFQyxVQUFVLEVBQUU7SUFDNURBLFdBQVdDLE9BQU8sQ0FBQyxTQUFDQyxXQUFjO1FBQ2hDLElBQU1DLHFCQUFxQkQsVUFBVUosZ0JBQWdCLENBQUNDO1FBRXREQSxVQUFVSSxvQkFBb0IsR0FBRztJQUNuQztJQUVBLE9BQU9KO0FBQ1QifQ==
@@ -28,4 +28,4 @@ function transformOperations(tau, rho) {
28
28
  }
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb25zL3RyYW5zZm9ybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xyXG5cclxuY29uc3QgeyBmaXJzdCwgaGVhZCwgdGFpbCB9ID0gYXJyYXlVdGlsaXRpZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2Zvcm1PcGVyYXRpb25zKHRhdSwgcmhvKSB7XHJcbiAgaWYgKCh0YXUubGVuZ3RoID09PSAwKSB8fCAocmhvLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgIHJldHVybiB0YXU7XHJcbiAgfVxyXG5cclxuICBjb25zdCB0YXUxID0gaGVhZCh0YXUpLFxyXG4gICAgICAgIHRhdTIgPSB0YWlsKHRhdSksXHJcbiAgICAgICAgcmhvMSA9IGhlYWQocmhvKSxcclxuICAgICAgICByaG8yID0gdGFpbChyaG8pO1xyXG5cclxuICBpZiAodGF1Lmxlbmd0aCA+IDEgJiYgcmhvLmxlbmd0aCA+IDEpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUxLCByaG8xKSxcclxuICAgICAgICByaG8yXHJcbiAgICAgICkuY29uY2F0KFxyXG4gICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKFxyXG4gICAgICAgICAgICB0YXUyLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKHJobzEsIHRhdTEpXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyhcclxuICAgICAgICAgICAgcmhvMixcclxuICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUxLCByaG8xKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKCh0YXUubGVuZ3RoID4gMSkgJiYgKHJoby5sZW5ndGggPT09IDEpKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKHRhdTEsIHJobykuY29uY2F0KFxyXG4gICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgICB0YXUyLFxyXG4gICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyhyaG8sIHRhdTEpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAoKHRhdS5sZW5ndGggPT09IDEpICYmIChyaG8ubGVuZ3RoID4gMSkpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUsIHJobzEpLFxyXG4gICAgICAgIHJobzJcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGF1ID0gZmlyc3QodGF1KTsgLy8vXHJcbiAgICByaG8gPSBmaXJzdChyaG8pOyAvLy9cclxuXHJcbiAgICByZXR1cm4gcmhvLnRyYW5zZm9ybU9wZXJhdGlvbih0YXUpO1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOlsidHJhbnNmb3JtT3BlcmF0aW9ucyIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJoZWFkIiwidGFpbCIsInRhdSIsInJobyIsImxlbmd0aCIsInRhdTEiLCJ0YXUyIiwicmhvMSIsInJobzIiLCJjb25jYXQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBd0JBOzs7eUJBSk87QUFFL0IsSUFBUUMsUUFBc0JDLHlCQUFjLENBQXBDRCxPQUFPRSxPQUFlRCx5QkFBYyxDQUE3QkMsTUFBTUMsT0FBU0YseUJBQWMsQ0FBdkJFO0FBRU4sU0FBU0osb0JBQW9CSyxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUNwRCxJQUFJLEFBQUNELElBQUlFLE1BQU0sS0FBSyxLQUFPRCxJQUFJQyxNQUFNLEtBQUssR0FBSTtRQUM1QyxPQUFPRjtJQUNULENBQUM7SUFFRCxJQUFNRyxPQUFPTCxLQUFLRSxNQUNaSSxPQUFPTCxLQUFLQyxNQUNaSyxPQUFPUCxLQUFLRyxNQUNaSyxPQUFPUCxLQUFLRTtJQUVsQixJQUFJRCxJQUFJRSxNQUFNLEdBQUcsS0FBS0QsSUFBSUMsTUFBTSxHQUFHLEdBQUc7UUFDcEMsT0FDRVAsb0JBQ0VBLG9CQUFvQlEsTUFBTUUsT0FDMUJDLE1BQ0FDLE1BQU0sQ0FDTlosb0JBQ0VBLG9CQUNFUyxNQUNBVCxvQkFBb0JVLE1BQU1GLFFBRTVCUixvQkFDRVcsTUFDQVgsb0JBQW9CUSxNQUFNRTtJQUtwQyxPQUFPLElBQUksQUFBQ0wsSUFBSUUsTUFBTSxHQUFHLEtBQU9ELElBQUlDLE1BQU0sS0FBSyxHQUFJO1FBQ2pELE9BQ0VQLG9CQUFvQlEsTUFBTUYsS0FBS00sTUFBTSxDQUNuQ1osb0JBQ0VTLE1BQ0FULG9CQUFvQk0sS0FBS0U7SUFJakMsT0FBTyxJQUFJLEFBQUNILElBQUlFLE1BQU0sS0FBSyxLQUFPRCxJQUFJQyxNQUFNLEdBQUcsR0FBSTtRQUNqRCxPQUNFUCxvQkFDRUEsb0JBQW9CSyxLQUFLSyxPQUN6QkM7SUFHTixPQUFPO1FBQ0xOLE1BQU1KLE1BQU1JLE1BQU0sR0FBRztRQUNyQkMsTUFBTUwsTUFBTUssTUFBTSxHQUFHO1FBRXJCLE9BQU9BLElBQUlPLGtCQUFrQixDQUFDUjtJQUNoQyxDQUFDO0FBQ0gifQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm0vb3BlcmF0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xyXG5cclxuY29uc3QgeyBmaXJzdCwgaGVhZCwgdGFpbCB9ID0gYXJyYXlVdGlsaXRpZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2Zvcm1PcGVyYXRpb25zKHRhdSwgcmhvKSB7XHJcbiAgaWYgKCh0YXUubGVuZ3RoID09PSAwKSB8fCAocmhvLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgIHJldHVybiB0YXU7XHJcbiAgfVxyXG5cclxuICBjb25zdCB0YXUxID0gaGVhZCh0YXUpLFxyXG4gICAgICAgIHRhdTIgPSB0YWlsKHRhdSksXHJcbiAgICAgICAgcmhvMSA9IGhlYWQocmhvKSxcclxuICAgICAgICByaG8yID0gdGFpbChyaG8pO1xyXG5cclxuICBpZiAodGF1Lmxlbmd0aCA+IDEgJiYgcmhvLmxlbmd0aCA+IDEpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUxLCByaG8xKSxcclxuICAgICAgICByaG8yXHJcbiAgICAgICkuY29uY2F0KFxyXG4gICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKFxyXG4gICAgICAgICAgICB0YXUyLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKHJobzEsIHRhdTEpXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyhcclxuICAgICAgICAgICAgcmhvMixcclxuICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUxLCByaG8xKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKCh0YXUubGVuZ3RoID4gMSkgJiYgKHJoby5sZW5ndGggPT09IDEpKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zKHRhdTEsIHJobykuY29uY2F0KFxyXG4gICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgICB0YXUyLFxyXG4gICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyhyaG8sIHRhdTEpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH0gZWxzZSBpZiAoKHRhdS5sZW5ndGggPT09IDEpICYmIChyaG8ubGVuZ3RoID4gMSkpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMoXHJcbiAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucyh0YXUsIHJobzEpLFxyXG4gICAgICAgIHJobzJcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGF1ID0gZmlyc3QodGF1KTsgLy8vXHJcbiAgICByaG8gPSBmaXJzdChyaG8pOyAvLy9cclxuXHJcbiAgICByZXR1cm4gcmhvLnRyYW5zZm9ybU9wZXJhdGlvbih0YXUpO1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOlsidHJhbnNmb3JtT3BlcmF0aW9ucyIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJoZWFkIiwidGFpbCIsInRhdSIsInJobyIsImxlbmd0aCIsInRhdTEiLCJ0YXUyIiwicmhvMSIsInJobzIiLCJjb25jYXQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBd0JBOzs7eUJBSk87QUFFL0IsSUFBUUMsUUFBc0JDLHlCQUFjLENBQXBDRCxPQUFPRSxPQUFlRCx5QkFBYyxDQUE3QkMsTUFBTUMsT0FBU0YseUJBQWMsQ0FBdkJFO0FBRU4sU0FBU0osb0JBQW9CSyxHQUFHLEVBQUVDLEdBQUcsRUFBRTtJQUNwRCxJQUFJLEFBQUNELElBQUlFLE1BQU0sS0FBSyxLQUFPRCxJQUFJQyxNQUFNLEtBQUssR0FBSTtRQUM1QyxPQUFPRjtJQUNULENBQUM7SUFFRCxJQUFNRyxPQUFPTCxLQUFLRSxNQUNaSSxPQUFPTCxLQUFLQyxNQUNaSyxPQUFPUCxLQUFLRyxNQUNaSyxPQUFPUCxLQUFLRTtJQUVsQixJQUFJRCxJQUFJRSxNQUFNLEdBQUcsS0FBS0QsSUFBSUMsTUFBTSxHQUFHLEdBQUc7UUFDcEMsT0FDRVAsb0JBQ0VBLG9CQUFvQlEsTUFBTUUsT0FDMUJDLE1BQ0FDLE1BQU0sQ0FDTlosb0JBQ0VBLG9CQUNFUyxNQUNBVCxvQkFBb0JVLE1BQU1GLFFBRTVCUixvQkFDRVcsTUFDQVgsb0JBQW9CUSxNQUFNRTtJQUtwQyxPQUFPLElBQUksQUFBQ0wsSUFBSUUsTUFBTSxHQUFHLEtBQU9ELElBQUlDLE1BQU0sS0FBSyxHQUFJO1FBQ2pELE9BQ0VQLG9CQUFvQlEsTUFBTUYsS0FBS00sTUFBTSxDQUNuQ1osb0JBQ0VTLE1BQ0FULG9CQUFvQk0sS0FBS0U7SUFJakMsT0FBTyxJQUFJLEFBQUNILElBQUlFLE1BQU0sS0FBSyxLQUFPRCxJQUFJQyxNQUFNLEdBQUcsR0FBSTtRQUNqRCxPQUNFUCxvQkFDRUEsb0JBQW9CSyxLQUFLSyxPQUN6QkM7SUFHTixPQUFPO1FBQ0xOLE1BQU1KLE1BQU1JLE1BQU0sR0FBRztRQUNyQkMsTUFBTUwsTUFBTUssTUFBTSxHQUFHO1FBRXJCLE9BQU9BLElBQUlPLGtCQUFrQixDQUFDUjtJQUNoQyxDQUFDO0FBQ0gifQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return transformSelection;
9
+ }
10
+ });
11
+ function transformSelection(selection, operations) {
12
+ operations.forEach(function(operation) {
13
+ var transformedSelection = operation.transformSelection(selection);
14
+ selection = transformedSelection; ///
15
+ });
16
+ return selection;
17
+ }
18
+
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm0vc2VsZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3BlcmF0aW9ucykge1xyXG4gIG9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcbiAgfSlcclxuXHJcbiAgcmV0dXJuIHNlbGVjdGlvbjtcclxufVxyXG4iXSwibmFtZXMiOlsidHJhbnNmb3JtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwib3BlcmF0aW9ucyIsImZvckVhY2giLCJvcGVyYXRpb24iLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBRUE7OztlQUF3QkE7OztBQUFULFNBQVNBLG1CQUFtQkMsU0FBUyxFQUFFQyxVQUFVLEVBQUU7SUFDaEVBLFdBQVdDLE9BQU8sQ0FBQyxTQUFDQyxXQUFjO1FBQ2hDLElBQU1DLHVCQUF1QkQsVUFBVUosa0JBQWtCLENBQUNDO1FBRTFEQSxZQUFZSSxzQkFBc0IsR0FBRztJQUN2QztJQUVBLE9BQU9KO0FBQ1QifQ==
package/lib/undoBuffer.js CHANGED
@@ -9,8 +9,10 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _necessary = require("necessary");
12
+ var _empty = /*#__PURE__*/ _interopRequireDefault(require("./operation/empty"));
12
13
  var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
13
14
  var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
15
+ var _operations = /*#__PURE__*/ _interopRequireDefault(require("./transform/operations"));
14
16
  function _classCallCheck(instance, Constructor) {
15
17
  if (!(instance instanceof Constructor)) {
16
18
  throw new TypeError("Cannot call a class as a function");
@@ -30,6 +32,13 @@ function _createClass(Constructor, protoProps, staticProps) {
30
32
  if (staticProps) _defineProperties(Constructor, staticProps);
31
33
  return Constructor;
32
34
  }
35
+ function _instanceof(left, right) {
36
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
37
+ return !!right[Symbol.hasInstance](left);
38
+ } else {
39
+ return left instanceof right;
40
+ }
41
+ }
33
42
  function _interopRequireDefault(obj) {
34
43
  return obj && obj.__esModule ? obj : {
35
44
  default: obj
@@ -80,6 +89,13 @@ var UndoBuffer = /*#__PURE__*/ function() {
80
89
  return operation;
81
90
  }
82
91
  },
92
+ {
93
+ key: "transform",
94
+ value: function transform(operations) {
95
+ this.operations = (0, _operations.default)(this.operations, operations);
96
+ this.filterEmptyOperations();
97
+ }
98
+ },
83
99
  {
84
100
  key: "addOperations",
85
101
  value: function addOperations(operations) {
@@ -89,6 +105,25 @@ var UndoBuffer = /*#__PURE__*/ function() {
89
105
  var operationsLength = this.operations.length;
90
106
  this.position = operationsLength; ///
91
107
  }
108
+ },
109
+ {
110
+ key: "filterEmptyOperations",
111
+ value: function filterEmptyOperations() {
112
+ var length = this.operations.length, position = 0;
113
+ while(position < length){
114
+ var operation = this.operations[position];
115
+ if (_instanceof(operation, _empty.default)) {
116
+ var start = position, deleteCount = 1;
117
+ this.operations.splice(start, deleteCount);
118
+ if (this.position > position) {
119
+ this.position--;
120
+ }
121
+ } else {
122
+ position++;
123
+ }
124
+ length = this.operations.length;
125
+ }
126
+ }
92
127
  }
93
128
  ], [
94
129
  {
@@ -102,4 +137,4 @@ var UndoBuffer = /*#__PURE__*/ function() {
102
137
  return UndoBuffer;
103
138
  }();
104
139
 
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91bmRvQnVmZmVyLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XG5pbXBvcnQgRGVsZXRlT3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9kZWxldGVcIjtcblxuY29uc3QgeyBwdXNoIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVW5kb0J1ZmZlciB7XG4gIGNvbnN0cnVjdG9yKHBvc2l0aW9uLCBvcGVyYXRpb25zKSB7XG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG9wZXJhdGlvbnM7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucztcbiAgfVxuXG4gIHVuZG8oKSB7XG4gICAgbGV0IG9wZXJhdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvbiA+IDApIHtcbiAgICAgIHRoaXMucG9zaXRpb24tLTtcblxuICAgICAgb3BlcmF0aW9uID0gdGhpcy5vcGVyYXRpb25zW3RoaXMucG9zaXRpb25dO1xuXG4gICAgICBjb25zdCBpbnZlcnRlZE9wZXJhdGlvbiA9IG9wZXJhdGlvbi5pbnZlcnQoSW5zZXJ0T3BlcmF0aW9uLCBEZWxldGVPcGVyYXRpb24pO1xuXG4gICAgICBvcGVyYXRpb24gPSBpbnZlcnRlZE9wZXJhdGlvbjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBvcGVyYXRpb247XG4gIH1cblxuICByZWRvKCkge1xuICAgIGxldCBvcGVyYXRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9uc0xlbmd0aCA9IHRoaXMub3BlcmF0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvbiA8IG9wZXJhdGlvbnNMZW5ndGgpIHtcbiAgICAgIG9wZXJhdGlvbiA9IHRoaXMub3BlcmF0aW9uc1t0aGlzLnBvc2l0aW9uXTtcblxuICAgICAgdGhpcy5wb3NpdGlvbisrO1xuICAgIH1cblxuICAgIHJldHVybiBvcGVyYXRpb247XG4gIH1cblxuICBhZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zaXRpb247ICAvLy9cblxuICAgIHRoaXMub3BlcmF0aW9ucy5zcGxpY2Uoc3RhcnQpO1xuXG4gICAgcHVzaCh0aGlzLm9wZXJhdGlvbnMsIG9wZXJhdGlvbnMpO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9uc0xlbmd0aCA9IHRoaXMub3BlcmF0aW9ucy5sZW5ndGg7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gb3BlcmF0aW9uc0xlbmd0aDsgLy8vXG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSAwLFxuICAgICAgICAgIG9wZXJhdGlvbnMgPSBbXSxcbiAgICAgICAgICB1bmRvQnVmZmVyID0gbmV3IFVuZG9CdWZmZXIocG9zaXRpb24sIG9wZXJhdGlvbnMpO1xuXG4gICAgcmV0dXJuIHVuZG9CdWZmZXI7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiVW5kb0J1ZmZlciIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsInBvc2l0aW9uIiwib3BlcmF0aW9ucyIsImdldFBvc2l0aW9uIiwiZ2V0T3BlcmF0aW9ucyIsInVuZG8iLCJvcGVyYXRpb24iLCJpbnZlcnRlZE9wZXJhdGlvbiIsImludmVydCIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsInJlZG8iLCJvcGVyYXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwiYWRkT3BlcmF0aW9ucyIsInN0YXJ0Iiwic3BsaWNlIiwiZnJvbU5vdGhpbmciLCJ1bmRvQnVmZmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7Ozt5QkFQVTsyREFFSDsyREFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1QixJQUFNLEFBQUVDLE9BQVNDLHlCQUFjLENBQXZCRDtBQUVPLElBQUEsQUFBTUQsMkJBQU47YUFBTUEsV0FDUEcsUUFBUSxFQUFFQyxVQUFVOzhCQURiSjtRQUVqQixJQUFJLENBQUNHLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBOztpQkFIREo7O1lBTW5CSyxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztnQkFDWixPQUFPLElBQUksQ0FBQ0YsUUFBUTtZQUN0Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxnQkFBZ0I7Z0JBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7WUFDeEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBTztnQkFDTCxJQUFJQyxZQUFZLElBQUk7Z0JBRXBCLElBQUksSUFBSSxDQUFDTCxRQUFRLEdBQUcsR0FBRztvQkFDckIsSUFBSSxDQUFDQSxRQUFRO29CQUViSyxZQUFZLElBQUksQ0FBQ0osVUFBVSxDQUFDLElBQUksQ0FBQ0QsUUFBUSxDQUFDO29CQUUxQyxJQUFNTSxvQkFBb0JELFVBQVVFLE1BQU0sQ0FBQ0MsZUFBZSxFQUFFQyxlQUFlO29CQUUzRUosWUFBWUMsbUJBQW9CLEdBQUc7Z0JBQ3JDLENBQUM7Z0JBRUQsT0FBT0Q7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPO2dCQUNMLElBQUlMLFlBQVksSUFBSTtnQkFFcEIsSUFBTU0sbUJBQW1CLElBQUksQ0FBQ1YsVUFBVSxDQUFDVyxNQUFNO2dCQUUvQyxJQUFJLElBQUksQ0FBQ1osUUFBUSxHQUFHVyxrQkFBa0I7b0JBQ3BDTixZQUFZLElBQUksQ0FBQ0osVUFBVSxDQUFDLElBQUksQ0FBQ0QsUUFBUSxDQUFDO29CQUUxQyxJQUFJLENBQUNBLFFBQVE7Z0JBQ2YsQ0FBQztnQkFFRCxPQUFPSztZQUNUOzs7WUFFQVEsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWNaLFVBQVUsRUFBRTtnQkFDeEIsSUFBTWEsUUFBUSxJQUFJLENBQUNkLFFBQVEsRUFBRyxHQUFHO2dCQUVqQyxJQUFJLENBQUNDLFVBQVUsQ0FBQ2MsTUFBTSxDQUFDRDtnQkFFdkJoQixLQUFLLElBQUksQ0FBQ0csVUFBVSxFQUFFQTtnQkFFdEIsSUFBTVUsbUJBQW1CLElBQUksQ0FBQ1YsVUFBVSxDQUFDVyxNQUFNO2dCQUUvQyxJQUFJLENBQUNaLFFBQVEsR0FBR1csa0JBQWtCLEdBQUc7WUFDdkM7Ozs7WUFFT0ssS0FBQUE7bUJBQVAsU0FBT0EsY0FBYztnQkFDbkIsSUFBTWhCLFdBQVcsR0FDWEMsYUFBYSxFQUFFLEVBQ2ZnQixhQUFhLElBM0RGcEIsV0EyRGlCRyxVQUFVQztnQkFFNUMsT0FBT2dCO1lBQ1Q7OztXQTlEbUJwQiJ9
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91bmRvQnVmZmVyLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEVtcHR5T3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9lbXB0eVwiO1xuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XG5pbXBvcnQgRGVsZXRlT3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9kZWxldGVcIjtcbmltcG9ydCB0cmFuc2Zvcm1PcGVyYXRpb25zIGZyb20gXCIuL3RyYW5zZm9ybS9vcGVyYXRpb25zXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVuZG9CdWZmZXIge1xuICBjb25zdHJ1Y3Rvcihwb3NpdGlvbiwgb3BlcmF0aW9ucykge1xuICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBvcGVyYXRpb25zO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb247XG4gIH1cblxuICBnZXRPcGVyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnM7XG4gIH1cblxuICB1bmRvKCkge1xuICAgIGxldCBvcGVyYXRpb24gPSBudWxsO1xuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPiAwKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLS07XG5cbiAgICAgIG9wZXJhdGlvbiA9IHRoaXMub3BlcmF0aW9uc1t0aGlzLnBvc2l0aW9uXTtcblxuICAgICAgY29uc3QgaW52ZXJ0ZWRPcGVyYXRpb24gPSBvcGVyYXRpb24uaW52ZXJ0KEluc2VydE9wZXJhdGlvbiwgRGVsZXRlT3BlcmF0aW9uKTtcblxuICAgICAgb3BlcmF0aW9uID0gaW52ZXJ0ZWRPcGVyYXRpb247ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uO1xuICB9XG5cbiAgcmVkbygpIHtcbiAgICBsZXQgb3BlcmF0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IG9wZXJhdGlvbnNMZW5ndGggPSB0aGlzLm9wZXJhdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPCBvcGVyYXRpb25zTGVuZ3RoKSB7XG4gICAgICBvcGVyYXRpb24gPSB0aGlzLm9wZXJhdGlvbnNbdGhpcy5wb3NpdGlvbl07XG5cbiAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICB9XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uO1xuICB9XG5cbiAgdHJhbnNmb3JtKG9wZXJhdGlvbnMpIHtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSB0cmFuc2Zvcm1PcGVyYXRpb25zKHRoaXMub3BlcmF0aW9ucywgb3BlcmF0aW9ucyk7XG5cbiAgICB0aGlzLmZpbHRlckVtcHR5T3BlcmF0aW9ucygpO1xuICB9XG5cbiAgYWRkT3BlcmF0aW9ucyhvcGVyYXRpb25zKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvc2l0aW9uOyAgLy8vXG5cbiAgICB0aGlzLm9wZXJhdGlvbnMuc3BsaWNlKHN0YXJ0KTtcblxuICAgIHB1c2godGhpcy5vcGVyYXRpb25zLCBvcGVyYXRpb25zKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbnNMZW5ndGggPSB0aGlzLm9wZXJhdGlvbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IG9wZXJhdGlvbnNMZW5ndGg7IC8vL1xuICB9XG5cbiAgZmlsdGVyRW1wdHlPcGVyYXRpb25zKCkge1xuICAgIGxldCBsZW5ndGggPSB0aGlzLm9wZXJhdGlvbnMubGVuZ3RoLFxuICAgICAgICAgIHBvc2l0aW9uID0gMDtcblxuICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5vcGVyYXRpb25zW3Bvc2l0aW9uXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiBpbnN0YW5jZW9mIEVtcHR5T3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcG9zaXRpb24sIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICAgICAgdGhpcy5vcGVyYXRpb25zLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID4gcG9zaXRpb24pIHtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uLS07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvc2l0aW9uKys7XG4gICAgICB9XG5cbiAgICAgIGxlbmd0aCA9IHRoaXMub3BlcmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gMCxcbiAgICAgICAgICBvcGVyYXRpb25zID0gW10sXG4gICAgICAgICAgdW5kb0J1ZmZlciA9IG5ldyBVbmRvQnVmZmVyKHBvc2l0aW9uLCBvcGVyYXRpb25zKTtcblxuICAgIHJldHVybiB1bmRvQnVmZmVyO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlVuZG9CdWZmZXIiLCJwdXNoIiwiYXJyYXlVdGlsaXRpZXMiLCJwb3NpdGlvbiIsIm9wZXJhdGlvbnMiLCJnZXRQb3NpdGlvbiIsImdldE9wZXJhdGlvbnMiLCJ1bmRvIiwib3BlcmF0aW9uIiwiaW52ZXJ0ZWRPcGVyYXRpb24iLCJpbnZlcnQiLCJJbnNlcnRPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJyZWRvIiwib3BlcmF0aW9uc0xlbmd0aCIsImxlbmd0aCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9wZXJhdGlvbnMiLCJmaWx0ZXJFbXB0eU9wZXJhdGlvbnMiLCJhZGRPcGVyYXRpb25zIiwic3RhcnQiLCJzcGxpY2UiLCJFbXB0eU9wZXJhdGlvbiIsImRlbGV0ZUNvdW50IiwiZnJvbU5vdGhpbmciLCJ1bmRvQnVmZmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVdxQkE7Ozt5QkFUVTswREFFSjsyREFDQzsyREFDQTsrREFDSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsSUFBTSxBQUFFQyxPQUFTQyx5QkFBYyxDQUF2QkQ7QUFFTyxJQUFBLEFBQU1ELDJCQUFOO2FBQU1BLFdBQ1BHLFFBQVEsRUFBRUMsVUFBVTs4QkFEYko7UUFFakIsSUFBSSxDQUFDRyxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTs7aUJBSERKOztZQU1uQkssS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWM7Z0JBQ1osT0FBTyxJQUFJLENBQUNGLFFBQVE7WUFDdEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCO2dCQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO1lBQ3hCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU87Z0JBQ0wsSUFBSUMsWUFBWSxJQUFJO2dCQUVwQixJQUFJLElBQUksQ0FBQ0wsUUFBUSxHQUFHLEdBQUc7b0JBQ3JCLElBQUksQ0FBQ0EsUUFBUTtvQkFFYkssWUFBWSxJQUFJLENBQUNKLFVBQVUsQ0FBQyxJQUFJLENBQUNELFFBQVEsQ0FBQztvQkFFMUMsSUFBTU0sb0JBQW9CRCxVQUFVRSxNQUFNLENBQUNDLGVBQWUsRUFBRUMsZUFBZTtvQkFFM0VKLFlBQVlDLG1CQUFvQixHQUFHO2dCQUNyQyxDQUFDO2dCQUVELE9BQU9EO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBTztnQkFDTCxJQUFJTCxZQUFZLElBQUk7Z0JBRXBCLElBQU1NLG1CQUFtQixJQUFJLENBQUNWLFVBQVUsQ0FBQ1csTUFBTTtnQkFFL0MsSUFBSSxJQUFJLENBQUNaLFFBQVEsR0FBR1csa0JBQWtCO29CQUNwQ04sWUFBWSxJQUFJLENBQUNKLFVBQVUsQ0FBQyxJQUFJLENBQUNELFFBQVEsQ0FBQztvQkFFMUMsSUFBSSxDQUFDQSxRQUFRO2dCQUNmLENBQUM7Z0JBRUQsT0FBT0s7WUFDVDs7O1lBRUFRLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVWixVQUFVLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQ0EsVUFBVSxHQUFHYSxJQUFBQSxtQkFBbUIsRUFBQyxJQUFJLENBQUNiLFVBQVUsRUFBRUE7Z0JBRXZELElBQUksQ0FBQ2MscUJBQXFCO1lBQzVCOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWNmLFVBQVUsRUFBRTtnQkFDeEIsSUFBTWdCLFFBQVEsSUFBSSxDQUFDakIsUUFBUSxFQUFHLEdBQUc7Z0JBRWpDLElBQUksQ0FBQ0MsVUFBVSxDQUFDaUIsTUFBTSxDQUFDRDtnQkFFdkJuQixLQUFLLElBQUksQ0FBQ0csVUFBVSxFQUFFQTtnQkFFdEIsSUFBTVUsbUJBQW1CLElBQUksQ0FBQ1YsVUFBVSxDQUFDVyxNQUFNO2dCQUUvQyxJQUFJLENBQUNaLFFBQVEsR0FBR1csa0JBQWtCLEdBQUc7WUFDdkM7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsd0JBQXdCO2dCQUN0QixJQUFJSCxTQUFTLElBQUksQ0FBQ1gsVUFBVSxDQUFDVyxNQUFNLEVBQzdCWixXQUFXO2dCQUVqQixNQUFPQSxXQUFXWSxPQUFRO29CQUN4QixJQUFNUCxZQUFZLElBQUksQ0FBQ0osVUFBVSxDQUFDRCxTQUFTO29CQUUzQyxJQUFJSyxBQUFTLFlBQVRBLFdBQXFCYyxjQUFjLEdBQUU7d0JBQ3ZDLElBQU1GLFFBQVFqQixVQUNSb0IsY0FBYzt3QkFFcEIsSUFBSSxDQUFDbkIsVUFBVSxDQUFDaUIsTUFBTSxDQUFDRCxPQUFPRzt3QkFFOUIsSUFBSSxJQUFJLENBQUNwQixRQUFRLEdBQUdBLFVBQVU7NEJBQzVCLElBQUksQ0FBQ0EsUUFBUTt3QkFDZixDQUFDO29CQUNILE9BQU87d0JBQ0xBO29CQUNGLENBQUM7b0JBRURZLFNBQVMsSUFBSSxDQUFDWCxVQUFVLENBQUNXLE1BQU07Z0JBQ2pDO1lBQ0Y7Ozs7WUFFT1MsS0FBQUE7bUJBQVAsU0FBT0EsY0FBYztnQkFDbkIsSUFBTXJCLFdBQVcsR0FDWEMsYUFBYSxFQUFFLEVBQ2ZxQixhQUFhLElBekZGekIsV0F5RmlCRyxVQUFVQztnQkFFNUMsT0FBT3FCO1lBQ1Q7OztXQTVGbUJ6QiJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "4.0.4",
4
+ "version": "4.0.5",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/easy-richtextarea",
7
7
  "description": "A textarea element that handles and hands off events well.",
package/src/browser.js CHANGED
@@ -6,9 +6,9 @@ export { default as RichTextarea } from "./richTextarea";
6
6
  export { default as EmptyOperation } from "./operation/empty";
7
7
  export { default as InsertOperation } from "./operation/insert";
8
8
  export { default as DeleteOperation } from "./operation/delete";
9
- export { default as transformContent } from "./content/transform";
9
+ export { default as transformContent } from "./transform/content";
10
10
  export { default as operationsToJSON } from "./operations/toJSON";
11
11
  export { default as operationsFromJSON } from "./operations/fromJSON";
12
12
  export { default as generateOperations } from "./operations/generate";
13
- export { default as transformOperations } from "./operations/transform";
14
-
13
+ export { default as transformSelection } from "./transform/selection";
14
+ export { default as transformOperations } from "./transform/operations";
package/src/main.js CHANGED
@@ -6,8 +6,9 @@ export { default as Selection } from "./selection";
6
6
  export { default as EmptyOperation } from "./operation/empty";
7
7
  export { default as InsertOperation } from "./operation/insert";
8
8
  export { default as DeleteOperation } from "./operation/delete";
9
- export { default as transformContent } from "./content/transform";
9
+ export { default as transformContent } from "./transform/content";
10
10
  export { default as operationsToJSON } from "./operations/toJSON";
11
11
  export { default as operationsFromJSON } from "./operations/fromJSON";
12
12
  export { default as generateOperations } from "./operations/generate";
13
- export { default as transformOperations } from "./operations/transform";
13
+ export { default as transformSelection } from "./transform/selection";
14
+ export { default as transformOperations } from "./transform/operations";
@@ -6,6 +6,8 @@ import Selection from "./selection"
6
6
  import UndoBuffer from "./undoBuffer";
7
7
  import InsertOperation from "./operation/insert";
8
8
  import DeleteOperation from "./operation/delete";
9
+ import transformContent from "./transform/content";
10
+ import transformSelection from "./transform/selection";
9
11
  import generateOperations from "./operations/generate";
10
12
 
11
13
  import { Z_KEY_CODE } from "./keyCodes";
@@ -352,6 +354,35 @@ export default class RichTextarea extends Element {
352
354
  this.setSelection(selection, setPreviousSelection);
353
355
  }
354
356
 
357
+ transform(transformedPendingOperations) {
358
+ let content = this.getContent(),
359
+ selection = this.getSelection();
360
+
361
+ const operations = transformedPendingOperations, ///
362
+ transformedContent = transformContent(content, operations),
363
+ transformedSelection = transformSelection(selection, operations);
364
+
365
+ content = transformedContent; ///
366
+
367
+ selection = transformedSelection; ///
368
+
369
+ const setPreviousContent = false,
370
+ setPreviousSelection = false;
371
+
372
+ this.setContent(content, setPreviousContent);
373
+
374
+ this.setSelection(selection, setPreviousSelection);
375
+
376
+ this.undoBuffer.transform(transformedPendingOperations);
377
+
378
+ const event = null,
379
+ element = this,
380
+ undoable = false,
381
+ eventType = CHANGE_EVENT_TYPE;
382
+
383
+ this.intermediateHandler(event, element, undoable, eventType);
384
+ }
385
+
355
386
  activate() {
356
387
  this.on(KEYDOWN_EVENT_TYPE, this.keyDownHandler, this);
357
388
 
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ export default function transformContent(content, operations) {
4
+ operations.forEach((operation) => {
5
+ const transformedContent = operation.transformContent(content);
6
+
7
+ content = transformedContent; ///
8
+ })
9
+
10
+ return content;
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ export default function transformSelection(selection, operations) {
4
+ operations.forEach((operation) => {
5
+ const transformedSelection = operation.transformSelection(selection);
6
+
7
+ selection = transformedSelection; ///
8
+ })
9
+
10
+ return selection;
11
+ }