@ruvector/ruvllm 2.5.7 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,9 +41,18 @@ const DEFAULT_TRAINING_CONFIG = {
41
41
  checkpointInterval: 1,
42
42
  ewcLambda: 2000,
43
43
  validationSplit: 0.1,
44
+ keepBestCheckpoint: '',
44
45
  };
45
- /** On-disk checkpoint envelope (versioned for forward compatibility). */
46
- const CHECKPOINT_FORMAT_VERSION = 1;
46
+ /**
47
+ * On-disk checkpoint envelope version.
48
+ *
49
+ * v1 — {format, version:1, epoch, step, loss, weights, timestamp}. No adapter
50
+ * geometry, so loadCheckpoint() could not detect a shape mismatch.
51
+ * v2 — adds {config:{inputDim, outputDim, rank}, pipelineConfig:{learningRate,
52
+ * batchSize}} so loadCheckpoint() can reject weights that don't fit the
53
+ * current adapter. v1 files still load (back-compat) with no shape check.
54
+ */
55
+ const CHECKPOINT_FORMAT_VERSION = 2;
47
56
  /**
48
57
  * Learning Rate Scheduler
49
58
  */
@@ -204,6 +213,8 @@ export class TrainingPipeline {
204
213
  this.currentStep = 0;
205
214
  this.bestValLoss = Infinity;
206
215
  this.patienceCounter = 0;
216
+ /** Set by resumeFrom(); makes the next train() continue instead of restart. */
217
+ this.resumePending = false;
207
218
  this.config = { ...DEFAULT_TRAINING_CONFIG, ...config };
208
219
  this.adapter = adapter || new LoraAdapter({ rank: 8 });
209
220
  this.ewcManager = new EwcManager(this.config.ewcLambda);
@@ -226,15 +237,34 @@ export class TrainingPipeline {
226
237
  }
227
238
  }
228
239
  /**
229
- * Run training
240
+ * Run training.
241
+ *
242
+ * When {@link resumeFrom} primed the pipeline, this continues from the
243
+ * restored epoch (running the remaining epochs of `config.epochs`) and
244
+ * advances the LR scheduler to the restored step so the schedule is
245
+ * unbroken; metrics history is preserved. Without a resume the run is
246
+ * unchanged from a fresh start — same reset, same scheduler, same result
247
+ * shape as before this method learned to resume.
230
248
  */
