@fgv/ts-json 1.0.1 → 1.4.1

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/jsonConverter.js CHANGED
@@ -140,7 +140,7 @@ class JsonEditorConverter extends ts_utils_1.BaseConverter {
140
140
  * @param editor
141
141
  */
142
142
  static createWithEditor(editor) {
143
- return ts_utils_1.captureResult(() => new JsonEditorConverter(editor));
143
+ return (0, ts_utils_1.captureResult)(() => new JsonEditorConverter(editor));
144
144
  }
145
145
  /**
146
146
  * Gets a derived converter which fails if the resulting converted
@@ -148,10 +148,10 @@ class JsonEditorConverter extends ts_utils_1.BaseConverter {
148
148
  */
149
149
  object() {
150
150
  return this.map((jv) => {
151
- if (!common_1.isJsonObject(jv)) {
152
- return ts_utils_1.fail(`Cannot convert "${JSON.stringify(jv)}" to JSON object.`);
151
+ if (!(0, common_1.isJsonObject)(jv)) {
152
+ return (0, ts_utils_1.fail)(`Cannot convert "${JSON.stringify(jv)}" to JSON object.`);
153
153
  }
154
- return ts_utils_1.succeed(jv);
154
+ return (0, ts_utils_1.succeed)(jv);
155
155
  });
156
156
  }
157
157
  /**
@@ -161,9 +161,9 @@ class JsonEditorConverter extends ts_utils_1.BaseConverter {
161
161
  array() {
162
162
  return this.map((jv) => {
163
163
  if ((!Array.isArray(jv)) || (typeof jv !== 'object')) {
164
- return ts_utils_1.fail(`Cannot convert "${JSON.stringify(jv)}" to JSON array.`);
164
+ return (0, ts_utils_1.fail)(`Cannot convert "${JSON.stringify(jv)}" to JSON array.`);
165
165
  }
166
- return ts_utils_1.succeed(jv);
166
+ return (0, ts_utils_1.succeed)(jv);
167
167
  });
168
168
  }
169
169
  _convert(from, context) {
@@ -191,7 +191,7 @@ class JsonConverter extends JsonEditorConverter {
191
191
  * informative message if an error occurs.
192
192
  */
193
193
  static create(options) {
194
- return ts_utils_1.captureResult(() => new JsonConverter(options));
194
+ return (0, ts_utils_1.captureResult)(() => new JsonConverter(options));
195
195
  }
196
196
  }
197
197
  exports.JsonConverter = JsonConverter;
@@ -217,7 +217,7 @@ class TemplatedJsonConverter extends JsonEditorConverter {
217
217
  * @param options Optional configuration or context for the converter
218
218
  */
219
219
  static create(options) {
220
- return ts_utils_1.captureResult(() => new TemplatedJsonConverter(options));
220
+ return (0, ts_utils_1.captureResult)(() => new TemplatedJsonConverter(options));
221
221
  }
222
222
  }
223
223
  exports.TemplatedJsonConverter = TemplatedJsonConverter;
@@ -250,7 +250,7 @@ class ConditionalJsonConverter extends JsonEditorConverter {
250
250
  * @param options Optional configuration or context for the converter
251
251
  */
252
252
  static create(options) {
253
- return ts_utils_1.captureResult(() => new ConditionalJsonConverter(options));
253
+ return (0, ts_utils_1.captureResult)(() => new ConditionalJsonConverter(options));
254
254
  }
255
255
  }
256
256
  exports.ConditionalJsonConverter = ConditionalJsonConverter;
@@ -281,7 +281,7 @@ class RichJsonConverter extends JsonEditorConverter {
281
281
  * @param options Optional configuration or context for the converter
282
282
  */
283
283
  static create(options) {
284
- return ts_utils_1.captureResult(() => new RichJsonConverter(options));
284
+ return (0, ts_utils_1.captureResult)(() => new RichJsonConverter(options));
285
285
  }
286
286
  }
287
287
  exports.RichJsonConverter = RichJsonConverter;
@@ -289,4 +289,4 @@ RichJsonConverter.richOptions = {
289
289
  ...ConditionalJsonConverter.conditionalOptions,
290
290
  useReferences: true,
291
291
  };
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pE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dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb252ZXJ0ZXIsXG4gICAgQ29udmVydGVyLFxuICAgIFJlc3VsdCxcbiAgICBjYXB0dXJlUmVzdWx0LFxuICAgIGZhaWwsXG4gICAgc3VjY2VlZCxcbn0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQge1xuICAgIENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUsXG4gICAgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlLFxuICAgIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLFxuICAgIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlLFxufSBmcm9tICcuL2pzb25FZGl0b3IvcnVsZXMnO1xuaW1wb3J0IHsgSnNvbkFycmF5LCBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7XG4gICAgSnNvbkNvbnRleHQsXG4gICAgSnNvblJlZmVyZW5jZU1hcCxcbiAgICBUZW1wbGF0ZVZhcnMsXG4gICAgVGVtcGxhdGVWYXJzRXh0ZW5kRnVuY3Rpb24sXG4gICAgZGVmYXVsdEV4dGVuZFZhcnMsXG59IGZyb20gJy4vanNvbkNvbnRleHQnO1xuXG5pbXBvcnQgeyBKc29uRWRpdG9yIH0gZnJvbSAnLi9qc29uRWRpdG9yL2pzb25FZGl0b3InO1xuaW1wb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlJztcbmltcG9ydCB7IEpzb25FZGl0b3JSdWxlIH0gZnJvbSAnLi9qc29uRWRpdG9yL2pzb25FZGl0b3JSdWxlJztcblxuLyoqXG4gKiBDb252ZXJzaW9uIG9wdGlvbnMgZm9yIEpzb25Db252ZXJ0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uQ29udmVydGVyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgdmFsdWVzIHdpbGwgYmUgcmVuZGVyZWQgdXNpbmdcbiAgICAgKiBtdXN0YWNoZSBhbmQgdGhvc2UgdmFyaWFibGVzLiBPdGhlcndpc2Ugc3RyaW5nIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgY29waWVkIHdpdGhvdXQgbW9kaWZpY2F0aW9uLlxuICAgICAqXG4gICAgICogRGVmYXVsdHMgdG8gdHJ1ZSBpZiB2YXJzIGFyZSBzdXBwbGllZCB3aXRoIG9wdGlvbnMsXG4gICAgICogZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlTmFtZVRlbXBsYXRlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIHRlbXBsYXRlIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlLFxuICAgICAqIHRoZW4gc3RyaW5nIHByb3BlcnR5IG5hbWVzIHdpbGwgYmUgY29uc2lkZXJlZCBmb3JcbiAgICAgKiBjb25kaXRpb25hbHMuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IGlzIHRvIG1hdGNoIHVzZU5hbWVUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICB1c2VDb25kaXRpb25hbE5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgdGhlbiBwcm9wZXJ0aWVzIHdpdGggdW5jb25kaXRpb25hbCBuYW1lc1xuICAgICAqICh3aGljaCBzdGFydCB3aXRoICEpIGFyZSBmbGF0dGVuZWQuXG4gICAgICovXG4gICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiBib3RoIHRlbXBsYXRlIHZhcmlhYmxlcyBhbmQgYVxuICAgICAqIGNvbnRleHQgZGVyaXZhdGlvbiBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRoZW4gcHJvcGVydGllc1xuICAgICAqIHdoaWNoIG1hdGNoIHRoZSBtdWx0aS12YWx1ZSBuYW1lIHBhdHRlcm4gd2lsbCBiZSBleHBhbmRlZC5cbiAgICAgKiBEZWZhdWx0IG1hdGNoZXMgdXNlTmFtZVRlbXBsYXRlcy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSB1bmxlc3MgZXh0ZW5kVmFycyBpcyBleHBsaWNpdGx5IHNldCB0b1xuICAgICAqIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICB1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB2YXJpYWJsZXMgKG11c3RhY2hlIHZpZXcpIHVzZWQgdG8gcmVuZGVyIHRlbXBsYXRlZCBzdHJpbmcgbmFtZXNcbiAgICAgKiBhbmQgcHJvcGVydGllcy4gIFNlZSB0aGUgbXVzdGFjaGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvZiBtdXN0YWNoZVxuICAgICAqIHN5bnRheCBhbmQgdGhlIHRlbXBsYXRlIHZpZXcuXG4gICAgICovXG4gICAgdmFycz86IFRlbXBsYXRlVmFycztcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB1c2VkIHRvIGV4dGVuZCB2YXJpYWJsZXMgZm9yIGNoaWxkcmVuIG9mIGFuIGFycmF5IG5vZGUgZHVyaW5nXG4gICAgICogZXhwYW5zaW9uLiBEZWZhdWx0IGlzIHRvIHVzZSBhIGJ1aWx0LWluIGV4dGVuc2lvbiBmdW5jdGlvbiB1bmxlc3NcbiAgICAgKiBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBleHRlbmRWYXJzPzogVGVtcGxhdGVWYXJzRXh0ZW5kRnVuY3Rpb247XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiBhIHJlZmVyZW5jZXMgbWFwIGlzIHN1cHBsaWVkLCB0aGVuXG4gICAgICogcmVmZXJlbmNlcyBpbiB0aGUgc291cmNlIG9iamVjdCB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcbiAgICAgKiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IGlzIHRydWUgaWYgcmVmcyBhcmUgcHJlc2VudCBpbiBvcHRpb25zLCBmYWxzZVxuICAgICAqIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VSZWZlcmVuY2VzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgb2JqZWN0IG1hcCB1c2VkIHRvIGluc2VydCBhbnkgcmVmZXJlbmNlcyBpbiB0aGVcbiAgICAgKiBjb252ZXJ0ZWQgSlNPTi5cbiAgICAgKi9cbiAgICByZWZzPzogSnNvblJlZmVyZW5jZU1hcDtcblxuICAgIC8qKlxuICAgICAqIElmIG9uSW52YWxpZFByb3BlcnR5TmFtZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBwcm9wZXJ0eSBuYW1lXG4gICAgICogdGhhdCBpcyBpbnZhbGlkIGFmdGVyIHRlbXBsYXRlIHJlbmRlcmluZyBjYXVzZXMgYW4gZXJyb3IgYW5kIHN0b3BzXG4gICAgICogY29udmVyc2lvbi4gIElmIG9uSW52YWxpZFByb3BlcnR5TmFtZSBpcyAnaWdub3JlJywgdGhlbiBuYW1lcyB3aGljaFxuICAgICAqIGFyZSBpbnZhbGlkIGFmdGVyIHRlbXBsYXRlIHJlbmRlcmluZyBhcmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uSW52YWxpZFByb3BlcnR5VmF1bGUgaXMgJ2Vycm9yJyAoZGVmYXVsdCkgdGhlbiBhbnkgaWxsZWdhbFxuICAgICAqIHByb3BlcnR5IHZhbHVlIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHMgY29udmVyc2lvbi4gIElmXG4gICAgICogb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnaWdub3JlJyB0aGVuIGFueSBpbnZhbGlkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICAgICAqL1xuICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG5cbiAgICAvKipcbiAgICAgKiBJZiBvblVua25vd25Qcm9wZXJ0eVZhbHVlIGlzIGVycm9yLCB0aGVuIGFueSBwcm9wZXJ0eSB3aXRoXG4gICAgICogdmFsdWUgdW5kZWZpbmVkIHdpbGwgY2F1c2UgYW4gZXJyb3IgYW5kIHN0b3AgY29udmVyc2lvbi4gIElmXG4gICAgICogb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIChkZWZhdWx0KSB0aGVuIGFueVxuICAgICAqIHByb3BlcnR5IHdpdGggdmFsdWUgdW5kZWZpbmVkIGlzIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiAnZXJyb3InfCdpZ25vcmUnO1xufVxuXG4vKipcbiAqIE1lcmdlcyBhbiBvcHRpb25hbGx5IHN1cHBsaWVkIHBhcnRpYWwgc2V0IG9mIG9wdGlvbnMgd2l0aCB0aGUgZGVmYXVsdFxuICogY29udmVydGVyIG9wdGlvbnMsIHByb2R1Y2luZyBhIGZ1bGx5LXJlc29sdmVkIHNldCBvZiBDb252ZXJ0ZXJPcHRpb25zXG4gKiBhbmQgdGFraW5nIGFsbCBkeW5hbWljIHJ1bGVzIGludG8gYWNjb3VudCAoZS5nLiB0ZW1wbGF0ZSB1c2FnZSBlbmFibGVkXG4gKiBpZiB2YXJpYWJsZXMgYXJlIHN1cHBsaWVkIGFuZCBkaXNhYmxlZCBpZiBub3QpXG4gKiBAcGFyYW0gcGFydGlhbCBBbiBvcHRpb25hbCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMgdG8gYmUgbWVyZ2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZURlZmF1bHRKc29uQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udmVydGVyT3B0aW9ucyB7XG4gICAgY29uc3QgaGF2ZVZhcnMgPSAocGFydGlhbD8udmFycyAhPT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBoYXZlUmVmcyA9IChwYXJ0aWFsPy5yZWZzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGV4dGVuZGVyID0gcGFydGlhbD8uaGFzT3duUHJvcGVydHkoJ2V4dGVuZFZhcnMnKSA/IHBhcnRpYWwuZXh0ZW5kVmFycyA6IGRlZmF1bHRFeHRlbmRWYXJzO1xuICAgIGNvbnN0IGhhdmVFeHRlbmRlciA9IChleHRlbmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBuYW1lc0RlZmF1bHQgPSAocGFydGlhbD8udXNlTmFtZVRlbXBsYXRlcyA/PyBoYXZlVmFycyk7XG4gICAgY29uc3QgY29uZGl0aW9uc0RlZmF1bHQgPSAocGFydGlhbD8udXNlQ29uZGl0aW9uYWxOYW1lcyA/PyBuYW1lc0RlZmF1bHQpO1xuXG4gICAgY29uc3Qgb3B0aW9uczogSnNvbkNvbnZlcnRlck9wdGlvbnMgPSB7XG4gICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBwYXJ0aWFsPy51c2VWYWx1ZVRlbXBsYXRlcyA/PyBoYXZlVmFycyxcbiAgICAgICAgdXNlTmFtZVRlbXBsYXRlczogbmFtZXNEZWZhdWx0LFxuICAgICAgICB1c2VDb25kaXRpb25hbE5hbWVzOiBjb25kaXRpb25zRGVmYXVsdCxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHBhcnRpYWw/LmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzID8/IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICB1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lczogcGFydGlhbD8udXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMgPz8gKGhhdmVFeHRlbmRlciAmJiBuYW1lc0RlZmF1bHQpLFxuICAgICAgICB1c2VSZWZlcmVuY2VzOiBwYXJ0aWFsPy51c2VSZWZlcmVuY2VzID8/IGhhdmVSZWZzLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5TmFtZSA/PyAnZXJyb3InLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vbkludmFsaWRQcm9wZXJ0eVZhbHVlID8/ICdlcnJvcicsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogcGFydGlhbD8ub25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlID8/ICdpZ25vcmUnLFxuICAgICAgICBleHRlbmRWYXJzOiBleHRlbmRlcixcbiAgICB9O1xuICAgIGlmIChwYXJ0aWFsPy52YXJzKSB7XG4gICAgICAgIG9wdGlvbnMudmFycyA9IHBhcnRpYWwudmFycztcbiAgICB9XG4gICAgaWYgKHBhcnRpYWw/LnJlZnMpIHtcbiAgICAgICAgb3B0aW9ucy5yZWZzID0gcGFydGlhbC5yZWZzO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IEBzZWUgSnNvbkNvbnRleHQgdXNpbmcgdmFsdWVzIHN1cHBsaWVkIGluIGFuIG9wdGlvbmFsIHBhcnRpYWxcbiAqIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnNcbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIHBvcHVsYXRlIHRoZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250ZXh0RnJvbUNvbnZlcnRlck9wdGlvbnMocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogSnNvbkNvbnRleHR8dW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb250ZXh0OiBKc29uQ29udGV4dCA9IHt9O1xuICAgIGlmIChwYXJ0aWFsPy52YXJzKSB7XG4gICAgICAgIGNvbnRleHQudmFycyA9IHBhcnRpYWwudmFycztcbiAgICB9XG4gICAgaWYgKHBhcnRpYWw/LnJlZnMpIHtcbiAgICAgICAgY29udGV4dC5yZWZzID0gcGFydGlhbC5yZWZzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8uaGFzT3duUHJvcGVydHkoJ2V4dGVuZFZhcnMnKSkge1xuICAgICAgICBjb250ZXh0LmV4dGVuZFZhcnMgPSBwYXJ0aWFsLmV4dGVuZFZhcnM7XG4gICAgfVxuICAgIHJldHVybiAoY29udGV4dC52YXJzIHx8IGNvbnRleHQucmVmcyB8fCBjb250ZXh0LmV4dGVuZFZhcnMpID8gY29udGV4dCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IEBzZWUgSnNvbkVkaXRvciBmcm9tIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zLlxuICogRXhwYW5kcyBzdXBwbGllZCBvcHRpb25zIHdpdGggZGVmYXVsdCB2YWx1ZXMgYW5kIGNvbnN0cnVjdHMgYW4gZWRpdG9yIHdpdGhcbiAqIG1hdGNoaW5nIGNvbmZpZ3VyYXRpb24gYW5kIGRlZmluZWQgcnVsZXMuXG4gKiBAcGFyYW0gcGFydGlhbCBPcHRpb25hbCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMgdXNlZCB0byBjcmVhdGUgdGhlIGVkaXRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uRWRpdG9yPiB7XG4gICAgY29uc3QgY29udmVydGVyT3B0aW9ucyA9IG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWwpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjb250ZXh0RnJvbUNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHtcbiAgICAgICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5TmFtZSxcbiAgICAgICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vbkludmFsaWRQcm9wZXJ0eVZhbHVlLFxuICAgICAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6IGNvbnZlcnRlck9wdGlvbnMub25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlLFxuICAgIH07XG4gICAgY29uc3QgZWRpdG9yT3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMgPSB7IGNvbnRleHQsIHZhbGlkYXRpb24gfTtcblxuICAgIGNvbnN0IHJ1bGVzOiBKc29uRWRpdG9yUnVsZVtdID0gW107XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyB8fCBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzKSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZU5hbWVUZW1wbGF0ZXMsXG4gICAgICAgICAgICB1c2VWYWx1ZVRlbXBsYXRlczogY29udmVydGVyT3B0aW9ucy51c2VWYWx1ZVRlbXBsYXRlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUodGVtcGxhdGVPcHRpb25zKSk7XG4gICAgfVxuICAgIGlmIChjb252ZXJ0ZXJPcHRpb25zLnVzZUNvbmRpdGlvbmFsTmFtZXMgfHwgY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBjb25kaXRpb25hbE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5lZGl0b3JPcHRpb25zLFxuICAgICAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IGNvbnZlcnRlck9wdGlvbnMuZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMsXG4gICAgICAgIH07XG4gICAgICAgIHJ1bGVzLnB1c2gobmV3IENvbmRpdGlvbmFsSnNvbkVkaXRvclJ1bGUoY29uZGl0aW9uYWxPcHRpb25zKSk7XG4gICAgfVxuICAgIGlmIChjb252ZXJ0ZXJPcHRpb25zLnVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzKSB7XG4gICAgICAgIHJ1bGVzLnB1c2gobmV3IE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuICAgIGlmIChjb252ZXJ0ZXJPcHRpb25zLnVzZVJlZmVyZW5jZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUoZWRpdG9yT3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiBKc29uRWRpdG9yLmNyZWF0ZShlZGl0b3JPcHRpb25zLCBydWxlcyk7XG59XG5cbi8qKlxuICogQSB0aGluIHdyYXBwZXIgdG8gYWxsb3cgYW4gYXJiaXRyYXJ5IEBzZWUgSnNvbkVkaXRvciB0byBiZSB1c2VkIHZpYSB0aGVcbiAqIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxKc29uVmFsdWUsIEpzb25Db250ZXh0PiB7XG4gICAgcHVibGljIGVkaXRvcjogSnNvbkVkaXRvcjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBKc29uRWRpdG9yQ29udmVydGVyIHdoaWNoIHVzZXMgdGhlIHN1cHBsaWVkIGVkaXRvclxuICAgICAqIEBwYXJhbSBlZGl0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yOiBKc29uRWRpdG9yKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgKGZyb20sIF9zZWxmLCBjb250ZXh0KSA9PiB0aGlzLl9jb252ZXJ0KGZyb20sIGNvbnRleHQpLFxuICAgICAgICAgICAgZWRpdG9yLm9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlV2l0aEVkaXRvcihlZGl0b3I6IEpzb25FZGl0b3IpOiBSZXN1bHQ8SnNvbkVkaXRvckNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkVkaXRvckNvbnZlcnRlcihlZGl0b3IpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25PYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgb2JqZWN0KCk6IENvbnZlcnRlcjxKc29uT2JqZWN0LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgQ2Fubm90IGNvbnZlcnQgXCIke0pTT04uc3RyaW5naWZ5KGp2KX1cIiB0byBKU09OIG9iamVjdC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGRlcml2ZWQgY29udmVydGVyIHdoaWNoIGZhaWxzIGlmIHRoZSByZXN1bHRpbmcgY29udmVydGVkXG4gICAgICogQHNlZSBKc29uVmFsdWUgaXMgbm90IGEgQHNlZSBKc29uQXJyYXlcbiAgICAgKi9cbiAgICBwdWJsaWMgYXJyYXkoKTogQ29udmVydGVyPEpzb25BcnJheSwgSnNvbkNvbnRleHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwKChqdikgPT4ge1xuICAgICAgICAgICAgaWYgKCghQXJyYXkuaXNBcnJheShqdikpIHx8ICh0eXBlb2YganYgIT09ICdvYmplY3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gYXJyYXkuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChqdik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY29udmVydChmcm9tOiB1bmtub3duLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvblZhbHVlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5jbG9uZShmcm9tIGFzIEpzb25WYWx1ZSwgY29udGV4dCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OLCBvcHRpb25hbGx5IHJlbmRlcmluZ1xuICogYW55IHN0cmluZyBwcm9wZXJ0eSBuYW1lcyBvciB2YWx1ZXMgdXNpbmcgbXVzdGFjaGUgd2l0aCBhIHN1cHBsaWVkIHZpZXcuXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3IgZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udmVydGVyLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgdG8gY29uaWZndXJlIHRoZSBjb252ZXJ0ZXJcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggYSBuZXcgSnNvbkNvbnZlcnRlciBvbiBzdWNjZXNzLCBvciBGYWlsdXJlIHdpdGggYW5cbiAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8SnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VOYW1lVGVtcGxhdGVzJ3wndXNlVmFsdWVUZW1wbGF0ZXMnfCd1c2VNdWx0aXZhbHVlVGVtcGxhdGVObWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nIGFuZCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIHJ1bGVzIGVuYWJsZWQgcmVnYXJkbGVzc1xuICogb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGVtcGxhdGVPcHRpb25zOiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPiA9IHtcbiAgICAgICAgdXNlTmFtZVRlbXBsYXRlczogdHJ1ZSxcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiB0cnVlLFxuICAgICAgICB1c2VDb25kaXRpb25hbE5hbWVzOiBmYWxzZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPFRlbXBsYXRlZEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyB9O1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBQYXJ0aWFsPFRlbXBsYXRlZEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBUZW1wbGF0ZWRKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlck9wdGlvbnMgPSBPbWl0PFRlbXBsYXRlZEpzb25Db252ZXJ0ZXJPcHRpb25zLCAndXNlQ29uZGl0aW9uYWxOYW1lcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZywgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSBhbmQgY29uZGl0aW9uYWwgcHJvcGVydHlcbiAqIG5hbWUgcnVsZXMgZW5hYmxlZCByZWdhcmRsZXNzIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgY29uZGl0aW9uYWxPcHRpb25zOiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPiA9IHtcbiAgICAgICAgLi4uVGVtcGxhdGVkSnNvbkNvbnZlcnRlci50ZW1wbGF0ZU9wdGlvbnMsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IHRydWUsXG4gICAgICAgIGZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzOiB0cnVlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFBhcnRpYWw8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uQ29uZGl0aW9uYWxKc29uQ29udmVydGVyLmNvbmRpdGlvbmFsT3B0aW9ucyB9O1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJpY2hKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZVJlZmVyZW5jZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcsIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUsIGNvbmRpdGlvbmFsIHByb3BlcnR5XG4gKiBuYW1lLCBhbmQgZXh0ZXJuYWwgcmVmZXJlbmNlIHJ1bGVzIGVuYWJsZWQgcmVnYXJkbGVzcyBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmljaE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICB1c2VSZWZlcmVuY2VzOiB0cnVlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgUmljaEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlJpY2hKc29uQ29udmVydGVyLnJpY2hPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgUmljaEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBQYXJ0aWFsPFJpY2hKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgUmljaEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cbiJdfQ==
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pE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cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbnZlcnRlcixcbiAgICBDb252ZXJ0ZXIsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBzdWNjZWVkLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vanNvbkVkaXRvci9ydWxlcyc7XG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBKc29uQ29udGV4dCxcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbixcbiAgICBkZWZhdWx0RXh0ZW5kVmFycyxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGUgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclJ1bGUnO1xuXG4vKipcbiAqIENvbnZlcnNpb24gb3B0aW9ucyBmb3IgSnNvbkNvbnZlcnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nXG4gICAgICogbXVzdGFjaGUgYW5kIHRob3NlIHZhcmlhYmxlcy4gT3RoZXJ3aXNlIHN0cmluZyBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGNvcGllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIHRydWUgaWYgdmFycyBhcmUgc3VwcGxpZWQgd2l0aCBvcHRpb25zLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSBjb25zaWRlcmVkIGZvclxuICAgICAqIGNvbmRpdGlvbmFscy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdG8gbWF0Y2ggdXNlTmFtZVRlbXBsYXRlc1xuICAgICAqL1xuICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGJvdGggdGVtcGxhdGUgdmFyaWFibGVzIGFuZCBhXG4gICAgICogY29udGV4dCBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBwcm9wZXJ0aWVzXG4gICAgICogd2hpY2ggbWF0Y2ggdGhlIG11bHRpLXZhbHVlIG5hbWUgcGF0dGVybiB3aWxsIGJlIGV4cGFuZGVkLlxuICAgICAqIERlZmF1bHQgbWF0Y2hlcyB1c2VOYW1lVGVtcGxhdGVzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCBpcyB0cnVlIHVubGVzcyBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhcmlhYmxlcyAobXVzdGFjaGUgdmlldykgdXNlZCB0byByZW5kZXIgdGVtcGxhdGVkIHN0cmluZyBuYW1lc1xuICAgICAqIGFuZCBwcm9wZXJ0aWVzLiAgU2VlIHRoZSBtdXN0YWNoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIG11c3RhY2hlXG4gICAgICogc3ludGF4IGFuZCB0aGUgdGVtcGxhdGUgdmlldy5cbiAgICAgKi9cbiAgICB2YXJzPzogVGVtcGxhdGVWYXJzO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZXh0ZW5kIHZhcmlhYmxlcyBmb3IgY2hpbGRyZW4gb2YgYW4gYXJyYXkgbm9kZSBkdXJpbmdcbiAgICAgKiBleHBhbnNpb24uIERlZmF1bHQgaXMgdG8gdXNlIGEgYnVpbHQtaW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIHVubGVzc1xuICAgICAqIGV4dGVuZFZhcnMgaXMgZXhwbGljaXRseSBzZXQgdG8gdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGV4dGVuZFZhcnM/OiBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGEgcmVmZXJlbmNlcyBtYXAgaXMgc3VwcGxpZWQsIHRoZW5cbiAgICAgKiByZWZlcmVuY2VzIGluIHRoZSBzb3VyY2Ugb2JqZWN0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSBpZiByZWZzIGFyZSBwcmVzZW50IGluIG9wdGlvbnMsIGZhbHNlXG4gICAgICogb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBvYmplY3QgbWFwIHVzZWQgdG8gaW5zZXJ0IGFueSByZWZlcmVuY2VzIGluIHRoZVxuICAgICAqIGNvbnZlcnRlZCBKU09OLlxuICAgICAqL1xuICAgIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYXVsZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wcyBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55IGludmFsaWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbi8qKlxuICogTWVyZ2VzIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBzZXQgb2Ygb3B0aW9ucyB3aXRoIHRoZSBkZWZhdWx0XG4gKiBjb252ZXJ0ZXIgb3B0aW9ucywgcHJvZHVjaW5nIGEgZnVsbHktcmVzb2x2ZWQgc2V0IG9mIENvbnZlcnRlck9wdGlvbnNcbiAqIGFuZCB0YWtpbmcgYWxsIGR5bmFtaWMgcnVsZXMgaW50byBhY2NvdW50IChlLmcuIHRlbXBsYXRlIHVzYWdlIGVuYWJsZWRcbiAqIGlmIHZhcmlhYmxlcyBhcmUgc3VwcGxpZWQgYW5kIGRpc2FibGVkIGlmIG5vdClcbiAqIEBwYXJhbSBwYXJ0aWFsIEFuIG9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB0byBiZSBtZXJnZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICBjb25zdCBoYXZlVmFycyA9IChwYXJ0aWFsPy52YXJzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGhhdmVSZWZzID0gKHBhcnRpYWw/LnJlZnMgIT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZXh0ZW5kZXIgPSBwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpID8gcGFydGlhbC5leHRlbmRWYXJzIDogZGVmYXVsdEV4dGVuZFZhcnM7XG4gICAgY29uc3QgaGF2ZUV4dGVuZGVyID0gKGV4dGVuZGVyICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG5hbWVzRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VOYW1lVGVtcGxhdGVzID8/IGhhdmVWYXJzKTtcbiAgICBjb25zdCBjb25kaXRpb25zRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VDb25kaXRpb25hbE5hbWVzID8/IG5hbWVzRGVmYXVsdCk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBKc29uQ29udmVydGVyT3B0aW9ucyA9IHtcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHBhcnRpYWw/LnVzZVZhbHVlVGVtcGxhdGVzID8/IGhhdmVWYXJzLFxuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBuYW1lc0RlZmF1bHQsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogcGFydGlhbD8uZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMgPz8gY29uZGl0aW9uc0RlZmF1bHQsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBwYXJ0aWFsPy51c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyA/PyAoaGF2ZUV4dGVuZGVyICYmIG5hbWVzRGVmYXVsdCksXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHBhcnRpYWw/LnVzZVJlZmVyZW5jZXMgPz8gaGF2ZVJlZnMsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogcGFydGlhbD8ub25JbnZhbGlkUHJvcGVydHlOYW1lID8/ICdlcnJvcicsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5VmFsdWUgPz8gJ2Vycm9yJyxcbiAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgPz8gJ2lnbm9yZScsXG4gICAgICAgIGV4dGVuZFZhcnM6IGV4dGVuZGVyLFxuICAgIH07XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBvcHRpb25zLnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uQ29udGV4dCB1c2luZyB2YWx1ZXMgc3VwcGxpZWQgaW4gYW4gb3B0aW9uYWwgcGFydGlhbFxuICogQHNlZSBKc29uQ29udmVydGVyT3B0aW9uc1xuICogQHBhcmFtIHBhcnRpYWwgT3B0aW9uYWwgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0ID0ge307XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgY29udGV4dC52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBjb250ZXh0LnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgIGNvbnRleHQuZXh0ZW5kVmFycyA9IHBhcnRpYWwuZXh0ZW5kVmFycztcbiAgICB9XG4gICAgcmV0dXJuIChjb250ZXh0LnZhcnMgfHwgY29udGV4dC5yZWZzIHx8IGNvbnRleHQuZXh0ZW5kVmFycykgPyBjb250ZXh0IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uRWRpdG9yIGZyb20gYW4gb3B0aW9uYWxseSBzdXBwbGllZCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMuXG4gKiBFeHBhbmRzIHN1cHBsaWVkIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgY29uc3RydWN0cyBhbiBlZGl0b3Igd2l0aFxuICogbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBhbmQgZGVmaW5lZCBydWxlcy5cbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3IocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3I+IHtcbiAgICBjb25zdCBjb252ZXJ0ZXJPcHRpb25zID0gbWVyZ2VEZWZhdWx0SnNvbkNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0ge1xuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IGNvbnZlcnRlck9wdGlvbnMub25JbnZhbGlkUHJvcGVydHlOYW1lLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5VmFsdWUsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUsXG4gICAgfTtcbiAgICBjb25zdCBlZGl0b3JPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IHsgY29udGV4dCwgdmFsaWRhdGlvbiB9O1xuXG4gICAgY29uc3QgcnVsZXM6IEpzb25FZGl0b3JSdWxlW10gPSBbXTtcbiAgICBpZiAoY29udmVydGVyT3B0aW9ucy51c2VOYW1lVGVtcGxhdGVzIHx8IGNvbnZlcnRlck9wdGlvbnMudXNlVmFsdWVUZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZWRpdG9yT3B0aW9ucyxcbiAgICAgICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzLFxuICAgICAgICB9O1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSh0ZW1wbGF0ZU9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlQ29uZGl0aW9uYWxOYW1lcyB8fCBjb252ZXJ0ZXJPcHRpb25zLmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShjb25kaXRpb25hbE9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKGVkaXRvck9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlUmVmZXJlbmNlcykge1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpzb25FZGl0b3IuY3JlYXRlKGVkaXRvck9wdGlvbnMsIHJ1bGVzKTtcbn1cblxuLyoqXG4gKiBBIHRoaW4gd3JhcHBlciB0byBhbGxvdyBhbiBhcmJpdHJhcnkgQHNlZSBKc29uRWRpdG9yIHRvIGJlIHVzZWQgdmlhIHRoZVxuICogdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEpzb25WYWx1ZSwgSnNvbkNvbnRleHQ+IHtcbiAgICBwdWJsaWMgZWRpdG9yOiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IEpzb25FZGl0b3IpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICAoZnJvbSwgX3NlbGYsIGNvbnRleHQpID0+IHRoaXMuX2NvbnZlcnQoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICBlZGl0b3Iub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvckNvbnZlcnRlciB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBlZGl0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoRWRpdG9yKGVkaXRvcjogSnNvbkVkaXRvcik6IFJlc3VsdDxKc29uRWRpdG9yQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yQ29udmVydGVyKGVkaXRvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBkZXJpdmVkIGNvbnZlcnRlciB3aGljaCBmYWlscyBpZiB0aGUgcmVzdWx0aW5nIGNvbnZlcnRlZFxuICAgICAqIEBzZWUgSnNvblZhbHVlIGlzIG5vdCBhIEBzZWUgSnNvbk9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBvYmplY3QoKTogQ29udmVydGVyPEpzb25PYmplY3QsIEpzb25Db250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcCgoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gb2JqZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25BcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBhcnJheSgpOiBDb252ZXJ0ZXI8SnNvbkFycmF5LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoKCFBcnJheS5pc0FycmF5KGp2KSkgfHwgKHR5cGVvZiBqdiAhPT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYENhbm5vdCBjb252ZXJ0IFwiJHtKU09OLnN0cmluZ2lmeShqdil9XCIgdG8gSlNPTiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNsb25lKGZyb20gYXMgSnNvblZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04sIG9wdGlvbmFsbHkgcmVuZGVyaW5nXG4gKiBhbnkgc3RyaW5nIHByb3BlcnR5IG5hbWVzIG9yIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIGEgc3VwcGxpZWQgdmlldy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvciBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjb252ZXJ0ZXIuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB0byBjb25pZmd1cmUgdGhlIGNvbnZlcnRlclxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIG5ldyBKc29uQ29udmVydGVyIG9uIHN1Y2Nlc3MsIG9yIEZhaWx1cmUgd2l0aCBhblxuICAgICAqIGluZm9ybWF0aXZlIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXJPcHRpb25zID0gT21pdDxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZU5hbWVUZW1wbGF0ZXMnfCd1c2VWYWx1ZVRlbXBsYXRlcyd8J3VzZU11bHRpdmFsdWVUZW1wbGF0ZU5tZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcgYW5kIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUgcnVsZXMgZW5hYmxlZCByZWdhcmRsZXNzXG4gKiBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZWRKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZW1wbGF0ZU9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiB0cnVlLFxuICAgICAgICB1c2VWYWx1ZVRlbXBsYXRlczogdHJ1ZSxcbiAgICAgICAgdXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXM6IHRydWUsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGZhbHNlLFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlRlbXBsYXRlZEpzb25Db252ZXJ0ZXIudGVtcGxhdGVPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VDb25kaXRpb25hbE5hbWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nLCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb25kaXRpb25hbCBwcm9wZXJ0eVxuICogbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3Mgb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBjb25kaXRpb25hbE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogdHJ1ZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUmljaEpzb25Db252ZXJ0ZXJPcHRpb25zID0gT21pdDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zLCAndXNlUmVmZXJlbmNlcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZywgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSwgY29uZGl0aW9uYWwgcHJvcGVydHlcbiAqIG5hbWUsIGFuZCBleHRlcm5hbCByZWZlcmVuY2UgcnVsZXMgZW5hYmxlZCByZWdhcmRsZXNzIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJpY2hKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSByaWNoT3B0aW9uczogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4gPSB7XG4gICAgICAgIC4uLkNvbmRpdGlvbmFsSnNvbkNvbnZlcnRlci5jb25kaXRpb25hbE9wdGlvbnMsXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBSaWNoSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPFJpY2hKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uUmljaEpzb25Db252ZXJ0ZXIucmljaE9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBSaWNoSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8UmljaEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IFJlc3VsdDxKc29uQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBSaWNoSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuIl19
File without changes
@@ -22,7 +22,11 @@
22
22
  */
23
23
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
24
  if (k2 === undefined) k2 = k;
25
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
26
30
  }) : (function(o, m, k, k2) {
27
31
  if (k2 === undefined) k2 = k;
28
32
  o[k2] = m[k];
@@ -48,4 +52,4 @@ __exportStar(require("./jsonEditorRule"), exports);
48
52
  __exportStar(require("./jsonEditor"), exports);
49
53
  __exportStar(require("./jsonEditorState"), exports);
50
54
  exports.Rules = __importStar(require("./rules"));
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsbURBQWlDO0FBQ2pDLCtDQUE2QjtBQUM3QixvREFBa0M7QUFDbEMsaURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vanNvbkVkaXRvclJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uRWRpdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbkVkaXRvclN0YXRlJztcbmV4cG9ydCAqIGFzIFJ1bGVzIGZyb20gJy4vcnVsZXMnO1xuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG1EQUFpQztBQUNqQywrQ0FBNkI7QUFDN0Isb0RBQWtDO0FBQ2xDLGlEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3JSdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbkVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5leHBvcnQgKiBhcyBSdWxlcyBmcm9tICcuL3J1bGVzJztcbiJdfQ==
@@ -16,6 +16,11 @@ export declare class JsonEditor {
16
16
  options: JsonEditorOptions;
17
17
  protected _rules: JsonEditorRule[];
18
18
  protected constructor(options?: Partial<JsonEditorOptions>, rules?: JsonEditorRule[]);
19
+ /**
20
+ * Default singleton @see JsonEditor for simple use. Applies all rules
21
+ * but with no default context.
22
+ */
23
+ static get default(): JsonEditor;
19
24
  /**
20
25
  * Constructs a new @see JsonEditor
21
26
  * @param options Optional configuration an context for this editor
@@ -29,11 +34,6 @@ export declare class JsonEditor {
29
34
  * @param options The options used to initialize all rules
30
35
  */
31
36
  static getDefaultRules(options?: JsonEditorOptions): Result<JsonEditorRule[]>;
32
- /**
33
- * Default singleton @see JsonEditor for simple use. Applies all rules
34
- * but with no default context.
35
- */
36
- static get default(): JsonEditor;
37
37
  protected static _getDefaultOptions(options?: Partial<JsonEditorOptions>): Result<JsonEditorOptions>;
38
38
  /**
39
39
  * Merges a supplied source object into a supplied target, updating the target object.
@@ -36,13 +36,24 @@ class JsonEditor {
36
36
  this.options = JsonEditor._getDefaultOptions(options).getValueOrThrow();
37
37
  this._rules = rules || JsonEditor.getDefaultRules(this.options).getValueOrThrow();
38
38
  }
39
+ /**
40
+ * Default singleton @see JsonEditor for simple use. Applies all rules
41
+ * but with no default context.
42
+ */
43
+ static get default() {
44
+ if (!JsonEditor._default) {
45
+ const rules = this.getDefaultRules().getValueOrDefault();
46
+ JsonEditor._default = new JsonEditor(undefined, rules);
47
+ }
48
+ return JsonEditor._default;
49
+ }
39
50
  /**
40
51
  * Constructs a new @see JsonEditor
41
52
  * @param options Optional configuration an context for this editor
42
53
  * @param rules Optional set of rules used by this editor
43
54
  */
44
55
  static create(options, rules) {
45
- return ts_utils_1.captureResult(() => new JsonEditor(options, rules));
56
+ return (0, ts_utils_1.captureResult)(() => new JsonEditor(options, rules));
46
57
  }
47
58
  /**
48
59
  * Gets the default set of rules to be applied for a given set of options.
@@ -51,24 +62,13 @@ class JsonEditor {
51
62
  * @param options The options used to initialize all rules
52
63
  */
53
64
  static getDefaultRules(options) {
54
- return ts_utils_1.mapResults([
65
+ return (0, ts_utils_1.mapResults)([
55
66
  rules_1.TemplatedJsonEditorRule.create(options),
56
67
  rules_1.ConditionalJsonEditorRule.create(options),
57
68
  rules_1.MultiValueJsonEditorRule.create(options),
58
69
  rules_1.ReferenceJsonEditorRule.create(options),
59
70
  ]);
60
71
  }
61
- /**
62
- * Default singleton @see JsonEditor for simple use. Applies all rules
63
- * but with no default context.
64
- */
65
- static get default() {
66
- if (!JsonEditor._default) {
67
- const rules = this.getDefaultRules().getValueOrDefault();
68
- JsonEditor._default = new JsonEditor(undefined, rules);
69
- }
70
- return JsonEditor._default;
71
- }
72
72
  static _getDefaultOptions(options) {
73
73
  const context = options === null || options === void 0 ? void 0 : options.context;
74
74
  let validation = options === null || options === void 0 ? void 0 : options.validation;
@@ -79,7 +79,7 @@ class JsonEditor {
79
79
  onUndefinedPropertyValue: 'ignore',
80
80
  };
81
81
  }
82
- return ts_utils_1.succeed({ context, validation });
82
+ return (0, ts_utils_1.succeed)({ context, validation });
83
83
  }
84
84
  /**
85
85
  * Merges a supplied source object into a supplied target, updating the target object.
@@ -116,7 +116,7 @@ class JsonEditor {
116
116
  return mergeResult.withFailureDetail('error');
117
117
  }
118
118
  }
119
- return ts_utils_1.succeedWithDetail(base);
119
+ return (0, ts_utils_1.succeedWithDetail)(base);
120
120
  }
121
121
  /**
122
122
  * Deep clones a supplied JSON value, applying all editor rules and a default
@@ -135,13 +135,13 @@ class JsonEditor {
135
135
  if ((valueResult.detail === 'error') || (valueResult.detail === 'ignore')) {
136
136
  return valueResult;
137
137
  }
138
- if (common_1.isJsonPrimitive(value) || (value === null)) {
139
- return ts_utils_1.succeedWithDetail(value, 'edited');
138
+ if ((0, common_1.isJsonPrimitive)(value) || (value === null)) {
139
+ return (0, ts_utils_1.succeedWithDetail)(value, 'edited');
140
140
  }
141
- else if (common_1.isJsonObject(value)) {
141
+ else if ((0, common_1.isJsonObject)(value)) {
142
142
  return this.mergeObjectInPlace({}, value, state.context).withFailureDetail('error');
143
143
  }
144
- else if (common_1.isJsonArray(value)) {
144
+ else if ((0, common_1.isJsonArray)(value)) {
145
145
  return this._cloneArray(value, state.context);
146
146
  }
147
147
  else if (value === undefined) {
@@ -169,25 +169,25 @@ class JsonEditor {
169
169
  return this._mergeClonedProperty(target, key, cloned, state);
170
170
  });
171
171
  if (valueResult.isFailure() && (valueResult.detail === 'error')) {
172
- return ts_utils_1.fail(`${key}: ${valueResult.message}`);
172
+ return (0, ts_utils_1.fail)(`${key}: ${valueResult.message}`);
173
173
  }
174
174
  }
175
175
  else if (propResult.detail !== 'ignore') {
176
- return ts_utils_1.fail(`${key}: ${propResult.message}`);
176
+ return (0, ts_utils_1.fail)(`${key}: ${propResult.message}`);
177
177
  }
178
178
  }
179
179
  else {
180
- return ts_utils_1.fail(`${key}: Cannot merge inherited properties`);
180
+ return (0, ts_utils_1.fail)(`${key}: Cannot merge inherited properties`);
181
181
  }
182
182
  }
183
- return ts_utils_1.succeed(target);
183
+ return (0, ts_utils_1.succeed)(target);
184
184
  }
185
185
  _cloneArray(src, context) {
186
186
  const results = src.map((v) => {
187
187
  return this.clone(v, context);
188
188
  });
189
- return ts_utils_1.mapDetailedResults(results, ['ignore']).onSuccess((converted) => {
190
- return ts_utils_1.succeed(converted);
189
+ return (0, ts_utils_1.mapDetailedResults)(results, ['ignore']).onSuccess((converted) => {
190
+ return (0, ts_utils_1.succeed)(converted);
191
191
  }).withFailureDetail('error');
192
192
  }
193
193
  _mergeClonedProperty(target, key, newValue, state) {
@@ -195,27 +195,27 @@ class JsonEditor {
195
195
  // merge is called right after clone so this should never happen
196
196
  // since clone itself will have failed
197
197
  // istanbul ignore else
198
- if (common_1.isJsonPrimitive(newValue)) {
198
+ if ((0, common_1.isJsonPrimitive)(newValue)) {
199
199
  target[key] = newValue;
200
- return ts_utils_1.succeedWithDetail(newValue, 'edited');
200
+ return (0, ts_utils_1.succeedWithDetail)(newValue, 'edited');
201
201
  }
202
- else if (common_1.isJsonObject(newValue)) {
203
- if (common_1.isJsonObject(existing)) {
202
+ else if ((0, common_1.isJsonObject)(newValue)) {
203
+ if ((0, common_1.isJsonObject)(existing)) {
204
204
  return this.mergeObjectInPlace(existing, newValue, state.context).withFailureDetail('error');
205
205
  }
206
206
  target[key] = newValue;
207
- return ts_utils_1.succeedWithDetail(newValue, 'edited');
207
+ return (0, ts_utils_1.succeedWithDetail)(newValue, 'edited');
208
208
  }
209
- else if (common_1.isJsonArray(newValue)) {
210
- if (common_1.isJsonArray(existing)) {
209
+ else if ((0, common_1.isJsonArray)(newValue)) {
210
+ if ((0, common_1.isJsonArray)(existing)) {
211
211
  target[key] = existing.concat(...newValue);
212
- return ts_utils_1.succeedWithDetail(target[key], 'edited');
212
+ return (0, ts_utils_1.succeedWithDetail)(target[key], 'edited');
213
213
  }
214
214
  target[key] = newValue;
215
- return ts_utils_1.succeedWithDetail(newValue, 'edited');
215
+ return (0, ts_utils_1.succeedWithDetail)(newValue, 'edited');
216
216
  }
217
217
  else {
218
- return ts_utils_1.failWithDetail(`Invalid JSON: ${JSON.stringify(newValue)}`, 'error');
218
+ return (0, ts_utils_1.failWithDetail)(`Invalid JSON: ${JSON.stringify(newValue)}`, 'error');
219
219
  }
220
220
  }
221
221
  _editProperty(key, value, state) {
@@ -225,7 +225,7 @@ class JsonEditor {
225
225
  return ruleResult;
226
226
  }
227
227
  }
228
- return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
228
+ return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
229
229
  }
230
230
  _editValue(value, state) {
231
231
  for (const rule of this._rules) {
@@ -234,7 +234,7 @@ class JsonEditor {
234
234
  return ruleResult;
235
235
  }
236
236
  }
237
- return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
237
+ return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
238
238
  }
239
239
  _finalizeAndMerge(target, state) {
240
240
  const deferred = state.deferred;
@@ -245,15 +245,15 @@ class JsonEditor {
245
245
  return this.mergeObjectsInPlaceWithContext(state.context, target, ruleResult.value).withFailureDetail('error');
246
246
  }
247
247
  else if (ruleResult.detail === 'ignore') {
248
- ts_utils_1.succeedWithDetail(target, 'edited');
248
+ (0, ts_utils_1.succeedWithDetail)(target, 'edited');
249
249
  }
250
250
  else if (ruleResult.detail !== 'inapplicable') {
251
- return ts_utils_1.failWithDetail(ruleResult.message, ruleResult.detail);
251
+ return (0, ts_utils_1.failWithDetail)(ruleResult.message, ruleResult.detail);
252
252
  }
253
253
  }
254
254
  }
255
- return ts_utils_1.succeedWithDetail(target, 'edited');
255
+ return (0, ts_utils_1.succeedWithDetail)(target, 'edited');
256
256
  }
257
257
  }
258
258
  exports.JsonEditor = JsonEditor;
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUV2QixzQ0FBeUc7QUFFekcsdURBQW9HO0FBSXBHOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFTbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBb0MsRUFBRSxLQUF3QjtRQUMvRSxPQUFPLHdCQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUEyQjtRQUNyRCxPQUFPLHFCQUFVLENBQWlCO1lBQzlCLCtCQUF1QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDdkMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxnQ0FBd0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3hDLCtCQUF1QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sS0FBSyxPQUFPO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENB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VSxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsRUFBRTtnQkFDbEUsT0FBTyxVQUFVLENBQUM7YUFDckI7U0FDSjtRQUNELE9BQU8seUJBQWMsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLGlCQUFpQixDQUFDLE1BQWtCLEVBQUUsS0FBc0I7UUFDbEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ3hCLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEg7cUJBQ0ksSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtvQkFDckMsNEJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUN2QztxQkFDSSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssY0FBYyxFQUFFO29CQUMzQyxPQUFPLHlCQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2hFO2FBQ0o7U0FDSjtRQUNELE9BQU8sNEJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQTNQRCxnQ0EyUEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlLFxuICAgIE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZSxcbiAgICBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZSxcbiAgICBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSxcbn0gZnJvbSAnLi9ydWxlcyc7XG5pbXBvcnQge1xuICAgIERldGFpbGVkUmVzdWx0LFxuICAgIFJlc3VsdCxcbiAgICBjYXB0dXJlUmVzdWx0LFxuICAgIGZhaWwsXG4gICAgZmFpbFdpdGhEZXRhaWwsXG4gICAgbWFwRGV0YWlsZWRSZXN1bHRzLFxuICAgIG1hcFJlc3VsdHMsXG4gICAgc3VjY2VlZCxcbiAgICBzdWNjZWVkV2l0aERldGFpbCxcbn0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IEpzb25BcnJheSwgSnNvbk9iamVjdCwgSnNvblZhbHVlLCBpc0pzb25BcnJheSwgaXNKc29uT2JqZWN0LCBpc0pzb25QcmltaXRpdmUgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uRWRpdG9yUnVsZSwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25FZGl0b3JSdWxlJztcbmltcG9ydCB7IEpzb25FZGl0b3JPcHRpb25zLCBKc29uRWRpdG9yU3RhdGUsIEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvclN0YXRlJztcblxuaW1wb3J0IHsgSnNvbkNvbnRleHQgfSBmcm9tICcuLi9qc29uQ29udGV4dCc7XG5cbi8qKlxuICogVGhlIEpzb25FZGl0b3IgY2FuIGJlIHVzZWQgdG8gZWRpdCBKU09OIG9iamVjdHMgaW4gcGxhY2Ugb3IgdG8gY2xvbmUgYW55IEpTT04gdmFsdWUsXG4gKiBhcHBseWluZyBhIGRlZmF1bHQgY29udGV4dCBhbmQgb3B0aW9uYWwgc2V0IG9mIGVkaXRvciBydWxlcyB0aGF0IHdlcmUgc3VwcGxpZWQgYXRcbiAqIGluaXRpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSnNvbkVkaXRvciB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZGVmYXVsdD86IEpzb25FZGl0b3I7XG5cbiAgICAvKipcbiAgICAgKiBGdWxsIHNldCBvZiBAc2VlIEpzb25FZGl0b3JPcHRpb25zIGluIGVmZmVjdCBmb3IgdGhpcyBydWxlLlxuICAgICAqL1xuICAgIHB1YmxpYyBvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgX3J1bGVzOiBKc29uRWRpdG9yUnVsZVtdO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPiwgcnVsZXM/OiBKc29uRWRpdG9yUnVsZVtdKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IEpzb25FZGl0b3IuX2dldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzIHx8IEpzb25FZGl0b3IuZ2V0RGVmYXVsdFJ1bGVzKHRoaXMub3B0aW9ucykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIGFuIGNvbnRleHQgZm9yIHRoaXMgZWRpdG9yXG4gICAgICogQHBhcmFtIHJ1bGVzIE9wdGlvbmFsIHNldCBvZiBydWxlcyB1c2VkIGJ5IHRoaXMgZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+LCBydWxlcz86IEpzb25FZGl0b3JSdWxlW10pOiBSZXN1bHQ8SnNvbkVkaXRvcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkVkaXRvcihvcHRpb25zLCBydWxlcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgc2V0IG9mIHJ1bGVzIHRvIGJlIGFwcGxpZWQgZm9yIGEgZ2l2ZW4gc2V0IG9mIG9wdGlvbnMuXG4gICAgICogQnkgZGVmYXVsdCwgYWxsIGF2YWlsYWJsZSBydWxlcyAodGVtcGxhdGVzLCBjb25kaXRpb25hbHMsIG11bHRpLXZhbHVlIGFuZCByZWZlcmVuY2VzKVxuICAgICAqIGFyZSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgcnVsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERlZmF1bHRSdWxlcyhvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpOiBSZXN1bHQ8SnNvbkVkaXRvclJ1bGVbXT4ge1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0czxKc29uRWRpdG9yUnVsZT4oW1xuICAgICAgICAgICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICAgICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUuY3JlYXRlKG9wdGlvbnMpLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHNpbmdsZXRvbiBAc2VlIEpzb25FZGl0b3IgZm9yIHNpbXBsZSB1c2UuIEFwcGxpZXMgYWxsIHJ1bGVzXG4gICAgICogYnV0IHdpdGggbm8gZGVmYXVsdCBjb250ZXh0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGRlZmF1bHQoKTogSnNvbkVkaXRvciB7XG4gICAgICAgIGlmICghSnNvbkVkaXRvci5fZGVmYXVsdCkge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldERlZmF1bHRSdWxlcygpLmdldFZhbHVlT3JEZWZhdWx0KCk7XG4gICAgICAgICAgICBKc29uRWRpdG9yLl9kZWZhdWx0ID0gbmV3IEpzb25FZGl0b3IodW5kZWZpbmVkLCBydWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpzb25FZGl0b3IuX2RlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZ2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucz86IFBhcnRpYWw8SnNvbkVkaXRvck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3JPcHRpb25zPiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCA9IG9wdGlvbnM/LmNvbnRleHQ7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uOiBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnN8dW5kZWZpbmVkID0gb3B0aW9ucz8udmFsaWRhdGlvbjtcbiAgICAgICAgaWYgKHZhbGlkYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsaWRhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdpZ25vcmUnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh7IGNvbnRleHQsIHZhbGlkYXRpb24gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIGEgc3VwcGxpZWQgc291cmNlIG9iamVjdCBpbnRvIGEgc3VwcGxpZWQgdGFyZ2V0LCB1cGRhdGluZyB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICAgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGJlIG1lcmdlZFxuICAgICAqIEBwYXJhbSBydW50aW1lQ29udGV4dCBBbiBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHN1cHBseWluZyB2YXJpYWJsZXMgYW5kIHJlZmVyZW5jZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbWVyZ2VPYmplY3RJblBsYWNlKHRhcmdldDogSnNvbk9iamVjdCwgc3JjOiBKc29uT2JqZWN0LCBydW50aW1lQ29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25PYmplY3Q+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgSnNvbkVkaXRvclN0YXRlKHRoaXMsIHRoaXMub3B0aW9ucywgcnVudGltZUNvbnRleHQpO1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVyZ2VPYmplY3RJblBsYWNlKHRhcmdldCwgc3JjLCBzdGF0ZSkub25TdWNjZXNzKChtZXJnZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5hbGl6ZUFuZE1lcmdlKG1lcmdlZCwgc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgbXVsdGlwbGUgc3VwcGxpZWQgc291cmNlIG9iamVjdHMgaW50byBhIHN1cHBsaWVkIHRhcmdldCwgdXBkYXRpbmcgdGhlIHRhcmdldFxuICAgICAqIG9iamVjdCBhbmQgdXNpbmcgdGhlIGRlZmF1bHQgY29udGV4dCBzdXBwbGllZCBhdCBjcmVhdGlvbiB0aW1lLlxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgICAqIEBwYXJhbSBzcmNPYmplY3RzIE9iamVjdHMgdG8gYmUgbWVyZ2VkIGludG8gdGhlIHRhcmdldCBvYmplY3QsIGluIHRoZSBvcmRlciBzdXBwbGllZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWVyZ2VPYmplY3RzSW5QbGFjZSh0YXJnZXQ6IEpzb25PYmplY3QsIHNyY09iamVjdHM6IEpzb25PYmplY3RbXSk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0c0luUGxhY2VXaXRoQ29udGV4dCh0aGlzLm9wdGlvbnMuY29udGV4dCwgdGFyZ2V0LCBzcmNPYmplY3RzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgbXVsdGlwbGUgc3VwcGxpZWQgc291cmNlIG9iamVjdHMgaW50byBhIHN1cHBsaWVkIHRhcmdldCwgdXBkYXRpbmcgdGhlIHRhcmdldFxuICAgICAqIG9iamVjdCBhbmQgdXNpbmcgYW4gb3B0aW9uYWwgY29udGV4dCBzdXBwbGllZCBpbiB0aGUgY2FsbC5cbiAgICAgKiBAcGFyYW0gY29udGV4dCBBbiBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHN1cHBseWluZyB2YXJpYWJsZXMgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICAgKiBAcGFyYW0gc3JjT2JqZWN0cyBPYmplY3RzIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LCBpbiB0aGUgb3JkZXIgc3VwcGxpZWQuXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0c0luUGxhY2VXaXRoQ29udGV4dChjb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQsIGJhc2U6IEpzb25PYmplY3QsIHNyY09iamVjdHM6IEpzb25PYmplY3RbXSk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIGZvciAoY29uc3Qgc3JjIG9mIHNyY09iamVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlUmVzdWx0ID0gdGhpcy5tZXJnZU9iamVjdEluUGxhY2UoYmFzZSwgc3JjLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChtZXJnZVJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVJlc3VsdC53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoYmFzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVlcCBjbG9uZXMgYSBzdXBwbGllZCBKU09OIHZhbHVlLCBhcHBseWluZyBhbGwgZWRpdG9yIHJ1bGVzIGFuZCBhIGRlZmF1bHRcbiAgICAgKiBvciBvcHRpb25hbGx5IHN1cHBsaWVkIGNvbnRleHRcbiAgICAgKiBAcGFyYW0gc3JjIFRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSBjbG9uZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBBbiBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHN1cHBseWluZyB2YXJpYWJsZXMgYW5kIHJlZmVyZW5jZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvbmUoc3JjOiBKc29uVmFsdWUsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IEpzb25FZGl0b3JTdGF0ZSh0aGlzLCB0aGlzLm9wdGlvbnMsIGNvbnRleHQpO1xuICAgICAgICBsZXQgdmFsdWUgPSBzcmM7XG4gICAgICAgIGxldCB2YWx1ZVJlc3VsdCA9IHRoaXMuX2VkaXRWYWx1ZShzcmMsIHN0YXRlKTtcblxuICAgICAgICB3aGlsZSAodmFsdWVSZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVSZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB2YWx1ZVJlc3VsdCA9IHRoaXMuX2VkaXRWYWx1ZSh2YWx1ZSwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCh2YWx1ZVJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpIHx8ICh2YWx1ZVJlc3VsdC5kZXRhaWwgPT09ICdpZ25vcmUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlUmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSnNvblByaW1pdGl2ZSh2YWx1ZSkgfHwgKHZhbHVlID09PSBudWxsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKHt9LCB2YWx1ZSwgc3RhdGUuY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2xvbmVBcnJheSh2YWx1ZSwgc3RhdGUuY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCd1bmRlZmluZWRQcm9wZXJ0eVZhbHVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlWYWx1ZScsIGBDYW5ub3QgY29udmVydCBpbnZhbGlkIEpTT046IFwiJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9XCJgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQ6IEpzb25PYmplY3QsIHNyYzogSnNvbk9iamVjdCwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNyYykge1xuICAgICAgICAgICAgaWYgKHNyYy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcFJlc3VsdCA9IHRoaXMuX2VkaXRQcm9wZXJ0eShrZXksIHNyY1trZXldLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BSZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BSZXN1bHQuZGV0YWlsID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5kZWZlcihwcm9wUmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlUmVzdWx0ID0gdGhpcy5fbWVyZ2VPYmplY3RJblBsYWNlKHRhcmdldCwgcHJvcFJlc3VsdC52YWx1ZSwgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lcmdlUmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlUmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BSZXN1bHQuZGV0YWlsID09PSAnaW5hcHBsaWNhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVJlc3VsdCA9IHRoaXMuY2xvbmUoc3JjW2tleV0sIHN0YXRlLmNvbnRleHQpLm9uU3VjY2VzcygoY2xvbmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWVyZ2VDbG9uZWRQcm9wZXJ0eSh0YXJnZXQsIGtleSwgY2xvbmVkLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVJlc3VsdC5pc0ZhaWx1cmUoKSAmJiAodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogJHt2YWx1ZVJlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BSZXN1bHQuZGV0YWlsICE9PSAnaWdub3JlJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiAke3Byb3BSZXN1bHQubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBDYW5ub3QgbWVyZ2UgaW5oZXJpdGVkIHByb3BlcnRpZXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2xvbmVBcnJheShzcmM6IEpzb25BcnJheSwgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvbkFycmF5LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHNyYy5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKHYsIGNvbnRleHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFwRGV0YWlsZWRSZXN1bHRzPEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPihyZXN1bHRzLCBbJ2lnbm9yZSddKS5vblN1Y2Nlc3MoKGNvbnZlcnRlZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoY29udmVydGVkKTtcbiAgICAgICAgfSkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9tZXJnZUNsb25lZFByb3BlcnR5KHRhcmdldDogSnNvbk9iamVjdCwga2V5OiBzdHJpbmcsIG5ld1ZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRhcmdldFtrZXldO1xuXG4gICAgICAgIC8vIG1lcmdlIGlzIGNhbGxlZCByaWdodCBhZnRlciBjbG9uZSBzbyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgLy8gc2luY2UgY2xvbmUgaXRzZWxmIHdpbGwgaGF2ZSBmYWlsZWRcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgICAgaWYgKGlzSnNvblByaW1pdGl2ZShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25PYmplY3QobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNKc29uT2JqZWN0KGV4aXN0aW5nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZShleGlzdGluZywgbmV3VmFsdWUsIHN0YXRlLmNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbkFycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGlzSnNvbkFycmF5KGV4aXN0aW5nKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gZXhpc3RpbmcuY29uY2F0KC4uLm5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0W2tleV0sICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgSW52YWxpZCBKU09OOiAke0pTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKX1gLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZWRpdFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlUmVzdWx0ID0gcnVsZS5lZGl0UHJvcGVydHkoa2V5LCB2YWx1ZSwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQuaXNTdWNjZXNzKCkgfHwgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlUmVzdWx0ID0gcnVsZS5lZGl0VmFsdWUodmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpIHx8IChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9maW5hbGl6ZUFuZE1lcmdlKHRhcmdldDogSnNvbk9iamVjdCwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBkZWZlcnJlZCA9IHN0YXRlLmRlZmVycmVkO1xuICAgICAgICBpZiAoZGVmZXJyZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZmluYWxpemVQcm9wZXJ0aWVzKGRlZmVycmVkLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5QbGFjZVdpdGhDb250ZXh0KHN0YXRlLmNvbnRleHQsIHRhcmdldCwgcnVsZVJlc3VsdC52YWx1ZSkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGVSZXN1bHQuZGV0YWlsID09PSAnaWdub3JlJykge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXQsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChydWxlUmVzdWx0Lm1lc3NhZ2UsIHJ1bGVSZXN1bHQuZGV0YWlsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldCwgJ2VkaXRlZCcpO1xuICAgIH1cbn1cblxuIl19
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uRWRpdG9yL2pzb25FZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBS2lCO0FBQ2pCLDRDQVV1QjtBQUV2QixzQ0FBeUc7QUFFekcsdURBQW9HO0FBSXBHOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVU7SUFVbkIsWUFBc0IsT0FBb0MsRUFBRSxLQUF3QjtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxLQUFLLE9BQU87UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekQsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQW9DLEVBQUUsS0FBd0I7UUFDL0UsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUEyQjtRQUNyRCxP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QU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0o7QUE1UEQsZ0NBNFBDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vcnVsZXMnO1xuaW1wb3J0IHtcbiAgICBEZXRhaWxlZFJlc3VsdCxcbiAgICBSZXN1bHQsXG4gICAgY2FwdHVyZVJlc3VsdCxcbiAgICBmYWlsLFxuICAgIGZhaWxXaXRoRGV0YWlsLFxuICAgIG1hcERldGFpbGVkUmVzdWx0cyxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uQXJyYXksIGlzSnNvbk9iamVjdCwgaXNKc29uUHJpbWl0aXZlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvclJ1bGUsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlLCBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnMgfSBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5cbmltcG9ydCB7IEpzb25Db250ZXh0IH0gZnJvbSAnLi4vanNvbkNvbnRleHQnO1xuXG4vKipcbiAqIFRoZSBKc29uRWRpdG9yIGNhbiBiZSB1c2VkIHRvIGVkaXQgSlNPTiBvYmplY3RzIGluIHBsYWNlIG9yIHRvIGNsb25lIGFueSBKU09OIHZhbHVlLFxuICogYXBwbHlpbmcgYSBkZWZhdWx0IGNvbnRleHQgYW5kIG9wdGlvbmFsIHNldCBvZiBlZGl0b3IgcnVsZXMgdGhhdCB3ZXJlIHN1cHBsaWVkIGF0XG4gKiBpbml0aWFsaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3Ige1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2RlZmF1bHQ/OiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogRnVsbCBzZXQgb2YgQHNlZSBKc29uRWRpdG9yT3B0aW9ucyBpbiBlZmZlY3QgZm9yIHRoaXMgcnVsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnM7XG4gICAgcHJvdGVjdGVkIF9ydWxlczogSnNvbkVkaXRvclJ1bGVbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBKc29uRWRpdG9yLl9nZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zKS5nZXRWYWx1ZU9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcyB8fCBKc29uRWRpdG9yLmdldERlZmF1bHRSdWxlcyh0aGlzLm9wdGlvbnMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc2luZ2xldG9uIEBzZWUgSnNvbkVkaXRvciBmb3Igc2ltcGxlIHVzZS4gQXBwbGllcyBhbGwgcnVsZXNcbiAgICAgKiBidXQgd2l0aCBubyBkZWZhdWx0IGNvbnRleHQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQgZGVmYXVsdCgpOiBKc29uRWRpdG9yIHtcbiAgICAgICAgaWYgKCFKc29uRWRpdG9yLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0RGVmYXVsdFJ1bGVzKCkuZ2V0VmFsdWVPckRlZmF1bHQoKTtcbiAgICAgICAgICAgIEpzb25FZGl0b3IuX2RlZmF1bHQgPSBuZXcgSnNvbkVkaXRvcih1bmRlZmluZWQsIHJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvbkVkaXRvci5fZGVmYXVsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvclxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW4gY29udGV4dCBmb3IgdGhpcyBlZGl0b3JcbiAgICAgKiBAcGFyYW0gcnVsZXMgT3B0aW9uYWwgc2V0IG9mIHJ1bGVzIHVzZWQgYnkgdGhpcyBlZGl0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4sIHJ1bGVzPzogSnNvbkVkaXRvclJ1bGVbXSk6IFJlc3VsdDxKc29uRWRpdG9yPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yKG9wdGlvbnMsIHJ1bGVzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGVmYXVsdCBzZXQgb2YgcnVsZXMgdG8gYmUgYXBwbGllZCBmb3IgYSBnaXZlbiBzZXQgb2Ygb3B0aW9ucy5cbiAgICAgKiBCeSBkZWZhdWx0LCBhbGwgYXZhaWxhYmxlIHJ1bGVzICh0ZW1wbGF0ZXMsIGNvbmRpdGlvbmFscywgbXVsdGktdmFsdWUgYW5kIHJlZmVyZW5jZXMpXG4gICAgICogYXJlIGFwcGxpZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdXNlZCB0byBpbml0aWFsaXplIGFsbCBydWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVmYXVsdFJ1bGVzKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucyk6IFJlc3VsdDxKc29uRWRpdG9yUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzPEpzb25FZGl0b3JSdWxlPihbXG4gICAgICAgICAgICBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBDb25kaXRpb25hbEpzb25FZGl0b3JSdWxlLmNyZWF0ZShvcHRpb25zKSxcbiAgICAgICAgICAgIE11bHRpVmFsdWVKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgICAgICBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZS5jcmVhdGUob3B0aW9ucyksXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2dldERlZmF1bHRPcHRpb25zKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPik6IFJlc3VsdDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBjb250ZXh0OiBKc29uQ29udGV4dHx1bmRlZmluZWQgPSBvcHRpb25zPy5jb250ZXh0O1xuICAgICAgICBsZXQgdmFsaWRhdGlvbjogSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zfHVuZGVmaW5lZCA9IG9wdGlvbnM/LnZhbGlkYXRpb247XG4gICAgICAgIGlmICh2YWxpZGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiAnaWdub3JlJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoeyBjb250ZXh0LCB2YWxpZGF0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBhIHN1cHBsaWVkIHNvdXJjZSBvYmplY3QgaW50byBhIHN1cHBsaWVkIHRhcmdldCwgdXBkYXRpbmcgdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyYyBUaGUgc291cmNlIG9iamVjdCB0byBiZSBtZXJnZWRcbiAgICAgKiBAcGFyYW0gcnVudGltZUNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQ6IEpzb25PYmplY3QsIHNyYzogSnNvbk9iamVjdCwgcnVudGltZUNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IEpzb25FZGl0b3JTdGF0ZSh0aGlzLCB0aGlzLm9wdGlvbnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHNyYywgc3RhdGUpLm9uU3VjY2VzcygobWVyZ2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluYWxpemVBbmRNZXJnZShtZXJnZWQsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IGNvbnRleHQgc3VwcGxpZWQgYXQgY3JlYXRpb24gdGltZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICAgKiBAcGFyYW0gc3JjT2JqZWN0cyBPYmplY3RzIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0LCBpbiB0aGUgb3JkZXIgc3VwcGxpZWQuXG4gICAgICovXG4gICAgcHVibGljIG1lcmdlT2JqZWN0c0luUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQodGhpcy5vcHRpb25zLmNvbnRleHQsIHRhcmdldCwgc3JjT2JqZWN0cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIG11bHRpcGxlIHN1cHBsaWVkIHNvdXJjZSBvYmplY3RzIGludG8gYSBzdXBwbGllZCB0YXJnZXQsIHVwZGF0aW5nIHRoZSB0YXJnZXRcbiAgICAgKiBvYmplY3QgYW5kIHVzaW5nIGFuIG9wdGlvbmFsIGNvbnRleHQgc3VwcGxpZWQgaW4gdGhlIGNhbGwuXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAgICogQHBhcmFtIHNyY09iamVjdHMgT2JqZWN0cyB0byBiZSBtZXJnZWQgaW50byB0aGUgdGFyZ2V0IG9iamVjdCwgaW4gdGhlIG9yZGVyIHN1cHBsaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZU9iamVjdHNJblBsYWNlV2l0aENvbnRleHQoY29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBiYXNlOiBKc29uT2JqZWN0LCBzcmNPYmplY3RzOiBKc29uT2JqZWN0W10pOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHNyYyBvZiBzcmNPYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMubWVyZ2VPYmplY3RJblBsYWNlKGJhc2UsIHNyYywgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAobWVyZ2VSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VSZXN1bHQud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGJhc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZXAgY2xvbmVzIGEgc3VwcGxpZWQgSlNPTiB2YWx1ZSwgYXBwbHlpbmcgYWxsIGVkaXRvciBydWxlcyBhbmQgYSBkZWZhdWx0XG4gICAgICogb3Igb3B0aW9uYWxseSBzdXBwbGllZCBjb250ZXh0XG4gICAgICogQHBhcmFtIHNyYyBUaGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgY2xvbmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgQW4gb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCBzdXBwbHlpbmcgdmFyaWFibGVzIGFuZCByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIGNsb25lKHNyYzogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5ldyBKc29uRWRpdG9yU3RhdGUodGhpcywgdGhpcy5vcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgbGV0IHZhbHVlID0gc3JjO1xuICAgICAgICBsZXQgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUoc3JjLCBzdGF0ZSk7XG5cbiAgICAgICAgd2hpbGUgKHZhbHVlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlUmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgdmFsdWVSZXN1bHQgPSB0aGlzLl9lZGl0VmFsdWUodmFsdWUsIHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSB8fCAodmFsdWVSZXN1bHQuZGV0YWlsID09PSAnaWdub3JlJykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUodmFsdWUpIHx8ICh2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh2YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0SW5QbGFjZSh7fSwgdmFsdWUsIHN0YXRlLmNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbkFycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb25lQXJyYXkodmFsdWUsIHN0YXRlLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbigndW5kZWZpbmVkUHJvcGVydHlWYWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCBgQ2Fubm90IGNvbnZlcnQgaW52YWxpZCBKU09OOiBcIiR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfVwiYCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9tZXJnZU9iamVjdEluUGxhY2UodGFyZ2V0OiBKc29uT2JqZWN0LCBzcmM6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBSZXN1bHQ8SnNvbk9iamVjdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcmMpIHtcbiAgICAgICAgICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BSZXN1bHQgPSB0aGlzLl9lZGl0UHJvcGVydHkoa2V5LCBzcmNba2V5XSwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZGVmZXIocHJvcFJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZVJlc3VsdCA9IHRoaXMuX21lcmdlT2JqZWN0SW5QbGFjZSh0YXJnZXQsIHByb3BSZXN1bHQudmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZVJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCA9PT0gJ2luYXBwbGljYWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVSZXN1bHQgPSB0aGlzLmNsb25lKHNyY1trZXldLCBzdGF0ZS5jb250ZXh0KS5vblN1Y2Nlc3MoKGNsb25lZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlQ2xvbmVkUHJvcGVydHkodGFyZ2V0LCBrZXksIGNsb25lZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVSZXN1bHQuaXNGYWlsdXJlKCkgJiYgKHZhbHVlUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7dmFsdWVSZXN1bHQubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wUmVzdWx0LmRldGFpbCAhPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogJHtwcm9wUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogQ2Fubm90IG1lcmdlIGluaGVyaXRlZCBwcm9wZXJ0aWVzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Nsb25lQXJyYXkoc3JjOiBKc29uQXJyYXksIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25BcnJheSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBzcmMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSh2LCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcERldGFpbGVkUmVzdWx0czxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ocmVzdWx0cywgWydpZ25vcmUnXSkub25TdWNjZXNzKChjb252ZXJ0ZWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGNvbnZlcnRlZCk7XG4gICAgICAgIH0pLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVyZ2VDbG9uZWRQcm9wZXJ0eSh0YXJnZXQ6IEpzb25PYmplY3QsIGtleTogc3RyaW5nLCBuZXdWYWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0YXJnZXRba2V5XTtcblxuICAgICAgICAvLyBtZXJnZSBpcyBjYWxsZWQgcmlnaHQgYWZ0ZXIgY2xvbmUgc28gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAgIC8vIHNpbmNlIGNsb25lIGl0c2VsZiB3aWxsIGhhdmUgZmFpbGVkXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICAgIGlmIChpc0pzb25QcmltaXRpdmUobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uT2JqZWN0KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKGlzSnNvbk9iamVjdChleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdEluUGxhY2UoZXhpc3RpbmcsIG5ld1ZhbHVlLCBzdGF0ZS5jb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwobmV3VmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb25BcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0pzb25BcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IGV4aXN0aW5nLmNvbmNhdCguLi5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHRhcmdldFtrZXldLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYEludmFsaWQgSlNPTjogJHtKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSl9YCwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFByb3BlcnR5KGtleSwgdmFsdWUsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpIHx8IChydWxlUmVzdWx0LmRldGFpbCAhPT0gJ2luYXBwbGljYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgcnVsZVJlc3VsdCA9IHJ1bGUuZWRpdFZhbHVlKHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocnVsZVJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocnVsZVJlc3VsdC5kZXRhaWwgIT09ICdpbmFwcGxpY2FibGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlUmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmluYWxpemVBbmRNZXJnZSh0YXJnZXQ6IEpzb25PYmplY3QsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29uc3QgZGVmZXJyZWQgPSBzdGF0ZS5kZWZlcnJlZDtcbiAgICAgICAgaWYgKGRlZmVycmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBydWxlLmZpbmFsaXplUHJvcGVydGllcyhkZWZlcnJlZCwgc3RhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChydWxlUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlT2JqZWN0c0luUGxhY2VXaXRoQ29udGV4dChzdGF0ZS5jb250ZXh0LCB0YXJnZXQsIHJ1bGVSZXN1bHQudmFsdWUpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlUmVzdWx0LmRldGFpbCA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VlZFdpdGhEZXRhaWwodGFyZ2V0LCAnZWRpdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGVSZXN1bHQuZGV0YWlsICE9PSAnaW5hcHBsaWNhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwocnVsZVJlc3VsdC5tZXNzYWdlLCBydWxlUmVzdWx0LmRldGFpbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbCh0YXJnZXQsICdlZGl0ZWQnKTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { DetailedResult } from '@fgv/ts-utils';
2
2
  import { JsonObject, JsonValue } from '../common';
3
3
  import { JsonEditorState } from './jsonEditorState';
4
- export declare type JsonEditFailureReason = 'ignore' | 'inapplicable' | 'edited' | 'error';
5
- export declare type JsonPropertyEditFailureReason = JsonEditFailureReason | 'deferred';
4
+ export type JsonEditFailureReason = 'ignore' | 'inapplicable' | 'edited' | 'error';
5
+ export type JsonPropertyEditFailureReason = JsonEditFailureReason | 'deferred';
6
6
  export interface JsonEditorRule {
7
7
  /**
8
8
  * Called by a JSON editor to possibly edit one of the properties being merged into a target object.