truemark-cdk-lib 1.2.4-alpha.32 → 1.2.4-alpha.35

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.
@@ -7,7 +7,7 @@ export interface ExtendedNodejsFunctionProps extends NodejsFunctionProps, Functi
7
7
  }
8
8
  export declare class ExtendedNodejsFunction extends NodejsFunction {
9
9
  readonly alarms: FunctionAlarms;
10
- readonly deployment: FunctionDeployment;
10
+ readonly deployment?: FunctionDeployment;
11
11
  private static findDepsLockFile;
12
12
  constructor(scope: Construct, id: string, props: ExtendedNodejsFunctionProps);
13
13
  }
@@ -50,4 +50,4 @@ class ExtendedNodejsFunction extends aws_lambda_nodejs_1.NodejsFunction {
50
50
  }
51
51
  }
52
52
  exports.ExtendedNodejsFunction = ExtendedNodejsFunction;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtbm9kZWpzLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtbm9kZWpzLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUF3RTtBQUN4RSwrREFBeUQ7QUFFekQsbURBQW1EO0FBQ25ELHVEQUE2RDtBQUM3RCw2Q0FBcUM7QUFDckMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxRUFBa0Y7QUFNbEYsTUFBYSxzQkFBdUIsU0FBUSxrQ0FBYztJQWV4RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtDOztRQUUxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSx3QkFBYSxDQUFDLFVBQVU7WUFDdEMsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtZQUNqQyxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3RFLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDL0MsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxnQkFBZ0IsbUNBQUUsSUFBSSxFQUFFO1lBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUMzRCxHQUFHLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxxQkFBcUIsbUNBQUUsSUFBSSxFQUFFO2dCQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxvQkFBb0IsbUNBQUUsS0FBSyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7SUFDSCxDQUFDO0lBeENPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF5QjtRQUN2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUM3RSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxnQkFBZ0IsQ0FBQzthQUN6QjtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQWlDRjtBQTlDRCx3REE4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RnVuY3Rpb25BbGFybXMsIEZ1bmN0aW9uQWxhcm1zT3B0aW9uc30gZnJvbSBcIi4vZnVuY3Rpb24tYWxhcm1zXCI7XG5pbXBvcnQge0Z1bmN0aW9uRGVwbG95bWVudH0gZnJvbSBcIi4vZnVuY3Rpb24tZGVwbG95bWVudFwiO1xuaW1wb3J0IHtEZXBsb3llZEZ1bmN0aW9uT3B0aW9uc30gZnJvbSBcIi4vZXh0ZW5kZWQtZnVuY3Rpb25cIjtcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0FyY2hpdGVjdHVyZSwgUnVudGltZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7RHVyYXRpb259IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge05vZGVqc0Z1bmN0aW9uLCBOb2RlanNGdW5jdGlvblByb3BzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZE5vZGVqc0Z1bmN0aW9uUHJvcHMgZXh0ZW5kcyBOb2RlanNGdW5jdGlvblByb3BzLCBGdW5jdGlvbkFsYXJtc09wdGlvbnMsIERlcGxveWVkRnVuY3Rpb25PcHRpb25zIHtcblxufVxuXG5leHBvcnQgY2xhc3MgRXh0ZW5kZWROb2RlanNGdW5jdGlvbiBleHRlbmRzIE5vZGVqc0Z1bmN0aW9uIHtcblxuICByZWFkb25seSBhbGFybXM6IEZ1bmN0aW9uQWxhcm1zO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBGdW5jdGlvbkRlcGxveW1lbnQ7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZmluZERlcHNMb2NrRmlsZShlbnRyeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZGVwc0xvY2tGaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoZW50cnkpLCBcInBhY2thZ2UtbG9jay5qc29uXCIpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVwc0xvY2tGaWxlUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGRlcHNMb2NrRmlsZVBhdGg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFeHRlbmRlZE5vZGVqc0Z1bmN0aW9uUHJvcHMpIHtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgbG9nUmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRIUkVFX0RBWVMsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gSU5GSU5JVEVcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCwgLy8gY2hhbmdlIGRlZmF1bHQgZnJvbSBYODZfNjRcbiAgICAgIG1lbW9yeVNpemU6IDc2OCwgLy8gY2hhbmdlIGRlZmF1bHQgZnJvbSAxMjhcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLCAvLyBjaGFuZ2UgZGVmYXVsdCBmcm9tIDNcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE2X1gsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gTk9ERUpTXzE0X1hcbiAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IEV4dGVuZGVkTm9kZWpzRnVuY3Rpb24uZmluZERlcHNMb2NrRmlsZShwcm9wcy5lbnRyeSksXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuXG4gICAgdGhpcy5hbGFybXMgPSBuZXcgRnVuY3Rpb25BbGFybXModGhpcywgXCJBbGFybXNcIiwge1xuICAgICAgZnVuY3Rpb246IHRoaXMsXG4gICAgICBsb2dHcm91cDogdGhpcy5sb2dHcm91cCxcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuZGVwbG95bWVudE9wdGlvbnM/LmNyZWF0ZURlcGxveW1lbnQ/P3RydWUpIHtcbiAgICAgIHRoaXMuZGVwbG95bWVudCA9IG5ldyBGdW5jdGlvbkRlcGxveW1lbnQodGhpcywgXCJEZXBsb3ltZW50XCIsIHtcbiAgICAgICAgLi4ucHJvcHMuZGVwbG95bWVudE9wdGlvbnMsXG4gICAgICAgIGZ1bmN0aW9uOiB0aGlzXG4gICAgICB9KTtcbiAgICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uaW5jbHVkZUNyaXRpY2FsQWxhcm1zPz90cnVlKSB7XG4gICAgICAgIHRoaXMuZGVwbG95bWVudC5hZGRBbGFybXMoLi4udGhpcy5hbGFybXMuZ2V0Q3JpdGljYWxBbGFybXMoKSk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZGVwbG95bWVudE9wdGlvbnM/LmluY2x1ZGVXYXJuaW5nQWxhcm1zPz9mYWxzZSkge1xuICAgICAgICB0aGlzLmRlcGxveW1lbnQuYWRkQWxhcm1zKC4uLnRoaXMuYWxhcm1zLmdldFdhcm5pbmdBbGFybXMoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtbm9kZWpzLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtbm9kZWpzLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUF3RTtBQUN4RSwrREFBeUQ7QUFFekQsbURBQW1EO0FBQ25ELHVEQUE2RDtBQUM3RCw2Q0FBcUM7QUFDckMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxRUFBa0Y7QUFNbEYsTUFBYSxzQkFBdUIsU0FBUSxrQ0FBYztJQWV4RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtDOztRQUUxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSx3QkFBYSxDQUFDLFVBQVU7WUFDdEMsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtZQUNqQyxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3RFLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDL0MsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxnQkFBZ0IsbUNBQUUsSUFBSSxFQUFFO1lBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUMzRCxHQUFHLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxxQkFBcUIsbUNBQUUsSUFBSSxFQUFFO2dCQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsZ0JBQUksS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxvQkFBb0IsbUNBQUUsS0FBSyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7SUFDSCxDQUFDO0lBeENPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF5QjtRQUN2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUM3RSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxnQkFBZ0IsQ0FBQzthQUN6QjtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQWlDRjtBQTlDRCx3REE4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RnVuY3Rpb25BbGFybXMsIEZ1bmN0aW9uQWxhcm1zT3B0aW9uc30gZnJvbSBcIi4vZnVuY3Rpb24tYWxhcm1zXCI7XG5pbXBvcnQge0Z1bmN0aW9uRGVwbG95bWVudH0gZnJvbSBcIi4vZnVuY3Rpb24tZGVwbG95bWVudFwiO1xuaW1wb3J0IHtEZXBsb3llZEZ1bmN0aW9uT3B0aW9uc30gZnJvbSBcIi4vZXh0ZW5kZWQtZnVuY3Rpb25cIjtcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0FyY2hpdGVjdHVyZSwgUnVudGltZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7RHVyYXRpb259IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge05vZGVqc0Z1bmN0aW9uLCBOb2RlanNGdW5jdGlvblByb3BzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZE5vZGVqc0Z1bmN0aW9uUHJvcHMgZXh0ZW5kcyBOb2RlanNGdW5jdGlvblByb3BzLCBGdW5jdGlvbkFsYXJtc09wdGlvbnMsIERlcGxveWVkRnVuY3Rpb25PcHRpb25zIHtcblxufVxuXG5leHBvcnQgY2xhc3MgRXh0ZW5kZWROb2RlanNGdW5jdGlvbiBleHRlbmRzIE5vZGVqc0Z1bmN0aW9uIHtcblxuICByZWFkb25seSBhbGFybXM6IEZ1bmN0aW9uQWxhcm1zO1xuICByZWFkb25seSBkZXBsb3ltZW50PzogRnVuY3Rpb25EZXBsb3ltZW50O1xuXG4gIHByaXZhdGUgc3RhdGljIGZpbmREZXBzTG9ja0ZpbGUoZW50cnk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGVudHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRlcHNMb2NrRmlsZVBhdGggPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGVudHJ5KSwgXCJwYWNrYWdlLWxvY2suanNvblwiKTtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGRlcHNMb2NrRmlsZVBhdGgpKSB7XG4gICAgICAgIHJldHVybiBkZXBzTG9ja0ZpbGVQYXRoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXh0ZW5kZWROb2RlanNGdW5jdGlvblByb3BzKSB7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9EQVlTLCAvLyBjaGFuZ2UgZGVmYXVsdCBmcm9tIElORklOSVRFXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gWDg2XzY0XG4gICAgICBtZW1vcnlTaXplOiA3NjgsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gMTI4XG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSwgLy8gY2hhbmdlIGRlZmF1bHQgZnJvbSAzXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xNl9YLCAvLyBjaGFuZ2UgZGVmYXVsdCBmcm9tIE5PREVKU18xNF9YXG4gICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBFeHRlbmRlZE5vZGVqc0Z1bmN0aW9uLmZpbmREZXBzTG9ja0ZpbGUocHJvcHMuZW50cnkpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcblxuICAgIHRoaXMuYWxhcm1zID0gbmV3IEZ1bmN0aW9uQWxhcm1zKHRoaXMsIFwiQWxhcm1zXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiB0aGlzLFxuICAgICAgbG9nR3JvdXA6IHRoaXMubG9nR3JvdXAsXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5jcmVhdGVEZXBsb3ltZW50Pz90cnVlKSB7XG4gICAgICB0aGlzLmRlcGxveW1lbnQgPSBuZXcgRnVuY3Rpb25EZXBsb3ltZW50KHRoaXMsIFwiRGVwbG95bWVudFwiLCB7XG4gICAgICAgIC4uLnByb3BzLmRlcGxveW1lbnRPcHRpb25zLFxuICAgICAgICBmdW5jdGlvbjogdGhpc1xuICAgICAgfSk7XG4gICAgICBpZiAocHJvcHMuZGVwbG95bWVudE9wdGlvbnM/LmluY2x1ZGVDcml0aWNhbEFsYXJtcz8/dHJ1ZSkge1xuICAgICAgICB0aGlzLmRlcGxveW1lbnQuYWRkQWxhcm1zKC4uLnRoaXMuYWxhcm1zLmdldENyaXRpY2FsQWxhcm1zKCkpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlV2FybmluZ0FsYXJtcz8/ZmFsc2UpIHtcbiAgICAgICAgdGhpcy5kZXBsb3ltZW50LmFkZEFsYXJtcyguLi50aGlzLmFsYXJtcy5nZXRXYXJuaW5nQWxhcm1zKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,8 +1,10 @@
