footprintjs 10.1.0 → 10.2.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.
Files changed (64) hide show
  1. package/CLAUDE.md +18 -0
  2. package/dist/esm/index.d.ts +2 -0
  3. package/dist/esm/index.js +1 -1
  4. package/dist/esm/lib/attempt/category.d.ts +6 -0
  5. package/dist/esm/lib/attempt/category.js +26 -2
  6. package/dist/esm/lib/attempt/runner.d.ts +3 -1
  7. package/dist/esm/lib/attempt/runner.js +26 -6
  8. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
  9. package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
  10. package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
  11. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +5 -2
  12. package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
  13. package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
  14. package/dist/esm/lib/engine/handlers/stageError.d.ts +2 -0
  15. package/dist/esm/lib/engine/handlers/stageError.js +13 -1
  16. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +2 -1
  17. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +6 -2
  18. package/dist/esm/lib/engine/narrative/types.d.ts +4 -1
  19. package/dist/esm/lib/engine/narrative/types.js +1 -1
  20. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +14 -6
  21. package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
  22. package/dist/esm/lib/errors/terminalFailure.js +60 -0
  23. package/dist/esm/lib/memory/StageContext.d.ts +14 -0
  24. package/dist/esm/lib/memory/StageContext.js +32 -1
  25. package/dist/esm/lib/memory/attention.d.ts +26 -0
  26. package/dist/esm/lib/memory/attention.js +171 -0
  27. package/dist/esm/lib/memory/frameTypes.d.ts +8 -0
  28. package/dist/esm/lib/memory/frameTypes.js +1 -1
  29. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +14 -0
  30. package/dist/esm/lib/recorder/ControlDepRecorder.js +18 -1
  31. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +4 -0
  32. package/dist/esm/lib/runner/FlowChartExecutor.js +163 -127
  33. package/dist/index.js +1 -1
  34. package/dist/lib/attempt/category.js +27 -2
  35. package/dist/lib/attempt/runner.js +25 -5
  36. package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
  37. package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
  38. package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
  39. package/dist/lib/engine/handlers/SubflowExecutor.js +5 -2
  40. package/dist/lib/engine/handlers/commitStage.js +24 -5
  41. package/dist/lib/engine/handlers/stageError.js +15 -2
  42. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +6 -2
  43. package/dist/lib/engine/narrative/types.js +1 -1
  44. package/dist/lib/engine/traversal/FlowchartTraverser.js +12 -4
  45. package/dist/lib/errors/terminalFailure.js +64 -0
  46. package/dist/lib/memory/StageContext.js +32 -1
  47. package/dist/lib/memory/attention.js +175 -0
  48. package/dist/lib/memory/frameTypes.js +1 -1
  49. package/dist/lib/recorder/ControlDepRecorder.js +18 -1
  50. package/dist/lib/runner/FlowChartExecutor.js +163 -127
  51. package/dist/types/index.d.ts +2 -0
  52. package/dist/types/lib/attempt/category.d.ts +6 -0
  53. package/dist/types/lib/attempt/runner.d.ts +3 -1
  54. package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
  55. package/dist/types/lib/engine/handlers/stageError.d.ts +2 -0
  56. package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +2 -1
  57. package/dist/types/lib/engine/narrative/types.d.ts +4 -1
  58. package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
  59. package/dist/types/lib/memory/StageContext.d.ts +14 -0
  60. package/dist/types/lib/memory/attention.d.ts +26 -0
  61. package/dist/types/lib/memory/frameTypes.d.ts +8 -0
  62. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +14 -0
  63. package/dist/types/lib/runner/FlowChartExecutor.d.ts +4 -0
  64. package/package.json +6 -6
