@aws-cdk/cloudformation-diff 2.121.1 → 2.123.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.
@@ -1,4 +1,4 @@
1
- import { CloudFormation } from 'aws-sdk';
1
+ import type { CloudFormation } from 'aws-sdk';
2
2
  import * as types from './diff/types';
3
3
  export * from './diff/types';
4
4
  /**
@@ -268,4 +268,4 @@ function normalize(template) {
268
268
  }
269
269
  }
270
270
  }
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFLN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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QyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTO2FBQ1Y7aUJBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0QsU0FBUzthQUNWO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtpQkFBTTtnQkFDTCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBTREsgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXRgLCBzbyB0aGUgU0RLIGlzIGFkZGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbi8vIFRoZSBTREsgc2hvdWxkIG5vdCBtYWtlIG5ldHdvcmsgY2FsbHMgaGVyZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb24gfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIGltcGwgZnJvbSAnLi9kaWZmJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwsIGRpZmZLZXllZEVudGl0aWVzLCB1bmlvbk9mIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RpZmYvdHlwZXMnO1xuXG50eXBlIERpZmZIYW5kbGVyID0gKGRpZmY6IHR5cGVzLklUZW1wbGF0ZURpZmYsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHZvaWQ7XG50eXBlIEhhbmRsZXJSZWdpc3RyeSA9IHsgW3NlY3Rpb246IHN0cmluZ106IERpZmZIYW5kbGVyIH07XG5cbmNvbnN0IERJRkZfSEFORExFUlM6IEhhbmRsZXJSZWdpc3RyeSA9IHtcbiAgQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIERlc2NyaXB0aW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuZGVzY3JpcHRpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgTWV0YWRhdGE6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tZXRhZGF0YSA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1ldGFkYXRhKSksXG4gIFBhcmFtZXRlcnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5wYXJhbWV0ZXJzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmUGFyYW1ldGVyKSksXG4gIE1hcHBpbmdzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYubWFwcGluZ3MgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZNYXBwaW5nKSksXG4gIENvbmRpdGlvbnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5jb25kaXRpb25zID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmQ29uZGl0aW9uKSksXG4gIFRyYW5zZm9ybTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnRyYW5zZm9ybSA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBSZXNvdXJjZXM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5yZXNvdXJjZXMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZSZXNvdXJjZSkpLFxuICBPdXRwdXRzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYub3V0cHV0cyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk91dHB1dCkpLFxufTtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHBhcmFtIGN1cnJlbnRUZW1wbGF0ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gbmV3VGVtcGxhdGUgICAgIHRoZSB0YXJnZXQgc3RhdGUgb2YgdGhlIHN0YWNrLlxuICogQHBhcmFtIGNoYW5nZVNldCAgICAgICB0aGUgY2hhbmdlIHNldCBmb3IgdGhpcyBzdGFjay5cbiAqXG4gKiBAcmV0dXJucyBhICt0eXBlcy5UZW1wbGF0ZURpZmYrIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGNoYW5nZXMgdGhhdCB3aWxsIGhhcHBlbiBpZlxuICogICAgICBhIHN0YWNrIHdoaWNoIGN1cnJlbnQgc3RhdGUgaXMgZGVzY3JpYmVkIGJ5ICtjdXJyZW50VGVtcGxhdGUrIGlzIHVwZGF0ZWQgd2l0aFxuICogICAgICB0aGUgdGVtcGxhdGUgK25ld1RlbXBsYXRlKy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZ1bGxEaWZmKFxuICBjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBjaGFuZ2VTZXQ/OiBDbG91ZEZvcm1hdGlvbi5EZXNjcmliZUNoYW5nZVNldE91dHB1dCxcbik6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG5cbiAgbm9ybWFsaXplKGN1cnJlbnRUZW1wbGF0ZSk7XG4gIG5vcm1hbGl6ZShuZXdUZW1wbGF0ZSk7XG4gIGNvbnN0IHRoZURpZmYgPSBkaWZmVGVtcGxhdGUoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZSk7XG4gIGlmIChjaGFuZ2VTZXQpIHtcbiAgICBmaWx0ZXJGYWxzZVBvc2l0aXZpZXModGhlRGlmZiwgY2hhbmdlU2V0KTtcbiAgfVxuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBkaWZmVGVtcGxhdGUoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIC8vIEJhc2UgZGlmZlxuICBjb25zdCB0aGVEaWZmID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuXG4gIC8vIFdlJ3JlIGdvaW5nIHRvIG1vZGlmeSB0aGlzIGluLXBsYWNlXG4gIGNvbnN0IG5ld1RlbXBsYXRlQ29weSA9IGRlZXBDb3B5KG5ld1RlbXBsYXRlKTtcblxuICBsZXQgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcztcbiAgbGV0IGRpZmZXaXRoUmVwbGFjZW1lbnRzO1xuICBkbyB7XG4gICAgZGlmZldpdGhSZXBsYWNlbWVudHMgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZUNvcHkpO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJlcGxhY2VtZW50cyBmb3IgcmVwbGFjZWQgcmVzb3VyY2VzXG4gICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IGZhbHNlO1xuICAgIGlmIChkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMpIHtcbiAgICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VJbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICAgIGlmIChwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXMobmV3VGVtcGxhdGVDb3B5LCBsb2dpY2FsSWQpKSB7XG4gICAgICAgICAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSB3aGlsZSAoZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyk7XG5cbiAgLy8gQ29weSBcInJlcGxhY2VkXCIgc3RhdGVzIGZyb20gYGRpZmZXaXRoUmVwbGFjZW1lbnRzYCB0byBgdGhlRGlmZmAuXG4gIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlc1xuICAgIC5maWx0ZXIociA9PiBpc1JlcGxhY2VtZW50KHIhLmNoYW5nZUltcGFjdCkpXG4gICAgLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGRvd25zdHJlYW1SZXBsYWNlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGVEaWZmLnJlc291cmNlcy5nZXQobG9naWNhbElkKTtcblxuICAgICAgaWYgKHJlc291cmNlLmNoYW5nZUltcGFjdCAhPT0gZG93bnN0cmVhbVJlcGxhY2VtZW50LmNoYW5nZUltcGFjdCkge1xuICAgICAgICBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KGRvd25zdHJlYW1SZXBsYWNlbWVudCwgcmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBpc1JlcGxhY2VtZW50KGltcGFjdDogdHlwZXMuUmVzb3VyY2VJbXBhY3QpIHtcbiAgcmV0dXJuIGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UgfHwgaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG59XG5cbi8qKlxuICogRm9yIGFsbCBwcm9wZXJ0aWVzIGluICdzb3VyY2UnIHRoYXQgaGF2ZSBhIFwicmVwbGFjZW1lbnRcIiBpbXBhY3QsIHByb3BhZ2F0ZSB0aGF0IGltcGFjdCB0byBcImRlc3RcIlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KHNvdXJjZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlLCBkZXN0OiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCAmJiBpc1JlcGxhY2VtZW50KGRpZmYuY2hhbmdlSW1wYWN0KSkge1xuICAgICAgLy8gVXNlIHRoZSBwcm9wZXJ0eWRpZmYgb2Ygc291cmNlIGluIHRhcmdldC4gVGhlIHJlc3VsdCBvZiB0aGlzIGhhcHBlbnMgdG8gYmUgY2xlYXIgZW5vdWdoLlxuICAgICAgZGVzdC5zZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWUsIGRpZmYpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG4gIGNvbnN0IGRpZmZlcmVuY2VzOiB0eXBlcy5JVGVtcGxhdGVEaWZmID0ge307XG4gIGNvbnN0IHVua25vd246IHsgW2tleTogc3RyaW5nXTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IH0gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgdW5pb25PZihPYmplY3Qua2V5cyhjdXJyZW50VGVtcGxhdGUpLCBPYmplY3Qua2V5cyhuZXdUZW1wbGF0ZSkpLnNvcnQoKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gY3VycmVudFRlbXBsYXRlW2tleV07XG4gICAgY29uc3QgbmV3VmFsdWUgPSBuZXdUZW1wbGF0ZVtrZXldO1xuICAgIGlmIChkZWVwRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXI6IERpZmZIYW5kbGVyID0gRElGRl9IQU5ETEVSU1trZXldXG4gICAgICAgICAgICAgICAgICB8fCAoKF9kaWZmLCBvbGRWLCBuZXdWKSA9PiB1bmtub3duW2tleV0gPSBpbXBsLmRpZmZVbmtub3duKG9sZFYsIG5ld1YpKTtcbiAgICBoYW5kbGVyKGRpZmZlcmVuY2VzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh1bmtub3duKS5sZW5ndGggPiAwKSB7XG4gICAgZGlmZmVyZW5jZXMudW5rbm93biA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbih1bmtub3duKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgdHlwZXMuVGVtcGxhdGVEaWZmKGRpZmZlcmVuY2VzKTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZSZXNvdXJjZShvbGRWYWx1ZTogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlOiB0eXBlcy5SZXNvdXJjZSk6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSB7XG4gIHJldHVybiBpbXBsLmRpZmZSZXNvdXJjZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGxvZ2ljYWxJRCBvbiB0aGUgZ2l2ZW4gdGVtcGxhdGUsIGluLXBsYWNlXG4gKlxuICogUmV0dXJucyB0cnVlIGlmZiBhbnkgcmVmZXJlbmNlcyB3ZXJlIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXModGVtcGxhdGU6IG9iamVjdCwgbG9naWNhbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IHJldCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaChyZWN1cnNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXJlcGxhY2VSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9iaikuZm9yRWFjaChyZWN1cnNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlUmVmZXJlbmNlKG9iajogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG5cbiAgICBpZiAoa2V5ID09PSAnUmVmJykge1xuICAgICAgaWYgKG9iai5SZWYgPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmouUmVmID0gbG9naWNhbElkICsgJyAocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgJiYgb2JqW2tleV0ubGVuZ3RoID4gMCAmJiBvYmpba2V5XVswXSA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9ialtrZXldWzBdID0gbG9naWNhbElkICsgJyhyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVjdXJzZSh0ZW1wbGF0ZSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBDb3B5KHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGRlZXBDb3B5KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoeCkpIHtcbiAgICAgIHJldFtrZXldID0gZGVlcENvcHkoeFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJGYWxzZVBvc2l0aXZpZXMoZGlmZjogdHlwZXMuVGVtcGxhdGVEaWZmLCBjaGFuZ2VTZXQ6IENsb3VkRm9ybWF0aW9uLkRlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KSB7XG4gIGNvbnN0IHJlcGxhY2VtZW50cyA9IGZpbmRSZXNvdXJjZVJlcGxhY2VtZW50cyhjaGFuZ2VTZXQpO1xuICBkaWZmLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgY2hhbmdlLmZvckVhY2hEaWZmZXJlbmNlKCh0eXBlOiAnUHJvcGVydHknIHwgJ090aGVyJywgbmFtZTogc3RyaW5nLCB2YWx1ZTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IHwgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGlmICghcmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0pIHtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0ucHJvcGVydGllc1JlcGxhY2VkW25hbWVdKSB7XG4gICAgICAgICAgY2FzZSAnQWx3YXlzJzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnTmV2ZXInOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsbHknOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UsIGRlZmVyIHRvIHRoZSBjaGFuZ2VJbXBhY3QgZnJvbSBgZGlmZlRlbXBsYXRlYFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPdGhlcicpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgY2FzZSAnTWV0YWRhdGEnOlxuICAgICAgICAgICAgY2hhbmdlLnNldE90aGVyQ2hhbmdlKCdNZXRhZGF0YScsIG5ldyB0eXBlcy5EaWZmZXJlbmNlPHN0cmluZz4odmFsdWUubmV3VmFsdWUsIHZhbHVlLm5ld1ZhbHVlKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlc291cmNlUmVwbGFjZW1lbnRzKGNoYW5nZVNldDogQ2xvdWRGb3JtYXRpb24uRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpOiB0eXBlcy5SZXNvdXJjZVJlcGxhY2VtZW50cyB7XG4gIGNvbnN0IHJlcGxhY2VtZW50czogdHlwZXMuUmVzb3VyY2VSZXBsYWNlbWVudHMgPSB7fTtcbiAgZm9yIChjb25zdCByZXNvdXJjZUNoYW5nZSBvZiBjaGFuZ2VTZXQuQ2hhbmdlcyA/PyBbXSkge1xuICAgIGNvbnN0IHByb3BlcnRpZXNSZXBsYWNlZDogeyBbcHJvcE5hbWU6IHN0cmluZ106IHR5cGVzLkNoYW5nZVNldFJlcGxhY2VtZW50IH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5Q2hhbmdlIG9mIHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5EZXRhaWxzID8/IFtdKSB7XG4gICAgICBpZiAocHJvcGVydHlDaGFuZ2UuVGFyZ2V0Py5BdHRyaWJ1dGUgPT09ICdQcm9wZXJ0aWVzJykge1xuICAgICAgICBjb25zdCByZXF1aXJlc1JlcGxhY2VtZW50ID0gcHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiA9PT0gJ0Fsd2F5cyc7XG4gICAgICAgIGlmIChyZXF1aXJlc1JlcGxhY2VtZW50ICYmIHByb3BlcnR5Q2hhbmdlLkV2YWx1YXRpb24gPT09ICdTdGF0aWMnKSB7XG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSAnQWx3YXlzJztcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlc1JlcGxhY2VtZW50ICYmIHByb3BlcnR5Q2hhbmdlLkV2YWx1YXRpb24gPT09ICdEeW5hbWljJykge1xuICAgICAgICAgIC8vIElmIEV2YWx1YXRpb24gaXMgJ0R5bmFtaWMnLCB0aGVuIHRoaXMgbWF5IGNhdXNlIHJlcGxhY2VtZW50LCBvciBpdCBtYXkgbm90LlxuICAgICAgICAgIC8vIHNlZSAnUmVwbGFjZW1lbnQnOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUmVzb3VyY2VDaGFuZ2UuaHRtbFxuICAgICAgICAgIHByb3BlcnRpZXNSZXBsYWNlZFtwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSFdID0gJ0NvbmRpdGlvbmFsbHknO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BlcnRpZXNSZXBsYWNlZFtwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSFdID0gcHJvcGVydHlDaGFuZ2UuVGFyZ2V0LlJlcXVpcmVzUmVjcmVhdGlvbiBhcyB0eXBlcy5DaGFuZ2VTZXRSZXBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXBsYWNlbWVudHNbcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkxvZ2ljYWxSZXNvdXJjZUlkIV0gPSB7XG4gICAgICByZXNvdXJjZVJlcGxhY2VkOiByZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uUmVwbGFjZW1lbnQgPT09ICdUcnVlJyxcbiAgICAgIHByb3BlcnRpZXNSZXBsYWNlZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlcGxhY2VtZW50cztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKHRlbXBsYXRlOiBhbnkpIHtcbiAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiAoT2JqZWN0LmtleXModGVtcGxhdGUgPz8ge30pKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ0ZuOjpHZXRBdHQnICYmIHR5cGVvZiB0ZW1wbGF0ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zcGxpdCgnLicpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnRGVwZW5kc09uJykge1xuICAgICAgICBpZiAodHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IFt0ZW1wbGF0ZVtrZXldXTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgdGVtcGxhdGVba2V5XSA9IHRlbXBsYXRlW2tleV0uc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgKHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgICAgbm9ybWFsaXplKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemUodGVtcGxhdGVba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFLN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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QyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTO2FBQ1Y7aUJBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0QsU0FBUzthQUNWO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtpQkFBTTtnQkFDTCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBTREsgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXRgLCBzbyB0aGUgU0RLIGlzIGFkZGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbi8vIFRoZSBTREsgc2hvdWxkIG5vdCBtYWtlIG5ldHdvcmsgY2FsbHMgaGVyZVxuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbiB9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgaW1wbCBmcm9tICcuL2RpZmYnO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIHVuaW9uT2YgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlmZi90eXBlcyc7XG5cbnR5cGUgRGlmZkhhbmRsZXIgPSAoZGlmZjogdHlwZXMuSVRlbXBsYXRlRGlmZiwgb2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4gdm9pZDtcbnR5cGUgSGFuZGxlclJlZ2lzdHJ5ID0geyBbc2VjdGlvbjogc3RyaW5nXTogRGlmZkhhbmRsZXIgfTtcblxuY29uc3QgRElGRl9IQU5ETEVSUzogSGFuZGxlclJlZ2lzdHJ5ID0ge1xuICBBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgRGVzY3JpcHRpb246IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5kZXNjcmlwdGlvbiA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBNZXRhZGF0YTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm1ldGFkYXRhID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmTWV0YWRhdGEpKSxcbiAgUGFyYW1ldGVyczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnBhcmFtZXRlcnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZQYXJhbWV0ZXIpKSxcbiAgTWFwcGluZ3M6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tYXBwaW5ncyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1hcHBpbmcpKSxcbiAgQ29uZGl0aW9uczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmNvbmRpdGlvbnMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZDb25kaXRpb24pKSxcbiAgVHJhbnNmb3JtOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYudHJhbnNmb3JtID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIFJlc291cmNlczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnJlc291cmNlcyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZlJlc291cmNlKSksXG4gIE91dHB1dHM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5vdXRwdXRzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmT3V0cHV0KSksXG59O1xuXG4vKipcbiAqIENvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgcmV0dXJuIHNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbS5cbiAqXG4gKiBAcGFyYW0gY3VycmVudFRlbXBsYXRlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBuZXdUZW1wbGF0ZSAgICAgdGhlIHRhcmdldCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gY2hhbmdlU2V0ICAgICAgIHRoZSBjaGFuZ2Ugc2V0IGZvciB0aGlzIHN0YWNrLlxuICpcbiAqIEByZXR1cm5zIGEgK3R5cGVzLlRlbXBsYXRlRGlmZisgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhbmdlcyB0aGF0IHdpbGwgaGFwcGVuIGlmXG4gKiAgICAgIGEgc3RhY2sgd2hpY2ggY3VycmVudCBzdGF0ZSBpcyBkZXNjcmliZWQgYnkgK2N1cnJlbnRUZW1wbGF0ZSsgaXMgdXBkYXRlZCB3aXRoXG4gKiAgICAgIHRoZSB0ZW1wbGF0ZSArbmV3VGVtcGxhdGUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnVsbERpZmYoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGNoYW5nZVNldD86IENsb3VkRm9ybWF0aW9uLkRlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0LFxuKTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcblxuICBub3JtYWxpemUoY3VycmVudFRlbXBsYXRlKTtcbiAgbm9ybWFsaXplKG5ld1RlbXBsYXRlKTtcbiAgY29uc3QgdGhlRGlmZiA9IGRpZmZUZW1wbGF0ZShjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlKTtcbiAgaWYgKGNoYW5nZVNldCkge1xuICAgIGZpbHRlckZhbHNlUG9zaXRpdmllcyh0aGVEaWZmLCBjaGFuZ2VTZXQpO1xuICB9XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmZ1bmN0aW9uIGRpZmZUZW1wbGF0ZShcbiAgY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbik6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG5cbiAgLy8gQmFzZSBkaWZmXG4gIGNvbnN0IHRoZURpZmYgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZSk7XG5cbiAgLy8gV2UncmUgZ29pbmcgdG8gbW9kaWZ5IHRoaXMgaW4tcGxhY2VcbiAgY29uc3QgbmV3VGVtcGxhdGVDb3B5ID0gZGVlcENvcHkobmV3VGVtcGxhdGUpO1xuXG4gIGxldCBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzO1xuICBsZXQgZGlmZldpdGhSZXBsYWNlbWVudHM7XG4gIGRvIHtcbiAgICBkaWZmV2l0aFJlcGxhY2VtZW50cyA9IGNhbGN1bGF0ZVRlbXBsYXRlRGlmZihjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlQ29weSk7XG5cbiAgICAvLyBQcm9wYWdhdGUgcmVwbGFjZW1lbnRzIGZvciByZXBsYWNlZCByZXNvdXJjZXNcbiAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gZmFsc2U7XG4gICAgaWYgKGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcykge1xuICAgICAgZGlmZldpdGhSZXBsYWNlbWVudHMucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGNoYW5nZSkgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlLmNoYW5nZUltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFKSB7XG4gICAgICAgICAgaWYgKHByb3BhZ2F0ZVJlcGxhY2VkUmVmZXJlbmNlcyhuZXdUZW1wbGF0ZUNvcHksIGxvZ2ljYWxJZCkpIHtcbiAgICAgICAgICAgIGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9IHdoaWxlIChkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzKTtcblxuICAvLyBDb3B5IFwicmVwbGFjZWRcIiBzdGF0ZXMgZnJvbSBgZGlmZldpdGhSZXBsYWNlbWVudHNgIHRvIGB0aGVEaWZmYC5cbiAgZGlmZldpdGhSZXBsYWNlbWVudHMucmVzb3VyY2VzXG4gICAgLmZpbHRlcihyID0+IGlzUmVwbGFjZW1lbnQociEuY2hhbmdlSW1wYWN0KSlcbiAgICAuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZCwgZG93bnN0cmVhbVJlcGxhY2VtZW50KSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRoZURpZmYucmVzb3VyY2VzLmdldChsb2dpY2FsSWQpO1xuXG4gICAgICBpZiAocmVzb3VyY2UuY2hhbmdlSW1wYWN0ICE9PSBkb3duc3RyZWFtUmVwbGFjZW1lbnQuY2hhbmdlSW1wYWN0KSB7XG4gICAgICAgIHByb3BhZ2F0ZVByb3BlcnR5UmVwbGFjZW1lbnQoZG93bnN0cmVhbVJlcGxhY2VtZW50LCByZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmZ1bmN0aW9uIGlzUmVwbGFjZW1lbnQoaW1wYWN0OiB0eXBlcy5SZXNvdXJjZUltcGFjdCkge1xuICByZXR1cm4gaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRSB8fCBpbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTtcbn1cblxuLyoqXG4gKiBGb3IgYWxsIHByb3BlcnRpZXMgaW4gJ3NvdXJjZScgdGhhdCBoYXZlIGEgXCJyZXBsYWNlbWVudFwiIGltcGFjdCwgcHJvcGFnYXRlIHRoYXQgaW1wYWN0IHRvIFwiZGVzdFwiXG4gKi9cbmZ1bmN0aW9uIHByb3BhZ2F0ZVByb3BlcnR5UmVwbGFjZW1lbnQoc291cmNlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UsIGRlc3Q6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkge1xuICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIGRpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZS5wcm9wZXJ0eVVwZGF0ZXMpKSB7XG4gICAgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ICYmIGlzUmVwbGFjZW1lbnQoZGlmZi5jaGFuZ2VJbXBhY3QpKSB7XG4gICAgICAvLyBVc2UgdGhlIHByb3BlcnR5ZGlmZiBvZiBzb3VyY2UgaW4gdGFyZ2V0LiBUaGUgcmVzdWx0IG9mIHRoaXMgaGFwcGVucyB0byBiZSBjbGVhciBlbm91Z2guXG4gICAgICBkZXN0LnNldFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5TmFtZSwgZGlmZik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVRlbXBsYXRlRGlmZihjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcbiAgY29uc3QgZGlmZmVyZW5jZXM6IHR5cGVzLklUZW1wbGF0ZURpZmYgPSB7fTtcbiAgY29uc3QgdW5rbm93bjogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfSA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiB1bmlvbk9mKE9iamVjdC5rZXlzKGN1cnJlbnRUZW1wbGF0ZSksIE9iamVjdC5rZXlzKG5ld1RlbXBsYXRlKSkuc29ydCgpKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBjdXJyZW50VGVtcGxhdGVba2V5XTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IG5ld1RlbXBsYXRlW2tleV07XG4gICAgaWYgKGRlZXBFcXVhbChvbGRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlcjogRGlmZkhhbmRsZXIgPSBESUZGX0hBTkRMRVJTW2tleV1cbiAgICAgICAgICAgICAgICAgIHx8ICgoX2RpZmYsIG9sZFYsIG5ld1YpID0+IHVua25vd25ba2V5XSA9IGltcGwuZGlmZlVua25vd24ob2xkViwgbmV3VikpO1xuICAgIGhhbmRsZXIoZGlmZmVyZW5jZXMsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKHVua25vd24pLmxlbmd0aCA+IDApIHtcbiAgICBkaWZmZXJlbmNlcy51bmtub3duID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKHVua25vd24pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyB0eXBlcy5UZW1wbGF0ZURpZmYoZGlmZmVyZW5jZXMpO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHJlc291cmNlcyBhbmQgcmV0dXJuIHNlbWFudGljIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZlJlc291cmNlKG9sZFZhbHVlOiB0eXBlcy5SZXNvdXJjZSwgbmV3VmFsdWU6IHR5cGVzLlJlc291cmNlKTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIGltcGwuZGlmZlJlc291cmNlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbi8qKlxuICogUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZ2l2ZW4gbG9naWNhbElEIG9uIHRoZSBnaXZlbiB0ZW1wbGF0ZSwgaW4tcGxhY2VcbiAqXG4gKiBSZXR1cm5zIHRydWUgaWZmIGFueSByZWZlcmVuY2VzIHdlcmUgcmVwbGFjZWQuXG4gKi9cbmZ1bmN0aW9uIHByb3BhZ2F0ZVJlcGxhY2VkUmVmZXJlbmNlcyh0ZW1wbGF0ZTogb2JqZWN0LCBsb2dpY2FsSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgcmV0ID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gcmVjdXJzZShvYmo6IGFueSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIG9iai5mb3JFYWNoKHJlY3Vyc2UpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgIGlmICghcmVwbGFjZVJlZmVyZW5jZShvYmopKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMob2JqKS5mb3JFYWNoKHJlY3Vyc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VSZWZlcmVuY2Uob2JqOiBhbnkpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgY29uc3Qga2V5ID0ga2V5c1swXTtcblxuICAgIGlmIChrZXkgPT09ICdSZWYnKSB7XG4gICAgICBpZiAob2JqLlJlZiA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9iai5SZWYgPSBsb2dpY2FsSWQgKyAnIChyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdGbjo6JykpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ialtrZXldKSAmJiBvYmpba2V5XS5sZW5ndGggPiAwICYmIG9ialtrZXldWzBdID09PSBsb2dpY2FsSWQpIHtcbiAgICAgICAgb2JqW2tleV1bMF0gPSBsb2dpY2FsSWQgKyAnKHJlcGxhY2VkKSc7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZWN1cnNlKHRlbXBsYXRlKTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZGVlcENvcHkoeDogYW55KTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5tYXAoZGVlcENvcHkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh4KSkge1xuICAgICAgcmV0W2tleV0gPSBkZWVwQ29weSh4W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmV0dXJuIHg7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckZhbHNlUG9zaXRpdmllcyhkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYsIGNoYW5nZVNldDogQ2xvdWRGb3JtYXRpb24uRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gZmluZFJlc291cmNlUmVwbGFjZW1lbnRzKGNoYW5nZVNldCk7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBjaGFuZ2UuZm9yRWFjaERpZmZlcmVuY2UoKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfCB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdQcm9wZXJ0eScpIHtcbiAgICAgICAgaWYgKCFyZXBsYWNlbWVudHNbbG9naWNhbElkXSkge1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChyZXBsYWNlbWVudHNbbG9naWNhbElkXS5wcm9wZXJ0aWVzUmVwbGFjZWRbbmFtZV0pIHtcbiAgICAgICAgICBjYXNlICdBbHdheXMnOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdOZXZlcic6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQ29uZGl0aW9uYWxseSc6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIC8vIG90aGVyd2lzZSwgZGVmZXIgdG8gdGhlIGNoYW5nZUltcGFjdCBmcm9tIGBkaWZmVGVtcGxhdGVgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ090aGVyJykge1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdNZXRhZGF0YSc6XG4gICAgICAgICAgICBjaGFuZ2Uuc2V0T3RoZXJDaGFuZ2UoJ01ldGFkYXRhJywgbmV3IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPih2YWx1ZS5uZXdWYWx1ZSwgdmFsdWUubmV3VmFsdWUpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVzb3VyY2VSZXBsYWNlbWVudHMoY2hhbmdlU2V0OiBDbG91ZEZvcm1hdGlvbi5EZXNjcmliZUNoYW5nZVNldE91dHB1dCk6IHR5cGVzLlJlc291cmNlUmVwbGFjZW1lbnRzIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzOiB0eXBlcy5SZXNvdXJjZVJlcGxhY2VtZW50cyA9IHt9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlQ2hhbmdlIG9mIGNoYW5nZVNldC5DaGFuZ2VzID8/IFtdKSB7XG4gICAgY29uc3QgcHJvcGVydGllc1JlcGxhY2VkOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogdHlwZXMuQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkRldGFpbHMgPz8gW10pIHtcbiAgICAgIGlmIChwcm9wZXJ0eUNoYW5nZS5UYXJnZXQ/LkF0dHJpYnV0ZSA9PT0gJ1Byb3BlcnRpZXMnKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVzUmVwbGFjZW1lbnQgPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uID09PSAnQWx3YXlzJztcbiAgICAgICAgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ1N0YXRpYycpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9ICdBbHdheXMnO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ0R5bmFtaWMnKSB7XG4gICAgICAgICAgLy8gSWYgRXZhbHVhdGlvbiBpcyAnRHluYW1pYycsIHRoZW4gdGhpcyBtYXkgY2F1c2UgcmVwbGFjZW1lbnQsIG9yIGl0IG1heSBub3QuXG4gICAgICAgICAgLy8gc2VlICdSZXBsYWNlbWVudCc6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZXNvdXJjZUNoYW5nZS5odG1sXG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSAnQ29uZGl0aW9uYWxseSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uIGFzIHR5cGVzLkNoYW5nZVNldFJlcGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlcGxhY2VtZW50c1tyZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uTG9naWNhbFJlc291cmNlSWQhXSA9IHtcbiAgICAgIHJlc291cmNlUmVwbGFjZWQ6IHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5SZXBsYWNlbWVudCA9PT0gJ1RydWUnLFxuICAgICAgcHJvcGVydGllc1JlcGxhY2VkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZW1lbnRzO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUodGVtcGxhdGU6IGFueSkge1xuICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIChPYmplY3Qua2V5cyh0ZW1wbGF0ZSA/PyB7fSkpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnRm46OkdldEF0dCcgJiYgdHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRlbXBsYXRlW2tleV0gPSB0ZW1wbGF0ZVtrZXldLnNwbGl0KCcuJyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGVba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gW3RlbXBsYXRlW2tleV1dO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiAodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICBub3JtYWxpemUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZSh0ZW1wbGF0ZVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/cloudformation-diff",
3
- "version": "2.121.1",
3
+ "version": "2.123.0",
4
4
  "description": "Utilities to diff CDK stacks against CloudFormation templates",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -23,8 +23,8 @@
23
23
  },
24
24
  "license": "Apache-2.0",
25
25
  "dependencies": {
26
- "@aws-cdk/aws-service-spec": "^0.0.40",
27
- "@aws-cdk/service-spec-types": "^0.0.40",
26
+ "@aws-cdk/aws-service-spec": "^0.0.43",
27
+ "@aws-cdk/service-spec-types": "^0.0.43",
28
28
  "chalk": "^4",
29
29
  "diff": "^5.1.0",
30
30
  "fast-deep-equal": "^3.1.3",
@@ -32,14 +32,14 @@
32
32
  "table": "^6.8.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@aws-cdk/cdk-build-tools": "2.121.1-alpha.0",
36
- "@aws-cdk/pkglint": "2.121.1-alpha.0",
35
+ "@aws-cdk/cdk-build-tools": "2.123.0-alpha.0",
36
+ "@aws-cdk/pkglint": "2.123.0-alpha.0",
37
37
  "@types/jest": "^29.5.11",
38
38
  "@types/string-width": "^4.0.1",
39
39
  "fast-check": "^3.15.0",
40
40
  "jest": "^29.7.0",
41
- "aws-sdk": "2.1532.0",
42
- "ts-jest": "^29.1.1"
41
+ "aws-sdk": "2.1542.0",
42
+ "ts-jest": "^29.1.2"
43
43
  },
44
44
  "repository": {
45
45
  "url": "https://github.com/aws/aws-cdk.git",