1
1
  import { Construct } from "constructs";
2
- import { IMachineImage, InstanceClass, InstanceSize, InstanceType, ISubnet, IVpc } from "aws-cdk-lib/aws-ec2";
2
+ import { CfnEIP, IMachineImage, InstanceClass, InstanceSize, InstanceType, ISubnet, IVpc, SecurityGroup, Volume } from "aws-cdk-lib/aws-ec2";
3
3
  import { Duration, RemovalPolicy, Size } from "aws-cdk-lib";
4
4
  import { IKey } from "aws-cdk-lib/aws-kms";
5
- import { IHostedZone } from "aws-cdk-lib/aws-route53";
5
+ import { AutoScalingGroup } from "aws-cdk-lib/aws-autoscaling";
6
+ import { ARecord, IHostedZone } from "aws-cdk-lib/aws-route53";
7
+ import { ApplicationListenerRule, ApplicationTargetGroup, IApplicationListener } from "aws-cdk-lib/aws-elasticloadbalancingv2";
6
8
  /**
7
9
  * Properties for WordPressInstance.
8
10
  */
@@ -90,19 +92,31 @@ export interface WordPressInstanceProps {
90
92
  */
91
93
  readonly sites: string[];
92
94
  /**
93
- * Prefix for the DNS record pointing to the EC2 instance.
95
+ * Creates an elastic IP for this EC2 instance. Default is true.
96
+ *
97
+ * @default - true
98
+ */
99
+ readonly createEip?: boolean;
100
+ /**
101
+ * Prefix for the DNS record pointing to the elastic IP address for the EC2 instance.
94
102
  */
95
103
  readonly hostPrefix?: string;
96
104
  /**
97
- * the zone for the DNS record pointing to the EC2 instance.
105
+ * Zone for the DNS record pointing to the elastic IP address for the EC2 instance.
98
106
  */
99
107
  readonly hostZone?: IHostedZone | string;
100
108
  /**
101
- * The TTL to use on the DNS record pointing to the EC2 instance.
109
+ * The TTL to use on the DNS record pointing to the elastic IP address for the EC2 instance.
102
110
  *
103
111
  * @default - Duration.seconds(300)
104
112
  */
105
113
  readonly hostRecordTtl?: Duration;
114
+ /**
115
+ * Creates a target group which can be attached to an application load balancer. Default is false.
116
+ *
117
+ * @default - false
118
+ */
119
+ readonly createTargetGroup?: boolean;
106
120
  }
107
121
  export declare const DEFAULT_ARM_IMAGE_SSM_PARAMETER = "/aws/service/canonical/ubuntu/server/jammy/stable/current/arm64/hvm/ebs-gp2/ami-id";
108
122
  export declare const DEFAULT_AMD64_IMAGE_SSM_PARAMETER = "/aws/service/canonical/ubuntu/server/jammy/stable/current/amd64/hvm/ebs-gp2/ami-id";
@@ -110,9 +124,16 @@ export declare const DEFAULT_AMD64_IMAGE_SSM_PARAMETER = "/aws/service/canonical
110
124
  * Creates a new WordPress instance.
111
125
  */
112
126
  export declare class WordPressInstance extends Construct {
127
+ readonly eip?: CfnEIP;
128
+ readonly eipARecord?: ARecord;
129
+ readonly targetGroup?: ApplicationTargetGroup;
130
+ readonly volume: Volume;
131
+ readonly securityGroup: SecurityGroup;
132
+ readonly asg: AutoScalingGroup;
113
133
  resolveVpc(scope: Construct, props: WordPressInstanceProps): IVpc;
114
134
  resolveInstanceType(scope: Construct, props: WordPressInstanceProps): InstanceType;
115
135
  resolveSubnet(scope: Construct, props: WordPressInstanceProps): ISubnet;
116
136
  resolveMachineImage(instanceType: InstanceType): IMachineImage;
117
137
  constructor(scope: Construct, id: string, props: WordPressInstanceProps);
138
+ addListenerRule(listener: IApplicationListener, priority: number, pathPatterns?: string[]): ApplicationListenerRule;
118
139
  }
@@ -9,55 +9,17 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
9
  const fs = require("fs");
10
10
  const path = require("path");
11
11
  const aws_route53_1 = require("aws-cdk-lib/aws-route53");
12
- const index_1 = require("../../aws-route53/index");
12
+ const aws_route53_2 = require("../../aws-route53");
13
+ const aws_elasticloadbalancingv2_1 = require("aws-cdk-lib/aws-elasticloadbalancingv2");
14
+ const aws_elasticloadbalancingv2_targets_1 = require("aws-cdk-lib/aws-elasticloadbalancingv2-targets");
13
15
  exports.DEFAULT_ARM_IMAGE_SSM_PARAMETER = "/aws/service/canonical/ubuntu/server/jammy/stable/current/arm64/hvm/ebs-gp2/ami-id";
14
16
  exports.DEFAULT_AMD64_IMAGE_SSM_PARAMETER = "/aws/service/canonical/ubuntu/server/jammy/stable/current/amd64/hvm/ebs-gp2/ami-id";
15
17
  /**
16
18
  * Creates a new WordPress instance.
17
19
  */