@@ -8,4 +8,4 @@
8
8
  * @module
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElDb250cm9sRmxvd05hcnJhdGl2ZSDigJQgSW50ZXJmYWNlIGZvciBjb250cm9sIGZsb3cgbmFycmF0aXZlIGdlbmVyYXRpb24uXG4gKlxuICogQ2FwdHVyZXMgRkxPVyBldmVudHMgZHVyaW5nIHRyYXZlcnNhbDogZGVjaXNpb25zLCBmb3JrcywgbG9vcHMsIHN1YmZsb3dzLlxuICogQ29tcGxlbWVudGFyeSB0byBzY29wZS9yZWNvcmRlcnMvTmFycmF0aXZlUmVjb3JkZXIgd2hpY2ggY2FwdHVyZXMgREFUQSBldmVudHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXR0ZW1wdFJlY29yZCwgUnVuQ29ycmVsYXRpb24gfSBmcm9tICcuLi8uLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9ySW5mby5qcyc7XG5cbi8qKlxuICpcbiAqIFVzZXMgTnVsbCBPYmplY3QgcGF0dGVybjogTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIHNhdGlzZmllcyB0aGlzXG4gKiBpbnRlcmZhY2Ugd2l0aCBlbXB0eSBtZXRob2RzIGZvciB6ZXJvLWNvc3QgZGlzYWJsZWQgcGF0aC5cbiAqL1xuXG4vKipcbiAqIFRoZSBraW5kIG9mIHN0YWdlIHRoYXQgY29tcGxldGVkLiBMZXRzIGNvbnN1bWVycyByb3V0ZSB1bmlmb3JtXG4gKiBcImRpZCB0aGlzIHN0YWdlIGV4ZWN1dGVcIiBoYW5kbGluZyB3aXRob3V0IGEgc2lkZS10YWJsZSBsb29rdXAgaW50b1xuICogdGhlIGNoYXJ0IHNwZWMuIFJlcXVpcmVkIG9uIGV2ZXJ5IGBvblN0YWdlRXhlY3V0ZWRgIGV2ZW50IHNpbmNlXG4gKiBwcm9wb3NhbCAjMDAzIHVuaWZpZWQgdGhlIGV2ZW50IHRvIGZpcmUgZm9yIEFMTCBzdGFnZSBraW5kcy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RhZ2VUeXBlID0gJ2xpbmVhcicgfCAnZGVjaWRlcicgfCAnZm9yaycgfCAnc2VsZWN0b3InIHwgJ3N1YmZsb3ctbW91bnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sRmxvd05hcnJhdGl2ZSB7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIHN0YWdlIGNvbXBsZXRlcyBpdHMgbWFpbiB3b3JrLiBGaXJlcyBmb3IgQUxMIHN0YWdlXG4gICAqIGtpbmRzIChgJ2xpbmVhcidgLCBgJ2RlY2lkZXInYCwgYCdmb3JrJ2AsIGAnc2VsZWN0b3InYCwgYCdzdWJmbG93LW1vdW50J2ApXG4gICAqIEFGVEVSIHRoZSBjb3JyZXNwb25kaW5nIHNwZWNpYWxpemVkIGV2ZW50IChgb25EZWNpc2lvbmAsIGBvbkZvcmtgLFxuICAgKiBgb25TZWxlY3RlZGAsIGBvblN1YmZsb3dFbnRyeWApLiBGb3IgbGluZWFyIHN0YWdlcywgZmlyZXMgYWZ0ZXJcbiAgICogdGhlIHN0YWdlIGZ1bmN0aW9uIHJldHVybnMuXG4gICAqXG4gICAqIENvbnN1bWVycyB0cmFja2luZyBcImRpZCB0aGlzIHN0YWdlIHJ1bj9cIiB1c2UgdGhpcyBldmVudCB1bmlmb3JtbHlcbiAgICogYW5kIHN3aXRjaCBvbiBgc3RhZ2VUeXBlYCBmb3Iga2luZC1zcGVjaWZpYyB3b3JrLlxuICAgKi9cbiAgb25TdGFnZUV4ZWN1dGVkKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgICBzdGFnZVR5cGU6IFN0YWdlVHlwZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIG9uIGxpbmVhciBjb250aW51YXRpb24gZnJvbSBvbmUgc3RhZ2UgdG8gdGhlIG5leHQuICovXG4gIG9uTmV4dChmcm9tU3RhZ2U6IHN0cmluZywgdG9TdGFnZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGRlY2lkZXIgc2VsZWN0cyBhIGJyYW5jaC4gTW9zdCB2YWx1YWJsZSBmb3IgTExNIGNvbnRleHQuICovXG4gIG9uRGVjaXNpb24oXG4gICAgZGVjaWRlck5hbWU6IHN0cmluZyxcbiAgICBjaG9zZW5CcmFuY2g6IHN0cmluZyxcbiAgICByYXRpb25hbGU/OiBzdHJpbmcsXG4gICAgZGVjaWRlckRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBmb3JrIGV4ZWN1dGVzIGFsbCBjaGlsZHJlbiBpbiBwYXJhbGxlbC4gKi9cbiAgb25Gb3JrKHBhcmVudFN0YWdlOiBzdHJpbmcsIGNoaWxkTmFtZXM6IHN0cmluZ1tdLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgc2VsZWN0b3IgcGlja3MgYSBzdWJzZXQgb2YgY2hpbGRyZW4uICovXG4gIG9uU2VsZWN0ZWQoXG4gICAgcGFyZW50U3RhZ2U6IHN0cmluZyxcbiAgICBzZWxlY3RlZE5hbWVzOiBzdHJpbmdbXSxcbiAgICB0b3RhbENvdW50OiBudW1iZXIsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZW50ZXJpbmcgYSBzdWJmbG93IChuZXN0ZWQgY29udGV4dCBib3VuZGFyeSkuICovXG4gIG9uU3ViZmxvd0VudHJ5KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGV4aXRpbmcgYSBzdWJmbG93LiAqL1xuICBvblN1YmZsb3dFeGl0KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZHluYW1pYyBzdWJmbG93IGlzIHJlZ2lzdGVyZWQgZHVyaW5nIHRyYXZlcnNhbC4gKi9cbiAgb25TdWJmbG93UmVnaXN0ZXJlZChzdWJmbG93SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgc3BlY1N0cnVjdHVyZT86IHVua25vd24pOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbG9vcCBpdGVyYXRpb24gKGJhY2stZWRnZSB0cmF2ZXJzYWwpLiAqL1xuICBvbkxvb3AodGFyZ2V0U3RhZ2U6IHN0cmluZywgaXRlcmF0aW9uOiBudW1iZXIsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgdHJpZ2dlcnMgYnJlYWsgKGVhcmx5IHRlcm1pbmF0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHJlYXNvbiAtIE9wdGlvbmFsIHN0cmluZyBwYXNzZWQgdG8gYHNjb3BlLiRicmVhayhyZWFzb24pYC5cbiAgICogQHBhcmFtIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdyAtIFdoZW4gc2V0LCB0aGlzIGJyZWFrIHdhcyByYWlzZWQgb24gdGhlXG4gICAqICAgcGFyZW50IGJlY2F1c2UgYW4gaW5uZXIgc3ViZmxvdyAodGhpcyBpZCkgYnJva2Ugd2l0aCBgcHJvcGFnYXRlQnJlYWtgXG4gICAqICAgZW5hYmxlZC4gVXNlZCBieSByZWNvcmRlcnMgdG8gZGlzdGluZ3Vpc2ggb3JpZ2luYXRpbmcgdnMgcHJvcGFnYXRlZFxuICAgKiAgIGJyZWFrcyBhbmQgcmVuZGVyIHRoZW0gYWNjb3JkaW5nbHkuXG4gICAqL1xuICBvbkJyZWFrKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgICBwcm9wYWdhdGVkRnJvbVN1YmZsb3c/OiBzdHJpbmcsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgdGhyb3dzIGFuIGVycm9yLCB3aXRoIGl0cyBTRVJWRUQgZm9ybTogZm9yIGEgc3RhZ2UncyBvd24gZmFpbHVyZSB0aGF0IGlzXG4gICAqIGBSZWRhY3Rpb25SdWxlLnJldGFpblN0YWdlRXJyb3JgICh0aGUgZGlhZ25vc3RpYyBwb2xpY3kgYXBwbGllZCBvbmNlKSwgZWxzZXdoZXJlIGBleHRyYWN0RXJyb3JJbmZvYC5cbiAgICovXG4gIG9uRXJyb3IoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYXQgdGhlIEVORCBvZiBldmVyeSBhdHRlbXB0ICgxMC4xKSDigJQgZXZlcnkgb3V0Y29tZSwgd2l0aCB0aGVcbiAgICogYXR0ZW1wdCdzIHtAbGluayBBdHRlbXB0UmVjb3JkfSAodGltaW5nLCBvdXRjb21lLCBjYXRlZ29yeSwgdGhlXG4gICAqIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24pOiBhIHN0YWdlJ3Mgb3duIChgcmVjb3JkLmtpbmQgPT09ICdzdGFnZSdgLCB1bmRlciBhXG4gICAqIHJldHJ5IHBvbGljeSwgYSBgdGltZW91dE1zYCBvciBhIHJ1biBkZWFkbGluZSksIGFuZCB0aGUgY2FsbHMgaXQgbWFrZXNcbiAgICogKGAnY2FsbCdgLCBgc2NvcGUuJGNhbGxgKSBhbmQgb3V0c2lkZSBhdHRlbXB0cyBpdCByZXBvcnRzIChgJ29ic2VydmVkJ2ApXG4gICAqIGR1cmluZyB0aGUgc3RhZ2UgKFAyKS4gQSBzdGFnZSBhdHRlbXB0IGZpcmVzIGJlZm9yZSBgb25TdGFnZVJldHJ5YCB3aGVuIGl0XG4gICAqIGlzIHJldHJpZWQsIGFuZCBiZWZvcmUgYG9uRXJyb3JgIC8gYG9uU3RhZ2VFeGVjdXRlZGAgZm9yIHRoZSBsYXN0LlxuICAgKiBgc3RydWN0dXJlZEVycm9yYCBpcyB0aGUgYXR0ZW1wdCdzIHNlcnZlZCBlcnJvciAoYHJhd2AgaW5jbHVkZWQgdW5sZXNzIHRoZVxuICAgKiBwb2xpY3kgbWFza2VkIGl0OyBuZXZlciBmb3IgYW4gb2JzZXJ2ZWQgYXR0ZW1wdCk7IGFic2VudCBmb3IgYSBzdWNjZXNzIG9yXG4gICAqIGEgcGF1c2UuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IG9uZSBwZXIgYXR0ZW1wdCDigJQgZm9yIGEgc3RhZ2UsIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgaXRcbiAgICogbWFkZSBwbHVzIG9uZSBwZXIgY2FsbCBvciBvYnNlcnZlZCBhdHRlbXB0IChmaWx0ZXIgb24gYHJlY29yZC5raW5kYCkuXG4gICAqL1xuICBvbkF0dGVtcHQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHJlY29yZDogQXR0ZW1wdFJlY29yZCxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8gfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGFuIGF0dGVtcHQgYXQgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3kgZmFpbGVkXG4gICAqIEFORCBhbm90aGVyIGF0dGVtcHQgd2lsbCBydW4uIEZpcmVzIGFmdGVyIHRoYXQgYXR0ZW1wdCdzIGBvbkF0dGVtcHRgLFxuICAgKiBhZnRlciBpdHMgc3RhZ2VkIHdyaXRlcyBhcmUgZGlzY2FyZGVkIGFuZCBCRUZPUkUgdGhlIGJhY2tvZmYgd2FpdCwgc28gYVxuICAgKiBsaXZlIG1vbml0b3IgbGVhcm5zIFwicmV0cnlpbmcgaW4gNTAwIG1zXCIgd2hlbiB0aGUgZGVjaXNpb24gaXMgbWFkZSwgbm90XG4gICAqIGFmdGVyIHRoZSB3YWl0LlxuICAgKlxuICAgKiBFdmVudCBhcml0aG1ldGljOiBhbiBleGhhdXN0ZWQgcG9saWN5IGZpcmVzIGBhdHRlbXB0cyAtIDFgIG9mIHRoZXNlIGFuZFxuICAgKiB0aGVuIG9uZSBgb25FcnJvcmA7IGEgYHJldHJ5T25gIHRoYXQgZGVjbGluZXMgZmlyZXMgWkVSTyBvZiB0aGVzZSBhbmQgb25lXG4gICAqIGBvbkVycm9yYC4gVGhlIGZpbmFsIGF0dGVtcHQgbmV2ZXIgZmlyZXMgdGhpcyBldmVudC5cbiAgICovXG4gIG9uU3RhZ2VSZXRyeShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgYXR0ZW1wdDogbnVtYmVyLFxuICAgIG1heEF0dGVtcHRzOiBudW1iZXIsXG4gICAgZGVsYXlNczogbnVtYmVyLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBmb3JrIGNoaWxkIGZhaWxlZCBhbmQgdGhlIHJ1bidzIGB0aHJvdHRsaW5nRXJyb3JDaGVja2VyYFxuICAgKiBjbGFzc2lmaWVkIGl0cyBlcnJvciBhcyB0aHJvdHRsaW5nICg5LjM5LjApLiBUaGUgY2hpbGQncyBmYWlsdXJlIHRha2VzXG4gICAqIGl0cyBvcmRpbmFyeSBwYXRoIHRvbzsgdGhpcyBvbmx5IG5hbWVzIGl0IGFzIHRocm90dGxpbmcuXG4gICAqL1xuICBvblRocm90dGxlZD8oXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBwYXVzYWJsZSBzdGFnZSBwYXVzZXMgZXhlY3V0aW9uLiAqL1xuICBvblBhdXNlKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBwYXVzZURhdGE6IHVua25vd24sXG4gICAgc3ViZmxvd1BhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHBhdXNlZCBzdGFnZSBpcyByZXN1bWVkLiAqL1xuICBvblJlc3VtZShzdGFnZU5hbWU6IHN0cmluZywgc3RhZ2VJZDogc3RyaW5nLCBoYXNJbnB1dDogYm9vbGVhbiwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAsIEJFRk9SRSB0aGUgZmlyc3Qgc3RhZ2UgZXhlY3V0ZXMuXG4gICAqIGBpbnB1dGAgaXMgdGhlIHJldGFpbmVkIGZvcm0gb2YgYHJ1bih7aW5wdXR9KWAgYWZ0ZXIgc2NoZW1hIHZhbGlkYXRpb247XG4gICAqIHRoZSBydW4ncyBrZXkvcGF0aCByZWRhY3Rpb24gYXBwbGllcyBiZWZvcmUgZGlzcGF0Y2guIFNlZSB7QGxpbmsgRmxvd1J1bkV2ZW50fS5cbiAgICogU3ViZmxvdy10cmF2ZXJzZXJzIGRvIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RW50cnlgLlxuICAgKi9cbiAgb25SdW5TdGFydChpbnB1dDogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAsIEFGVEVSIHRoZSBsYXN0IHN0YWdlIGNvbW1pdHMuXG4gICAqIGBvdXRwdXRgIGlzIHRoZSByZXRhaW5lZCBmb3JtIG9mIHRoZSBjaGFydCdzIHJldHVybi4gTk9UIGZpcmVkIG9uIHBhdXNlICh0aGUgcnVuXG4gICAqIGRpZG4ndCBlbmQ7IGl0IHN1c3BlbmRlZCkgb3Igb24gdW5jYXVnaHQgZXJyb3IuIFN1YmZsb3ctdHJhdmVyc2VycyBkb1xuICAgKiBOT1QgZmlyZSB0aGlzIGV2ZW50IOKAlCB0aGV5IGZpcmUgYG9uU3ViZmxvd0V4aXRgLlxuICAgKi9cbiAgb25SdW5FbmQob3V0cHV0OiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCB3aGVuIHRyYXZlcnNhbCB0aHJvd3MgYVxuICAgKiBOT04tcGF1c2UgZXJyb3IsIEJFRk9SRSB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMgdG8gYHJ1bigpYCdzIGNhbGxlci5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgVEVSTUlOQUwgY291bnRlcnBhcnQgdG8gYG9uUnVuRW5kYCDigJQgaXQgY2xvc2VzIHRoZSBydW5cbiAgICogYm91bmRhcnkgc3ltbWV0cmljYWxseSBzbyBldmVyeSBgb25SdW5TdGFydGAgaXMgZm9sbG93ZWQgYnkgZXhhY3RseVxuICAgKiBvbmUgb2YgYG9uUnVuRW5kYCAoY2xlYW4pIG9yIGBvblJ1bkZhaWxlZGAgKGVycm9yKS4gV2l0aG91dCBpdCwgYVxuICAgKiBsaXZlIG1vbml0b3Igc2VlcyBgb25SdW5TdGFydGAgdGhlbiBzaWxlbmNlIG9uIGEgZmFpbGVkIHJ1biBhbmQgY2FuJ3RcbiAgICogdGVsbCBcInN0aWxsIHJ1bm5pbmdcIiBmcm9tIFwiY3Jhc2hlZC5cIlxuICAgKlxuICAgKiBFcnJvcnMgU1RJTEwgdGhyb3cg4oCUIHRoaXMgaXMgdGhlIG9ic2VydmFibGUgdGVybWluYWwgc2lnbmFsLCBub3QgYVxuICAgKiByZWNvdmVyeSBtZWNoYW5pc20gKG5vIHJvdXRpbmcsIG5vIGVycm9yLXN1YmZsb3cpLiBQYXVzZSBpcyBOT1QgYW5cbiAgICogZXJyb3IsIHNvIGl0IGRvZXMgbm90IGZpcmUgdGhpcy4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvIE5PVCBmaXJlIGl0O1xuICAgKiB0aGVpciBlcnJvcnMgcHJvcGFnYXRlIHRvIHRoZSBwYXJlbnQgYW5kIHN1cmZhY2UgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICovXG4gIG9uUnVuRmFpbGVkKGVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIFJldHVybnMgYWNjdW11bGF0ZWQgbmFycmF0aXZlIHNlbnRlbmNlcyBpbiBleGVjdXRpb24gb3JkZXIuICovXG4gIGdldFNlbnRlbmNlcygpOiBzdHJpbmdbXTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHJhdmVyc2FsQ29udGV4dCDigJQgcmVhZC1vbmx5IGV4ZWN1dGlvbiBjb250ZXh0IGZyb20gdGhlIHRyYXZlcnNlci5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBUcmF2ZXJzYWwgY29udGV4dCBhdHRhY2hlZCB0byBldmVyeSBGbG93UmVjb3JkZXIgZXZlbnQuXG4gKiBDcmVhdGVkIGJ5IHRoZSB0cmF2ZXJzZXIgZHVyaW5nIERGUywgcGFzc2VkIHRvIHJlY29yZGVycyBhcyByZWFkLW9ubHkgZGF0YS5cbiAqIEVuYWJsZXMgcmVjb3JkZXJzIHRvIGJ1aWxkIHRyZWVzLCBncm91cCBieSBzdWJmbG93LCBhbmQgY29ycmVsYXRlIGV2ZW50c1xuICogd2l0aG91dCBtYWludGFpbmluZyB0aGVpciBvd24gc3RhY2tzIG9yIHBvc3QtcHJvY2Vzc2luZy5cbiAqXG4gKiBMaWtlIE9wZW5UZWxlbWV0cnkncyBzcGFuIGNvbnRleHQ6IHN0YWdlSWQgKyBwYXJlbnRTdGFnZUlkIGZvcm0gYSB0cmVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYXZlcnNhbENvbnRleHQge1xuICAvKipcbiAgICogUGVyLWBleGVjdXRvci5ydW4oKWAgaWRlbnRpZmllci4gR2VuZXJhdGVkIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5XG4gICAqIGBydW4oKWAgKGFuZCBhZ2FpbiBvbiBgcmVzdW1lKClgKTsgc2hhcmVkIGJ5IGV2ZXJ5IGV2ZW50IG9mIHRoYXQgcnVuO1xuICAgKiBkaWZmZXJzIGFjcm9zcyBjb25zZWN1dGl2ZSBydW5zIG9mIHRoZSBzYW1lIGV4ZWN1dG9yLlxuICAgKlxuICAgKiBGb3JtYXQ6IGAke0RhdGUubm93KCl9LSR7Y291bnRlcn1gIOKAlCBzb3J0YWJsZSBsZXhpY29ncmFwaGljYWxseSAoPT1cbiAgICogY2hyb25vbG9naWNhbGx5IGZvciBydW5zID4gMW1zIGFwYXJ0KS4gUHJvY2Vzcy1sb2NhbCDigJQgZm9yIGNyb3NzLVxuICAgKiBwcm9jZXNzIGNvcnJlbGF0aW9uIHVzZSBgZ2V0RW52KCkudHJhY2VJZGAgKGNvbnN1bWVyLXN1cHBsaWVkKS5cbiAgICpcbiAgICogUmVjb3JkZXJzIHRoYXQgYWNjdW11bGF0ZSBzdGF0ZSBhY3Jvc3MgcnVucyAoZm9yayBib29ra2VlcGluZyxcbiAgICogc2libGluZy1oYW5kb2ZmIHN0YXRlLCBldGMuKSBkZXRlY3QgXCJuZXcgcnVuXCIgdmlhXG4gICAqIGBldmVudC50cmF2ZXJzYWxDb250ZXh0LnJ1bklkICE9PSB0aGlzLmxhc3RSdW5JZGAgYW5kIHJlc2V0XG4gICAqIHRyYW5zaWVudCBib29ra2VlcGluZy4gUmVjb3JkZXJzIHRoYXQgZG9uJ3QgY2FyZSBhYm91dCBzY29waW5nXG4gICAqIGlnbm9yZSB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiAqL1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4LlxuICAgKiAgQ291bnRlciByZXNldHMgcGVyIGV4ZWN1dG9yIOKAlCBjb21iaW5lIHdpdGggYHJ1bklkYCBmb3IgZ2xvYmFsbHkgdW5pcXVlIHN0ZXAga2V5cy4gKi9cbiAgcmVhZG9ubHkgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogUGFyZW50IHN0YWdlIElEIOKAlCB3YWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSB0cmVlLiBVbmRlZmluZWQgYXQgcm9vdC4gKi9cbiAgcmVhZG9ubHkgcGFyZW50U3RhZ2VJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgRVhFQ1VUSU9OIHN0ZXAncyBydW50aW1lU3RhZ2VJZCDigJQgdGhlIHJ1bnRpbWUgdHdpbiBvZlxuICAgKiBgcGFyZW50U3RhZ2VJZGAgKFJGQy0wMDMgRDEpLiBXYWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSBydW50aW1lXG4gICAqIGFuY2VzdG9yIGNoYWluOyBsb29wIHJlLWVudHJpZXMgc3RheSB1bmFtYmlndW91cyBiZWNhdXNlIHJ1bnRpbWUgaWRzXG4gICAqIChgc3RhZ2VJZCNleGVjdXRpb25JbmRleGApIGRpZmZlciBwZXIgaXRlcmF0aW9uIGV2ZW4gd2hlbiBzdGFnZSBpZHNcbiAgICogcmVwZWF0LiBDcm9zc2VzIHN1YmZsb3cgYm91bmRhcmllczogdGhlIGZpcnN0IHN0YWdlIGluc2lkZSBhIHN1YmZsb3dcbiAgICogcG9pbnRzIGF0IHRoZSBNT1VOVCBzdGFnZSdzIHJ1bnRpbWVTdGFnZUlkIGluIHRoZSBwYXJlbnQgdHJhdmVyc2VyLlxuICAgKiBVbmRlZmluZWQgb25seSBhdCB0aGUgZmlyc3Qgc3RhZ2Ugb2YgdGhlIHRvcC1sZXZlbCBjaGFydC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBJRCB3aGVuIGluc2lkZSBhIHN1YmZsb3cuIFVuZGVmaW5lZCBhdCByb290IGxldmVsLiAqL1xuICByZWFkb25seSBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBGdWxsIHN1YmZsb3cgcGF0aCBmb3IgbmVzdGVkIHN1YmZsb3dzIChlLmcuLCBcInNmLW91dGVyL3NmLWlubmVyXCIpLiAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFN1YmZsb3cgbmVzdGluZyBkZXB0aCBvZiB0aGUgc3RhZ2UncyBBRERSRVNTOiBob3cgbWFueSBzdWJmbG93IHNlZ21lbnRzIGl0c1xuICAgKiBgcnVudGltZVN0YWdlSWRgIGNhcnJpZXMgKDAgPSB0b3AgbGV2ZWwsIDEgPSBpbnNpZGUgYSBzdWJmbG93IG9yIGFcbiAgICogYHBhcmFsbGVsRm9yRWFjaGAgYnJhbmNoLCAyID0gYSBzdWJmbG93IGluc2lkZSB0aGF0LCDigKYpLiBPbmUgbWVhbmluZyBvblxuICAgKiBldmVyeSBzdGFtcCDigJQgc3RhZ2UgZXZlbnRzLCB0aGUgcnVuLWJvdW5kYXJ5IHJvb3QgKDApIGFuZCBgb25SZXN1bWVgXG4gICAqICg5LjM3LjA7IHVudGlsIDkuMzYuMCBzdGFnZSBldmVudHMgc3RhbXBlZCB0aGUgcGFyZW50LWNoYWluIGxlbmd0aCBvZiB0aGVcbiAgICogc3RhZ2UncyBjb250ZXh0IGluc3RlYWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRoaXMgc3RhZ2UgaGFzIGV4ZWN1dGVkIEJFRk9SRSBpbiB0aGlzIHJ1biDigJQgdGhlIGxvb3BcbiAgICogaXRlcmF0aW9uIGNvdW50IHdoZW4gYSBub2RlIGlzIHJldmlzaXRlZCAoZS5nLiB2aWEgYGxvb3BUb2ApLiBBYnNlbnQgb24gdGhlXG4gICAqIGZpcnN0IGV4ZWN1dGlvbjsgYDFgIG9uIHRoZSBmaXJzdCBsb29wLWJhY2ssIGAyYCBvbiB0aGUgbmV4dCwg4oCmIChpLmUuXG4gICAqIGB2aXNpdENvdW50IC0gMWApLiBSdW4tc2NvcGVkIChyZXNldHMgZWFjaCBgcnVuKClgL2ByZXN1bWUoKWApIGFuZCBtb25vdG9uaWNcbiAgICogYWNyb3NzIHN1YmZsb3cgcmUtbW91bnRzLiBQb3B1bGF0ZWQgZm9yIGV2ZXJ5IHN0YWdlIGtpbmQuIE1pcnJvcnMgdGhlXG4gICAqIG5hcnJhdGl2ZSByZWNvcmRlcidzIFwicGFzcyBOXCIgY291bnQuXG4gICAqL1xuICByZWFkb25seSBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICAvKiogRm9yayBicmFuY2ggSUQgd2hlbiBpbnNpZGUgYSBwYXJhbGxlbCBvciBkZWNpZGVyIGJyYW5jaC4gKi9cbiAgcmVhZG9ubHkgZm9ya0JyYW5jaD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHRoZSBgb25SZXN1bWVgIGV2ZW50IG9ubHkgKDkuMzcuMCk6IHRoZSBQQVVTRUQgZXhlY3V0aW9uIHRoaXMgcmVzdW1lZFxuICAgKiBydW4gY29udGludWVzIOKAlCBhIGxpbmsgaW4gdGhlIE9wZW5UZWxlbWV0cnkgc2Vuc2UsIG5vdCBhIHBhcmVudC4gQSByZXN1bWVcbiAgICogaXMgYSBuZXcgYHJ1bklkYCwgc28gdGhlIHBhdXNlZCBgKHJ1bklkLCBydW50aW1lU3RhZ2VJZClgIGNhbm5vdCBiZSBhXG4gICAqIHBhcmVudCBvZiBhbnl0aGluZyBpbiBpdDsgaXQgaXMgbmFtZWQgaGVyZSBpbnN0ZWFkLiBBYnNlbnQgd2hlbiB0aGVcbiAgICogY2hlY2twb2ludCBwcmVkYXRlcyA5LjM3LjAgKGl0IGRpZCBub3QgcmVjb3JkIHRoZSBwYXVzZWQgZXhlY3V0aW9uKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VtZWRGcm9tPzogUmVzdW1lTGluaztcbiAgLyoqXG4gICAqIFRoZSBydW4ncyBjb3JyZWxhdGlvbiAoMTAuMSkg4oCUIGBlbnYudHJhY2VwYXJlbnRgLCBvciBgZW52LnRyYWNlSWRgICsgYGVudi5vcGVyYXRpb25JZGAsIHJlc29sdmVkIG9uY2UgcGVyXG4gICAqIGxlZy4gVGhlIFNBTUUgZnJvemVuIG9iamVjdCwgYnkgcmVmZXJlbmNlLCBvbiBldmVyeSBzdGFtcCBvZiB0aGUgbGVnIChzdWJmbG93cyBpbmNsdWRlZCkgYW5kIG9uXG4gICAqIGBnZXRTbmFwc2hvdCgpLmNvcnJlbGF0aW9uYC4gQWJzZW50IOKAlCBubyBrZXkg4oCUIHdoZW4gdGhlIGVudiBnaXZlcyBub25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ycmVsYXRpb24/OiBSdW5Db3JyZWxhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgcGF1c2VkIGV4ZWN1dGlvbiBhIHJlc3VtZSBjb250aW51ZXMg4oCUIGBUcmF2ZXJzYWxDb250ZXh0LnJlc3VtZWRGcm9tYC5cbiAqIEJvdGggaWRzIGFyZSB0aGUgUEFVU0VEIHJ1bidzOiBgcnVuSWRgIGlzIHRoYXQgcnVuJ3MsIGBydW50aW1lU3RhZ2VJZGAgdGhlXG4gKiBleGVjdXRpb24gb2YgdGhlIHN0YWdlIHRoYXQgcGF1c2VkIChhcyBpdHMgYG9uUGF1c2VgIGV2ZW50IHN0YW1wZWQgaXQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VtZUxpbmsge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZUV4ZWN1dGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRyYXZlcnNhbCBjb250ZXh0IGZyb20gdGhlIGVuZ2luZSDigJQgcmVhZC1vbmx5LCBzZXQgYnkgdHJhdmVyc2VyLiAqL1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIFdoaWNoIGtpbmQgb2Ygc3RhZ2UgY29tcGxldGVkLiBUaGUgZW5naW5lIGZpcmVzIGBvblN0YWdlRXhlY3V0ZWRgXG4gICAqIHVuaWZvcm1seSBmb3IgZXZlcnkgc3RhZ2Uga2luZCAocHJvcG9zYWwgIzAwMyk7IGNvbnN1bWVycyByb3V0ZSBieVxuICAgKiBgc3RhZ2VUeXBlYCB3aXRob3V0IGEgY2hhcnQtc3BlYyBsb29rdXAuXG4gICAqL1xuICBzdGFnZVR5cGU6IFN0YWdlVHlwZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25OZXh0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93TmV4dEV2ZW50IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRGVjaXNpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dEZWNpc2lvbkV2ZW50IHtcbiAgZGVjaWRlcjogc3RyaW5nO1xuICBjaG9zZW46IHN0cmluZztcbiAgcmF0aW9uYWxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRlY2lzaW9uIGV2aWRlbmNlIGZyb20gZGVjaWRlKCkgaGVscGVyLiAqL1xuICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRm9yay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0ZvcmtFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBjaGlsZHJlbjogc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblNlbGVjdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U2VsZWN0ZWRFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBzZWxlY3RlZDogc3RyaW5nW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogU3RydWN0dXJlZCBzZWxlY3Rpb24gZXZpZGVuY2UgZnJvbSBzZWxlY3QoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogU2VsZWN0aW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dFdmVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgdXNlIHRoaXMgdG8gbG9vayB1cCB0aGUgZnVsbCBzcGVjIHZpYSB0aGUgbWFuaWZlc3QuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN1YmZsb3cgZG9lcy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogTWFwcGVkIGlucHV0IHZhbHVlcyBzZW50IElOVE8gdGhlIHN1YmZsb3cgKGZyb20gaW5wdXRNYXBwZXIvaW5wdXRLZXlzKS4gUHJlc2VudCBvbiBlbnRyeSBldmVudHMuICovXG4gIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBTdWJmbG93IHNoYXJlZCBzdGF0ZSBhdCBleGl0LiBQcmVzZW50IG9uIGV4aXQgZXZlbnRzLiAqL1xuICBvdXRwdXRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN1YmZsb3dSZWdpc3RlcmVkIChkeW5hbWljIHN1YmZsb3cgYXR0YWNobWVudCkuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50IHtcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllci4gKi9cbiAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBCdWlsZC10aW1lIGRlc2NyaXB0aW9uLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3BlYyBzdHJ1Y3R1cmUgKHdoZW4gYXZhaWxhYmxlIGZyb20gYnVpbGRUaW1lU3RydWN0dXJlKS4gKi9cbiAgc3BlY1N0cnVjdHVyZT86IHVua25vd247XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkxvb3AuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb29wRXZlbnQge1xuICB0YXJnZXQ6IHN0cmluZztcbiAgaXRlcmF0aW9uOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25CcmVhay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0JyZWFrRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmcmVlLWZvcm0gcmVhc29uIHN1cHBsaWVkIGJ5IGBzY29wZS4kYnJlYWsocmVhc29uKWAuIEFic2VudFxuICAgKiB3aGVuIHRoZSBzdGFnZSBpbnZva2VkIGAkYnJlYWsoKWAgd2l0aG91dCBhbiBhcmd1bWVudC4gUHJvcGFnYXRlcyB3aGVuXG4gICAqIGEgc3ViZmxvdyBpcyBtb3VudGVkIHdpdGggYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCDigJQgdGhlIG91dGVyIGJyZWFrXG4gICAqIGV2ZW50IGNhcnJpZXMgdGhlIGlubmVyIGJyZWFrJ3MgcmVhc29uIHRvby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhpcyBicmVhayBldmVudCB3YXMgcmFpc2VkIG9uIHRoZSBQQVJFTlQgYmVjYXVzZSBhbiBpbm5lclxuICAgKiBzdWJmbG93J3MgYnJlYWsgcHJvcGFnYXRlZCB1cCAodmlhIGBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrYCkuXG4gICAqIFRoZSBvcmlnaW5hdGluZyBpbm5lciBicmVhayBmaXJlcyBpdHMgb3duIGBvbkJyZWFrYCBldmVudCBzZXBhcmF0ZWx5XG4gICAqIOKAlCB0aGlzIGZsYWcgbGV0cyByZWNvcmRlcnMgZGlzdGluZ3Vpc2ggdGhlIHR3by5cbiAgICovXG4gIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25FcnJvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0Vycm9yRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBlcnJvciBkZXRhaWxzIOKAlCBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgaXNzdWVzLCBlcnJvciBjb2RlcywgZXRjLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIGAnZmxvdydgIG9uIGV2ZXJ5IGVuZ2luZS1kaXNwYXRjaGVkXG4gICAqIGV2ZW50LiBgaXNGbG93RXZlbnQoKWAgY2hlY2tzIGl0IGZpcnN0IChiYWNrbG9nIEIzKTsgb3B0aW9uYWwgc29cbiAgICogY29uc3VtZXItZmFicmljYXRlZCBldmVudHMgKHRlc3RzLCByZXBsYXlzKSByZW1haW4gdHlwZS12YWxpZCBhbmQgZmFsbFxuICAgKiBiYWNrIHRvIHRoZSBsZWdhY3kgcGlwZWxpbmVJZC1hYnNlbmNlIGhldXJpc3RpYy5cbiAgICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblRocm90dGxlZCDigJQgYSBmb3JrIGNoaWxkIGZhaWxlZCBhbmQgdGhlXG4gKiBleGVjdXRvcidzIGB0aHJvdHRsaW5nRXJyb3JDaGVja2VyYCBzYWlkIGl0cyBlcnJvciBpcyB0aHJvdHRsaW5nICg5LjM5LjApLlxuICpcbiAqIFdIWSBhbiBldmVudDogdGhlIGNoZWNrZXIgdXNlZCB0byB3cml0ZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgaW50byB0aGVcbiAqIGNoaWxkJ3MgZnJhbWUgQUZURVIgdGhlIGNoaWxkJ3MgbGFzdCBjb21taXQsIHNvIHRoZSBmbGFnIGxhbmRlZCBub3doZXJlIOKAlFxuICogbm90IGluIHN0YXRlLCBub3QgaW4gdGhlIGxvZy4gVGhyb3R0bGluZyBpcyB0ZWxlbWV0cnksIHNvIGl0IHRyYXZlbHMgdGhlXG4gKiB3YXkgdGVsZW1ldHJ5IGRvZXM6IGFzIGFuIGV2ZW50IGEgcmVjb3JkZXIgY2FuIGNvdW50LCBhbGVydCBvbiwgb3IgYmFjayBvZmZcbiAqIGZyb20uIFRoZSBjaGlsZCdzIGZhaWx1cmUgc3RpbGwgdGFrZXMgaXRzIG9yZGluYXJ5IHBhdGggKHRoZSBmYW4tb3V0XG4gKiByZWNvcmRzIGl0IGFzIGB7IGlzRXJyb3I6IHRydWUgfWApOyB0aGlzIGV2ZW50IG9ubHkgY2xhc3NpZmllcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93VGhyb3R0bGVkRXZlbnQge1xuICAvKiogVGhlIGZvcmsgY2hpbGQgd2hvc2UgZXJyb3Igd2FzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZy4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBvZiB0aGF0IGNoaWxkIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ugb2YgdGhlIGNoaWxkJ3MgZXJyb3IuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICAvKiogVGhlIEZPUksncyBzdGFtcCDigJQgdGhlIGZhbi1vdXQgaXMgd2hlcmUgdGhlIGNsYXNzaWZpY2F0aW9uIGlzIG1hZGUuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkF0dGVtcHQg4oCUIG9uZSBhdHRlbXB0LCBhdCBpdHMgZW5kICgxMC4xKTogYVxuICogc3RhZ2UncyBvd24gdW5kZXIgaXRzIHJldHJ5IHBvbGljeSwgYSBgdGltZW91dE1zYCBvciBhIHJ1biBkZWFkbGluZVxuICogKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2ApLCBvciDigJQgZHVyaW5nIHRoZSBzdGFnZSDigJQgYSBjYWxsIGl0IG1hZGVcbiAqIChgJ2NhbGwnYCwgYHNjb3BlLiRjYWxsYCkgb3IgYW4gb3V0c2lkZSBhdHRlbXB0IGl0IHJlcG9ydGVkIChgJ29ic2VydmVkJ2AsXG4gKiBQMikuIGBzdGFnZU5hbWVgIC8gYHN0YWdlSWRgIC8gYHRyYXZlcnNhbENvbnRleHRgIGFyZSB0aGUgc3RhZ2UncyBpbiBldmVyeVxuICogY2FzZTsgZmlsdGVyIG9uIGByZWNvcmQua2luZGAgdG8gY291bnQgb25lIGtpbmQuXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBgb25TdGFnZVJldHJ5YCBzYXlzIFwiYXR0ZW1wdCBOIGZhaWxlZCwgcmV0cnlpbmdcIiBhbmRcbiAqIG5vdGhpbmcgZWxzZSDigJQgbm90IGhvdyBsb25nIGEgdHJ5IHRvb2ssIG5vdCB3aHkgdGhlIHNlcmllcyBzdG9wcGVkLCBhbmRcbiAqIG5vdGhpbmcgYXQgYWxsIHdoZW4gYHJldHJ5T25gIGRlY2xpbmVkLiBFdmVyeSBhdHRlbXB0IGlzIGFuXG4gKiB7QGxpbmsgQXR0ZW1wdFJlY29yZH0gaW5zdGVhZCwgd2hhdGV2ZXIgaXRzIG91dGNvbWUsIHdpdGggdGhlIGRlY2lzaW9uIHRoYXRcbiAqIGZvbGxvd2VkIGl0IGluIHRoZSBzaGFwZSBgZGVjaWRlKClgIHJlY29yZHMg4oCUIHRoZSBzYW1lIHJlY29yZHMgdGhlIHN0YWdlJ3NcbiAqIGV4ZWN1dGlvbi10cmVlIG5vZGUga2VlcHMgKGBTdGFnZVNuYXBzaG90LmF0dGVtcHRzYCkuXG4gKlxuICogRmlyZXMgb25jZSBwZXIgYXR0ZW1wdCwgYmVmb3JlIGBvblN0YWdlUmV0cnlgICh3aGVuIHRoZSBhdHRlbXB0IGlzIHJldHJpZWQpXG4gKiBhbmQgYmVmb3JlIGBvbkVycm9yYCAvIGBvblN0YWdlRXhlY3V0ZWRgIChmb3IgdGhlIGxhc3QpLiBUaGUgcmVjb3JkIGlzXG4gKiBmcm96ZW4gYW5kIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgOyBgc3RydWN0dXJlZEVycm9yYCBpcyB0aGUgc2VydmVkIGVycm9yXG4gKiB3aXRoIGByYXdgLCBhcyBvbiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0g4oCUIGV4Y2VwdCBmb3IgYW4gb2JzZXJ2ZWRcbiAqIGF0dGVtcHQsIHdob3NlIGVycm9yIHRoZSBsaWJyYXJ5IG5ldmVyIHRocmV3IChgcmF3YCBpcyB1bmRlZmluZWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBdHRlbXB0RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogVGhlIGF0dGVtcHQ6IHRpbWluZywgb3V0Y29tZSwgY2F0ZWdvcnksIGRlY2lzaW9uLCBhbmQgdGhlIHNlcnZlZCBlcnJvciB3aXRob3V0IGByYXdgLiAqL1xuICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQ7XG4gIC8qKiBUaGUgYXR0ZW1wdCdzIHNlcnZlZCBlcnJvciB3aXRoIGByYXdgIOKAlCBhYnNlbnQgZm9yIGEgc3VjY2VzcyBvciBhIHBhdXNlLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I/OiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZVJldHJ5IOKAlCBvbmUgZmFpbGVkIGF0dGVtcHQgYXQgYSBzdGFnZVxuICogdGhhdCBjYXJyaWVzIGEgZGVjbGFyZWQge0BsaW5rIGltcG9ydCgnLi4vdHlwZXMuanMnKS5SZXRyeVBvbGljeX0sIGFuZCB3aGljaFxuICogV0lMTCBiZSBhdHRlbXB0ZWQgYWdhaW4uXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBhIHJldHJ5IGhhbmQtcm9sbGVkIGluc2lkZSBhIHN0YWdlIGZ1bmN0aW9uIGxlYXZlcyBub1xuICogbWFyayBvbiB0aGUgdHJhY2UgYXQgYWxsLiBUaGlzIGV2ZW50IGlzIHdoYXQgbWFrZXMgYSBkZWNsYXJlZCByZXRyeSBwYXJ0IG9mXG4gKiB0aGUgcmVjb3JkIOKAlCB3aGljaCBhdHRlbXB0IGZhaWxlZCwgd2h5LCBob3cgbG9uZyB0aGUgZW5naW5lIHdhaXRlZCwgYW5kIGhvd1xuICogbWFueSBhdHRlbXB0cyB0aGUgcG9saWN5IGFsbG93cy5cbiAqXG4gKiBGaXJlcyBvbmx5IGZvciBhdHRlbXB0cyBmb2xsb3dlZCBieSBhbm90aGVyIGF0dGVtcHQuIFRoZSBmaW5hbCBmYWlsdXJlIHRha2VzXG4gKiB0aGUgb3JkaW5hcnkgZXJyb3IgcGF0aCAoYG9uRXJyb3JgKSwgc28gdGhlIHR3byBuZXZlciBkb3VibGUtcmVwb3J0IHRoZSBzYW1lXG4gKiBmYWlsdXJlOiBhbiBleGhhdXN0ZWQgYGF0dGVtcHRzOiAzYCBwb2xpY3kgZW1pdHMgMiByZXRyeSBldmVudHMgKyAxIGVycm9yXG4gKiBldmVudDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBlbWl0cyAwIHJldHJ5IGV2ZW50cyArIDEgZXJyb3IgZXZlbnQuIEVhY2hcbiAqIGF0dGVtcHQg4oCUIHJldHJpZWQgb3Igbm90IOKAlCBhbHNvIGZpcmVzIHtAbGluayBGbG93QXR0ZW1wdEV2ZW50fSBmaXJzdCAoMTAuMSksXG4gKiB3aGljaCBpcyB3aGVyZSBhIGRlY2xpbmVkIHN0b3AgaXMgcmVjb3JkZWQgKGByZWFzb246ICdkZWNsaW5lZCdgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VSZXRyeUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFdoaWNoIGF0dGVtcHQganVzdCBGQUlMRUQsIDEtYmFzZWQuICovXG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLCBpbmNsdWRpbmcgdGhlIGZpcnN0LiAqL1xuICBtYXhBdHRlbXB0czogbnVtYmVyO1xuICAvKiogTWlsbGlzZWNvbmRzIHRoZSBlbmdpbmUgd2lsbCB3YWl0IGJlZm9yZSB0aGUgbmV4dCBhdHRlbXB0LiBgMGAgPSBpbW1lZGlhdGUuICovXG4gIGRlbGF5TXM6IG51bWJlcjtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ug4oCUIHRoZSBzYW1lIHN0cmluZyBgb25FcnJvcmAgd291bGQgY2FycnkuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCBlbmRlZCB0aGlzIGF0dGVtcHQuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25QYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1BhdXNlRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogRGF0YSBmcm9tIHRoZSBwYXVzZSBzaWduYWwgKHF1ZXN0aW9uLCByZWFzb24sIG1ldGFkYXRhKS4gKi9cbiAgcGF1c2VEYXRhPzogdW5rbm93bjtcbiAgLyoqIFBhdGggdGhyb3VnaCBzdWJmbG93cyB0byB0aGUgcGF1c2VkIHN0YWdlLiBFbXB0eSBhdCByb290IGxldmVsLiAqL1xuICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUmVzdW1lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVzdW1lRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hldGhlciByZXN1bWUgaW5wdXQgd2FzIHByb3ZpZGVkLiAqL1xuICBoYXNJbnB1dDogYm9vbGVhbjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuU3RhcnQgLyBvblJ1bkVuZC5cbiAqXG4gKiBCcmFja2V0cyB0aGUgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgY2FsbC4gU3ViZmxvd3MgaGF2ZSB0aGVpciBvd25cbiAqIHBhaXIgKGBvblN1YmZsb3dFbnRyeWAgLyBgb25TdWJmbG93RXhpdGApOyB0aGUgcnVuIHBhaXIgaXMgdGhlIE9VVEVSTU9TVFxuICogYm91bmRhcnksIHNvIGNvbnN1bWVycyBidWlsZGluZyBcImV2ZXJ5IHN0ZXAgaGFzIGFuIGluL291dFwiIHZpZXdzIGNhblxuICogY2xvc2UgdGhlIGNoYWluIGF0IHRoZSB0b3AgbGV2ZWwuXG4gKlxuICogICAtIGBvblJ1blN0YXJ0YCBwYXlsb2FkIOKGkiB0aGUgaW5wdXQgcGFzc2VkIHRvIGBydW4oe2lucHV0fSlgXG4gKiAgIC0gYG9uUnVuRW5kYCAgIHBheWxvYWQg4oaSIHRoZSBjaGFydCdzIHJldHVybiB2YWx1ZVxuICpcbiAqIEJvdGggYXJlIHJldGFpbmVkIGF0IHJ1bnRpbWUgYmVmb3JlIGRpc3BhdGNoL2RlZmVycmVkIGNhcHR1cmUgdXNpbmcgdGhlXG4gKiBydW4ncyBSZWRhY3Rpb25SdWxlIChgcmV0YWluQm91bmRhcnlgKTogb3duIHN0cmluZyBrZXlzIGF0IGV2ZXJ5IGRlcHRoIChieVxuICogbmFtZSBvciBkb3R0ZWQgcGF0aCkgYW5kIGV4cGxpY2l0IG5lc3RlZCBmaWVsZHMuIFNjYWxhcnMgcGFzcyB0aHJvdWdoOyBmb3JrXG4gKiBjaGlsZC1JRCBlbnZlbG9wZXMgbmVlZCBleHBsaWNpdCBwYXRocyBzdWNoIGFzIGZpZWxkczogeyBjaGlsZElkOiBbJ3Jlc3VsdC5zZWNyZXQnXSB9LlxuICogVmFsdWVzIGFyZSBub3Qgc2Nhbm5lZC4gTGl2ZSBleGVjdXRpb24gaW5wdXRzIGFuZCByZXR1cm4gdmFsdWVzIHN0YXkgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5FdmVudCB7XG4gIC8qKiBSZXRhaW5lZCBpbnB1dCBhZnRlciB2YWxpZGF0aW9uIChgb25SdW5TdGFydGApIG9yIHJldGFpbmVkIGNoYXJ0IHJldHVyblxuICAgKiAgKGBvblJ1bkVuZGApLCB1bmRlciB0aGUga2V5L3BhdGggY29udHJhY3QgYWJvdmUuIFVuZGVmaW5lZCBpZiBuZWl0aGVyLiAqL1xuICBwYXlsb2FkPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblJ1bkZhaWxlZCDigJQgdGhlIFRFUk1JTkFMIGZhaWx1cmUgYm91bmRhcnlcbiAqIGZvciBhIHRvcC1sZXZlbCBydW4uIE1pcnJvciBvZiBgb25SdW5FbmRgIGZvciB0aGUgZXJyb3IgcGF0aDogaXQgZmlyZXNcbiAqIG9uY2UsIGR1cmluZyB0cmF2ZXJzYWwsIHdoZW4gdGhlIHJ1biB0aHJvd3MgYSBub24tcGF1c2UgZXJyb3IsIGJlZm9yZVxuICogdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBDYXJyaWVzIHRoZSBzdHJ1Y3R1cmVkIGVycm9yIChmaWVsZC1sZXZlbFxuICogaXNzdWVzLCBjb2RlcykgcmF0aGVyIHRoYW4gYSBmbGF0dGVuZWQgc3RyaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5GYWlsZWRFdmVudCB7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRldGFpbHMgb2YgdGhlIGVycm9yIHRoYXQgdGVybWluYXRlZCB0aGUgcnVuLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKipcbiAqIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuICpcbiAqIE1pcnJvcnMgdGhlIHNjb3BlLWxldmVsIFNjb3BlUmVjb3JkZXIgcGF0dGVybiBmb3IgdGhlIGVuZ2luZSBsYXllci5cbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogUmVjb3JkZXJzIGFyZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgaW4gYXR0YWNobWVudCBvcmRlci5cbiAqIElmIGEgcmVjb3JkZXIgdGhyb3dzLCB0aGUgZXJyb3IgaXMgY2F1Z2h0IGFuZCBzd2FsbG93ZWQ7IGV4ZWN1dGlvbiBjb250aW51ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpY3NSZWNvcmRlcjogRmxvd1JlY29yZGVyID0ge1xuICogICBpZDogJ21ldHJpY3MnLFxuICogICBvbkxvb3A6IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdsb29wLml0ZXJhdGlvbicsIGV2ZW50Lml0ZXJhdGlvbiksXG4gKiAgIG9uRGVjaXNpb246IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdkZWNpc2lvbicsIGV2ZW50LmNob3NlbiksXG4gKiB9O1xuICogZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKG1ldHJpY3NSZWNvcmRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVjb3JkZXIge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICBvblN0YWdlRXhlY3V0ZWQ/KGV2ZW50OiBGbG93U3RhZ2VFdmVudCk6IHZvaWQ7XG4gIG9uTmV4dD8oZXZlbnQ6IEZsb3dOZXh0RXZlbnQpOiB2b2lkO1xuICBvbkRlY2lzaW9uPyhldmVudDogRmxvd0RlY2lzaW9uRXZlbnQpOiB2b2lkO1xuICBvbkZvcms/KGV2ZW50OiBGbG93Rm9ya0V2ZW50KTogdm9pZDtcbiAgb25TZWxlY3RlZD8oZXZlbnQ6IEZsb3dTZWxlY3RlZEV2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RW50cnk/KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RXhpdD8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkPyhldmVudDogRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQpOiB2b2lkO1xuICBvbkxvb3A/KGV2ZW50OiBGbG93TG9vcEV2ZW50KTogdm9pZDtcbiAgb25CcmVhaz8oZXZlbnQ6IEZsb3dCcmVha0V2ZW50KTogdm9pZDtcbiAgb25FcnJvcj8oZXZlbnQ6IEZsb3dFcnJvckV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgZW5kIG9mIEVWRVJZIGF0dGVtcHQg4oCUIGEgc3RhZ2UncyBvd24sIGFuZCB0aGUgY2FsbHMgYW5kXG4gICAqIG9ic2VydmVkIGF0dGVtcHRzIGl0IG1ha2VzIGR1cmluZyB0aGUgc3RhZ2UgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKSDigJRcbiAgICogd2l0aCBpdHMgcmVjb3JkIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCAoMTAuMSkuIFNlZVxuICAgKiB7QGxpbmsgRmxvd0F0dGVtcHRFdmVudH0uXG4gICAqL1xuICBvbkF0dGVtcHQ/KGV2ZW50OiBGbG93QXR0ZW1wdEV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciBmYWlsZWQgYXR0ZW1wdCB0aGF0IFdJTEwgYmUgcmV0cmllZCwgZm9yIHN0YWdlcyBjYXJyeWluZyBhXG4gICAqIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5LiBUaGUgZmluYWwgZmFpbHVyZSBhcnJpdmVzIHZpYSBgb25FcnJvcmAgaW5zdGVhZCxcbiAgICogc28gYSBzdGFnZSBuZXZlciByZXBvcnRzIHRoZSBzYW1lIGZhaWx1cmUgdHdpY2UuIFNlZVxuICAgKiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0gZm9yIHRoZSBleGFjdCBldmVudCBhcml0aG1ldGljLlxuICAgKi9cbiAgb25TdGFnZVJldHJ5PyhldmVudDogRmxvd1N0YWdlUmV0cnlFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQncyBlcnJvciBpcyBjbGFzc2lmaWVkIGFzIHRocm90dGxpbmcgYnkgdGhlXG4gICAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIOKAlCBzZWUge0BsaW5rIEZsb3dUaHJvdHRsZWRFdmVudH0uXG4gICAqL1xuICBvblRocm90dGxlZD8oZXZlbnQ6IEZsb3dUaHJvdHRsZWRFdmVudCk6IHZvaWQ7XG4gIG9uUGF1c2U/KGV2ZW50OiBGbG93UGF1c2VFdmVudCk6IHZvaWQ7XG4gIG9uUmVzdW1lPyhldmVudDogRmxvd1Jlc3VtZUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBCRUZPUkUgdHJhdmVyc2FsIGJlZ2lucy5cbiAgICogQ2FycmllcyBgZXZlbnQucGF5bG9hZCA9IHJ1bih7aW5wdXR9KWAuIFN1YmZsb3ctdHJhdmVyc2VycyBkb24ndCBmaXJlIGl0LlxuICAgKi9cbiAgb25SdW5TdGFydD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgQUZURVIgdHJhdmVyc2FsIGNvbXBsZXRlc1xuICAgKiBjbGVhbmx5LiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gY2hhcnQncyByZXR1cm4gdmFsdWVgLiBOT1QgZmlyZWQgb25cbiAgICogcGF1c2UgKHRoZSBydW4gZGlkbid0IGVuZCkgb3IgdW5jYXVnaHQgZXJyb3IuXG4gICAqL1xuICBvblJ1bkVuZD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgd2hlbiB0aGUgcnVuIHRocm93cyBhXG4gICAqIG5vbi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcy4gVGhlIFRFUk1JTkFMXG4gICAqIGNvdW50ZXJwYXJ0IHRvIGBvblJ1bkVuZGAg4oCUIGxldHMgYSBtb25pdG9yIGNsb3NlIHRoZSBydW4gYm91bmRhcnkgb25cbiAgICogZmFpbHVyZSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci4gTk9UIGZpcmVkIG9uIHBhdXNlLlxuICAgKi9cbiAgb25SdW5GYWlsZWQ/KGV2ZW50OiBGbG93UnVuRmFpbGVkRXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIGJlZm9yZSBlYWNoIHJ1biB0byByZXNldCBwZXItcnVuIHN0YXRlLiBJbXBsZW1lbnQgZm9yIHN0YXRlZnVsIHJlY29yZGVycy4gKi9cbiAgY2xlYXI/KCk6IHZvaWQ7XG4gIC8qKiBPcHRpb25hbDogZXhwb3NlIGNvbGxlY3RlZCBkYXRhIGZvciBpbmNsdXNpb24gaW4gc25hcHNob3RzLiAqL1xuICB0b1NuYXBzaG90PygpOiBpbXBvcnQoJy4uLy4uL3JlY29yZGVyL3NuYXBzaG90LmpzJykuUmVjb3JkZXJCdW5kbGU7XG59XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElDb250cm9sRmxvd05hcnJhdGl2ZSDigJQgSW50ZXJmYWNlIGZvciBjb250cm9sIGZsb3cgbmFycmF0aXZlIGdlbmVyYXRpb24uXG4gKlxuICogQ2FwdHVyZXMgRkxPVyBldmVudHMgZHVyaW5nIHRyYXZlcnNhbDogZGVjaXNpb25zLCBmb3JrcywgbG9vcHMsIHN1YmZsb3dzLlxuICogQ29tcGxlbWVudGFyeSB0byBzY29wZS9yZWNvcmRlcnMvTmFycmF0aXZlUmVjb3JkZXIgd2hpY2ggY2FwdHVyZXMgREFUQSBldmVudHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXR0ZW1wdFJlY29yZCwgUnVuQ29ycmVsYXRpb24gfSBmcm9tICcuLi8uLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9ySW5mby5qcyc7XG5pbXBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLyoqXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbi8qKlxuICogVGhlIGtpbmQgb2Ygc3RhZ2UgdGhhdCBjb21wbGV0ZWQuIExldHMgY29uc3VtZXJzIHJvdXRlIHVuaWZvcm1cbiAqIFwiZGlkIHRoaXMgc3RhZ2UgZXhlY3V0ZVwiIGhhbmRsaW5nIHdpdGhvdXQgYSBzaWRlLXRhYmxlIGxvb2t1cCBpbnRvXG4gKiB0aGUgY2hhcnQgc3BlYy4gUmVxdWlyZWQgb24gZXZlcnkgYG9uU3RhZ2VFeGVjdXRlZGAgZXZlbnQgc2luY2VcbiAqIHByb3Bvc2FsICMwMDMgdW5pZmllZCB0aGUgZXZlbnQgdG8gZmlyZSBmb3IgQUxMIHN0YWdlIGtpbmRzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZVR5cGUgPSAnbGluZWFyJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzZWxlY3RvcicgfCAnc3ViZmxvdy1tb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgY29tcGxldGVzIGl0cyBtYWluIHdvcmsuIEZpcmVzIGZvciBBTEwgc3RhZ2VcbiAgICoga2luZHMgKGAnbGluZWFyJ2AsIGAnZGVjaWRlcidgLCBgJ2ZvcmsnYCwgYCdzZWxlY3RvcidgLCBgJ3N1YmZsb3ctbW91bnQnYClcbiAgICogQUZURVIgdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lhbGl6ZWQgZXZlbnQgKGBvbkRlY2lzaW9uYCwgYG9uRm9ya2AsXG4gICAqIGBvblNlbGVjdGVkYCwgYG9uU3ViZmxvd0VudHJ5YCkuIEZvciBsaW5lYXIgc3RhZ2VzLCBmaXJlcyBhZnRlclxuICAgKiB0aGUgc3RhZ2UgZnVuY3Rpb24gcmV0dXJucy5cbiAgICpcbiAgICogQ29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuP1wiIHVzZSB0aGlzIGV2ZW50IHVuaWZvcm1seVxuICAgKiBhbmQgc3dpdGNoIG9uIGBzdGFnZVR5cGVgIGZvciBraW5kLXNwZWNpZmljIHdvcmsuXG4gICAqL1xuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbGluZWFyIGNvbnRpbnVhdGlvbiBmcm9tIG9uZSBzdGFnZSB0byB0aGUgbmV4dC4gKi9cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZGVjaWRlciBzZWxlY3RzIGEgYnJhbmNoLiBNb3N0IHZhbHVhYmxlIGZvciBMTE0gY29udGV4dC4gKi9cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzZWxlY3RvciBwaWNrcyBhIHN1YnNldCBvZiBjaGlsZHJlbi4gKi9cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZXhpdGluZyBhIHN1YmZsb3cuICovXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsb29wIGl0ZXJhdGlvbiAoYmFjay1lZGdlIHRyYXZlcnNhbCkuICovXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiBAcGFyYW0gcHJvcGFnYXRlZEZyb21TdWJmbG93IC0gV2hlbiBzZXQsIHRoaXMgYnJlYWsgd2FzIHJhaXNlZCBvbiB0aGVcbiAgICogICBwYXJlbnQgYmVjYXVzZSBhbiBpbm5lciBzdWJmbG93ICh0aGlzIGlkKSBicm9rZSB3aXRoIGBwcm9wYWdhdGVCcmVha2BcbiAgICogICBlbmFibGVkLiBVc2VkIGJ5IHJlY29yZGVycyB0byBkaXN0aW5ndWlzaCBvcmlnaW5hdGluZyB2cyBwcm9wYWdhdGVkXG4gICAqICAgYnJlYWtzIGFuZCByZW5kZXIgdGhlbSBhY2NvcmRpbmdseS5cbiAgICovXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0aHJvd3MgYW4gZXJyb3IsIHdpdGggaXRzIFNFUlZFRCBmb3JtOiBmb3IgYSBzdGFnZSdzIG93biBmYWlsdXJlIHRoYXQgaXNcbiAgICogYFJlZGFjdGlvblJ1bGUucmV0YWluU3RhZ2VFcnJvcmAgKHRoZSBkaWFnbm9zdGljIHBvbGljeSBhcHBsaWVkIG9uY2UpLCBlbHNld2hlcmUgYGV4dHJhY3RFcnJvckluZm9gLlxuICAgKi9cbiAgb25FcnJvcihcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgRU5EIG9mIGV2ZXJ5IGF0dGVtcHQgKDEwLjEpIOKAlCBldmVyeSBvdXRjb21lLCB3aXRoIHRoZVxuICAgKiBhdHRlbXB0J3Mge0BsaW5rIEF0dGVtcHRSZWNvcmR9ICh0aW1pbmcsIG91dGNvbWUsIGNhdGVnb3J5LCB0aGVcbiAgICogcmV0cnktb3Itc3RvcCBkZWNpc2lvbik6IGEgc3RhZ2UncyBvd24gKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2AsIHVuZGVyIGFcbiAgICogcmV0cnkgcG9saWN5LCBhIGB0aW1lb3V0TXNgIG9yIGEgcnVuIGRlYWRsaW5lKSwgYW5kIHRoZSBjYWxscyBpdCBtYWtlc1xuICAgKiAoYCdjYWxsJ2AsIGBzY29wZS4kY2FsbGApIGFuZCBvdXRzaWRlIGF0dGVtcHRzIGl0IHJlcG9ydHMgKGAnb2JzZXJ2ZWQnYClcbiAgICogZHVyaW5nIHRoZSBzdGFnZSAoUDIpLiBBIHN0YWdlIGF0dGVtcHQgZmlyZXMgYmVmb3JlIGBvblN0YWdlUmV0cnlgIHdoZW4gaXRcbiAgICogaXMgcmV0cmllZCwgYW5kIGJlZm9yZSBgb25FcnJvcmAgLyBgb25TdGFnZUV4ZWN1dGVkYCBmb3IgdGhlIGxhc3QuXG4gICAqIGBzdHJ1Y3R1cmVkRXJyb3JgIGlzIHRoZSBhdHRlbXB0J3Mgc2VydmVkIGVycm9yIChgcmF3YCBpbmNsdWRlZCB1bmxlc3MgdGhlXG4gICAqIHBvbGljeSBtYXNrZWQgaXQ7IG5ldmVyIGZvciBhbiBvYnNlcnZlZCBhdHRlbXB0KTsgYWJzZW50IGZvciBhIHN1Y2Nlc3Mgb3JcbiAgICogYSBwYXVzZS5cbiAgICpcbiAgICogRXZlbnQgYXJpdGhtZXRpYzogb25lIHBlciBhdHRlbXB0IOKAlCBmb3IgYSBzdGFnZSwgdGhlIG51bWJlciBvZiBhdHRlbXB0cyBpdFxuICAgKiBtYWRlIHBsdXMgb25lIHBlciBjYWxsIG9yIG9ic2VydmVkIGF0dGVtcHQgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKS5cbiAgICovXG4gIG9uQXR0ZW1wdChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcmVjb3JkOiBBdHRlbXB0UmVjb3JkLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYW4gYXR0ZW1wdCBhdCBhIHN0YWdlIHdpdGggYSBkZWNsYXJlZCBgcmV0cnlgIHBvbGljeSBmYWlsZWRcbiAgICogQU5EIGFub3RoZXIgYXR0ZW1wdCB3aWxsIHJ1bi4gRmlyZXMgYWZ0ZXIgdGhhdCBhdHRlbXB0J3MgYG9uQXR0ZW1wdGAsXG4gICAqIGFmdGVyIGl0cyBzdGFnZWQgd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhXG4gICAqIGxpdmUgbW9uaXRvciBsZWFybnMgXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3RcbiAgICogYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGUgcnVuJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgXG4gICAqIGNsYXNzaWZpZWQgaXRzIGVycm9yIGFzIHRocm90dGxpbmcgKDkuMzkuMCkuIFRoZSBjaGlsZCdzIGZhaWx1cmUgdGFrZXNcbiAgICogaXRzIG9yZGluYXJ5IHBhdGggdG9vOyB0aGlzIG9ubHkgbmFtZXMgaXQgYXMgdGhyb3R0bGluZy5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHBhdXNhYmxlIHN0YWdlIHBhdXNlcyBleGVjdXRpb24uICovXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2VkIHN0YWdlIGlzIHJlc3VtZWQuICovXG4gIG9uUmVzdW1lKHN0YWdlTmFtZTogc3RyaW5nLCBzdGFnZUlkOiBzdHJpbmcsIGhhc0lucHV0OiBib29sZWFuLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBleGVjdXRlcy5cbiAgICogYGlucHV0YCBpcyB0aGUgcmV0YWluZWQgZm9ybSBvZiBgcnVuKHtpbnB1dH0pYCBhZnRlciBzY2hlbWEgdmFsaWRhdGlvbjtcbiAgICogdGhlIHJ1bidzIGtleS9wYXRoIHJlZGFjdGlvbiBhcHBsaWVzIGJlZm9yZSBkaXNwYXRjaC4gU2VlIHtAbGluayBGbG93UnVuRXZlbnR9LlxuICAgKiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgdGhpcyBldmVudCDigJQgdGhleSBmaXJlIGBvblN1YmZsb3dFbnRyeWAuXG4gICAqL1xuICBvblJ1blN0YXJ0KGlucHV0OiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQUZURVIgdGhlIGxhc3Qgc3RhZ2UgY29tbWl0cy5cbiAgICogYG91dHB1dGAgaXMgdGhlIHJldGFpbmVkIGZvcm0gb2YgdGhlIGNoYXJ0J3MgcmV0dXJuLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LCBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIFJldHVybnMgYWNjdW11bGF0ZWQgbmFycmF0aXZlIHNlbnRlbmNlcyBpbiBleGVjdXRpb24gb3JkZXIuICovXG4gIGdldFNlbnRlbmNlcygpOiBzdHJpbmdbXTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHJhdmVyc2FsQ29udGV4dCDigJQgcmVhZC1vbmx5IGV4ZWN1dGlvbiBjb250ZXh0IGZyb20gdGhlIHRyYXZlcnNlci5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBUcmF2ZXJzYWwgY29udGV4dCBhdHRhY2hlZCB0byBldmVyeSBGbG93UmVjb3JkZXIgZXZlbnQuXG4gKiBDcmVhdGVkIGJ5IHRoZSB0cmF2ZXJzZXIgZHVyaW5nIERGUywgcGFzc2VkIHRvIHJlY29yZGVycyBhcyByZWFkLW9ubHkgZGF0YS5cbiAqIEVuYWJsZXMgcmVjb3JkZXJzIHRvIGJ1aWxkIHRyZWVzLCBncm91cCBieSBzdWJmbG93LCBhbmQgY29ycmVsYXRlIGV2ZW50c1xuICogd2l0aG91dCBtYWludGFpbmluZyB0aGVpciBvd24gc3RhY2tzIG9yIHBvc3QtcHJvY2Vzc2luZy5cbiAqXG4gKiBMaWtlIE9wZW5UZWxlbWV0cnkncyBzcGFuIGNvbnRleHQ6IHN0YWdlSWQgKyBwYXJlbnRTdGFnZUlkIGZvcm0gYSB0cmVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYXZlcnNhbENvbnRleHQge1xuICAvKipcbiAgICogUGVyLWBleGVjdXRvci5ydW4oKWAgaWRlbnRpZmllci4gR2VuZXJhdGVkIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5XG4gICAqIGBydW4oKWAgKGFuZCBhZ2FpbiBvbiBgcmVzdW1lKClgKTsgc2hhcmVkIGJ5IGV2ZXJ5IGV2ZW50IG9mIHRoYXQgcnVuO1xuICAgKiBkaWZmZXJzIGFjcm9zcyBjb25zZWN1dGl2ZSBydW5zIG9mIHRoZSBzYW1lIGV4ZWN1dG9yLlxuICAgKlxuICAgKiBGb3JtYXQ6IGAke0RhdGUubm93KCl9LSR7Y291bnRlcn1gIOKAlCBzb3J0YWJsZSBsZXhpY29ncmFwaGljYWxseSAoPT1cbiAgICogY2hyb25vbG9naWNhbGx5IGZvciBydW5zID4gMW1zIGFwYXJ0KS4gUHJvY2Vzcy1sb2NhbCDigJQgZm9yIGNyb3NzLVxuICAgKiBwcm9jZXNzIGNvcnJlbGF0aW9uIHVzZSBgZ2V0RW52KCkudHJhY2VJZGAgKGNvbnN1bWVyLXN1cHBsaWVkKS5cbiAgICpcbiAgICogUmVjb3JkZXJzIHRoYXQgYWNjdW11bGF0ZSBzdGF0ZSBhY3Jvc3MgcnVucyAoZm9yayBib29ra2VlcGluZyxcbiAgICogc2libGluZy1oYW5kb2ZmIHN0YXRlLCBldGMuKSBkZXRlY3QgXCJuZXcgcnVuXCIgdmlhXG4gICAqIGBldmVudC50cmF2ZXJzYWxDb250ZXh0LnJ1bklkICE9PSB0aGlzLmxhc3RSdW5JZGAgYW5kIHJlc2V0XG4gICAqIHRyYW5zaWVudCBib29ra2VlcGluZy4gUmVjb3JkZXJzIHRoYXQgZG9uJ3QgY2FyZSBhYm91dCBzY29waW5nXG4gICAqIGlnbm9yZSB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiAqL1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgcGVyLWV4ZWN1dGlvbi1zdGVwIGlkZW50aWZpZXIuIEZvcm1hdDogW3N1YmZsb3dQYXRoL11zdGFnZUlkI2V4ZWN1dGlvbkluZGV4LlxuICAgKiAgQ291bnRlciByZXNldHMgcGVyIGV4ZWN1dG9yIOKAlCBjb21iaW5lIHdpdGggYHJ1bklkYCBmb3IgZ2xvYmFsbHkgdW5pcXVlIHN0ZXAga2V5cy4gKi9cbiAgcmVhZG9ubHkgcnVudGltZVN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogUGFyZW50IHN0YWdlIElEIOKAlCB3YWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSB0cmVlLiBVbmRlZmluZWQgYXQgcm9vdC4gKi9cbiAgcmVhZG9ubHkgcGFyZW50U3RhZ2VJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgRVhFQ1VUSU9OIHN0ZXAncyBydW50aW1lU3RhZ2VJZCDigJQgdGhlIHJ1bnRpbWUgdHdpbiBvZlxuICAgKiBgcGFyZW50U3RhZ2VJZGAgKFJGQy0wMDMgRDEpLiBXYWxrIHVwIHRvIHJlY29uc3RydWN0IHRoZSBydW50aW1lXG4gICAqIGFuY2VzdG9yIGNoYWluOyBsb29wIHJlLWVudHJpZXMgc3RheSB1bmFtYmlndW91cyBiZWNhdXNlIHJ1bnRpbWUgaWRzXG4gICAqIChgc3RhZ2VJZCNleGVjdXRpb25JbmRleGApIGRpZmZlciBwZXIgaXRlcmF0aW9uIGV2ZW4gd2hlbiBzdGFnZSBpZHNcbiAgICogcmVwZWF0LiBDcm9zc2VzIHN1YmZsb3cgYm91bmRhcmllczogdGhlIGZpcnN0IHN0YWdlIGluc2lkZSBhIHN1YmZsb3dcbiAgICogcG9pbnRzIGF0IHRoZSBNT1VOVCBzdGFnZSdzIHJ1bnRpbWVTdGFnZUlkIGluIHRoZSBwYXJlbnQgdHJhdmVyc2VyLlxuICAgKiBVbmRlZmluZWQgb25seSBhdCB0aGUgZmlyc3Qgc3RhZ2Ugb2YgdGhlIHRvcC1sZXZlbCBjaGFydC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFJ1bnRpbWVTdGFnZUlkPzogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBJRCB3aGVuIGluc2lkZSBhIHN1YmZsb3cuIFVuZGVmaW5lZCBhdCByb290IGxldmVsLiAqL1xuICByZWFkb25seSBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKiBGdWxsIHN1YmZsb3cgcGF0aCBmb3IgbmVzdGVkIHN1YmZsb3dzIChlLmcuLCBcInNmLW91dGVyL3NmLWlubmVyXCIpLiAqL1xuICByZWFkb25seSBzdWJmbG93UGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFN1YmZsb3cgbmVzdGluZyBkZXB0aCBvZiB0aGUgc3RhZ2UncyBBRERSRVNTOiBob3cgbWFueSBzdWJmbG93IHNlZ21lbnRzIGl0c1xuICAgKiBgcnVudGltZVN0YWdlSWRgIGNhcnJpZXMgKDAgPSB0b3AgbGV2ZWwsIDEgPSBpbnNpZGUgYSBzdWJmbG93IG9yIGFcbiAgICogYHBhcmFsbGVsRm9yRWFjaGAgYnJhbmNoLCAyID0gYSBzdWJmbG93IGluc2lkZSB0aGF0LCDigKYpLiBPbmUgbWVhbmluZyBvblxuICAgKiBldmVyeSBzdGFtcCDigJQgc3RhZ2UgZXZlbnRzLCB0aGUgcnVuLWJvdW5kYXJ5IHJvb3QgKDApIGFuZCBgb25SZXN1bWVgXG4gICAqICg5LjM3LjA7IHVudGlsIDkuMzYuMCBzdGFnZSBldmVudHMgc3RhbXBlZCB0aGUgcGFyZW50LWNoYWluIGxlbmd0aCBvZiB0aGVcbiAgICogc3RhZ2UncyBjb250ZXh0IGluc3RlYWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRoaXMgc3RhZ2UgaGFzIGV4ZWN1dGVkIEJFRk9SRSBpbiB0aGlzIHJ1biDigJQgdGhlIGxvb3BcbiAgICogaXRlcmF0aW9uIGNvdW50IHdoZW4gYSBub2RlIGlzIHJldmlzaXRlZCAoZS5nLiB2aWEgYGxvb3BUb2ApLiBBYnNlbnQgb24gdGhlXG4gICAqIGZpcnN0IGV4ZWN1dGlvbjsgYDFgIG9uIHRoZSBmaXJzdCBsb29wLWJhY2ssIGAyYCBvbiB0aGUgbmV4dCwg4oCmIChpLmUuXG4gICAqIGB2aXNpdENvdW50IC0gMWApLiBSdW4tc2NvcGVkIChyZXNldHMgZWFjaCBgcnVuKClgL2ByZXN1bWUoKWApIGFuZCBtb25vdG9uaWNcbiAgICogYWNyb3NzIHN1YmZsb3cgcmUtbW91bnRzLiBQb3B1bGF0ZWQgZm9yIGV2ZXJ5IHN0YWdlIGtpbmQuIE1pcnJvcnMgdGhlXG4gICAqIG5hcnJhdGl2ZSByZWNvcmRlcidzIFwicGFzcyBOXCIgY291bnQuXG4gICAqL1xuICByZWFkb25seSBsb29wSXRlcmF0aW9uPzogbnVtYmVyO1xuICAvKiogRm9yayBicmFuY2ggSUQgd2hlbiBpbnNpZGUgYSBwYXJhbGxlbCBvciBkZWNpZGVyIGJyYW5jaC4gKi9cbiAgcmVhZG9ubHkgZm9ya0JyYW5jaD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHRoZSBgb25SZXN1bWVgIGV2ZW50IG9ubHkgKDkuMzcuMCk6IHRoZSBQQVVTRUQgZXhlY3V0aW9uIHRoaXMgcmVzdW1lZFxuICAgKiBydW4gY29udGludWVzIOKAlCBhIGxpbmsgaW4gdGhlIE9wZW5UZWxlbWV0cnkgc2Vuc2UsIG5vdCBhIHBhcmVudC4gQSByZXN1bWVcbiAgICogaXMgYSBuZXcgYHJ1bklkYCwgc28gdGhlIHBhdXNlZCBgKHJ1bklkLCBydW50aW1lU3RhZ2VJZClgIGNhbm5vdCBiZSBhXG4gICAqIHBhcmVudCBvZiBhbnl0aGluZyBpbiBpdDsgaXQgaXMgbmFtZWQgaGVyZSBpbnN0ZWFkLiBBYnNlbnQgd2hlbiB0aGVcbiAgICogY2hlY2twb2ludCBwcmVkYXRlcyA5LjM3LjAgKGl0IGRpZCBub3QgcmVjb3JkIHRoZSBwYXVzZWQgZXhlY3V0aW9uKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VtZWRGcm9tPzogUmVzdW1lTGluaztcbiAgLyoqXG4gICAqIFRoZSBydW4ncyBjb3JyZWxhdGlvbiAoMTAuMSkg4oCUIGBlbnYudHJhY2VwYXJlbnRgLCBvciBgZW52LnRyYWNlSWRgICsgYGVudi5vcGVyYXRpb25JZGAsIHJlc29sdmVkIG9uY2UgcGVyXG4gICAqIGxlZy4gVGhlIFNBTUUgZnJvemVuIG9iamVjdCwgYnkgcmVmZXJlbmNlLCBvbiBldmVyeSBzdGFtcCBvZiB0aGUgbGVnIChzdWJmbG93cyBpbmNsdWRlZCkgYW5kIG9uXG4gICAqIGBnZXRTbmFwc2hvdCgpLmNvcnJlbGF0aW9uYC4gQWJzZW50IOKAlCBubyBrZXkg4oCUIHdoZW4gdGhlIGVudiBnaXZlcyBub25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ycmVsYXRpb24/OiBSdW5Db3JyZWxhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgcGF1c2VkIGV4ZWN1dGlvbiBhIHJlc3VtZSBjb250aW51ZXMg4oCUIGBUcmF2ZXJzYWxDb250ZXh0LnJlc3VtZWRGcm9tYC5cbiAqIEJvdGggaWRzIGFyZSB0aGUgUEFVU0VEIHJ1bidzOiBgcnVuSWRgIGlzIHRoYXQgcnVuJ3MsIGBydW50aW1lU3RhZ2VJZGAgdGhlXG4gKiBleGVjdXRpb24gb2YgdGhlIHN0YWdlIHRoYXQgcGF1c2VkIChhcyBpdHMgYG9uUGF1c2VgIGV2ZW50IHN0YW1wZWQgaXQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VtZUxpbmsge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZUV4ZWN1dGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRyYXZlcnNhbCBjb250ZXh0IGZyb20gdGhlIGVuZ2luZSDigJQgcmVhZC1vbmx5LCBzZXQgYnkgdHJhdmVyc2VyLiAqL1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIFdoaWNoIGtpbmQgb2Ygc3RhZ2UgY29tcGxldGVkLiBUaGUgZW5naW5lIGZpcmVzIGBvblN0YWdlRXhlY3V0ZWRgXG4gICAqIHVuaWZvcm1seSBmb3IgZXZlcnkgc3RhZ2Uga2luZCAocHJvcG9zYWwgIzAwMyk7IGNvbnN1bWVycyByb3V0ZSBieVxuICAgKiBgc3RhZ2VUeXBlYCB3aXRob3V0IGEgY2hhcnQtc3BlYyBsb29rdXAuXG4gICAqL1xuICBzdGFnZVR5cGU6IFN0YWdlVHlwZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25OZXh0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93TmV4dEV2ZW50IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRGVjaXNpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dEZWNpc2lvbkV2ZW50IHtcbiAgZGVjaWRlcjogc3RyaW5nO1xuICBjaG9zZW46IHN0cmluZztcbiAgcmF0aW9uYWxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRlY2lzaW9uIGV2aWRlbmNlIGZyb20gZGVjaWRlKCkgaGVscGVyLiAqL1xuICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uRm9yay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0ZvcmtFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBjaGlsZHJlbjogc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblNlbGVjdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U2VsZWN0ZWRFdmVudCB7XG4gIHBhcmVudDogc3RyaW5nO1xuICBzZWxlY3RlZDogc3RyaW5nW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogU3RydWN0dXJlZCBzZWxlY3Rpb24gZXZpZGVuY2UgZnJvbSBzZWxlY3QoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogU2VsZWN0aW9uRXZpZGVuY2U7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dFdmVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllciDigJQgdXNlIHRoaXMgdG8gbG9vayB1cCB0aGUgZnVsbCBzcGVjIHZpYSB0aGUgbWFuaWZlc3QuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN1YmZsb3cgZG9lcy4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogTWFwcGVkIGlucHV0IHZhbHVlcyBzZW50IElOVE8gdGhlIHN1YmZsb3cgKGZyb20gaW5wdXRNYXBwZXIvaW5wdXRLZXlzKS4gUHJlc2VudCBvbiBlbnRyeSBldmVudHMuICovXG4gIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBTdWJmbG93IHNoYXJlZCBzdGF0ZSBhdCBleGl0LiBQcmVzZW50IG9uIGV4aXQgZXZlbnRzLiAqL1xuICBvdXRwdXRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN1YmZsb3dSZWdpc3RlcmVkIChkeW5hbWljIHN1YmZsb3cgYXR0YWNobWVudCkuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50IHtcbiAgLyoqIFN1YmZsb3cgaWRlbnRpZmllci4gKi9cbiAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBCdWlsZC10aW1lIGRlc2NyaXB0aW9uLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3BlYyBzdHJ1Y3R1cmUgKHdoZW4gYXZhaWxhYmxlIGZyb20gYnVpbGRUaW1lU3RydWN0dXJlKS4gKi9cbiAgc3BlY1N0cnVjdHVyZT86IHVua25vd247XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkxvb3AuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb29wRXZlbnQge1xuICB0YXJnZXQ6IHN0cmluZztcbiAgaXRlcmF0aW9uOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25CcmVhay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0JyZWFrRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmcmVlLWZvcm0gcmVhc29uIHN1cHBsaWVkIGJ5IGBzY29wZS4kYnJlYWsocmVhc29uKWAuIEFic2VudFxuICAgKiB3aGVuIHRoZSBzdGFnZSBpbnZva2VkIGAkYnJlYWsoKWAgd2l0aG91dCBhbiBhcmd1bWVudC4gUHJvcGFnYXRlcyB3aGVuXG4gICAqIGEgc3ViZmxvdyBpcyBtb3VudGVkIHdpdGggYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCDigJQgdGhlIG91dGVyIGJyZWFrXG4gICAqIGV2ZW50IGNhcnJpZXMgdGhlIGlubmVyIGJyZWFrJ3MgcmVhc29uIHRvby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhpcyBicmVhayBldmVudCB3YXMgcmFpc2VkIG9uIHRoZSBQQVJFTlQgYmVjYXVzZSBhbiBpbm5lclxuICAgKiBzdWJmbG93J3MgYnJlYWsgcHJvcGFnYXRlZCB1cCAodmlhIGBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrYCkuXG4gICAqIFRoZSBvcmlnaW5hdGluZyBpbm5lciBicmVhayBmaXJlcyBpdHMgb3duIGBvbkJyZWFrYCBldmVudCBzZXBhcmF0ZWx5XG4gICAqIOKAlCB0aGlzIGZsYWcgbGV0cyByZWNvcmRlcnMgZGlzdGluZ3Vpc2ggdGhlIHR3by5cbiAgICovXG4gIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25FcnJvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0Vycm9yRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBlcnJvciBkZXRhaWxzIOKAlCBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgaXNzdWVzLCBlcnJvciBjb2RlcywgZXRjLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIGAnZmxvdydgIG9uIGV2ZXJ5IGVuZ2luZS1kaXNwYXRjaGVkXG4gICAqIGV2ZW50LiBgaXNGbG93RXZlbnQoKWAgY2hlY2tzIGl0IGZpcnN0IChiYWNrbG9nIEIzKTsgb3B0aW9uYWwgc29cbiAgICogY29uc3VtZXItZmFicmljYXRlZCBldmVudHMgKHRlc3RzLCByZXBsYXlzKSByZW1haW4gdHlwZS12YWxpZCBhbmQgZmFsbFxuICAgKiBiYWNrIHRvIHRoZSBsZWdhY3kgcGlwZWxpbmVJZC1hYnNlbmNlIGhldXJpc3RpYy5cbiAgICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblRocm90dGxlZCDigJQgYSBmb3JrIGNoaWxkIGZhaWxlZCBhbmQgdGhlXG4gKiBleGVjdXRvcidzIGB0aHJvdHRsaW5nRXJyb3JDaGVja2VyYCBzYWlkIGl0cyBlcnJvciBpcyB0aHJvdHRsaW5nICg5LjM5LjApLlxuICpcbiAqIFdIWSBhbiBldmVudDogdGhlIGNoZWNrZXIgdXNlZCB0byB3cml0ZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgaW50byB0aGVcbiAqIGNoaWxkJ3MgZnJhbWUgQUZURVIgdGhlIGNoaWxkJ3MgbGFzdCBjb21taXQsIHNvIHRoZSBmbGFnIGxhbmRlZCBub3doZXJlIOKAlFxuICogbm90IGluIHN0YXRlLCBub3QgaW4gdGhlIGxvZy4gVGhyb3R0bGluZyBpcyB0ZWxlbWV0cnksIHNvIGl0IHRyYXZlbHMgdGhlXG4gKiB3YXkgdGVsZW1ldHJ5IGRvZXM6IGFzIGFuIGV2ZW50IGEgcmVjb3JkZXIgY2FuIGNvdW50LCBhbGVydCBvbiwgb3IgYmFjayBvZmZcbiAqIGZyb20uIFRoZSBjaGlsZCdzIGZhaWx1cmUgc3RpbGwgdGFrZXMgaXRzIG9yZGluYXJ5IHBhdGggKHRoZSBmYW4tb3V0XG4gKiByZWNvcmRzIGl0IGFzIGB7IGlzRXJyb3I6IHRydWUgfWApOyB0aGlzIGV2ZW50IG9ubHkgY2xhc3NpZmllcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93VGhyb3R0bGVkRXZlbnQge1xuICAvKiogVGhlIGZvcmsgY2hpbGQgd2hvc2UgZXJyb3Igd2FzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZy4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBvZiB0aGF0IGNoaWxkIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ugb2YgdGhlIGNoaWxkJ3MgZXJyb3IuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICAvKiogVGhlIEZPUksncyBzdGFtcCDigJQgdGhlIGZhbi1vdXQgaXMgd2hlcmUgdGhlIGNsYXNzaWZpY2F0aW9uIGlzIG1hZGUuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkF0dGVtcHQg4oCUIG9uZSBhdHRlbXB0LCBhdCBpdHMgZW5kICgxMC4xKTogYVxuICogc3RhZ2UncyBvd24gdW5kZXIgaXRzIHJldHJ5IHBvbGljeSwgYSBgdGltZW91dE1zYCBvciBhIHJ1biBkZWFkbGluZVxuICogKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2ApLCBvciDigJQgZHVyaW5nIHRoZSBzdGFnZSDigJQgYSBjYWxsIGl0IG1hZGVcbiAqIChgJ2NhbGwnYCwgYHNjb3BlLiRjYWxsYCkgb3IgYW4gb3V0c2lkZSBhdHRlbXB0IGl0IHJlcG9ydGVkIChgJ29ic2VydmVkJ2AsXG4gKiBQMikuIGBzdGFnZU5hbWVgIC8gYHN0YWdlSWRgIC8gYHRyYXZlcnNhbENvbnRleHRgIGFyZSB0aGUgc3RhZ2UncyBpbiBldmVyeVxuICogY2FzZTsgZmlsdGVyIG9uIGByZWNvcmQua2luZGAgdG8gY291bnQgb25lIGtpbmQuXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBgb25TdGFnZVJldHJ5YCBzYXlzIFwiYXR0ZW1wdCBOIGZhaWxlZCwgcmV0cnlpbmdcIiBhbmRcbiAqIG5vdGhpbmcgZWxzZSDigJQgbm90IGhvdyBsb25nIGEgdHJ5IHRvb2ssIG5vdCB3aHkgdGhlIHNlcmllcyBzdG9wcGVkLCBhbmRcbiAqIG5vdGhpbmcgYXQgYWxsIHdoZW4gYHJldHJ5T25gIGRlY2xpbmVkLiBFdmVyeSBhdHRlbXB0IGlzIGFuXG4gKiB7QGxpbmsgQXR0ZW1wdFJlY29yZH0gaW5zdGVhZCwgd2hhdGV2ZXIgaXRzIG91dGNvbWUsIHdpdGggdGhlIGRlY2lzaW9uIHRoYXRcbiAqIGZvbGxvd2VkIGl0IGluIHRoZSBzaGFwZSBgZGVjaWRlKClgIHJlY29yZHMg4oCUIHRoZSBzYW1lIHJlY29yZHMgdGhlIHN0YWdlJ3NcbiAqIGV4ZWN1dGlvbi10cmVlIG5vZGUga2VlcHMgKGBTdGFnZVNuYXBzaG90LmF0dGVtcHRzYCkuXG4gKlxuICogRmlyZXMgb25jZSBwZXIgYXR0ZW1wdCwgYmVmb3JlIGBvblN0YWdlUmV0cnlgICh3aGVuIHRoZSBhdHRlbXB0IGlzIHJldHJpZWQpXG4gKiBhbmQgYmVmb3JlIGBvbkVycm9yYCAvIGBvblN0YWdlRXhlY3V0ZWRgIChmb3IgdGhlIGxhc3QpLiBUaGUgcmVjb3JkIGlzXG4gKiBmcm96ZW4gYW5kIHN1cnZpdmVzIGBzdHJ1Y3R1cmVkQ2xvbmVgOyBgc3RydWN0dXJlZEVycm9yYCBpcyB0aGUgc2VydmVkIGVycm9yXG4gKiB3aXRoIGByYXdgLCBhcyBvbiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0g4oCUIGV4Y2VwdCBmb3IgYW4gb2JzZXJ2ZWRcbiAqIGF0dGVtcHQsIHdob3NlIGVycm9yIHRoZSBsaWJyYXJ5IG5ldmVyIHRocmV3IChgcmF3YCBpcyB1bmRlZmluZWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBdHRlbXB0RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogVGhlIGF0dGVtcHQ6IHRpbWluZywgb3V0Y29tZSwgY2F0ZWdvcnksIGRlY2lzaW9uLCBhbmQgdGhlIHNlcnZlZCBlcnJvciB3aXRob3V0IGByYXdgLiAqL1xuICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQ7XG4gIC8qKiBUaGUgYXR0ZW1wdCdzIHNlcnZlZCBlcnJvciB3aXRoIGByYXdgIOKAlCBhYnNlbnQgZm9yIGEgc3VjY2VzcyBvciBhIHBhdXNlLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I/OiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdGFnZVJldHJ5IOKAlCBvbmUgZmFpbGVkIGF0dGVtcHQgYXQgYSBzdGFnZVxuICogdGhhdCBjYXJyaWVzIGEgZGVjbGFyZWQge0BsaW5rIGltcG9ydCgnLi4vdHlwZXMuanMnKS5SZXRyeVBvbGljeX0sIGFuZCB3aGljaFxuICogV0lMTCBiZSBhdHRlbXB0ZWQgYWdhaW4uXG4gKlxuICogV0hZIHRoaXMgZXZlbnQgZXhpc3RzOiBhIHJldHJ5IGhhbmQtcm9sbGVkIGluc2lkZSBhIHN0YWdlIGZ1bmN0aW9uIGxlYXZlcyBub1xuICogbWFyayBvbiB0aGUgdHJhY2UgYXQgYWxsLiBUaGlzIGV2ZW50IGlzIHdoYXQgbWFrZXMgYSBkZWNsYXJlZCByZXRyeSBwYXJ0IG9mXG4gKiB0aGUgcmVjb3JkIOKAlCB3aGljaCBhdHRlbXB0IGZhaWxlZCwgd2h5LCBob3cgbG9uZyB0aGUgZW5naW5lIHdhaXRlZCwgYW5kIGhvd1xuICogbWFueSBhdHRlbXB0cyB0aGUgcG9saWN5IGFsbG93cy5cbiAqXG4gKiBGaXJlcyBvbmx5IGZvciBhdHRlbXB0cyBmb2xsb3dlZCBieSBhbm90aGVyIGF0dGVtcHQuIFRoZSBmaW5hbCBmYWlsdXJlIHRha2VzXG4gKiB0aGUgb3JkaW5hcnkgZXJyb3IgcGF0aCAoYG9uRXJyb3JgKSwgc28gdGhlIHR3byBuZXZlciBkb3VibGUtcmVwb3J0IHRoZSBzYW1lXG4gKiBmYWlsdXJlOiBhbiBleGhhdXN0ZWQgYGF0dGVtcHRzOiAzYCBwb2xpY3kgZW1pdHMgMiByZXRyeSBldmVudHMgKyAxIGVycm9yXG4gKiBldmVudDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBlbWl0cyAwIHJldHJ5IGV2ZW50cyArIDEgZXJyb3IgZXZlbnQuIEVhY2hcbiAqIGF0dGVtcHQg4oCUIHJldHJpZWQgb3Igbm90IOKAlCBhbHNvIGZpcmVzIHtAbGluayBGbG93QXR0ZW1wdEV2ZW50fSBmaXJzdCAoMTAuMSksXG4gKiB3aGljaCBpcyB3aGVyZSBhIGRlY2xpbmVkIHN0b3AgaXMgcmVjb3JkZWQgKGByZWFzb246ICdkZWNsaW5lZCdgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhZ2VSZXRyeUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFdoaWNoIGF0dGVtcHQganVzdCBGQUlMRUQsIDEtYmFzZWQuICovXG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLCBpbmNsdWRpbmcgdGhlIGZpcnN0LiAqL1xuICBtYXhBdHRlbXB0czogbnVtYmVyO1xuICAvKiogTWlsbGlzZWNvbmRzIHRoZSBlbmdpbmUgd2lsbCB3YWl0IGJlZm9yZSB0aGUgbmV4dCBhdHRlbXB0LiBgMGAgPSBpbW1lZGlhdGUuICovXG4gIGRlbGF5TXM6IG51bWJlcjtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG1lc3NhZ2Ug4oCUIHRoZSBzYW1lIHN0cmluZyBgb25FcnJvcmAgd291bGQgY2FycnkuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCBlbmRlZCB0aGlzIGF0dGVtcHQuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25QYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1BhdXNlRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogRGF0YSBmcm9tIHRoZSBwYXVzZSBzaWduYWwgKHF1ZXN0aW9uLCByZWFzb24sIG1ldGFkYXRhKS4gKi9cbiAgcGF1c2VEYXRhPzogdW5rbm93bjtcbiAgLyoqIFBhdGggdGhyb3VnaCBzdWJmbG93cyB0byB0aGUgcGF1c2VkIHN0YWdlLiBFbXB0eSBhdCByb290IGxldmVsLiAqL1xuICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW107XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUmVzdW1lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVzdW1lRXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hldGhlciByZXN1bWUgaW5wdXQgd2FzIHByb3ZpZGVkLiAqL1xuICBoYXNJbnB1dDogYm9vbGVhbjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuU3RhcnQgLyBvblJ1bkVuZC5cbiAqXG4gKiBCcmFja2V0cyB0aGUgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgY2FsbC4gU3ViZmxvd3MgaGF2ZSB0aGVpciBvd25cbiAqIHBhaXIgKGBvblN1YmZsb3dFbnRyeWAgLyBgb25TdWJmbG93RXhpdGApOyB0aGUgcnVuIHBhaXIgaXMgdGhlIE9VVEVSTU9TVFxuICogYm91bmRhcnksIHNvIGNvbnN1bWVycyBidWlsZGluZyBcImV2ZXJ5IHN0ZXAgaGFzIGFuIGluL291dFwiIHZpZXdzIGNhblxuICogY2xvc2UgdGhlIGNoYWluIGF0IHRoZSB0b3AgbGV2ZWwuXG4gKlxuICogICAtIGBvblJ1blN0YXJ0YCBwYXlsb2FkIOKGkiB0aGUgaW5wdXQgcGFzc2VkIHRvIGBydW4oe2lucHV0fSlgXG4gKiAgIC0gYG9uUnVuRW5kYCAgIHBheWxvYWQg4oaSIHRoZSBjaGFydCdzIHJldHVybiB2YWx1ZVxuICpcbiAqIEJvdGggYXJlIHJldGFpbmVkIGF0IHJ1bnRpbWUgYmVmb3JlIGRpc3BhdGNoL2RlZmVycmVkIGNhcHR1cmUgdXNpbmcgdGhlXG4gKiBydW4ncyBSZWRhY3Rpb25SdWxlIChgcmV0YWluQm91bmRhcnlgKTogb3duIHN0cmluZyBrZXlzIGF0IGV2ZXJ5IGRlcHRoIChieVxuICogbmFtZSBvciBkb3R0ZWQgcGF0aCkgYW5kIGV4cGxpY2l0IG5lc3RlZCBmaWVsZHMuIFNjYWxhcnMgcGFzcyB0aHJvdWdoOyBmb3JrXG4gKiBjaGlsZC1JRCBlbnZlbG9wZXMgbmVlZCBleHBsaWNpdCBwYXRocyBzdWNoIGFzIGZpZWxkczogeyBjaGlsZElkOiBbJ3Jlc3VsdC5zZWNyZXQnXSB9LlxuICogVmFsdWVzIGFyZSBub3Qgc2Nhbm5lZC4gTGl2ZSBleGVjdXRpb24gaW5wdXRzIGFuZCByZXR1cm4gdmFsdWVzIHN0YXkgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5FdmVudCB7XG4gIC8qKiBSZXRhaW5lZCBpbnB1dCBhZnRlciB2YWxpZGF0aW9uIChgb25SdW5TdGFydGApIG9yIHJldGFpbmVkIGNoYXJ0IHJldHVyblxuICAgKiAgKGBvblJ1bkVuZGApLCB1bmRlciB0aGUga2V5L3BhdGggY29udHJhY3QgYWJvdmUuIFVuZGVmaW5lZCBpZiBuZWl0aGVyLiAqL1xuICBwYXlsb2FkPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblJ1bkZhaWxlZCDigJQgdGhlIFRFUk1JTkFMIGZhaWx1cmUgYm91bmRhcnlcbiAqIGZvciBhIHRvcC1sZXZlbCBydW4uIE1pcnJvciBvZiBgb25SdW5FbmRgIGZvciB0aGUgZXJyb3IgcGF0aDogaXQgZmlyZXNcbiAqIG9uY2UsIGR1cmluZyB0cmF2ZXJzYWwsIHdoZW4gdGhlIHJ1biB0aHJvd3MgYSBub24tcGF1c2UgZXJyb3IsIGJlZm9yZVxuICogdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBDYXJyaWVzIHRoZSBzdHJ1Y3R1cmVkIGVycm9yIChmaWVsZC1sZXZlbFxuICogaXNzdWVzLCBjb2RlcykgcmF0aGVyIHRoYW4gYSBmbGF0dGVuZWQgc3RyaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSdW5GYWlsZWRFdmVudCB7XG4gIC8qKiBTdHJ1Y3R1cmVkIGRldGFpbHMgb2YgdGhlIGVycm9yIHRoYXQgdGVybWluYXRlZCB0aGUgcnVuLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogTmF0aXZlIHRlcm1pbmFsIG93bmVyc2hpcCwgaW5kZXBlbmRlbnQgb2Ygc2VydmVkIGVycm9yIGRldGFpbHMuIEFic2VudCBvbiBsZWdhY3kgbWFudWFsbHkgZW1pdHRlZCBldmVudHMuICovXG4gIHJlYWRvbmx5IGZhaWx1cmU/OiBUZXJtaW5hbEZhaWx1cmVDb250ZXh0O1xufVxuXG4vKipcbiAqIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuICpcbiAqIE1pcnJvcnMgdGhlIHNjb3BlLWxldmVsIFNjb3BlUmVjb3JkZXIgcGF0dGVybiBmb3IgdGhlIGVuZ2luZSBsYXllci5cbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogUmVjb3JkZXJzIGFyZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgaW4gYXR0YWNobWVudCBvcmRlci5cbiAqIElmIGEgcmVjb3JkZXIgdGhyb3dzLCB0aGUgZXJyb3IgaXMgY2F1Z2h0IGFuZCBzd2FsbG93ZWQ7IGV4ZWN1dGlvbiBjb250aW51ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpY3NSZWNvcmRlcjogRmxvd1JlY29yZGVyID0ge1xuICogICBpZDogJ21ldHJpY3MnLFxuICogICBvbkxvb3A6IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdsb29wLml0ZXJhdGlvbicsIGV2ZW50Lml0ZXJhdGlvbiksXG4gKiAgIG9uRGVjaXNpb246IChldmVudCkgPT4gcmVjb3JkTWV0cmljKCdkZWNpc2lvbicsIGV2ZW50LmNob3NlbiksXG4gKiB9O1xuICogZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKG1ldHJpY3NSZWNvcmRlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UmVjb3JkZXIge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICBvblN0YWdlRXhlY3V0ZWQ/KGV2ZW50OiBGbG93U3RhZ2VFdmVudCk6IHZvaWQ7XG4gIG9uTmV4dD8oZXZlbnQ6IEZsb3dOZXh0RXZlbnQpOiB2b2lkO1xuICBvbkRlY2lzaW9uPyhldmVudDogRmxvd0RlY2lzaW9uRXZlbnQpOiB2b2lkO1xuICBvbkZvcms/KGV2ZW50OiBGbG93Rm9ya0V2ZW50KTogdm9pZDtcbiAgb25TZWxlY3RlZD8oZXZlbnQ6IEZsb3dTZWxlY3RlZEV2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RW50cnk/KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZDtcbiAgb25TdWJmbG93RXhpdD8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkPyhldmVudDogRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQpOiB2b2lkO1xuICBvbkxvb3A/KGV2ZW50OiBGbG93TG9vcEV2ZW50KTogdm9pZDtcbiAgb25CcmVhaz8oZXZlbnQ6IEZsb3dCcmVha0V2ZW50KTogdm9pZDtcbiAgb25FcnJvcj8oZXZlbnQ6IEZsb3dFcnJvckV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgZW5kIG9mIEVWRVJZIGF0dGVtcHQg4oCUIGEgc3RhZ2UncyBvd24sIGFuZCB0aGUgY2FsbHMgYW5kXG4gICAqIG9ic2VydmVkIGF0dGVtcHRzIGl0IG1ha2VzIGR1cmluZyB0aGUgc3RhZ2UgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKSDigJRcbiAgICogd2l0aCBpdHMgcmVjb3JkIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCAoMTAuMSkuIFNlZVxuICAgKiB7QGxpbmsgRmxvd0F0dGVtcHRFdmVudH0uXG4gICAqL1xuICBvbkF0dGVtcHQ/KGV2ZW50OiBGbG93QXR0ZW1wdEV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciBmYWlsZWQgYXR0ZW1wdCB0aGF0IFdJTEwgYmUgcmV0cmllZCwgZm9yIHN0YWdlcyBjYXJyeWluZyBhXG4gICAqIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5LiBUaGUgZmluYWwgZmFpbHVyZSBhcnJpdmVzIHZpYSBgb25FcnJvcmAgaW5zdGVhZCxcbiAgICogc28gYSBzdGFnZSBuZXZlciByZXBvcnRzIHRoZSBzYW1lIGZhaWx1cmUgdHdpY2UuIFNlZVxuICAgKiB7QGxpbmsgRmxvd1N0YWdlUmV0cnlFdmVudH0gZm9yIHRoZSBleGFjdCBldmVudCBhcml0aG1ldGljLlxuICAgKi9cbiAgb25TdGFnZVJldHJ5PyhldmVudDogRmxvd1N0YWdlUmV0cnlFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQncyBlcnJvciBpcyBjbGFzc2lmaWVkIGFzIHRocm90dGxpbmcgYnkgdGhlXG4gICAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIOKAlCBzZWUge0BsaW5rIEZsb3dUaHJvdHRsZWRFdmVudH0uXG4gICAqL1xuICBvblRocm90dGxlZD8oZXZlbnQ6IEZsb3dUaHJvdHRsZWRFdmVudCk6IHZvaWQ7XG4gIG9uUGF1c2U/KGV2ZW50OiBGbG93UGF1c2VFdmVudCk6IHZvaWQ7XG4gIG9uUmVzdW1lPyhldmVudDogRmxvd1Jlc3VtZUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBCRUZPUkUgdHJhdmVyc2FsIGJlZ2lucy5cbiAgICogQ2FycmllcyBgZXZlbnQucGF5bG9hZCA9IHJ1bih7aW5wdXR9KWAuIFN1YmZsb3ctdHJhdmVyc2VycyBkb24ndCBmaXJlIGl0LlxuICAgKi9cbiAgb25SdW5TdGFydD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgQUZURVIgdHJhdmVyc2FsIGNvbXBsZXRlc1xuICAgKiBjbGVhbmx5LiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gY2hhcnQncyByZXR1cm4gdmFsdWVgLiBOT1QgZmlyZWQgb25cbiAgICogcGF1c2UgKHRoZSBydW4gZGlkbid0IGVuZCkgb3IgdW5jYXVnaHQgZXJyb3IuXG4gICAqL1xuICBvblJ1bkVuZD8oZXZlbnQ6IEZsb3dSdW5FdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgd2hlbiB0aGUgcnVuIHRocm93cyBhXG4gICAqIG5vbi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcy4gVGhlIFRFUk1JTkFMXG4gICAqIGNvdW50ZXJwYXJ0IHRvIGBvblJ1bkVuZGAg4oCUIGxldHMgYSBtb25pdG9yIGNsb3NlIHRoZSBydW4gYm91bmRhcnkgb25cbiAgICogZmFpbHVyZSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yZXZlci4gTk9UIGZpcmVkIG9uIHBhdXNlLlxuICAgKi9cbiAgb25SdW5GYWlsZWQ/KGV2ZW50OiBGbG93UnVuRmFpbGVkRXZlbnQpOiB2b2lkO1xuICAvKiogQ2FsbGVkIGJlZm9yZSBlYWNoIHJ1biB0byByZXNldCBwZXItcnVuIHN0YXRlLiBJbXBsZW1lbnQgZm9yIHN0YXRlZnVsIHJlY29yZGVycy4gKi9cbiAgY2xlYXI/KCk6IHZvaWQ7XG4gIC8qKiBPcHRpb25hbDogZXhwb3NlIGNvbGxlY3RlZCBkYXRhIGZvciBpbmNsdXNpb24gaW4gc25hcHNob3RzLiAqL1xuICB0b1NuYXBzaG90PygpOiBpbXBvcnQoJy4uLy4uL3JlY29yZGVyL3NuYXBzaG90LmpzJykuUmVjb3JkZXJCdW5kbGU7XG59XG4iXX0=