231
249
  train() {
250
+ const resuming = this.resumePending;
251
+ this.resumePending = false;
252
+ // currentEpoch is the last COMPLETED epoch index, so resume the next one.
253
+ const startEpoch = resuming ? this.currentEpoch + 1 : 0;
232
254
  const totalSteps = this.batches.length * this.config.epochs;
233
255
  this.scheduler = new LRScheduler(this.config, totalSteps);
234
- this.metrics.reset();
256
+ if (resuming) {
257
+ // Fast-forward the fresh scheduler to the restored step.
258
+ for (let s = 0; s < this.currentStep && s < totalSteps; s++) {
259
+ this.scheduler.step();
260
+ }
261
+ }
262
+ else {
263
+ this.metrics.reset();
264
+ }
235
265
  this.adapter.startTraining(this.config.learningRate);
236
266
  let earlyStopped = false;
237
- for (let epoch = 0; epoch < this.config.epochs; epoch++) {
267
+ for (let epoch = startEpoch; epoch < this.config.epochs; epoch++) {
238
268
  this.currentEpoch = epoch;
239
269
  // Shuffle batches
240
270
  const shuffledBatches = this.shuffleBatches();
@@ -259,6 +289,10 @@ export class TrainingPipeline {
259
289
  if (valLoss < this.bestValLoss) {
260
290
  this.bestValLoss = valLoss;
261
291
  this.patienceCounter = 0;
292
+ // Retain the best-validation model to a stable path when configured.
293
+ if (this.config.keepBestCheckpoint) {
294
+ this.saveCheckpoint(this.config.keepBestCheckpoint);
295
+ }
262
296
  }
263
297
  else {
264
298
  this.patienceCounter++;
@@ -371,6 +405,17 @@ export class TrainingPipeline {
371
405
  const envelope = {
372
406
  format: 'ruvllm-checkpoint',
373
407
  version: CHECKPOINT_FORMAT_VERSION,
408
+ // Adapter geometry + pipeline hyperparams — lets loadCheckpoint()
409
+ // reject weights that don't fit the current adapter (v2, see below).
410
+ config: {
411
+ inputDim: this.adapter.getInputDim(),
412
+ outputDim: this.adapter.getOutputDim(),
413
+ rank: this.adapter.getConfig().rank,
414
+ },
415
+ pipelineConfig: {
416
+ learningRate: this.config.learningRate,
417
+ batchSize: this.config.batchSize,
418
+ },
374
419
  ...checkpoint,
375
420
  };
376
421
  const serialized = JSON.stringify(envelope);
@@ -384,6 +429,12 @@ export class TrainingPipeline {
384
429
  /**
385
430
  * Load a checkpoint — by in-memory index, or from a file previously
386
431
  * written by `saveCheckpoint(path)`.
432
+ *
433
+ * For v2 files, the envelope's adapter geometry is checked against the
434
+ * current adapter first; a mismatch (different inputDim/outputDim/rank)
435
+ * returns false and leaves the adapter untouched, so mis-shaped weights
436
+ * are never silently restored. v1 files carry no geometry and load as
437
+ * before (back-compat).
387
438
  */
388
439
  loadCheckpoint(indexOrPath) {
389
440
  let checkpoint;
@@ -396,6 +447,14 @@ export class TrainingPipeline {
396
447
  if (parsed?.format !== 'ruvllm-checkpoint' || typeof parsed.weights !== 'string') {
397
448
  return false;
398
449
  }
450
+ if (typeof parsed.version === 'number' && parsed.version >= 2 && parsed.config) {
451
+ const c = parsed.config;
452
+ if (c.inputDim !== this.adapter.getInputDim() ||
453
+ c.outputDim !== this.adapter.getOutputDim() ||
454
+ c.rank !== this.adapter.getConfig().rank) {
455
+ return false;
456
+ }
457
+ }
399
458
  checkpoint = parsed;
400
459
  }
401
460
  catch {
@@ -409,6 +468,26 @@ export class TrainingPipeline {
409
468
  this.currentStep = checkpoint.step;
410
469
  return true;
411
470
  }
471
+ /**
472
+ * Resume training from a checkpoint file.
473
+ *
474
+ * Loads the checkpoint (with the same v2 shape validation as
475
+ * {@link loadCheckpoint}) AND primes the pipeline so the next {@link train}
476
+ * call continues from the restored epoch/step rather than restarting. This
477
+ * is the explicit, least-invasive resume path: a plain `loadCheckpoint()`
478
+ * still restores weights only (train() from scratch), while `resumeFrom()`
479
+ * additionally makes the subsequent train() pick up where the run stopped.
480
+ *
481
+ * @returns true when the checkpoint loaded and resume was primed; false if
482
+ * the file was missing, foreign, or shape-mismatched (in which case
483
+ * no resume is armed).
484
+ */
485
+ resumeFrom(path) {
486
+ if (!this.loadCheckpoint(path))
487
+ return false;
488
+ this.resumePending = true;
489
+ return true;
490
+ }
412
491
  /**
413
492
  * Get current metrics
414
493
  */
@@ -452,6 +531,7 @@ export class TrainingPipeline {
452
531
  this.currentStep = 0;
453
532
  this.bestValLoss = Infinity;
454
533
  this.patienceCounter = 0;
534
+ this.resumePending = false;
455
535
  this.metrics.reset();
456
536
  this.adapter.reset();
457
537
  }
@@ -520,4 +600,4 @@ export class TrainingFactory {
520
600
  });
521
601
  }
522
602
  }
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW5pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhaW5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBNkI7SUFDeEQsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtJQUNWLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxHQUFHO0lBQ2pCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxHQUFHO0NBQ3JCLENBQUM7QUFzRUYseUVBQXlFO0FBQ3pFLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFNdEIsWUFBWSxNQUFnQyxFQUFFLFVBQWtCO1FBSHhELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSTlCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsUUFBUSxJQUFJ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O1lBQ3BCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTO1lBQ1QscUJBQXFCLEVBQUUsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztZQUMxQixZQUFZLEVBQUUsTUFBTTtZQUNwQixNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFpbmluZyBQaXBlbGluZSBmb3IgU09OQVxuICpcbiAqIENvbXByZWhlbnNpdmUgdHJhaW5pbmcgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBtZXRyaWNzIHRyYWNraW5nLFxuICogbGVhcm5pbmcgcmF0ZSBzY2hlZHVsaW5nLCBhbmQgY2hlY2twb2ludCBtYW5hZ2VtZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBUcmFpbmluZ1BpcGVsaW5lLCBUcmFpbmluZ0NvbmZpZyB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHBpcGVsaW5lID0gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICogICBsZWFybmluZ1JhdGU6IDAuMDAxLFxuICogICBiYXRjaFNpemU6IDMyLFxuICogICBlcG9jaHM6IDEwLFxuICogfSk7XG4gKlxuICogLy8gQWRkIHRyYWluaW5nIGRhdGFcbiAqIHBpcGVsaW5lLmFkZEJhdGNoKGlucHV0cywgdGFyZ2V0cywgcXVhbGl0aWVzKTtcbiAqXG4gKiAvLyBSdW4gdHJhaW5pbmdcbiAqIGNvbnN0IHJlc3VsdCA9IHBpcGVsaW5lLnRyYWluKCk7XG4gKiBjb25zb2xlLmxvZyhgRmluYWwgbG9zczogJHtyZXN1bHQuZmluYWxMb3NzfWApO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgd3JpdGVGaWxlU3luYywgcmVhZEZpbGVTeW5jLCBta2RpclN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBFbWJlZGRpbmcsIFRyYWluaW5nQ29uZmlnLCBUcmFpbmluZ1Jlc3VsdCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTG9yYUFkYXB0ZXIgfSBmcm9tICcuL2xvcmEnO1xuaW1wb3J0IHsgRXdjTWFuYWdlciB9IGZyb20gJy4vc29uYSc7XG5cbi8qKlxuICogRGVmYXVsdCB0cmFpbmluZyBjb25maWdcbiAqL1xuY29uc3QgREVGQVVMVF9UUkFJTklOR19DT05GSUc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiA9IHtcbiAgbGVhcm5pbmdSYXRlOiAwLjAwMSxcbiAgYmF0Y2hTaXplOiAzMixcbiAgZXBvY2hzOiAxMCxcbiAgc2NoZWR1bGVyOiAnY29zaW5lJyxcbiAgd2FybXVwU3RlcHM6IDEwMCxcbiAgd2VpZ2h0RGVjYXk6IDAuMDEsXG4gIGdyYWRpZW50Q2xpcDogMS4wLFxuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U6IDMsXG4gIGNoZWNrcG9pbnRJbnRlcnZhbDogMSxcbiAgZXdjTGFtYmRhOiAyMDAwLFxuICB2YWxpZGF0aW9uU3BsaXQ6IDAuMSxcbn07XG5cbi8qKlxuICogVHJhaW5pbmcgbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nTWV0cmljcyB7XG4gIC8qKiBDdXJyZW50IGVwb2NoICovXG4gIGVwb2NoOiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IHN0ZXAgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyAqL1xuICB0cmFpbkxvc3M6IG51bWJlcjtcbiAgLyoqIFZhbGlkYXRpb24gbG9zcyAqL1xuICB2YWxMb3NzOiBudW1iZXI7XG4gIC8qKiBMZWFybmluZyByYXRlICovXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xuICAvKiogR3JhZGllbnQgbm9ybSAqL1xuICBncmFkTm9ybTogbnVtYmVyO1xuICAvKiogU3RlcHMgcGVyIHNlY29uZCAqL1xuICBzdGVwc1BlclNlY29uZDogbnVtYmVyO1xuICAvKiogRVRBIGluIHNlY29uZHMgKi9cbiAgZXRhU2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWluaW5nIGRhdGEgYmF0Y2hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0JhdGNoIHtcbiAgLyoqIElucHV0IGVtYmVkZGluZ3MgKi9cbiAgaW5wdXRzOiBFbWJlZGRpbmdbXTtcbiAgLyoqIFRhcmdldCBvdXRwdXRzICovXG4gIHRhcmdldHM6IEVtYmVkZGluZ1tdO1xuICAvKiogUXVhbGl0eSBzY29yZXMgKi9cbiAgcXVhbGl0aWVzOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBDaGVja3BvaW50IGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja3BvaW50IHtcbiAgLyoqIEVwb2NoIG51bWJlciAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogU3RlcCBudW1iZXIgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyBhdCBjaGVja3BvaW50ICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHdlaWdodHMgKHNlcmlhbGl6ZWQpICovXG4gIHdlaWdodHM6IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBzYXZlQ2hlY2twb2ludCgpIGNhbGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2twb2ludFNhdmVSZXN1bHQge1xuICAvKiogSW5kZXggb2YgdGhlIGNoZWNrcG9pbnQgaW4gdGhlIGluLW1lbW9yeSBjaGVja3BvaW50IGxpc3QgKi9cbiAgaW5kZXg6IG51bWJlcjtcbiAgLyoqIEVwb2NoIHRoZSBjaGVja3BvaW50IGNhcHR1cmVkICovXG4gIGVwb2NoOiBudW1iZXI7XG4gIC8qKiBTdGVwIHRoZSBjaGVja3BvaW50IGNhcHR1cmVkICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCB0aW1lICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIEFic29sdXRlIG9yIGFzLWdpdmVuIGZpbGUgcGF0aCwgd2hlbiBwZXJzaXN0ZWQgdG8gZGlzayAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogU2VyaWFsaXplZCBzaXplIGluIGJ5dGVzLCB3aGVuIHBlcnNpc3RlZCB0byBkaXNrICovXG4gIGJ5dGVzPzogbnVtYmVyO1xufVxuXG4vKiogT24tZGlzayBjaGVja3BvaW50IGVudmVsb3BlICh2ZXJzaW9uZWQgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eSkuICovXG5jb25zdCBDSEVDS1BPSU5UX0ZPUk1BVF9WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBMZWFybmluZyBSYXRlIFNjaGVkdWxlclxuICovXG5leHBvcnQgY2xhc3MgTFJTY2hlZHVsZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+O1xuICBwcml2YXRlIGluaXRpYWxMUjogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbnRTdGVwOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHRvdGFsU3RlcHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiwgdG90YWxTdGVwczogbnVtYmVyKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsTFIgPSBjb25maWcubGVhcm5pbmdSYXRlO1xuICAgIHRoaXMudG90YWxTdGVwcyA9IHRvdGFsU3RlcHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxlYXJuaW5nIHJhdGUgZm9yIGN1cnJlbnQgc3RlcFxuICAgKi9cbiAgZ2V0TFIoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLnNjaGVkdWxlcikge1xuICAgICAgY2FzZSAnY29uc3RhbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFI7XG5cbiAgICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICgxIC0gdGhpcy5jdXJyZW50U3RlcCAvIHRoaXMudG90YWxTdGVwcyk7XG5cbiAgICAgIGNhc2UgJ2Nvc2luZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqIDAuNSAqICgxICsgTWF0aC5jb3MoTWF0aC5QSSAqIHRoaXMuY3VycmVudFN0ZXAgLyB0aGlzLnRvdGFsU3RlcHMpKTtcblxuICAgICAgY2FzZSAnd2FybXVwJzpcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPCB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICh0aGlzLmN1cnJlbnRTdGVwIC8gdGhpcy5jb25maWcud2FybXVwU3RlcHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvc2luZSBkZWNheSBhZnRlciB3YXJtdXBcbiAgICAgICAgY29uc3QgZGVjYXlTdGVwcyA9IHRoaXMudG90YWxTdGVwcyAtIHRoaXMuY29uZmlnLndhcm11cFN0ZXBzO1xuICAgICAgICBjb25zdCBkZWNheVByb2dyZXNzID0gKHRoaXMuY3VycmVudFN0ZXAgLSB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykgLyBkZWNheVN0ZXBzO1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFIgKiAwLjUgKiAoMSArIE1hdGguY29zKE1hdGguUEkgKiBkZWNheVByb2dyZXNzKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RlcCB0aGUgc2NoZWR1bGVyXG4gICAqL1xuICBzdGVwKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXArKztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBzY2hlZHVsZXJcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xuICB9XG59XG5cbi8qKlxuICogVHJhaW5pbmcgTWV0cmljcyBUcmFja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXRyaWNzVHJhY2tlciB7XG4gIHByaXZhdGUgbG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgdmFsTG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgZ3JhZE5vcm1IaXN0b3J5OiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBzdGVwVGltZXM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0cmFpbmluZyBsb3NzXG4gICAqL1xuICByZWNvcmRMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICByZWNvcmRWYWxMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsTG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgZ3JhZGllbnQgbm9ybVxuICAgKi9cbiAgcmVjb3JkR3JhZE5vcm0obm9ybTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ncmFkTm9ybUhpc3RvcnkucHVzaChub3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgc3RlcCB0aW1lXG4gICAqL1xuICByZWNvcmRTdGVwVGltZShtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwVGltZXMucHVzaChtcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF2ZXJhZ2UgbG9zcyBvdmVyIGxhc3QgTiBzdGVwc1xuICAgKi9cbiAgYXZnTG9zcyhuOiBudW1iZXIgPSAxMDApOiBudW1iZXIge1xuICAgIGNvbnN0IHJlY2VudCA9IHRoaXMubG9zc0hpc3Rvcnkuc2xpY2UoLW4pO1xuICAgIHJldHVybiByZWNlbnQubGVuZ3RoID4gMCA/IHJlY2VudC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIHJlY2VudC5sZW5ndGggOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhdmVyYWdlIHZhbGlkYXRpb24gbG9zc1xuICAgKi9cbiAgYXZnVmFsTG9zcyhuOiBudW1iZXIgPSAxMCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVjZW50ID0gdGhpcy52YWxMb3NzSGlzdG9yeS5zbGljZSgtbik7XG4gICAgcmV0dXJuIHJlY2VudC5sZW5ndGggPiAwID8gcmVjZW50LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gcmVjZW50Lmxlbmd0aCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0ZXBzIHBlciBzZWNvbmRcbiAgICovXG4gIHN0ZXBzUGVyU2Vjb25kKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgYXZnU3RlcFRpbWUgPSB0aGlzLnN0ZXBUaW1lcy5zbGljZSgtMTAwKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIE1hdGgubWluKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCwgMTAwKTtcbiAgICByZXR1cm4gYXZnU3RlcFRpbWUgPiAwID8gMTAwMCAvIGF2Z1N0ZXBUaW1lIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRVRBIGluIHNlY29uZHNcbiAgICovXG4gIGV0YShyZW1haW5pbmdTdGVwczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzcHMgPSB0aGlzLnN0ZXBzUGVyU2Vjb25kKCk7XG4gICAgcmV0dXJuIHNwcyA+IDAgPyByZW1haW5pbmdTdGVwcyAvIHNwcyA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJlc3QgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICBiZXN0VmFsTG9zcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZhbExvc3NIaXN0b3J5Lmxlbmd0aCA+IDAgPyBNYXRoLm1pbiguLi50aGlzLnZhbExvc3NIaXN0b3J5KSA6IEluZmluaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0b3RhbCBkdXJhdGlvblxuICAgKi9cbiAgZHVyYXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmxvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRpb24gbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRWYWxMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbExvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0cmFja2VyXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvc3NIaXN0b3J5ID0gW107XG4gICAgdGhpcy52YWxMb3NzSGlzdG9yeSA9IFtdO1xuICAgIHRoaXMuZ3JhZE5vcm1IaXN0b3J5ID0gW107XG4gICAgdGhpcy5zdGVwVGltZXMgPSBbXTtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFpbmluZyBQaXBlbGluZVxuICpcbiAqIEZ1bGwgdHJhaW5pbmcgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNPTkEgbW9kZWxzLlxuICovXG5leHBvcnQgY2xhc3MgVHJhaW5pbmdQaXBlbGluZSB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxUcmFpbmluZ0NvbmZpZz47XG4gIHByaXZhdGUgYWRhcHRlcjogTG9yYUFkYXB0ZXI7XG4gIHByaXZhdGUgZXdjTWFuYWdlcjogRXdjTWFuYWdlcjtcbiAgcHJpdmF0ZSBtZXRyaWNzOiBNZXRyaWNzVHJhY2tlcjtcbiAgcHJpdmF0ZSBzY2hlZHVsZXI6IExSU2NoZWR1bGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYmF0Y2hlczogVHJhaW5pbmdCYXRjaFtdID0gW107XG4gIHByaXZhdGUgY2hlY2twb2ludHM6IENoZWNrcG9pbnRbXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRFcG9jaDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBiZXN0VmFsTG9zczogbnVtYmVyID0gSW5maW5pdHk7XG4gIHByaXZhdGUgcGF0aWVuY2VDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFRyYWluaW5nQ29uZmlnLCBhZGFwdGVyPzogTG9yYUFkYXB0ZXIpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9UUkFJTklOR19DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgfHwgbmV3IExvcmFBZGFwdGVyKHsgcmFuazogOCB9KTtcbiAgICB0aGlzLmV3Y01hbmFnZXIgPSBuZXcgRXdjTWFuYWdlcih0aGlzLmNvbmZpZy5ld2NMYW1iZGEpO1xuICAgIHRoaXMubWV0cmljcyA9IG5ldyBNZXRyaWNzVHJhY2tlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBiYXRjaFxuICAgKi9cbiAgYWRkQmF0Y2goaW5wdXRzOiBFbWJlZGRpbmdbXSwgdGFyZ2V0czogRW1iZWRkaW5nW10sIHF1YWxpdGllczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMucHVzaCh7IGlucHV0cywgdGFyZ2V0cywgcXVhbGl0aWVzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBkYXRhXG4gICAqL1xuICBhZGREYXRhKGRhdGE6IEFycmF5PHsgaW5wdXQ6IEVtYmVkZGluZzsgdGFyZ2V0OiBFbWJlZGRpbmc7IHF1YWxpdHk6IG51bWJlciB9Pik6IHZvaWQge1xuICAgIC8vIEdyb3VwIGludG8gYmF0Y2hlc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gdGhpcy5jb25maWcuYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBiYXRjaCA9IGRhdGEuc2xpY2UoaSwgaSArIHRoaXMuY29uZmlnLmJhdGNoU2l6ZSk7XG4gICAgICB0aGlzLmFkZEJhdGNoKFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLmlucHV0KSxcbiAgICAgICAgYmF0Y2gubWFwKGQgPT4gZC50YXJnZXQpLFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLnF1YWxpdHkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdHJhaW5pbmdcbiAgICovXG4gIHRyYWluKCk6IFRyYWluaW5nUmVzdWx0IHtcbiAgICBjb25zdCB0b3RhbFN0ZXBzID0gdGhpcy5iYXRjaGVzLmxlbmd0aCAqIHRoaXMuY29uZmlnLmVwb2NocztcbiAgICB0aGlzLnNjaGVkdWxlciA9IG5ldyBMUlNjaGVkdWxlcih0aGlzLmNvbmZpZywgdG90YWxTdGVwcyk7XG4gICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XG4gICAgdGhpcy5hZGFwdGVyLnN0YXJ0VHJhaW5pbmcodGhpcy5jb25maWcubGVhcm5pbmdSYXRlKTtcblxuICAgIGxldCBlYXJseVN0b3BwZWQgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGVwb2NoID0gMDsgZXBvY2ggPCB0aGlzLmNvbmZpZy5lcG9jaHM7IGVwb2NoKyspIHtcbiAgICAgIHRoaXMuY3VycmVudEVwb2NoID0gZXBvY2g7XG5cbiAgICAgIC8vIFNodWZmbGUgYmF0Y2hlc1xuICAgICAgY29uc3Qgc2h1ZmZsZWRCYXRjaGVzID0gdGhpcy5zaHVmZmxlQmF0Y2hlcygpO1xuXG4gICAgICAvLyBTcGxpdCBpbnRvIHRyYWluL3ZhbFxuICAgICAgY29uc3QgdmFsU2l6ZSA9IE1hdGguZmxvb3Ioc2h1ZmZsZWRCYXRjaGVzLmxlbmd0aCAqIHRoaXMuY29uZmlnLnZhbGlkYXRpb25TcGxpdCk7XG4gICAgICBjb25zdCB0cmFpbkJhdGNoZXMgPSBzaHVmZmxlZEJhdGNoZXMuc2xpY2UodmFsU2l6ZSk7XG4gICAgICBjb25zdCB2YWxCYXRjaGVzID0gc2h1ZmZsZWRCYXRjaGVzLnNsaWNlKDAsIHZhbFNpemUpO1xuXG4gICAgICAvLyBUcmFpbmluZyBlcG9jaFxuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiB0cmFpbkJhdGNoZXMpIHtcbiAgICAgICAgY29uc3Qgc3RlcFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgbG9zcyA9IHRoaXMudHJhaW5TdGVwKGJhdGNoKTtcbiAgICAgICAgdGhpcy5tZXRyaWNzLnJlY29yZExvc3MobG9zcyk7XG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRTdGVwVGltZShEYXRlLm5vdygpIC0gc3RlcFN0YXJ0KTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZXIuc3RlcCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwKys7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRpb25cbiAgICAgIGlmICh2YWxCYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsTG9zcyA9IHRoaXMudmFsaWRhdGUodmFsQmF0Y2hlcyk7XG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRWYWxMb3NzKHZhbExvc3MpO1xuXG4gICAgICAgIC8vIEVhcmx5IHN0b3BwaW5nXG4gICAgICAgIGlmICh2YWxMb3NzIDwgdGhpcy5iZXN0VmFsTG9zcykge1xuICAgICAgICAgIHRoaXMuYmVzdFZhbExvc3MgPSB2YWxMb3NzO1xuICAgICAgICAgIHRoaXMucGF0aWVuY2VDb3VudGVyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhdGllbmNlQ291bnRlcisrO1xuICAgICAgICAgIGlmICh0aGlzLnBhdGllbmNlQ291bnRlciA+PSB0aGlzLmNvbmZpZy5lYXJseVN0b3BwaW5nUGF0aWVuY2UpIHtcbiAgICAgICAgICAgIGVhcmx5U3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2twb2ludFxuICAgICAgaWYgKChlcG9jaCArIDEpICUgdGhpcy5jb25maWcuY2hlY2twb2ludEludGVydmFsID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2F2ZUNoZWNrcG9pbnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFkYXB0ZXIuZW5kVHJhaW5pbmcoKTtcblxuICAgIC8vIFJlZ2lzdGVyIHdpdGggRVdDIGZvciBjb250aW51YWwgbGVhcm5pbmdcbiAgICBjb25zdCB3ZWlnaHRzID0gdGhpcy5hZGFwdGVyLm1lcmdlKCkuZmxhdCgpO1xuICAgIHRoaXMuZXdjTWFuYWdlci5yZWdpc3RlclRhc2soYHRhc2stJHtEYXRlLm5vdygpfWAsIHdlaWdodHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVwb2NoczogdGhpcy5jdXJyZW50RXBvY2ggKyAxLFxuICAgICAgc3RlcHM6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBmaW5hbExvc3M6IHRoaXMubWV0cmljcy5hdmdMb3NzKDEwMCksXG4gICAgICBiZXN0VmFsTG9zczogdGhpcy5iZXN0VmFsTG9zcyxcbiAgICAgIGR1cmF0aW9uTXM6IHRoaXMubWV0cmljcy5kdXJhdGlvbigpLFxuICAgICAgbG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRMb3NzSGlzdG9yeSgpLFxuICAgICAgdmFsTG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRWYWxMb3NzSGlzdG9yeSgpLFxuICAgICAgZWFybHlTdG9wcGVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2luZ2xlIHRyYWluaW5nIHN0ZXBcbiAgICovXG4gIHByaXZhdGUgdHJhaW5TdGVwKGJhdGNoOiBUcmFpbmluZ0JhdGNoKTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWxMb3NzID0gMDtcbiAgICBjb25zdCBsciA9IHRoaXMuc2NoZWR1bGVyPy5nZXRMUigpIHx8IHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGJhdGNoLmlucHV0c1tpXTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG4gICAgICBjb25zdCBxdWFsaXR5ID0gYmF0Y2gucXVhbGl0aWVzW2ldO1xuXG4gICAgICAvLyBGb3J3YXJkIHBhc3NcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGlucHV0KTtcblxuICAgICAgLy8gQ29tcHV0ZSBsb3NzIChNU0Ugd2VpZ2h0ZWQgYnkgcXVhbGl0eSlcbiAgICAgIGNvbnN0IGdyYWRPdXRwdXQ6IG51bWJlcltdID0gW107XG4gICAgICBsZXQgbG9zcyA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBkaWZmID0gb3V0cHV0W2pdIC0gKHRhcmdldFtqXSB8fCAwKTtcbiAgICAgICAgbG9zcyArPSBkaWZmICogZGlmZjtcbiAgICAgICAgZ3JhZE91dHB1dC5wdXNoKDIgKiBkaWZmICogcXVhbGl0eSk7IC8vIFF1YWxpdHktd2VpZ2h0ZWQgZ3JhZGllbnRcbiAgICAgIH1cbiAgICAgIGxvc3MgPSAobG9zcyAvIG91dHB1dC5sZW5ndGgpICogcXVhbGl0eTtcblxuICAgICAgLy8gQWRkIEVXQyBwZW5hbHR5XG4gICAgICBjb25zdCBld2NQZW5hbHR5ID0gdGhpcy5ld2NNYW5hZ2VyLmNvbXB1dGVQZW5hbHR5KHRoaXMuYWRhcHRlci5tZXJnZSgpLmZsYXQoKSk7XG4gICAgICBsb3NzICs9IGV3Y1BlbmFsdHkgKiAwLjAwMTtcblxuICAgICAgLy8gQmFja3dhcmQgcGFzc1xuICAgICAgdGhpcy5hZGFwdGVyLmJhY2t3YXJkKGlucHV0LCBncmFkT3V0cHV0LCBscik7XG5cbiAgICAgIHRvdGFsTG9zcyArPSBsb3NzO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbExvc3MgLyBiYXRjaC5pbnB1dHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gcGFzc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZShiYXRjaGVzOiBUcmFpbmluZ0JhdGNoW10pOiBudW1iZXIge1xuICAgIGxldCB0b3RhbExvc3MgPSAwO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGJhdGNoLmlucHV0c1tpXSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG5cbiAgICAgICAgbGV0IGxvc3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBvdXRwdXRbal0gLSAodGFyZ2V0W2pdIHx8IDApO1xuICAgICAgICAgIGxvc3MgKz0gZGlmZiAqIGRpZmY7XG4gICAgICAgIH1cbiAgICAgICAgdG90YWxMb3NzICs9IGxvc3MgLyBvdXRwdXQubGVuZ3RoO1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb3VudCA+IDAgPyB0b3RhbExvc3MgLyBjb3VudCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIGNoZWNrcG9pbnQuXG4gICAqXG4gICAqIEFsd2F5cyByZWNvcmRzIHRoZSBjaGVja3BvaW50IGluIHRoZSBpbi1tZW1vcnkgbGlzdCAodGhlIGJlaGF2aW9yIHRoZVxuICAgKiB0cmFpbmluZyBsb29wIHJlbGllcyBvbikuIFdoZW4gYHBhdGhgIGlzIGdpdmVuLCBhZGRpdGlvbmFsbHkgcGVyc2lzdHNcbiAgICogdGhlIGNoZWNrcG9pbnQgdG8gZGlzayBhcyB2ZXJzaW9uZWQgSlNPTiDigJQgYmVmb3JlIHYyLjUuNyB0aGlzIG1ldGhvZFxuICAgKiB3YXMgcHJpdmF0ZSwgaWdub3JlZCBhbnkgYXJndW1lbnQsIGFuZCBuZXZlciB3cm90ZSBhIGZpbGUsIHNvIGNhbGxlcnNcbiAgICogcGFzc2luZyBhIHBhdGggZ290IGB1bmRlZmluZWRgIGJhY2sgYW5kIHplcm8gYnl0ZXMgb24gZGlzay5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggT3B0aW9uYWwgZmlsZSBwYXRoOyBwYXJlbnQgZGlyZWN0b3JpZXMgYXJlIGNyZWF0ZWQuXG4gICAqIEByZXR1cm5zIFdoZXJlIHRoZSBjaGVja3BvaW50IHdlbnQg4oCUIGluLW1lbW9yeSBpbmRleCwgYW5kIGZpbGVcbiAgICogICAgICAgICAgcGF0aCArIGJ5dGUgc2l6ZSB3aGVuIHBlcnNpc3RlZC5cbiAgICovXG4gIHNhdmVDaGVja3BvaW50KHBhdGg/OiBzdHJpbmcpOiBDaGVja3BvaW50U2F2ZVJlc3VsdCB7XG4gICAgY29uc3QgY2hlY2twb2ludDogQ2hlY2twb2ludCA9IHtcbiAgICAgIGVwb2NoOiB0aGlzLmN1cnJlbnRFcG9jaCxcbiAgICAgIHN0ZXA6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBsb3NzOiB0aGlzLm1ldHJpY3MuYXZnTG9zcygxMDApLFxuICAgICAgd2VpZ2h0czogdGhpcy5hZGFwdGVyLnRvSlNPTigpLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIH07XG4gICAgdGhpcy5jaGVja3BvaW50cy5wdXNoKGNoZWNrcG9pbnQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBDaGVja3BvaW50U2F2ZVJlc3VsdCA9IHtcbiAgICAgIGluZGV4OiB0aGlzLmNoZWNrcG9pbnRzLmxlbmd0aCAtIDEsXG4gICAgICBlcG9jaDogY2hlY2twb2ludC5lcG9jaCxcbiAgICAgIHN0ZXA6IGNoZWNrcG9pbnQuc3RlcCxcbiAgICAgIGxvc3M6IGNoZWNrcG9pbnQubG9zcyxcbiAgICB9O1xuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0ge1xuICAgICAgICBmb3JtYXQ6ICdydXZsbG0tY2hlY2twb2ludCcsXG4gICAgICAgIHZlcnNpb246IENIRUNLUE9JTlRfRk9STUFUX1ZFUlNJT04sXG4gICAgICAgIC4uLmNoZWNrcG9pbnQsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbiAgICAgIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdyaXRlRmlsZVN5bmMocGF0aCwgc2VyaWFsaXplZCwgJ3V0Zi04Jyk7XG4gICAgICByZXN1bHQucGF0aCA9IHBhdGg7XG4gICAgICByZXN1bHQuYnl0ZXMgPSBCdWZmZXIuYnl0ZUxlbmd0aChzZXJpYWxpemVkLCAndXRmLTgnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBjaGVja3BvaW50IOKAlCBieSBpbi1tZW1vcnkgaW5kZXgsIG9yIGZyb20gYSBmaWxlIHByZXZpb3VzbHlcbiAgICogd3JpdHRlbiBieSBgc2F2ZUNoZWNrcG9pbnQocGF0aClgLlxuICAgKi9cbiAgbG9hZENoZWNrcG9pbnQoaW5kZXhPclBhdGg6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBjaGVja3BvaW50OiBDaGVja3BvaW50IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGVvZiBpbmRleE9yUGF0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNoZWNrcG9pbnQgPSB0aGlzLmNoZWNrcG9pbnRzW2luZGV4T3JQYXRoXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoaW5kZXhPclBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgaWYgKHBhcnNlZD8uZm9ybWF0ICE9PSAncnV2bGxtLWNoZWNrcG9pbnQnIHx8IHR5cGVvZiBwYXJzZWQud2VpZ2h0cyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2hlY2twb2ludCA9IHBhcnNlZCBhcyBDaGVja3BvaW50O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGVja3BvaW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLmFkYXB0ZXIgPSBMb3JhQWRhcHRlci5mcm9tSlNPTihjaGVja3BvaW50LndlaWdodHMpO1xuICAgIHRoaXMuY3VycmVudEVwb2NoID0gY2hlY2twb2ludC5lcG9jaDtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gY2hlY2twb2ludC5zdGVwO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IG1ldHJpY3NcbiAgICovXG4gIGdldE1ldHJpY3MoKTogVHJhaW5pbmdNZXRyaWNzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXBvY2g6IHRoaXMuY3VycmVudEVwb2NoLFxuICAgICAgc3RlcDogdGhpcy5jdXJyZW50U3RlcCxcbiAgICAgIHRyYWluTG9zczogdGhpcy5tZXRyaWNzLmF2Z0xvc3MoMTAwKSxcbiAgICAgIHZhbExvc3M6IHRoaXMubWV0cmljcy5hdmdWYWxMb3NzKDEwKSxcbiAgICAgIGxlYXJuaW5nUmF0ZTogdGhpcy5zY2hlZHVsZXI/LmdldExSKCkgfHwgdGhpcy5jb25maWcubGVhcm5pbmdSYXRlLFxuICAgICAgZ3JhZE5vcm06IDAsXG4gICAgICBzdGVwc1BlclNlY29uZDogdGhpcy5tZXRyaWNzLnN0ZXBzUGVyU2Vjb25kKCksXG4gICAgICBldGFTZWNvbmRzOiB0aGlzLm1ldHJpY3MuZXRhKFxuICAgICAgICAodGhpcy5jb25maWcuZXBvY2hzIC0gdGhpcy5jdXJyZW50RXBvY2gpICogdGhpcy5iYXRjaGVzLmxlbmd0aFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhZGFwdGVyXG4gICAqL1xuICBnZXRBZGFwdGVyKCk6IExvcmFBZGFwdGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBFV0MgbWFuYWdlclxuICAgKi9cbiAgZ2V0RXdjTWFuYWdlcigpOiBFd2NNYW5hZ2VyIHtcbiAgICByZXR1cm4gdGhpcy5ld2NNYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjaGVja3BvaW50c1xuICAgKi9cbiAgZ2V0Q2hlY2twb2ludHMoKTogQ2hlY2twb2ludFtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY2hlY2twb2ludHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHBpcGVsaW5lXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMgPSBbXTtcbiAgICB0aGlzLmNoZWNrcG9pbnRzID0gW107XG4gICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xuICAgIHRoaXMuYmVzdFZhbExvc3MgPSBJbmZpbml0eTtcbiAgICB0aGlzLnBhdGllbmNlQ291bnRlciA9IDA7XG4gICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XG4gICAgdGhpcy5hZGFwdGVyLnJlc2V0KCk7XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGVCYXRjaGVzKCk6IFRyYWluaW5nQmF0Y2hbXSB7XG4gICAgY29uc3Qgc2h1ZmZsZWQgPSBbLi4udGhpcy5iYXRjaGVzXTtcbiAgICBmb3IgKGxldCBpID0gc2h1ZmZsZWQubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW3NodWZmbGVkW2ldLCBzaHVmZmxlZFtqXV0gPSBbc2h1ZmZsZWRbal0sIHNodWZmbGVkW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHNodWZmbGVkO1xuICB9XG59XG5cbi8qKlxuICogVHJhaW5pbmcgRmFjdG9yeVxuICpcbiAqIENyZWF0ZSBwcmUtY29uZmlndXJlZCB0cmFpbmluZyBwaXBlbGluZXMgZm9yIGNvbW1vbiBzY2VuYXJpb3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFpbmluZ0ZhY3Rvcnkge1xuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBxdWljayBmaW5lLXR1bmluZ1xuICAgKi9cbiAgc3RhdGljIHF1aWNrRmluZXR1bmUoKTogVHJhaW5pbmdQaXBlbGluZSB7XG4gICAgcmV0dXJuIG5ldyBUcmFpbmluZ1BpcGVsaW5lKHtcbiAgICAgIGxlYXJuaW5nUmF0ZTogMC4wMSxcbiAgICAgIGVwb2NoczogMyxcbiAgICAgIGJhdGNoU2l6ZTogMTYsXG4gICAgICBzY2hlZHVsZXI6ICdjb25zdGFudCcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBkZWVwIHRyYWluaW5nXG4gICAqL1xuICBzdGF0aWMgZGVlcFRyYWluaW5nKCk6IFRyYWluaW5nUGlwZWxpbmUge1xuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDAxLFxuICAgICAgZXBvY2hzOiA1MCxcbiAgICAgIGJhdGNoU2l6ZTogMzIsXG4gICAgICBzY2hlZHVsZXI6ICd3YXJtdXAnLFxuICAgICAgd2FybXVwU3RlcHM6IDUwMCxcbiAgICAgIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogNSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgcGlwZWxpbmUgZm9yIGNvbnRpbnVhbCBsZWFybmluZ1xuICAgKi9cbiAgc3RhdGljIGNvbnRpbnVhbExlYXJuaW5nKGV3Y0xhbWJkYTogbnVtYmVyID0gNTAwMCk6IFRyYWluaW5nUGlwZWxpbmUge1xuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDAwNSxcbiAgICAgIGVwb2NoczogMTAsXG4gICAgICBiYXRjaFNpemU6IDE2LFxuICAgICAgc2NoZWR1bGVyOiAnY29zaW5lJyxcbiAgICAgIGV3Y0xhbWJkYSxcbiAgICAgIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogMTAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBmZWRlcmF0ZWQgYWdncmVnYXRpb25cbiAgICovXG4gIHN0YXRpYyBmZWRlcmF0ZWRBZ2dyZWdhdGlvbigpOiBUcmFpbmluZ1BpcGVsaW5lIHtcbiAgICByZXR1cm4gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICAgICAgbGVhcm5pbmdSYXRlOiAwLjAwMDEsXG4gICAgICBlcG9jaHM6IDUsXG4gICAgICBiYXRjaFNpemU6IDY0LFxuICAgICAgc2NoZWR1bGVyOiAnbGluZWFyJyxcbiAgICAgIGV3Y0xhbWJkYTogMjAwMCxcbiAgICB9KTtcbiAgfVxufVxuIl19
603
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW5pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhaW5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBNkI7SUFDeEQsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtJQUNWLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxHQUFHO0lBQ2pCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLGtCQUFrQixFQUFFLEVBQUU7Q0FDdkIsQ0FBQztBQXNFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFNdEIsWUFBWSxNQUFnQyxFQUFFLFVBQWtCO1FBSHhELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSTlCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09B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LEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYWluaW5nIFBpcGVsaW5lIGZvciBTT05BXG4gKlxuICogQ29tcHJlaGVuc2l2ZSB0cmFpbmluZyBpbmZyYXN0cnVjdHVyZSB3aXRoIG1ldHJpY3MgdHJhY2tpbmcsXG4gKiBsZWFybmluZyByYXRlIHNjaGVkdWxpbmcsIGFuZCBjaGVja3BvaW50IG1hbmFnZW1lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFRyYWluaW5nUGlwZWxpbmUsIFRyYWluaW5nQ29uZmlnIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3QgcGlwZWxpbmUgPSBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gKiAgIGxlYXJuaW5nUmF0ZTogMC4wMDEsXG4gKiAgIGJhdGNoU2l6ZTogMzIsXG4gKiAgIGVwb2NoczogMTAsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgdHJhaW5pbmcgZGF0YVxuICogcGlwZWxpbmUuYWRkQmF0Y2goaW5wdXRzLCB0YXJnZXRzLCBxdWFsaXRpZXMpO1xuICpcbiAqIC8vIFJ1biB0cmFpbmluZ1xuICogY29uc3QgcmVzdWx0ID0gcGlwZWxpbmUudHJhaW4oKTtcbiAqIGNvbnNvbGUubG9nKGBGaW5hbCBsb3NzOiAke3Jlc3VsdC5maW5hbExvc3N9YCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyB3cml0ZUZpbGVTeW5jLCByZWFkRmlsZVN5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IEVtYmVkZGluZywgVHJhaW5pbmdDb25maWcsIFRyYWluaW5nUmVzdWx0IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBMb3JhQWRhcHRlciB9IGZyb20gJy4vbG9yYSc7XG5pbXBvcnQgeyBFd2NNYW5hZ2VyIH0gZnJvbSAnLi9zb25hJztcblxuLyoqXG4gKiBEZWZhdWx0IHRyYWluaW5nIGNvbmZpZ1xuICovXG5jb25zdCBERUZBVUxUX1RSQUlOSU5HX0NPTkZJRzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+ID0ge1xuICBsZWFybmluZ1JhdGU6IDAuMDAxLFxuICBiYXRjaFNpemU6IDMyLFxuICBlcG9jaHM6IDEwLFxuICBzY2hlZHVsZXI6ICdjb3NpbmUnLFxuICB3YXJtdXBTdGVwczogMTAwLFxuICB3ZWlnaHREZWNheTogMC4wMSxcbiAgZ3JhZGllbnRDbGlwOiAxLjAsXG4gIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogMyxcbiAgY2hlY2twb2ludEludGVydmFsOiAxLFxuICBld2NMYW1iZGE6IDIwMDAsXG4gIHZhbGlkYXRpb25TcGxpdDogMC4xLFxuICBrZWVwQmVzdENoZWNrcG9pbnQ6ICcnLFxufTtcblxuLyoqXG4gKiBUcmFpbmluZyBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdNZXRyaWNzIHtcbiAgLyoqIEN1cnJlbnQgZXBvY2ggKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgc3RlcCAqL1xuICBzdGVwOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBsb3NzICovXG4gIHRyYWluTG9zczogbnVtYmVyO1xuICAvKiogVmFsaWRhdGlvbiBsb3NzICovXG4gIHZhbExvc3M6IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIC8qKiBHcmFkaWVudCBub3JtICovXG4gIGdyYWROb3JtOiBudW1iZXI7XG4gIC8qKiBTdGVwcyBwZXIgc2Vjb25kICovXG4gIHN0ZXBzUGVyU2Vjb25kOiBudW1iZXI7XG4gIC8qKiBFVEEgaW4gc2Vjb25kcyAqL1xuICBldGFTZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgZGF0YSBiYXRjaFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nQmF0Y2gge1xuICAvKiogSW5wdXQgZW1iZWRkaW5ncyAqL1xuICBpbnB1dHM6IEVtYmVkZGluZ1tdO1xuICAvKiogVGFyZ2V0IG91dHB1dHMgKi9cbiAgdGFyZ2V0czogRW1iZWRkaW5nW107XG4gIC8qKiBRdWFsaXR5IHNjb3JlcyAqL1xuICBxdWFsaXRpZXM6IG51bWJlcltdO1xufVxuXG4vKipcbiAqIENoZWNrcG9pbnQgZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrcG9pbnQge1xuICAvKiogRXBvY2ggbnVtYmVyICovXG4gIGVwb2NoOiBudW1iZXI7XG4gIC8qKiBTdGVwIG51bWJlciAqL1xuICBzdGVwOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBsb3NzIGF0IGNoZWNrcG9pbnQgKi9cbiAgbG9zczogbnVtYmVyO1xuICAvKiogTW9kZWwgd2VpZ2h0cyAoc2VyaWFsaXplZCkgKi9cbiAgd2VpZ2h0czogc3RyaW5nO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIHNhdmVDaGVja3BvaW50KCkgY2FsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja3BvaW50U2F2ZVJlc3VsdCB7XG4gIC8qKiBJbmRleCBvZiB0aGUgY2hlY2twb2ludCBpbiB0aGUgaW4tbWVtb3J5IGNoZWNrcG9pbnQgbGlzdCAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogRXBvY2ggdGhlIGNoZWNrcG9pbnQgY2FwdHVyZWQgKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIFN0ZXAgdGhlIGNoZWNrcG9pbnQgY2FwdHVyZWQgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyBhdCBjaGVja3BvaW50IHRpbWUgKi9cbiAgbG9zczogbnVtYmVyO1xuICAvKiogQWJzb2x1dGUgb3IgYXMtZ2l2ZW4gZmlsZSBwYXRoLCB3aGVuIHBlcnNpc3RlZCB0byBkaXNrICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBTZXJpYWxpemVkIHNpemUgaW4gYnl0ZXMsIHdoZW4gcGVyc2lzdGVkIHRvIGRpc2sgKi9cbiAgYnl0ZXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT24tZGlzayBjaGVja3BvaW50IGVudmVsb3BlIHZlcnNpb24uXG4gKlxuICogdjEg4oCUIHtmb3JtYXQsIHZlcnNpb246MSwgZXBvY2gsIHN0ZXAsIGxvc3MsIHdlaWdodHMsIHRpbWVzdGFtcH0uIE5vIGFkYXB0ZXJcbiAqICAgICAgZ2VvbWV0cnksIHNvIGxvYWRDaGVja3BvaW50KCkgY291bGQgbm90IGRldGVjdCBhIHNoYXBlIG1pc21hdGNoLlxuICogdjIg4oCUIGFkZHMge2NvbmZpZzp7aW5wdXREaW0sIG91dHB1dERpbSwgcmFua30sIHBpcGVsaW5lQ29uZmlnOntsZWFybmluZ1JhdGUsXG4gKiAgICAgIGJhdGNoU2l6ZX19IHNvIGxvYWRDaGVja3BvaW50KCkgY2FuIHJlamVjdCB3ZWlnaHRzIHRoYXQgZG9uJ3QgZml0IHRoZVxuICogICAgICBjdXJyZW50IGFkYXB0ZXIuIHYxIGZpbGVzIHN0aWxsIGxvYWQgKGJhY2stY29tcGF0KSB3aXRoIG5vIHNoYXBlIGNoZWNrLlxuICovXG5jb25zdCBDSEVDS1BPSU5UX0ZPUk1BVF9WRVJTSU9OID0gMjtcblxuLyoqXG4gKiBMZWFybmluZyBSYXRlIFNjaGVkdWxlclxuICovXG5leHBvcnQgY2xhc3MgTFJTY2hlZHVsZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+O1xuICBwcml2YXRlIGluaXRpYWxMUjogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbnRTdGVwOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHRvdGFsU3RlcHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiwgdG90YWxTdGVwczogbnVtYmVyKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsTFIgPSBjb25maWcubGVhcm5pbmdSYXRlO1xuICAgIHRoaXMudG90YWxTdGVwcyA9IHRvdGFsU3RlcHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxlYXJuaW5nIHJhdGUgZm9yIGN1cnJlbnQgc3RlcFxuICAgKi9cbiAgZ2V0TFIoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLnNjaGVkdWxlcikge1xuICAgICAgY2FzZSAnY29uc3RhbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFI7XG5cbiAgICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICgxIC0gdGhpcy5jdXJyZW50U3RlcCAvIHRoaXMudG90YWxTdGVwcyk7XG5cbiAgICAgIGNhc2UgJ2Nvc2luZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqIDAuNSAqICgxICsgTWF0aC5jb3MoTWF0aC5QSSAqIHRoaXMuY3VycmVudFN0ZXAgLyB0aGlzLnRvdGFsU3RlcHMpKTtcblxuICAgICAgY2FzZSAnd2FybXVwJzpcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPCB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICh0aGlzLmN1cnJlbnRTdGVwIC8gdGhpcy5jb25maWcud2FybXVwU3RlcHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvc2luZSBkZWNheSBhZnRlciB3YXJtdXBcbiAgICAgICAgY29uc3QgZGVjYXlTdGVwcyA9IHRoaXMudG90YWxTdGVwcyAtIHRoaXMuY29uZmlnLndhcm11cFN0ZXBzO1xuICAgICAgICBjb25zdCBkZWNheVByb2dyZXNzID0gKHRoaXMuY3VycmVudFN0ZXAgLSB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykgLyBkZWNheVN0ZXBzO1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFIgKiAwLjUgKiAoMSArIE1hdGguY29zKE1hdGguUEkgKiBkZWNheVByb2dyZXNzKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RlcCB0aGUgc2NoZWR1bGVyXG4gICAqL1xuICBzdGVwKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXArKztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBzY2hlZHVsZXJcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xuICB9XG59XG5cbi8qKlxuICogVHJhaW5pbmcgTWV0cmljcyBUcmFja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXRyaWNzVHJhY2tlciB7XG4gIHByaXZhdGUgbG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgdmFsTG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgZ3JhZE5vcm1IaXN0b3J5OiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBzdGVwVGltZXM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0cmFpbmluZyBsb3NzXG4gICAqL1xuICByZWNvcmRMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICByZWNvcmRWYWxMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsTG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgZ3JhZGllbnQgbm9ybVxuICAgKi9cbiAgcmVjb3JkR3JhZE5vcm0obm9ybTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ncmFkTm9ybUhpc3RvcnkucHVzaChub3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgc3RlcCB0aW1lXG4gICAqL1xuICByZWNvcmRTdGVwVGltZShtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwVGltZXMucHVzaChtcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF2ZXJhZ2UgbG9zcyBvdmVyIGxhc3QgTiBzdGVwc1xuICAgKi9cbiAgYXZnTG9zcyhuOiBudW1iZXIgPSAxMDApOiBudW1iZXIge1xuICAgIGNvbnN0IHJlY2VudCA9IHRoaXMubG9zc0hpc3Rvcnkuc2xpY2UoLW4pO1xuICAgIHJldHVybiByZWNlbnQubGVuZ3RoID4gMCA/IHJlY2VudC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIHJlY2VudC5sZW5ndGggOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhdmVyYWdlIHZhbGlkYXRpb24gbG9zc1xuICAgKi9cbiAgYXZnVmFsTG9zcyhuOiBudW1iZXIgPSAxMCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVjZW50ID0gdGhpcy52YWxMb3NzSGlzdG9yeS5zbGljZSgtbik7XG4gICAgcmV0dXJuIHJlY2VudC5sZW5ndGggPiAwID8gcmVjZW50LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gcmVjZW50Lmxlbmd0aCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0ZXBzIHBlciBzZWNvbmRcbiAgICovXG4gIHN0ZXBzUGVyU2Vjb25kKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgYXZnU3RlcFRpbWUgPSB0aGlzLnN0ZXBUaW1lcy5zbGljZSgtMTAwKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIE1hdGgubWluKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCwgMTAwKTtcbiAgICByZXR1cm4gYXZnU3RlcFRpbWUgPiAwID8gMTAwMCAvIGF2Z1N0ZXBUaW1lIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRVRBIGluIHNlY29uZHNcbiAgICovXG4gIGV0YShyZW1haW5pbmdTdGVwczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzcHMgPSB0aGlzLnN0ZXBzUGVyU2Vjb25kKCk7XG4gICAgcmV0dXJuIHNwcyA+IDAgPyByZW1haW5pbmdTdGVwcyAvIHNwcyA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJlc3QgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICBiZXN0VmFsTG9zcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZhbExvc3NIaXN0b3J5Lmxlbmd0aCA+IDAgPyBNYXRoLm1pbiguLi50aGlzLnZhbExvc3NIaXN0b3J5KSA6IEluZmluaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0b3RhbCBkdXJhdGlvblxuICAgKi9cbiAgZHVyYXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmxvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRpb24gbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRWYWxMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbExvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0cmFja2VyXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvc3NIaXN0b3J5ID0gW107XG4gICAgdGhpcy52YWxMb3NzSGlzdG9yeSA9IFtdO1xuICAgIHRoaXMuZ3JhZE5vcm1IaXN0b3J5ID0gW107XG4gICAgdGhpcy5zdGVwVGltZXMgPSBbXTtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFpbmluZyBQaXBlbGluZVxuICpcbiAqIEZ1bGwgdHJhaW5pbmcgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNPTkEgbW9kZWxzLlxuICovXG5leHBvcnQgY2xhc3MgVHJhaW5pbmdQaXBlbGluZSB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxUcmFpbmluZ0NvbmZpZz47XG4gIHByaXZhdGUgYWRhcHRlcjogTG9yYUFkYXB0ZXI7XG4gIHByaXZhdGUgZXdjTWFuYWdlcjogRXdjTWFuYWdlcjtcbiAgcHJpdmF0ZSBtZXRyaWNzOiBNZXRyaWNzVHJhY2tlcjtcbiAgcHJpdmF0ZSBzY2hlZHVsZXI6IExSU2NoZWR1bGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYmF0Y2hlczogVHJhaW5pbmdCYXRjaFtdID0gW107XG4gIHByaXZhdGUgY2hlY2twb2ludHM6IENoZWNrcG9pbnRbXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRFcG9jaDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBiZXN0VmFsTG9zczogbnVtYmVyID0gSW5maW5pdHk7XG4gIHByaXZhdGUgcGF0aWVuY2VDb3VudGVyOiBudW1iZXIgPSAwO1xuICAvKiogU2V0IGJ5IHJlc3VtZUZyb20oKTsgbWFrZXMgdGhlIG5leHQgdHJhaW4oKSBjb250aW51ZSBpbnN0ZWFkIG9mIHJlc3RhcnQuICovXG4gIHByaXZhdGUgcmVzdW1lUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFRyYWluaW5nQ29uZmlnLCBhZGFwdGVyPzogTG9yYUFkYXB0ZXIpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9UUkFJTklOR19DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgfHwgbmV3IExvcmFBZGFwdGVyKHsgcmFuazogOCB9KTtcbiAgICB0aGlzLmV3Y01hbmFnZXIgPSBuZXcgRXdjTWFuYWdlcih0aGlzLmNvbmZpZy5ld2NMYW1iZGEpO1xuICAgIHRoaXMubWV0cmljcyA9IG5ldyBNZXRyaWNzVHJhY2tlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBiYXRjaFxuICAgKi9cbiAgYWRkQmF0Y2goaW5wdXRzOiBFbWJlZGRpbmdbXSwgdGFyZ2V0czogRW1iZWRkaW5nW10sIHF1YWxpdGllczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMucHVzaCh7IGlucHV0cywgdGFyZ2V0cywgcXVhbGl0aWVzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBkYXRhXG4gICAqL1xuICBhZGREYXRhKGRhdGE6IEFycmF5PHsgaW5wdXQ6IEVtYmVkZGluZzsgdGFyZ2V0OiBFbWJlZGRpbmc7IHF1YWxpdHk6IG51bWJlciB9Pik6IHZvaWQge1xuICAgIC8vIEdyb3VwIGludG8gYmF0Y2hlc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gdGhpcy5jb25maWcuYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBiYXRjaCA9IGRhdGEuc2xpY2UoaSwgaSArIHRoaXMuY29uZmlnLmJhdGNoU2l6ZSk7XG4gICAgICB0aGlzLmFkZEJhdGNoKFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLmlucHV0KSxcbiAgICAgICAgYmF0Y2gubWFwKGQgPT4gZC50YXJnZXQpLFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLnF1YWxpdHkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdHJhaW5pbmcuXG4gICAqXG4gICAqIFdoZW4ge0BsaW5rIHJlc3VtZUZyb219IHByaW1lZCB0aGUgcGlwZWxpbmUsIHRoaXMgY29udGludWVzIGZyb20gdGhlXG4gICAqIHJlc3RvcmVkIGVwb2NoIChydW5uaW5nIHRoZSByZW1haW5pbmcgZXBvY2hzIG9mIGBjb25maWcuZXBvY2hzYCkgYW5kXG4gICAqIGFkdmFuY2VzIHRoZSBMUiBzY2hlZHVsZXIgdG8gdGhlIHJlc3RvcmVkIHN0ZXAgc28gdGhlIHNjaGVkdWxlIGlzXG4gICAqIHVuYnJva2VuOyBtZXRyaWNzIGhpc3RvcnkgaXMgcHJlc2VydmVkLiBXaXRob3V0IGEgcmVzdW1lIHRoZSBydW4gaXNcbiAgICogdW5jaGFuZ2VkIGZyb20gYSBmcmVzaCBzdGFydCDigJQgc2FtZSByZXNldCwgc2FtZSBzY2hlZHVsZXIsIHNhbWUgcmVzdWx0XG4gICAqIHNoYXBlIGFzIGJlZm9yZSB0aGlzIG1ldGhvZCBsZWFybmVkIHRvIHJlc3VtZS5cbiAgICovXG4gIHRyYWluKCk6IFRyYWluaW5nUmVzdWx0IHtcbiAgICBjb25zdCByZXN1bWluZyA9IHRoaXMucmVzdW1lUGVuZGluZztcbiAgICB0aGlzLnJlc3VtZVBlbmRpbmcgPSBmYWxzZTtcbiAgICAvLyBjdXJyZW50RXBvY2ggaXMgdGhlIGxhc3QgQ09NUExFVEVEIGVwb2NoIGluZGV4LCBzbyByZXN1bWUgdGhlIG5leHQgb25lLlxuICAgIGNvbnN0IHN0YXJ0RXBvY2ggPSByZXN1bWluZyA/IHRoaXMuY3VycmVudEVwb2NoICsgMSA6IDA7XG5cbiAgICBjb25zdCB0b3RhbFN0ZXBzID0gdGhpcy5iYXRjaGVzLmxlbmd0aCAqIHRoaXMuY29uZmlnLmVwb2NocztcbiAgICB0aGlzLnNjaGVkdWxlciA9IG5ldyBMUlNjaGVkdWxlcih0aGlzLmNvbmZpZywgdG90YWxTdGVwcyk7XG4gICAgaWYgKHJlc3VtaW5nKSB7XG4gICAgICAvLyBGYXN0LWZvcndhcmQgdGhlIGZyZXNoIHNjaGVkdWxlciB0byB0aGUgcmVzdG9yZWQgc3RlcC5cbiAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgdGhpcy5jdXJyZW50U3RlcCAmJiBzIDwgdG90YWxTdGVwczsgcysrKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVyLnN0ZXAoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XG4gICAgfVxuICAgIHRoaXMuYWRhcHRlci5zdGFydFRyYWluaW5nKHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZSk7XG5cbiAgICBsZXQgZWFybHlTdG9wcGVkID0gZmFsc2U7XG5cbiAgICBmb3IgKGxldCBlcG9jaCA9IHN0YXJ0RXBvY2g7IGVwb2NoIDwgdGhpcy5jb25maWcuZXBvY2hzOyBlcG9jaCsrKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFcG9jaCA9IGVwb2NoO1xuXG4gICAgICAvLyBTaHVmZmxlIGJhdGNoZXNcbiAgICAgIGNvbnN0IHNodWZmbGVkQmF0Y2hlcyA9IHRoaXMuc2h1ZmZsZUJhdGNoZXMoKTtcblxuICAgICAgLy8gU3BsaXQgaW50byB0cmFpbi92YWxcbiAgICAgIGNvbnN0IHZhbFNpemUgPSBNYXRoLmZsb29yKHNodWZmbGVkQmF0Y2hlcy5sZW5ndGggKiB0aGlzLmNvbmZpZy52YWxpZGF0aW9uU3BsaXQpO1xuICAgICAgY29uc3QgdHJhaW5CYXRjaGVzID0gc2h1ZmZsZWRCYXRjaGVzLnNsaWNlKHZhbFNpemUpO1xuICAgICAgY29uc3QgdmFsQmF0Y2hlcyA9IHNodWZmbGVkQmF0Y2hlcy5zbGljZSgwLCB2YWxTaXplKTtcblxuICAgICAgLy8gVHJhaW5pbmcgZXBvY2hcbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgdHJhaW5CYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGxvc3MgPSB0aGlzLnRyYWluU3RlcChiYXRjaCk7XG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRMb3NzKGxvc3MpO1xuICAgICAgICB0aGlzLm1ldHJpY3MucmVjb3JkU3RlcFRpbWUoRGF0ZS5ub3coKSAtIHN0ZXBTdGFydCk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVyLnN0ZXAoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcCsrO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0aW9uXG4gICAgICBpZiAodmFsQmF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHZhbExvc3MgPSB0aGlzLnZhbGlkYXRlKHZhbEJhdGNoZXMpO1xuICAgICAgICB0aGlzLm1ldHJpY3MucmVjb3JkVmFsTG9zcyh2YWxMb3NzKTtcblxuICAgICAgICAvLyBFYXJseSBzdG9wcGluZ1xuICAgICAgICBpZiAodmFsTG9zcyA8IHRoaXMuYmVzdFZhbExvc3MpIHtcbiAgICAgICAgICB0aGlzLmJlc3RWYWxMb3NzID0gdmFsTG9zcztcbiAgICAgICAgICB0aGlzLnBhdGllbmNlQ291bnRlciA9IDA7XG4gICAgICAgICAgLy8gUmV0YWluIHRoZSBiZXN0LXZhbGlkYXRpb24gbW9kZWwgdG8gYSBzdGFibGUgcGF0aCB3aGVuIGNvbmZpZ3VyZWQuXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmtlZXBCZXN0Q2hlY2twb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zYXZlQ2hlY2twb2ludCh0aGlzLmNvbmZpZy5rZWVwQmVzdENoZWNrcG9pbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhdGllbmNlQ291bnRlcisrO1xuICAgICAgICAgIGlmICh0aGlzLnBhdGllbmNlQ291bnRlciA+PSB0aGlzLmNvbmZpZy5lYXJseVN0b3BwaW5nUGF0aWVuY2UpIHtcbiAgICAgICAgICAgIGVhcmx5U3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2twb2ludFxuICAgICAgaWYgKChlcG9jaCArIDEpICUgdGhpcy5jb25maWcuY2hlY2twb2ludEludGVydmFsID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2F2ZUNoZWNrcG9pbnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFkYXB0ZXIuZW5kVHJhaW5pbmcoKTtcblxuICAgIC8vIFJlZ2lzdGVyIHdpdGggRVdDIGZvciBjb250aW51YWwgbGVhcm5pbmdcbiAgICBjb25zdCB3ZWlnaHRzID0gdGhpcy5hZGFwdGVyLm1lcmdlKCkuZmxhdCgpO1xuICAgIHRoaXMuZXdjTWFuYWdlci5yZWdpc3RlclRhc2soYHRhc2stJHtEYXRlLm5vdygpfWAsIHdlaWdodHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVwb2NoczogdGhpcy5jdXJyZW50RXBvY2ggKyAxLFxuICAgICAgc3RlcHM6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBmaW5hbExvc3M6IHRoaXMubWV0cmljcy5hdmdMb3NzKDEwMCksXG4gICAgICBiZXN0VmFsTG9zczogdGhpcy5iZXN0VmFsTG9zcyxcbiAgICAgIGR1cmF0aW9uTXM6IHRoaXMubWV0cmljcy5kdXJhdGlvbigpLFxuICAgICAgbG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRMb3NzSGlzdG9yeSgpLFxuICAgICAgdmFsTG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRWYWxMb3NzSGlzdG9yeSgpLFxuICAgICAgZWFybHlTdG9wcGVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2luZ2xlIHRyYWluaW5nIHN0ZXBcbiAgICovXG4gIHByaXZhdGUgdHJhaW5TdGVwKGJhdGNoOiBUcmFpbmluZ0JhdGNoKTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWxMb3NzID0gMDtcbiAgICBjb25zdCBsciA9IHRoaXMuc2NoZWR1bGVyPy5nZXRMUigpIHx8IHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGJhdGNoLmlucHV0c1tpXTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG4gICAgICBjb25zdCBxdWFsaXR5ID0gYmF0Y2gucXVhbGl0aWVzW2ldO1xuXG4gICAgICAvLyBGb3J3YXJkIHBhc3NcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGlucHV0KTtcblxuICAgICAgLy8gQ29tcHV0ZSBsb3NzIChNU0Ugd2VpZ2h0ZWQgYnkgcXVhbGl0eSlcbiAgICAgIGNvbnN0IGdyYWRPdXRwdXQ6IG51bWJlcltdID0gW107XG4gICAgICBsZXQgbG9zcyA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBkaWZmID0gb3V0cHV0W2pdIC0gKHRhcmdldFtqXSB8fCAwKTtcbiAgICAgICAgbG9zcyArPSBkaWZmICogZGlmZjtcbiAgICAgICAgZ3JhZE91dHB1dC5wdXNoKDIgKiBkaWZmICogcXVhbGl0eSk7IC8vIFF1YWxpdHktd2VpZ2h0ZWQgZ3JhZGllbnRcbiAgICAgIH1cbiAgICAgIGxvc3MgPSAobG9zcyAvIG91dHB1dC5sZW5ndGgpICogcXVhbGl0eTtcblxuICAgICAgLy8gQWRkIEVXQyBwZW5hbHR5XG4gICAgICBjb25zdCBld2NQZW5hbHR5ID0gdGhpcy5ld2NNYW5hZ2VyLmNvbXB1dGVQZW5hbHR5KHRoaXMuYWRhcHRlci5tZXJnZSgpLmZsYXQoKSk7XG4gICAgICBsb3NzICs9IGV3Y1BlbmFsdHkgKiAwLjAwMTtcblxuICAgICAgLy8gQmFja3dhcmQgcGFzc1xuICAgICAgdGhpcy5hZGFwdGVyLmJhY2t3YXJkKGlucHV0LCBncmFkT3V0cHV0LCBscik7XG5cbiAgICAgIHRvdGFsTG9zcyArPSBsb3NzO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbExvc3MgLyBiYXRjaC5pbnB1dHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gcGFzc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZShiYXRjaGVzOiBUcmFpbmluZ0JhdGNoW10pOiBudW1iZXIge1xuICAgIGxldCB0b3RhbExvc3MgPSAwO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGJhdGNoLmlucHV0c1tpXSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG5cbiAgICAgICAgbGV0IGxvc3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBvdXRwdXRbal0gLSAodGFyZ2V0W2pdIHx8IDApO1xuICAgICAgICAgIGxvc3MgKz0gZGlmZiAqIGRpZmY7XG4gICAgICAgIH1cbiAgICAgICAgdG90YWxMb3NzICs9IGxvc3MgLyBvdXRwdXQubGVuZ3RoO1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb3VudCA+IDAgPyB0b3RhbExvc3MgLyBjb3VudCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIGNoZWNrcG9pbnQuXG4gICAqXG4gICAqIEFsd2F5cyByZWNvcmRzIHRoZSBjaGVja3BvaW50IGluIHRoZSBpbi1tZW1vcnkgbGlzdCAodGhlIGJlaGF2aW9yIHRoZVxuICAgKiB0cmFpbmluZyBsb29wIHJlbGllcyBvbikuIFdoZW4gYHBhdGhgIGlzIGdpdmVuLCBhZGRpdGlvbmFsbHkgcGVyc2lzdHNcbiAgICogdGhlIGNoZWNrcG9pbnQgdG8gZGlzayBhcyB2ZXJzaW9uZWQgSlNPTiDigJQgYmVmb3JlIHYyLjUuNyB0aGlzIG1ldGhvZFxuICAgKiB3YXMgcHJpdmF0ZSwgaWdub3JlZCBhbnkgYXJndW1lbnQsIGFuZCBuZXZlciB3cm90ZSBhIGZpbGUsIHNvIGNhbGxlcnNcbiAgICogcGFzc2luZyBhIHBhdGggZ290IGB1bmRlZmluZWRgIGJhY2sgYW5kIHplcm8gYnl0ZXMgb24gZGlzay5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggT3B0aW9uYWwgZmlsZSBwYXRoOyBwYXJlbnQgZGlyZWN0b3JpZXMgYXJlIGNyZWF0ZWQuXG4gICAqIEByZXR1cm5zIFdoZXJlIHRoZSBjaGVja3BvaW50IHdlbnQg4oCUIGluLW1lbW9yeSBpbmRleCwgYW5kIGZpbGVcbiAgICogICAgICAgICAgcGF0aCArIGJ5dGUgc2l6ZSB3aGVuIHBlcnNpc3RlZC5cbiAgICovXG4gIHNhdmVDaGVja3BvaW50KHBhdGg/OiBzdHJpbmcpOiBDaGVja3BvaW50U2F2ZVJlc3VsdCB7XG4gICAgY29uc3QgY2hlY2twb2ludDogQ2hlY2twb2ludCA9IHtcbiAgICAgIGVwb2NoOiB0aGlzLmN1cnJlbnRFcG9jaCxcbiAgICAgIHN0ZXA6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBsb3NzOiB0aGlzLm1ldHJpY3MuYXZnTG9zcygxMDApLFxuICAgICAgd2VpZ2h0czogdGhpcy5hZGFwdGVyLnRvSlNPTigpLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIH07XG4gICAgdGhpcy5jaGVja3BvaW50cy5wdXNoKGNoZWNrcG9pbnQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBDaGVja3BvaW50U2F2ZVJlc3VsdCA9IHtcbiAgICAgIGluZGV4OiB0aGlzLmNoZWNrcG9pbnRzLmxlbmd0aCAtIDEsXG4gICAgICBlcG9jaDogY2hlY2twb2ludC5lcG9jaCxcbiAgICAgIHN0ZXA6IGNoZWNrcG9pbnQuc3RlcCxcbiAgICAgIGxvc3M6IGNoZWNrcG9pbnQubG9zcyxcbiAgICB9O1xuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0ge1xuICAgICAgICBmb3JtYXQ6ICdydXZsbG0tY2hlY2twb2ludCcsXG4gICAgICAgIHZlcnNpb246IENIRUNLUE9JTlRfRk9STUFUX1ZFUlNJT04sXG4gICAgICAgIC8vIEFkYXB0ZXIgZ2VvbWV0cnkgKyBwaXBlbGluZSBoeXBlcnBhcmFtcyDigJQgbGV0cyBsb2FkQ2hlY2twb2ludCgpXG4gICAgICAgIC8vIHJlamVjdCB3ZWlnaHRzIHRoYXQgZG9uJ3QgZml0IHRoZSBjdXJyZW50IGFkYXB0ZXIgKHYyLCBzZWUgYmVsb3cpLlxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBpbnB1dERpbTogdGhpcy5hZGFwdGVyLmdldElucHV0RGltKCksXG4gICAgICAgICAgb3V0cHV0RGltOiB0aGlzLmFkYXB0ZXIuZ2V0T3V0cHV0RGltKCksXG4gICAgICAgICAgcmFuazogdGhpcy5hZGFwdGVyLmdldENvbmZpZygpLnJhbmssXG4gICAgICAgIH0sXG4gICAgICAgIHBpcGVsaW5lQ29uZmlnOiB7XG4gICAgICAgICAgbGVhcm5pbmdSYXRlOiB0aGlzLmNvbmZpZy5sZWFybmluZ1JhdGUsXG4gICAgICAgICAgYmF0Y2hTaXplOiB0aGlzLmNvbmZpZy5iYXRjaFNpemUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmNoZWNrcG9pbnQsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbiAgICAgIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdyaXRlRmlsZVN5bmMocGF0aCwgc2VyaWFsaXplZCwgJ3V0Zi04Jyk7XG4gICAgICByZXN1bHQucGF0aCA9IHBhdGg7XG4gICAgICByZXN1bHQuYnl0ZXMgPSBCdWZmZXIuYnl0ZUxlbmd0aChzZXJpYWxpemVkLCAndXRmLTgnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBjaGVja3BvaW50IOKAlCBieSBpbi1tZW1vcnkgaW5kZXgsIG9yIGZyb20gYSBmaWxlIHByZXZpb3VzbHlcbiAgICogd3JpdHRlbiBieSBgc2F2ZUNoZWNrcG9pbnQocGF0aClgLlxuICAgKlxuICAgKiBGb3IgdjIgZmlsZXMsIHRoZSBlbnZlbG9wZSdzIGFkYXB0ZXIgZ2VvbWV0cnkgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICAgKiBjdXJyZW50IGFkYXB0ZXIgZmlyc3Q7IGEgbWlzbWF0Y2ggKGRpZmZlcmVudCBpbnB1dERpbS9vdXRwdXREaW0vcmFuaylcbiAgICogcmV0dXJucyBmYWxzZSBhbmQgbGVhdmVzIHRoZSBhZGFwdGVyIHVudG91Y2hlZCwgc28gbWlzLXNoYXBlZCB3ZWlnaHRzXG4gICAqIGFyZSBuZXZlciBzaWxlbnRseSByZXN0b3JlZC4gdjEgZmlsZXMgY2Fycnkgbm8gZ2VvbWV0cnkgYW5kIGxvYWQgYXNcbiAgICogYmVmb3JlIChiYWNrLWNvbXBhdCkuXG4gICAqL1xuICBsb2FkQ2hlY2twb2ludChpbmRleE9yUGF0aDogbnVtYmVyIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGNoZWNrcG9pbnQ6IENoZWNrcG9pbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodHlwZW9mIGluZGV4T3JQYXRoID09PSAnbnVtYmVyJykge1xuICAgICAgY2hlY2twb2ludCA9IHRoaXMuY2hlY2twb2ludHNbaW5kZXhPclBhdGhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhpbmRleE9yUGF0aCwgJ3V0Zi04JykpO1xuICAgICAgICBpZiAocGFyc2VkPy5mb3JtYXQgIT09ICdydXZsbG0tY2hlY2twb2ludCcgfHwgdHlwZW9mIHBhcnNlZC53ZWlnaHRzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhcnNlZC52ZXJzaW9uID09PSAnbnVtYmVyJyAmJiBwYXJzZWQudmVyc2lvbiA+PSAyICYmIHBhcnNlZC5jb25maWcpIHtcbiAgICAgICAgICBjb25zdCBjID0gcGFyc2VkLmNvbmZpZztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjLmlucHV0RGltICE9PSB0aGlzLmFkYXB0ZXIuZ2V0SW5wdXREaW0oKSB8fFxuICAgICAgICAgICAgYy5vdXRwdXREaW0gIT09IHRoaXMuYWRhcHRlci5nZXRPdXRwdXREaW0oKSB8fFxuICAgICAgICAgICAgYy5yYW5rICE9PSB0aGlzLmFkYXB0ZXIuZ2V0Q29uZmlnKCkucmFua1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGVja3BvaW50ID0gcGFyc2VkIGFzIENoZWNrcG9pbnQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWNoZWNrcG9pbnQpIHJldHVybiBmYWxzZTtcblxuICAgIHRoaXMuYWRhcHRlciA9IExvcmFBZGFwdGVyLmZyb21KU09OKGNoZWNrcG9pbnQud2VpZ2h0cyk7XG4gICAgdGhpcy5jdXJyZW50RXBvY2ggPSBjaGVja3BvaW50LmVwb2NoO1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBjaGVja3BvaW50LnN0ZXA7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVzdW1lIHRyYWluaW5nIGZyb20gYSBjaGVja3BvaW50IGZpbGUuXG4gICAqXG4gICAqIExvYWRzIHRoZSBjaGVja3BvaW50ICh3aXRoIHRoZSBzYW1lIHYyIHNoYXBlIHZhbGlkYXRpb24gYXNcbiAgICoge0BsaW5rIGxvYWRDaGVja3BvaW50fSkgQU5EIHByaW1lcyB0aGUgcGlwZWxpbmUgc28gdGhlIG5leHQge0BsaW5rIHRyYWlufVxuICAgKiBjYWxsIGNvbnRpbnVlcyBmcm9tIHRoZSByZXN0b3JlZCBlcG9jaC9zdGVwIHJhdGhlciB0aGFuIHJlc3RhcnRpbmcuIFRoaXNcbiAgICogaXMgdGhlIGV4cGxpY2l0LCBsZWFzdC1pbnZhc2l2ZSByZXN1bWUgcGF0aDogYSBwbGFpbiBgbG9hZENoZWNrcG9pbnQoKWBcbiAgICogc3RpbGwgcmVzdG9yZXMgd2VpZ2h0cyBvbmx5ICh0cmFpbigpIGZyb20gc2NyYXRjaCksIHdoaWxlIGByZXN1bWVGcm9tKClgXG4gICAqIGFkZGl0aW9uYWxseSBtYWtlcyB0aGUgc3Vic2VxdWVudCB0cmFpbigpIHBpY2sgdXAgd2hlcmUgdGhlIHJ1biBzdG9wcGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gdGhlIGNoZWNrcG9pbnQgbG9hZGVkIGFuZCByZXN1bWUgd2FzIHByaW1lZDsgZmFsc2UgaWZcbiAgICogICAgICAgICAgdGhlIGZpbGUgd2FzIG1pc3NpbmcsIGZvcmVpZ24sIG9yIHNoYXBlLW1pc21hdGNoZWQgKGluIHdoaWNoIGNhc2VcbiAgICogICAgICAgICAgbm8gcmVzdW1lIGlzIGFybWVkKS5cbiAgICovXG4gIHJlc3VtZUZyb20ocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmxvYWRDaGVja3BvaW50KHBhdGgpKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5yZXN1bWVQZW5kaW5nID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBtZXRyaWNzXG4gICAqL1xuICBnZXRNZXRyaWNzKCk6IFRyYWluaW5nTWV0cmljcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVwb2NoOiB0aGlzLmN1cnJlbnRFcG9jaCxcbiAgICAgIHN0ZXA6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICB0cmFpbkxvc3M6IHRoaXMubWV0cmljcy5hdmdMb3NzKDEwMCksXG4gICAgICB2YWxMb3NzOiB0aGlzLm1ldHJpY3MuYXZnVmFsTG9zcygxMCksXG4gICAgICBsZWFybmluZ1JhdGU6IHRoaXMuc2NoZWR1bGVyPy5nZXRMUigpIHx8IHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZSxcbiAgICAgIGdyYWROb3JtOiAwLFxuICAgICAgc3RlcHNQZXJTZWNvbmQ6IHRoaXMubWV0cmljcy5zdGVwc1BlclNlY29uZCgpLFxuICAgICAgZXRhU2Vjb25kczogdGhpcy5tZXRyaWNzLmV0YShcbiAgICAgICAgKHRoaXMuY29uZmlnLmVwb2NocyAtIHRoaXMuY3VycmVudEVwb2NoKSAqIHRoaXMuYmF0Y2hlcy5sZW5ndGhcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWRhcHRlclxuICAgKi9cbiAgZ2V0QWRhcHRlcigpOiBMb3JhQWRhcHRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRVdDIG1hbmFnZXJcbiAgICovXG4gIGdldEV3Y01hbmFnZXIoKTogRXdjTWFuYWdlciB7XG4gICAgcmV0dXJuIHRoaXMuZXdjTWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hlY2twb2ludHNcbiAgICovXG4gIGdldENoZWNrcG9pbnRzKCk6IENoZWNrcG9pbnRbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmNoZWNrcG9pbnRzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBwaXBlbGluZVxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5iYXRjaGVzID0gW107XG4gICAgdGhpcy5jaGVja3BvaW50cyA9IFtdO1xuICAgIHRoaXMuY3VycmVudEVwb2NoID0gMDtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gMDtcbiAgICB0aGlzLmJlc3RWYWxMb3NzID0gSW5maW5pdHk7XG4gICAgdGhpcy5wYXRpZW5jZUNvdW50ZXIgPSAwO1xuICAgIHRoaXMucmVzdW1lUGVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMubWV0cmljcy5yZXNldCgpO1xuICAgIHRoaXMuYWRhcHRlci5yZXNldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaHVmZmxlQmF0Y2hlcygpOiBUcmFpbmluZ0JhdGNoW10ge1xuICAgIGNvbnN0IHNodWZmbGVkID0gWy4uLnRoaXMuYmF0Y2hlc107XG4gICAgZm9yIChsZXQgaSA9IHNodWZmbGVkLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaSArIDEpKTtcbiAgICAgIFtzaHVmZmxlZFtpXSwgc2h1ZmZsZWRbal1dID0gW3NodWZmbGVkW2pdLCBzaHVmZmxlZFtpXV07XG4gICAgfVxuICAgIHJldHVybiBzaHVmZmxlZDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYWluaW5nIEZhY3RvcnlcbiAqXG4gKiBDcmVhdGUgcHJlLWNvbmZpZ3VyZWQgdHJhaW5pbmcgcGlwZWxpbmVzIGZvciBjb21tb24gc2NlbmFyaW9zLlxuICovXG5leHBvcnQgY2xhc3MgVHJhaW5pbmdGYWN0b3J5IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBwaXBlbGluZSBmb3IgcXVpY2sgZmluZS10dW5pbmdcbiAgICovXG4gIHN0YXRpYyBxdWlja0ZpbmV0dW5lKCk6IFRyYWluaW5nUGlwZWxpbmUge1xuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDEsXG4gICAgICBlcG9jaHM6IDMsXG4gICAgICBiYXRjaFNpemU6IDE2LFxuICAgICAgc2NoZWR1bGVyOiAnY29uc3RhbnQnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBwaXBlbGluZSBmb3IgZGVlcCB0cmFpbmluZ1xuICAgKi9cbiAgc3RhdGljIGRlZXBUcmFpbmluZygpOiBUcmFpbmluZ1BpcGVsaW5lIHtcbiAgICByZXR1cm4gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICAgICAgbGVhcm5pbmdSYXRlOiAwLjAwMSxcbiAgICAgIGVwb2NoczogNTAsXG4gICAgICBiYXRjaFNpemU6IDMyLFxuICAgICAgc2NoZWR1bGVyOiAnd2FybXVwJyxcbiAgICAgIHdhcm11cFN0ZXBzOiA1MDAsXG4gICAgICBlYXJseVN0b3BwaW5nUGF0aWVuY2U6IDUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBjb250aW51YWwgbGVhcm5pbmdcbiAgICovXG4gIHN0YXRpYyBjb250aW51YWxMZWFybmluZyhld2NMYW1iZGE6IG51bWJlciA9IDUwMDApOiBUcmFpbmluZ1BpcGVsaW5lIHtcbiAgICByZXR1cm4gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICAgICAgbGVhcm5pbmdSYXRlOiAwLjAwMDUsXG4gICAgICBlcG9jaHM6IDEwLFxuICAgICAgYmF0Y2hTaXplOiAxNixcbiAgICAgIHNjaGVkdWxlcjogJ2Nvc2luZScsXG4gICAgICBld2NMYW1iZGEsXG4gICAgICBlYXJseVN0b3BwaW5nUGF0aWVuY2U6IDEwLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBwaXBlbGluZSBmb3IgZmVkZXJhdGVkIGFnZ3JlZ2F0aW9uXG4gICAqL1xuICBzdGF0aWMgZmVkZXJhdGVkQWdncmVnYXRpb24oKTogVHJhaW5pbmdQaXBlbGluZSB7XG4gICAgcmV0dXJuIG5ldyBUcmFpbmluZ1BpcGVsaW5lKHtcbiAgICAgIGxlYXJuaW5nUmF0ZTogMC4wMDAxLFxuICAgICAgZXBvY2hzOiA1LFxuICAgICAgYmF0Y2hTaXplOiA2NCxcbiAgICAgIHNjaGVkdWxlcjogJ2xpbmVhcicsXG4gICAgICBld2NMYW1iZGE6IDIwMDAsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -515,6 +515,13 @@ export interface TrainingConfig {
515
515
  ewcLambda?: number;
516
516
  /** Validation split ratio */
517
517
  validationSplit?: number;
518
+ /**
519
+ * File path for best-checkpoint retention. When set, the pipeline writes
520
+ * the current state to this path each time validation loss improves, so the
521
+ * best-validation model survives even if later epochs degrade. Empty string
522
+ * (the default) disables it; a no-op when validation never runs.
523
+ */
524
+ keepBestCheckpoint?: string;
518
525
  }
519
526
  /**
520
527
  * Training metrics snapshot
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/dist/esm/types.js CHANGED
@@ -2,4 +2,4 @@
2
2
  * RuvLLM Type Definitions
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1dkxMTSBUeXBlIERlZmluaXRpb25zXG4gKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBSdXZMTE0gZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNQ29uZmlnIHtcbiAgLyoqIEVtYmVkZGluZyBkaW1lbnNpb24gKGRlZmF1bHQ6IDc2OCkgKi9cbiAgZW1iZWRkaW5nRGltPzogbnVtYmVyO1xuICAvKiogUm91dGVyIGhpZGRlbiBkaW1lbnNpb24gKGRlZmF1bHQ6IDEyOCkgKi9cbiAgcm91dGVySGlkZGVuRGltPzogbnVtYmVyO1xuICAvKiogSE5TVyBNIHBhcmFtZXRlciAoZGVmYXVsdDogMTYpICovXG4gIGhuc3dNPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9jb25zdHJ1Y3Rpb24gKGRlZmF1bHQ6IDEwMCkgKi9cbiAgaG5zd0VmQ29uc3RydWN0aW9uPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9zZWFyY2ggKGRlZmF1bHQ6IDY0KSAqL1xuICBobnN3RWZTZWFyY2g/OiBudW1iZXI7XG4gIC8qKiBFbmFibGUgbGVhcm5pbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGxlYXJuaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCBmb3IgbGVhcm5pbmcgKGRlZmF1bHQ6IDAuNykgKi9cbiAgcXVhbGl0eVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgKGRlZmF1bHQ6IDIwMDApICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gdG9rZW5zIHRvIGdlbmVyYXRlICovXG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgLyoqIFRlbXBlcmF0dXJlIGZvciBzYW1wbGluZyAoMC4wIC0gMi4wKSAqL1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgLyoqIFRvcC1wIG51Y2xldXMgc2FtcGxpbmcgKDAuMCAtIDEuMCkgKi9cbiAgdG9wUD86IG51bWJlcjtcbiAgLyoqIFRvcC1rIHNhbXBsaW5nICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBSZXBldGl0aW9uIHBlbmFsdHkgKi9cbiAgcmVwZXRpdGlvblBlbmFsdHk/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgcmVzcG9uc2UgZnJvbSB0aGUgTExNXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXNwb25zZSB7XG4gIC8qKiBHZW5lcmF0ZWQgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBDb25maWRlbmNlIHNjb3JlICgwLjAgLSAxLjApICovXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsICovXG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IHNpemUgdXNlZCAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogTGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgbGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IElEIGZvciBmZWVkYmFjayAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSb3V0aW5nIGRlY2lzaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0RlY2lzaW9uIHtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsIHNpemUgKi9cbiAgbW9kZWw6IE1vZGVsU2l6ZTtcbiAgLyoqIFJlY29tbWVuZGVkIGNvbnRleHQgc2l6ZSAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogVGVtcGVyYXR1cmUgKi9cbiAgdGVtcGVyYXR1cmU6IG51bWJlcjtcbiAgLyoqIFRvcC1wICovXG4gIHRvcFA6IG51bWJlcjtcbiAgLyoqIENvbmZpZGVuY2UgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1lbW9yeSBzZWFyY2ggcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5UmVzdWx0IHtcbiAgLyoqIE5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIFNpbWlsYXJpdHkgc2NvcmUgKi9cbiAgc2NvcmU6IG51bWJlcjtcbiAgLyoqIENvbnRlbnQgdGV4dCAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogRW5naW5lIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdXZMTE1TdGF0cyB7XG4gIC8qKiBUb3RhbCBxdWVyaWVzIHByb2Nlc3NlZCAqL1xuICB0b3RhbFF1ZXJpZXM6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBub2RlcyBzdG9yZWQgKi9cbiAgbWVtb3J5Tm9kZXM6IG51bWJlcjtcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgKi9cbiAgcGF0dGVybnNMZWFybmVkOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIGxhdGVuY3kgaW4gbXMgKi9cbiAgYXZnTGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBDYWNoZSBoaXQgcmF0ZSAoMC4wIC0gMS4wKSAqL1xuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcbiAgLyoqIFJvdXRlciBhY2N1cmFjeSAoMC4wIC0gMS4wKSAqL1xuICByb3V0ZXJBY2N1cmFjeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1vZGVsIHNpemUgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFNpemUgPSAnTTM1MCcgfCAnTTcwMCcgfCAnQjFfMicgfCAnQjJfNic7XG5cbi8qKlxuICogRmVlZGJhY2sgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2sge1xuICAvKiogUmVxdWVzdCBJRCBmcm9tIHF1ZXJ5IHJlc3BvbnNlICovXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICAvKiogUmF0aW5nIDEtNSAqL1xuICByYXRpbmc6IG51bWJlcjtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gdGV4dCAqL1xuICBjb3JyZWN0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlc3Npb24gZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb24ge1xuICAvKiogU2Vzc2lvbiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogQ3JlYXRlZCB0aW1lc3RhbXAgKi9cbiAgY3JlYXRlZEF0OiBEYXRlO1xuICAvKiogTWVzc2FnZXMgaW4gc2Vzc2lvbiAqL1xuICBtZXNzYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTSU1EIGNhcGFiaWxpdGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbWRDYXBhYmlsaXRpZXMge1xuICAvKiogSGFzIGFueSBTSU1EIHN1cHBvcnQgKi9cbiAgaGFzU2ltZDogYm9vbGVhbjtcbiAgLyoqIEF2YWlsYWJsZSBTSU1EIGluc3RydWN0aW9ucyAqL1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVtYmVkZGluZyByZXN1bHRcbiAqL1xuZXhwb3J0IHR5cGUgRW1iZWRkaW5nID0gbnVtYmVyW107XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhdGNoUXVlcnlSZXF1ZXN0IHtcbiAgLyoqIFF1ZXJpZXMgdG8gcHJvY2VzcyAqL1xuICBxdWVyaWVzOiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGdlbmVyYXRpb24gY29uZmlnICovXG4gIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWc7XG59XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVzcG9uc2Uge1xuICAvKiogUmVzcG9uc2VzIGZvciBlYWNoIHF1ZXJ5ICovXG4gIHJlc3BvbnNlczogUXVlcnlSZXNwb25zZVtdO1xuICAvKiogVG90YWwgcHJvY2Vzc2luZyB0aW1lIGluIG1zICovXG4gIHRvdGFsTGF0ZW5jeU1zOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTT05BIExlYXJuaW5nIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNPTkEgQ29uZmlndXJhdGlvbiBmb3IgYWRhcHRpdmUgbGVhcm5pbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb25hQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBpbnN0YW50IGxvb3AgKHJlYWwtdGltZSBsZWFybmluZykgKi9cbiAgaW5zdGFudExvb3BFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBiYWNrZ3JvdW5kIGxvb3AgKGJhdGNoIGxlYXJuaW5nKSAqL1xuICBiYWNrZ3JvdW5kTG9vcEVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTGVhcm5pbmcgcmF0ZSBmb3IgTG9SQSBhZGFwdGVycyAqL1xuICBsb3JhTGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogTG9SQSByYW5rIChsb3dlciA9IGZhc3RlciwgaGlnaGVyID0gbW9yZSBjYXBhY2l0eSkgKi9cbiAgbG9yYVJhbms/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIGZvciBtZW1vcnkgcHJvdGVjdGlvbiAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBNYXggdHJhamVjdG9yeSBidWZmZXIgc2l6ZSAqL1xuICBtYXhUcmFqZWN0b3J5U2l6ZT86IG51bWJlcjtcbiAgLyoqIFBhdHRlcm4gc2ltaWxhcml0eSB0aHJlc2hvbGQgKi9cbiAgcGF0dGVyblRocmVzaG9sZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMZWFybmluZyBzaWduYWwgZnJvbSB1c2VyIGZlZWRiYWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5pbmdTaWduYWwge1xuICAvKiogUmVxdWVzdCBJRCAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKDAtMSkgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogU2lnbmFsIHR5cGUgKi9cbiAgdHlwZTogU2lnbmFsVHlwZTtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gKi9cbiAgY29ycmVjdGlvbj86IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8qKlxuICogU2lnbmFsIHR5cGVzIGZvciBsZWFybmluZ1xuICovXG5leHBvcnQgdHlwZSBTaWduYWxUeXBlID0gJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZScgfCAnY29ycmVjdGlvbicgfCAnaW1wbGljaXQnO1xuXG4vKipcbiAqIFF1ZXJ5IHRyYWplY3RvcnkgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUcmFqZWN0b3J5IHtcbiAgLyoqIFRyYWplY3RvcnkgSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFN0ZXBzIGluIHRoZSB0cmFqZWN0b3J5ICovXG4gIHN0ZXBzOiBUcmFqZWN0b3J5U3RlcFtdO1xuICAvKiogRmluYWwgb3V0Y29tZSAqL1xuICBvdXRjb21lOiBUcmFqZWN0b3J5T3V0Y29tZTtcbiAgLyoqIFRvdGFsIGR1cmF0aW9uICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc3RlcCBpbiBhIHRyYWplY3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5U3RlcCB7XG4gIC8qKiBTdGVwIHR5cGUgKi9cbiAgdHlwZTogJ3F1ZXJ5JyB8ICdyb3V0ZScgfCAnZ2VuZXJhdGUnIHwgJ21lbW9yeScgfCAnZmVlZGJhY2snO1xuICAvKiogSW5wdXQgZGF0YSAqL1xuICBpbnB1dDogc3RyaW5nO1xuICAvKiogT3V0cHV0IGRhdGEgKi9cbiAgb3V0cHV0OiBzdHJpbmc7XG4gIC8qKiBEdXJhdGlvbiBvZiB0aGlzIHN0ZXAgKi9cbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICAvKiogQ29uZmlkZW5jZSBhdCB0aGlzIHN0ZXAgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWplY3Rvcnkgb3V0Y29tZVxuICovXG5leHBvcnQgdHlwZSBUcmFqZWN0b3J5T3V0Y29tZSA9ICdzdWNjZXNzJyB8ICdwYXJ0aWFsJyB8ICdmYWlsdXJlJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBMZWFybmVkIHBhdHRlcm4gZnJvbSBSZWFzb25pbmdCYW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5lZFBhdHRlcm4ge1xuICAvKiogUGF0dGVybiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogUGF0dGVybiB0eXBlICovXG4gIHR5cGU6IFBhdHRlcm5UeXBlO1xuICAvKiogUGF0dGVybiBlbWJlZGRpbmcgKi9cbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmc7XG4gIC8qKiBTdWNjZXNzIHJhdGUgKDAtMSkgKi9cbiAgc3VjY2Vzc1JhdGU6IG51bWJlcjtcbiAgLyoqIFRpbWVzIHVzZWQgKi9cbiAgdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIExhc3QgdXNlZCB0aW1lc3RhbXAgKi9cbiAgbGFzdFVzZWQ6IERhdGU7XG59XG5cbi8qKlxuICogVHlwZXMgb2YgbGVhcm5lZCBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9XG4gIHwgJ3F1ZXJ5X3Jlc3BvbnNlJyAgICAgIC8vIFEmQSBwYXR0ZXJuXG4gIHwgJ3JvdXRpbmcnICAgICAgICAgICAgIC8vIFJvdXRpbmcgZGVjaXNpb24gcGF0dGVyblxuICB8ICdjb250ZXh0X3JldHJpZXZhbCcgICAvLyBNZW1vcnkgcmV0cmlldmFsIHBhdHRlcm5cbiAgfCAnY29ycmVjdGlvbicgICAgICAgICAgLy8gVXNlciBjb3JyZWN0aW9uIHBhdHRlcm5cbiAgfCAnYWJzdHJhY3Rpb24nOyAgICAgICAgLy8gQ29tcHJlc3NlZCBjb25jZXB0XG5cbi8qKlxuICogTG9SQSBhZGFwdGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb1JBQ29uZmlnIHtcbiAgLyoqIEFkYXB0ZXIgcmFuayAoNCwgOCwgMTYsIDMyKSAqL1xuICByYW5rOiBudW1iZXI7XG4gIC8qKiBBbHBoYSBzY2FsaW5nIGZhY3RvciAqL1xuICBhbHBoYTogbnVtYmVyO1xuICAvKiogRHJvcG91dCByYXRlICovXG4gIGRyb3BvdXQ6IG51bWJlcjtcbiAgLyoqIFRhcmdldCBtb2R1bGVzIHRvIGFkYXB0ICovXG4gIHRhcmdldE1vZHVsZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVXQyAoRWxhc3RpYyBXZWlnaHQgQ29uc29saWRhdGlvbikgc3RhdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFd2NTdGF0cyB7XG4gIC8qKiBOdW1iZXIgb2YgdGFza3MgbGVhcm5lZCAqL1xuICB0YXNrc0xlYXJuZWQ6IG51bWJlcjtcbiAgLyoqIEZpc2hlciBpbmZvcm1hdGlvbiBjb21wdXRlZCAqL1xuICBmaXNoZXJDb21wdXRlZDogYm9vbGVhbjtcbiAgLyoqIE1lbW9yeSBwcm90ZWN0aW9uIHN0cmVuZ3RoICovXG4gIHByb3RlY3Rpb25TdHJlbmd0aDogbnVtYmVyO1xuICAvKiogRXN0aW1hdGVkIGZvcmdldHRpbmcgcmF0ZSAqL1xuICBmb3JnZXR0aW5nUmF0ZTogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Vzc2lvbiAmIENvbnZlcnNhdGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRlbmRlZCBzZXNzaW9uIHdpdGggY29udmVyc2F0aW9uIGhpc3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25TZXNzaW9uIGV4dGVuZHMgU2Vzc2lvbiB7XG4gIC8qKiBDb252ZXJzYXRpb24gbWVzc2FnZXMgKi9cbiAgbWVzc2FnZXM6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXTtcbiAgLyoqIFNlc3Npb24gY29udGV4dCAoYWNjdW11bGF0ZWQpICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogQWN0aXZlIG1lbW9yeSBJRHMgKi9cbiAgYWN0aXZlTWVtb3J5SWRzOiBudW1iZXJbXTtcbiAgLyoqIFNlc3Npb24gbWV0YWRhdGEgKi9cbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNpbmdsZSBtZXNzYWdlIGluIGNvbnZlcnNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbk1lc3NhZ2Uge1xuICAvKiogTWVzc2FnZSByb2xlICovXG4gIHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnIHwgJ3N5c3RlbSc7XG4gIC8qKiBNZXNzYWdlIGNvbnRlbnQgKi9cbiAgY29udGVudDogc3RyaW5nO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogRGF0ZTtcbiAgLyoqIEFzc29jaWF0ZWQgcmVxdWVzdCBJRCAoaWYgYXNzaXN0YW50KSAqL1xuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdHJlYW1pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RyZWFtaW5nIHJlc3BvbnNlIGNodW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtQ2h1bmsge1xuICAvKiogQ2h1bmsgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBJcyBmaW5hbCBjaHVuayAqL1xuICBkb25lOiBib29sZWFuO1xuICAvKiogVG9rZW4gY291bnQgc28gZmFyICovXG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgLyoqIEN1bXVsYXRpdmUgbGF0ZW5jeSAqL1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdHJlYW0gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbU9wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIENhbGxiYWNrIGZvciBlYWNoIGNodW5rICovXG4gIG9uQ2h1bms/OiAoY2h1bms6IFN0cmVhbUNodW5rKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gY29tcGxldGlvbiAqL1xuICBvbkNvbXBsZXRlPzogKHJlc3BvbnNlOiBRdWVyeVJlc3BvbnNlKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gZXJyb3IgKi9cbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wcmVzc2lvbiAmIEFyY2hpdmFsIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1lbW9yeSBjb21wcmVzc2lvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc2lvblJlc3VsdCB7XG4gIC8qKiBOb2RlcyBjb21wcmVzc2VkICovXG4gIG5vZGVzQ29tcHJlc3NlZDogbnVtYmVyO1xuICAvKiogTm9kZXMgYXJjaGl2ZWQgKi9cbiAgbm9kZXNBcmNoaXZlZDogbnVtYmVyO1xuICAvKiogQ29uY2VwdHMgY3JlYXRlZCAqL1xuICBjb25jZXB0c0NyZWF0ZWQ6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBzYXZlZCAoYnl0ZXMpICovXG4gIG1lbW9yeVNhdmVkOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQXJjaGl2ZSBxdWVyeSByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUmVzdWx0IHtcbiAgLyoqIEFyY2hpdmVkIG5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIE9yaWdpbmFsIGNvbnRlbnQgKGlmIGF2YWlsYWJsZSkgKi9cbiAgY29udGVudD86IHN0cmluZztcbiAgLyoqIENvbmNlcHQgaXQgYmVsb25ncyB0byAqL1xuICBjb25jZXB0SWQ/OiBzdHJpbmc7XG4gIC8qKiBBcmNoaXZlIHRpbWVzdGFtcCAqL1xuICBhcmNoaXZlZEF0OiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW50aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEF0dGVudGlvbiB3ZWlnaHRzIGZvciBpbnRlcnByZXRhYmlsaXR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uV2VpZ2h0cyB7XG4gIC8qKiBRdWVyeS1rZXkgYXR0ZW50aW9uIHNjb3JlcyAqL1xuICBzY29yZXM6IG51bWJlcltdW107XG4gIC8qKiBIZWFkIGluZGV4ICovXG4gIGhlYWRJbmRleDogbnVtYmVyO1xuICAvKiogTGF5ZXIgaW5kZXggKi9cbiAgbGF5ZXJJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEF0dGVudGlvbiBhbmFseXNpcyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRlbnRpb25BbmFseXNpcyB7XG4gIC8qKiBNb3N0IGF0dGVuZGVkIHRva2VucyAqL1xuICB0b3BBdHRlbmRlZDogQXJyYXk8eyB0b2tlbjogc3RyaW5nOyB3ZWlnaHQ6IG51bWJlciB9PjtcbiAgLyoqIEF0dGVudGlvbiBlbnRyb3B5ICh1bmNlcnRhaW50eSkgKi9cbiAgZW50cm9weTogbnVtYmVyO1xuICAvKiogRm9jdXMgc2NvcmUgKDAtMSwgaGlnaGVyID0gbW9yZSBmb2N1c2VkKSAqL1xuICBmb2N1c1Njb3JlOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGZWRlcmF0ZWQgTGVhcm5pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWRlcmF0ZWRDb25maWcge1xuICAvKiogSGlkZGVuIGRpbWVuc2lvbiBmb3IgZW1iZWRkaW5ncyAqL1xuICBoaWRkZW5EaW0/OiBudW1iZXI7XG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uICovXG4gIGVtYmVkZGluZ0RpbT86IG51bWJlcjtcbiAgLyoqIE1pY3JvLUxvUkEgcmFuayAqL1xuICBtaWNyb0xvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogQmFzZSBMb1JBIHJhbmsgKi9cbiAgYmFzZUxvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogVHJhamVjdG9yeSBidWZmZXIgY2FwYWNpdHkgKi9cbiAgdHJhamVjdG9yeUNhcGFjaXR5PzogbnVtYmVyO1xuICAvKiogUGF0dGVybiBjbHVzdGVyIGNvdW50ICovXG4gIHBhdHRlcm5DbHVzdGVycz86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIHJlZ3VsYXJpemF0aW9uICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkIGZvciBhY2NlcHRpbmcgdHJhamVjdG9yaWVzICovXG4gIHF1YWxpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhamVjdG9yeSBleHBvcnQgZm9yIGZlZGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5RXhwb3J0IHtcbiAgLyoqIFF1ZXJ5IGVtYmVkZGluZyAqL1xuICBlbWJlZGRpbmc6IEVtYmVkZGluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogTW9kZWwgcm91dGUgKGlmIGFueSkgKi9cbiAgcm91dGU/OiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IGlkZW50aWZpZXJzICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFnZW50IGV4cG9ydCBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnRTdGF0cyB7XG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgcHJvY2Vzc2VkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgKi9cbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xuICAvKiogUGF0dGVybnMgbGVhcm5lZCBsb2NhbGx5ICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4cG9ydGVkIHN0YXRlIGZyb20gYW4gZXBoZW1lcmFsIGFnZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnQge1xuICAvKiogQWdlbnQgaWRlbnRpZmllciAqL1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIC8qKiBFeHBvcnRlZCB0cmFqZWN0b3JpZXMgKi9cbiAgdHJhamVjdG9yaWVzOiBUcmFqZWN0b3J5RXhwb3J0W107XG4gIC8qKiBBZ2VudCBzdGF0aXN0aWNzICovXG4gIHN0YXRzOiBBZ2VudEV4cG9ydFN0YXRzO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKi9cbiAgc2Vzc2lvbkR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIEV4cG9ydCB0aW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8qKlxuICogQWdlbnQgY29udHJpYnV0aW9uIHJlY29yZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29udHJpYnV0aW9uIHtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgY29udHJpYnV0ZWQgKi9cbiAgdHJhamVjdG9yeUNvdW50OiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgb2YgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBDb250cmlidXRpb24gdGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiAqL1xuICBzZXNzaW9uRHVyYXRpb25NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhZ2dyZWdhdGluZyBhbiBhZ2VudCBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGlvblJlc3VsdCB7XG4gIC8qKiBBZ2VudCBJRCB0aGF0IHdhcyBhZ2dyZWdhdGVkICovXG4gIGFnZW50SWQ6IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgYWNjZXB0ZWQgKi9cbiAgdHJhamVjdG9yaWVzQWNjZXB0ZWQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgcmVqZWN0ZWQgKGJlbG93IHF1YWxpdHkgdGhyZXNob2xkKSAqL1xuICB0cmFqZWN0b3JpZXNSZWplY3RlZDogbnVtYmVyO1xuICAvKiogV2hldGhlciBjb25zb2xpZGF0aW9uIHdhcyB0cmlnZ2VyZWQgKi9cbiAgY29uc29saWRhdGVkOiBib29sZWFuO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBpbiBjb29yZGluYXRvciAqL1xuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdG9yIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb29yZGluYXRvclN0YXRzIHtcbiAgLyoqIENvb3JkaW5hdG9yIGlkZW50aWZpZXIgKi9cbiAgY29vcmRpbmF0b3JJZDogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBhZ2dyZWdhdGVkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBxdWFsaXR5IGFjcm9zcyBhbGwgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCAqL1xuICBxdWFsaXR5VGhyZXNob2xkOiBudW1iZXI7XG59XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIHRvcG9sb2d5XG4gKi9cbmV4cG9ydCB0eXBlIEZlZGVyYXRlZFRvcG9sb2d5ID1cbiAgfCAnc3RhcicgICAgICAgICAgIC8vIEFnZW50cyDihpIgQ2VudHJhbCBDb29yZGluYXRvclxuICB8ICdoaWVyYXJjaGljYWwnICAgLy8gQWdlbnRzIOKGkiBSZWdpb25hbCDihpIgR2xvYmFsXG4gIHwgJ3BlZXItdG8tcGVlcic7ICAvLyBBZ2VudHMgc2hhcmUgZGlyZWN0bHlcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRyYWluaW5nIFBpcGVsaW5lIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYWluaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0NvbmZpZyB7XG4gIC8qKiBJbml0aWFsIGxlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogQmF0Y2ggc2l6ZSAqL1xuICBiYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgZXBvY2hzICovXG4gIGVwb2Nocz86IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgc2NoZWR1bGVyICovXG4gIHNjaGVkdWxlcj86ICdjb25zdGFudCcgfCAnbGluZWFyJyB8ICdjb3NpbmUnIHwgJ3dhcm11cCc7XG4gIC8qKiBXYXJtdXAgc3RlcHMgKGZvciB3YXJtdXAgc2NoZWR1bGVyKSAqL1xuICB3YXJtdXBTdGVwcz86IG51bWJlcjtcbiAgLyoqIFdlaWdodCBkZWNheSAqL1xuICB3ZWlnaHREZWNheT86IG51bWJlcjtcbiAgLyoqIEdyYWRpZW50IGNsaXBwaW5nIHRocmVzaG9sZCAqL1xuICBncmFkaWVudENsaXA/OiBudW1iZXI7XG4gIC8qKiBFYXJseSBzdG9wcGluZyBwYXRpZW5jZSAqL1xuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U/OiBudW1iZXI7XG4gIC8qKiBDaGVja3BvaW50IGludGVydmFsIChlcG9jaHMpICovXG4gIGNoZWNrcG9pbnRJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIGNvbnRpbnVhbCBsZWFybmluZyAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBWYWxpZGF0aW9uIHNwbGl0IHJhdGlvICovXG4gIHZhbGlkYXRpb25TcGxpdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBtZXRyaWNzIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdNZXRyaWNzU25hcHNob3Qge1xuICAvKiogQ3VycmVudCBlcG9jaCAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogQ3VycmVudCBzdGVwICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgKi9cbiAgdHJhaW5Mb3NzOiBudW1iZXI7XG4gIC8qKiBWYWxpZGF0aW9uIGxvc3MgKi9cbiAgdmFsTG9zczogbnVtYmVyO1xuICAvKiogTGVhcm5pbmcgcmF0ZSAqL1xuICBsZWFybmluZ1JhdGU6IG51bWJlcjtcbiAgLyoqIEdyYWRpZW50IG5vcm0gKi9cbiAgZ3JhZE5vcm06IG51bWJlcjtcbiAgLyoqIFN0ZXBzIHBlciBzZWNvbmQgKi9cbiAgc3RlcHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgLyoqIEVUQSBpbiBzZWNvbmRzICovXG4gIGV0YVNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ1Jlc3VsdCB7XG4gIC8qKiBUb3RhbCBlcG9jaHMgY29tcGxldGVkICovXG4gIGVwb2NoczogbnVtYmVyO1xuICAvKiogVG90YWwgc3RlcHMgY29tcGxldGVkICovXG4gIHN0ZXBzOiBudW1iZXI7XG4gIC8qKiBGaW5hbCB0cmFpbmluZyBsb3NzICovXG4gIGZpbmFsTG9zczogbnVtYmVyO1xuICAvKiogQmVzdCB2YWxpZGF0aW9uIGxvc3MgKi9cbiAgYmVzdFZhbExvc3M6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGR1cmF0aW9uIGluIG1zICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIExvc3MgaGlzdG9yeSAqL1xuICBsb3NzSGlzdG9yeTogbnVtYmVyW107XG4gIC8qKiBWYWxpZGF0aW9uIGxvc3MgaGlzdG9yeSAqL1xuICB2YWxMb3NzSGlzdG9yeTogbnVtYmVyW107XG4gIC8qKiBFYXJseSBzdG9wcGVkICovXG4gIGVhcmx5U3RvcHBlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBjaGVja3BvaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdDaGVja3BvaW50IHtcbiAgLyoqIEVwb2NoIG51bWJlciAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogU3RlcCBudW1iZXIgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyBhdCBjaGVja3BvaW50ICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHdlaWdodHMgKHNlcmlhbGl6ZWQpICovXG4gIHdlaWdodHM6IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEV4cG9ydC9TZXJpYWxpemF0aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEV4cG9ydCBmb3JtYXQgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBFeHBvcnRGb3JtYXQgPSAnc2FmZXRlbnNvcnMnIHwgJ2pzb24nIHwgJ2JpbmFyeScgfCAnb25ueCc7XG5cbi8qKlxuICogTW9kZWwgbWV0YWRhdGEgZm9yIGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTWV0YWRhdGEge1xuICAvKiogTW9kZWwgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBNb2RlbCB2ZXJzaW9uICovXG4gIHZlcnNpb246IHN0cmluZztcbiAgLyoqIEFyY2hpdGVjdHVyZSB0eXBlICovXG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nO1xuICAvKiogVHJhaW5pbmcgaW5mbyAqL1xuICB0cmFpbmluZz86IHtcbiAgICBzdGVwczogbnVtYmVyO1xuICAgIGxvc3M6IG51bWJlcjtcbiAgICBsZWFybmluZ1JhdGU6IG51bWJlcjtcbiAgfTtcbiAgLyoqIEN1c3RvbSBtZXRhZGF0YSAqL1xuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1dkxMTSBUeXBlIERlZmluaXRpb25zXG4gKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBSdXZMTE0gZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNQ29uZmlnIHtcbiAgLyoqIEVtYmVkZGluZyBkaW1lbnNpb24gKGRlZmF1bHQ6IDc2OCkgKi9cbiAgZW1iZWRkaW5nRGltPzogbnVtYmVyO1xuICAvKiogUm91dGVyIGhpZGRlbiBkaW1lbnNpb24gKGRlZmF1bHQ6IDEyOCkgKi9cbiAgcm91dGVySGlkZGVuRGltPzogbnVtYmVyO1xuICAvKiogSE5TVyBNIHBhcmFtZXRlciAoZGVmYXVsdDogMTYpICovXG4gIGhuc3dNPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9jb25zdHJ1Y3Rpb24gKGRlZmF1bHQ6IDEwMCkgKi9cbiAgaG5zd0VmQ29uc3RydWN0aW9uPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9zZWFyY2ggKGRlZmF1bHQ6IDY0KSAqL1xuICBobnN3RWZTZWFyY2g/OiBudW1iZXI7XG4gIC8qKiBFbmFibGUgbGVhcm5pbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGxlYXJuaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCBmb3IgbGVhcm5pbmcgKGRlZmF1bHQ6IDAuNykgKi9cbiAgcXVhbGl0eVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgKGRlZmF1bHQ6IDIwMDApICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gdG9rZW5zIHRvIGdlbmVyYXRlICovXG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgLyoqIFRlbXBlcmF0dXJlIGZvciBzYW1wbGluZyAoMC4wIC0gMi4wKSAqL1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgLyoqIFRvcC1wIG51Y2xldXMgc2FtcGxpbmcgKDAuMCAtIDEuMCkgKi9cbiAgdG9wUD86IG51bWJlcjtcbiAgLyoqIFRvcC1rIHNhbXBsaW5nICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBSZXBldGl0aW9uIHBlbmFsdHkgKi9cbiAgcmVwZXRpdGlvblBlbmFsdHk/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgcmVzcG9uc2UgZnJvbSB0aGUgTExNXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXNwb25zZSB7XG4gIC8qKiBHZW5lcmF0ZWQgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBDb25maWRlbmNlIHNjb3JlICgwLjAgLSAxLjApICovXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsICovXG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IHNpemUgdXNlZCAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogTGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgbGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IElEIGZvciBmZWVkYmFjayAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSb3V0aW5nIGRlY2lzaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0RlY2lzaW9uIHtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsIHNpemUgKi9cbiAgbW9kZWw6IE1vZGVsU2l6ZTtcbiAgLyoqIFJlY29tbWVuZGVkIGNvbnRleHQgc2l6ZSAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogVGVtcGVyYXR1cmUgKi9cbiAgdGVtcGVyYXR1cmU6IG51bWJlcjtcbiAgLyoqIFRvcC1wICovXG4gIHRvcFA6IG51bWJlcjtcbiAgLyoqIENvbmZpZGVuY2UgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1lbW9yeSBzZWFyY2ggcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5UmVzdWx0IHtcbiAgLyoqIE5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIFNpbWlsYXJpdHkgc2NvcmUgKi9cbiAgc2NvcmU6IG51bWJlcjtcbiAgLyoqIENvbnRlbnQgdGV4dCAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogRW5naW5lIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdXZMTE1TdGF0cyB7XG4gIC8qKiBUb3RhbCBxdWVyaWVzIHByb2Nlc3NlZCAqL1xuICB0b3RhbFF1ZXJpZXM6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBub2RlcyBzdG9yZWQgKi9cbiAgbWVtb3J5Tm9kZXM6IG51bWJlcjtcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgKi9cbiAgcGF0dGVybnNMZWFybmVkOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIGxhdGVuY3kgaW4gbXMgKi9cbiAgYXZnTGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBDYWNoZSBoaXQgcmF0ZSAoMC4wIC0gMS4wKSAqL1xuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcbiAgLyoqIFJvdXRlciBhY2N1cmFjeSAoMC4wIC0gMS4wKSAqL1xuICByb3V0ZXJBY2N1cmFjeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1vZGVsIHNpemUgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFNpemUgPSAnTTM1MCcgfCAnTTcwMCcgfCAnQjFfMicgfCAnQjJfNic7XG5cbi8qKlxuICogRmVlZGJhY2sgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2sge1xuICAvKiogUmVxdWVzdCBJRCBmcm9tIHF1ZXJ5IHJlc3BvbnNlICovXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICAvKiogUmF0aW5nIDEtNSAqL1xuICByYXRpbmc6IG51bWJlcjtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gdGV4dCAqL1xuICBjb3JyZWN0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlc3Npb24gZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb24ge1xuICAvKiogU2Vzc2lvbiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogQ3JlYXRlZCB0aW1lc3RhbXAgKi9cbiAgY3JlYXRlZEF0OiBEYXRlO1xuICAvKiogTWVzc2FnZXMgaW4gc2Vzc2lvbiAqL1xuICBtZXNzYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTSU1EIGNhcGFiaWxpdGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbWRDYXBhYmlsaXRpZXMge1xuICAvKiogSGFzIGFueSBTSU1EIHN1cHBvcnQgKi9cbiAgaGFzU2ltZDogYm9vbGVhbjtcbiAgLyoqIEF2YWlsYWJsZSBTSU1EIGluc3RydWN0aW9ucyAqL1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVtYmVkZGluZyByZXN1bHRcbiAqL1xuZXhwb3J0IHR5cGUgRW1iZWRkaW5nID0gbnVtYmVyW107XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhdGNoUXVlcnlSZXF1ZXN0IHtcbiAgLyoqIFF1ZXJpZXMgdG8gcHJvY2VzcyAqL1xuICBxdWVyaWVzOiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGdlbmVyYXRpb24gY29uZmlnICovXG4gIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWc7XG59XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVzcG9uc2Uge1xuICAvKiogUmVzcG9uc2VzIGZvciBlYWNoIHF1ZXJ5ICovXG4gIHJlc3BvbnNlczogUXVlcnlSZXNwb25zZVtdO1xuICAvKiogVG90YWwgcHJvY2Vzc2luZyB0aW1lIGluIG1zICovXG4gIHRvdGFsTGF0ZW5jeU1zOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTT05BIExlYXJuaW5nIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNPTkEgQ29uZmlndXJhdGlvbiBmb3IgYWRhcHRpdmUgbGVhcm5pbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb25hQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBpbnN0YW50IGxvb3AgKHJlYWwtdGltZSBsZWFybmluZykgKi9cbiAgaW5zdGFudExvb3BFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBiYWNrZ3JvdW5kIGxvb3AgKGJhdGNoIGxlYXJuaW5nKSAqL1xuICBiYWNrZ3JvdW5kTG9vcEVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTGVhcm5pbmcgcmF0ZSBmb3IgTG9SQSBhZGFwdGVycyAqL1xuICBsb3JhTGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogTG9SQSByYW5rIChsb3dlciA9IGZhc3RlciwgaGlnaGVyID0gbW9yZSBjYXBhY2l0eSkgKi9cbiAgbG9yYVJhbms/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIGZvciBtZW1vcnkgcHJvdGVjdGlvbiAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBNYXggdHJhamVjdG9yeSBidWZmZXIgc2l6ZSAqL1xuICBtYXhUcmFqZWN0b3J5U2l6ZT86IG51bWJlcjtcbiAgLyoqIFBhdHRlcm4gc2ltaWxhcml0eSB0aHJlc2hvbGQgKi9cbiAgcGF0dGVyblRocmVzaG9sZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMZWFybmluZyBzaWduYWwgZnJvbSB1c2VyIGZlZWRiYWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5pbmdTaWduYWwge1xuICAvKiogUmVxdWVzdCBJRCAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKDAtMSkgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogU2lnbmFsIHR5cGUgKi9cbiAgdHlwZTogU2lnbmFsVHlwZTtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gKi9cbiAgY29ycmVjdGlvbj86IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8qKlxuICogU2lnbmFsIHR5cGVzIGZvciBsZWFybmluZ1xuICovXG5leHBvcnQgdHlwZSBTaWduYWxUeXBlID0gJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZScgfCAnY29ycmVjdGlvbicgfCAnaW1wbGljaXQnO1xuXG4vKipcbiAqIFF1ZXJ5IHRyYWplY3RvcnkgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUcmFqZWN0b3J5IHtcbiAgLyoqIFRyYWplY3RvcnkgSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFN0ZXBzIGluIHRoZSB0cmFqZWN0b3J5ICovXG4gIHN0ZXBzOiBUcmFqZWN0b3J5U3RlcFtdO1xuICAvKiogRmluYWwgb3V0Y29tZSAqL1xuICBvdXRjb21lOiBUcmFqZWN0b3J5T3V0Y29tZTtcbiAgLyoqIFRvdGFsIGR1cmF0aW9uICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc3RlcCBpbiBhIHRyYWplY3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5U3RlcCB7XG4gIC8qKiBTdGVwIHR5cGUgKi9cbiAgdHlwZTogJ3F1ZXJ5JyB8ICdyb3V0ZScgfCAnZ2VuZXJhdGUnIHwgJ21lbW9yeScgfCAnZmVlZGJhY2snO1xuICAvKiogSW5wdXQgZGF0YSAqL1xuICBpbnB1dDogc3RyaW5nO1xuICAvKiogT3V0cHV0IGRhdGEgKi9cbiAgb3V0cHV0OiBzdHJpbmc7XG4gIC8qKiBEdXJhdGlvbiBvZiB0aGlzIHN0ZXAgKi9cbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICAvKiogQ29uZmlkZW5jZSBhdCB0aGlzIHN0ZXAgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWplY3Rvcnkgb3V0Y29tZVxuICovXG5leHBvcnQgdHlwZSBUcmFqZWN0b3J5T3V0Y29tZSA9ICdzdWNjZXNzJyB8ICdwYXJ0aWFsJyB8ICdmYWlsdXJlJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBMZWFybmVkIHBhdHRlcm4gZnJvbSBSZWFzb25pbmdCYW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5lZFBhdHRlcm4ge1xuICAvKiogUGF0dGVybiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogUGF0dGVybiB0eXBlICovXG4gIHR5cGU6IFBhdHRlcm5UeXBlO1xuICAvKiogUGF0dGVybiBlbWJlZGRpbmcgKi9cbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmc7XG4gIC8qKiBTdWNjZXNzIHJhdGUgKDAtMSkgKi9cbiAgc3VjY2Vzc1JhdGU6IG51bWJlcjtcbiAgLyoqIFRpbWVzIHVzZWQgKi9cbiAgdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIExhc3QgdXNlZCB0aW1lc3RhbXAgKi9cbiAgbGFzdFVzZWQ6IERhdGU7XG59XG5cbi8qKlxuICogVHlwZXMgb2YgbGVhcm5lZCBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9XG4gIHwgJ3F1ZXJ5X3Jlc3BvbnNlJyAgICAgIC8vIFEmQSBwYXR0ZXJuXG4gIHwgJ3JvdXRpbmcnICAgICAgICAgICAgIC8vIFJvdXRpbmcgZGVjaXNpb24gcGF0dGVyblxuICB8ICdjb250ZXh0X3JldHJpZXZhbCcgICAvLyBNZW1vcnkgcmV0cmlldmFsIHBhdHRlcm5cbiAgfCAnY29ycmVjdGlvbicgICAgICAgICAgLy8gVXNlciBjb3JyZWN0aW9uIHBhdHRlcm5cbiAgfCAnYWJzdHJhY3Rpb24nOyAgICAgICAgLy8gQ29tcHJlc3NlZCBjb25jZXB0XG5cbi8qKlxuICogTG9SQSBhZGFwdGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb1JBQ29uZmlnIHtcbiAgLyoqIEFkYXB0ZXIgcmFuayAoNCwgOCwgMTYsIDMyKSAqL1xuICByYW5rOiBudW1iZXI7XG4gIC8qKiBBbHBoYSBzY2FsaW5nIGZhY3RvciAqL1xuICBhbHBoYTogbnVtYmVyO1xuICAvKiogRHJvcG91dCByYXRlICovXG4gIGRyb3BvdXQ6IG51bWJlcjtcbiAgLyoqIFRhcmdldCBtb2R1bGVzIHRvIGFkYXB0ICovXG4gIHRhcmdldE1vZHVsZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVXQyAoRWxhc3RpYyBXZWlnaHQgQ29uc29saWRhdGlvbikgc3RhdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFd2NTdGF0cyB7XG4gIC8qKiBOdW1iZXIgb2YgdGFza3MgbGVhcm5lZCAqL1xuICB0YXNrc0xlYXJuZWQ6IG51bWJlcjtcbiAgLyoqIEZpc2hlciBpbmZvcm1hdGlvbiBjb21wdXRlZCAqL1xuICBmaXNoZXJDb21wdXRlZDogYm9vbGVhbjtcbiAgLyoqIE1lbW9yeSBwcm90ZWN0aW9uIHN0cmVuZ3RoICovXG4gIHByb3RlY3Rpb25TdHJlbmd0aDogbnVtYmVyO1xuICAvKiogRXN0aW1hdGVkIGZvcmdldHRpbmcgcmF0ZSAqL1xuICBmb3JnZXR0aW5nUmF0ZTogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Vzc2lvbiAmIENvbnZlcnNhdGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRlbmRlZCBzZXNzaW9uIHdpdGggY29udmVyc2F0aW9uIGhpc3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25TZXNzaW9uIGV4dGVuZHMgU2Vzc2lvbiB7XG4gIC8qKiBDb252ZXJzYXRpb24gbWVzc2FnZXMgKi9cbiAgbWVzc2FnZXM6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXTtcbiAgLyoqIFNlc3Npb24gY29udGV4dCAoYWNjdW11bGF0ZWQpICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogQWN0aXZlIG1lbW9yeSBJRHMgKi9cbiAgYWN0aXZlTWVtb3J5SWRzOiBudW1iZXJbXTtcbiAgLyoqIFNlc3Npb24gbWV0YWRhdGEgKi9cbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNpbmdsZSBtZXNzYWdlIGluIGNvbnZlcnNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbk1lc3NhZ2Uge1xuICAvKiogTWVzc2FnZSByb2xlICovXG4gIHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnIHwgJ3N5c3RlbSc7XG4gIC8qKiBNZXNzYWdlIGNvbnRlbnQgKi9cbiAgY29udGVudDogc3RyaW5nO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogRGF0ZTtcbiAgLyoqIEFzc29jaWF0ZWQgcmVxdWVzdCBJRCAoaWYgYXNzaXN0YW50KSAqL1xuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdHJlYW1pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RyZWFtaW5nIHJlc3BvbnNlIGNodW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtQ2h1bmsge1xuICAvKiogQ2h1bmsgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBJcyBmaW5hbCBjaHVuayAqL1xuICBkb25lOiBib29sZWFuO1xuICAvKiogVG9rZW4gY291bnQgc28gZmFyICovXG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgLyoqIEN1bXVsYXRpdmUgbGF0ZW5jeSAqL1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdHJlYW0gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbU9wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIENhbGxiYWNrIGZvciBlYWNoIGNodW5rICovXG4gIG9uQ2h1bms/OiAoY2h1bms6IFN0cmVhbUNodW5rKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gY29tcGxldGlvbiAqL1xuICBvbkNvbXBsZXRlPzogKHJlc3BvbnNlOiBRdWVyeVJlc3BvbnNlKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gZXJyb3IgKi9cbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wcmVzc2lvbiAmIEFyY2hpdmFsIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1lbW9yeSBjb21wcmVzc2lvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc2lvblJlc3VsdCB7XG4gIC8qKiBOb2RlcyBjb21wcmVzc2VkICovXG4gIG5vZGVzQ29tcHJlc3NlZDogbnVtYmVyO1xuICAvKiogTm9kZXMgYXJjaGl2ZWQgKi9cbiAgbm9kZXNBcmNoaXZlZDogbnVtYmVyO1xuICAvKiogQ29uY2VwdHMgY3JlYXRlZCAqL1xuICBjb25jZXB0c0NyZWF0ZWQ6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBzYXZlZCAoYnl0ZXMpICovXG4gIG1lbW9yeVNhdmVkOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQXJjaGl2ZSBxdWVyeSByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUmVzdWx0IHtcbiAgLyoqIEFyY2hpdmVkIG5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIE9yaWdpbmFsIGNvbnRlbnQgKGlmIGF2YWlsYWJsZSkgKi9cbiAgY29udGVudD86IHN0cmluZztcbiAgLyoqIENvbmNlcHQgaXQgYmVsb25ncyB0byAqL1xuICBjb25jZXB0SWQ/OiBzdHJpbmc7XG4gIC8qKiBBcmNoaXZlIHRpbWVzdGFtcCAqL1xuICBhcmNoaXZlZEF0OiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW50aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEF0dGVudGlvbiB3ZWlnaHRzIGZvciBpbnRlcnByZXRhYmlsaXR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uV2VpZ2h0cyB7XG4gIC8qKiBRdWVyeS1rZXkgYXR0ZW50aW9uIHNjb3JlcyAqL1xuICBzY29yZXM6IG51bWJlcltdW107XG4gIC8qKiBIZWFkIGluZGV4ICovXG4gIGhlYWRJbmRleDogbnVtYmVyO1xuICAvKiogTGF5ZXIgaW5kZXggKi9cbiAgbGF5ZXJJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEF0dGVudGlvbiBhbmFseXNpcyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRlbnRpb25BbmFseXNpcyB7XG4gIC8qKiBNb3N0IGF0dGVuZGVkIHRva2VucyAqL1xuICB0b3BBdHRlbmRlZDogQXJyYXk8eyB0b2tlbjogc3RyaW5nOyB3ZWlnaHQ6IG51bWJlciB9PjtcbiAgLyoqIEF0dGVudGlvbiBlbnRyb3B5ICh1bmNlcnRhaW50eSkgKi9cbiAgZW50cm9weTogbnVtYmVyO1xuICAvKiogRm9jdXMgc2NvcmUgKDAtMSwgaGlnaGVyID0gbW9yZSBmb2N1c2VkKSAqL1xuICBmb2N1c1Njb3JlOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGZWRlcmF0ZWQgTGVhcm5pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWRlcmF0ZWRDb25maWcge1xuICAvKiogSGlkZGVuIGRpbWVuc2lvbiBmb3IgZW1iZWRkaW5ncyAqL1xuICBoaWRkZW5EaW0/OiBudW1iZXI7XG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uICovXG4gIGVtYmVkZGluZ0RpbT86IG51bWJlcjtcbiAgLyoqIE1pY3JvLUxvUkEgcmFuayAqL1xuICBtaWNyb0xvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogQmFzZSBMb1JBIHJhbmsgKi9cbiAgYmFzZUxvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogVHJhamVjdG9yeSBidWZmZXIgY2FwYWNpdHkgKi9cbiAgdHJhamVjdG9yeUNhcGFjaXR5PzogbnVtYmVyO1xuICAvKiogUGF0dGVybiBjbHVzdGVyIGNvdW50ICovXG4gIHBhdHRlcm5DbHVzdGVycz86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIHJlZ3VsYXJpemF0aW9uICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkIGZvciBhY2NlcHRpbmcgdHJhamVjdG9yaWVzICovXG4gIHF1YWxpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhamVjdG9yeSBleHBvcnQgZm9yIGZlZGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5RXhwb3J0IHtcbiAgLyoqIFF1ZXJ5IGVtYmVkZGluZyAqL1xuICBlbWJlZGRpbmc6IEVtYmVkZGluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogTW9kZWwgcm91dGUgKGlmIGFueSkgKi9cbiAgcm91dGU/OiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IGlkZW50aWZpZXJzICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFnZW50IGV4cG9ydCBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnRTdGF0cyB7XG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgcHJvY2Vzc2VkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgKi9cbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xuICAvKiogUGF0dGVybnMgbGVhcm5lZCBsb2NhbGx5ICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4cG9ydGVkIHN0YXRlIGZyb20gYW4gZXBoZW1lcmFsIGFnZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnQge1xuICAvKiogQWdlbnQgaWRlbnRpZmllciAqL1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIC8qKiBFeHBvcnRlZCB0cmFqZWN0b3JpZXMgKi9cbiAgdHJhamVjdG9yaWVzOiBUcmFqZWN0b3J5RXhwb3J0W107XG4gIC8qKiBBZ2VudCBzdGF0aXN0aWNzICovXG4gIHN0YXRzOiBBZ2VudEV4cG9ydFN0YXRzO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKi9cbiAgc2Vzc2lvbkR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIEV4cG9ydCB0aW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8qKlxuICogQWdlbnQgY29udHJpYnV0aW9uIHJlY29yZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29udHJpYnV0aW9uIHtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgY29udHJpYnV0ZWQgKi9cbiAgdHJhamVjdG9yeUNvdW50OiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgb2YgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBDb250cmlidXRpb24gdGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiAqL1xuICBzZXNzaW9uRHVyYXRpb25NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhZ2dyZWdhdGluZyBhbiBhZ2VudCBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGlvblJlc3VsdCB7XG4gIC8qKiBBZ2VudCBJRCB0aGF0IHdhcyBhZ2dyZWdhdGVkICovXG4gIGFnZW50SWQ6IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgYWNjZXB0ZWQgKi9cbiAgdHJhamVjdG9yaWVzQWNjZXB0ZWQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgcmVqZWN0ZWQgKGJlbG93IHF1YWxpdHkgdGhyZXNob2xkKSAqL1xuICB0cmFqZWN0b3JpZXNSZWplY3RlZDogbnVtYmVyO1xuICAvKiogV2hldGhlciBjb25zb2xpZGF0aW9uIHdhcyB0cmlnZ2VyZWQgKi9cbiAgY29uc29saWRhdGVkOiBib29sZWFuO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBpbiBjb29yZGluYXRvciAqL1xuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdG9yIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb29yZGluYXRvclN0YXRzIHtcbiAgLyoqIENvb3JkaW5hdG9yIGlkZW50aWZpZXIgKi9cbiAgY29vcmRpbmF0b3JJZDogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBhZ2dyZWdhdGVkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBxdWFsaXR5IGFjcm9zcyBhbGwgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCAqL1xuICBxdWFsaXR5VGhyZXNob2xkOiBudW1iZXI7XG59XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIHRvcG9sb2d5XG4gKi9cbmV4cG9ydCB0eXBlIEZlZGVyYXRlZFRvcG9sb2d5ID1cbiAgfCAnc3RhcicgICAgICAgICAgIC8vIEFnZW50cyDihpIgQ2VudHJhbCBDb29yZGluYXRvclxuICB8ICdoaWVyYXJjaGljYWwnICAgLy8gQWdlbnRzIOKGkiBSZWdpb25hbCDihpIgR2xvYmFsXG4gIHwgJ3BlZXItdG8tcGVlcic7ICAvLyBBZ2VudHMgc2hhcmUgZGlyZWN0bHlcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRyYWluaW5nIFBpcGVsaW5lIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYWluaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0NvbmZpZyB7XG4gIC8qKiBJbml0aWFsIGxlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogQmF0Y2ggc2l6ZSAqL1xuICBiYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgZXBvY2hzICovXG4gIGVwb2Nocz86IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgc2NoZWR1bGVyICovXG4gIHNjaGVkdWxlcj86ICdjb25zdGFudCcgfCAnbGluZWFyJyB8ICdjb3NpbmUnIHwgJ3dhcm11cCc7XG4gIC8qKiBXYXJtdXAgc3RlcHMgKGZvciB3YXJtdXAgc2NoZWR1bGVyKSAqL1xuICB3YXJtdXBTdGVwcz86IG51bWJlcjtcbiAgLyoqIFdlaWdodCBkZWNheSAqL1xuICB3ZWlnaHREZWNheT86IG51bWJlcjtcbiAgLyoqIEdyYWRpZW50IGNsaXBwaW5nIHRocmVzaG9sZCAqL1xuICBncmFkaWVudENsaXA/OiBudW1iZXI7XG4gIC8qKiBFYXJseSBzdG9wcGluZyBwYXRpZW5jZSAqL1xuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U/OiBudW1iZXI7XG4gIC8qKiBDaGVja3BvaW50IGludGVydmFsIChlcG9jaHMpICovXG4gIGNoZWNrcG9pbnRJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIGNvbnRpbnVhbCBsZWFybmluZyAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBWYWxpZGF0aW9uIHNwbGl0IHJhdGlvICovXG4gIHZhbGlkYXRpb25TcGxpdD86IG51bWJlcjtcbiAgLyoqXG4gICAqIEZpbGUgcGF0aCBmb3IgYmVzdC1jaGVja3BvaW50IHJldGVudGlvbi4gV2hlbiBzZXQsIHRoZSBwaXBlbGluZSB3cml0ZXNcbiAgICogdGhlIGN1cnJlbnQgc3RhdGUgdG8gdGhpcyBwYXRoIGVhY2ggdGltZSB2YWxpZGF0aW9uIGxvc3MgaW1wcm92ZXMsIHNvIHRoZVxuICAgKiBiZXN0LXZhbGlkYXRpb24gbW9kZWwgc3Vydml2ZXMgZXZlbiBpZiBsYXRlciBlcG9jaHMgZGVncmFkZS4gRW1wdHkgc3RyaW5nXG4gICAqICh0aGUgZGVmYXVsdCkgZGlzYWJsZXMgaXQ7IGEgbm8tb3Agd2hlbiB2YWxpZGF0aW9uIG5ldmVyIHJ1bnMuXG4gICAqL1xuICBrZWVwQmVzdENoZWNrcG9pbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgbWV0cmljcyBzbmFwc2hvdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nTWV0cmljc1NuYXBzaG90IHtcbiAgLyoqIEN1cnJlbnQgZXBvY2ggKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgc3RlcCAqL1xuICBzdGVwOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBsb3NzICovXG4gIHRyYWluTG9zczogbnVtYmVyO1xuICAvKiogVmFsaWRhdGlvbiBsb3NzICovXG4gIHZhbExvc3M6IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIC8qKiBHcmFkaWVudCBub3JtICovXG4gIGdyYWROb3JtOiBudW1iZXI7XG4gIC8qKiBTdGVwcyBwZXIgc2Vjb25kICovXG4gIHN0ZXBzUGVyU2Vjb25kOiBudW1iZXI7XG4gIC8qKiBFVEEgaW4gc2Vjb25kcyAqL1xuICBldGFTZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdSZXN1bHQge1xuICAvKiogVG90YWwgZXBvY2hzIGNvbXBsZXRlZCAqL1xuICBlcG9jaHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHN0ZXBzIGNvbXBsZXRlZCAqL1xuICBzdGVwczogbnVtYmVyO1xuICAvKiogRmluYWwgdHJhaW5pbmcgbG9zcyAqL1xuICBmaW5hbExvc3M6IG51bWJlcjtcbiAgLyoqIEJlc3QgdmFsaWRhdGlvbiBsb3NzICovXG4gIGJlc3RWYWxMb3NzOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBkdXJhdGlvbiBpbiBtcyAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG4gIC8qKiBMb3NzIGhpc3RvcnkgKi9cbiAgbG9zc0hpc3Rvcnk6IG51bWJlcltdO1xuICAvKiogVmFsaWRhdGlvbiBsb3NzIGhpc3RvcnkgKi9cbiAgdmFsTG9zc0hpc3Rvcnk6IG51bWJlcltdO1xuICAvKiogRWFybHkgc3RvcHBlZCAqL1xuICBlYXJseVN0b3BwZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVHJhaW5pbmcgY2hlY2twb2ludFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nQ2hlY2twb2ludCB7XG4gIC8qKiBFcG9jaCBudW1iZXIgKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIFN0ZXAgbnVtYmVyICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCAqL1xuICBsb3NzOiBudW1iZXI7XG4gIC8qKiBNb2RlbCB3ZWlnaHRzIChzZXJpYWxpemVkKSAqL1xuICB3ZWlnaHRzOiBzdHJpbmc7XG4gIC8qKiBUaW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFeHBvcnQvU2VyaWFsaXphdGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHBvcnQgZm9ybWF0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgRXhwb3J0Rm9ybWF0ID0gJ3NhZmV0ZW5zb3JzJyB8ICdqc29uJyB8ICdiaW5hcnknIHwgJ29ubngnO1xuXG4vKipcbiAqIE1vZGVsIG1ldGFkYXRhIGZvciBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbE1ldGFkYXRhIHtcbiAgLyoqIE1vZGVsIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWwgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIC8qKiBBcmNoaXRlY3R1cmUgdHlwZSAqL1xuICBhcmNoaXRlY3R1cmU6IHN0cmluZztcbiAgLyoqIFRyYWluaW5nIGluZm8gKi9cbiAgdHJhaW5pbmc/OiB7XG4gICAgc3RlcHM6IG51bWJlcjtcbiAgICBsb3NzOiBudW1iZXI7XG4gICAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIH07XG4gIC8qKiBDdXN0b20gbWV0YWRhdGEgKi9cbiAgY3VzdG9tPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ruvector/ruvllm",
3
- "version": "2.5.7",
3
+ "version": "2.6.0",
4
4
  "description": "Self-learning LLM runtime \u2014 TurboQuant KV-cache (6-8x compression), SONA adaptive learning, FlashAttention, speculative decoding, GGUF inference",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",