angular-odata 0.123.0 → 0.125.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 (102) hide show
  1. package/esm2022/lib/api.mjs +1 -1
  2. package/esm2022/lib/cache/cache.mjs +4 -2
  3. package/esm2022/lib/cache/storage.mjs +1 -1
  4. package/esm2022/lib/client.mjs +5 -6
  5. package/esm2022/lib/constants.mjs +2 -1
  6. package/esm2022/lib/helper.mjs +2 -2
  7. package/esm2022/lib/loaders.mjs +1 -1
  8. package/esm2022/lib/models/collection.mjs +83 -93
  9. package/esm2022/lib/models/model.mjs +154 -112
  10. package/esm2022/lib/models/options.mjs +86 -59
  11. package/esm2022/lib/module.mjs +6 -7
  12. package/esm2022/lib/resources/path/segments.mjs +6 -6
  13. package/esm2022/lib/resources/query/builder.mjs +11 -6
  14. package/esm2022/lib/resources/query/expressions/base.mjs +1 -1
  15. package/esm2022/lib/resources/query/expressions/compute.mjs +5 -5
  16. package/esm2022/lib/resources/query/expressions/count.mjs +19 -9
  17. package/esm2022/lib/resources/query/expressions/expand.mjs +15 -9
  18. package/esm2022/lib/resources/query/expressions/filter.mjs +7 -7
  19. package/esm2022/lib/resources/query/expressions/orderby.mjs +7 -7
  20. package/esm2022/lib/resources/query/expressions/search.mjs +5 -5
  21. package/esm2022/lib/resources/query/expressions/select.mjs +5 -5
  22. package/esm2022/lib/resources/query/expressions/syntax.mjs +89 -45
  23. package/esm2022/lib/resources/query/handlers.mjs +1 -1
  24. package/esm2022/lib/resources/query/options.mjs +6 -6
  25. package/esm2022/lib/resources/request.mjs +1 -1
  26. package/esm2022/lib/resources/resource.mjs +11 -5
  27. package/esm2022/lib/resources/responses/annotations.mjs +1 -1
  28. package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +1 -1
  29. package/esm2022/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
  30. package/esm2022/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
  31. package/esm2022/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
  32. package/esm2022/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
  33. package/esm2022/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
  34. package/esm2022/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
  35. package/esm2022/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
  36. package/esm2022/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
  37. package/esm2022/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
  38. package/esm2022/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
  39. package/esm2022/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
  40. package/esm2022/lib/resources/responses/metadata.mjs +2 -3
  41. package/esm2022/lib/resources/responses/response.mjs +1 -1
  42. package/esm2022/lib/resources/types/action.mjs +1 -1
  43. package/esm2022/lib/resources/types/batch.mjs +1 -1
  44. package/esm2022/lib/resources/types/count.mjs +1 -1
  45. package/esm2022/lib/resources/types/entity-set.mjs +1 -1
  46. package/esm2022/lib/resources/types/entity.mjs +1 -1
  47. package/esm2022/lib/resources/types/function.mjs +1 -1
  48. package/esm2022/lib/resources/types/media.mjs +1 -1
  49. package/esm2022/lib/resources/types/navigation-property.mjs +1 -1
  50. package/esm2022/lib/resources/types/property.mjs +1 -1
  51. package/esm2022/lib/resources/types/reference.mjs +1 -1
  52. package/esm2022/lib/resources/types/singleton.mjs +1 -1
  53. package/esm2022/lib/resources/types/value.mjs +1 -1
  54. package/esm2022/lib/schema/annotation.mjs +1 -1
  55. package/esm2022/lib/schema/callable.mjs +1 -1
  56. package/esm2022/lib/schema/element.mjs +1 -1
  57. package/esm2022/lib/schema/entity-container.mjs +1 -1
  58. package/esm2022/lib/schema/enum-type.mjs +1 -1
  59. package/esm2022/lib/schema/parsers/callable.mjs +1 -1
  60. package/esm2022/lib/schema/parsers/edm.mjs +1 -1
  61. package/esm2022/lib/schema/parsers/enum-type.mjs +1 -1
  62. package/esm2022/lib/schema/parsers/structured-type.mjs +14 -2
  63. package/esm2022/lib/schema/schema.mjs +1 -1
  64. package/esm2022/lib/schema/structured-type.mjs +9 -4
  65. package/esm2022/lib/services/base.mjs +1 -1
  66. package/esm2022/lib/services/entity-set.mjs +1 -1
  67. package/esm2022/lib/services/factory.mjs +5 -6
  68. package/esm2022/lib/services/singleton.mjs +1 -1
  69. package/esm2022/lib/settings.mjs +1 -1
  70. package/esm2022/lib/types.mjs +1 -1
  71. package/esm2022/lib/utils/arrays.mjs +1 -1
  72. package/esm2022/lib/utils/durations.mjs +1 -1
  73. package/esm2022/lib/utils/enums.mjs +1 -1
  74. package/esm2022/lib/utils/http.mjs +1 -1
  75. package/esm2022/lib/utils/objects.mjs +1 -1
  76. package/esm2022/lib/utils/odata.mjs +1 -1
  77. package/esm2022/lib/utils/types.mjs +4 -1
  78. package/fesm2022/angular-odata.mjs +521 -363
  79. package/fesm2022/angular-odata.mjs.map +1 -1
  80. package/lib/constants.d.ts +1 -0
  81. package/lib/helper.d.ts +10 -10
  82. package/lib/models/collection.d.ts +4 -5
  83. package/lib/models/model.d.ts +9 -9
  84. package/lib/models/options.d.ts +31 -10
  85. package/lib/resources/path/segments.d.ts +14 -5
  86. package/lib/resources/query/expressions/base.d.ts +3 -1
  87. package/lib/resources/query/expressions/compute.d.ts +8 -6
  88. package/lib/resources/query/expressions/count.d.ts +11 -8
  89. package/lib/resources/query/expressions/expand.d.ts +15 -12
  90. package/lib/resources/query/expressions/filter.d.ts +7 -5
  91. package/lib/resources/query/expressions/orderby.d.ts +9 -6
  92. package/lib/resources/query/expressions/search.d.ts +9 -6
  93. package/lib/resources/query/expressions/select.d.ts +7 -5
  94. package/lib/resources/query/expressions/syntax.d.ts +16 -13
  95. package/lib/resources/query/options.d.ts +14 -5
  96. package/lib/resources/resource.d.ts +1 -1
  97. package/lib/resources/responses/annotations.d.ts +9 -9
  98. package/lib/schema/parsers/structured-type.d.ts +3 -0
  99. package/lib/schema/structured-type.d.ts +2 -1
  100. package/lib/utils/enums.d.ts +7 -7
  101. package/lib/utils/types.d.ts +1 -0
  102. package/package.json +1 -1
@@ -36,4 +36,4 @@ export class CsdlOnDelete {
36
36
  this.action = action;
37
37
  }
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3Jlc291cmNlcy9yZXNwb25zZXMvY3NkbC9jc2RsLXN0cnVjdHVyYWwtcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUMsWUFDUyxJQUFZLEVBQ1osSUFBWSxFQUNaLFFBQWtCO1FBRmxCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN4QixDQUFDO0NBQ0w7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLHNCQUFzQjtJQUN0RCxZQUNFLElBQVksRUFDWixJQUFZLEVBQ1osUUFBa0IsRUFDWCxTQUFrQixFQUNsQixTQUFrQixFQUNsQixLQUFjLEVBQ2QsT0FBaUIsRUFDakIsSUFBYSxFQUNiLFlBQXFCO1FBRTVCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBUHJCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsaUJBQVksR0FBWixZQUFZLENBQVM7SUFHOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQUNoRSxZQUNFLElBQVksRUFDWixJQUFZLEVBQ1osUUFBa0IsRUFDWCxPQUFnQixFQUNoQixjQUF3QixFQUN4QixzQkFBb0QsRUFDcEQsUUFBdUI7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFMckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBVTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQThCO1FBQ3BELGFBQVEsR0FBUixRQUFRLENBQWU7SUFHaEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFtQixRQUFnQixFQUFTLGtCQUEwQjtRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBQUcsQ0FBQztDQUMzRTtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQW1CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztDQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgdHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBudWxsYWJsZT86IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbFByb3BlcnR5IGV4dGVuZHMgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbnVsbGFibGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBtYXhMZW5ndGg/OiBudW1iZXIsXG4gICAgcHVibGljIHByZWNpc2lvbj86IG51bWJlcixcbiAgICBwdWJsaWMgc2NhbGU/OiBudW1iZXIsXG4gICAgcHVibGljIHVuaWNvZGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBzcmlkPzogc3RyaW5nLFxuICAgIHB1YmxpYyBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobmFtZSwgdHlwZSwgbnVsbGFibGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsTmF2aWdhdGlvblByb3BlcnR5IGV4dGVuZHMgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbnVsbGFibGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBwYXJ0bmVyPzogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250YWluc1RhcmdldD86IGJvb2xlYW4sXG4gICAgcHVibGljIHJlZmVyZW50aWFsQ29uc3RyYWludHM/OiBDc2RsUmVmZXJlbnRpYWxDb25zdHJhaW50W10sXG4gICAgcHVibGljIG9uRGVsZXRlPzogQ3NkbE9uRGVsZXRlXG4gICkge1xuICAgIHN1cGVyKG5hbWUsIHR5cGUsIG51bGxhYmxlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eTogc3RyaW5nLCBwdWJsaWMgcmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsT25EZWxldGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYWN0aW9uOiBzdHJpbmcpIHt9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3Jlc291cmNlcy9yZXNwb25zZXMvY3NkbC9jc2RsLXN0cnVjdHVyYWwtcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUMsWUFDUyxJQUFZLEVBQ1osSUFBWSxFQUNaLFFBQWtCO1FBRmxCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN4QixDQUFDO0NBQ0w7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLHNCQUFzQjtJQUN0RCxZQUNFLElBQVksRUFDWixJQUFZLEVBQ1osUUFBa0IsRUFDWCxTQUFrQixFQUNsQixTQUFrQixFQUNsQixLQUFjLEVBQ2QsT0FBaUIsRUFDakIsSUFBYSxFQUNiLFlBQXFCO1FBRTVCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBUHJCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsaUJBQVksR0FBWixZQUFZLENBQVM7SUFHOUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQUNoRSxZQUNFLElBQVksRUFDWixJQUFZLEVBQ1osUUFBa0IsRUFDWCxPQUFnQixFQUNoQixjQUF3QixFQUN4QixzQkFBb0QsRUFDcEQsUUFBdUI7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFMckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBVTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQThCO1FBQ3BELGFBQVEsR0FBUixRQUFRLENBQWU7SUFHaEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUNTLFFBQWdCLEVBQ2hCLGtCQUEwQjtRQUQxQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtJQUNoQyxDQUFDO0NBQ0w7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7Q0FDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHR5cGU6IHN0cmluZyxcbiAgICBwdWJsaWMgbnVsbGFibGU/OiBib29sZWFuLFxuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsUHJvcGVydHkgZXh0ZW5kcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBudWxsYWJsZT86IGJvb2xlYW4sXG4gICAgcHVibGljIG1heExlbmd0aD86IG51bWJlcixcbiAgICBwdWJsaWMgcHJlY2lzaW9uPzogbnVtYmVyLFxuICAgIHB1YmxpYyBzY2FsZT86IG51bWJlcixcbiAgICBwdWJsaWMgdW5pY29kZT86IGJvb2xlYW4sXG4gICAgcHVibGljIHNyaWQ/OiBzdHJpbmcsXG4gICAgcHVibGljIGRlZmF1bHRWYWx1ZT86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIobmFtZSwgdHlwZSwgbnVsbGFibGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsTmF2aWdhdGlvblByb3BlcnR5IGV4dGVuZHMgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbnVsbGFibGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBwYXJ0bmVyPzogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250YWluc1RhcmdldD86IGJvb2xlYW4sXG4gICAgcHVibGljIHJlZmVyZW50aWFsQ29uc3RyYWludHM/OiBDc2RsUmVmZXJlbnRpYWxDb25zdHJhaW50W10sXG4gICAgcHVibGljIG9uRGVsZXRlPzogQ3NkbE9uRGVsZXRlLFxuICApIHtcbiAgICBzdXBlcihuYW1lLCB0eXBlLCBudWxsYWJsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxSZWZlcmVudGlhbENvbnN0cmFpbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcHJvcGVydHk6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmcsXG4gICkge31cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxPbkRlbGV0ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3Rpb246IHN0cmluZykge31cbn1cbiJdfQ==
@@ -31,4 +31,4 @@ export class CsdlPropertyRef {
31
31
  this.alias = alias;
32
32
  }
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmVkLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9jc2RsL2NzZGwtc3RydWN0dXJlZC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDUyxJQUFZLEVBQ1osVUFBMkIsRUFDM0Isb0JBQStDLEVBQy9DLFFBQWlCLEVBQ2pCLFFBQWtCLEVBQ2xCLFFBQWtCO1FBTGxCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTJCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3hCLENBQUM7Q0FDTDtBQUVELE1BQU0sT0FBTyxlQUFnQixTQUFRLGtCQUFrQjtJQUNyRCxZQUNFLElBQVksRUFDWixVQUEyQixFQUMzQixvQkFBK0MsRUFDL0MsUUFBaUIsRUFDakIsUUFBa0IsRUFDbEIsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQUNwRCxZQUNFLElBQVksRUFDTCxHQUFhLEVBQ3BCLFVBQTJCLEVBQzNCLG9CQUErQyxFQUMvQyxRQUFpQixFQUNqQixRQUFrQixFQUNsQixRQUFrQixFQUNYLFNBQW1CO1FBRTFCLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFSckUsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQU1iLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFHNUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBbUIsWUFBK0I7UUFBL0IsaUJBQVksR0FBWixZQUFZLENBQW1CO0lBQUcsQ0FBQztDQUN2RDtBQUVELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW1CLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUcsQ0FBQztDQUMzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENzZGxQcm9wZXJ0eSxcbiAgQ3NkbE5hdmlnYXRpb25Qcm9wZXJ0eSxcbn0gZnJvbSAnLi9jc2RsLXN0cnVjdHVyYWwtcHJvcGVydHknO1xuXG5leHBvcnQgY2xhc3MgQ3NkbFN0cnVjdHVyZWRUeXBlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcHJvcGVydGllcz86IENzZGxQcm9wZXJ0eVtdLFxuICAgIHB1YmxpYyBuYXZpZ2F0aW9uUHJvcGVydGllcz86IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlbXSxcbiAgICBwdWJsaWMgYmFzZVR5cGU/OiBzdHJpbmcsXG4gICAgcHVibGljIG9wZW5UeXBlPzogYm9vbGVhbixcbiAgICBwdWJsaWMgYWJzdHJhY3Q/OiBib29sZWFuXG4gICkge31cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxDb21wbGV4VHlwZSBleHRlbmRzIENzZGxTdHJ1Y3R1cmVkVHlwZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzPzogQ3NkbFByb3BlcnR5W10sXG4gICAgbmF2aWdhdGlvblByb3BlcnRpZXM/OiBDc2RsTmF2aWdhdGlvblByb3BlcnR5W10sXG4gICAgYmFzZVR5cGU/OiBzdHJpbmcsXG4gICAgb3BlblR5cGU/OiBib29sZWFuLFxuICAgIGFic3RyYWN0PzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcihuYW1lLCBwcm9wZXJ0aWVzLCBuYXZpZ2F0aW9uUHJvcGVydGllcywgYmFzZVR5cGUsIG9wZW5UeXBlLCBhYnN0cmFjdCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxFbnRpdHlUeXBlIGV4dGVuZHMgQ3NkbFN0cnVjdHVyZWRUeXBlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBrZXk/OiBDc2RsS2V5LFxuICAgIHByb3BlcnRpZXM/OiBDc2RsUHJvcGVydHlbXSxcbiAgICBuYXZpZ2F0aW9uUHJvcGVydGllcz86IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlbXSxcbiAgICBiYXNlVHlwZT86IHN0cmluZyxcbiAgICBvcGVuVHlwZT86IGJvb2xlYW4sXG4gICAgYWJzdHJhY3Q/OiBib29sZWFuLFxuICAgIHB1YmxpYyBoYXNTdHJlYW0/OiBib29sZWFuXG4gICkge1xuICAgIHN1cGVyKG5hbWUsIHByb3BlcnRpZXMsIG5hdmlnYXRpb25Qcm9wZXJ0aWVzLCBiYXNlVHlwZSwgb3BlblR5cGUsIGFic3RyYWN0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbEtleSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9wZXJ0eVJlZnM6IENzZGxQcm9wZXJ0eVJlZltdKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbFByb3BlcnR5UmVmIHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGFsaWFzPzogc3RyaW5nKSB7fVxufVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmVkLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9jc2RsL2NzZGwtc3RydWN0dXJlZC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDUyxJQUFZLEVBQ1osVUFBMkIsRUFDM0Isb0JBQStDLEVBQy9DLFFBQWlCLEVBQ2pCLFFBQWtCLEVBQ2xCLFFBQWtCO1FBTGxCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTJCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3hCLENBQUM7Q0FDTDtBQUVELE1BQU0sT0FBTyxlQUFnQixTQUFRLGtCQUFrQjtJQUNyRCxZQUNFLElBQVksRUFDWixVQUEyQixFQUMzQixvQkFBK0MsRUFDL0MsUUFBaUIsRUFDakIsUUFBa0IsRUFDbEIsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQUNwRCxZQUNFLElBQVksRUFDTCxHQUFhLEVBQ3BCLFVBQTJCLEVBQzNCLG9CQUErQyxFQUMvQyxRQUFpQixFQUNqQixRQUFrQixFQUNsQixRQUFrQixFQUNYLFNBQW1CO1FBRTFCLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFSckUsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQU1iLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFHNUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBbUIsWUFBK0I7UUFBL0IsaUJBQVksR0FBWixZQUFZLENBQW1CO0lBQUcsQ0FBQztDQUN2RDtBQUVELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1MsSUFBWSxFQUNaLEtBQWM7UUFEZCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osVUFBSyxHQUFMLEtBQUssQ0FBUztJQUNwQixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDc2RsUHJvcGVydHksXG4gIENzZGxOYXZpZ2F0aW9uUHJvcGVydHksXG59IGZyb20gJy4vY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5JztcblxuZXhwb3J0IGNsYXNzIENzZGxTdHJ1Y3R1cmVkVHlwZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHByb3BlcnRpZXM/OiBDc2RsUHJvcGVydHlbXSxcbiAgICBwdWJsaWMgbmF2aWdhdGlvblByb3BlcnRpZXM/OiBDc2RsTmF2aWdhdGlvblByb3BlcnR5W10sXG4gICAgcHVibGljIGJhc2VUeXBlPzogc3RyaW5nLFxuICAgIHB1YmxpYyBvcGVuVHlwZT86IGJvb2xlYW4sXG4gICAgcHVibGljIGFic3RyYWN0PzogYm9vbGVhbixcbiAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ3NkbENvbXBsZXhUeXBlIGV4dGVuZHMgQ3NkbFN0cnVjdHVyZWRUeXBlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM/OiBDc2RsUHJvcGVydHlbXSxcbiAgICBuYXZpZ2F0aW9uUHJvcGVydGllcz86IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlbXSxcbiAgICBiYXNlVHlwZT86IHN0cmluZyxcbiAgICBvcGVuVHlwZT86IGJvb2xlYW4sXG4gICAgYWJzdHJhY3Q/OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcihuYW1lLCBwcm9wZXJ0aWVzLCBuYXZpZ2F0aW9uUHJvcGVydGllcywgYmFzZVR5cGUsIG9wZW5UeXBlLCBhYnN0cmFjdCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxFbnRpdHlUeXBlIGV4dGVuZHMgQ3NkbFN0cnVjdHVyZWRUeXBlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBrZXk/OiBDc2RsS2V5LFxuICAgIHByb3BlcnRpZXM/OiBDc2RsUHJvcGVydHlbXSxcbiAgICBuYXZpZ2F0aW9uUHJvcGVydGllcz86IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlbXSxcbiAgICBiYXNlVHlwZT86IHN0cmluZyxcbiAgICBvcGVuVHlwZT86IGJvb2xlYW4sXG4gICAgYWJzdHJhY3Q/OiBib29sZWFuLFxuICAgIHB1YmxpYyBoYXNTdHJlYW0/OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcihuYW1lLCBwcm9wZXJ0aWVzLCBuYXZpZ2F0aW9uUHJvcGVydGllcywgYmFzZVR5cGUsIG9wZW5UeXBlLCBhYnN0cmFjdCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxLZXkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvcGVydHlSZWZzOiBDc2RsUHJvcGVydHlSZWZbXSkge31cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxQcm9wZXJ0eVJlZiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGFsaWFzPzogc3RyaW5nLFxuICApIHt9XG59XG4iXX0=
@@ -11,4 +11,4 @@ export class CsdlTypeDefinition extends CsdlAnnotable {
11
11
  this.srid = srid;
12
12
  }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC10eXBlLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9jc2RsL2NzZGwtdHlwZS1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sbUJBQW1CLENBQUM7QUFFbEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFDbkQsWUFDUyxJQUFZLEVBQ1osZUFBdUIsRUFDdkIsU0FBa0IsRUFDbEIsU0FBa0IsRUFDbEIsS0FBYyxFQUNkLE9BQWlCLEVBQ2pCLElBQWEsRUFDcEIsY0FBaUM7UUFFakMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBVGYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFTO0lBSXRCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzZGxBbm5vdGFibGUsIENzZGxBbm5vdGF0aW9uIH0gZnJvbSAnLi9jc2RsLWFubm90YXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQ3NkbFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgQ3NkbEFubm90YWJsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHVuZGVybGF5aW5nVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBtYXhMZW5ndGg/OiBudW1iZXIsXG4gICAgcHVibGljIHByZWNpc2lvbj86IG51bWJlcixcbiAgICBwdWJsaWMgc2NhbGU/OiBudW1iZXIsXG4gICAgcHVibGljIHVuaWNvZGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBzcmlkPzogc3RyaW5nLFxuICAgIGFubm90YXRpb25MaXN0PzogQ3NkbEFubm90YXRpb25bXVxuICApIHtcbiAgICBzdXBlcihhbm5vdGF0aW9uTGlzdCk7XG4gIH1cbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC10eXBlLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9jc2RsL2NzZGwtdHlwZS1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sbUJBQW1CLENBQUM7QUFFbEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFDbkQsWUFDUyxJQUFZLEVBQ1osZUFBdUIsRUFDdkIsU0FBa0IsRUFDbEIsU0FBa0IsRUFDbEIsS0FBYyxFQUNkLE9BQWlCLEVBQ2pCLElBQWEsRUFDcEIsY0FBaUM7UUFFakMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBVGYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFTO0lBSXRCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzZGxBbm5vdGFibGUsIENzZGxBbm5vdGF0aW9uIH0gZnJvbSAnLi9jc2RsLWFubm90YXRpb24nO1xuXG5leHBvcnQgY2xhc3MgQ3NkbFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgQ3NkbEFubm90YWJsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHVuZGVybGF5aW5nVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBtYXhMZW5ndGg/OiBudW1iZXIsXG4gICAgcHVibGljIHByZWNpc2lvbj86IG51bWJlcixcbiAgICBwdWJsaWMgc2NhbGU/OiBudW1iZXIsXG4gICAgcHVibGljIHVuaWNvZGU/OiBib29sZWFuLFxuICAgIHB1YmxpYyBzcmlkPzogc3RyaW5nLFxuICAgIGFubm90YXRpb25MaXN0PzogQ3NkbEFubm90YXRpb25bXSxcbiAgKSB7XG4gICAgc3VwZXIoYW5ub3RhdGlvbkxpc3QpO1xuICB9XG59XG4iXX0=
