@glowgreen/gg-questionnaire-v2 0.0.22 → 0.0.24
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.
- package/bundles/glowgreen-gg-questionnaire-v2.umd.js +5 -1
- package/bundles/glowgreen-gg-questionnaire-v2.umd.js.map +1 -1
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js +1 -1
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js.map +1 -1
- package/esm2015/lib/services/form-constructor.service.js +3 -1
- package/esm2015/lib/services/questionnaire.service.js +4 -2
- package/esm5/lib/services/form-constructor.service.js +3 -1
- package/esm5/lib/services/questionnaire.service.js +4 -2
- package/fesm2015/glowgreen-gg-questionnaire-v2.js +5 -1
- package/fesm2015/glowgreen-gg-questionnaire-v2.js.map +1 -1
- package/fesm5/glowgreen-gg-questionnaire-v2.js +5 -1
- package/fesm5/glowgreen-gg-questionnaire-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -47,8 +47,10 @@ export class QuestionnaireService {
|
|
|
47
47
|
for (const question of section.questions) {
|
|
48
48
|
/** @type {?} */
|
|
49
49
|
const control = this.currentQuestionnaireForm.get([section.name, question.name]);
|
|
50
|
-
if (
|
|
50
|
+
if (control.value === null && question.defaultValue) {
|
|
51
|
+
console.log('Found null with default value', question);
|
|
51
52
|
control.setValue(question.defaultValue);
|
|
53
|
+
console.log(control.value);
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -694,4 +696,4 @@ if (false) {
|
|
|
694
696
|
*/
|
|
695
697
|
QuestionnaireService.prototype.options;
|
|
696
698
|
}
|
|
697
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQThCLFNBQVMsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXBGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBSzNELE1BQU0sT0FBTyxvQkFBb0I7Ozs7O0lBbUIvQixZQUNVLGNBQXNDLEVBQ25CLE9BQTZCO1FBRGhELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQXBCbkQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFlakUsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtyQixDQUFDOzs7Ozs7Ozs7SUFTUSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLFVBQW1CLEVBQUUsY0FBdUI7O1lBQ3ZHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBRXJDLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxD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QUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQVpRLHNCQUFzQjs0Q0FrQzFCLE1BQU0sU0FBQyxTQUFTOzs7OztJQXBCbkIsZ0RBQXFFOztJQUNyRSxvREFBeUU7Ozs7O0lBRXpFLHFEQUE2Qzs7Ozs7SUFFN0Msb0RBQTRDOzs7OztJQUM1Qyx3REFBNEM7Ozs7O0lBRTVDLGtEQUFtQzs7Ozs7SUFDbkMsbURBQW9DOzs7OztJQUVwQyxvRUFBMkQ7Ozs7O0lBQzNELCtEQUFzRDs7Ozs7SUFFdEQsOENBQStCOzs7OztJQUUvQix5Q0FBeUI7Ozs7O0lBR3ZCLDhDQUE4Qzs7Ozs7SUFDOUMsdUNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db25zdHJ1Y3RvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZS1vcHRpb25zJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIHtcbiAgcHVibGljIGRhdGFDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBzZWN0aW9uRmluaXNoZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIG9yaWdpbmFsUXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZTtcblxuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHByaXZhdGUgY3VycmVudFNlY3Rpb25OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudFF1ZXN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcXVlc3Rpb25uYWlyZVZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcXVlc3Rpb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYWRkaXRpb25hbERhdGE6IE9iamVjdDtcblxuICBwcml2YXRlIHNraXBwYWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQ29uc3R1Y3RvcjogRm9ybUNvbnN0cnVjdG9yU2VydmljZSxcbiAgICBASW5qZWN0KCdvcHRpb25zJykgcHJpdmF0ZSBvcHRpb25zOiBRdWVzdGlvbm5haXJlT3B0aW9uc1xuICApIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHF1ZXN0aW9ubmFpcmUgZnJvbSBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGxvYWQsIG9mdGVuIHBhcnNlZCBKU09OIGZyb20gdGhlIGVkaXRvci5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIG9mIHRoZSBxdWVzdGlvbm5haXJlLCBvZnRlbiBmcm9tIGxvY2Fsc3RvcmFnZS5cbiAgICogQHJldHVybnMgbnVsbFxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRRdWVzdGlvbm5haXJlKHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsIHNhdmVkU3RhdGU/OiBPYmplY3QsIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSA9IF8uY2xvbmVEZWVwKHF1ZXN0aW9ubmFpcmUpO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSBfLmNsb25lRGVlcChxdWVzdGlvbm5haXJlKTtcblxuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcblxuICAgIGlmIChzYXZlZFN0YXRlICYmIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgICBfLmNsb25lRGVlcCh0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSksXG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5mb3JtQ29uc3R1Y3Rvci5jb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGUsIG5ld0RhdGEuc2VjdGlvbnMsIG5ld0RhdGEuZm9ybXMpO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPSBuZXdEYXRhLmZvcm1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0ucGF0Y2hWYWx1ZShzYXZlZFN0YXRlKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9ubmFpcmUoc2F2ZWRTdGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKTtcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlICYmIHF1ZXN0aW9uLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocXVlc3Rpb24uZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpcFRvRmlyc3RTZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNraXBUb0ZpcnN0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCBxdWVzdGlvbm5haXJlLCB1c2VkIHdoZW4gYSB2YWx1ZSBpcyB1cGRhdGVkIHRvIGNoZWNrIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSBzYXZlZFN0YXRlIFRoZSBzYXZlZCBzdGF0ZSBvZiB0aGUgcXVlc3Rpb25uYWlyZSwgb2Z0ZW4gZnJvbSBsb2NhbHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIG51bGxcbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVRdWVzdGlvbm5haXJlKHNhdmVkU3RhdGU/OiBPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgXy5jbG9uZURlZXAodGhpcy5vcmlnaW5hbFF1ZXN0aW9ubmFpcmUpLFxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhXG4gICAgKTtcbiAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA9IG5ld0RhdGEuZm9ybXM7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyA9IG5ld0RhdGEuc2VjdGlvbnM7XG5cbiAgICBpZiAoc2F2ZWRTdGF0ZSAmJiBPYmplY3Qua2V5cyhzYXZlZFN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5wYXRjaFZhbHVlKHNhdmVkU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlZEV2ZW50LmVtaXQoKTtcbiAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25uYWlyZSh0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWVsZHModGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS5jbGVhcmZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNMYXN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgY29uc3QgbWF4SW5kZXggPSAgdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IG1heEluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlY3Rpb25WYWxpZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KG5hbWUpLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGZpZWxkcyBwYXJzZWRcbiAgICogQHBhcmFtIGNsZWFyZmllbGRzIEFuIGFycmF5IG9mIHN0cmluZ3MsIHBhdGhzIHRvIGNsZWFyLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckZpZWxkcyhjbGVhcmZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmICghY2xlYXJmaWVsZHMgfHwgY2xlYXJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjbGVhcmZpZWxkIG9mIGNsZWFyZmllbGRzKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KGNsZWFyZmllbGQpO1xuXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnJlc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVubG9hZHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25uYWlyZS5cbiAgICogVXNlZnVsIHdoZW4gZXhpdGluZyBhIHF1ZXN0aW9ubmFpcmUgcGFnZSBvciBjb21wbGV0aW5nIGEgcXVlc3Rpb25uYWlyZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1bmxvYWRRdWVzdGlvbm5haXJlKCkge1xuICAgIHRoaXMub3JpZ2luYWxRdWVzdGlvbm5haXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbk5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWxlY3RlZCBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VjdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50U2VjdGlvbigpOiB7IGRhdGE6IFNlY3Rpb247IGZvcm1Hcm91cDogRm9ybUdyb3VwOyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgubmFtZSA9PT0gdGhpcy5jdXJyZW50U2VjdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgZm9ybUdyb3VwOiB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoZGF0YS5uYW1lKSBhcyBGb3JtR3JvdXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVNlY3Rpb25zKCk6IEFycmF5PFNlY3Rpb24+IHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgfHwgIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBkYXRhIGZvciB0aGUgZW50aXJlIHF1ZXN0aW9ubmFpcmUuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBvZiBkYXRhLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBxdWVzdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRRdWVzdGlvbigpOiB7IGRhdGE6IFF1ZXN0aW9uOyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbDsgfSB8IG51bGwge1xuICAgIGlmICghdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC5uYW1lID09PSB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5jdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAuZ2V0KGRhdGEubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBmb3JtQ29udHJvbDogZm9ybUNvbnRyb2xcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBxdWVzdGlvbi5cbiAgICogSWYgdGhlcmUgaXMgbm8gcXVlc3Rpb24gdG8gbmF2aWdhdGUgdG8gaXQgd2lsbCByZWplY3Qgd2l0aCBhIG91dCBvZiBib3VuZHMgZXhjZXB0aW9uLlxuICAgKiBJZiBhbGxvd1NraXBSZXF1aXJlZEZpZWxkIGlzIGZhbHNlIHRoZW4gaXQgd2lsbCByZWplY3QgaWYgdGhlIGN1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZC5cbiAgICogSWYgZW1pdFNlY3Rpb25GaW5pc2hFdmVudCBpcyB0cnVlIHRoZW4gaXQgd2lsbCBlbWl0IGFuIGV2ZW50IGlmIGl0J3MgbmF2aWdhdGluZyBwYXN0IHRoZSBsZW5ndGggb2YgcXVlc3Rpb25zLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHF1ZXN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0UXVlc3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93U2tpcFJlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbC52YWxpZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ0N1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0Q3VycmVudFF1ZXN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uSW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGlzTGFzdFF1ZXN0aW9uID0gbGFzdFF1ZXN0aW9uSW5kZXggPT09IGN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAoaXNMYXN0UXVlc3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25GaW5pc2hlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb1F1ZXN0aW9uKG5ld0luZGV4KS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uLlxuICAgKiBJZiB0aGVyZSBpcyBubyBxdWVzdGlvbiB0byBuYXZpZ2F0ZSB0byBpdCB3aWxsIHJlamVjdCB3aXRoIGEgb3V0IG9mIGJvdW5kcyBleGNlcHRpb24uXG4gICAqIElmIGFsbG93TmF2aWdhdGVCYWNrd2FyZHMgaXMgZmFsc2UgdGhlbiBpdCB3aWxsIHJlamVjdC5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgcHJldlF1ZXN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd05hdmlnYXRlQmFja3dhcmRzKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1RoaXMgcXVlc3Rpb25uYWlyZSBkb2VzIG5vdCBhbGxvdyBmb3IgYmFja3dhcmRzIG5hdmlnYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRDdXJyZW50UXVlc3Rpb25JbmRleCgpLnRoZW4oKGN1cnJlbnRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUXVlc3Rpb24obmV3SW5kZXgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25zIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRRdWVzdGlvbkluZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMuaW5kZXhPZih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnQ291bGQgbm90IGZpbmQgY3VycmVudCBxdWVzdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHF1ZXN0aW9uIGlzIGluIGJvdW5kcyB0aGVuIG5hdmlnYXRlcyB0byBpdC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgbmF2aWdhdGVUb1F1ZXN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWUgPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zW2luZGV4XS5uYW1lO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2VjdGlvbi5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBzZWN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0U2VjdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXRDdXJyZW50U2VjdGlvbkluZGV4KCkudGhlbigoY3VycmVudEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHByZXZTZWN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9RdWVzdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWN0aW9uIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucy5pbmRleE9mKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YSk7XG5cbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ0NvdWxkIG5vdCBmaW5kIGN1cnJlbnQgc2VjdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHNlY3Rpb24gaXMgaW4gYm91bmRzIHRoZW4gbmF2aWdhdGVzIHRvIGl0LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIG5hdmlnYXRlVG9TZWN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnNbaW5kZXhdLm5hbWU7XG4gICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgdGhlIGN1cnJlbnQgcXVlc3Rpb24gd2l0aCB0aGUgcGFyc2VkIHZhbHVlLlxuICAgKiBAcGFyYW0gYW5zd2VyIFRoZSB2YWx1ZSB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uIHdpdGguXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYW5zd2VyQ3VycmVudFF1ZXN0aW9uKGFuc3dlcjogYW55LCBzZW5kVG9OZXh0UXVlc3Rpb24/OiBib29sZWFuKSB7XG4gICAgaWYgKCFzZW5kVG9OZXh0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2tpcHBhYmxlKSB7IC8vIFRpbWVvdXQgdG8gcHJldmVudCBza2lwcGluZyBnbGl0Y2guXG4gICAgICB0aGlzLnNraXBwYWJsZSA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICAgIHRoaXMubmV4dFF1ZXN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5za2lwcGFibGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXBlYXRlciBpdGVtIHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uLlxuICAgKiBDdXJyZW50IHF1ZXN0aW9uIG11c3QgYmUgb2YgdHlwZSBSZXBlYXRlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaGFzIGJlZW4gYWRkZWQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYWRkUmVwZWF0ZXJJdGVtKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgQ3VycmVudCBxdWVzdGlvbiBpc24ndCBhIHJlcGVhdGVyYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBlYXRlckZvcm0gPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKCFyZXBlYXRlckZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgUmVwZWF0ZXIgdGVtcGxhdGUgZmFpbGVkIHRvIGdlbmVyYXRlLiBNYXkgYmUgZHVlIHRvIHRoZSByZXBlYXRlciBoYXZpbmcgbm8gaXRlbXMgaW4gdGhlIGVkaXRvci5gKTtcbiAgICAgIH1cblxuXG4gICAgICBpZiAoISh0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgVGhlIGN1cnJlbnQgcXVlc3Rpb25zIGNvbnRyb2wgaXNuJ3Qgb2YgdHlwZSBGb3JtQXJyYXlgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wucHVzaChyZXBlYXRlckZvcm0pO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVwZWF0ZXIgaXRlbSBvbiB0aGUgY3VycmVudCBxdWVzdGlvbi5cbiAgICogQ3VycmVudCBxdWVzdGlvbiBtdXN0IGJlIG9mIHR5cGUgUmVwZWF0ZXIuXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGUgcmVwZWF0ZXIgaXRlbSBoYXMgYmVlbiByZW1vdmVkLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJlcGVhdGVySXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGBDdXJyZW50IHF1ZXN0aW9uIGlzbid0IGEgcmVwZWF0ZXJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoYFRoZSBjdXJyZW50IHF1ZXN0aW9ucyBjb250cm9sIGlzbid0IG9mIHR5cGUgRm9ybUFycmF5YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIHJlcGVhdGVyIGl0ZW1cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBhdCB3aGljaCB0byBnZXQgdGhlIGxhYmVsIGZvci5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgd2hpY2ggaXMgdGhlIGRpc3BsYXkgdGV4dC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZXRSZXBlYXRlckl0ZW1MYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sIHx8ICEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJJdGVtID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wuY29udHJvbHNbaW5kZXhdO1xuXG4gICAgaWYgKCFyZXBlYXRlckl0ZW0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9uLmRhdGEucmVwZWF0ZXJEaXNwbGF5TmFtZTtcbiAgICBjb25zdCBzcGxpdFRlbXBsYXRlID0gdGVtcGxhdGUuc3BsaXQoJyAnKTtcblxuICAgIGNvbnN0IGRpc3BsYXlBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGVJdGVtIG9mIHNwbGl0VGVtcGxhdGUpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZUl0ZW0ubWF0Y2goL1xcWy4qP1xcXS8pKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0ZW1wbGF0ZUl0ZW0ucmVwbGFjZSgvW1xcW1xcXSddKy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZXBlYXRlckl0ZW0uZ2V0KHBhdGgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogJz8nO1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh0ZW1wbGF0ZUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXkgPSBkaXNwbGF5QXJyYXkuam9pbignICcpO1xuICAgIHJldHVybiBkaXNwbGF5O1xuICB9XG59XG4iXX0=
|
|
699
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQThCLFNBQVMsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXBGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBSzNELE1BQU0sT0FBTyxvQkFBb0I7Ozs7O0lBbUIvQixZQUNVLGNBQXNDLEVBQ25CLE9BQTZCO1FBRGhELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQXBCbkQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFlakUsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtyQixDQUFDOzs7Ozs7Ozs7SUFTUSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLFVBQW1CLEVBQUUsY0FBdUI7O1lBQ3ZHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBRXJDLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxD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QztTQUNGOztjQUVLLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN0QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7WUE3Z0JGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQVpRLHNCQUFzQjs0Q0FrQzFCLE1BQU0sU0FBQyxTQUFTOzs7OztJQXBCbkIsZ0RBQXFFOztJQUNyRSxvREFBeUU7Ozs7O0lBRXpFLHFEQUE2Qzs7Ozs7SUFFN0Msb0RBQTRDOzs7OztJQUM1Qyx3REFBNEM7Ozs7O0lBRTVDLGtEQUFtQzs7Ozs7SUFDbkMsbURBQW9DOzs7OztJQUVwQyxvRUFBMkQ7Ozs7O0lBQzNELCtEQUFzRDs7Ozs7SUFFdEQsOENBQStCOzs7OztJQUUvQix5Q0FBeUI7Ozs7O0lBR3ZCLDhDQUE4Qzs7Ozs7SUFDOUMsdUNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db25zdHJ1Y3RvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZS1vcHRpb25zJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIHtcbiAgcHVibGljIGRhdGFDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBzZWN0aW9uRmluaXNoZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIG9yaWdpbmFsUXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZTtcblxuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHByaXZhdGUgY3VycmVudFNlY3Rpb25OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudFF1ZXN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcXVlc3Rpb25uYWlyZVZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcXVlc3Rpb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYWRkaXRpb25hbERhdGE6IE9iamVjdDtcblxuICBwcml2YXRlIHNraXBwYWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQ29uc3R1Y3RvcjogRm9ybUNvbnN0cnVjdG9yU2VydmljZSxcbiAgICBASW5qZWN0KCdvcHRpb25zJykgcHJpdmF0ZSBvcHRpb25zOiBRdWVzdGlvbm5haXJlT3B0aW9uc1xuICApIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHF1ZXN0aW9ubmFpcmUgZnJvbSBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGxvYWQsIG9mdGVuIHBhcnNlZCBKU09OIGZyb20gdGhlIGVkaXRvci5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIG9mIHRoZSBxdWVzdGlvbm5haXJlLCBvZnRlbiBmcm9tIGxvY2Fsc3RvcmFnZS5cbiAgICogQHJldHVybnMgbnVsbFxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRRdWVzdGlvbm5haXJlKHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsIHNhdmVkU3RhdGU/OiBPYmplY3QsIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSA9IF8uY2xvbmVEZWVwKHF1ZXN0aW9ubmFpcmUpO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSBfLmNsb25lRGVlcChxdWVzdGlvbm5haXJlKTtcblxuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcblxuICAgIGlmIChzYXZlZFN0YXRlICYmIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgICBfLmNsb25lRGVlcCh0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSksXG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5mb3JtQ29uc3R1Y3Rvci5jb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGUsIG5ld0RhdGEuc2VjdGlvbnMsIG5ld0RhdGEuZm9ybXMpO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPSBuZXdEYXRhLmZvcm1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0ucGF0Y2hWYWx1ZShzYXZlZFN0YXRlKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9ubmFpcmUoc2F2ZWRTdGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKTtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IG51bGwgJiYgcXVlc3Rpb24uZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0ZvdW5kIG51bGwgd2l0aCBkZWZhdWx0IHZhbHVlJywgcXVlc3Rpb24pO1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocXVlc3Rpb24uZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjb250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpcFRvRmlyc3RTZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNraXBUb0ZpcnN0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCBxdWVzdGlvbm5haXJlLCB1c2VkIHdoZW4gYSB2YWx1ZSBpcyB1cGRhdGVkIHRvIGNoZWNrIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSBzYXZlZFN0YXRlIFRoZSBzYXZlZCBzdGF0ZSBvZiB0aGUgcXVlc3Rpb25uYWlyZSwgb2Z0ZW4gZnJvbSBsb2NhbHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIG51bGxcbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVRdWVzdGlvbm5haXJlKHNhdmVkU3RhdGU/OiBPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgXy5jbG9uZURlZXAodGhpcy5vcmlnaW5hbFF1ZXN0aW9ubmFpcmUpLFxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhXG4gICAgKTtcbiAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA9IG5ld0RhdGEuZm9ybXM7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyA9IG5ld0RhdGEuc2VjdGlvbnM7XG5cbiAgICBpZiAoc2F2ZWRTdGF0ZSAmJiBPYmplY3Qua2V5cyhzYXZlZFN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5wYXRjaFZhbHVlKHNhdmVkU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlZEV2ZW50LmVtaXQoKTtcbiAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25uYWlyZSh0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWVsZHModGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS5jbGVhcmZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNMYXN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgY29uc3QgbWF4SW5kZXggPSAgdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IG1heEluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlY3Rpb25WYWxpZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KG5hbWUpLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGZpZWxkcyBwYXJzZWRcbiAgICogQHBhcmFtIGNsZWFyZmllbGRzIEFuIGFycmF5IG9mIHN0cmluZ3MsIHBhdGhzIHRvIGNsZWFyLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckZpZWxkcyhjbGVhcmZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmICghY2xlYXJmaWVsZHMgfHwgY2xlYXJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjbGVhcmZpZWxkIG9mIGNsZWFyZmllbGRzKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KGNsZWFyZmllbGQpO1xuXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnJlc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVubG9hZHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25uYWlyZS5cbiAgICogVXNlZnVsIHdoZW4gZXhpdGluZyBhIHF1ZXN0aW9ubmFpcmUgcGFnZSBvciBjb21wbGV0aW5nIGEgcXVlc3Rpb25uYWlyZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1bmxvYWRRdWVzdGlvbm5haXJlKCkge1xuICAgIHRoaXMub3JpZ2luYWxRdWVzdGlvbm5haXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbk5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWxlY3RlZCBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VjdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50U2VjdGlvbigpOiB7IGRhdGE6IFNlY3Rpb247IGZvcm1Hcm91cDogRm9ybUdyb3VwOyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgubmFtZSA9PT0gdGhpcy5jdXJyZW50U2VjdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgZm9ybUdyb3VwOiB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoZGF0YS5uYW1lKSBhcyBGb3JtR3JvdXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVNlY3Rpb25zKCk6IEFycmF5PFNlY3Rpb24+IHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgfHwgIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBkYXRhIGZvciB0aGUgZW50aXJlIHF1ZXN0aW9ubmFpcmUuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBvZiBkYXRhLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBxdWVzdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRRdWVzdGlvbigpOiB7IGRhdGE6IFF1ZXN0aW9uOyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbDsgfSB8IG51bGwge1xuICAgIGlmICghdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC5uYW1lID09PSB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5jdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAuZ2V0KGRhdGEubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBmb3JtQ29udHJvbDogZm9ybUNvbnRyb2xcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBxdWVzdGlvbi5cbiAgICogSWYgdGhlcmUgaXMgbm8gcXVlc3Rpb24gdG8gbmF2aWdhdGUgdG8gaXQgd2lsbCByZWplY3Qgd2l0aCBhIG91dCBvZiBib3VuZHMgZXhjZXB0aW9uLlxuICAgKiBJZiBhbGxvd1NraXBSZXF1aXJlZEZpZWxkIGlzIGZhbHNlIHRoZW4gaXQgd2lsbCByZWplY3QgaWYgdGhlIGN1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZC5cbiAgICogSWYgZW1pdFNlY3Rpb25GaW5pc2hFdmVudCBpcyB0cnVlIHRoZW4gaXQgd2lsbCBlbWl0IGFuIGV2ZW50IGlmIGl0J3MgbmF2aWdhdGluZyBwYXN0IHRoZSBsZW5ndGggb2YgcXVlc3Rpb25zLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHF1ZXN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0UXVlc3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93U2tpcFJlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbC52YWxpZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ0N1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0Q3VycmVudFF1ZXN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uSW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGlzTGFzdFF1ZXN0aW9uID0gbGFzdFF1ZXN0aW9uSW5kZXggPT09IGN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAoaXNMYXN0UXVlc3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25GaW5pc2hlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb1F1ZXN0aW9uKG5ld0luZGV4KS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uLlxuICAgKiBJZiB0aGVyZSBpcyBubyBxdWVzdGlvbiB0byBuYXZpZ2F0ZSB0byBpdCB3aWxsIHJlamVjdCB3aXRoIGEgb3V0IG9mIGJvdW5kcyBleGNlcHRpb24uXG4gICAqIElmIGFsbG93TmF2aWdhdGVCYWNrd2FyZHMgaXMgZmFsc2UgdGhlbiBpdCB3aWxsIHJlamVjdC5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgcHJldlF1ZXN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd05hdmlnYXRlQmFja3dhcmRzKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1RoaXMgcXVlc3Rpb25uYWlyZSBkb2VzIG5vdCBhbGxvdyBmb3IgYmFja3dhcmRzIG5hdmlnYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRDdXJyZW50UXVlc3Rpb25JbmRleCgpLnRoZW4oKGN1cnJlbnRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUXVlc3Rpb24obmV3SW5kZXgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25zIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRRdWVzdGlvbkluZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMuaW5kZXhPZih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnQ291bGQgbm90IGZpbmQgY3VycmVudCBxdWVzdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHF1ZXN0aW9uIGlzIGluIGJvdW5kcyB0aGVuIG5hdmlnYXRlcyB0byBpdC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgbmF2aWdhdGVUb1F1ZXN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWUgPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zW2luZGV4XS5uYW1lO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2VjdGlvbi5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBzZWN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0U2VjdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXRDdXJyZW50U2VjdGlvbkluZGV4KCkudGhlbigoY3VycmVudEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHByZXZTZWN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9RdWVzdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWN0aW9uIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucy5pbmRleE9mKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YSk7XG5cbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ0NvdWxkIG5vdCBmaW5kIGN1cnJlbnQgc2VjdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHNlY3Rpb24gaXMgaW4gYm91bmRzIHRoZW4gbmF2aWdhdGVzIHRvIGl0LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIG5hdmlnYXRlVG9TZWN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnNbaW5kZXhdLm5hbWU7XG4gICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgdGhlIGN1cnJlbnQgcXVlc3Rpb24gd2l0aCB0aGUgcGFyc2VkIHZhbHVlLlxuICAgKiBAcGFyYW0gYW5zd2VyIFRoZSB2YWx1ZSB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uIHdpdGguXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYW5zd2VyQ3VycmVudFF1ZXN0aW9uKGFuc3dlcjogYW55LCBzZW5kVG9OZXh0UXVlc3Rpb24/OiBib29sZWFuKSB7XG4gICAgaWYgKCFzZW5kVG9OZXh0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2tpcHBhYmxlKSB7IC8vIFRpbWVvdXQgdG8gcHJldmVudCBza2lwcGluZyBnbGl0Y2guXG4gICAgICB0aGlzLnNraXBwYWJsZSA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICAgIHRoaXMubmV4dFF1ZXN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5za2lwcGFibGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXBlYXRlciBpdGVtIHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uLlxuICAgKiBDdXJyZW50IHF1ZXN0aW9uIG11c3QgYmUgb2YgdHlwZSBSZXBlYXRlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaGFzIGJlZW4gYWRkZWQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYWRkUmVwZWF0ZXJJdGVtKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgQ3VycmVudCBxdWVzdGlvbiBpc24ndCBhIHJlcGVhdGVyYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBlYXRlckZvcm0gPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKCFyZXBlYXRlckZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgUmVwZWF0ZXIgdGVtcGxhdGUgZmFpbGVkIHRvIGdlbmVyYXRlLiBNYXkgYmUgZHVlIHRvIHRoZSByZXBlYXRlciBoYXZpbmcgbm8gaXRlbXMgaW4gdGhlIGVkaXRvci5gKTtcbiAgICAgIH1cblxuXG4gICAgICBpZiAoISh0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgVGhlIGN1cnJlbnQgcXVlc3Rpb25zIGNvbnRyb2wgaXNuJ3Qgb2YgdHlwZSBGb3JtQXJyYXlgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wucHVzaChyZXBlYXRlckZvcm0pO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVwZWF0ZXIgaXRlbSBvbiB0aGUgY3VycmVudCBxdWVzdGlvbi5cbiAgICogQ3VycmVudCBxdWVzdGlvbiBtdXN0IGJlIG9mIHR5cGUgUmVwZWF0ZXIuXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGUgcmVwZWF0ZXIgaXRlbSBoYXMgYmVlbiByZW1vdmVkLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJlcGVhdGVySXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGBDdXJyZW50IHF1ZXN0aW9uIGlzbid0IGEgcmVwZWF0ZXJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoYFRoZSBjdXJyZW50IHF1ZXN0aW9ucyBjb250cm9sIGlzbid0IG9mIHR5cGUgRm9ybUFycmF5YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIHJlcGVhdGVyIGl0ZW1cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBhdCB3aGljaCB0byBnZXQgdGhlIGxhYmVsIGZvci5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgd2hpY2ggaXMgdGhlIGRpc3BsYXkgdGV4dC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZXRSZXBlYXRlckl0ZW1MYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sIHx8ICEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJJdGVtID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wuY29udHJvbHNbaW5kZXhdO1xuXG4gICAgaWYgKCFyZXBlYXRlckl0ZW0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9uLmRhdGEucmVwZWF0ZXJEaXNwbGF5TmFtZTtcbiAgICBjb25zdCBzcGxpdFRlbXBsYXRlID0gdGVtcGxhdGUuc3BsaXQoJyAnKTtcblxuICAgIGNvbnN0IGRpc3BsYXlBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGVJdGVtIG9mIHNwbGl0VGVtcGxhdGUpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZUl0ZW0ubWF0Y2goL1xcWy4qP1xcXS8pKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0ZW1wbGF0ZUl0ZW0ucmVwbGFjZSgvW1xcW1xcXSddKy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZXBlYXRlckl0ZW0uZ2V0KHBhdGgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogJz8nO1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh0ZW1wbGF0ZUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXkgPSBkaXNwbGF5QXJyYXkuam9pbignICcpO1xuICAgIHJldHVybiBkaXNwbGF5O1xuICB9XG59XG4iXX0=
|
|
@@ -168,6 +168,8 @@ var FormConstructorService = /** @class */ (function () {
|
|
|
168
168
|
return currentArray ? currentArray : this.fb.array([], convertedValidators);
|
|
169
169
|
case QuestionType.Checklist:
|
|
170
170
|
return this.generateGroupForChecklist(question, convertedValidators);
|
|
171
|
+
case QuestionType.Slider:
|
|
172
|
+
return this.fb.control(null, { validators: convertedValidators }); // Remove update on blur for sliders.
|
|
171
173
|
default:
|
|
172
174
|
return this.fb.control(null, { validators: convertedValidators, updateOn: 'blur' });
|
|
173
175
|
}
|
|
@@ -461,4 +463,4 @@ if (false) {
|
|
|
461
463
|
*/
|
|
462
464
|
FormConstructorService.prototype.filterService;
|
|
463
465
|
}
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBd0QsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFLL0Q7SUFLRSxnQ0FDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7Ozs7Ozs7Ozs7O0lBQ0ksOERBQTZCOzs7Ozs7Ozs7O0lBQXBDLFVBQ0UsYUFBNEIsRUFDNUIsd0JBQW1DLEVBQ25DLGNBQXVCLEVBQ3ZCLFVBQW9COztZQUVkLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUM7O1lBQy9GLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7UUFDNUYsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7OztJQUVPLHlEQUF3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V0FBQTt3QkFDakIsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7NEJBQzNDLFNBQVM7eUJBQ1Y7OzRCQUVLLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQzdELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7NEJBQ2hELFNBQVM7eUJBQ1Y7OzRCQUVLLGlCQUFpQixHQUFHLG1CQUFBLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQWE7d0JBRWxHLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFOzRCQUM5RCxTQUFTO3lCQUNWOzs0QkFFRCx1RkFBdUY7NEJBQ3ZGLEtBQTJCLElBQUEsaUNBQUEsaUJBQUEsYUFBYSxDQUFBLENBQUEsNENBQUEsdUVBQUU7Z0NBQXJDLElBQU0sWUFBWSwwQkFBQTs7b0NBQ2Ysb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQztnQ0FDcEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7NkJBQzlDOzs7Ozs7Ozs7cUJBQ0Y7Ozs7Ozs7OzthQUNGOzs7Ozs7Ozs7SUFDSCxDQUFDOztnQkFsTUYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFkUSxXQUFXO2dCQUtYLGFBQWE7OztpQ0FOdEI7Q0FnTkMsQUFuTUQsSUFtTUM7U0FoTVksc0JBQXNCOzs7Ozs7SUFHL0Isb0NBQXVCOzs7OztJQUN2QiwrQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZSc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4vZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy92YWxpZGF0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZXBlYXRlclF1ZXN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBlYXRlci1xdWVzdGlvbic7XG5pbXBvcnQgeyBDaGVja2xpc3RJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jaGVja2xpc3QtaXRlbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db25zdHJ1Y3RvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZVxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgZm9ybSBncm91cCBiYXNlZCBvbiB0aGUgcXVlc3Rpb25uYWlyZSBkYXRhLlxuICAgKiBUaGlzIGZvcm0gZ3JvdXAgaGFzIGJlZW4gZmlsdGVyZWQgZG93biBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgc2VjdGlvbnMgYW5kIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHF1ZXN0aW9ubmFpcmUgVGhlIHF1ZXN0aW9ubmFpcmUgZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZWQgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUXVlc3Rpb25uYWlyZShcbiAgICBxdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlLFxuICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLFxuICAgIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0LFxuICAgIHNraXBGaWx0ZXI/OiBib29sZWFuXG4gICk6IHtzZWN0aW9uczogQXJyYXk8U2VjdGlvbj47IGZvcm1zOiBGb3JtR3JvdXB9IHtcbiAgICBjb25zdCBzZWN0aW9ucyA9IHNraXBGaWx0ZXIgP1xuICAgICAgcXVlc3Rpb25uYWlyZS5zZWN0aW9ucyA6XG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyU2VjdGlvbnMocXVlc3Rpb25uYWlyZS5zZWN0aW9ucywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgY29uc3QgcXVlc3Rpb25uYWlyZUZvcm1zID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgcmV0dXJuIHtzZWN0aW9uczogc2VjdGlvbnMsIGZvcm1zOiBxdWVzdGlvbm5haXJlRm9ybXN9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBzZWN0aW9uRm9ybXMgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JTZWN0aW9uKHNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgICBxdWVzdGlvbm5haXJlRm9ybXMuYWRkQ29udHJvbChzZWN0aW9uLm5hbWUsIHNlY3Rpb25Gb3Jtcyk7XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbm5haXJlRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHNlY3Rpb24gZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHNlY3Rpb24gVGhlIHNlY3Rpb24gZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZXJlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCk6IEZvcm1Hcm91cCB7XG4gICAgY29uc3Qgc2VjdGlvbkZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICBpZiAocXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlLkluZm8pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb24sIHNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgICBzZWN0aW9uRm9ybXMuYWRkQ29udHJvbChxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbkNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gc2VjdGlvbkZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYXN0cmFjdCBmb3JtIGNvbnRyb2wgYmFzZWQgb24gdGhlIHF1ZXN0aW9uIGRhdGEuXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24gZGF0YSB0byBidWlsZCB0aGUgYWJzdHJhY3QgY29udHJvbCBvbi5cbiAgICogQHJldHVybnMgQW4gYWJzdHJhY3QgY29udHJvbC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb246IFF1ZXN0aW9uLCBzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMocXVlc3Rpb24udmFsaWRhdG9ycyk7XG4gICAgc3dpdGNoIChxdWVzdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5SZXBlYXRlcjpcbiAgICAgICAgY29uc3QgY3VycmVudEFycmF5ID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID8gKGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoW3NlY3Rpb24ubmFtZSwgcXVlc3Rpb24ubmFtZV0pIGFzIEZvcm1BcnJheSkgOiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRBcnJheSA/IGN1cnJlbnRBcnJheSA6IHRoaXMuZmIuYXJyYXkoW10sIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuQ2hlY2tsaXN0OlxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUdyb3VwRm9yQ2hlY2tsaXN0KHF1ZXN0aW9uLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgeyB2YWxpZGF0b3JzOiBjb252ZXJ0ZWRWYWxpZGF0b3JzLCB1cGRhdGVPbjogJ2JsdXInIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGZvcm0gZ3JvdXAgZm9yIGEgY2hlY2tsaXN0IHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uLiBNdXN0IGJlIG9mIHR5cGUgY2hlY2tsaXN0IG9yIGVsc2UgbnVsbCBpcyByZXR1cm5lZC5cbiAgICogQHJldHVybnMgQSBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUdyb3VwRm9yQ2hlY2tsaXN0KHF1ZXN0aW9uOiBRdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycykge1xuICAgIGlmIChxdWVzdGlvbi50eXBlICE9PSBRdWVzdGlvblR5cGUuQ2hlY2tsaXN0IHx8IHF1ZXN0aW9uLmNoZWNrbGlzdEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tsaXN0Rm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3QgY2hlY2tsaXN0SXRlbSBvZiBxdWVzdGlvbi5jaGVja2xpc3RJdGVtcykge1xuICAgICAgY29uc3QgY2hlY2tsaXN0SXRlbUNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2wobnVsbCwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBjaGVja2xpc3RGb3Jtcy5hZGRDb250cm9sKGNoZWNrbGlzdEl0ZW0ubmFtZSwgY2hlY2tsaXN0SXRlbUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tsaXN0Rm9ybXM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGZvcm0gdGVtcGxhdGUgZm9yIGEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24uIE11c3QgYmUgb2YgdHlwZSByZXBlYXRlciBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb246IFF1ZXN0aW9uKTogRm9ybUdyb3VwIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyIHx8IHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ1F1ZXN0aW9uIGlzbnQgYSByZXBlYXRlciBvciBoYXMgbm8gcXVlc3Rpb25zLCByZXR1cm5pbmcgbnVsbCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCByZXBlYXRlclF1ZXN0aW9uIG9mIHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCByZXBlYXRlclF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUmVwZWF0ZXJRdWVzdGlvbihyZXBlYXRlclF1ZXN0aW9uKTtcbiAgICAgIHJlcGVhdGVyRm9ybXMuYWRkQ29udHJvbChyZXBlYXRlclF1ZXN0aW9uLm5hbWUsIHJlcGVhdGVyUXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcGVhdGVyRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgY29udHJvbCBmb3IgYSByZXBlYXRlcnMgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSByZXBlYXRlclF1ZXN0aW9uIEEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclJlcGVhdGVyUXVlc3Rpb24ocmVwZWF0ZXJRdWVzdGlvbjogUmVwZWF0ZXJRdWVzdGlvbik6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMocmVwZWF0ZXJRdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKG51bGwsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246ICdibHVyJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiB2YWxpZGF0b3JzIGludG8gZm9ybSB2YWxpZGF0b3JzLlxuICAgKiBAcGFyYW0gdmFsaWRhdG9ycyBUaGUgdW5jb3ZlcnRlZCBhcnJheSBvZiB2YWxpZGF0b3JzLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcmVkIGFycmF5IG9mIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcnModmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yPik6IEFycmF5PFZhbGlkYXRvckZuPiB7XG4gICAgaWYgKCF2YWxpZGF0b3JzIHx8IHZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvciA9IHRoaXMuY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3IpO1xuICAgICAgaWYgKGNvbnZlcnRlZFZhbGlkYXRvcikge1xuICAgICAgICBjb252ZXJ0ZWRWYWxpZGF0b3JzLnB1c2goY29udmVydGVkVmFsaWRhdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZFZhbGlkYXRvcnM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzaW5nbGUgdmFsaWRhdG9yIGludG8gYSBmb3JtIHZhbGlkYXRvci5cbiAgICogQHBhcmFtIHZhbGlkYXRvciBUaGUgdW5jb252ZXJ0ZWQgdmFsaWRhdG9yLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcnRlZCBmb3JtIHZhbGlkYXRvci5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvcik6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SZXF1aXJlZDpcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgZm9ybXMgZm9yIHJlcGVhdGVycyBmcm9tIHNhdmVkIHN0YXRlLlxuICAgKiBAcGFyYW0gc2F2ZWRTdGF0ZSBUaGUgc2F2ZWQgc3RhdGUgdG8gbG9hZC5cbiAgICogQHBhcmFtIHNlY3Rpb25zIFRoZSBzZWN0aW9ucyBhbHJlYWR5IGdlbmVyYXRlZCBieSB0aGUgZm9ybSBjb25zdHJ1Y3Rvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGU6IGFueSwgc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckFycmF5ID0gc2F2ZWRTdGF0ZVtzZWN0aW9uLm5hbWVdW3F1ZXN0aW9uLm5hbWVdO1xuICAgICAgICBpZiAoIXJlcGVhdGVyQXJyYXkgfHwgcmVwZWF0ZXJBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGVhdGVyRm9ybUFycmF5ID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmdldChbc2VjdGlvbi5uYW1lLCBxdWVzdGlvbi5uYW1lXSkgYXMgRm9ybUFycmF5O1xuXG4gICAgICAgIGlmIChyZXBlYXRlckZvcm1BcnJheS5jb250cm9scy5sZW5ndGggPT09IHJlcGVhdGVyQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgZWFjaCBpdGVtIHRoYXQgdXNlZCB0byBiZSB0aGVyZSBwdXNoIGEgbmV3IGVtcHR5IHRlbXBsYXRlIHRoZXJlIHRvIGJlIHBvcHVsYXRlZC5cbiAgICAgICAgZm9yIChjb25zdCByZXBlYXRlckl0ZW0gb2YgcmVwZWF0ZXJBcnJheSkge1xuICAgICAgICAgIGNvbnN0IHJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb24pO1xuICAgICAgICAgIHJlcGVhdGVyRm9ybUFycmF5LnB1c2gocmVwZWF0ZXJJdGVtVGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBd0QsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFLL0Q7SUFLRSxnQ0FDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7Ozs7Ozs7Ozs7O0lBQ0ksOERBQTZCOzs7Ozs7Ozs7O0lBQXBDLFVBQ0UsYUFBNEIsRUFDNUIsd0JBQW1DLEVBQ25DLGNBQXVCLEVBQ3ZCLFVBQW9COztZQUVkLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUM7O1lBQy9GLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7UUFDNUYsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7OztJQUVPLHlEQUF3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QUF1Qjs7Ozs7SUFDdkIsK0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlY3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9uJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9ubmFpcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL2ZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IFZhbGlkYXRpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvdmFsaWRhdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUmVwZWF0ZXJRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwZWF0ZXItcXVlc3Rpb24nO1xuaW1wb3J0IHsgQ2hlY2tsaXN0SXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlY2tsaXN0LWl0ZW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ29uc3RydWN0b3JTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2VcbiAgKSB7IH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHF1ZXN0aW9ubmFpcmUgZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHNlY3Rpb25zIGFuZCBxdWVzdGlvbnMuXG4gICAqIEBwYXJhbSBxdWVzdGlvbm5haXJlIFRoZSBxdWVzdGlvbm5haXJlIGRhdGEgdG8gYnVpbGQgdGhlIGZvcm0gZ3JvdXAgb24uXG4gICAqIEByZXR1cm5zIEEgZmlsdGVkIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVGb3Jtc0ZvclF1ZXN0aW9ubmFpcmUoXG4gICAgcXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZSxcbiAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCxcbiAgICBhZGRpdGlvbmFsRGF0YT86IE9iamVjdCxcbiAgICBza2lwRmlsdGVyPzogYm9vbGVhblxuICApOiB7c2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+OyBmb3JtczogRm9ybUdyb3VwfSB7XG4gICAgY29uc3Qgc2VjdGlvbnMgPSBza2lwRmlsdGVyID9cbiAgICAgIHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMgOlxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclNlY3Rpb25zKHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSwgYWRkaXRpb25hbERhdGEpO1xuICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVGb3JtcyA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb25zKHNlY3Rpb25zLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuICAgIHJldHVybiB7c2VjdGlvbnM6IHNlY3Rpb25zLCBmb3JtczogcXVlc3Rpb25uYWlyZUZvcm1zfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb25zKHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApIHtcbiAgICBjb25zdCBxdWVzdGlvbm5haXJlRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgY29uc3Qgc2VjdGlvbkZvcm1zID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuICAgICAgcXVlc3Rpb25uYWlyZUZvcm1zLmFkZENvbnRyb2woc2VjdGlvbi5uYW1lLCBzZWN0aW9uRm9ybXMpO1xuICAgIH1cbiAgICByZXR1cm4gcXVlc3Rpb25uYWlyZUZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBmb3JtIGdyb3VwIGJhc2VkIG9uIHRoZSBzZWN0aW9uIGRhdGEuXG4gICAqIFRoaXMgZm9ybSBncm91cCBoYXMgYmVlbiBmaWx0ZXJlZCBkb3duIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zIG9mIHRoZSBxdWVzdGlvbnMuXG4gICAqIEBwYXJhbSBzZWN0aW9uIFRoZSBzZWN0aW9uIGRhdGEgdG8gYnVpbGQgdGhlIGZvcm0gZ3JvdXAgb24uXG4gICAqIEByZXR1cm5zIEEgZmlsdGVyZWQgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb24oc2VjdGlvbjogU2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApOiBGb3JtR3JvdXAge1xuICAgIGNvbnN0IHNlY3Rpb25Gb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgaWYgKHF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZS5JbmZvKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVzdGlvbkNvbnRyb2wgPSB0aGlzLmdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uLCBzZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuICAgICAgc2VjdGlvbkZvcm1zLmFkZENvbnRyb2wocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25Gb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGFzdHJhY3QgZm9ybSBjb250cm9sIGJhc2VkIG9uIHRoZSBxdWVzdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uIGRhdGEgdG8gYnVpbGQgdGhlIGFic3RyYWN0IGNvbnRyb2wgb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uOiBRdWVzdGlvbiwgc2VjdGlvbjogU2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgIHN3aXRjaCAocXVlc3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuUmVwZWF0ZXI6XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA/IChjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKSBhcyBGb3JtQXJyYXkpIDogZmFsc2U7XG4gICAgICAgIHJldHVybiBjdXJyZW50QXJyYXkgPyBjdXJyZW50QXJyYXkgOiB0aGlzLmZiLmFycmF5KFtdLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLkNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5TbGlkZXI6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgeyB2YWxpZGF0b3JzOiBjb252ZXJ0ZWRWYWxpZGF0b3JzIH0pOyAvLyBSZW1vdmUgdXBkYXRlIG9uIGJsdXIgZm9yIHNsaWRlcnMuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKG51bGwsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246ICdibHVyJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBmb3JtIGdyb3VwIGZvciBhIGNoZWNrbGlzdCBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbi4gTXVzdCBiZSBvZiB0eXBlIGNoZWNrbGlzdCBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbjogUXVlc3Rpb24sIGNvbnZlcnRlZFZhbGlkYXRvcnMpIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLkNoZWNrbGlzdCB8fCBxdWVzdGlvbi5jaGVja2xpc3RJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrbGlzdEZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IGNoZWNrbGlzdEl0ZW0gb2YgcXVlc3Rpb24uY2hlY2tsaXN0SXRlbXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrbGlzdEl0ZW1Db250cm9sID0gdGhpcy5mYi5jb250cm9sKG51bGwsIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgY2hlY2tsaXN0Rm9ybXMuYWRkQ29udHJvbChjaGVja2xpc3RJdGVtLm5hbWUsIGNoZWNrbGlzdEl0ZW1Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrbGlzdEZvcm1zO1xuICB9XG5cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBmb3JtIHRlbXBsYXRlIGZvciBhIHJlcGVhdGVyIHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uLiBNdXN0IGJlIG9mIHR5cGUgcmVwZWF0ZXIgb3IgZWxzZSBudWxsIGlzIHJldHVybmVkLlxuICAgKiBAcmV0dXJucyBBIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVGb3Jtc0ZvclJlcGVhdGVyKHF1ZXN0aW9uOiBRdWVzdGlvbik6IEZvcm1Hcm91cCB7XG4gICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlciB8fCBxdWVzdGlvbi5yZXBlYXRlclF1ZXN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdRdWVzdGlvbiBpc250IGEgcmVwZWF0ZXIgb3IgaGFzIG5vIHF1ZXN0aW9ucywgcmV0dXJuaW5nIG51bGwnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdGVyRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3QgcmVwZWF0ZXJRdWVzdGlvbiBvZiBxdWVzdGlvbi5yZXBlYXRlclF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgcmVwZWF0ZXJRdWVzdGlvbkNvbnRyb2wgPSB0aGlzLmdlbmVyYXRlQ29udHJvbEZvclJlcGVhdGVyUXVlc3Rpb24ocmVwZWF0ZXJRdWVzdGlvbik7XG4gICAgICByZXBlYXRlckZvcm1zLmFkZENvbnRyb2wocmVwZWF0ZXJRdWVzdGlvbi5uYW1lLCByZXBlYXRlclF1ZXN0aW9uQ29udHJvbCk7XG4gICAgfVxuICAgIHJldHVybiByZXBlYXRlckZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbnRyb2wgZm9yIGEgcmVwZWF0ZXJzIHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcmVwZWF0ZXJRdWVzdGlvbiBBIHJlcGVhdGVyIHF1ZXN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBhYnN0cmFjdCBjb250cm9sLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRyb2xGb3JSZXBlYXRlclF1ZXN0aW9uKHJlcGVhdGVyUXVlc3Rpb246IFJlcGVhdGVyUXVlc3Rpb24pOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHJlcGVhdGVyUXVlc3Rpb24udmFsaWRhdG9ycyk7XG4gICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbChudWxsLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMsIHVwZGF0ZU9uOiAnYmx1cicgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgdmFsaWRhdG9ycyBpbnRvIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQHBhcmFtIHZhbGlkYXRvcnMgVGhlIHVuY292ZXJ0ZWQgYXJyYXkgb2YgdmFsaWRhdG9ycy5cbiAgICogQHJldHVybnMgQSBjb252ZXJlZCBhcnJheSBvZiBmb3JtIHZhbGlkYXRvcnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvcj4pOiBBcnJheTxWYWxpZGF0b3JGbj4ge1xuICAgIGlmICghdmFsaWRhdG9ycyB8fCB2YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzOiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3IgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yKTtcbiAgICAgIGlmIChjb252ZXJ0ZWRWYWxpZGF0b3IpIHtcbiAgICAgICAgY29udmVydGVkVmFsaWRhdG9ycy5wdXNoKGNvbnZlcnRlZFZhbGlkYXRvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0ZWRWYWxpZGF0b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc2luZ2xlIHZhbGlkYXRvciBpbnRvIGEgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgVGhlIHVuY29udmVydGVkIHZhbGlkYXRvci5cbiAgICogQHJldHVybnMgQSBjb252ZXJ0ZWQgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3IpOiBWYWxpZGF0b3JGbiB8IG51bGwge1xuICAgIHN3aXRjaCAodmFsaWRhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuUmVxdWlyZWQ6XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnJlcXVpcmVkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIGZvcm1zIGZvciByZXBlYXRlcnMgZnJvbSBzYXZlZCBzdGF0ZS5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIHRvIGxvYWQuXG4gICAqIEBwYXJhbSBzZWN0aW9ucyBUaGUgc2VjdGlvbnMgYWxyZWFkeSBnZW5lcmF0ZWQgYnkgdGhlIGZvcm0gY29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0UmVwZWF0ZXJGcm9tc0Zyb21TdGF0ZShzYXZlZFN0YXRlOiBhbnksIHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApIHtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVwZWF0ZXJBcnJheSA9IHNhdmVkU3RhdGVbc2VjdGlvbi5uYW1lXVtxdWVzdGlvbi5uYW1lXTtcbiAgICAgICAgaWYgKCFyZXBlYXRlckFycmF5IHx8IHJlcGVhdGVyQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckZvcm1BcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoW3NlY3Rpb24ubmFtZSwgcXVlc3Rpb24ubmFtZV0pIGFzIEZvcm1BcnJheTtcblxuICAgICAgICBpZiAocmVwZWF0ZXJGb3JtQXJyYXkuY29udHJvbHMubGVuZ3RoID09PSByZXBlYXRlckFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSB0aGF0IHVzZWQgdG8gYmUgdGhlcmUgcHVzaCBhIG5ldyBlbXB0eSB0ZW1wbGF0ZSB0aGVyZSB0byBiZSBwb3B1bGF0ZWQuXG4gICAgICAgIGZvciAoY29uc3QgcmVwZWF0ZXJJdGVtIG9mIHJlcGVhdGVyQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCByZXBlYXRlckl0ZW1UZW1wbGF0ZSA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclJlcGVhdGVyKHF1ZXN0aW9uKTtcbiAgICAgICAgICByZXBlYXRlckZvcm1BcnJheS5wdXNoKHJlcGVhdGVySXRlbVRlbXBsYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -67,8 +67,10 @@ var QuestionnaireService = /** @class */ (function () {
|
|
|
67
67
|
for (_c = (e_2 = void 0, tslib_1.__values(section.questions)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
68
68
|
question = _d.value;
|
|
69
69
|
control = this.currentQuestionnaireForm.get([section.name, question.name]);
|
|
70
|
-
if (
|
|
70
|
+
if (control.value === null && question.defaultValue) {
|
|
71
|
+
console.log('Found null with default value', question);
|
|
71
72
|
control.setValue(question.defaultValue);
|
|
73
|
+
console.log(control.value);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -1003,4 +1005,4 @@ if (false) {
|
|
|
1003
1005
|
*/
|
|
1004
1006
|
QuestionnaireService.prototype.options;
|
|
1005
1007
|
}
|
|
1006
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQThCLFNBQVMsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXBGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRTNEO0lBc0JFLDhCQUNVLGNBQXNDLEVBQ25CLE9BQTZCO1FBRGhELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQXBCbkQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFlakUsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtyQixDQUFDO0lBRUw7Ozs7OztPQU1HOzs7Ozs7Ozs7SUFDVSxnREFBaUI7Ozs7Ozs7O0lBQTlCLFVBQStCLGFBQTRCLEVBQUUsVUFBbUIsRUFBRSxjQUF1Qjs7Ozs7Ozt3QkFDdkcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUV2RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQzt3QkFFckMsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFD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OUMsdUNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db25zdHJ1Y3RvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZS1vcHRpb25zJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIHtcbiAgcHVibGljIGRhdGFDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBzZWN0aW9uRmluaXNoZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIG9yaWdpbmFsUXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZTtcblxuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHByaXZhdGUgY3VycmVudFNlY3Rpb25OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudFF1ZXN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcXVlc3Rpb25uYWlyZVZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcXVlc3Rpb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYWRkaXRpb25hbERhdGE6IE9iamVjdDtcblxuICBwcml2YXRlIHNraXBwYWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQ29uc3R1Y3RvcjogRm9ybUNvbnN0cnVjdG9yU2VydmljZSxcbiAgICBASW5qZWN0KCdvcHRpb25zJykgcHJpdmF0ZSBvcHRpb25zOiBRdWVzdGlvbm5haXJlT3B0aW9uc1xuICApIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHF1ZXN0aW9ubmFpcmUgZnJvbSBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGxvYWQsIG9mdGVuIHBhcnNlZCBKU09OIGZyb20gdGhlIGVkaXRvci5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIG9mIHRoZSBxdWVzdGlvbm5haXJlLCBvZnRlbiBmcm9tIGxvY2Fsc3RvcmFnZS5cbiAgICogQHJldHVybnMgbnVsbFxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRRdWVzdGlvbm5haXJlKHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsIHNhdmVkU3RhdGU/OiBPYmplY3QsIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSA9IF8uY2xvbmVEZWVwKHF1ZXN0aW9ubmFpcmUpO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSBfLmNsb25lRGVlcChxdWVzdGlvbm5haXJlKTtcblxuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcblxuICAgIGlmIChzYXZlZFN0YXRlICYmIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgICBfLmNsb25lRGVlcCh0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSksXG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5mb3JtQ29uc3R1Y3Rvci5jb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGUsIG5ld0RhdGEuc2VjdGlvbnMsIG5ld0RhdGEuZm9ybXMpO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPSBuZXdEYXRhLmZvcm1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0ucGF0Y2hWYWx1ZShzYXZlZFN0YXRlKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9ubmFpcmUoc2F2ZWRTdGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKTtcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlICYmIHF1ZXN0aW9uLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocXVlc3Rpb24uZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpcFRvRmlyc3RTZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNraXBUb0ZpcnN0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCBxdWVzdGlvbm5haXJlLCB1c2VkIHdoZW4gYSB2YWx1ZSBpcyB1cGRhdGVkIHRvIGNoZWNrIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSBzYXZlZFN0YXRlIFRoZSBzYXZlZCBzdGF0ZSBvZiB0aGUgcXVlc3Rpb25uYWlyZSwgb2Z0ZW4gZnJvbSBsb2NhbHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIG51bGxcbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVRdWVzdGlvbm5haXJlKHNhdmVkU3RhdGU/OiBPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgXy5jbG9uZURlZXAodGhpcy5vcmlnaW5hbFF1ZXN0aW9ubmFpcmUpLFxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhXG4gICAgKTtcbiAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA9IG5ld0RhdGEuZm9ybXM7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyA9IG5ld0RhdGEuc2VjdGlvbnM7XG5cbiAgICBpZiAoc2F2ZWRTdGF0ZSAmJiBPYmplY3Qua2V5cyhzYXZlZFN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5wYXRjaFZhbHVlKHNhdmVkU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlZEV2ZW50LmVtaXQoKTtcbiAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25uYWlyZSh0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWVsZHModGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS5jbGVhcmZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNMYXN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgY29uc3QgbWF4SW5kZXggPSAgdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IG1heEluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlY3Rpb25WYWxpZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KG5hbWUpLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGZpZWxkcyBwYXJzZWRcbiAgICogQHBhcmFtIGNsZWFyZmllbGRzIEFuIGFycmF5IG9mIHN0cmluZ3MsIHBhdGhzIHRvIGNsZWFyLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckZpZWxkcyhjbGVhcmZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmICghY2xlYXJmaWVsZHMgfHwgY2xlYXJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjbGVhcmZpZWxkIG9mIGNsZWFyZmllbGRzKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KGNsZWFyZmllbGQpO1xuXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnJlc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVubG9hZHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25uYWlyZS5cbiAgICogVXNlZnVsIHdoZW4gZXhpdGluZyBhIHF1ZXN0aW9ubmFpcmUgcGFnZSBvciBjb21wbGV0aW5nIGEgcXVlc3Rpb25uYWlyZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1bmxvYWRRdWVzdGlvbm5haXJlKCkge1xuICAgIHRoaXMub3JpZ2luYWxRdWVzdGlvbm5haXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbk5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWxlY3RlZCBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VjdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50U2VjdGlvbigpOiB7IGRhdGE6IFNlY3Rpb247IGZvcm1Hcm91cDogRm9ybUdyb3VwOyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgubmFtZSA9PT0gdGhpcy5jdXJyZW50U2VjdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgZm9ybUdyb3VwOiB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoZGF0YS5uYW1lKSBhcyBGb3JtR3JvdXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVNlY3Rpb25zKCk6IEFycmF5PFNlY3Rpb24+IHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgfHwgIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBkYXRhIGZvciB0aGUgZW50aXJlIHF1ZXN0aW9ubmFpcmUuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBvZiBkYXRhLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBxdWVzdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRRdWVzdGlvbigpOiB7IGRhdGE6IFF1ZXN0aW9uOyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbDsgfSB8IG51bGwge1xuICAgIGlmICghdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC5uYW1lID09PSB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5jdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAuZ2V0KGRhdGEubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBmb3JtQ29udHJvbDogZm9ybUNvbnRyb2xcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBxdWVzdGlvbi5cbiAgICogSWYgdGhlcmUgaXMgbm8gcXVlc3Rpb24gdG8gbmF2aWdhdGUgdG8gaXQgd2lsbCByZWplY3Qgd2l0aCBhIG91dCBvZiBib3VuZHMgZXhjZXB0aW9uLlxuICAgKiBJZiBhbGxvd1NraXBSZXF1aXJlZEZpZWxkIGlzIGZhbHNlIHRoZW4gaXQgd2lsbCByZWplY3QgaWYgdGhlIGN1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZC5cbiAgICogSWYgZW1pdFNlY3Rpb25GaW5pc2hFdmVudCBpcyB0cnVlIHRoZW4gaXQgd2lsbCBlbWl0IGFuIGV2ZW50IGlmIGl0J3MgbmF2aWdhdGluZyBwYXN0IHRoZSBsZW5ndGggb2YgcXVlc3Rpb25zLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHF1ZXN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0UXVlc3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93U2tpcFJlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbC52YWxpZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ0N1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0Q3VycmVudFF1ZXN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uSW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGlzTGFzdFF1ZXN0aW9uID0gbGFzdFF1ZXN0aW9uSW5kZXggPT09IGN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAoaXNMYXN0UXVlc3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25GaW5pc2hlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb1F1ZXN0aW9uKG5ld0luZGV4KS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uLlxuICAgKiBJZiB0aGVyZSBpcyBubyBxdWVzdGlvbiB0byBuYXZpZ2F0ZSB0byBpdCB3aWxsIHJlamVjdCB3aXRoIGEgb3V0IG9mIGJvdW5kcyBleGNlcHRpb24uXG4gICAqIElmIGFsbG93TmF2aWdhdGVCYWNrd2FyZHMgaXMgZmFsc2UgdGhlbiBpdCB3aWxsIHJlamVjdC5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgcHJldlF1ZXN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd05hdmlnYXRlQmFja3dhcmRzKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1RoaXMgcXVlc3Rpb25uYWlyZSBkb2VzIG5vdCBhbGxvdyBmb3IgYmFja3dhcmRzIG5hdmlnYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRDdXJyZW50UXVlc3Rpb25JbmRleCgpLnRoZW4oKGN1cnJlbnRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUXVlc3Rpb24obmV3SW5kZXgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25zIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRRdWVzdGlvbkluZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMuaW5kZXhPZih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnQ291bGQgbm90IGZpbmQgY3VycmVudCBxdWVzdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHF1ZXN0aW9uIGlzIGluIGJvdW5kcyB0aGVuIG5hdmlnYXRlcyB0byBpdC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgbmF2aWdhdGVUb1F1ZXN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWUgPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zW2luZGV4XS5uYW1lO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2VjdGlvbi5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBzZWN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0U2VjdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXRDdXJyZW50U2VjdGlvbkluZGV4KCkudGhlbigoY3VycmVudEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHByZXZTZWN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9RdWVzdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWN0aW9uIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucy5pbmRleE9mKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YSk7XG5cbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ0NvdWxkIG5vdCBmaW5kIGN1cnJlbnQgc2VjdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHNlY3Rpb24gaXMgaW4gYm91bmRzIHRoZW4gbmF2aWdhdGVzIHRvIGl0LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIG5hdmlnYXRlVG9TZWN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnNbaW5kZXhdLm5hbWU7XG4gICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgdGhlIGN1cnJlbnQgcXVlc3Rpb24gd2l0aCB0aGUgcGFyc2VkIHZhbHVlLlxuICAgKiBAcGFyYW0gYW5zd2VyIFRoZSB2YWx1ZSB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uIHdpdGguXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYW5zd2VyQ3VycmVudFF1ZXN0aW9uKGFuc3dlcjogYW55LCBzZW5kVG9OZXh0UXVlc3Rpb24/OiBib29sZWFuKSB7XG4gICAgaWYgKCFzZW5kVG9OZXh0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2tpcHBhYmxlKSB7IC8vIFRpbWVvdXQgdG8gcHJldmVudCBza2lwcGluZyBnbGl0Y2guXG4gICAgICB0aGlzLnNraXBwYWJsZSA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICAgIHRoaXMubmV4dFF1ZXN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5za2lwcGFibGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXBlYXRlciBpdGVtIHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uLlxuICAgKiBDdXJyZW50IHF1ZXN0aW9uIG11c3QgYmUgb2YgdHlwZSBSZXBlYXRlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaGFzIGJlZW4gYWRkZWQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYWRkUmVwZWF0ZXJJdGVtKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgQ3VycmVudCBxdWVzdGlvbiBpc24ndCBhIHJlcGVhdGVyYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBlYXRlckZvcm0gPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKCFyZXBlYXRlckZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgUmVwZWF0ZXIgdGVtcGxhdGUgZmFpbGVkIHRvIGdlbmVyYXRlLiBNYXkgYmUgZHVlIHRvIHRoZSByZXBlYXRlciBoYXZpbmcgbm8gaXRlbXMgaW4gdGhlIGVkaXRvci5gKTtcbiAgICAgIH1cblxuXG4gICAgICBpZiAoISh0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgVGhlIGN1cnJlbnQgcXVlc3Rpb25zIGNvbnRyb2wgaXNuJ3Qgb2YgdHlwZSBGb3JtQXJyYXlgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wucHVzaChyZXBlYXRlckZvcm0pO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVwZWF0ZXIgaXRlbSBvbiB0aGUgY3VycmVudCBxdWVzdGlvbi5cbiAgICogQ3VycmVudCBxdWVzdGlvbiBtdXN0IGJlIG9mIHR5cGUgUmVwZWF0ZXIuXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGUgcmVwZWF0ZXIgaXRlbSBoYXMgYmVlbiByZW1vdmVkLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJlcGVhdGVySXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGBDdXJyZW50IHF1ZXN0aW9uIGlzbid0IGEgcmVwZWF0ZXJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoYFRoZSBjdXJyZW50IHF1ZXN0aW9ucyBjb250cm9sIGlzbid0IG9mIHR5cGUgRm9ybUFycmF5YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIHJlcGVhdGVyIGl0ZW1cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBhdCB3aGljaCB0byBnZXQgdGhlIGxhYmVsIGZvci5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgd2hpY2ggaXMgdGhlIGRpc3BsYXkgdGV4dC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZXRSZXBlYXRlckl0ZW1MYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sIHx8ICEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJJdGVtID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wuY29udHJvbHNbaW5kZXhdO1xuXG4gICAgaWYgKCFyZXBlYXRlckl0ZW0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9uLmRhdGEucmVwZWF0ZXJEaXNwbGF5TmFtZTtcbiAgICBjb25zdCBzcGxpdFRlbXBsYXRlID0gdGVtcGxhdGUuc3BsaXQoJyAnKTtcblxuICAgIGNvbnN0IGRpc3BsYXlBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGVJdGVtIG9mIHNwbGl0VGVtcGxhdGUpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZUl0ZW0ubWF0Y2goL1xcWy4qP1xcXS8pKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0ZW1wbGF0ZUl0ZW0ucmVwbGFjZSgvW1xcW1xcXSddKy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZXBlYXRlckl0ZW0uZ2V0KHBhdGgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogJz8nO1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh0ZW1wbGF0ZUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXkgPSBkaXNwbGF5QXJyYXkuam9pbignICcpO1xuICAgIHJldHVybiBkaXNwbGF5O1xuICB9XG59XG4iXX0=
|
|
1008
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQThCLFNBQVMsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBSXBGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRTNEO0lBc0JFLDhCQUNVLGNBQXNDLEVBQ25CLE9BQTZCO1FBRGhELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQXBCbkQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFlakUsY0FBUyxHQUFHLElBQUksQ0FBQztJQUtyQixDQUFDO0lBRUw7Ozs7OztPQU1HOzs7Ozs7Ozs7SUFDVSxnREFBaUI7Ozs7Ozs7O0lBQTlCLFVBQStCLGFBQTRCLEVBQUUsVUFBbUIsRUFBRSxjQUF1Qjs7Ozs7Ozt3QkFDdkcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUV2RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQzt3QkFFckMsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFD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Qzs7Ozs7SUFDbkMsbURBQW9DOzs7OztJQUVwQyxvRUFBMkQ7Ozs7O0lBQzNELCtEQUFzRDs7Ozs7SUFFdEQsOENBQStCOzs7OztJQUUvQix5Q0FBeUI7Ozs7O0lBR3ZCLDhDQUE4Qzs7Ozs7SUFDOUMsdUNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db25zdHJ1Y3RvclNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZS1vcHRpb25zJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIHtcbiAgcHVibGljIGRhdGFDaGFuZ2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBzZWN0aW9uRmluaXNoZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIG9yaWdpbmFsUXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZTtcblxuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwO1xuXG4gIHByaXZhdGUgY3VycmVudFNlY3Rpb25OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudFF1ZXN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcXVlc3Rpb25uYWlyZVZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcXVlc3Rpb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYWRkaXRpb25hbERhdGE6IE9iamVjdDtcblxuICBwcml2YXRlIHNraXBwYWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQ29uc3R1Y3RvcjogRm9ybUNvbnN0cnVjdG9yU2VydmljZSxcbiAgICBASW5qZWN0KCdvcHRpb25zJykgcHJpdmF0ZSBvcHRpb25zOiBRdWVzdGlvbm5haXJlT3B0aW9uc1xuICApIHsgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHF1ZXN0aW9ubmFpcmUgZnJvbSBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGxvYWQsIG9mdGVuIHBhcnNlZCBKU09OIGZyb20gdGhlIGVkaXRvci5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIG9mIHRoZSBxdWVzdGlvbm5haXJlLCBvZnRlbiBmcm9tIGxvY2Fsc3RvcmFnZS5cbiAgICogQHJldHVybnMgbnVsbFxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRRdWVzdGlvbm5haXJlKHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsIHNhdmVkU3RhdGU/OiBPYmplY3QsIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSA9IF8uY2xvbmVEZWVwKHF1ZXN0aW9ubmFpcmUpO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSBfLmNsb25lRGVlcChxdWVzdGlvbm5haXJlKTtcblxuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTtcblxuICAgIGlmIChzYXZlZFN0YXRlICYmIE9iamVjdC5rZXlzKHNhdmVkU3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgICBfLmNsb25lRGVlcCh0aGlzLm9yaWdpbmFsUXVlc3Rpb25uYWlyZSksXG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5mb3JtQ29uc3R1Y3Rvci5jb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGUsIG5ld0RhdGEuc2VjdGlvbnMsIG5ld0RhdGEuZm9ybXMpO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPSBuZXdEYXRhLmZvcm1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0ucGF0Y2hWYWx1ZShzYXZlZFN0YXRlKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9ubmFpcmUoc2F2ZWRTdGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKTtcbiAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgPT09IG51bGwgJiYgcXVlc3Rpb24uZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0ZvdW5kIG51bGwgd2l0aCBkZWZhdWx0IHZhbHVlJywgcXVlc3Rpb24pO1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocXVlc3Rpb24uZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjb250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2tpcFRvRmlyc3RTZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnNraXBUb0ZpcnN0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLmNvbnRyb2xzKVswXTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCBxdWVzdGlvbm5haXJlLCB1c2VkIHdoZW4gYSB2YWx1ZSBpcyB1cGRhdGVkIHRvIGNoZWNrIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSBzYXZlZFN0YXRlIFRoZSBzYXZlZCBzdGF0ZSBvZiB0aGUgcXVlc3Rpb25uYWlyZSwgb2Z0ZW4gZnJvbSBsb2NhbHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIG51bGxcbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVRdWVzdGlvbm5haXJlKHNhdmVkU3RhdGU/OiBPYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgICAgXy5jbG9uZURlZXAodGhpcy5vcmlnaW5hbFF1ZXN0aW9ubmFpcmUpLFxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhXG4gICAgKTtcbiAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA9IG5ld0RhdGEuZm9ybXM7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyA9IG5ld0RhdGEuc2VjdGlvbnM7XG5cbiAgICBpZiAoc2F2ZWRTdGF0ZSAmJiBPYmplY3Qua2V5cyhzYXZlZFN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5wYXRjaFZhbHVlKHNhdmVkU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9uVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlZEV2ZW50LmVtaXQoKTtcbiAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25uYWlyZSh0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgdGhpcy5xdWVzdGlvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWVsZHModGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS5jbGVhcmZpZWxkcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNMYXN0UXVlc3Rpb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uIHx8ICF0aGlzLmN1cnJlbnRRdWVzdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmluZGV4T2YodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YSk7XG4gICAgY29uc3QgbWF4SW5kZXggPSAgdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IG1heEluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlY3Rpb25WYWxpZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KG5hbWUpLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGZpZWxkcyBwYXJzZWRcbiAgICogQHBhcmFtIGNsZWFyZmllbGRzIEFuIGFycmF5IG9mIHN0cmluZ3MsIHBhdGhzIHRvIGNsZWFyLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckZpZWxkcyhjbGVhcmZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmICghY2xlYXJmaWVsZHMgfHwgY2xlYXJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjbGVhcmZpZWxkIG9mIGNsZWFyZmllbGRzKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KGNsZWFyZmllbGQpO1xuXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnJlc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVubG9hZHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25uYWlyZS5cbiAgICogVXNlZnVsIHdoZW4gZXhpdGluZyBhIHF1ZXN0aW9ubmFpcmUgcGFnZSBvciBjb21wbGV0aW5nIGEgcXVlc3Rpb25uYWlyZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyB1bmxvYWRRdWVzdGlvbm5haXJlKCkge1xuICAgIHRoaXMub3JpZ2luYWxRdWVzdGlvbm5haXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbk5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWxlY3RlZCBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VjdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50U2VjdGlvbigpOiB7IGRhdGE6IFNlY3Rpb247IGZvcm1Hcm91cDogRm9ybUdyb3VwOyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgubmFtZSA9PT0gdGhpcy5jdXJyZW50U2VjdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgZm9ybUdyb3VwOiB0aGlzLmN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoZGF0YS5uYW1lKSBhcyBGb3JtR3JvdXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBhdmFpYWxibGUgc2VjdGlvbnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVNlY3Rpb25zKCk6IEFycmF5PFNlY3Rpb24+IHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUgfHwgIXRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBkYXRhIGZvciB0aGUgZW50aXJlIHF1ZXN0aW9ubmFpcmUuXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBvZiBkYXRhLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBxdWVzdGlvbiBkYXRhIGFuZCB0aGUgcmVsYXRlZCBmb3JtIGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRRdWVzdGlvbigpOiB7IGRhdGE6IFF1ZXN0aW9uOyBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbDsgfSB8IG51bGwge1xuICAgIGlmICghdGhpcy5jdXJyZW50UXVlc3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5jdXJyZW50U2VjdGlvbi5kYXRhLnF1ZXN0aW9ucy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC5uYW1lID09PSB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5jdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAuZ2V0KGRhdGEubmFtZSkgYXMgQWJzdHJhY3RDb250cm9sO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBmb3JtQ29udHJvbDogZm9ybUNvbnRyb2xcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBxdWVzdGlvbi5cbiAgICogSWYgdGhlcmUgaXMgbm8gcXVlc3Rpb24gdG8gbmF2aWdhdGUgdG8gaXQgd2lsbCByZWplY3Qgd2l0aCBhIG91dCBvZiBib3VuZHMgZXhjZXB0aW9uLlxuICAgKiBJZiBhbGxvd1NraXBSZXF1aXJlZEZpZWxkIGlzIGZhbHNlIHRoZW4gaXQgd2lsbCByZWplY3QgaWYgdGhlIGN1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZC5cbiAgICogSWYgZW1pdFNlY3Rpb25GaW5pc2hFdmVudCBpcyB0cnVlIHRoZW4gaXQgd2lsbCBlbWl0IGFuIGV2ZW50IGlmIGl0J3MgbmF2aWdhdGluZyBwYXN0IHRoZSBsZW5ndGggb2YgcXVlc3Rpb25zLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHF1ZXN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0UXVlc3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93U2tpcFJlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbC52YWxpZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3QoJ0N1cnJlbnQgcXVlc3Rpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0Q3VycmVudFF1ZXN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uSW5kZXggPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGlzTGFzdFF1ZXN0aW9uID0gbGFzdFF1ZXN0aW9uSW5kZXggPT09IGN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAoaXNMYXN0UXVlc3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25GaW5pc2hlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb1F1ZXN0aW9uKG5ld0luZGV4KS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uLlxuICAgKiBJZiB0aGVyZSBpcyBubyBxdWVzdGlvbiB0byBuYXZpZ2F0ZSB0byBpdCB3aWxsIHJlamVjdCB3aXRoIGEgb3V0IG9mIGJvdW5kcyBleGNlcHRpb24uXG4gICAqIElmIGFsbG93TmF2aWdhdGVCYWNrd2FyZHMgaXMgZmFsc2UgdGhlbiBpdCB3aWxsIHJlamVjdC5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgcHJldlF1ZXN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd05hdmlnYXRlQmFja3dhcmRzKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ1RoaXMgcXVlc3Rpb25uYWlyZSBkb2VzIG5vdCBhbGxvdyBmb3IgYmFja3dhcmRzIG5hdmlnYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRDdXJyZW50UXVlc3Rpb25JbmRleCgpLnRoZW4oKGN1cnJlbnRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvUXVlc3Rpb24obmV3SW5kZXgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcXVlc3Rpb25zIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRRdWVzdGlvbkluZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMuaW5kZXhPZih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdCgnQ291bGQgbm90IGZpbmQgY3VycmVudCBxdWVzdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHF1ZXN0aW9uIGlzIGluIGJvdW5kcyB0aGVuIG5hdmlnYXRlcyB0byBpdC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBxdWVzdGlvbiBoYXMgYmVlbiBuYXZpZ2F0ZWQgdG8uXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgbmF2aWdhdGVUb1F1ZXN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YS5xdWVzdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRRdWVzdGlvbk5hbWUgPSB0aGlzLmN1cnJlbnRTZWN0aW9uLmRhdGEucXVlc3Rpb25zW2luZGV4XS5uYW1lO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2VjdGlvbi5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBzZWN0aW9uIGhhcyBiZWVuIG5hdmlnYXRlZCB0by5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBuZXh0U2VjdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXRDdXJyZW50U2VjdGlvbkluZGV4KCkudGhlbigoY3VycmVudEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvU2VjdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBzZWN0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHByZXZTZWN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKS50aGVuKChjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9RdWVzdGlvbihuZXdJbmRleCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzZWN0aW9uIGluZGV4LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgYSBudW1iZXIuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRTZWN0aW9uSW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucy5pbmRleE9mKHRoaXMuY3VycmVudFNlY3Rpb24uZGF0YSk7XG5cbiAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoJ0NvdWxkIG5vdCBmaW5kIGN1cnJlbnQgc2VjdGlvbicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShjdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBhIHNlY3Rpb24gaXMgaW4gYm91bmRzIHRoZW4gbmF2aWdhdGVzIHRvIGl0LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHdoZW4gdGhlIHNlY3Rpb24gaGFzIGJlZW4gbmF2aWdhdGVkIHRvLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIG5hdmlnYXRlVG9TZWN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMubGVuZ3RoIC0gMSA8IGluZGV4IHx8IGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KCdPdXQgb2YgYm91bmRzIGV4Y2VwdGlvbicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uTmFtZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnNbaW5kZXhdLm5hbWU7XG4gICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgdGhlIGN1cnJlbnQgcXVlc3Rpb24gd2l0aCB0aGUgcGFyc2VkIHZhbHVlLlxuICAgKiBAcGFyYW0gYW5zd2VyIFRoZSB2YWx1ZSB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uIHdpdGguXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYW5zd2VyQ3VycmVudFF1ZXN0aW9uKGFuc3dlcjogYW55LCBzZW5kVG9OZXh0UXVlc3Rpb24/OiBib29sZWFuKSB7XG4gICAgaWYgKCFzZW5kVG9OZXh0UXVlc3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2tpcHBhYmxlKSB7IC8vIFRpbWVvdXQgdG8gcHJldmVudCBza2lwcGluZyBnbGl0Y2guXG4gICAgICB0aGlzLnNraXBwYWJsZSA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnNldFZhbHVlKGFuc3dlcik7XG4gICAgICAgIHRoaXMubmV4dFF1ZXN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5za2lwcGFibGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXBlYXRlciBpdGVtIHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uLlxuICAgKiBDdXJyZW50IHF1ZXN0aW9uIG11c3QgYmUgb2YgdHlwZSBSZXBlYXRlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaGFzIGJlZW4gYWRkZWQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgYWRkUmVwZWF0ZXJJdGVtKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UXVlc3Rpb24uZGF0YS50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgQ3VycmVudCBxdWVzdGlvbiBpc24ndCBhIHJlcGVhdGVyYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBlYXRlckZvcm0gPSB0aGlzLmZvcm1Db25zdHVjdG9yLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcih0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhKTtcblxuICAgICAgaWYgKCFyZXBlYXRlckZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgUmVwZWF0ZXIgdGVtcGxhdGUgZmFpbGVkIHRvIGdlbmVyYXRlLiBNYXkgYmUgZHVlIHRvIHRoZSByZXBlYXRlciBoYXZpbmcgbm8gaXRlbXMgaW4gdGhlIGVkaXRvci5gKTtcbiAgICAgIH1cblxuXG4gICAgICBpZiAoISh0aGlzLmN1cnJlbnRRdWVzdGlvbi5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChgVGhlIGN1cnJlbnQgcXVlc3Rpb25zIGNvbnRyb2wgaXNuJ3Qgb2YgdHlwZSBGb3JtQXJyYXlgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wucHVzaChyZXBlYXRlckZvcm0pO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVwZWF0ZXIgaXRlbSBvbiB0aGUgY3VycmVudCBxdWVzdGlvbi5cbiAgICogQ3VycmVudCBxdWVzdGlvbiBtdXN0IGJlIG9mIHR5cGUgUmVwZWF0ZXIuXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGUgcmVwZWF0ZXIgaXRlbSBoYXMgYmVlbiByZW1vdmVkLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJlcGVhdGVySXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRRdWVzdGlvbi5kYXRhLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGBDdXJyZW50IHF1ZXN0aW9uIGlzbid0IGEgcmVwZWF0ZXJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoYFRoZSBjdXJyZW50IHF1ZXN0aW9ucyBjb250cm9sIGlzbid0IG9mIHR5cGUgRm9ybUFycmF5YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIGdpdmVuIHJlcGVhdGVyIGl0ZW1cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBhdCB3aGljaCB0byBnZXQgdGhlIGxhYmVsIGZvci5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgd2hpY2ggaXMgdGhlIGRpc3BsYXkgdGV4dC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZXRSZXBlYXRlckl0ZW1MYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFF1ZXN0aW9uLmZvcm1Db250cm9sIHx8ICEodGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJJdGVtID0gdGhpcy5jdXJyZW50UXVlc3Rpb24uZm9ybUNvbnRyb2wuY29udHJvbHNbaW5kZXhdO1xuXG4gICAgaWYgKCFyZXBlYXRlckl0ZW0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY3VycmVudFF1ZXN0aW9uLmRhdGEucmVwZWF0ZXJEaXNwbGF5TmFtZTtcbiAgICBjb25zdCBzcGxpdFRlbXBsYXRlID0gdGVtcGxhdGUuc3BsaXQoJyAnKTtcblxuICAgIGNvbnN0IGRpc3BsYXlBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGVJdGVtIG9mIHNwbGl0VGVtcGxhdGUpIHtcbiAgICAgIGlmICh0ZW1wbGF0ZUl0ZW0ubWF0Y2goL1xcWy4qP1xcXS8pKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0ZW1wbGF0ZUl0ZW0ucmVwbGFjZSgvW1xcW1xcXSddKy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZXBlYXRlckl0ZW0uZ2V0KHBhdGgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogJz8nO1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5QXJyYXkucHVzaCh0ZW1wbGF0ZUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXkgPSBkaXNwbGF5QXJyYXkuam9pbignICcpO1xuICAgIHJldHVybiBkaXNwbGF5O1xuICB9XG59XG4iXX0=
|
|
@@ -466,6 +466,8 @@ class FormConstructorService {
|
|
|
466
466
|
return currentArray ? currentArray : this.fb.array([], convertedValidators);
|
|
467
467
|
case QuestionType.Checklist:
|
|
468
468
|
return this.generateGroupForChecklist(question, convertedValidators);
|
|
469
|
+
case QuestionType.Slider:
|
|
470
|
+
return this.fb.control(null, { validators: convertedValidators }); // Remove update on blur for sliders.
|
|
469
471
|
default:
|
|
470
472
|
return this.fb.control(null, { validators: convertedValidators, updateOn: 'blur' });
|
|
471
473
|
}
|
|
@@ -658,8 +660,10 @@ class QuestionnaireService {
|
|
|
658
660
|
for (const question of section.questions) {
|
|
659
661
|
/** @type {?} */
|
|
660
662
|
const control = this.currentQuestionnaireForm.get([section.name, question.name]);
|
|
661
|
-
if (
|
|
663
|
+
if (control.value === null && question.defaultValue) {
|
|
664
|
+
console.log('Found null with default value', question);
|
|
662
665
|
control.setValue(question.defaultValue);
|
|
666
|
+
console.log(control.value);
|
|
663
667
|
}
|
|
664
668
|
}
|
|
665
669
|
}
|