18
20
  class WordPressInstance extends constructs_1.Construct {
19
- resolveVpc(scope, props) {
20
- if (props.vpc === undefined && props.vpcId === undefined && props.vpcName === undefined) {
21
- throw new Error("One of vpc, vpcId or vpcName is required");
22
- }
23
- if (props.vpc !== undefined) {
24
- return props.vpc;
25
- }
26
- else if (props.vpcId !== undefined) {
27
- return aws_ec2_1.Vpc.fromLookup(this, "Vpc", {
28
- vpcId: props.vpcId
29
- });
30
- }
31
- else {
32
- return aws_ec2_1.Vpc.fromLookup(this, "Vpc", {
33
- vpcName: props.vpcName
34
- });
35
- }
36
- }
37
- resolveInstanceType(scope, props) {
38
- var _a, _b;
39
- return props.instanceType !== undefined
40
- ? props.instanceType
41
- : aws_ec2_1.InstanceType.of((_a = props.instanceClass) !== null && _a !== void 0 ? _a : aws_ec2_1.InstanceClass.BURSTABLE4_GRAVITON, (_b = props.instanceSize) !== null && _b !== void 0 ? _b : aws_ec2_1.InstanceSize.MICRO);
42
- }
43
- resolveSubnet(scope, props) {
44
- if (props.subnetId !== undefined) {
45
- return aws_ec2_1.Subnet.fromSubnetId(scope, "Subnet", props.subnetId);
46
- }
47
- if (props.subnet !== undefined) {
48
- return props.subnet;
49
- }
50
- throw new Error("One of subnet or subnetId is required");
51
- }
52
- resolveMachineImage(instanceType) {
53
- return aws_ec2_1.MachineImage.fromSsmParameter(instanceType.architecture === aws_ec2_1.InstanceArchitecture.ARM_64
54
- ? exports.DEFAULT_ARM_IMAGE_SSM_PARAMETER
55
- : exports.DEFAULT_AMD64_IMAGE_SSM_PARAMETER, {
56
- os: aws_ec2_1.OperatingSystemType.LINUX
57
- });
58
- }
59
21
  constructor(scope, id, props) {
60
- var _a, _b, _c;
22
+ var _a, _b, _c, _d, _e;
61
23
  super(scope, id);
62
24
  for (let site of props.sites) {
63
25
  if (site.toLowerCase().startsWith("www")) {
@@ -70,9 +32,8 @@ class WordPressInstance extends constructs_1.Construct {
70
32
  const vpcSubnets = {
71
33
  subnets: [subnet]
72
34
  };
73
- let eip = undefined;
74
- if (props.hostPrefix !== undefined && props.hostZone !== undefined) {
75
- eip = new aws_ec2_1.CfnEIP(this, "PublicIpAddress", {
35
+ if ((_a = props.createEip) !== null && _a !== void 0 ? _a : true) {
36
+ this.eip = new aws_ec2_1.CfnEIP(this, "PublicIpAddress", {
76
37
  tags: [
77
38
  {
78
39
  key: "Name",
@@ -80,49 +41,46 @@ class WordPressInstance extends constructs_1.Construct {
80
41
  }
81
42
  ]
82
43
  });
83
- const hostName = new index_1.DomainName({
84
- prefix: props.hostPrefix,
85
- zone: props.hostZone
86
- });
87
- hostName.createARecord(this, aws_route53_1.RecordTarget.fromIpAddresses(eip.ref), { ttl: (_a = props.hostRecordTtl) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.Duration.seconds(300) });
44
+ if (props.hostPrefix !== undefined && props.hostZone !== undefined) {
45
+ const hostName = new aws_route53_2.DomainName({
46
+ prefix: props.hostPrefix,
47
+ zone: props.hostZone
48
+ });
49
+ this.eipARecord = hostName.createARecord(this, aws_route53_1.RecordTarget.fromIpAddresses(this.eip.ref), { ttl: (_b = props.hostRecordTtl) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Duration.seconds(300) });
50
+ }
88
51
  }
89
- const volume = new aws_ec2_1.Volume(this, "DataVolume", {
90
- size: (_b = props.dataVolumeSize) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Size.gibibytes(10),
52
+ this.volume = new aws_ec2_1.Volume(this, "DataVolume", {
53
+ size: (_c = props.dataVolumeSize) !== null && _c !== void 0 ? _c : aws_cdk_lib_1.Size.gibibytes(10),
91
54
  volumeType: aws_autoscaling_1.EbsDeviceVolumeType.GP3,
92
55
  encrypted: true,
93
56
  encryptionKey: props.encryptionKey,
94
57
  volumeName: `${this.node.path}/Data`,
95
- removalPolicy: (_c = props.dataVolumeRemovalPolicy) !== null && _c !== void 0 ? _c : aws_cdk_lib_1.RemovalPolicy.RETAIN,
58
+ removalPolicy: (_d = props.dataVolumeRemovalPolicy) !== null && _d !== void 0 ? _d : aws_cdk_lib_1.RemovalPolicy.RETAIN,
96
59
  availabilityZone: props.availabilityZone,
97
60
  });
98
- // const backupPlan = BackupPlan.daily35DayRetention(this, "BackupPlan");
99
- // backupPlan.addSelection("BackupSelection", {
100
- // resources: [BackupResource.fromConstruct(volume)]
101
- // });
102
- // TODO Setup backups on Volume
103
61
  const instanceType = this.resolveInstanceType(this, props);
104
62
  const machineImage = this.resolveMachineImage(instanceType);
105
63
  const osVolumeSize = props.osVolumeSize === undefined ? 10 : props.osVolumeSize.toGibibytes();
106
64
  const userDataScript = fs.readFileSync(path.join(__dirname, "init.sh"), "utf-8");
107
- const securityGroup = new aws_ec2_1.SecurityGroup(this, "SecurityGroup", {
65
+ this.securityGroup = new aws_ec2_1.SecurityGroup(this, "SecurityGroup", {
108
66
  description: "Default security group for WordPress",
109
67
  vpc,
110
68
  allowAllOutbound: true,
111
69
  allowAllIpv6Outbound: true,
112
70
  });
113
- securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(2020));
114
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("10.0.0.0/8"), aws_ec2_1.Port.tcp(22));
115
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("172.16.0.0/12"), aws_ec2_1.Port.tcp(22));
116
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("192.168.0.0/16"), aws_ec2_1.Port.tcp(22));
117
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fc00::/7"), aws_ec2_1.Port.tcp(22));
118
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fd00::/8"), aws_ec2_1.Port.tcp(22));
119
- securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fec0::/10"), aws_ec2_1.Port.tcp(22));
120
- securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(80));
71
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(2020));
72
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("10.0.0.0/8"), aws_ec2_1.Port.tcp(22));
73
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("172.16.0.0/12"), aws_ec2_1.Port.tcp(22));
74
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv4("192.168.0.0/16"), aws_ec2_1.Port.tcp(22));
75
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fc00::/7"), aws_ec2_1.Port.tcp(22));
76
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fd00::/8"), aws_ec2_1.Port.tcp(22));
77
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.ipv6("fec0::/10"), aws_ec2_1.Port.tcp(22));
78
+ this.securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(80));
121
79
  // TODO Later on we want to whitelist cloudfront http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
122
- const asg = new aws_autoscaling_1.AutoScalingGroup(this, "Scaling", {
80
+ this.asg = new aws_autoscaling_1.AutoScalingGroup(this, "Scaling", {
123
81
  vpc,
124
82
  vpcSubnets,
125
- securityGroup,
83
+ securityGroup: this.securityGroup,
126
84
  minCapacity: 0,
127
85
  maxCapacity: 1,
128
86
  desiredCapacity: 1,
@@ -142,24 +100,24 @@ class WordPressInstance extends constructs_1.Construct {
142
100
  updatePolicy: aws_autoscaling_1.UpdatePolicy.rollingUpdate(),
143
101
  requireImdsv2: true,
144
102
  });
145
- aws_cdk_lib_1.Tags.of(asg).add("wordpress:data-volume", volume.volumeId);
146
- aws_cdk_lib_1.Tags.of(asg).add("wordpress:sites", props.sites.join(" ").toLowerCase());
147
- asg.role.addManagedPolicy(aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("AmazonSSMManagedInstanceCore"));
148
- asg.addToRolePolicy(new aws_iam_1.PolicyStatement({
103
+ aws_cdk_lib_1.Tags.of(this.asg).add("wordpress:data-volume", this.volume.volumeId);
104
+ aws_cdk_lib_1.Tags.of(this.asg).add("wordpress:sites", props.sites.join(" ").toLowerCase());
105
+ this.asg.role.addManagedPolicy(aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("AmazonSSMManagedInstanceCore"));
106
+ this.asg.addToRolePolicy(new aws_iam_1.PolicyStatement({
149
107
  effect: aws_iam_1.Effect.ALLOW,
150
108
  actions: ["ec2:DescribeTags", "ec2:DescribeVolumes"],
151
109
  resources: ["*"]
152
110
  }));
153
- if (eip !== undefined) {
154
- aws_cdk_lib_1.Tags.of(asg).add("aws-patterns-wordpress:eip-allocation-id", eip.attrAllocationId);
155
- asg.addToRolePolicy(new aws_iam_1.PolicyStatement({
111
+ if (this.eip !== undefined) {
112
+ aws_cdk_lib_1.Tags.of(this.asg).add("aws-patterns-wordpress:eip-allocation-id", this.eip.attrAllocationId);
113
+ this.asg.addToRolePolicy(new aws_iam_1.PolicyStatement({
156
114
  effect: aws_iam_1.Effect.ALLOW,
157
115
  actions: ["ec2:DisassociateAddress", "ec2:AssociateAddress"],
158
116
  resources: [
159
117
  aws_cdk_lib_1.Arn.format({
160
118
  service: "ec2",
161
119
  resource: "elastic-ip",
162
- resourceName: eip.attrAllocationId
120
+ resourceName: this.eip.attrAllocationId
163
121
  }, stack),
164
122
  aws_cdk_lib_1.Arn.format({
165
123
  service: "ec2",
@@ -169,9 +127,68 @@ class WordPressInstance extends constructs_1.Construct {
169
127
  ]
170
128
  }));
171
129
  }
172
- volume.grantAttachVolume(asg);
173
- volume.grantDetachVolume(asg);
130
+ this.volume.grantAttachVolume(this.asg);
131
+ this.volume.grantDetachVolume(this.asg);
132
+ if ((_e = props.createTargetGroup) !== null && _e !== void 0 ? _e : false) {
133
+ this.targetGroup = new aws_elasticloadbalancingv2_1.ApplicationTargetGroup(this, "TargetGroup", {
134
+ port: 80,
135
+ protocol: aws_elasticloadbalancingv2_1.ApplicationProtocol.HTTP,
136
+ protocolVersion: aws_elasticloadbalancingv2_1.ApplicationProtocolVersion.HTTP2,
137
+ targets: [this.eip !== undefined ? new aws_elasticloadbalancingv2_targets_1.IpTarget(this.eip.ref) : this.asg]
138
+ });
139
+ }
140
+ }
141
+ resolveVpc(scope, props) {
142
+ if (props.vpc === undefined && props.vpcId === undefined && props.vpcName === undefined) {
143
+ throw new Error("One of vpc, vpcId or vpcName is required");
144
+ }
145
+ if (props.vpc !== undefined) {
146
+ return props.vpc;
147
+ }
148
+ else if (props.vpcId !== undefined) {
149
+ return aws_ec2_1.Vpc.fromLookup(this, "Vpc", {
150
+ vpcId: props.vpcId
151
+ });
152
+ }
153
+ else {
154
+ return aws_ec2_1.Vpc.fromLookup(this, "Vpc", {
155
+ vpcName: props.vpcName
156
+ });
157
+ }
158
+ }
159
+ resolveInstanceType(scope, props) {
160
+ var _a, _b;
161
+ return props.instanceType !== undefined
162
+ ? props.instanceType
163
+ : aws_ec2_1.InstanceType.of((_a = props.instanceClass) !== null && _a !== void 0 ? _a : aws_ec2_1.InstanceClass.BURSTABLE4_GRAVITON, (_b = props.instanceSize) !== null && _b !== void 0 ? _b : aws_ec2_1.InstanceSize.MICRO);
164
+ }
165
+ resolveSubnet(scope, props) {
166
+ if (props.subnetId !== undefined) {
167
+ return aws_ec2_1.Subnet.fromSubnetId(scope, "Subnet", props.subnetId);
168
+ }
169
+ if (props.subnet !== undefined) {
170
+ return props.subnet;
171
+ }
172
+ throw new Error("One of subnet or subnetId is required");
173
+ }
174
+ resolveMachineImage(instanceType) {
175
+ return aws_ec2_1.MachineImage.fromSsmParameter(instanceType.architecture === aws_ec2_1.InstanceArchitecture.ARM_64
176
+ ? exports.DEFAULT_ARM_IMAGE_SSM_PARAMETER
177
+ : exports.DEFAULT_AMD64_IMAGE_SSM_PARAMETER, {
178
+ os: aws_ec2_1.OperatingSystemType.LINUX
179
+ });
180
+ }
181
+ addListenerRule(listener, priority, pathPatterns) {
182
+ if (!this.targetGroup) {
183
+ throw new Error("No target group exists to attach");
184
+ }
185
+ return new aws_elasticloadbalancingv2_1.ApplicationListenerRule(this, `ListenerRule${priority}`, {
186
+ listener,
187
+ priority,
188
+ targetGroups: [this.targetGroup],
189
+ conditions: pathPatterns ? [aws_elasticloadbalancingv2_1.ListenerCondition.pathPatterns(pathPatterns)] : []
190
+ });
174
191
  }
175
192
  }
176
193
  exports.WordPressInstance = WordPressInstance;
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1wcmVzcy1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndvcmQtcHJlc3MtaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBQ3JDLGlEQW1CNkI7QUFDN0IsNkNBQTRFO0FBRTVFLGlFQUFtSDtBQUNuSCxpREFBMkU7QUFDM0UseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix5REFBa0U7QUFDbEUsbURBQW1EO0FBMkh0QyxRQUFBLCtCQUErQixHQUFHLG9GQUFvRixDQUFBO0FBQ3RILFFBQUEsaUNBQWlDLEdBQUcsb0ZBQW9GLENBQUE7QUFFckk7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHNCQUFTO0lBRTlDLFVBQVUsQ0FBQyxLQUFnQixFQUFFLEtBQTZCO1FBQ3hELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkYsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3BDLE9BQU8sYUFBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sYUFBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBZ0IsRUFB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QUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNuRixHQUFHLENBQUMsZUFBZSxDQUFDLElBQUkseUJBQWUsQ0FBQztnQkFDdEMsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsc0JBQXNCLENBQUM7Z0JBQzVELFNBQVMsRUFBRTtvQkFDVCxpQkFBRyxDQUFDLE1BQU0sQ0FBQzt3QkFDVCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxRQUFRLEVBQUUsWUFBWTt3QkFDdEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7cUJBQ25DLEVBQUUsS0FBSyxDQUFDO29CQUNULGlCQUFHLENBQUMsTUFBTSxDQUFDO3dCQUNULE9BQU8sRUFBRSxLQUFLO3dCQUNkLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixZQUFZLEVBQUUsR0FBRztxQkFDbEIsRUFBRSxLQUFLLENBQUM7aUJBQ1Y7YUFDRixDQUFDLENBQUMsQ0FBQztTQUNMO1FBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFuTEQsOENBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBDZm5FSVAsXG4gIElNYWNoaW5lSW1hZ2UsXG4gIEluc3RhbmNlQXJjaGl0ZWN0dXJlLFxuICBJbnN0YW5jZUNsYXNzLFxuICBJbnN0YW5jZVNpemUsXG4gIEluc3RhbmNlVHlwZSxcbiAgSVN1Ym5ldCxcbiAgSVZwYyxcbiAgTWFjaGluZUltYWdlLFxuICBPcGVyYXRpbmdTeXN0ZW1UeXBlLFxuICBQZWVyLFxuICBQb3J0LFxuICBTZWN1cml0eUdyb3VwLFxuICBTdWJuZXQsXG4gIFN1Ym5ldFNlbGVjdGlvbixcbiAgVXNlckRhdGEsXG4gIFZvbHVtZSxcbiAgVnBjXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge0FybiwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFNpemUsIFN0YWNrLCBUYWdzfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7SUtleX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCB7QXV0b1NjYWxpbmdHcm91cCwgQmxvY2tEZXZpY2VWb2x1bWUsIEVic0RldmljZVZvbHVtZVR5cGUsIFVwZGF0ZVBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hdXRvc2NhbGluZ1wiO1xuaW1wb3J0IHtFZmZlY3QsIE1hbmFnZWRQb2xpY3ksIFBvbGljeVN0YXRlbWVudH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtJSG9zdGVkWm9uZSwgUmVjb3JkVGFyZ2V0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7RG9tYWluTmFtZX0gZnJvbSBcIi4uLy4uL2F3cy1yb3V0ZTUzL2luZGV4XCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgV29yZFByZXNzSW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29yZFByZXNzSW5zdGFuY2VQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFZwYyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgaW4uXG4gICAqIE9uZSBvZiB2cGMsIHZwY0lkIG9yIHZwY05hbWUgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBJVnBjO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB2cGMgdG8gcGxhY2UgdGhlIGluc3RhbmNlIGluLlxuICAgKiBPbmUgb2YgdnBjLCB2cGNJZCBvciB2cGNOYW1lIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSUQgb2YgdGhlIHZwYyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgaW4uXG4gICAqIE9uZSBvZiB2cGMsIHZwY0lkIG9yIHZwY05hbWUgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0IHRvIHBsYWNlIHRoZSB2b2x1bWUgYW5kIGluc3RhbmNlIGluLlxuICAgKiBPbmUgb2Ygc3VibmV0IG9yIHN1Ym5ldElkIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0PzogSVN1Ym5ldDtcblxuICAvKipcbiAgICogSUQgb2Ygc3VibmV0IHRvIHBsYWNlIHRoZSB2b2x1bWUgYW5kIGluc3RhbmNlIGluLlxuICAgKiBPbmUgb2Ygc3VibmV0IG9yIHN1Ym5ldElkIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF2YWlsYWJpbGl0eSB6b25lIHRvIGRlcGxveSB0aGUgaW5zdGFuY2UgYW5kIHZvbHVtZSBpbi5cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogSW5zdGFuY2UgdHlwZSB0byB1c2Ugb2YgdGhlIGluc3RhbmNlLiBBIHQ0Zy5zbWFsbCBpcyB1c2VkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IEluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogSW5zdGFuY2UgY2xhc3MgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDbGFzcz86IEluc3RhbmNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIHNpemUgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEluc3RhbmNlU2l6ZS5TTUFMTFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VTaXplPzogSW5zdGFuY2VTaXplO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpbnN0YW5jZSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm9wYWdhdGUgdGhlIEVDMiBpbnN0YW5jZSB0YWdzIHRvIHRoZSBFQlMgdm9sdW1lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9wYWdhdGVUYWdzVG9Wb2x1bWVPbkNyZWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT1Mgdm9sdW1lIHNpemUgaW4gR2lnYWJ5dGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNpemUuZ2lnYWJ5dGVzKDEwKVxuICAgKi9cbiAgcmVhZG9ubHkgb3NWb2x1bWVTaXplPzogU2l6ZTtcblxuICAvKipcbiAgICogRGF0YSB2b2x1bWUgc2l6ZSBpbiBHaWdhYnl0ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2l6ZS5naWdhYnl0ZXMoMTApXG4gICAqL1xuICByZWFkb25seSBkYXRhVm9sdW1lU2l6ZT86IFNpemU7XG5cbiAgLyoqXG4gICAqIERhdGEgdm9sdW1lIHJlbW92YWwgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSBkYXRhVm9sdW1lUmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRpb24ga2V5IHRvIHVzZSBmb3Igdm9sdW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWVzIG9mIHRoZSBzaXRlcyB0byBiZSBob3N0ZWQgYnkgdGhpcyBpbnN0YW5jZS5cbiAgICogRWFjaCBwcm92aWRlZCBzaXRlIHdpbGwgYmUgYSBzZXBhcmF0ZSBXb3JkUHJlc3MgaW5zdGFsbGF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2l0ZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIHRoZSBETlMgcmVjb3JkIHBvaW50aW5nIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBob3N0UHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB0aGUgem9uZSBmb3IgdGhlIEROUyByZWNvcmQgcG9pbnRpbmcgdG8gdGhlIEVDMiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3Rab25lPzogSUhvc3RlZFpvbmUgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBUVEwgdG8gdXNlIG9uIHRoZSBETlMgcmVjb3JkIHBvaW50aW5nIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uc2Vjb25kcygzMDApXG4gICAqL1xuICByZWFkb25seSBob3N0UmVjb3JkVHRsPzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FSTV9JTUFHRV9TU01fUEFSQU1FVEVSID0gXCIvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvamFtbXkvc3RhYmxlL2N1cnJlbnQvYXJtNjQvaHZtL2Vicy1ncDIvYW1pLWlkXCJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0FNRDY0X0lNQUdFX1NTTV9QQVJBTUVURVIgPSBcIi9hd3Mvc2VydmljZS9jYW5vbmljYWwvdWJ1bnR1L3NlcnZlci9qYW1teS9zdGFibGUvY3VycmVudC9hbWQ2NC9odm0vZWJzLWdwMi9hbWktaWRcIlxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgV29yZFByZXNzIGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgV29yZFByZXNzSW5zdGFuY2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHJlc29sdmVWcGMoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFdvcmRQcmVzc0luc3RhbmNlUHJvcHMpOiBJVnBjIHtcbiAgICBpZiAocHJvcHMudnBjID09PSB1bmRlZmluZWQgJiYgcHJvcHMudnBjSWQgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy52cGNOYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9uZSBvZiB2cGMsIHZwY0lkIG9yIHZwY05hbWUgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuICAgIGlmIChwcm9wcy52cGMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHByb3BzLnZwYztcbiAgICB9IGVsc2UgaWYgKHByb3BzLnZwY0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBWcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZwY1wiLCB7XG4gICAgICAgIHZwY0lkOiBwcm9wcy52cGNJZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBWcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZwY1wiLCB7XG4gICAgICAgIHZwY05hbWU6IHByb3BzLnZwY05hbWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVJbnN0YW5jZVR5cGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFdvcmRQcmVzc0luc3RhbmNlUHJvcHMpOiBJbnN0YW5jZVR5cGUge1xuICAgIHJldHVybiBwcm9wcy5pbnN0YW5jZVR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBwcm9wcy5pbnN0YW5jZVR5cGVcbiAgICAgIDogSW5zdGFuY2VUeXBlLm9mKFxuICAgICAgICBwcm9wcy5pbnN0YW5jZUNsYXNzID8/IEluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTixcbiAgICAgICAgcHJvcHMuaW5zdGFuY2VTaXplID8/IEluc3RhbmNlU2l6ZS5NSUNSTyk7XG4gIH1cblxuICByZXNvbHZlU3VibmV0KHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBXb3JkUHJlc3NJbnN0YW5jZVByb3BzKTogSVN1Ym5ldCB7XG4gICAgaWYgKHByb3BzLnN1Ym5ldElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBTdWJuZXQuZnJvbVN1Ym5ldElkKHNjb3BlLCBcIlN1Ym5ldFwiLCBwcm9wcy5zdWJuZXRJZCk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5zdWJuZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHByb3BzLnN1Ym5ldFxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmUgb2Ygc3VibmV0IG9yIHN1Ym5ldElkIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgcmVzb2x2ZU1hY2hpbmVJbWFnZShpbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZSk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBNYWNoaW5lSW1hZ2UuZnJvbVNzbVBhcmFtZXRlcihcbiAgICAgIGluc3RhbmNlVHlwZS5hcmNoaXRlY3R1cmUgPT09IEluc3RhbmNlQXJjaGl0ZWN0dXJlLkFSTV82NFxuICAgICAgICA/IERFRkFVTFRfQVJNX0lNQUdFX1NTTV9QQVJBTUVURVJcbiAgICAgICAgOiBERUZBVUxUX0FNRDY0X0lNQUdFX1NTTV9QQVJBTUVURVIsXG4gICAgICB7XG4gICAgICAgIG9zOiBPcGVyYXRpbmdTeXN0ZW1UeXBlLkxJTlVYXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXb3JkUHJlc3NJbnN0YW5jZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGZvciAobGV0IHNpdGUgb2YgcHJvcHMuc2l0ZXMpIHtcbiAgICAgIGlmIChzaXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcInd3d1wiKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZW1vdmUgXFxcInd3dy5cXFwiIHdoZW4gc3BlY2lmeWluZyBzaXRlcy5cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IHN1Ym5ldCA9IHRoaXMucmVzb2x2ZVN1Ym5ldCh0aGlzLCBwcm9wcyk7XG4gICAgY29uc3QgdnBjID0gdGhpcy5yZXNvbHZlVnBjKHRoaXMsIHByb3BzKTtcbiAgICBjb25zdCB2cGNTdWJuZXRzOiBTdWJuZXRTZWxlY3Rpb24gPSB7XG4gICAgICBzdWJuZXRzOiBbc3VibmV0XVxuICAgIH1cblxuICAgIGxldCBlaXA6IENmbkVJUCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMuaG9zdFByZWZpeCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmhvc3Rab25lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGVpcCA9IG5ldyBDZm5FSVAodGhpcywgXCJQdWJsaWNJcEFkZHJlc3NcIiwge1xuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIk5hbWVcIixcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLm5vZGUucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgICBjb25zdCBob3N0TmFtZSA9IG5ldyBEb21haW5OYW1lKHtcbiAgICAgICAgcHJlZml4OiBwcm9wcy5ob3N0UHJlZml4LFxuICAgICAgICB6b25lOiBwcm9wcy5ob3N0Wm9uZVxuICAgICAgfSlcbiAgICAgIGhvc3ROYW1lLmNyZWF0ZUFSZWNvcmQodGhpcywgUmVjb3JkVGFyZ2V0LmZyb21JcEFkZHJlc3NlcyhlaXAucmVmKSxcbiAgICAgICAge3R0bDogcHJvcHMuaG9zdFJlY29yZFR0bCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMwMCl9KVxuICAgIH1cblxuICAgIGNvbnN0IHZvbHVtZSA9IG5ldyBWb2x1bWUodGhpcywgXCJEYXRhVm9sdW1lXCIsIHtcbiAgICAgIHNpemU6IHByb3BzLmRhdGFWb2x1bWVTaXplID8/IFNpemUuZ2liaWJ5dGVzKDEwKSxcbiAgICAgIHZvbHVtZVR5cGU6IEVic0RldmljZVZvbHVtZVR5cGUuR1AzLFxuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZvbHVtZU5hbWU6IGAke3RoaXMubm9kZS5wYXRofS9EYXRhYCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLmRhdGFWb2x1bWVSZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICB9KTtcblxuICAgIC8vIGNvbnN0IGJhY2t1cFBsYW4gPSBCYWNrdXBQbGFuLmRhaWx5MzVEYXlSZXRlbnRpb24odGhpcywgXCJCYWNrdXBQbGFuXCIpO1xuICAgIC8vIGJhY2t1cFBsYW4uYWRkU2VsZWN0aW9uKFwiQmFja3VwU2VsZWN0aW9uXCIsIHtcbiAgICAvLyAgIHJlc291cmNlczogW0JhY2t1cFJlc291cmNlLmZyb21Db25zdHJ1Y3Qodm9sdW1lKV1cbiAgICAvLyB9KTtcblxuICAgIC8vIFRPRE8gU2V0dXAgYmFja3VwcyBvbiBWb2x1bWVcblxuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9IHRoaXMucmVzb2x2ZUluc3RhbmNlVHlwZSh0aGlzLCBwcm9wcyk7XG4gICAgY29uc3QgbWFjaGluZUltYWdlID0gdGhpcy5yZXNvbHZlTWFjaGluZUltYWdlKGluc3RhbmNlVHlwZSk7XG4gICAgY29uc3Qgb3NWb2x1bWVTaXplID0gcHJvcHMub3NWb2x1bWVTaXplID09PSB1bmRlZmluZWQgPyAxMCA6IHByb3BzLm9zVm9sdW1lU2l6ZS50b0dpYmlieXRlcygpO1xuXG4gICAgY29uc3QgdXNlckRhdGFTY3JpcHQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgXCJpbml0LnNoXCIpLCBcInV0Zi04XCIpO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsIFwiU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEZWZhdWx0IHNlY3VyaXR5IGdyb3VwIGZvciBXb3JkUHJlc3NcIixcbiAgICAgIHZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgICBhbGxvd0FsbElwdjZPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcbiAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuYW55SXB2NCgpLCBQb3J0LnRjcCgyMDIwKSk7XG4gICAgc2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShQZWVyLmlwdjQoXCIxMC4wLjAuMC84XCIpLCBQb3J0LnRjcCgyMikpO1xuICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoUGVlci5pcHY0KFwiMTcyLjE2LjAuMC8xMlwiKSwgUG9ydC50Y3AoMjIpKTtcbiAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NChcIjE5Mi4xNjguMC4wLzE2XCIpLCBQb3J0LnRjcCgyMikpO1xuICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoUGVlci5pcHY2KFwiZmMwMDo6LzdcIiksIFBvcnQudGNwKDIyKSk7XG4gICAgc2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShQZWVyLmlwdjYoXCJmZDAwOjovOFwiKSwgUG9ydC50Y3AoMjIpKTtcbiAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NihcImZlYzA6Oi8xMFwiKSwgUG9ydC50Y3AoMjIpKTtcbiAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuYW55SXB2NCgpLCBQb3J0LnRjcCg4MCkpO1xuICAgIC8vIFRPRE8gTGF0ZXIgb24gd2Ugd2FudCB0byB3aGl0ZWxpc3QgY2xvdWRmcm9udCBodHRwOi8vZDd1cmk4bmY3dXNrcS5jbG91ZGZyb250Lm5ldC90b29scy9saXN0LWNsb3VkZnJvbnQtaXBzXG5cbiAgICBjb25zdCBhc2cgPSBuZXcgQXV0b1NjYWxpbmdHcm91cCh0aGlzLCBcIlNjYWxpbmdcIiwge1xuICAgICAgdnBjLFxuICAgICAgdnBjU3VibmV0cyxcbiAgICAgIHNlY3VyaXR5R3JvdXAsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAxLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAxLFxuICAgICAgaW5zdGFuY2VUeXBlLFxuICAgICAgbWFjaGluZUltYWdlLFxuICAgICAgYmxvY2tEZXZpY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBcIi9kZXYvc2RhMVwiLFxuICAgICAgICAgIHZvbHVtZTogQmxvY2tEZXZpY2VWb2x1bWUuZWJzKG9zVm9sdW1lU2l6ZSwge1xuICAgICAgICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIHZvbHVtZVR5cGU6IEVic0RldmljZVZvbHVtZVR5cGUuR1AzXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHVzZXJEYXRhOiBVc2VyRGF0YS5jdXN0b20odXNlckRhdGFTY3JpcHQpLFxuICAgICAgdXBkYXRlUG9saWN5OiBVcGRhdGVQb2xpY3kucm9sbGluZ1VwZGF0ZSgpLFxuICAgICAgcmVxdWlyZUltZHN2MjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIFRhZ3Mub2YoYXNnKS5hZGQoXCJ3b3JkcHJlc3M6ZGF0YS12b2x1bWVcIiwgdm9sdW1lLnZvbHVtZUlkKTtcbiAgICBUYWdzLm9mKGFzZykuYWRkKFwid29yZHByZXNzOnNpdGVzXCIsIHByb3BzLnNpdGVzLmpvaW4oXCIgXCIpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgYXNnLnJvbGUuYWRkTWFuYWdlZFBvbGljeShNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmVcIikpO1xuICAgIGFzZy5hZGRUb1JvbGVQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcImVjMjpEZXNjcmliZVRhZ3NcIiwgXCJlYzI6RGVzY3JpYmVWb2x1bWVzXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgfSkpO1xuXG4gICAgaWYgKGVpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBUYWdzLm9mKGFzZykuYWRkKFwiYXdzLXBhdHRlcm5zLXdvcmRwcmVzczplaXAtYWxsb2NhdGlvbi1pZFwiLCBlaXAuYXR0ckFsbG9jYXRpb25JZCk7XG4gICAgICBhc2cuYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1wiZWMyOkRpc2Fzc29jaWF0ZUFkZHJlc3NcIiwgXCJlYzI6QXNzb2NpYXRlQWRkcmVzc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgQXJuLmZvcm1hdCh7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImVjMlwiLFxuICAgICAgICAgICAgcmVzb3VyY2U6IFwiZWxhc3RpYy1pcFwiLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBlaXAuYXR0ckFsbG9jYXRpb25JZFxuICAgICAgICAgIH0sIHN0YWNrKSxcbiAgICAgICAgICBBcm4uZm9ybWF0KHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiZWMyXCIsXG4gICAgICAgICAgICByZXNvdXJjZTogXCJpbnN0YW5jZVwiLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBcIipcIlxuICAgICAgICAgIH0sIHN0YWNrKVxuICAgICAgICBdXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdm9sdW1lLmdyYW50QXR0YWNoVm9sdW1lKGFzZyk7XG4gICAgdm9sdW1lLmdyYW50RGV0YWNoVm9sdW1lKGFzZyk7XG4gIH1cbn1cbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1wcmVzcy1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndvcmQtcHJlc3MtaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBQ3JDLGlEQW1CNkI7QUFDN0IsNkNBQTRFO0FBRTVFLGlFQUFtSDtBQUNuSCxpREFBMkU7QUFDM0UseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix5REFBMkU7QUFDM0UsbURBQTZDO0FBQzdDLHVGQUtnRDtBQUNoRCx1R0FBd0U7QUF5STNELFFBQUEsK0JBQStCLEdBQUcsb0ZBQW9GLENBQUE7QUFDdEgsUUFBQSxpQ0FBaUMsR0FBRyxvRkFBb0YsQ0FBQTtBQUVySTs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7SUF1RDlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7O1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO2FBQzNEO1NBQ0Y7UUFFRCxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBb0I7WUFDbEMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2xCLENBQUM7UUFFRixVQUFJLEtBQUssQ0FBQyxTQUFTLG1D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WUFDOUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFBO1NBQ3BCO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUEwQjtRQUM1QyxPQUFPLHNCQUFZLENBQUMsZ0JBQWdCLENBQ2xDLFlBQVksQ0FBQyxZQUFZLEtBQUssOEJBQW9CLENBQUMsTUFBTTtZQUN2RCxDQUFDLENBQUMsdUNBQStCO1lBQ2pDLENBQUMsQ0FBQyx5Q0FBaUMsRUFDckM7WUFDRSxFQUFFLEVBQUUsNkJBQW1CLENBQUMsS0FBSztTQUM5QixDQUNGLENBQUM7SUFDSixDQUFDO0lBd0lELGVBQWUsQ0FBQyxRQUE4QixFQUFFLFFBQWdCLEVBQUUsWUFBdUI7UUFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsT0FBTyxJQUFJLG9EQUF1QixDQUFDLElBQUksRUFBRSxlQUFlLFFBQVEsRUFBRSxFQUFFO1lBQ2xFLFFBQVE7WUFDUixRQUFRO1lBQ1IsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNoQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUFpQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQy9FLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXhNRCw4Q0F3TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIENmbkVJUCxcbiAgSU1hY2hpbmVJbWFnZSxcbiAgSW5zdGFuY2VBcmNoaXRlY3R1cmUsXG4gIEluc3RhbmNlQ2xhc3MsXG4gIEluc3RhbmNlU2l6ZSxcbiAgSW5zdGFuY2VUeXBlLFxuICBJU3VibmV0LFxuICBJVnBjLFxuICBNYWNoaW5lSW1hZ2UsXG4gIE9wZXJhdGluZ1N5c3RlbVR5cGUsXG4gIFBlZXIsXG4gIFBvcnQsXG4gIFNlY3VyaXR5R3JvdXAsXG4gIFN1Ym5ldCxcbiAgU3VibmV0U2VsZWN0aW9uLFxuICBVc2VyRGF0YSxcbiAgVm9sdW1lLFxuICBWcGNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7QXJuLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU2l6ZSwgU3RhY2ssIFRhZ3N9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtJS2V5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWttc1wiO1xuaW1wb3J0IHtBdXRvU2NhbGluZ0dyb3VwLCBCbG9ja0RldmljZVZvbHVtZSwgRWJzRGV2aWNlVm9sdW1lVHlwZSwgVXBkYXRlUG9saWN5fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWF1dG9zY2FsaW5nXCI7XG5pbXBvcnQge0VmZmVjdCwgTWFuYWdlZFBvbGljeSwgUG9saWN5U3RhdGVtZW50fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge0FSZWNvcmQsIElIb3N0ZWRab25lLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtEb21haW5OYW1lfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uTGlzdGVuZXJSdWxlLFxuICBBcHBsaWNhdGlvblByb3RvY29sLFxuICBBcHBsaWNhdGlvblByb3RvY29sVmVyc2lvbixcbiAgQXBwbGljYXRpb25UYXJnZXRHcm91cCwgSUFwcGxpY2F0aW9uTGlzdGVuZXIsIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgTGlzdGVuZXJDb25kaXRpb24sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHtJcFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLXRhcmdldHNcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBXb3JkUHJlc3NJbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JkUHJlc3NJbnN0YW5jZVByb3BzIHtcblxuICAvKipcbiAgICogVnBjIHRvIHBsYWNlIHRoZSBpbnN0YW5jZSBpbi5cbiAgICogT25lIG9mIHZwYywgdnBjSWQgb3IgdnBjTmFtZSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHZwYyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgaW4uXG4gICAqIE9uZSBvZiB2cGMsIHZwY0lkIG9yIHZwY05hbWUgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgdnBjIHRvIHBsYWNlIHRoZSBpbnN0YW5jZSBpbi5cbiAgICogT25lIG9mIHZwYywgdnBjSWQgb3IgdnBjTmFtZSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXQgdG8gcGxhY2UgdGhlIHZvbHVtZSBhbmQgaW5zdGFuY2UgaW4uXG4gICAqIE9uZSBvZiBzdWJuZXQgb3Igc3VibmV0SWQgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXQ/OiBJU3VibmV0O1xuXG4gIC8qKlxuICAgKiBJRCBvZiBzdWJuZXQgdG8gcGxhY2UgdGhlIHZvbHVtZSBhbmQgaW5zdGFuY2UgaW4uXG4gICAqIE9uZSBvZiBzdWJuZXQgb3Igc3VibmV0SWQgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQXZhaWxhYmlsaXR5IHpvbmUgdG8gZGVwbG95IHRoZSBpbnN0YW5jZSBhbmQgdm9sdW1lIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSB0eXBlIHRvIHVzZSBvZiB0aGUgaW5zdGFuY2UuIEEgdDRnLnNtYWxsIGlzIHVzZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBjbGFzcyB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW5zdGFuY2VDbGFzcy5CVVJTVEFCTEU0X0dSQVZJVE9OXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUNsYXNzPzogSW5zdGFuY2VDbGFzcztcblxuICAvKipcbiAgICogSW5zdGFuY2Ugc2l6ZSB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW5zdGFuY2VTaXplLlNNQUxMXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVNpemU/OiBJbnN0YW5jZVNpemU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGluc3RhbmNlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb3BhZ2F0ZSB0aGUgRUMyIGluc3RhbmNlIHRhZ3MgdG8gdGhlIEVCUyB2b2x1bWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHByb3BhZ2F0ZVRhZ3NUb1ZvbHVtZU9uQ3JlYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPUyB2b2x1bWUgc2l6ZSBpbiBHaWdhYnl0ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2l6ZS5naWdhYnl0ZXMoMTApXG4gICAqL1xuICByZWFkb25seSBvc1ZvbHVtZVNpemU/OiBTaXplO1xuXG4gIC8qKlxuICAgKiBEYXRhIHZvbHVtZSBzaXplIGluIEdpZ2FieXRlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTaXplLmdpZ2FieXRlcygxMClcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFWb2x1bWVTaXplPzogU2l6ZTtcblxuICAvKipcbiAgICogRGF0YSB2b2x1bWUgcmVtb3ZhbCBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFWb2x1bWVSZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogRW5jcnlwdGlvbiBrZXkgdG8gdXNlIGZvciB2b2x1bWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IElLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBkb21haW4gbmFtZXMgb2YgdGhlIHNpdGVzIHRvIGJlIGhvc3RlZCBieSB0aGlzIGluc3RhbmNlLlxuICAgKiBFYWNoIHByb3ZpZGVkIHNpdGUgd2lsbCBiZSBhIHNlcGFyYXRlIFdvcmRQcmVzcyBpbnN0YWxsYXRpb24uXG4gICAqL1xuICByZWFkb25seSBzaXRlczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWxhc3RpYyBJUCBmb3IgdGhpcyBFQzIgaW5zdGFuY2UuIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVFaXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIHRoZSBETlMgcmVjb3JkIHBvaW50aW5nIHRvIHRoZSBlbGFzdGljIElQIGFkZHJlc3MgZm9yIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBob3N0UHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBab25lIGZvciB0aGUgRE5TIHJlY29yZCBwb2ludGluZyB0byB0aGUgZWxhc3RpYyBJUCBhZGRyZXNzIGZvciB0aGUgRUMyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdFpvbmU/OiBJSG9zdGVkWm9uZSB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFRUTCB0byB1c2Ugb24gdGhlIEROUyByZWNvcmQgcG9pbnRpbmcgdG8gdGhlIGVsYXN0aWMgSVAgYWRkcmVzcyBmb3IgdGhlIEVDMiBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5zZWNvbmRzKDMwMClcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RSZWNvcmRUdGw/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhcmdldCBncm91cCB3aGljaCBjYW4gYmUgYXR0YWNoZWQgdG8gYW4gYXBwbGljYXRpb24gbG9hZCBiYWxhbmNlci4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlVGFyZ2V0R3JvdXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BUk1fSU1BR0VfU1NNX1BBUkFNRVRFUiA9IFwiL2F3cy9zZXJ2aWNlL2Nhbm9uaWNhbC91YnVudHUvc2VydmVyL2phbW15L3N0YWJsZS9jdXJyZW50L2FybTY0L2h2bS9lYnMtZ3AyL2FtaS1pZFwiXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTUQ2NF9JTUFHRV9TU01fUEFSQU1FVEVSID0gXCIvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvamFtbXkvc3RhYmxlL2N1cnJlbnQvYW1kNjQvaHZtL2Vicy1ncDIvYW1pLWlkXCJcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFdvcmRQcmVzcyBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmRQcmVzc0luc3RhbmNlIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICByZWFkb25seSBlaXA/OiBDZm5FSVA7XG4gIHJlYWRvbmx5IGVpcEFSZWNvcmQ/OiBBUmVjb3JkO1xuICByZWFkb25seSB0YXJnZXRHcm91cD86IEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXA7XG4gIHJlYWRvbmx5IHZvbHVtZTogVm9sdW1lO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhc2c6IEF1dG9TY2FsaW5nR3JvdXA7XG5cbiAgcmVzb2x2ZVZwYyhzY29wZTogQ29uc3RydWN0LCBwcm9wczogV29yZFByZXNzSW5zdGFuY2VQcm9wcyk6IElWcGMge1xuICAgIGlmIChwcm9wcy52cGMgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy52cGNJZCA9PT0gdW5kZWZpbmVkICYmIHByb3BzLnZwY05hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25lIG9mIHZwYywgdnBjSWQgb3IgdnBjTmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnZwYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcHJvcHMudnBjO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudnBjSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFZwYy5mcm9tTG9va3VwKHRoaXMsIFwiVnBjXCIsIHtcbiAgICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFZwYy5mcm9tTG9va3VwKHRoaXMsIFwiVnBjXCIsIHtcbiAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZUluc3RhbmNlVHlwZShzY29wZTogQ29uc3RydWN0LCBwcm9wczogV29yZFByZXNzSW5zdGFuY2VQcm9wcyk6IEluc3RhbmNlVHlwZSB7XG4gICAgcmV0dXJuIHByb3BzLmluc3RhbmNlVHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHByb3BzLmluc3RhbmNlVHlwZVxuICAgICAgOiBJbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIHByb3BzLmluc3RhbmNlQ2xhc3MgPz8gSW5zdGFuY2VDbGFzcy5CVVJTVEFCTEU0X0dSQVZJVE9OLFxuICAgICAgICBwcm9wcy5pbnN0YW5jZVNpemUgPz8gSW5zdGFuY2VTaXplLk1JQ1JPKTtcbiAgfVxuXG4gIHJlc29sdmVTdWJuZXQoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFdvcmRQcmVzc0luc3RhbmNlUHJvcHMpOiBJU3VibmV0IHtcbiAgICBpZiAocHJvcHMuc3VibmV0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFN1Ym5ldC5mcm9tU3VibmV0SWQoc2NvcGUsIFwiU3VibmV0XCIsIHByb3BzLnN1Ym5ldElkKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnN1Ym5ldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcHJvcHMuc3VibmV0XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIk9uZSBvZiBzdWJuZXQgb3Igc3VibmV0SWQgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICByZXNvbHZlTWFjaGluZUltYWdlKGluc3RhbmNlVHlwZTogSW5zdGFuY2VUeXBlKTogSU1hY2hpbmVJbWFnZSB7XG4gICAgcmV0dXJuIE1hY2hpbmVJbWFnZS5mcm9tU3NtUGFyYW1ldGVyKFxuICAgICAgaW5zdGFuY2VUeXBlLmFyY2hpdGVjdHVyZSA9PT0gSW5zdGFuY2VBcmNoaXRlY3R1cmUuQVJNXzY0XG4gICAgICAgID8gREVGQVVMVF9BUk1fSU1BR0VfU1NNX1BBUkFNRVRFUlxuICAgICAgICA6IERFRkFVTFRfQU1ENjRfSU1BR0VfU1NNX1BBUkFNRVRFUixcbiAgICAgIHtcbiAgICAgICAgb3M6IE9wZXJhdGluZ1N5c3RlbVR5cGUuTElOVVhcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdvcmRQcmVzc0luc3RhbmNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgZm9yIChsZXQgc2l0ZSBvZiBwcm9wcy5zaXRlcykge1xuICAgICAgaWYgKHNpdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwid3d3XCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlbW92ZSBcXFwid3d3LlxcXCIgd2hlbiBzcGVjaWZ5aW5nIHNpdGVzLlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IHN1Ym5ldCA9IHRoaXMucmVzb2x2ZVN1Ym5ldCh0aGlzLCBwcm9wcyk7XG4gICAgY29uc3QgdnBjID0gdGhpcy5yZXNvbHZlVnBjKHRoaXMsIHByb3BzKTtcbiAgICBjb25zdCB2cGNTdWJuZXRzOiBTdWJuZXRTZWxlY3Rpb24gPSB7XG4gICAgICBzdWJuZXRzOiBbc3VibmV0XVxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuY3JlYXRlRWlwID8/IHRydWUpIHtcbiAgICAgIHRoaXMuZWlwID0gbmV3IENmbkVJUCh0aGlzLCBcIlB1YmxpY0lwQWRkcmVzc1wiLCB7XG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiTmFtZVwiLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMubm9kZS5wYXRoXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICAgIGlmIChwcm9wcy5ob3N0UHJlZml4ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaG9zdFpvbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBob3N0TmFtZSA9IG5ldyBEb21haW5OYW1lKHtcbiAgICAgICAgICBwcmVmaXg6IHByb3BzLmhvc3RQcmVmaXgsXG4gICAgICAgICAgem9uZTogcHJvcHMuaG9zdFpvbmVcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5laXBBUmVjb3JkID0gaG9zdE5hbWUuY3JlYXRlQVJlY29yZCh0aGlzLCBSZWNvcmRUYXJnZXQuZnJvbUlwQWRkcmVzc2VzKHRoaXMuZWlwLnJlZiksXG4gICAgICAgICAge3R0bDogcHJvcHMuaG9zdFJlY29yZFR0bCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMwMCl9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudm9sdW1lID0gbmV3IFZvbHVtZSh0aGlzLCBcIkRhdGFWb2x1bWVcIiwge1xuICAgICAgc2l6ZTogcHJvcHMuZGF0YVZvbHVtZVNpemUgPz8gU2l6ZS5naWJpYnl0ZXMoMTApLFxuICAgICAgdm9sdW1lVHlwZTogRWJzRGV2aWNlVm9sdW1lVHlwZS5HUDMsXG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBwcm9wcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgdm9sdW1lTmFtZTogYCR7dGhpcy5ub2RlLnBhdGh9L0RhdGFgLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMuZGF0YVZvbHVtZVJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID0gdGhpcy5yZXNvbHZlSW5zdGFuY2VUeXBlKHRoaXMsIHByb3BzKTtcbiAgICBjb25zdCBtYWNoaW5lSW1hZ2UgPSB0aGlzLnJlc29sdmVNYWNoaW5lSW1hZ2UoaW5zdGFuY2VUeXBlKTtcbiAgICBjb25zdCBvc1ZvbHVtZVNpemUgPSBwcm9wcy5vc1ZvbHVtZVNpemUgPT09IHVuZGVmaW5lZCA/IDEwIDogcHJvcHMub3NWb2x1bWVTaXplLnRvR2liaWJ5dGVzKCk7XG5cbiAgICBjb25zdCB1c2VyRGF0YVNjcmlwdCA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCBcImluaXQuc2hcIiksIFwidXRmLThcIik7XG5cbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiRGVmYXVsdCBzZWN1cml0eSBncm91cCBmb3IgV29yZFByZXNzXCIsXG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgICAgYWxsb3dBbGxJcHY2T3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuYW55SXB2NCgpLCBQb3J0LnRjcCgyMDIwKSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NChcIjEwLjAuMC4wLzhcIiksIFBvcnQudGNwKDIyKSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NChcIjE3Mi4xNi4wLjAvMTJcIiksIFBvcnQudGNwKDIyKSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NChcIjE5Mi4xNjguMC4wLzE2XCIpLCBQb3J0LnRjcCgyMikpO1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShQZWVyLmlwdjYoXCJmYzAwOjovN1wiKSwgUG9ydC50Y3AoMjIpKTtcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoUGVlci5pcHY2KFwiZmQwMDo6LzhcIiksIFBvcnQudGNwKDIyKSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFBlZXIuaXB2NihcImZlYzA6Oi8xMFwiKSwgUG9ydC50Y3AoMjIpKTtcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoUGVlci5hbnlJcHY0KCksIFBvcnQudGNwKDgwKSk7XG4gICAgLy8gVE9ETyBMYXRlciBvbiB3ZSB3YW50IHRvIHdoaXRlbGlzdCBjbG91ZGZyb250IGh0dHA6Ly9kN3VyaThuZjd1c2txLmNsb3VkZnJvbnQubmV0L3Rvb2xzL2xpc3QtY2xvdWRmcm9udC1pcHNcblxuICAgIHRoaXMuYXNnID0gbmV3IEF1dG9TY2FsaW5nR3JvdXAodGhpcywgXCJTY2FsaW5nXCIsIHtcbiAgICAgIHZwYyxcbiAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICBzZWN1cml0eUdyb3VwOiB0aGlzLnNlY3VyaXR5R3JvdXAsXG4gICAgICBtaW5DYXBhY2l0eTogMCxcbiAgICAgIG1heENhcGFjaXR5OiAxLFxuICAgICAgZGVzaXJlZENhcGFjaXR5OiAxLFxuICAgICAgaW5zdGFuY2VUeXBlLFxuICAgICAgbWFjaGluZUltYWdlLFxuICAgICAgYmxvY2tEZXZpY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBcIi9kZXYvc2RhMVwiLFxuICAgICAgICAgIHZvbHVtZTogQmxvY2tEZXZpY2VWb2x1bWUuZWJzKG9zVm9sdW1lU2l6ZSwge1xuICAgICAgICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIHZvbHVtZVR5cGU6IEVic0RldmljZVZvbHVtZVR5cGUuR1AzXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHVzZXJEYXRhOiBVc2VyRGF0YS5jdXN0b20odXNlckRhdGFTY3JpcHQpLFxuICAgICAgdXBkYXRlUG9saWN5OiBVcGRhdGVQb2xpY3kucm9sbGluZ1VwZGF0ZSgpLFxuICAgICAgcmVxdWlyZUltZHN2MjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIFRhZ3Mub2YodGhpcy5hc2cpLmFkZChcIndvcmRwcmVzczpkYXRhLXZvbHVtZVwiLCB0aGlzLnZvbHVtZS52b2x1bWVJZCk7XG4gICAgVGFncy5vZih0aGlzLmFzZykuYWRkKFwid29yZHByZXNzOnNpdGVzXCIsIHByb3BzLnNpdGVzLmpvaW4oXCIgXCIpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgdGhpcy5hc2cucm9sZS5hZGRNYW5hZ2VkUG9saWN5KE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZVwiKSk7XG4gICAgdGhpcy5hc2cuYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXCJlYzI6RGVzY3JpYmVUYWdzXCIsIFwiZWMyOkRlc2NyaWJlVm9sdW1lc1wiXSxcbiAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgIH0pKTtcblxuICAgIGlmICh0aGlzLmVpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBUYWdzLm9mKHRoaXMuYXNnKS5hZGQoXCJhd3MtcGF0dGVybnMtd29yZHByZXNzOmVpcC1hbGxvY2F0aW9uLWlkXCIsIHRoaXMuZWlwLmF0dHJBbGxvY2F0aW9uSWQpO1xuICAgICAgdGhpcy5hc2cuYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1wiZWMyOkRpc2Fzc29jaWF0ZUFkZHJlc3NcIiwgXCJlYzI6QXNzb2NpYXRlQWRkcmVzc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgQXJuLmZvcm1hdCh7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImVjMlwiLFxuICAgICAgICAgICAgcmVzb3VyY2U6IFwiZWxhc3RpYy1pcFwiLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLmVpcC5hdHRyQWxsb2NhdGlvbklkXG4gICAgICAgICAgfSwgc3RhY2spLFxuICAgICAgICAgIEFybi5mb3JtYXQoe1xuICAgICAgICAgICAgc2VydmljZTogXCJlYzJcIixcbiAgICAgICAgICAgIHJlc291cmNlOiBcImluc3RhbmNlXCIsXG4gICAgICAgICAgICByZXNvdXJjZU5hbWU6IFwiKlwiXG4gICAgICAgICAgfSwgc3RhY2spXG4gICAgICAgIF1cbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLnZvbHVtZS5ncmFudEF0dGFjaFZvbHVtZSh0aGlzLmFzZyk7XG4gICAgdGhpcy52b2x1bWUuZ3JhbnREZXRhY2hWb2x1bWUodGhpcy5hc2cpO1xuXG4gICAgaWYgKHByb3BzLmNyZWF0ZVRhcmdldEdyb3VwID8/IGZhbHNlKSB7XG4gICAgICB0aGlzLnRhcmdldEdyb3VwID0gbmV3IEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGhpcywgXCJUYXJnZXRHcm91cFwiLCB7XG4gICAgICAgIHBvcnQ6IDgwLFxuICAgICAgICBwcm90b2NvbDogQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgICBwcm90b2NvbFZlcnNpb246IEFwcGxpY2F0aW9uUHJvdG9jb2xWZXJzaW9uLkhUVFAyLFxuICAgICAgICB0YXJnZXRzOiBbdGhpcy5laXAgIT09IHVuZGVmaW5lZCA/IG5ldyBJcFRhcmdldCh0aGlzLmVpcC5yZWYpIDogdGhpcy5hc2ddXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRMaXN0ZW5lclJ1bGUobGlzdGVuZXI6IElBcHBsaWNhdGlvbkxpc3RlbmVyLCBwcmlvcml0eTogbnVtYmVyLCBwYXRoUGF0dGVybnM/OiBzdHJpbmdbXSk6IEFwcGxpY2F0aW9uTGlzdGVuZXJSdWxlIHtcbiAgICBpZiAoIXRoaXMudGFyZ2V0R3JvdXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBncm91cCBleGlzdHMgdG8gYXR0YWNoXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFwcGxpY2F0aW9uTGlzdGVuZXJSdWxlKHRoaXMsIGBMaXN0ZW5lclJ1bGUke3ByaW9yaXR5fWAsIHtcbiAgICAgIGxpc3RlbmVyLFxuICAgICAgcHJpb3JpdHksXG4gICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLnRhcmdldEdyb3VwXSxcbiAgICAgIGNvbmRpdGlvbnM6IHBhdGhQYXR0ZXJucyA/IFtMaXN0ZW5lckNvbmRpdGlvbi5wYXRoUGF0dGVybnMocGF0aFBhdHRlcm5zKV0gOiBbXVxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
- "version": "1.2.4-alpha.32+9289604",
3
+ "version": "1.2.4-alpha.35+da025fe",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "scripts": {
@@ -62,5 +62,5 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "gitHead": "9289604a1d957a696578c064f929056d879a3a3d"
65
+ "gitHead": "da025fe496e658606f6eedf82c0e7610a0669f62"
66
66
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0J1Y2tldFByb3BzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG4iXX0=