@@ -22,7 +22,7 @@ class Field {
22
22
  this.fieldType = fieldType;
23
23
  }
24
24
  }
25
- class ODataMetadata {
25
+ export class ODataMetadata {
26
26
  // TAGS
27
27
  static { this.TAG_EDMX = 'edmx:Edmx'; }
28
28
  static { this.TAG_DATA_SERVICES = 'edmx:DataServices'; }
@@ -544,5 +544,4 @@ class ODataMetadata {
544
544
  return attributeValue !== undefined ? attributeValue === 'true' : false;
545
545
  }
546
546
  }
547
- export { ODataMetadata };
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixRQUFRLEdBQ1QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUNMLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osWUFBWSxFQUNaLHlCQUF5QixHQUMxQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFB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QyxDQUFDLGNBQWMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRSxDQUFDOztTQWx4QlUsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENzZGxBY3Rpb24sXG4gIENzZGxBY3Rpb25JbXBvcnQsXG4gIENzZGxGdW5jdGlvbixcbiAgQ3NkbEZ1bmN0aW9uSW1wb3J0LFxuICBDc2RsUGFyYW1ldGVyLFxuICBDc2RsUmV0dXJuVHlwZSxcbn0gZnJvbSAnLi9jc2RsL2NzZGwtZnVuY3Rpb24tYWN0aW9uJztcbmltcG9ydCB7XG4gIENzZGxBbm5vdGF0aW9uLFxuICBDc2RsQW5ub3RhdGlvbnMsXG4gIENzZGxUZXJtLFxufSBmcm9tICcuL2NzZGwvY3NkbC1hbm5vdGF0aW9uJztcbmltcG9ydCB7XG4gIENzZGxDb21wbGV4VHlwZSxcbiAgQ3NkbEVudGl0eVR5cGUsXG4gIENzZGxLZXksXG4gIENzZGxQcm9wZXJ0eVJlZixcbn0gZnJvbSAnLi9jc2RsL2NzZGwtc3RydWN0dXJlZC10eXBlJztcbmltcG9ydCB7IENzZGxFbnVtTWVtYmVyLCBDc2RsRW51bVR5cGUgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnVtLXR5cGUnO1xuaW1wb3J0IHtcbiAgQ3NkbEluY2x1ZGUsXG4gIENzZGxJbmNsdWRlQW5ub3RhdGlvbnMsXG4gIENzZGxSZWZlcmVuY2UsXG59IGZyb20gJy4vY3NkbC9jc2RsLXJlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBDc2RsTmF2aWdhdGlvblByb3BlcnR5LFxuICBDc2RsT25EZWxldGUsXG4gIENzZGxQcm9wZXJ0eSxcbiAgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludCxcbn0gZnJvbSAnLi9jc2RsL2NzZGwtc3RydWN0dXJhbC1wcm9wZXJ0eSc7XG5cbmltcG9ydCB7IENzZGxFbnRpdHlDb250YWluZXIgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnRpdHktY29udGFpbmVyJztcbmltcG9ydCB7IENzZGxFbnRpdHlTZXQgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnRpdHktc2V0JztcbmltcG9ydCB7IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIH0gZnJvbSAnLi9jc2RsL2NzZGwtbmF2aWdhdGlvbi1wcm9wZXJ0eS1iaW5kaW5nJztcbmltcG9ydCB7IENzZGxTY2hlbWEgfSBmcm9tICcuL2NzZGwvY3NkbC1zY2hlbWEnO1xuaW1wb3J0IHsgQ3NkbFNpbmdsZXRvbiB9IGZyb20gJy4vY3NkbC9jc2RsLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBDc2RsVHlwZURlZmluaXRpb24gfSBmcm9tICcuL2NzZGwvY3NkbC10eXBlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgVkVSU0lPTl80XzAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5lbnVtIEZpZWxkVHlwZSB7XG4gIEFUVFJJQlVURSxcbiAgVEFHLFxufVxuXG5jbGFzcyBGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBmaWVsZFR5cGU6IEZpZWxkVHlwZSkge31cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhTWV0YWRhdGEge1xuICAvLyBUQUdTXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19FRE1YID0gJ2VkbXg6RWRteCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19EQVRBX1NFUlZJQ0VTID0gJ2VkbXg6RGF0YVNlcnZpY2VzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1JFRkVSRU5DRSA9ICdlZG14OlJlZmVyZW5jZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19JTkNMVURFID0gJ2VkbXg6SW5jbHVkZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19JTkNMVURFX0FOTk9UQVRJT05TID0gJ2VkbXg6SW5jbHVkZUFubm90YXRpb25zJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1RFUk0gPSAnVGVybSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19BTk5PVEFUSU9OUyA9ICdBbm5vdGF0aW9ucyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19BTk5PVEFUSU9OID0gJ0Fubm90YXRpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfU0NIRU1BID0gJ1NjaGVtYSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19FTlVNX1RZUEUgPSAnRW51bVR5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfTUVNQkVSID0gJ01lbWJlcic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19DT01QTEVYX1RZUEUgPSAnQ29tcGxleFR5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRU5USVRZX1RZUEUgPSAnRW50aXR5VHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19QUk9QRVJUWSA9ICdQcm9wZXJ0eSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19LRVkgPSAnS2V5JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1BST1BFUlRZX1JFRiA9ICdQcm9wZXJ0eVJlZic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19OQVZJR0FUSU9OX1BST1BFUlRZID0gJ05hdmlnYXRpb25Qcm9wZXJ0eSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19SRUZFUkVOVElBTF9DT05TVFJBSU5UID0gJ1JlZmVyZW50aWFsQ29uc3RyYWludCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19PTl9ERUxFVEUgPSAnT25EZWxldGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRlVOQ1RJT04gPSAnRnVuY3Rpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfUkVUVVJOX1RZUEUgPSAnUmV0dXJuVHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19QQVJBTUVURVIgPSAnUGFyYW1ldGVyJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0FDVElPTiA9ICdBY3Rpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRU5USVRZX0NPTlRBSU5FUiA9ICdFbnRpdHlDb250YWluZXInO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRU5USVRZX1NFVCA9ICdFbnRpdHlTZXQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfU0lOR0xFVE9OID0gJ1NpbmdsZXRvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19GVU5DVElPTl9JTVBPUlQgPSAnRnVuY3Rpb25JbXBvcnQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfQUNUSU9OX0lNUE9SVCA9ICdBY3Rpb25JbXBvcnQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfTkFWSUdBVElPTl9QUk9QRVJUWV9CSU5ESU5HID1cbiAgICAnTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19UWVBFX0RFRklOSVRJT04gPSAnVHlwZURlZmluaXRpb24nO1xuXG4gIC8vIEFUVFJJQlVURVNcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1ZFUlNJT04gPSAnVmVyc2lvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9VUkkgPSAnVXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0FMSUFTID0gJ0FsaWFzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX05BTUVTUEFDRSA9ICdOYW1lc3BhY2UnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVEVSTV9OQU1FU1BBQ0UgPSAnVGVybU5hbWVzcGFjZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9RVUFMSUZJRVIgPSAnUXVhbGlmaWVyJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1RBUkdFVF9OQU1FU1BBQ0UgPSAnVGFyZ2V0TmFtZXNwYWNlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1RFUk0gPSAnVGVybSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9OQU1FID0gJ05hbWUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVkFMVUUgPSAnVmFsdWUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfQkFTRV9UWVBFID0gJ0Jhc2VUeXBlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX09QRU5fVFlQRSA9ICdPcGVuVHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9UWVBFID0gJ1R5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfTlVMTEFCTEUgPSAnTnVsbGFibGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfTUFYX0xFTkdUSCA9ICdNYXhMZW5ndGgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfUFJFQ0lTSU9OID0gJ1ByZWNpc2lvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9TQ0FMRSA9ICdTY2FsZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9VTklDT0RFID0gJ1VuaWNvZGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfU1JJRCA9ICdTUklEJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0RFRkFVTFRfVkFMVUUgPSAnRGVmYXVsdFZhbHVlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1BBUlRORVIgPSAnUGFydG5lcic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9QUk9QRVJUWSA9ICdQcm9wZXJ0eSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9SRUZFUkVOQ0VEX1BST1BFUlRZID0gJ1JlZmVyZW5jZWRQcm9wZXJ0eSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9IQVNfU1RSRUFNID0gJ0hhc1N0cmVhbSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9DT05UQUlOU19UQVJHRVQgPSAnQ29udGFpbnNUYXJnZXQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfSVNfQk9VTkQgPSAnSXNCb3VuZCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9FTlRJVFlfU0VUX1BBVEggPSAnRW50aXR5U2V0UGF0aCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9JU19DT01QT1NBQkxFID0gJ0lzQ29tcG9zYWJsZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9FTlRJVFlfVFlQRSA9ICdFbnRpdHlUeXBlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1BBVEggPSAnUGF0aCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9UQVJHRVQgPSAnVGFyZ2V0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0ZVTkNUSU9OID0gJ0Z1bmN0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0FDVElPTiA9ICdBY3Rpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfRU5USVRZX1NFVCA9ICdFbnRpdHlTZXQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfSU5DTFVERV9JTl9TRVJWSUNFX0RPQ1VNRU5UID1cbiAgICAnSW5jbHVkZUluU2VydmljZURvY3VtZW50JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0FCU1RSQUNUID0gJ0Fic3RyYWN0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1VOREVSTFlJTkdfVFlQRSA9ICdVbmRlcmx5aW5nVHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9JU19GTEFHUyA9ICdJc0ZsYWdzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0VYVEVORFMgPSAnRXh0ZW5kcyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9CQVNFX1RFUk0gPSAnQmFzZVRlcm0nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfQVBQTElFU19UTyA9ICdBcHBsaWVzVG8nO1xuXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSByZWZlcmVuY2VzOiBDc2RsUmVmZXJlbmNlW107XG4gIHB1YmxpYyByZWFkb25seSBzY2hlbWFzOiBDc2RsU2NoZW1hW107XG5cbiAgY29uc3RydWN0b3IoeG1sOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VyOiBET01QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG5cbiAgICAgIHRoaXMuY2hlY2tWZXJzaW9uKGRvY3VtZW50KTtcblxuICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5nZXRGaWVsZFZhbHVlQnlBdHRyaWJ1dGUoXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9WRVJTSU9OLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dHJpYnV0ZXNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHRoaXMuZ2V0T2JqZWN0cyhcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBPRGF0YU1ldGFkYXRhLlRBR19SRUZFUkVOQ0UsXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVVJJLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfSU5DTFVERSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0lOQ0xVREVfQU5OT1RBVElPTlMsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19BTk5PVEFUSU9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgXVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YVNlcnZpY2VzOiBFbGVtZW50ID1cbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFxuICAgICAgICAgIE9EYXRhTWV0YWRhdGEuVEFHX0RBVEFfU0VSVklDRVNcbiAgICAgICAgKVswXTtcbiAgICAgIHRoaXMuc2NoZW1hcyA9IHRoaXMuZ2V0T2JqZWN0cyhkYXRhU2VydmljZXMsIE9EYXRhTWV0YWRhdGEuVEFHX1NDSEVNQSwgW1xuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRVNQQUNFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FMSUFTLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0VOVU1fVFlQRSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19DT01QTEVYX1RZUEUsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX1RZUEUsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfRlVOQ1RJT04sIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0VOVElUWV9DT05UQUlORVIsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfVFlQRV9ERUZJTklUSU9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1RFUk0sIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQU5OT1RBVElPTlMsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQU5OT1RBVElPTiwgRmllbGRUeXBlLlRBRyksXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgbWV0YWRhdGEsICcgKyBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrVmVyc2lvbihkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgICAvLyBjaGVjayB2ZXJzaW9uXG4gICAgY29uc3QgYXR0cmlidXRlczogTmFtZWROb2RlTWFwID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dHJpYnV0ZXM7XG4gICAgaWYgKCFhdHRyaWJ1dGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09EYXRhIHZlcnNpb24gaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgbWV0YWRhdGEnKTtcbiAgICB9XG4gICAgY29uc3QgYXR0cjogQXR0ciB8IG51bGwgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnVmVyc2lvbicpO1xuICAgIGlmIChhdHRyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09EYXRhIHZlcnNpb24gaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgbWV0YWRhdGEnKTtcbiAgICB9XG4gICAgY29uc3Qgb2RhdGFWZXJzaW9uID0gYXR0cj8ubm9kZVZhbHVlO1xuICAgIGlmIChvZGF0YVZlcnNpb24gIT09IFZFUlNJT05fNF8wKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09EYXRhIHZlcnNpb24gXCInICsgb2RhdGFWZXJzaW9uICsgJ1wiIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T2JqZWN0cyhcbiAgICBwYXJlbnRFbGVtZW50OiBFbGVtZW50LFxuICAgIHRhZzogc3RyaW5nLFxuICAgIGZpZWxkTmFtZXM6IEZpZWxkW11cbiAgKTogYW55W10ge1xuICAgIGxldCBvYmplY3RzOiBhbnlbXSA9IFtdO1xuXG4gICAgY29uc3QgY2hpbGRyZW46IEhUTUxDb2xsZWN0aW9uID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbjtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2hpbGRyZW4ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gY2hpbGRyZW4uaXRlbShpbmRleCk7XG5cbiAgICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50Lm5vZGVOYW1lICE9PSB0YWcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCA9IGVsZW1lbnQuYXR0cmlidXRlcztcbiAgICAgIGNvbnN0IGZpZWxkVmFsdWVzOiBhbnlbXSA9IHRoaXMuZ2V0RmllbGRWYWx1ZXMoXG4gICAgICAgIGZpZWxkTmFtZXMsXG4gICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgIGVsZW1lbnRcbiAgICAgICk7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1JFRkVSRU5DRTpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0lOQ0xVREU6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKG5ldyBDc2RsSW5jbHVkZShmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19JTkNMVURFX0FOTk9UQVRJT05TOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsSW5jbHVkZUFubm90YXRpb25zKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19URVJNOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsVGVybShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzddLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s4XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbOV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT05TOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsQW5ub3RhdGlvbnMoZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdLCBmaWVsZFZhbHVlc1syXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT046XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKG5ldyBDc2RsQW5ub3RhdGlvbihmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19TQ0hFTUE6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxTY2hlbWEoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzZdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s3XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbOF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzldLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzExXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5VTV9UWVBFOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRW51bVR5cGUoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19DT01QTEVYX1RZUEU6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxDb21wbGV4VHlwZShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX1RZUEU6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxFbnRpdHlUeXBlKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s2XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbN11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRnVuY3Rpb24oXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX01FTUJFUjpcbiAgICAgICAgICBvYmplY3RzLnB1c2gobmV3IENzZGxFbnVtTWVtYmVyKGZpZWxkVmFsdWVzWzBdLCBmaWVsZFZhbHVlc1sxXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsUHJvcGVydHkoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzZdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s3XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbOF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZX1JFRjpcbiAgICAgICAgICBvYmplY3RzLnB1c2gobmV3IENzZGxQcm9wZXJ0eVJlZihmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsTmF2aWdhdGlvblByb3BlcnR5KFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s2XVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUkVGRVJFTlRJQUxfQ09OU1RSQUlOVDpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludChmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19QQVJBTUVURVI6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxQYXJhbWV0ZXIoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzZdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BQ1RJT046XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxBY3Rpb24oXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX1NFVDpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbEVudGl0eVNldChcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1NJTkdMRVRPTjpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFNpbmdsZXRvbihmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0sIGZpZWxkVmFsdWVzWzJdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRlVOQ1RJT05fSU1QT1JUOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRnVuY3Rpb25JbXBvcnQoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BQ1RJT05fSU1QT1JUOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsQWN0aW9uSW1wb3J0KGZpZWxkVmFsdWVzWzBdLCBmaWVsZFZhbHVlc1sxXSwgZmllbGRWYWx1ZXNbMl0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkc6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKGZpZWxkVmFsdWVzWzBdLCBmaWVsZFZhbHVlc1sxXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1RZUEVfREVGSU5JVElPTjpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFR5cGVEZWZpbml0aW9uKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s2XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbN11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbndvbiB0YWc6JyArIHRhZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdHM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T2JqZWN0KFxuICAgIHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgdGFnOiBzdHJpbmcsXG4gICAgZmllbGROYW1lczogRmllbGRbXVxuICApOiBhbnkge1xuICAgIGxldCBvYmplY3Q6IGFueTtcblxuICAgIGNvbnN0IGNoaWxkcmVuOiBIVE1MQ29sbGVjdGlvbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG4gICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnQgfCB1bmRlZmluZWQgfCBudWxsO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5pdGVtKGluZGV4KT8ubm9kZU5hbWUgPT09IHRhZykge1xuICAgICAgICBpZiAoZWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG9uZSAnICsgdGFnKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50ID0gY2hpbGRyZW4uaXRlbShpbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzOiBOYW1lZE5vZGVNYXAgPSBlbGVtZW50LmF0dHJpYnV0ZXM7XG4gICAgICBjb25zdCBmaWVsZFZhbHVlczogYW55W10gPSB0aGlzLmdldEZpZWxkVmFsdWVzKFxuICAgICAgICBmaWVsZE5hbWVzLFxuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICBlbGVtZW50XG4gICAgICApO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19LRVk6XG4gICAgICAgICAgb2JqZWN0ID0gbmV3IENzZGxLZXkoZmllbGRWYWx1ZXNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1JFVFVSTl9UWVBFOlxuICAgICAgICAgIG9iamVjdCA9IG5ldyBDc2RsUmV0dXJuVHlwZShcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1s1XVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX0NPTlRBSU5FUjpcbiAgICAgICAgICBvYmplY3QgPSBuZXcgQ3NkbEVudGl0eUNvbnRhaW5lcihcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1s1XVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfT05fREVMRVRFOlxuICAgICAgICAgIG9iamVjdCA9IG5ldyBDc2RsT25EZWxldGUoZmllbGRWYWx1ZXNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbndvbiB0YWc6JyArIHRhZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlcyhcbiAgICBmaWVsZHM6IEZpZWxkW10sXG4gICAgYXR0cmlidXRlczogTmFtZWROb2RlTWFwLFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRcbiAgKTogYW55W10ge1xuICAgIGNvbnN0IGZpZWxkVmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGlmIChmaWVsZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5UQUcpIHtcbiAgICAgICAgZmllbGRWYWx1ZXMucHVzaCh0aGlzLmdldEZpZWxkVmFsdWVCeVRhZyhmaWVsZCwgZWxlbWVudCkpO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5BVFRSSUJVVEUpIHtcbiAgICAgICAgZmllbGRWYWx1ZXMucHVzaCh0aGlzLmdldEZpZWxkVmFsdWVCeUF0dHJpYnV0ZShmaWVsZCwgYXR0cmlidXRlcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZpZWxkIHR5cGU6ICcgKyBmaWVsZC5maWVsZFR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZFZhbHVlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlQnlBdHRyaWJ1dGUoXG4gICAgZmllbGQ6IEZpZWxkLFxuICAgIGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcFxuICApOiBhbnkge1xuICAgIHN3aXRjaCAoZmllbGQubmFtZSkge1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9WRVJTSU9OOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9VUkk6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUVTUEFDRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQUxJQVM6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RFUk1fTkFNRVNQQUNFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9URVJNOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVI6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVF9OQU1FU1BBQ0U6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQ6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0RFRkFVTFRfVkFMVUU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBUlRORVI6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BST1BFUlRZOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9SRUZFUkVOQ0VEX1BST1BFUlRZOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9CQVNFX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVRfUEFUSDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBVEg6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRlVOQ1RJT046XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FDVElPTjpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1NFVDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5ERVJMWUlOR19UWVBFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9FWFRFTkRTOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9CQVNFX1RFUk06XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FQUExJRVNfVE86XG4gICAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZXMsIGZpZWxkLm5hbWUpO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5JQ09ERTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfT1BFTl9UWVBFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9IQVNfU1RSRUFNOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19CT1VORDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQ09NUE9TQUJMRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQ09OVEFJTlNfVEFSR0VUOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JTkNMVURFX0lOX1NFUlZJQ0VfRE9DVU1FTlQ6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FCU1RSQUNUOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19GTEFHUzpcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlWYWx1ZVRvQm9vbGVhbihcbiAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZXMsIGZpZWxkLm5hbWUpXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1ZBTFVFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9NQVhfTEVOR1RIOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QUkVDSVNJT046XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFOlxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eVZhbHVlVG9OdW1iZXIoXG4gICAgICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGVzLCBmaWVsZC5uYW1lKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtud29uIGF0dHJpYnV0ZTonICsgZmllbGQubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWVCeVRhZyhmaWVsZDogRmllbGQsIGVsZW1lbnQ6IEVsZW1lbnQpOiBhbnlbXSB7XG4gICAgc3dpdGNoIChmaWVsZC5uYW1lKSB7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0lOQ0xVREU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FU1BBQ0UsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BTElBUywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19JTkNMVURFX0FOTk9UQVRJT05TOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9URVJNX05BTUVTUEFDRSxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEVcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVF9OQU1FU1BBQ0UsXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFXG4gICAgICAgICAgKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1RFUk06XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0JBU0VfVEVSTSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0RFRkFVTFRfVkFMVUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BUFBMSUVTX1RPLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTlVMTEFCTEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9NQVhfTEVOR1RILCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfUFJFQ0lTSU9OLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfU0NBTEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TUklELCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT05TOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVEFSR0VULCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQU5OT1RBVElPTiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1FVQUxJRklFUiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BTk5PVEFUSU9OOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVEVSTSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1FVQUxJRklFUiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19FTlVNX1RZUEU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfTUVNQkVSLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9VTkRFUkxZSU5HX1RZUEUsXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfRkxBR1MsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfQ09NUExFWF9UWVBFOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfTkFWSUdBVElPTl9QUk9QRVJUWSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0JBU0VfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX09QRU5fVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FCU1RSQUNULCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0VOVElUWV9UWVBFOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0tFWSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfTkFWSUdBVElPTl9QUk9QRVJUWSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0JBU0VfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX09QRU5fVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0hBU19TVFJFQU0sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BQlNUUkFDVCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19GVU5DVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19SRVRVUk5fVFlQRSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0lTX0JPVU5ELCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9FTlRJVFlfU0VUX1BBVEgsXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQ09NUE9TQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1BBUkFNRVRFUiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19NRU1CRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVkFMVUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFk6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05VTExBQkxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5JQ09ERSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9ERUZBVUxUX1ZBTFVFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0tFWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFlfUkVGLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZX1JFRjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BTElBUywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBUlRORVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0NPTlRBSU5TX1RBUkdFVCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEVcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19SRUZFUkVOVElBTF9DT05TVFJBSU5ULCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfT05fREVMRVRFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1JFRkVSRU5USUFMX0NPTlNUUkFJTlQ6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QUk9QRVJUWSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKFxuICAgICAgICAgICAgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfUkVGRVJFTkNFRF9QUk9QRVJUWSxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEVcbiAgICAgICAgICApLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfT05fREVMRVRFOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3QoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BQ1RJT04sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUEFSQU1FVEVSOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX01BWF9MRU5HVEgsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QUkVDSVNJT04sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TQ0FMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUkVUVVJOX1RZUEU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdChlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX01BWF9MRU5HVEgsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QUkVDSVNJT04sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TQ0FMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1JFVFVSTl9UWVBFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQk9VTkQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVRfUEFUSCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEVcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19QQVJBTUVURVIsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX0NPTlRBSU5FUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VYVEVORFMsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfU0VULCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfU0lOR0xFVE9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfRlVOQ1RJT05fSU1QT1JULCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OX0lNUE9SVCwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfU0VUOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkcsXG4gICAgICAgICAgICBGaWVsZFR5cGUuVEFHXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JTkNMVURFX0lOX1NFUlZJQ0VfRE9DVU1FTlQsXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFXG4gICAgICAgICAgKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1NJTkdMRVRPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkcsXG4gICAgICAgICAgICBGaWVsZFR5cGUuVEFHXG4gICAgICAgICAgKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OX0lNUE9SVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9GVU5DVElPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0lOQ0xVREVfSU5fU0VSVklDRV9ET0NVTUVOVCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEVcbiAgICAgICAgICApLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OX0lNUE9SVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BQ1RJT04sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9FTlRJVFlfU0VULCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX05BVklHQVRJT05fUFJPUEVSVFlfQklORElORzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBVEgsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9UQVJHRVQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfVFlQRV9ERUZJTklUSU9OOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKFxuICAgICAgICAgICAgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5ERVJMWUlOR19UWVBFLFxuICAgICAgICAgICAgRmllbGRUeXBlLkFUVFJJQlVURVxuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX01BWF9MRU5HVEgsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QUkVDSVNJT04sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TQ0FMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1VOSUNPREUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TUklELCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQU5OT1RBVElPTiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtud29uIHRhZzonICsgZmllbGQubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCwgYXR0cmlidXRlTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXR0cmlidXRlOiBBdHRyIHwgbnVsbCA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKGF0dHJpYnV0ZU5hbWUpO1xuICAgIHJldHVybiBhdHRyaWJ1dGUgIT09IG51bGwgJiYgYXR0cmlidXRlLm5vZGVWYWx1ZVxuICAgICAgPyBhdHRyaWJ1dGUubm9kZVZhbHVlXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9wZXJ0eVZhbHVlVG9OdW1iZXIoYXR0cmlidXRlVmFsdWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXR0cmlidXRlVmFsdWUgIT09IHVuZGVmaW5lZCA/IE51bWJlcihhdHRyaWJ1dGVWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvcGVydHlWYWx1ZVRvQm9vbGVhbihhdHRyaWJ1dGVWYWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZSAhPT0gdW5kZWZpbmVkID8gYXR0cmlidXRlVmFsdWUgPT09ICd0cnVlJyA6IGZhbHNlO1xuICB9XG59XG4iXX0=
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixRQUFRLEdBQ1QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUNMLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osWUFBWSxFQUNaLHlCQUF5QixHQUMxQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxJQUFLLFNBR0o7QUFIRCxXQUFLLFNBQVM7SUFDWixtREFBUyxDQUFBO0lBQ1QsdUNBQUcsQ0FBQTtBQUNMLENBQUMsRUFISSxTQUFTLEtBQVQsU0FBUyxRQUdiO0FBRUQsTUFBTSxLQUFLO0lBQ1QsWUFDUyxJQUFZLEVBQ1osU0FBb0I7UUFEcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFDMUIsQ0FBQztDQUNMO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsT0FBTzthQUNpQixhQUFRLEdBQUcsV0FBVyxDQUFDO2FBQ3ZCLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDO2FBQ3hDLGtCQUFhLEdBQUcsZ0JBQWdCLENBQUM7YUFDakMsZ0JBQVcsR0FBRyxjQUFjLENBQUM7YUFDN0IsNEJBQXVCLEdBQUcseUJBQXlCLENBQUM7YUFDcEQsYUFBUSxHQUFHLE1BQU0sQ0FBQzthQUNsQixvQkFBZSxHQUFHLGFBQWEsQ0FBQzthQUNoQyxtQkFBYyxHQUFHLFlBQVksQ0FBQzthQUM5QixlQUFVLEdBQUcsUUFBUSxDQUFDO2FBQ3RCLGtCQUFhLEdBQUcsVUFBVSxDQUFDO2FBQzNCLGVBQVUsR0FBRyxRQUFRLENBQUM7YUFDdEIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO2FBQ2pDLG9CQUFlLEdBQUcsWUFBWSxDQUFDO2FBQy9CLGlCQUFZLEdBQUcsVUFBVSxDQUFDO2FBQzFCLFlBQU8sR0FBRyxLQUFLLENBQUM7YUFDaEIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO2FBQ2pDLDRCQUF1QixHQUFHLG9CQUFvQixDQUFDO2FBQy9DLCtCQUEwQixHQUFHLHVCQUF1QixDQUFDO2FBQ3JELGtCQUFhLEdBQUcsVUFBVSxDQUFDO2FBQzNCLGlCQUFZLEdBQUcsVUFBVSxDQUFDO2FBQzFCLG9CQUFlLEdBQUcsWUFBWSxDQUFDO2FBQy9CLGtCQUFhLEdBQUcsV0FBVyxDQUFDO2FBQzVCLGVBQVUsR0FBRyxRQUFRLENBQUM7YUFDdEIseUJBQW9CLEdBQUcsaUJBQWlCLENBQUM7YUFDekMsbUJBQWMsR0FBRyxXQUFXLENBQUM7YUFDN0Isa0JBQWEsR0FBRyxXQUFXLENBQUM7YUFDNUIsd0JBQW1CLEdBQUcsZ0JBQWdCLENBQUM7YUFDdkMsc0JBQWlCLEdBQUcsY0FBYyxDQUFDO2FBQ25DLG9DQUErQixHQUNyRCwyQkFBMkIsQ0FBQzthQUNOLHdCQUFtQixHQUFHLGdCQUFnQixDQUFDO0lBRS9ELGFBQWE7YUFDVyxzQkFBaUIsR0FBRyxTQUFTLENBQUM7YUFDOUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7YUFDdEIsb0JBQWUsR0FBRyxPQUFPLENBQUM7YUFDMUIsd0JBQW1CLEdBQUcsV0FBVyxDQUFDO2FBQ2xDLDZCQUF3QixHQUFHLGVBQWUsQ0FBQzthQUMzQyx3QkFBbUIsR0FBRyxXQUFXLENBQUM7YUFDbEMsK0JBQTBCLEdBQUcsaUJBQWlCLENBQUM7YUFDL0MsbUJBQWMsR0FBRyxNQUFNLENBQUM7YUFDeEIsbUJBQWMsR0FBRyxNQUFNLENBQUM7YUFDeEIsb0JBQWUsR0FBRyxPQUFPLENBQUM7YUFDMUIsd0JBQW1CLEdBQUcsVUFBVSxDQUFDO2FBQ2pDLHdCQUFtQixHQUFHLFVBQVUsQ0FBQzthQUNqQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQzthQUN4Qix1QkFBa0IsR0FBRyxVQUFVLENBQUM7YUFDaEMseUJBQW9CLEdBQUcsV0FBVyxDQUFDO2FBQ25DLHdCQUFtQixHQUFHLFdBQVcsQ0FBQzthQUNsQyxvQkFBZSxHQUFHLE9BQU8sQ0FBQzthQUMxQixzQkFBaUIsR0FBRyxTQUFTLENBQUM7YUFDOUIsbUJBQWMsR0FBRyxNQUFNLENBQUM7YUFDeEIsNEJBQXVCLEdBQUcsY0FBYyxDQUFDO2FBQ3pDLHNCQUFpQixHQUFHLFNBQVMsQ0FBQzthQUM5Qix1QkFBa0IsR0FBRyxVQUFVLENBQUM7YUFDaEMsa0NBQTZCLEdBQUcsb0JBQW9CLENBQUM7YUFDckQseUJBQW9CLEdBQUcsV0FBVyxDQUFDO2FBQ25DLDhCQUF5QixHQUFHLGdCQUFnQixDQUFDO2FBQzdDLHVCQUFrQixHQUFHLFNBQVMsQ0FBQzthQUMvQiw4QkFBeUIsR0FBRyxlQUFlLENBQUM7YUFDNUMsNEJBQXVCLEdBQUcsY0FBYyxDQUFDO2FBQ3pDLDBCQUFxQixHQUFHLFlBQVksQ0FBQzthQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQzthQUN4QixxQkFBZ0IsR0FBRyxRQUFRLENBQUM7YUFDNUIsdUJBQWtCLEdBQUcsVUFBVSxDQUFDO2FBQ2hDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQzthQUM1Qix5QkFBb0IsR0FBRyxXQUFXLENBQUM7YUFDbkMsMENBQXFDLEdBQzNELDBCQUEwQixDQUFDO2FBQ0wsdUJBQWtCLEdBQUcsVUFBVSxDQUFDO2FBQ2hDLDhCQUF5QixHQUFHLGdCQUFnQixDQUFDO2FBQzdDLHVCQUFrQixHQUFHLFNBQVMsQ0FBQzthQUMvQixzQkFBaUIsR0FBRyxTQUFTLENBQUM7YUFDOUIsd0JBQW1CLEdBQUcsVUFBVSxDQUFDO2FBQ2pDLHlCQUFvQixHQUFHLFdBQVcsQ0FBQztJQU0zRCxZQUFZLEdBQVc7UUFDckIsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQWEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDL0QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQ3BDLENBQUM7WUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQy9CLFFBQVEsQ0FBQyxlQUFlLEVBQ3hCLGFBQWEsQ0FBQyxhQUFhLEVBQzNCO2dCQUNFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDM0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDL0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2FBQ3ZELENBQ0YsQ0FBQztZQUVGLE1BQU0sWUFBWSxHQUNoQixRQUFRLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUMzQyxhQUFhLENBQUMsaUJBQWlCLENBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO2dCQUNqRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0JBQzdELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDckQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQ3hELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDdkQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUNwRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDM0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQzthQUN2RCxDQUFDLENBQUM7U0FDSjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFUyxZQUFZLENBQUMsUUFBa0I7UUFDdkMsZ0JBQWdCO1FBQ2hCLE1BQU0sVUFBVSxHQUFpQixRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUNyRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsTUFBTSxJQUFJLEdBQWdCLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNuRTtRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxTQUFTLENBQUM7UUFDckMsSUFBSSxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxHQUFHLG9CQUFvQixDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDO0lBRVMsVUFBVSxDQUNsQixhQUFzQixFQUN0QixHQUFXLEVBQ1gsVUFBbUI7UUFFbkIsSUFBSSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRXhCLE1BQU0sUUFBUSxHQUFtQixhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3hELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRTtnQkFDeEMsU0FBUzthQUNWO1lBRUQsTUFBTSxVQUFVLEdBQWlCLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQVUsSUFBSSxDQUFDLGNBQWMsQ0FDNUMsVUFBVSxFQUNWLFVBQVUsRUFDVixPQUFPLENBQ1IsQ0FBQztZQUNGLFFBQVEsR0FBRyxFQUFFO2dCQUNYLEtBQUssYUFBYSxDQUFDLGFBQWE7b0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxhQUFhLENBQ2YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLFdBQVc7b0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlELE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsdUJBQXVCO29CQUN4QyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksc0JBQXNCLENBQ3hCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLFFBQVE7b0JBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxRQUFRLENBQ1YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGVBQWU7b0JBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEUsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGNBQWM7b0JBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pFLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsVUFBVTtvQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLFVBQVUsQ0FDWixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUNmLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FDaEIsQ0FDRixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsYUFBYTtvQkFDOUIsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLFlBQVksQ0FDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FDRixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsZ0JBQWdCO29CQUNqQyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksZUFBZSxDQUNqQixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxlQUFlO29CQUNoQyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksY0FBYyxDQUNoQixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLFlBQVk7b0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxZQUFZLENBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FDRixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsVUFBVTtvQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakUsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxZQUFZO29CQUM3QixPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksWUFBWSxDQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGdCQUFnQjtvQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEUsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyx1QkFBdUI7b0JBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxzQkFBc0IsQ0FDeEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLDBCQUEwQjtvQkFDM0MsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGFBQWE7b0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxhQUFhLENBQ2YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLFVBQVU7b0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxVQUFVLENBQ1osV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxjQUFjO29CQUMvQixPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksYUFBYSxDQUNmLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxhQUFhO29CQUM5QixPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxtQkFBbUI7b0JBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxrQkFBa0IsQ0FDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGlCQUFpQjtvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLGdCQUFnQixDQUNsQixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQywrQkFBK0I7b0JBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSw2QkFBNkIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxtQkFBbUI7b0JBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxrQkFBa0IsQ0FDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7b0JBQ0YsTUFBTTtnQkFDUjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVTLFNBQVMsQ0FDakIsYUFBc0IsRUFDdEIsR0FBVyxFQUNYLFVBQW1CO1FBRW5CLElBQUksTUFBVyxDQUFDO1FBRWhCLE1BQU0sUUFBUSxHQUFtQixhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3hELElBQUksT0FBbUMsQ0FBQztRQUN4QyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3RELElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO29CQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQztpQkFDeEM7Z0JBQ0QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7U0FDRjtRQUVELElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQzdDLE1BQU0sVUFBVSxHQUFpQixPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3BELE1BQU0sV0FBVyxHQUFVLElBQUksQ0FBQyxjQUFjLENBQzVDLFVBQVUsRUFDVixVQUFVLEVBQ1YsT0FBTyxDQUNSLENBQUM7WUFDRixRQUFRLEdBQUcsRUFBRTtnQkFDWCxLQUFLLGFBQWEsQ0FBQyxPQUFPO29CQUN4QixNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsZUFBZTtvQkFDaEMsTUFBTSxHQUFHLElBQUksY0FBYyxDQUN6QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO29CQUNGLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsb0JBQW9CO29CQUNyQyxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FDOUIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGFBQWE7b0JBQzlCLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLGNBQWMsQ0FDdEIsTUFBZSxFQUNmLFVBQXdCLEVBQ3hCLE9BQWdCO1FBRWhCLE1BQU0sV0FBVyxHQUFVLEVBQUUsQ0FBQztRQUU5QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUMxQixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDckMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDM0Q7aUJBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNEO1NBQ0Y7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRVMsd0JBQXdCLENBQ2hDLEtBQVksRUFDWixVQUF3QjtRQUV4QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDckMsS0FBSyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ2pDLEtBQUssYUFBYSxDQUFDLG1CQUFtQixDQUFDO1lBQ3ZDLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQztZQUNuQyxLQUFLLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQztZQUM1QyxLQUFLLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDbEMsS0FBSyxhQUFhLENBQUMsbUJBQW1CLENBQUM7WUFDdkMsS0FBSyxhQUFhLENBQUMsMEJBQTBCLENBQUM7WUFDOUMsS0FBSyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQ2xDLEtBQUssYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUNsQyxLQUFLLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDbEMsS0FBSyxhQUFhLENBQUMsdUJBQXVCLENBQUM7WUFDM0MsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDckMsS0FBSyxhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsS0FBSyxhQUFhLENBQUMsNkJBQTZCLENBQUM7WUFDakQsS0FBSyxhQUFhLENBQUMsbUJBQW1CLENBQUM7WUFDdkMsS0FBSyxhQUFhLENBQUMseUJBQXlCLENBQUM7WUFDN0MsS0FBSyxhQUFhLENBQUMscUJBQXFCLENBQUM7WUFDekMsS0FBSyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQ2xDLEtBQUssYUFBYSxDQUFDLGdCQUFnQixDQUFDO1lBQ3BDLEtBQUssYUFBYSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RDLEtBQUssYUFBYSxDQUFDLGdCQUFnQixDQUFDO1lBQ3BDLEtBQUssYUFBYSxDQUFDLG9CQUFvQixDQUFDO1lBQ3hDLEtBQUssYUFBYSxDQUFDLHlCQUF5QixDQUFDO1lBQzdDLEtBQUssYUFBYSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLEtBQUssYUFBYSxDQUFDLG1CQUFtQixDQUFDO1lBQ3ZDLEtBQUssYUFBYSxDQUFDLG9CQUFvQjtnQkFDckMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxLQUFLLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztZQUN0QyxLQUFLLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztZQUNyQyxLQUFLLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxLQUFLLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztZQUN4QyxLQUFLLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztZQUN0QyxLQUFLLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQztZQUMzQyxLQUFLLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQztZQUM3QyxLQUFLLGFBQWEsQ0FBQyxxQ0FBcUMsQ0FBQztZQUN6RCxLQUFLLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztZQUN0QyxLQUFLLGFBQWEsQ0FBQyxrQkFBa0I7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDL0MsQ0FBQztZQUNKLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQztZQUNuQyxLQUFLLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztZQUN4QyxLQUFLLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxLQUFLLGFBQWEsQ0FBQyxlQUFlO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQy9DLENBQUM7WUFDSjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsT0FBZ0I7UUFDekQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssYUFBYSxDQUFDLFdBQVc7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztpQkFDOUQsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsdUJBQXVCO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzFDLElBQUksS0FBSyxDQUNQLGFBQWEsQ0FBQyx3QkFBd0IsRUFDdEMsU0FBUyxDQUFDLFNBQVMsQ0FDcEI7b0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUNQLGFBQWEsQ0FBQywwQkFBMEIsRUFDeEMsU0FBUyxDQUFDLFNBQVMsQ0FDcEI7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNyRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2hFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNsRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDakUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM3RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQzdELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGVBQWU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzlELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDdEQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQ2xFLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztpQkFDbEUsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsYUFBYTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDbEQsSUFBSSxLQUFLLENBQ1AsYUFBYSxDQUFDLHlCQUF5QixFQUN2QyxTQUFTLENBQUMsU0FBUyxDQUNwQjtvQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztpQkFDakUsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsZ0JBQWdCO2dCQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNwRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDL0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNqRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztpQkFDakUsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsZUFBZTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDL0MsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNwRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDL0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNqRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQ2pFLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLFlBQVk7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQ3ZELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FDUCxhQUFhLENBQUMseUJBQXlCLEVBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQ3BCO29CQUNELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNyRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQ3RELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLFVBQVU7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQzlELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLFlBQVk7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDN0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQy9ELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQ3RFLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDekMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQ3pELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGdCQUFnQjtnQkFDakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztpQkFDOUQsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsdUJBQXVCO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQy9ELElBQUksS0FBSyxDQUNQLGFBQWEsQ0FBQyx5QkFBeUIsRUFDdkMsU0FBUyxDQUFDLFNBQVMsQ0FDcEI7b0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLDBCQUEwQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQ2xFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztpQkFDdEQsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsMEJBQTBCO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FDUCxhQUFhLENBQUMsNkJBQTZCLEVBQzNDLFNBQVMsQ0FBQyxTQUFTLENBQ3BCO2lCQUNGLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGFBQWE7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDekMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQy9ELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGFBQWE7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDN0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO2lCQUM3RCxDQUFDLENBQUM7WUFDTCxLQUFLLGFBQWEsQ0FBQyxlQUFlO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ3pDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ2hFLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNsRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDakUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM3RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQzdELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLFVBQVU7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQ3ZELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FDUCxhQUFhLENBQUMseUJBQXlCLEVBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQ3BCO29CQUNELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztpQkFDdEQsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsb0JBQW9CO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ3pDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQy9ELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDdEQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNyRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDM0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQzFELENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbkUsSUFBSSxLQUFLLENBQ1AsYUFBYSxDQUFDLCtCQUErQixFQUM3QyxTQUFTLENBQUMsR0FBRyxDQUNkO29CQUNELElBQUksS0FBSyxDQUNQLGFBQWEsQ0FBQyxxQ0FBcUMsRUFDbkQsU0FBUyxDQUFDLFNBQVMsQ0FDcEI7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxhQUFhLENBQUMsYUFBYTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDNUQsSUFBSSxLQUFLLENBQ1AsYUFBYSxDQUFDLCtCQUErQixFQUM3QyxTQUFTLENBQUMsR0FBRyxDQUNkO2lCQUNGLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLG1CQUFtQjtnQkFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNoRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDbEUsSUFBSSxLQUFLLENBQ1AsYUFBYSxDQUFDLHFDQUFxQyxFQUNuRCxTQUFTLENBQUMsU0FBUyxDQUNwQjtpQkFDRixDQUFDLENBQUM7WUFDTCxLQUFLLGFBQWEsQ0FBQyxpQkFBaUI7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDOUQsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQ25FLENBQUMsQ0FBQztZQUNMLEtBQUssYUFBYSxDQUFDLCtCQUErQjtnQkFDaEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQzVELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO2lCQUMvRCxDQUFDLENBQUM7WUFDTCxLQUFLLGFBQWEsQ0FBQyxtQkFBbUI7Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDMUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FDUCxhQUFhLENBQUMseUJBQXlCLEVBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQ3BCO29CQUNELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUNsRSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDakUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM3RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDL0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUM1RCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQ3ZELENBQUMsQ0FBQztZQUNMO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxVQUF3QixFQUFFLGFBQXFCO1FBQ3pFLE1BQU0sU0FBUyxHQUFnQixVQUFVLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsU0FBUztZQUM5QyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFDckIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDO0lBRVMscUJBQXFCLENBQUMsY0FBdUI7UUFDckQsT0FBTyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzRSxDQUFDO0lBRVMsc0JBQXNCLENBQUMsY0FBdUI7UUFDdEQsT0FBTyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENzZGxBY3Rpb24sXG4gIENzZGxBY3Rpb25JbXBvcnQsXG4gIENzZGxGdW5jdGlvbixcbiAgQ3NkbEZ1bmN0aW9uSW1wb3J0LFxuICBDc2RsUGFyYW1ldGVyLFxuICBDc2RsUmV0dXJuVHlwZSxcbn0gZnJvbSAnLi9jc2RsL2NzZGwtZnVuY3Rpb24tYWN0aW9uJztcbmltcG9ydCB7XG4gIENzZGxBbm5vdGF0aW9uLFxuICBDc2RsQW5ub3RhdGlvbnMsXG4gIENzZGxUZXJtLFxufSBmcm9tICcuL2NzZGwvY3NkbC1hbm5vdGF0aW9uJztcbmltcG9ydCB7XG4gIENzZGxDb21wbGV4VHlwZSxcbiAgQ3NkbEVudGl0eVR5cGUsXG4gIENzZGxLZXksXG4gIENzZGxQcm9wZXJ0eVJlZixcbn0gZnJvbSAnLi9jc2RsL2NzZGwtc3RydWN0dXJlZC10eXBlJztcbmltcG9ydCB7IENzZGxFbnVtTWVtYmVyLCBDc2RsRW51bVR5cGUgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnVtLXR5cGUnO1xuaW1wb3J0IHtcbiAgQ3NkbEluY2x1ZGUsXG4gIENzZGxJbmNsdWRlQW5ub3RhdGlvbnMsXG4gIENzZGxSZWZlcmVuY2UsXG59IGZyb20gJy4vY3NkbC9jc2RsLXJlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBDc2RsTmF2aWdhdGlvblByb3BlcnR5LFxuICBDc2RsT25EZWxldGUsXG4gIENzZGxQcm9wZXJ0eSxcbiAgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludCxcbn0gZnJvbSAnLi9jc2RsL2NzZGwtc3RydWN0dXJhbC1wcm9wZXJ0eSc7XG5cbmltcG9ydCB7IENzZGxFbnRpdHlDb250YWluZXIgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnRpdHktY29udGFpbmVyJztcbmltcG9ydCB7IENzZGxFbnRpdHlTZXQgfSBmcm9tICcuL2NzZGwvY3NkbC1lbnRpdHktc2V0JztcbmltcG9ydCB7IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIH0gZnJvbSAnLi9jc2RsL2NzZGwtbmF2aWdhdGlvbi1wcm9wZXJ0eS1iaW5kaW5nJztcbmltcG9ydCB7IENzZGxTY2hlbWEgfSBmcm9tICcuL2NzZGwvY3NkbC1zY2hlbWEnO1xuaW1wb3J0IHsgQ3NkbFNpbmdsZXRvbiB9IGZyb20gJy4vY3NkbC9jc2RsLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBDc2RsVHlwZURlZmluaXRpb24gfSBmcm9tICcuL2NzZGwvY3NkbC10eXBlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgVkVSU0lPTl80XzAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5lbnVtIEZpZWxkVHlwZSB7XG4gIEFUVFJJQlVURSxcbiAgVEFHLFxufVxuXG5jbGFzcyBGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGZpZWxkVHlwZTogRmllbGRUeXBlLFxuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YU1ldGFkYXRhIHtcbiAgLy8gVEFHU1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRURNWCA9ICdlZG14OkVkbXgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfREFUQV9TRVJWSUNFUyA9ICdlZG14OkRhdGFTZXJ2aWNlcyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19SRUZFUkVOQ0UgPSAnZWRteDpSZWZlcmVuY2UnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfSU5DTFVERSA9ICdlZG14OkluY2x1ZGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfSU5DTFVERV9BTk5PVEFUSU9OUyA9ICdlZG14OkluY2x1ZGVBbm5vdGF0aW9ucyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19URVJNID0gJ1Rlcm0nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfQU5OT1RBVElPTlMgPSAnQW5ub3RhdGlvbnMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfQU5OT1RBVElPTiA9ICdBbm5vdGF0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1NDSEVNQSA9ICdTY2hlbWEnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRU5VTV9UWVBFID0gJ0VudW1UeXBlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX01FTUJFUiA9ICdNZW1iZXInO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfQ09NUExFWF9UWVBFID0gJ0NvbXBsZXhUeXBlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0VOVElUWV9UWVBFID0gJ0VudGl0eVR5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfUFJPUEVSVFkgPSAnUHJvcGVydHknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfS0VZID0gJ0tleSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19QUk9QRVJUWV9SRUYgPSAnUHJvcGVydHlSZWYnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfTkFWSUdBVElPTl9QUk9QRVJUWSA9ICdOYXZpZ2F0aW9uUHJvcGVydHknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfUkVGRVJFTlRJQUxfQ09OU1RSQUlOVCA9ICdSZWZlcmVudGlhbENvbnN0cmFpbnQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfT05fREVMRVRFID0gJ09uRGVsZXRlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0ZVTkNUSU9OID0gJ0Z1bmN0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1JFVFVSTl9UWVBFID0gJ1JldHVyblR5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfUEFSQU1FVEVSID0gJ1BhcmFtZXRlcic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFRBR19BQ1RJT04gPSAnQWN0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0VOVElUWV9DT05UQUlORVIgPSAnRW50aXR5Q29udGFpbmVyJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0VOVElUWV9TRVQgPSAnRW50aXR5U2V0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX1NJTkdMRVRPTiA9ICdTaW5nbGV0b24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfRlVOQ1RJT05fSU1QT1JUID0gJ0Z1bmN0aW9uSW1wb3J0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX0FDVElPTl9JTVBPUlQgPSAnQWN0aW9uSW1wb3J0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVEFHX05BVklHQVRJT05fUFJPUEVSVFlfQklORElORyA9XG4gICAgJ05hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUQUdfVFlQRV9ERUZJTklUSU9OID0gJ1R5cGVEZWZpbml0aW9uJztcblxuICAvLyBBVFRSSUJVVEVTXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9WRVJTSU9OID0gJ1ZlcnNpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVVJJID0gJ1VyaSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9BTElBUyA9ICdBbGlhcyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9OQU1FU1BBQ0UgPSAnTmFtZXNwYWNlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1RFUk1fTkFNRVNQQUNFID0gJ1Rlcm1OYW1lc3BhY2UnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfUVVBTElGSUVSID0gJ1F1YWxpZmllcic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9UQVJHRVRfTkFNRVNQQUNFID0gJ1RhcmdldE5hbWVzcGFjZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9URVJNID0gJ1Rlcm0nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfTkFNRSA9ICdOYW1lJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1ZBTFVFID0gJ1ZhbHVlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0JBU0VfVFlQRSA9ICdCYXNlVHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9PUEVOX1RZUEUgPSAnT3BlblR5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVFlQRSA9ICdUeXBlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX05VTExBQkxFID0gJ051bGxhYmxlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX01BWF9MRU5HVEggPSAnTWF4TGVuZ3RoJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1BSRUNJU0lPTiA9ICdQcmVjaXNpb24nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfU0NBTEUgPSAnU2NhbGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVU5JQ09ERSA9ICdVbmljb2RlJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX1NSSUQgPSAnU1JJRCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9ERUZBVUxUX1ZBTFVFID0gJ0RlZmF1bHRWYWx1ZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9QQVJUTkVSID0gJ1BhcnRuZXInO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfUFJPUEVSVFkgPSAnUHJvcGVydHknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfUkVGRVJFTkNFRF9QUk9QRVJUWSA9ICdSZWZlcmVuY2VkUHJvcGVydHknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfSEFTX1NUUkVBTSA9ICdIYXNTdHJlYW0nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfQ09OVEFJTlNfVEFSR0VUID0gJ0NvbnRhaW5zVGFyZ2V0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0lTX0JPVU5EID0gJ0lzQm91bmQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfRU5USVRZX1NFVF9QQVRIID0gJ0VudGl0eVNldFBhdGgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfSVNfQ09NUE9TQUJMRSA9ICdJc0NvbXBvc2FibGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfRU5USVRZX1RZUEUgPSAnRW50aXR5VHlwZSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9QQVRIID0gJ1BhdGgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfVEFSR0VUID0gJ1RhcmdldCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9GVU5DVElPTiA9ICdGdW5jdGlvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9BQ1RJT04gPSAnQWN0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0VOVElUWV9TRVQgPSAnRW50aXR5U2V0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0lOQ0xVREVfSU5fU0VSVklDRV9ET0NVTUVOVCA9XG4gICAgJ0luY2x1ZGVJblNlcnZpY2VEb2N1bWVudCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9BQlNUUkFDVCA9ICdBYnN0cmFjdCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9VTkRFUkxZSU5HX1RZUEUgPSAnVW5kZXJseWluZ1R5cGUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfSVNfRkxBR1MgPSAnSXNGbGFncyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFUVFJJQlVURV9FWFRFTkRTID0gJ0V4dGVuZHMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVFRSSUJVVEVfQkFTRV9URVJNID0gJ0Jhc2VUZXJtJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVRUUklCVVRFX0FQUExJRVNfVE8gPSAnQXBwbGllc1RvJztcblxuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVmZXJlbmNlczogQ3NkbFJlZmVyZW5jZVtdO1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hczogQ3NkbFNjaGVtYVtdO1xuXG4gIGNvbnN0cnVjdG9yKHhtbDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlcjogRE9NUGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgY29uc3QgZG9jdW1lbnQ6IERvY3VtZW50ID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh4bWwsICd0ZXh0L3htbCcpO1xuXG4gICAgICB0aGlzLmNoZWNrVmVyc2lvbihkb2N1bWVudCk7XG5cbiAgICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuZ2V0RmllbGRWYWx1ZUJ5QXR0cmlidXRlKFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVkVSU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRyaWJ1dGVzLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZWZlcmVuY2VzID0gdGhpcy5nZXRPYmplY3RzKFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIE9EYXRhTWV0YWRhdGEuVEFHX1JFRkVSRU5DRSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9VUkksIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19JTkNMVURFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfSU5DTFVERV9BTk5PVEFUSU9OUywgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT04sIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBdLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YVNlcnZpY2VzOiBFbGVtZW50ID1cbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFxuICAgICAgICAgIE9EYXRhTWV0YWRhdGEuVEFHX0RBVEFfU0VSVklDRVMsXG4gICAgICAgIClbMF07XG4gICAgICB0aGlzLnNjaGVtYXMgPSB0aGlzLmdldE9iamVjdHMoZGF0YVNlcnZpY2VzLCBPRGF0YU1ldGFkYXRhLlRBR19TQ0hFTUEsIFtcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUVTUEFDRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BTElBUywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19FTlVNX1RZUEUsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQ09NUExFWF9UWVBFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0VOVElUWV9UWVBFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0FDVElPTiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfQ09OVEFJTkVSLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1RZUEVfREVGSU5JVElPTiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19URVJNLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT05TLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT04sIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgXSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHBhcnNlIG1ldGFkYXRhLCAnICsgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1ZlcnNpb24oZG9jdW1lbnQ6IERvY3VtZW50KSB7XG4gICAgLy8gY2hlY2sgdmVyc2lvblxuICAgIGNvbnN0IGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgIGlmICghYXR0cmlidXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPRGF0YSB2ZXJzaW9uIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIG1ldGFkYXRhJyk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHI6IEF0dHIgfCBudWxsID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ1ZlcnNpb24nKTtcbiAgICBpZiAoYXR0ciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPRGF0YSB2ZXJzaW9uIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIG1ldGFkYXRhJyk7XG4gICAgfVxuICAgIGNvbnN0IG9kYXRhVmVyc2lvbiA9IGF0dHI/Lm5vZGVWYWx1ZTtcbiAgICBpZiAob2RhdGFWZXJzaW9uICE9PSBWRVJTSU9OXzRfMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPRGF0YSB2ZXJzaW9uIFwiJyArIG9kYXRhVmVyc2lvbiArICdcIiBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9iamVjdHMoXG4gICAgcGFyZW50RWxlbWVudDogRWxlbWVudCxcbiAgICB0YWc6IHN0cmluZyxcbiAgICBmaWVsZE5hbWVzOiBGaWVsZFtdLFxuICApOiBhbnlbXSB7XG4gICAgbGV0IG9iamVjdHM6IGFueVtdID0gW107XG5cbiAgICBjb25zdCBjaGlsZHJlbjogSFRNTENvbGxlY3Rpb24gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBjaGlsZHJlbi5pdGVtKGluZGV4KTtcblxuICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQubm9kZU5hbWUgIT09IHRhZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXR0cmlidXRlczogTmFtZWROb2RlTWFwID0gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgICAgY29uc3QgZmllbGRWYWx1ZXM6IGFueVtdID0gdGhpcy5nZXRGaWVsZFZhbHVlcyhcbiAgICAgICAgZmllbGROYW1lcyxcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICk7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1JFRkVSRU5DRTpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfSU5DTFVERTpcbiAgICAgICAgICBvYmplY3RzLnB1c2gobmV3IENzZGxJbmNsdWRlKGZpZWxkVmFsdWVzWzBdLCBmaWVsZFZhbHVlc1sxXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0lOQ0xVREVfQU5OT1RBVElPTlM6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxJbmNsdWRlQW5ub3RhdGlvbnMoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfVEVSTTpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFRlcm0oXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzZdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s3XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbOF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzldLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT05TOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsQW5ub3RhdGlvbnMoZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdLCBmaWVsZFZhbHVlc1syXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BTk5PVEFUSU9OOlxuICAgICAgICAgIG9iamVjdHMucHVzaChuZXcgQ3NkbEFubm90YXRpb24oZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfU0NIRU1BOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsU2NoZW1hKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s2XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbN10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzhdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s5XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMTBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxMV0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5VTV9UWVBFOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRW51bVR5cGUoXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0NPTVBMRVhfVFlQRTpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbENvbXBsZXhUeXBlKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0VOVElUWV9UWVBFOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRW50aXR5VHlwZShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzddLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRnVuY3Rpb24oXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNV0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfTUVNQkVSOlxuICAgICAgICAgIG9iamVjdHMucHVzaChuZXcgQ3NkbEVudW1NZW1iZXIoZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFk6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxQcm9wZXJ0eShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzddLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s4XSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19QUk9QRVJUWV9SRUY6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKG5ldyBDc2RsUHJvcGVydHlSZWYoZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfTkFWSUdBVElPTl9QUk9QRVJUWTpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbE5hdmlnYXRpb25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNl0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUkVGRVJFTlRJQUxfQ09OU1RSQUlOVDpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludChmaWVsZFZhbHVlc1swXSwgZmllbGRWYWx1ZXNbMV0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUEFSQU1FVEVSOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsUGFyYW1ldGVyKFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s2XSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BQ1RJT046XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxBY3Rpb24oXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfU0VUOlxuICAgICAgICAgIG9iamVjdHMucHVzaChcbiAgICAgICAgICAgIG5ldyBDc2RsRW50aXR5U2V0KFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1swXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1szXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19TSU5HTEVUT046XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxTaW5nbGV0b24oZmllbGRWYWx1ZXNbMF0sIGZpZWxkVmFsdWVzWzFdLCBmaWVsZFZhbHVlc1syXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19GVU5DVElPTl9JTVBPUlQ6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxGdW5jdGlvbkltcG9ydChcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OX0lNUE9SVDpcbiAgICAgICAgICBvYmplY3RzLnB1c2goXG4gICAgICAgICAgICBuZXcgQ3NkbEFjdGlvbkltcG9ydChcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkc6XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKGZpZWxkVmFsdWVzWzBdLCBmaWVsZFZhbHVlc1sxXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19UWVBFX0RFRklOSVRJT046XG4gICAgICAgICAgb2JqZWN0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IENzZGxUeXBlRGVmaW5pdGlvbihcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzFdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzRdLFxuICAgICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICAgICAgZmllbGRWYWx1ZXNbNl0sXG4gICAgICAgICAgICAgIGZpZWxkVmFsdWVzWzddLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbndvbiB0YWc6JyArIHRhZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdHM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T2JqZWN0KFxuICAgIHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgdGFnOiBzdHJpbmcsXG4gICAgZmllbGROYW1lczogRmllbGRbXSxcbiAgKTogYW55IHtcbiAgICBsZXQgb2JqZWN0OiBhbnk7XG5cbiAgICBjb25zdCBjaGlsZHJlbjogSFRNTENvbGxlY3Rpb24gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCBlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2hpbGRyZW4ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uaXRlbShpbmRleCk/Lm5vZGVOYW1lID09PSB0YWcpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBvbmUgJyArIHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudCA9IGNoaWxkcmVuLml0ZW0oaW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgYXR0cmlidXRlczogTmFtZWROb2RlTWFwID0gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgICAgY29uc3QgZmllbGRWYWx1ZXM6IGFueVtdID0gdGhpcy5nZXRGaWVsZFZhbHVlcyhcbiAgICAgICAgZmllbGROYW1lcyxcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICk7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0tFWTpcbiAgICAgICAgICBvYmplY3QgPSBuZXcgQ3NkbEtleShmaWVsZFZhbHVlc1swXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUkVUVVJOX1RZUEU6XG4gICAgICAgICAgb2JqZWN0ID0gbmV3IENzZGxSZXR1cm5UeXBlKFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbMF0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1sxXSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzJdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbM10sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1s0XSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzVdLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX0NPTlRBSU5FUjpcbiAgICAgICAgICBvYmplY3QgPSBuZXcgQ3NkbEVudGl0eUNvbnRhaW5lcihcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzBdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbMV0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1syXSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWVzWzNdLFxuICAgICAgICAgICAgZmllbGRWYWx1ZXNbNF0sXG4gICAgICAgICAgICBmaWVsZFZhbHVlc1s1XSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX09OX0RFTEVURTpcbiAgICAgICAgICBvYmplY3QgPSBuZXcgQ3NkbE9uRGVsZXRlKGZpZWxkVmFsdWVzWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua253b24gdGFnOicgKyB0YWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZXMoXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICAgIGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCxcbiAgICBlbGVtZW50OiBFbGVtZW50LFxuICApOiBhbnlbXSB7XG4gICAgY29uc3QgZmllbGRWYWx1ZXM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlRBRykge1xuICAgICAgICBmaWVsZFZhbHVlcy5wdXNoKHRoaXMuZ2V0RmllbGRWYWx1ZUJ5VGFnKGZpZWxkLCBlbGVtZW50KSk7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkFUVFJJQlVURSkge1xuICAgICAgICBmaWVsZFZhbHVlcy5wdXNoKHRoaXMuZ2V0RmllbGRWYWx1ZUJ5QXR0cmlidXRlKGZpZWxkLCBhdHRyaWJ1dGVzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZmllbGQgdHlwZTogJyArIGZpZWxkLmZpZWxkVHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkVmFsdWVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWVCeUF0dHJpYnV0ZShcbiAgICBmaWVsZDogRmllbGQsXG4gICAgYXR0cmlidXRlczogTmFtZWROb2RlTWFwLFxuICApOiBhbnkge1xuICAgIHN3aXRjaCAoZmllbGQubmFtZSkge1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9WRVJTSU9OOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9VUkk6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUVTUEFDRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQUxJQVM6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RFUk1fTkFNRVNQQUNFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9URVJNOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVI6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVF9OQU1FU1BBQ0U6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQ6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0RFRkFVTFRfVkFMVUU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBUlRORVI6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BST1BFUlRZOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9SRUZFUkVOQ0VEX1BST1BFUlRZOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9CQVNFX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVRfUEFUSDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1RZUEU6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBVEg6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRlVOQ1RJT046XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FDVElPTjpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1NFVDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5ERVJMWUlOR19UWVBFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9FWFRFTkRTOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9CQVNFX1RFUk06XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FQUExJRVNfVE86XG4gICAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZXMsIGZpZWxkLm5hbWUpO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5JQ09ERTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfT1BFTl9UWVBFOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9IQVNfU1RSRUFNOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19CT1VORDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQ09NUE9TQUJMRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQ09OVEFJTlNfVEFSR0VUOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JTkNMVURFX0lOX1NFUlZJQ0VfRE9DVU1FTlQ6XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FCU1RSQUNUOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19GTEFHUzpcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlWYWx1ZVRvQm9vbGVhbihcbiAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZXMsIGZpZWxkLm5hbWUpLFxuICAgICAgICApO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9WQUxVRTpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSDpcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfUFJFQ0lTSU9OOlxuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9TQ0FMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlWYWx1ZVRvTnVtYmVyKFxuICAgICAgICAgIHRoaXMuZ2V0QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlcywgZmllbGQubmFtZSksXG4gICAgICAgICk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua253b24gYXR0cmlidXRlOicgKyBmaWVsZC5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZUJ5VGFnKGZpZWxkOiBGaWVsZCwgZWxlbWVudDogRWxlbWVudCk6IGFueVtdIHtcbiAgICBzd2l0Y2ggKGZpZWxkLm5hbWUpIHtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfSU5DTFVERTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUVTUEFDRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FMSUFTLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0lOQ0xVREVfQU5OT1RBVElPTlM6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RFUk1fTkFNRVNQQUNFLFxuICAgICAgICAgICAgRmllbGRUeXBlLkFUVFJJQlVURSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVF9OQU1FU1BBQ0UsXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFLFxuICAgICAgICAgICksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19URVJNOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9CQVNFX1RFUk0sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9ERUZBVUxUX1ZBTFVFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQVBQTElFU19UTywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05VTExBQkxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfU1JJRCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BTk5PVEFUSU9OUzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RBUkdFVCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX0FOTk9UQVRJT04sIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfQU5OT1RBVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RFUk0sIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9RVUFMSUZJRVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5VTV9UWVBFOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX01FTUJFUiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKFxuICAgICAgICAgICAgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5ERVJMWUlOR19UWVBFLFxuICAgICAgICAgICAgRmllbGRUeXBlLkFUVFJJQlVURSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19GTEFHUywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19DT01QTEVYX1RZUEU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFksIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQkFTRV9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfT1BFTl9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQUJTVFJBQ1QsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX1RZUEU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfS0VZLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFksIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQkFTRV9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfT1BFTl9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSEFTX1NUUkVBTSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FCU1RSQUNULCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1JFVFVSTl9UWVBFLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQk9VTkQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVRfUEFUSCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSVNfQ09NUE9TQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX1BBUkFNRVRFUiwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19NRU1CRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVkFMVUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFk6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05VTExBQkxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5JQ09ERSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9ERUZBVUxUX1ZBTFVFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0tFWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUFJPUEVSVFlfUkVGLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1BST1BFUlRZX1JFRjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9BTElBUywgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OVUxMQUJMRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BBUlRORVIsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0NPTlRBSU5TX1RBUkdFVCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUkVGRVJFTlRJQUxfQ09OU1RSQUlOVCwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuVEFHX09OX0RFTEVURSwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19SRUZFUkVOVElBTF9DT05TVFJBSU5UOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfUFJPUEVSVFksIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1JFRkVSRU5DRURfUFJPUEVSVFksXG4gICAgICAgICAgICBGaWVsZFR5cGUuQVRUUklCVVRFLFxuICAgICAgICAgICksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19PTl9ERUxFVEU6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdChlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0FDVElPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19QQVJBTUVURVI6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05VTExBQkxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfU1JJRCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19SRVRVUk5fVFlQRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05VTExBQkxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfU1JJRCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19BQ1RJT046XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfUkVUVVJOX1RZUEUsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9JU19CT1VORCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKFxuICAgICAgICAgICAgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1NFVF9QQVRILFxuICAgICAgICAgICAgRmllbGRUeXBlLkFUVFJJQlVURSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19QQVJBTUVURVIsIEZpZWxkVHlwZS5UQUcpLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfRU5USVRZX0NPTlRBSU5FUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VYVEVORFMsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfU0VULCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfU0lOR0xFVE9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfRlVOQ1RJT05fSU1QT1JULCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5UQUdfQUNUSU9OX0lNUE9SVCwgRmllbGRUeXBlLlRBRyksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19FTlRJVFlfU0VUOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9UWVBFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoXG4gICAgICAgICAgICBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkcsXG4gICAgICAgICAgICBGaWVsZFR5cGUuVEFHLFxuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IEZpZWxkKFxuICAgICAgICAgICAgT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfSU5DTFVERV9JTl9TRVJWSUNFX0RPQ1VNRU5ULFxuICAgICAgICAgICAgRmllbGRUeXBlLkFUVFJJQlVURSxcbiAgICAgICAgICApLFxuICAgICAgICBdKTtcbiAgICAgIGNhc2UgT0RhdGFNZXRhZGF0YS5UQUdfU0lOR0xFVE9OOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RzKGVsZW1lbnQsIGZpZWxkLm5hbWUsIFtcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTkFNRSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuVEFHX05BVklHQVRJT05fUFJPUEVSVFlfQklORElORyxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5UQUcsXG4gICAgICAgICAgKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0ZVTkNUSU9OX0lNUE9SVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9GVU5DVElPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0VOVElUWV9TRVQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX0lOQ0xVREVfSU5fU0VSVklDRV9ET0NVTUVOVCxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEUsXG4gICAgICAgICAgKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX0FDVElPTl9JTVBPUlQ6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9OQU1FLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfQUNUSU9OLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfRU5USVRZX1NFVCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSBPRGF0YU1ldGFkYXRhLlRBR19OQVZJR0FUSU9OX1BST1BFUlRZX0JJTkRJTkc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdHMoZWxlbWVudCwgZmllbGQubmFtZSwgW1xuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLkFUVFJJQlVURV9QQVRILCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVEFSR0VULCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlIE9EYXRhTWV0YWRhdGEuVEFHX1RZUEVfREVGSU5JVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0cyhlbGVtZW50LCBmaWVsZC5uYW1lLCBbXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX05BTUUsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChcbiAgICAgICAgICAgIE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1VOREVSTFlJTkdfVFlQRSxcbiAgICAgICAgICAgIEZpZWxkVHlwZS5BVFRSSUJVVEUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfTUFYX0xFTkdUSCwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1BSRUNJU0lPTiwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NDQUxFLCBGaWVsZFR5cGUuQVRUUklCVVRFKSxcbiAgICAgICAgICBuZXcgRmllbGQoT0RhdGFNZXRhZGF0YS5BVFRSSUJVVEVfVU5JQ09ERSwgRmllbGRUeXBlLkFUVFJJQlVURSksXG4gICAgICAgICAgbmV3IEZpZWxkKE9EYXRhTWV0YWRhdGEuQVRUUklCVVRFX1NSSUQsIEZpZWxkVHlwZS5BVFRSSUJVVEUpLFxuICAgICAgICAgIG5ldyBGaWVsZChPRGF0YU1ldGFkYXRhLlRBR19BTk5PVEFUSU9OLCBGaWVsZFR5cGUuVEFHKSxcbiAgICAgICAgXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua253b24gdGFnOicgKyBmaWVsZC5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlczogTmFtZWROb2RlTWFwLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGU6IEF0dHIgfCBudWxsID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oYXR0cmlidXRlTmFtZSk7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZSAhPT0gbnVsbCAmJiBhdHRyaWJ1dGUubm9kZVZhbHVlXG4gICAgICA/IGF0dHJpYnV0ZS5ub2RlVmFsdWVcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb3BlcnR5VmFsdWVUb051bWJlcihhdHRyaWJ1dGVWYWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZSAhPT0gdW5kZWZpbmVkID8gTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9wZXJ0eVZhbHVlVG9Cb29sZWFuKGF0dHJpYnV0ZVZhbHVlPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlICE9PSB1bmRlZmluZWQgPyBhdHRyaWJ1dGVWYWx1ZSA9PT0gJ3RydWUnIDogZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -171,4 +171,4 @@ export class ODataResponse extends HttpResponse {
171
171
  return value;
172
172
  }
173
173
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixrQkFBa0IsR0FDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3hDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWlCLFNBQVEsWUFBZTtJQUluRCxZQUFZLElBUVg7UUFDQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUksR0FBb0IsRUFBRSxHQUFvQjtRQUNuRSxPQUFPLElBQUksYUFBYSxDQUFJO1lBQzFCLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztZQUNaLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFD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QUFJLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7WUFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDcEUsQ0FBQyxDQUFDLE9BQU8sQ0FDQSxDQUFDO1FBRWQsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFNLENBQUM7UUFDM0UsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyxcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2UnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdGllcywgT0RhdGFFbnRpdHksIE9EYXRhUHJvcGVydHkgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFQUExJQ0FUSU9OX0pTT04sXG4gIE9EQVRBX1ZFUlNJT05fSEVBREVSUyxcbiAgQ09OVEVOVF9UWVBFLFxuICBDQUNIRV9DT05UUk9MLFxuICBMT0NBVElPTl9IRUFERVIsXG4gIEVUQUdfSEVBREVSUyxcbiAgT0RBVEFfRU5USVRZSURfSEVBREVSUyxcbiAgUFJFRkVSRU5DRV9BUFBMSUVELFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgT0RhdGFSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBPRGF0YVJlc3BvbnNlT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBIdHRwIH0gZnJvbSAnLi4vLi4vdXRpbHMvaHR0cCc7XG5pbXBvcnQgeyBPRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9oZWxwZXInO1xuXG4vKipcbiAqIE9EYXRhIFJlc3BvbnNlXG4gKi9cbmV4cG9ydCBjbGFzcyBPRGF0YVJlc3BvbnNlPFQ+IGV4dGVuZHMgSHR0cFJlc3BvbnNlPFQ+IHtcbiAgcmVhZG9ubHkgYXBpOiBPRGF0YUFwaTtcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG5cbiAgY29uc3RydWN0b3IoaW5pdDoge1xuICAgIGFwaTogT0RhdGFBcGk7XG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gICAgYm9keTogVCB8IG51bGw7XG4gICAgaGVhZGVyczogSHR0cEhlYWRlcnM7XG4gICAgc3RhdHVzOiBudW1iZXI7XG4gICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgfSkge1xuICAgIHN1cGVyKGluaXQpO1xuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGluaXQucmVzb3VyY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbUh0dHBSZXNwb25zZTxUPihyZXE6IE9EYXRhUmVxdWVzdDxUPiwgcmVzOiBIdHRwUmVzcG9uc2U8VD4pIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUmVzcG9uc2U8VD4oe1xuICAgICAgYXBpOiByZXEuYXBpLFxuICAgICAgcmVzb3VyY2U6IHJlcS5yZXNvdXJjZSxcbiAgICAgIGJvZHk6IHJlcy5ib2R5LFxuICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiByZXMuc3RhdHVzVGV4dCxcbiAgICAgIHVybDogcmVzLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT048VD4oXG4gICAgcmVxOiBPRGF0YVJlcXVlc3Q8VD4sXG4gICAganNvbjoge1xuICAgICAgYm9keTogVCB8IG51bGw7XG4gICAgICBoZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgICB1cmw6IHN0cmluZyB8IG51bGw7XG4gICAgfVxuICApIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUmVzcG9uc2U8VD4oe1xuICAgICAgYXBpOiByZXEuYXBpLFxuICAgICAgcmVzb3VyY2U6IHJlcS5yZXNvdXJjZSxcbiAgICAgIGJvZHk6IGpzb24uYm9keSxcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyhqc29uLmhlYWRlcnMpLFxuICAgICAgc3RhdHVzOiBqc29uLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IGpzb24uc3RhdHVzVGV4dCxcbiAgICAgIHVybDoganNvbi51cmwgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBib2R5OiB0aGlzLmJvZHksXG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnNcbiAgICAgICAgLmtleXMoKVxuICAgICAgICAubWFwKChuYW1lKSA9PiAoeyBbbmFtZV06IHRoaXMuaGVhZGVycy5nZXRBbGwobmFtZSkgfHwgW10gfSkpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywgaGVhZGVyKSA9PiBPYmplY3QuYXNzaWduKGFjYywgaGVhZGVyKSwge30pLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX29wdGlvbnM/OiBPRGF0YVJlc3BvbnNlT3B0aW9ucztcbiAgZ2V0IG9wdGlvbnMoKTogT0RhdGFSZXNwb25zZU9wdGlvbnMge1xuICAgIGlmICh0aGlzLl9vcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBuZXcgT0RhdGFSZXNwb25zZU9wdGlvbnModGhpcy5hcGkub3B0aW9ucy5wYXJzZXJPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gdGhpcy5oZWFkZXJzLmdldChDT05URU5UX1RZUEUpO1xuICAgICAgaWYgKGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoQVBQTElDQVRJT05fSlNPTikgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gY29udGVudFR5cGVcbiAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgIC5maW5kKChwKSA9PiBwLnN0YXJ0c1dpdGgoQVBQTElDQVRJT05fSlNPTikpIGFzIHN0cmluZztcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRGZWF0dXJlcyhmZWF0dXJlcyk7XG4gICAgICB9XG4gICAgICBjb25zdCBoZWFkZXJLZXkgPSBIdHRwLnJlc29sdmVIZWFkZXJLZXkoXG4gICAgICAgIHRoaXMuaGVhZGVycyxcbiAgICAgICAgT0RBVEFfVkVSU0lPTl9IRUFERVJTXG4gICAgICApO1xuICAgICAgaWYgKGhlYWRlcktleSkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gKHRoaXMuaGVhZGVycy5nZXQoaGVhZGVyS2V5KSB8fCAnJykucmVwbGFjZShcbiAgICAgICAgICAvXFw7L2csXG4gICAgICAgICAgJydcbiAgICAgICAgKSBhcyAnMi4wJyB8ICczLjAnIHwgJzQuMCc7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0VmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJlZmVyZW5jZUFwcGxpZWQgPSB0aGlzLmhlYWRlcnMuZ2V0KFBSRUZFUkVOQ0VfQVBQTElFRCk7XG4gICAgICBpZiAocHJlZmVyZW5jZUFwcGxpZWQpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRQcmVmZXJlbmNlQXBwbGllZChwcmVmZXJlbmNlQXBwbGllZCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8VD4oXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gKGFubm90cy5kYXRhKHBheWxvYWQpIGFzIFQpIDogbnVsbDtcbiAgICBsZXQgcHJvcGVydHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKFxuICAgICAgICAgICAgZGF0YSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgICAgdGhpcy5hcGkub3B0aW9ucy5zdHJpcE1ldGFkYXRhXG4gICAgICAgICAgKVxuICAgICAgICA6IGRhdGFcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKVxuICAgICAgcHJvcGVydHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHByb3BlcnR5LCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB7IHByb3BlcnR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBsZXQgdmFsdWUgPSAoXG4gICAgICBwYXlsb2FkICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QocGF5bG9hZClcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKHBheWxvYWQsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBwYXlsb2FkXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixrQkFBa0IsR0FDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3hDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWlCLFNBQVEsWUFBZTtJQUluRCxZQUFZLElBUVg7UUFDQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUksR0FBb0IsRUFBRSxHQUFvQjtRQUNuRSxPQUFPLElBQUksYUFBYSxDQUFJO1lBQzFCLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztZQUNaLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFD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QUFJLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7WUFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDcEUsQ0FBQyxDQUFDLE9BQU8sQ0FDQSxDQUFDO1FBRWQsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFNLENBQUM7UUFDM0UsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyxcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2UnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdGllcywgT0RhdGFFbnRpdHksIE9EYXRhUHJvcGVydHkgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEFQUExJQ0FUSU9OX0pTT04sXG4gIE9EQVRBX1ZFUlNJT05fSEVBREVSUyxcbiAgQ09OVEVOVF9UWVBFLFxuICBDQUNIRV9DT05UUk9MLFxuICBMT0NBVElPTl9IRUFERVIsXG4gIEVUQUdfSEVBREVSUyxcbiAgT0RBVEFfRU5USVRZSURfSEVBREVSUyxcbiAgUFJFRkVSRU5DRV9BUFBMSUVELFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgT0RhdGFSZXF1ZXN0IH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBPRGF0YVJlc3BvbnNlT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBIdHRwIH0gZnJvbSAnLi4vLi4vdXRpbHMvaHR0cCc7XG5pbXBvcnQgeyBPRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9oZWxwZXInO1xuXG4vKipcbiAqIE9EYXRhIFJlc3BvbnNlXG4gKi9cbmV4cG9ydCBjbGFzcyBPRGF0YVJlc3BvbnNlPFQ+IGV4dGVuZHMgSHR0cFJlc3BvbnNlPFQ+IHtcbiAgcmVhZG9ubHkgYXBpOiBPRGF0YUFwaTtcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG5cbiAgY29uc3RydWN0b3IoaW5pdDoge1xuICAgIGFwaTogT0RhdGFBcGk7XG4gICAgcmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8VD47XG4gICAgYm9keTogVCB8IG51bGw7XG4gICAgaGVhZGVyczogSHR0cEhlYWRlcnM7XG4gICAgc3RhdHVzOiBudW1iZXI7XG4gICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgfSkge1xuICAgIHN1cGVyKGluaXQpO1xuICAgIHRoaXMuYXBpID0gaW5pdC5hcGk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGluaXQucmVzb3VyY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbUh0dHBSZXNwb25zZTxUPihyZXE6IE9EYXRhUmVxdWVzdDxUPiwgcmVzOiBIdHRwUmVzcG9uc2U8VD4pIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUmVzcG9uc2U8VD4oe1xuICAgICAgYXBpOiByZXEuYXBpLFxuICAgICAgcmVzb3VyY2U6IHJlcS5yZXNvdXJjZSxcbiAgICAgIGJvZHk6IHJlcy5ib2R5LFxuICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiByZXMuc3RhdHVzVGV4dCxcbiAgICAgIHVybDogcmVzLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT048VD4oXG4gICAgcmVxOiBPRGF0YVJlcXVlc3Q8VD4sXG4gICAganNvbjoge1xuICAgICAgYm9keTogVCB8IG51bGw7XG4gICAgICBoZWFkZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgICB1cmw6IHN0cmluZyB8IG51bGw7XG4gICAgfSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlc3BvbnNlPFQ+KHtcbiAgICAgIGFwaTogcmVxLmFwaSxcbiAgICAgIHJlc291cmNlOiByZXEucmVzb3VyY2UsXG4gICAgICBib2R5OiBqc29uLmJvZHksXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoanNvbi5oZWFkZXJzKSxcbiAgICAgIHN0YXR1czoganNvbi5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBqc29uLnN0YXR1c1RleHQsXG4gICAgICB1cmw6IGpzb24udXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9keTogdGhpcy5ib2R5LFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzXG4gICAgICAgIC5rZXlzKClcbiAgICAgICAgLm1hcCgobmFtZSkgPT4gKHsgW25hbWVdOiB0aGlzLmhlYWRlcnMuZ2V0QWxsKG5hbWUpIHx8IFtdIH0pKVxuICAgICAgICAucmVkdWNlKChhY2MsIGhlYWRlcikgPT4gT2JqZWN0LmFzc2lnbihhY2MsIGhlYWRlciksIHt9KSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9vcHRpb25zPzogT0RhdGFSZXNwb25zZU9wdGlvbnM7XG4gIGdldCBvcHRpb25zKCk6IE9EYXRhUmVzcG9uc2VPcHRpb25zIHtcbiAgICBpZiAodGhpcy5fb3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0gbmV3IE9EYXRhUmVzcG9uc2VPcHRpb25zKHRoaXMuYXBpLm9wdGlvbnMucGFyc2VyT3B0aW9ucyk7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IHRoaXMuaGVhZGVycy5nZXQoQ09OVEVOVF9UWVBFKTtcbiAgICAgIGlmIChjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5pbmRleE9mKEFQUExJQ0FUSU9OX0pTT04pICE9PSAtMSkge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGNvbnRlbnRUeXBlXG4gICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAuZmluZCgocCkgPT4gcC5zdGFydHNXaXRoKEFQUExJQ0FUSU9OX0pTT04pKSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0RmVhdHVyZXMoZmVhdHVyZXMpO1xuICAgICAgfVxuICAgICAgY29uc3QgaGVhZGVyS2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KFxuICAgICAgICB0aGlzLmhlYWRlcnMsXG4gICAgICAgIE9EQVRBX1ZFUlNJT05fSEVBREVSUyxcbiAgICAgICk7XG4gICAgICBpZiAoaGVhZGVyS2V5KSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXJLZXkpIHx8ICcnKS5yZXBsYWNlKFxuICAgICAgICAgIC9cXDsvZyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgKSBhcyAnMi4wJyB8ICczLjAnIHwgJzQuMCc7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0VmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJlZmVyZW5jZUFwcGxpZWQgPSB0aGlzLmhlYWRlcnMuZ2V0KFBSRUZFUkVOQ0VfQVBQTElFRCk7XG4gICAgICBpZiAocHJlZmVyZW5jZUFwcGxpZWQpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXRQcmVmZXJlbmNlQXBwbGllZChwcmVmZXJlbmNlQXBwbGllZCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge30sXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgX2Fubm90YXRpb25zPzogTWFwPHN0cmluZywgYW55PjtcbiAgZ2V0IGFubm90YXRpb25zKCk6IE1hcDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICh0aGlzLl9hbm5vdGF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgdGhpcy5fYW5ub3RhdGlvbnMgPSBvcHRpb25zLmhlbHBlci5hbm5vdGF0aW9ucyh0aGlzLnBheWxvYWQgfHwge30pO1xuICAgICAgbGV0IGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIEVUQUdfSEVBREVSUyk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGNvbnN0IGV0YWcgPSB0aGlzLmhlYWRlcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChldGFnKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfRVRBRywgZXRhZyk7XG4gICAgICB9XG4gICAgICBrZXkgPSBIdHRwLnJlc29sdmVIZWFkZXJLZXkodGhpcy5oZWFkZXJzLCBPREFUQV9FTlRJVFlJRF9IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZW50aXR5SWQgPSB0aGlzLmhlYWRlcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChlbnRpdHlJZCkgdGhpcy5fYW5ub3RhdGlvbnMuc2V0KG9wdGlvbnMuaGVscGVyLk9EQVRBX0lELCBlbnRpdHlJZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hbm5vdGF0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gZW50aXR5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBlbnRpdHkoKTogT0RhdGFFbnRpdHk8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPihcbiAgICAgIG9wdGlvbnMuaGVscGVyLFxuICAgICAgdGhpcy5hbm5vdGF0aW9ucyxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGxldCBlbnRpdHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBkYXRhXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmIChlbnRpdHkgIT09IG51bGwpXG4gICAgICBlbnRpdHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKGVudGl0eSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4geyBlbnRpdHksIGFubm90cyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBlbnRpdGllc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZW50aXRpZXMoKTogT0RhdGFFbnRpdGllczxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8VD4oXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHQsXG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8VD4oXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHQsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IChhbm5vdHMuZGF0YShwYXlsb2FkKSBhcyBUKSA6IG51bGw7XG4gICAgbGV0IHByb3BlcnR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhcbiAgICAgICAgICAgIGRhdGEgYXMgeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgICAgICAgICB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEsXG4gICAgICAgICAgKVxuICAgICAgICA6IGRhdGFcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKVxuICAgICAgcHJvcGVydHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHByb3BlcnR5LCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB7IHByb3BlcnR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBsZXQgdmFsdWUgPSAoXG4gICAgICBwYXlsb2FkICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QocGF5bG9hZClcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKHBheWxvYWQsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBwYXlsb2FkXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -110,4 +110,4 @@ export class ODataActionResource extends ODataResource {
110
110
  return this.call(params, { responseType: 'blob', alias, ...options });
111
111
  }
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3Jlc291cmNlcy90eXBlcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUzVDLE1BQU0sT0FBTyxtQkFBMEIsU0FBUSxhQUFnQjtJQUM3RCxpQkFBaUI7SUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FDWixHQUFhLEVBQ2IsRUFDRSxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBTU47UUFFRCxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLEtBQUssU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksTUFBTSxLQUFLLFNBQVM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sSUFBSSxtQkFBbUIsQ0FBTyxHQUFHLEVBQUU7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QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FDTixNQUFnQixFQUNoQixFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sS0FBeUMsRUFBRTtRQUU5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vLi4vYXBpJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YUNhbGxhYmxlIH0gZnJvbSAnLi4vLi4vc2NoZW1hL2NhbGxhYmxlJztcbmltcG9ydCB7IFBhdGhTZWdtZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFQYXRoU2VnbWVudHMgfSBmcm9tICcuLi9wYXRoJztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi4vcmVzcG9uc2VzJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXRpZXNPcHRpb25zLFxuICBPRGF0YUVudGl0eU9wdGlvbnMsXG4gIE9EYXRhT3B0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eU9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUFjdGlvblJlc291cmNlPFAsIFI+IGV4dGVuZHMgT0RhdGFSZXNvdXJjZTxSPiB7XG4gIC8vI3JlZ2lvbiBGYWN0b3J5XG4gIHN0YXRpYyBmYWN0b3J5PFAsIFI+KFxuICAgIGFwaTogT0RhdGFBcGksXG4gICAge1xuICAgICAgcGF0aCxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHNlZ21lbnRzLFxuICAgICAgcXVlcnksXG4gICAgfToge1xuICAgICAgcGF0aD86IHN0cmluZztcbiAgICAgIHNjaGVtYT86IE9EYXRhQ2FsbGFibGU8Uj47XG4gICAgICBzZWdtZW50cz86IE9EYXRhUGF0aFNlZ21lbnRzO1xuICAgICAgcXVlcnk/OiBPRGF0YVF1ZXJ5T3B0aW9uczxSPjtcbiAgICB9XG4gICkge1xuICAgIHNlZ21lbnRzID0gc2VnbWVudHMgfHwgbmV3IE9EYXRhUGF0aFNlZ21lbnRzKCk7XG4gICAgcGF0aCA9IHNjaGVtYSAhPT0gdW5kZWZpbmVkID8gc2NoZW1hLnBhdGgoKSA6IHBhdGg7XG4gICAgaWYgKHBhdGggPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT0RhdGFBY3Rpb25SZXNvdXJjZTogcGF0aCBpcyByZXF1aXJlZGApO1xuXG4gICAgY29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzLmFkZChQYXRoU2VnbWVudC5hY3Rpb24sIHBhdGgpO1xuICAgIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkgc2VnbWVudC50eXBlKHNjaGVtYS50eXBlKCkpO1xuICAgIHJldHVybiBuZXcgT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPihhcGksIHtcbiAgICAgIHNlZ21lbnRzLFxuICAgICAgcXVlcnksXG4gICAgICBzY2hlbWEsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJlc291cmNlPFAsIFI+KHJlc291cmNlOiBPRGF0YVJlc291cmNlPGFueT4sIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGJhc2VUeXBlID0gcmVzb3VyY2UudHlwZSgpO1xuICAgIGNvbnN0IGFjdGlvblNjaGVtYSA9IHJlc291cmNlLmFwaS5maW5kQ2FsbGFibGVGb3JUeXBlPFI+KHBhdGgsIGJhc2VUeXBlKTtcbiAgICBjb25zdCBiaW5kaW5nVHlwZSA9IGFjdGlvblNjaGVtYT8uYmluZGluZygpPy50eXBlO1xuXG4gICAgY29uc3QgYWN0aW9uID0gT0RhdGFBY3Rpb25SZXNvdXJjZS5mYWN0b3J5PFAsIFI+KHJlc291cmNlLmFwaSwge1xuICAgICAgcGF0aCxcbiAgICAgIHNjaGVtYTogYWN0aW9uU2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHJlc291cmNlLmNsb25lU2VnbWVudHMoKSxcbiAgICB9KTtcblxuICAgIC8vIFN3aXRjaCBlbnRpdHlTZXQgdG8gYmluZGluZyB0eXBlIGlmIGF2YWlsYWJsZVxuICAgIGlmIChiaW5kaW5nVHlwZSAhPT0gdW5kZWZpbmVkICYmIGJpbmRpbmdUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgbGV0IGVudGl0eVNldCA9IHJlc291cmNlLmFwaS5maW5kRW50aXR5U2V0Rm9yVHlwZShiaW5kaW5nVHlwZSk7XG4gICAgICBpZiAoZW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0aW9uLnNlZ21lbnQoKHMpID0+IHMuZW50aXR5U2V0KCkucGF0aChlbnRpdHlTZXQhLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgb3ZlcnJpZGUgY2xvbmUoKTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHN1cGVyLmNsb25lKCkgYXMgT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPjtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBvdmVycmlkZSByZXR1cm5UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhQ2FsbGFibGVcbiAgICAgID8gdGhpcy5zY2hlbWEucGFyc2VyLnJldHVybj8udHlwZVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyNyZWdpb24gUmVxdWVzdHNcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHBvc3QoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogT0RhdGFFbnRpdHlPcHRpb25zICYgT0RhdGFFbnRpdGllc09wdGlvbnMgJiBPRGF0YVByb3BlcnR5T3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBzdXBlci5wb3N0KHBhcmFtcywgb3B0aW9ucyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFNob3J0Y3V0c1xuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogT0RhdGFFbnRpdHlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8Uj4+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IE9EYXRhRW50aXRpZXNPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxSPj47XG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogT0RhdGFQcm9wZXJ0eU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbjsgcmVzcG9uc2VUeXBlPzogJ2Jsb2InIH0gJiBPRGF0YU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbjsgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB9ICYgT0RhdGFPcHRpb25zXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IHsgYWxpYXM/OiBib29sZWFuOyByZXNwb25zZVR5cGU/OiAnbm9uZScgfSAmIE9EYXRhT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPG51bGw+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFFbnRpdHlPcHRpb25zICZcbiAgICAgIE9EYXRhRW50aXRpZXNPcHRpb25zICZcbiAgICAgIE9EYXRhUHJvcGVydHlPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnBvc3QocGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgcHJvcGVydHlcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgYWN0aW9uXG4gICAqL1xuICBjYWxsUHJvcGVydHkoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHsgcmVzcG9uc2VUeXBlOiAncHJvcGVydHknLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgcHJvcGVydHkgfSkgPT4gcHJvcGVydHkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgZW50aXR5XG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGFjdGlvblxuICAgKi9cbiAgY2FsbEVudGl0eShcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8UiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywgeyByZXNwb25zZVR5cGU6ICdlbnRpdHknLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXR5IH0pID0+IGVudGl0eSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGFjdGlvbiBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBtb2RlbFxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb25cbiAgICovXG4gIGNhbGxNb2RlbDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxSPj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPE0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHsgcmVzcG9uc2VUeXBlOiAnZW50aXR5JywgLi4ub3B0aW9ucyB9KS5waXBlKFxuICAgICAgbWFwKCh7IGVudGl0eSwgYW5ub3RzIH0pID0+XG4gICAgICAgIGVudGl0eSA/IHRoaXMuYXNNb2RlbDxNPihlbnRpdHksIHsgYW5ub3RzIH0pIDogbnVsbFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgYWN0aW9uIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIGVudGl0aWVzXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyBmb3IgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGFjdGlvblxuICAgKi9cbiAgY2FsbEVudGl0aWVzKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSW10gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHsgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXRpZXMgfSkgPT4gZW50aXRpZXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgY29sbGVjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb25cbiAgICovXG4gIGNhbGxDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFI+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFIsIE0+PihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8QyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywgeyByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsIC4uLm9wdGlvbnMgfSkucGlwZShcbiAgICAgIG1hcCgoeyBlbnRpdGllcywgYW5ub3RzIH0pID0+XG4gICAgICAgIGVudGl0aWVzID8gdGhpcy5hc0NvbGxlY3Rpb248TSwgQz4oZW50aXRpZXMsIHsgYW5ub3RzIH0pIDogbnVsbFxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY2FsbEFycmF5YnVmZmVyKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgeyBhbGlhcywgLi4ub3B0aW9ucyB9OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwocGFyYW1zLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICBhbGlhcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjYWxsQmxvYihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHsgYWxpYXMsIC4uLm9wdGlvbnMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwocGFyYW1zLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InLCBhbGlhcywgLi4ub3B0aW9ucyB9KTtcbiAgfVxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3Jlc291cmNlcy90eXBlcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUzVDLE1BQU0sT0FBTyxtQkFBMEIsU0FBUSxhQUFnQjtJQUM3RCxpQkFBaUI7SUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FDWixHQUFhLEVBQ2IsRUFDRSxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBTU47UUFFRCxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLEtBQUssU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksTUFBTSxLQUFLLFNBQVM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sSUFBSSxtQkFBbUIsQ0FBTyxHQUFHLEVBQUU7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QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FDTixNQUFnQixFQUNoQixFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sS0FBeUMsRUFBRTtRQUU5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vLi4vYXBpJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YUNhbGxhYmxlIH0gZnJvbSAnLi4vLi4vc2NoZW1hL2NhbGxhYmxlJztcbmltcG9ydCB7IFBhdGhTZWdtZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFQYXRoU2VnbWVudHMgfSBmcm9tICcuLi9wYXRoJztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi4vcmVzcG9uc2VzJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXRpZXNPcHRpb25zLFxuICBPRGF0YUVudGl0eU9wdGlvbnMsXG4gIE9EYXRhT3B0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eU9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUFjdGlvblJlc291cmNlPFAsIFI+IGV4dGVuZHMgT0RhdGFSZXNvdXJjZTxSPiB7XG4gIC8vI3JlZ2lvbiBGYWN0b3J5XG4gIHN0YXRpYyBmYWN0b3J5PFAsIFI+KFxuICAgIGFwaTogT0RhdGFBcGksXG4gICAge1xuICAgICAgcGF0aCxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHNlZ21lbnRzLFxuICAgICAgcXVlcnksXG4gICAgfToge1xuICAgICAgcGF0aD86IHN0cmluZztcbiAgICAgIHNjaGVtYT86IE9EYXRhQ2FsbGFibGU8Uj47XG4gICAgICBzZWdtZW50cz86IE9EYXRhUGF0aFNlZ21lbnRzO1xuICAgICAgcXVlcnk/OiBPRGF0YVF1ZXJ5T3B0aW9uczxSPjtcbiAgICB9LFxuICApIHtcbiAgICBzZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHBhdGggPSBzY2hlbWEgIT09IHVuZGVmaW5lZCA/IHNjaGVtYS5wYXRoKCkgOiBwYXRoO1xuICAgIGlmIChwYXRoID09PSB1bmRlZmluZWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9EYXRhQWN0aW9uUmVzb3VyY2U6IHBhdGggaXMgcmVxdWlyZWRgKTtcblxuICAgIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50cy5hZGQoUGF0aFNlZ21lbnQuYWN0aW9uLCBwYXRoKTtcbiAgICBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQpIHNlZ21lbnQudHlwZShzY2hlbWEudHlwZSgpKTtcbiAgICByZXR1cm4gbmV3IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4oYXBpLCB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21SZXNvdXJjZTxQLCBSPihyZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LCBwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlVHlwZSA9IHJlc291cmNlLnR5cGUoKTtcbiAgICBjb25zdCBhY3Rpb25TY2hlbWEgPSByZXNvdXJjZS5hcGkuZmluZENhbGxhYmxlRm9yVHlwZTxSPihwYXRoLCBiYXNlVHlwZSk7XG4gICAgY29uc3QgYmluZGluZ1R5cGUgPSBhY3Rpb25TY2hlbWE/LmJpbmRpbmcoKT8udHlwZTtcblxuICAgIGNvbnN0IGFjdGlvbiA9IE9EYXRhQWN0aW9uUmVzb3VyY2UuZmFjdG9yeTxQLCBSPihyZXNvdXJjZS5hcGksIHtcbiAgICAgIHBhdGgsXG4gICAgICBzY2hlbWE6IGFjdGlvblNjaGVtYSxcbiAgICAgIHNlZ21lbnRzOiByZXNvdXJjZS5jbG9uZVNlZ21lbnRzKCksXG4gICAgfSk7XG5cbiAgICAvLyBTd2l0Y2ggZW50aXR5U2V0IHRvIGJpbmRpbmcgdHlwZSBpZiBhdmFpbGFibGVcbiAgICBpZiAoYmluZGluZ1R5cGUgIT09IHVuZGVmaW5lZCAmJiBiaW5kaW5nVHlwZSAhPT0gYmFzZVR5cGUpIHtcbiAgICAgIGxldCBlbnRpdHlTZXQgPSByZXNvdXJjZS5hcGkuZmluZEVudGl0eVNldEZvclR5cGUoYmluZGluZ1R5cGUpO1xuICAgICAgaWYgKGVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGlvbi5zZWdtZW50KChzKSA9PiBzLmVudGl0eVNldCgpLnBhdGgoZW50aXR5U2V0IS5uYW1lKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuXG4gIG92ZXJyaWRlIGNsb25lKCk6IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4ge1xuICAgIHJldHVybiBzdXBlci5jbG9uZSgpIGFzIE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgb3ZlcnJpZGUgcmV0dXJuVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2hlbWEgaW5zdGFuY2VvZiBPRGF0YUNhbGxhYmxlXG4gICAgICA/IHRoaXMuc2NoZW1hLnBhcnNlci5yZXR1cm4/LnR5cGVcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8jcmVnaW9uIFJlcXVlc3RzXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwb3N0KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IE9EYXRhRW50aXR5T3B0aW9ucyAmIE9EYXRhRW50aXRpZXNPcHRpb25zICYgT0RhdGFQcm9wZXJ0eU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHN1cGVyLnBvc3QocGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gU2hvcnRjdXRzXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKi9cbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiBPRGF0YUVudGl0eU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8Uj4+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IE9EYXRhRW50aXRpZXNPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXRpZXM8Uj4+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IE9EYXRhUHJvcGVydHlPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPE9EYXRhUHJvcGVydHk8Uj4+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IHsgYWxpYXM/OiBib29sZWFuOyByZXNwb25zZVR5cGU/OiAnYmxvYicgfSAmIE9EYXRhT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbjsgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB9ICYgT0RhdGFPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbjsgcmVzcG9uc2VUeXBlPzogJ25vbmUnIH0gJiBPRGF0YU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8bnVsbD47XG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YUVudGl0eU9wdGlvbnMgJlxuICAgICAgT0RhdGFFbnRpdGllc09wdGlvbnMgJlxuICAgICAgT0RhdGFQcm9wZXJ0eU9wdGlvbnMgPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnBvc3QocGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgcHJvcGVydHlcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgYWN0aW9uXG4gICAqL1xuICBjYWxsUHJvcGVydHkoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxSIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwocGFyYW1zLCB7IHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JywgLi4ub3B0aW9ucyB9KS5waXBlKFxuICAgICAgbWFwKCh7IHByb3BlcnR5IH0pID0+IHByb3BlcnR5KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGFjdGlvbiBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBlbnRpdHlcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgYWN0aW9uXG4gICAqL1xuICBjYWxsRW50aXR5KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zID0ge30sXG4gICk6IE9ic2VydmFibGU8UiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywgeyByZXNwb25zZVR5cGU6ICdlbnRpdHknLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXR5IH0pID0+IGVudGl0eSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbW9kZWxcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgYWN0aW9uXG4gICAqL1xuICBjYWxsTW9kZWw8TSBleHRlbmRzIE9EYXRhTW9kZWw8Uj4+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zID0ge30sXG4gICk6IE9ic2VydmFibGU8TSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywgeyByZXNwb25zZVR5cGU6ICdlbnRpdHknLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXR5LCBhbm5vdHMgfSkgPT5cbiAgICAgICAgZW50aXR5ID8gdGhpcy5hc01vZGVsPE0+KGVudGl0eSwgeyBhbm5vdHMgfSkgOiBudWxsLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGFjdGlvbiBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBlbnRpdGllc1xuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb25cbiAgICovXG4gIGNhbGxFbnRpdGllcyhcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyA9IHt9LFxuICApOiBPYnNlcnZhYmxlPFJbXSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywgeyByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsIC4uLm9wdGlvbnMgfSkucGlwZShcbiAgICAgIG1hcCgoeyBlbnRpdGllcyB9KSA9PiBlbnRpdGllcyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhY3Rpb24gYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgY29sbGVjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb25cbiAgICovXG4gIGNhbGxDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFI+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFIsIE0+PihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHsgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXRpZXMsIGFubm90cyB9KSA9PlxuICAgICAgICBlbnRpdGllcyA/IHRoaXMuYXNDb2xsZWN0aW9uPE0sIEM+KGVudGl0aWVzLCB7IGFubm90cyB9KSA6IG51bGwsXG4gICAgICApLFxuICAgICk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY2FsbEFycmF5YnVmZmVyKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgeyBhbGlhcywgLi4ub3B0aW9ucyB9OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFPcHRpb25zID0ge30sXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY2FsbEJsb2IoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICB7IGFsaWFzLCAuLi5vcHRpb25zIH06IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YU9wdGlvbnMgPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicsIGFsaWFzLCAuLi5vcHRpb25zIH0pO1xuICB9XG59XG4iXX0=