@ironcode/vas-lib 0.0.27 → 0.0.30
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/cjs/lib/entity/vas-account.dto.d.ts +16 -0
- package/cjs/lib/entity/vas-account.dto.d.ts.map +1 -1
- package/cjs/lib/entity/vas-account.dto.js.map +1 -1
- package/cjs/lib/entity/vas-fire-user.dto.d.ts +2 -0
- package/cjs/lib/entity/vas-fire-user.dto.d.ts.map +1 -1
- package/cjs/lib/entity/vas-fire-user.dto.js.map +1 -1
- package/cjs/lib/entity/vas-fire-user.model.d.ts +3 -1
- package/cjs/lib/entity/vas-fire-user.model.d.ts.map +1 -1
- package/cjs/lib/entity/vas-fire-user.model.js +8 -4
- package/cjs/lib/entity/vas-fire-user.model.js.map +1 -1
- package/cjs/lib/entity/vas-job.model.js +1 -1
- package/cjs/lib/entity/vas-job.model.js.map +1 -1
- package/esm2020/lib/entity/vas-account.dto.mjs +1 -1
- package/esm2020/lib/entity/vas-fire-user.dto.mjs +1 -1
- package/esm2020/lib/entity/vas-fire-user.model.mjs +9 -5
- package/esm2020/lib/entity/vas-job.model.mjs +2 -2
- package/fesm2015/ironcode-vas-lib.mjs +9 -5
- package/fesm2015/ironcode-vas-lib.mjs.map +1 -1
- package/fesm2020/ironcode-vas-lib.mjs +9 -5
- package/fesm2020/ironcode-vas-lib.mjs.map +1 -1
- package/lib/entity/vas-account.dto.d.ts +16 -0
- package/lib/entity/vas-fire-user.dto.d.ts +2 -0
- package/lib/entity/vas-fire-user.model.d.ts +3 -1
- package/package.json +1 -1
|
@@ -445,8 +445,8 @@ export class VasJobModel extends VasRestrictedAccountObjectModel {
|
|
|
445
445
|
assigneeId: this.assigneeId || '~',
|
|
446
446
|
timeZoneOffset: this.timeZoneOffset || 0,
|
|
447
447
|
pendingFields: this.pendingFields || 0,
|
|
448
|
-
|
|
448
|
+
lastForm: this.formId || '~'
|
|
449
449
|
};
|
|
450
450
|
}
|
|
451
451
|
}
|
|
452
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBb0J4Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsK0JBQStCO0lBQzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSCxZQUNrQixFQUFVLEVBQ1YsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixXQUFtQixFQUM1QixTQUFpQixFQUNqQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFVBQWtCLEVBQ2xCLE1BQWMsRUFDZCxjQUFzQixFQUN0QixhQUFxQixFQUNyQixhQUFxQixFQUNyQixPQUFlLEVBQ2YsTUFBMEIsRUFDMUIsS0FBd0IsRUFDeEIsb0JBQTRCLEVBQzVCLHFCQUE2QjtRQUVwQyxLQUFLLENBQ0gsRUFBRSxFQUNGLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNWLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztRQWxDYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JC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Q0FBQzs2QkFDakMsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztxQkFDNUI7b0JBQ0QsT0FBTyxDQUFDLENBQUM7d0JBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDL0M7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUFBLENBQUM7SUFFRjs7T0FFRztJQUNNLFFBQVE7UUFDZixPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUc7WUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHO1lBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNGaWxlRHRvIH0gZnJvbSAnLi92YXMtZmlsZS5kdG8nO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZ2V0VmFsdWVCeVBhdGggfSBmcm9tICcuLi91dGlscy9nZXQtdmFsdWUtYnktcGF0aCc7XG5pbXBvcnQgeyBWYXNCYXNlRHRvIH0gZnJvbSAnLi92YXMtYmFzZS5kdG8nO1xuaW1wb3J0IHsgVmFzRmllbGREdG8sIFZhc0ZpZWxkRHRvVmFsdWUgfSBmcm9tICcuL3Zhcy1maWVsZC5kdG8nO1xuaW1wb3J0IHsgVmFzRmllbGRNb2RlbCB9IGZyb20gJy4vdmFzLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFZhc0Zvcm1Nb2RlbCB9IGZyb20gJy4vdmFzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVmFzSm9iRHRvIH0gZnJvbSAnLi92YXMtam9iLmR0byc7XG5pbXBvcnQgeyBWYXNSZXN0cmljdGVkQWNjb3VudE9iamVjdE1vZGVsIH0gZnJvbSAnLi92YXMtcmVzdHJpY3RlZC1hY2NvdW50LW9iamVjdC5tb2RlbCc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICBbczogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VTeW50YXhPcHRpb25zIHtcbiAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gYWRqdXN0IGFueSBkYXRldGltZSB2YWx1ZXMgdGhhdCBhcmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4IHN0cmluZy4gU2VlXG4gIC8vIGh0dHBzOi8vbW9tZW50anNjb20ucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vbWVudC8wMy1tYW5pcHVsYXRpbmcvMDktdXRjLW9mZnNldC9cbiAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IGBtb21lbnRgIHdpbGwgaGFuZGxlIHRoZSB2YWx1ZS5cbiAgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgLy8gdGhpcyBkaWN0aW9uYXJ5IGNhbiBiZSBwYXNzZWQgaW4gdG8gY29udGFpbiBvdGhlciBvYmplY3RzIHRvIGJlIHJlZmVyZW5jZWRcbiAgLy8gaW4gdGhlIHN5bnRheC4gRm9yIGV4YW1wbGUgaWYgd2UgaGF2ZSB7am9iLmZvb30gdGhpcyB3aWxsIHJlZmVyZW5jZSB0aGVcbiAgLy8gam9iJ3MgYGZvb2AgcHJvcGVydHksIGhvd2V2ZXIgaWYgd2UgaGF2ZSBcInJlcG9ydExheW91dC50aXRsZVwiIHRoaXMgd2lsbFxuICAvLyBleHBlY3QgdG8gZmluZCBhIHByb3BlcnR5IG9mIGBvYmplY3RzYCBjYWxsZWQgYHJlcG9ydExheW91dGAgd2hpY2ggd2lsbFxuICAvLyBoYXZlIGEgcHJvcGVydHkgY2FsbGVkIGB0aXRsZWBcbiAgb2JqZWN0cz86IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VmFzQmFzZUR0bz4gfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj47XG59XG5cbi8qKlxuICogSm9iTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0pvYk1vZGVsIGV4dGVuZHMgVmFzUmVzdHJpY3RlZEFjY291bnRPYmplY3RNb2RlbCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlckNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlck1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2Nlc3NHcm91cFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JEYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JTdGF0dXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGpvYlR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFzc2lnbmVlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1JZFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZVpvbmVPZmZzZXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlbmRpbmdGaWVsZHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoaWxkTW9kaWZpZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb25cbiAgICogQHBhcmFtIHtBcnJheTxWYXNGaWVsZER0bz59IGZpZWxkc1xuICAgKiBAcGFyYW0ge0FycmF5PFZhc0ZpbGVEdG8+fSBmaWxlcyxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeURpc3BsYXlOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5RGlzcGxheU5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iRGF0ZTogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JTdGF0dXM6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBhc3NpZ25lZUlkOiBzdHJpbmcsXG4gICAgcHVibGljIGZvcm1JZDogc3RyaW5nLFxuICAgIHB1YmxpYyB0aW1lWm9uZU9mZnNldDogbnVtYmVyLFxuICAgIHB1YmxpYyBwZW5kaW5nRmllbGRzOiBudW1iZXIsXG4gICAgcHVibGljIGNoaWxkTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgdmVyc2lvbjogbnVtYmVyLFxuICAgIHB1YmxpYyBmaWVsZHM6IEFycmF5PFZhc0ZpZWxkRHRvPixcbiAgICBwdWJsaWMgZmlsZXM6IEFycmF5PFZhc0ZpbGVEdG8+LFxuICAgIHB1YmxpYyBjcmVhdGVkQnlEaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBtb2RpZmllZEJ5RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBpZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyB3aXRoIHRoZSBkeW5hbWljIGludGVyZmFjZVxuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2V9XG4gICAqL1xuICBnZXQgJHRoaXMoKTogVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIGR5bmFtaWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGFkZGVkIGJ5IHRoZVxuICAgKiBkeW5hbWljIGZvcm1zXG4gICAqL1xuICBnZXQgZHluYW1pY1Byb3BlcnRpZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgbmF0aXZlUHJvcHMgPSB0aGlzLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgcmV0dXJuIE9iamVjdFxuICAgICAgLmdldE93blByb3BlcnR5TmFtZXModGhpcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiAhbmF0aXZlUHJvcHMuaW5jbHVkZXMocHJvcCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIEpvYiBzdGF0aWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGRlY2xhcmVkIGJ5XG4gICAqIHRoZSB0eXBlXG4gICAqL1xuICBnZXQgc3RhdGljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoVmFzSm9iTW9kZWwuZW1wdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0pvYk1vZGVsIHtcbiAgICByZXR1cm4gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIFVVSUQuVVVJRCgpLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgIG1vbWVudCgpLnV0Y09mZnNldCgpLFxuICAgICAgMCxcbiAgICAgICcnLFxuICAgICAgMCxcbiAgICAgIFtdLFxuICAgICAgW10sXG4gICAgICAnJyxcbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0pvYkR0b30gam9iRHRvXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGpvYkR0bzogUGFydGlhbDxWYXNKb2JEdG8+KTogVmFzSm9iTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIGpvYkR0by5pZCB8fCBVVUlELlVVSUQoKSxcbiAgICAgIGpvYkR0by5jcmVhdGVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlckNyZWF0ZWQgfHwgJycsXG4gICAgICBqb2JEdG8uY3JlYXRlZEJ5IHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlck1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnkgfHwgJycsXG4gICAgICBqb2JEdG8uYWNjb3VudCB8fCAnJyxcbiAgICAgIGpvYkR0by5hY2Nlc3NHcm91cCB8fCAnJyxcbiAgICAgIGpvYkR0by5yZWZlcmVuY2UgfHwgJycsXG4gICAgICBqb2JEdG8uam9iRGF0ZSB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JTdGF0dXMgfHwgJycsXG4gICAgICBqb2JEdG8uam9iVHlwZSB8fCAnJyxcbiAgICAgIGpvYkR0by5hc3NpZ25lZUlkIHx8ICcnLFxuICAgICAgam9iRHRvLmZvcm1JZCB8fCAnJyxcbiAgICAgIGpvYkR0by50aW1lWm9uZU9mZnNldCB8fCBtb21lbnQoKS51dGNPZmZzZXQoKSxcbiAgICAgIGpvYkR0by5wZW5kaW5nRmllbGRzIHx8IDAsXG4gICAgICBqb2JEdG8uY2hpbGRNb2RpZmllZCB8fCAnJyxcbiAgICAgIGpvYkR0by52ZXJzaW9uIHx8IDAsXG4gICAgICBqb2JEdG8uZmllbGRzIHx8IFtdLFxuICAgICAgam9iRHRvLmZpbGVzIHx8IFtdLFxuICAgICAgam9iRHRvLmNyZWF0ZWRCeURpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnlEaXNwbGF5TmFtZSB8fCAnJyxcbiAgICApO1xuICAgIGNvbnN0IGVtcHR5S2V5cyA9IG1vZGVsLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgT2JqZWN0XG4gICAgICAua2V5cyhqb2JEdG8pXG4gICAgICAuZmlsdGVyKGtleSA9PiBlbXB0eUtleXMuaW5kZXhPZihrZXkpID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICAgICAgbW9kZWwuJHRoaXNba2V5XSA9IChqb2JEdG8gYXMgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlKVtrZXldXG4gICAgICApO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fVxuICAgKi9cbiAgZ2V0RmllbGRzKGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGNvbnN0IGZpZWxkczoge1trZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWV9ID0ge307XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIChmaWVsZHMpW2NvbnRyb2wucmVwb3J0VGVtcGxhdGVOYW1lXSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmV0dXJuIGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgYWxsIGZpZWxkcyBpbiB0aGUgam9iIGJ1dFxuICAgKiB3aXRoIHRoZSBcImZpZWxkcy5cIiBwYXJ0IHJlbW92ZWQuIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gYGdldEZpZWxkc2BcbiAgICogZXhjZXB0IHRoYXQgdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgc2V0IHdoZXJlYXNcbiAgICogYGdldEZpZWxkc2Agd2lsbCByZXR1cm4gYSBwcm9wZXJ0eSByZWdhcmRsZXNzIChiZWNhdXNlIGl0IHVzZXMgdGhlIGZvcm0gdG9cbiAgICogZHJpdmUgdGhlIGxvZ2ljKVxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkczIoKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGxldCBmaWVsZHM6IHtba2V5OiBzdHJpbmddOiBWYXNGaWVsZER0b1ZhbHVlfSA9IHt9O1xuICAgIHRoaXMuZHluYW1pY1Byb3BlcnRpZXNcbiAgICAgIC5mb3JFYWNoKChncm91cE5hbWUpID0+IHtcbiAgICAgICAgT2JqZWN0XG4gICAgICAgICAgLmtleXModGhpcy4kdGhpc1tncm91cE5hbWVdKVxuICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lU2hvcnQgPSBjb250cm9sTmFtZS5yZXBsYWNlKC9maWVsZHNcXC4vLCAnJyk7XG4gICAgICAgICAgICBmaWVsZHNbY29udHJvbE5hbWVTaG9ydF0gPSB0aGlzLmdldFZhbHVlQnlQYXRoKFxuICAgICAgICAgICAgICBbZ3JvdXBOYW1lLCBjb250cm9sTmFtZV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfSwge30pXG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGh5ZHJhdGUgdGhlIGBmaWVsZHNgIHByb3BlcnR5IG9mIHRoZSBtb2RlbC4gVGhlIHJlYXNvbiBmb3JcbiAgICogdGhpcyBpcyB0aGF0IHdlIGhhdmUgZGlmZmVyZW50IHdheXMgdG8gc3RvcmUgdGhlIGZpZWxkIGRhdGEuIE9uZSB3YXksIGlzXG4gICAqIHdlIHN0b3JlIHRoZW0gYXMgZHluYW1pYyBwcm9wZXJ0aWVzIG9mIHRoZSBqb2IuIEZvciBleGFtcGxlIGpvYi5mb28uYmFyLFxuICAgKiB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZSBvZiBhIEdyb3VwLCBhbmQgYGJhcmAgaXMgdGhlIG5hbWUgb2YgYSBjb250cm9sLlxuICAgKiBUaHVzLCB3aGVuIHdlIGNyZWF0ZSBhIGpvYiB1c2luZyBhIGZvcm0gaW4gdGhlIGNsaWVudCwgdGhlIGpvYiBvYmplY3Qgd2lsbFxuICAgKiBoYXZlIGl0cyBzdGF0aWMgcHJvcGVydGllcyAoaWQsIGFjY291bnQsIHJlZmVyZW5jZSBldGMpLCBhbmQgYWxzbyBhIG51bWJlclxuICAgKiBvZiBkeW5hbWljIHByb3BlcnRpZXMgZGV0ZXJtaW5lZCBieSB0aGUgR3JvdXBzIGFuZCBDb250cm9scy4gVGhpcyBraW5kIG9mXG4gICAqIG9iamVjdCBpcyBuaWNlIHRvIHdvcmsgd2l0aCBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEhvd2V2ZXIsIHRoZSBhcGlcbiAgICogd29ya3MgZGlmZmVyZW50bHkuIEluIHRoZSBBUEkgYSBKb2IgaXMgYSByZWNvcmQsIGFuZCByZWZlcmVuY2VzIGEgbnVtYmVyIG9mXG4gICAqIEZpZWxkIHJlY29yZHMuIEVhY2ggRmllbGQgc3RvcmVzIHRoZSB2YWx1ZS4gQ29tcGFyaW5nIHRoZXNlIHR3byBtb2RlbHMgd2VcbiAgICogaGF2ZTpcbiAgICogQSkgam9iIHdpdGggZHluYW1pYyBwcm9wZXJ0aWVzLCBlLmcuXG4gICAqIHtcbiAgICogICBpZDogPGd1aWQ+LFxuICAgKiAgIHJlZmVyZW5jZTogXCJzb21ldGhpbmdcIlxuICAgKiAgIDxvdGhlciBzdGF0aWMgam9iIHByb3BlcnRpZXM+Li4uXG4gICAqICAgZm9vOiB7XG4gICAqICAgICBiYXI6IFwidmFsdWVcIlxuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBCKSBqb2Igd2l0aCBmaWVsZHNcbiAgICoge1xuICAgKiAgIGlkOiA8Z3VpZD4sXG4gICAqICAgcmVmZXJlbmNlOiBcInNvbWV0aGluZ1wiXG4gICAqICAgPG90aGVyIHN0YXRpYyBqb2IgcHJvcGVydGllcz4uLi5cbiAgICogICA8d2lsbCBub3QgaGF2ZSBkeW5hbWljIHByb3BlcnRpZXM+Li4uXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7XG4gICAqICAgICAgIGlkOiA8Z3VpZD4sXG4gICAqICAgICAgIDxvdGhlciBmaWVsZCBwcm9wZXJ0aWVzPixcbiAgICogICAgICAgdmFsdWU6IFwidmFsdWVcIlxuICAgKiAgICAgfVxuICAgKiAgIF1cbiAgICogfVxuICAgKlxuICAgKiBTbywgd2hhdCB0aGlzIG1ldGhvZCBkb2VzIGlzIGdpdmVuIGEgSm9iTW9kZWwgaW4gdGhlIGZvcm0gb2YgQSwgcmVhZCBhbGxcbiAgICogb2YgdGhvc2UgZHluYW1pYyBwcm9wZXJ0aWVzIGFuZCBzZXQgdGhlbSBpbnRvIGBmaWVsZHNgLiBEb2luZyB0aGlzIHJlcXVpcmVzXG4gICAqIGtub3dsZWRnZSBvZiB0aGUgRm9ybSB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgam9iLiBNb3Jlb3Zlciwgc2luY2UgdGhlXG4gICAqIGR5bmFtaWMgcHJvcGVydGllcyBkbyBub3QgY29udGFpbiB0aGUgaWRzIG9mIHRoZSBmaWVsZHMsIHdlIGFsc28gYWxsb3cgdG9cbiAgICogcGFzcyBpbiBhIGBjb250cm9sRmllbGRJZE1hcGAuIFRoaXMgbWFwIHN0b3JlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIENvbnRyb2xcbiAgICogYW5kIHRoZSBGaWVsZCB0aGF0IHdhcyBjcmVhdGVkIGluIHRoZSBKb2IgdG8gc3RvcmUgdGhlIHZhbHVlIGZvciB0aGF0XG4gICAqIENvbnRyb2wuIFRoaXMgaXMgdXNlZnVsLCBpZiBmb3IgZXhhbXBsZSB5b3Ugd2FudCB0byBjb21wYXJlIGEgSm9iIGluIGZvcm0gQVxuICAgKiB3aXRoIGEgSm9iIGluIGZvcm0gQiwgZm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIHRoZSBKb2Igb24gdGhlIEFQSVxuICAgKiB3aXRoIGEgSm9iIHRoYXQgd2FzIHNhdmVkIGJ5IGEgY2xpZW50IGluIGZvcm0gQS5cbiAgICpcbiAgICogRS5nLlxuICAgKiBDbGllbnQgLT4gQVBJOiBjbGllbnQgcmVxdWVzdHMgZm9ybVxuICAgKiBVc2VyIC0+IENsaWVudDogdXNlciBmaWxscyBpbiB0aGUgZm9ybSBhbmQgc3VibWl0c1xuICAgKiBDbGllbnQgLT4gRmlyZXN0b3JlOiBjbGllbnQgc2F2ZXMgdGhlIEpvYiBpbiBmb3JtIEEgaS5lLiBkeW5hbWljIHByb3BzXG4gICAqIEZpcmVzdG9yZSAtPiBGdW5jdGlvbjogQSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgdG8gc3luYyB0aGUgam9iIHRvIHRoZSBBUElcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBGdW5jdGlvbiBjaGVja3MgaWYgam9iIGFscmVhZHkgZXhpc3RzLCBpdCByZWNlaXZlcyA0MDRcbiAgICogRnVuY3Rpb24gLT4gRnVuY3Rpb246IFRoZSBmdW5jdGlvbiBjYWxscyBgaHlkcmF0ZUZpZWxkcyguLi4pYFxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQT1NUIHRoZSBKb2IgdG8gL2pvYnNcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUE9TVCBlYWNoIGZpZWxkIHRvIC9maWVsZHNcbiAgICpcbiAgICogU2ltaWxhcmx5LCBpZiB0aGUgdXNlciB1cGRhdGVzIHRoZSBqb2JcbiAgICogQ2xpZW50IC0+IEFQSTogY2xpZW50IHJlcXVlc3RzIGZvcm1cbiAgICogVXNlciAtPiBDbGllbnQ6IHVzZXIgZmlsbHMgaW4gdGhlIGZvcm0gYW5kIHN1Ym1pdHMgYW4gdXBkYXRlXG4gICAqIENsaWVudCAtPiBGaXJlc3RvcmU6IGNsaWVudCBzYXZlcyB0aGUgSm9iIGluIGZvcm0gQSBpLmUuIGR5bmFtaWMgcHJvcHNcbiAgICogRmlyZXN0b3JlIC0+IEZ1bmN0aW9uOiBBIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB0byBzeW5jIHRoZSBqb2IgdG8gdGhlIEFQSVxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IEZ1bmN0aW9uIGNoZWNrcyBpZiBqb2IgYWxyZWFkeSBleGlzdHMsIGl0IHJlY2VpdmVzIDIwMFxuICAgKiBGdW5jdGlvbiAtPiBGdW5jdGlvbjogVGhlIGZ1bmN0aW9uIGNhbGxzIGBoeWRyYXRlRmllbGRzKC4uLilgIHBhc3NpbmcgaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYXAgaXMgbWFkZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgZmllbGRzIGl0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCBmcm9tIHRoZSBBUEkgYW5kIHN0b3JpbmcgdGhlIG1hcHBpbmdzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIGNvbnRyb2xJZCBhbmQgZmllbGRJZCBmb3IgZWFjaCBmaWVsZFxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQQVRDSCB0aGUgSm9iIHRvIC9qb2JzXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBPU1QvUEFUQ0ggZWFjaCBmaWVsZCB0byAvZmllbGRzXG4gICAqIHRyZWF0ZWQgYXMgbmV3XG4gICAqXG4gICAqIEBwYXJhbSB7VmFzRm9ybU1vZGVsfSBmb3JtTW9kZWwgdGhlIFZhc0Zvcm1Nb2RlbCB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZVxuICAgKiB0aGUgam9iXG4gICAqIEBwYXJhbSB7TWFwPHN0cmluZywgc3RyaW5nPn0gY29udHJvbEZpZWxkSWRNYXAgYSBtYXBwaW5nIG9mIGNvbnRyb2wgdG9cbiAgICogZmllbGQgaWRzLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBuZXcgaWQgZm9yIHRoZSBmaWVsZCBzaG91bGRcbiAgICogYmUgZ2VuZXJhdGVkLCBvciB0byByZXVzZSBhbiBleGlzdGluZyBvbmUgZnJvbSB0aGUgbWFwLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGNvbnRyb2xOYW1lcyBpZiBhIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWRcbiAgICogdG8gZmlsdGVyIHRoZSBmaWVsZHMgdGhhdCBhcmUgcmV0dXJuZWQuXG4gICAqIEByZXR1cm4ge0FycmF5PFZhc0ZpZWxkRHRvPn1cbiAgICovXG4gIGh5ZHJhdGVGaWVsZHMoXG4gICAgZm9ybU1vZGVsOiBWYXNGb3JtTW9kZWwsXG4gICAgY29udHJvbEZpZWxkSWRNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgIGNvbnRyb2xOYW1lcz86IEFycmF5PHN0cmluZz5cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGRzOiBBcnJheTxWYXNGaWVsZER0bz4gPSBbXTtcbiAgICBmb3JtTW9kZWwuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG5cbiAgICAgICAgICBpZiAoIWNvbnRyb2wubmFtZS5zdGFydHNXaXRoKCdmaWVsZHMuJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29udHJvbE5hbWVzICYmICFjb250cm9sTmFtZXMuaW5jbHVkZXMoY29udHJvbC5uYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkcy5wdXNoKFZhc0ZpZWxkTW9kZWwuZnJvbUR0byh7XG4gICAgICAgICAgICAvLyBpZiB0aGUgY29udHJvbElkIGV4aXN0cyBpbiB0aGUgbWFwLCB1c2UgdGhlIGFzc29jaWF0ZWQgZmllbGRJZCxcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBnZW5lcmF0ZSBhIG5ldyBpZCBmb3IgdGhlIGZpZWxkLlxuICAgICAgICAgICAgaWQ6IGNvbnRyb2xGaWVsZElkTWFwLmdldChjb250cm9sLmlkKSB8fCBVVUlELlVVSUQoKSxcbiAgICAgICAgICAgIGFjY291bnQ6IHRoaXMuYWNjb3VudCxcbiAgICAgICAgICAgIGpvYjogdGhpcy5pZCxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogdGhpcy5jcmVhdGVkQnksXG4gICAgICAgICAgICBjcmVhdGVkOiB0aGlzLmNyZWF0ZWQsXG4gICAgICAgICAgICBtb2RpZmllZEJ5OiB0aGlzLm1vZGlmaWVkQnksXG4gICAgICAgICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgICAgICAgIGNvbnRyb2w6IGNvbnRyb2wuaWQsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRWYWx1ZUJ5UGF0aChcbiAgICAgICAgICAgICAgW2dyb3VwLm5hbWUsIGNvbnRyb2wubmFtZV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGdldFZhbHVlQnlQYXRoPFQgZXh0ZW5kcyBWYXNGaWVsZER0b1ZhbHVlPihcbiAgICBwYXRoOiBzdHJpbmdbXSA9IFtdXG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLiR0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHZlcnkgbm9uIHNvcGhpc3RpY2F0ZWQgd2F5IHRvIHNldCB2YWx1ZXMgaW4gdGhlIGpvYiB2aWEgcGF0aHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIHNldFZhbHVlQnlQYXRoKCd2YWx1ZScsIFsnZm9vJywgJ2JhciddKTtcbiAgICpcbiAgICogd2lsbCBtYWtlIHJlc3VsdHMgaW4gam9iXG4gICAqIHtcbiAgICogICBmb286IHtcbiAgICogICAgIGJhcjogJ3ZhbHVlJ1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICovXG4gIHNldFZhbHVlQnlQYXRoKHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlLCBwYXRoOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgc3dpdGNoIChwYXRoLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICAodGhpcyBhcyBhbnkpW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICgodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4pW3BhdGhbMl1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ3BhdGggaGFzIHRvbyBtYW55IHNlZ21lbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGljT25seSBpZiB0cnVlLCB3aWxsIG9ubHkgb3V0cHV0IHZhbHVlcyBmb3IgdGhlIHN0YXRpY1xuICAgKiBwcm9wZXJ0aWVzIGluIHRoZSBkdG9cbiAgICogQHJldHVybiB7VmFzSm9iRHRvfVxuICAgKi9cbiAgcHVibGljIHRvRHRvKHN0YXRpY09ubHkgPSBmYWxzZSk6IFZhc0pvYkR0byB7XG5cbiAgICBpZiAoc3RhdGljT25seSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgICAgc2VydmVyQ3JlYXRlZDogdGhpcy5zZXJ2ZXJDcmVhdGVkLFxuICAgICAgICBzZXJ2ZXJNb2RpZmllZDogdGhpcy5zZXJ2ZXJNb2RpZmllZCxcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICBhY2Nlc3NHcm91cDogdGhpcy5hY2Nlc3NHcm91cCxcbiAgICAgICAgcmVmZXJlbmNlOiB0aGlzLnJlZmVyZW5jZSxcbiAgICAgICAgam9iRGF0ZTogdGhpcy5qb2JEYXRlLFxuICAgICAgICBqb2JTdGF0dXM6IHRoaXMuam9iU3RhdHVzLFxuICAgICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUsXG4gICAgICAgIGFzc2lnbmVlSWQ6IHRoaXMuYXNzaWduZWVJZCxcbiAgICAgICAgZm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQsXG4gICAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyxcbiAgICAgICAgY2hpbGRNb2RpZmllZDogdGhpcy5jaGlsZE1vZGlmaWVkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICAgIGZpbGVzOiB0aGlzLmZpbGVzLFxuICAgICAgICBjcmVhdGVkQnlEaXNwbGF5TmFtZTogdGhpcy5jcmVhdGVkQnlEaXNwbGF5TmFtZSxcbiAgICAgICAgbW9kaWZpZWRCeURpc3BsYXlOYW1lOiB0aGlzLm1vZGlmaWVkQnlEaXNwbGF5TmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkdG8gPSB7fSBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gICAgWy4uLnRoaXMuc3RhdGljUHJvcGVydGllcywgLi4udGhpcy5keW5hbWljUHJvcGVydGllc11cbiAgICAgIC5mb3JFYWNoKHByb3AgPT5cbiAgICAgICAgKGR0bylbcHJvcF0gPSB0aGlzLiR0aGlzW3Byb3BdKTtcblxuICAgIHJldHVybiBkdG8gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgYSBzeW50YXggdGhhdCBhbGxvd3MgdXMgdG8gYnVpbGQgc3RyaW5ncyBmcm9tIHRoZVxuICAgKiB2YWx1ZXMgb2YgZnJvbSB0aGUgam9iIG1vZGVsLiBGb3IgZXhhbXBsZSBpZiB0aGUgam9iIG1vZGVsIHdhczpcbiAgICpcbiAgICoge1xuICAgKiAgIGZvbzogJ2JhcidcbiAgICogfVxuICAgKlxuICAgKiBhbmQgd2UgcGFzcyBcImkgYW0gZm9vIHtmb299XCIsIHRoZSByZXN1bHQgd291bGQgYmU6XG4gICAqXG4gICAqIFwiaSBhbSBmb28gYmFyXCJcbiAgICpcbiAgICogd2UgY2FuIGFsc28gdXNlIG1vbWVudCB0byBwYXJzZSBkYXRlcywgZm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBjcmVhdGVkOiBcIjIwMjItMDEtMDFUMDA6MDA6MDArMDAwMFwiXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJ7Y3JlYXRlZHxkYXRlOllZLU1NLUREfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcIjIwMjItMDEtMDFcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgYSBzdHJpbmcgd2l0aCB0aGUgc3ludGF4XG4gICAqIEBwYXJhbSB7UGFyc2VTeW50YXhPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3ludGF4IG9uIHRoaXMgam9iXG4gICAqL1xuICBwYXJzZVN5bnRheChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnNlU3ludGF4T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVab25lT2Zmc2V0OiAwXG4gICAgfVxuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oe1tefV0qfSkvZywgKG1hdGNoOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHN5bnRheCA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5sZW5ndGggLSAxKTtcblxuICAgICAgbGV0IFtrZXksIGZpbHRlcl0gPSBzeW50YXguc3BsaXQoJ3wnKTtcbiAgICAgIGtleSA9IChrZXkgfHwgJycpLnRyaW0oKTtcbiAgICAgIGZpbHRlciA9IChmaWx0ZXIgfHwgJycpLnRyaW0oKVxuXG4gICAgICBsZXQgZmlsdGVyTmFtZSwgZmlsdGVyQXJnOiBzdHJpbmcgPSAnJztcbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRJbmRleCA9IGZpbHRlci5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzcGxpdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXIuc3Vic3RyaW5nKDAsIHNwbGl0SW5kZXgpO1xuICAgICAgICAgIGZpbHRlckFyZyA9IGZpbHRlci5zdWJzdHJpbmcoc3BsaXRJbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXI7XG4gICAgICAgICAgZmlsdGVyQXJnID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyTmFtZSA9IChmaWx0ZXJOYW1lIHx8ICcnKS50cmltKCk7XG4gICAgICAgIGZpbHRlckFyZyA9IChmaWx0ZXJBcmcgfHwgJycpLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IG9iamVjdEtleSA9IHBhdGguc2hpZnQoKSB8fCAnJztcbiAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgIGlmIChvYmplY3RLZXkgPT09ICdqb2InKSB7XG4gICAgICAgIHJlc3VsdCA9ICh0aGlzLmdldFZhbHVlQnlQYXRoKHBhdGgpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgPT09ICdmaWVsZHMnKSB7XG4gICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLmdldEZpZWxkczIoKSkgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKG9iamVjdEtleS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykge1xuICAgICAgICAgIGlmIChvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSBpcyBub3QgcHJlc2VudCBpbiBvcHRpb25zLm9iamVjdGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGdldFZhbHVlQnlQYXRoKHBhdGgsIG9wdGlvbnMub2JqZWN0c1tvYmplY3RLZXldKSB8fCAnJylcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSB3YXMgdXNlZCBidXQgb3B0aW9ucy5vYmplY3QgaXMgbm90IHNldGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG5cbiAgICAgIGlmIChmaWx0ZXJOYW1lICYmIHJlc3VsdCkge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlck5hbWUpIHtcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChyZXN1bHQpXG4gICAgICAgICAgICAgIC51dGNPZmZzZXQob3B0aW9ucy50aW1lWm9uZU9mZnNldClcbiAgICAgICAgICAgICAgLmZvcm1hdChmaWx0ZXJBcmcgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Vua25vd24gZmlsdGVyICVzJywgZmlsdGVyTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkudHJpbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBvdmVycmlkZSB0b0FwaUR0bygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQXBpRHRvKCksXG4gICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlIHx8ICd+JyxcbiAgICAgIGpvYkRhdGU6IHRoaXMuam9iRGF0ZSB8fCAnficsXG4gICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUgfHwgJ34nLFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAgfHwgJ34nLFxuICAgICAgam9iU3RhdHVzOiB0aGlzLmpvYlN0YXR1cyB8fCAnficsXG4gICAgICBhc3NpZ25lZUlkOiB0aGlzLmFzc2lnbmVlSWQgfHwgJ34nLFxuICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQgfHwgMCxcbiAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyB8fCAwLFxuICAgICAgbGFzdEZvcm1JZDogdGhpcy5mb3JtSWQgfHwgJ34nXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBb0J4Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsK0JBQStCO0lBQzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSCxZQUNrQixFQUFVLEVBQ1YsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixXQUFtQixFQUM1QixTQUFpQixFQUNqQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFVBQWtCLEVBQ2xCLE1BQWMsRUFDZCxjQUFzQixFQUN0QixhQUFxQixFQUNyQixhQUFxQixFQUNyQixPQUFlLEVBQ2YsTUFBMEIsRUFDMUIsS0FBd0IsRUFDeEIsb0JBQTRCLEVBQzVCLHFCQUE2QjtRQUVwQyxLQUFLLENBQ0gsRUFBRSxFQUNGLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNWLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztRQWxDYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JC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Q0FBQzs2QkFDakMsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztxQkFDNUI7b0JBQ0QsT0FBTyxDQUFDLENBQUM7d0JBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDL0M7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUFBLENBQUM7SUFFRjs7T0FFRztJQUNNLFFBQVE7UUFDZixPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUc7WUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHO1lBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHO1NBQzdCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNGaWxlRHRvIH0gZnJvbSAnLi92YXMtZmlsZS5kdG8nO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZ2V0VmFsdWVCeVBhdGggfSBmcm9tICcuLi91dGlscy9nZXQtdmFsdWUtYnktcGF0aCc7XG5pbXBvcnQgeyBWYXNCYXNlRHRvIH0gZnJvbSAnLi92YXMtYmFzZS5kdG8nO1xuaW1wb3J0IHsgVmFzRmllbGREdG8sIFZhc0ZpZWxkRHRvVmFsdWUgfSBmcm9tICcuL3Zhcy1maWVsZC5kdG8nO1xuaW1wb3J0IHsgVmFzRmllbGRNb2RlbCB9IGZyb20gJy4vdmFzLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFZhc0Zvcm1Nb2RlbCB9IGZyb20gJy4vdmFzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVmFzSm9iRHRvIH0gZnJvbSAnLi92YXMtam9iLmR0byc7XG5pbXBvcnQgeyBWYXNSZXN0cmljdGVkQWNjb3VudE9iamVjdE1vZGVsIH0gZnJvbSAnLi92YXMtcmVzdHJpY3RlZC1hY2NvdW50LW9iamVjdC5tb2RlbCc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICBbczogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VTeW50YXhPcHRpb25zIHtcbiAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gYWRqdXN0IGFueSBkYXRldGltZSB2YWx1ZXMgdGhhdCBhcmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4IHN0cmluZy4gU2VlXG4gIC8vIGh0dHBzOi8vbW9tZW50anNjb20ucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vbWVudC8wMy1tYW5pcHVsYXRpbmcvMDktdXRjLW9mZnNldC9cbiAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IGBtb21lbnRgIHdpbGwgaGFuZGxlIHRoZSB2YWx1ZS5cbiAgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgLy8gdGhpcyBkaWN0aW9uYXJ5IGNhbiBiZSBwYXNzZWQgaW4gdG8gY29udGFpbiBvdGhlciBvYmplY3RzIHRvIGJlIHJlZmVyZW5jZWRcbiAgLy8gaW4gdGhlIHN5bnRheC4gRm9yIGV4YW1wbGUgaWYgd2UgaGF2ZSB7am9iLmZvb30gdGhpcyB3aWxsIHJlZmVyZW5jZSB0aGVcbiAgLy8gam9iJ3MgYGZvb2AgcHJvcGVydHksIGhvd2V2ZXIgaWYgd2UgaGF2ZSBcInJlcG9ydExheW91dC50aXRsZVwiIHRoaXMgd2lsbFxuICAvLyBleHBlY3QgdG8gZmluZCBhIHByb3BlcnR5IG9mIGBvYmplY3RzYCBjYWxsZWQgYHJlcG9ydExheW91dGAgd2hpY2ggd2lsbFxuICAvLyBoYXZlIGEgcHJvcGVydHkgY2FsbGVkIGB0aXRsZWBcbiAgb2JqZWN0cz86IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VmFzQmFzZUR0bz4gfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj47XG59XG5cbi8qKlxuICogSm9iTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0pvYk1vZGVsIGV4dGVuZHMgVmFzUmVzdHJpY3RlZEFjY291bnRPYmplY3RNb2RlbCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlckNyZWF0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZlck1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2Nlc3NHcm91cFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JEYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JTdGF0dXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGpvYlR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFzc2lnbmVlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1JZFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZVpvbmVPZmZzZXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlbmRpbmdGaWVsZHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoaWxkTW9kaWZpZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb25cbiAgICogQHBhcmFtIHtBcnJheTxWYXNGaWVsZER0bz59IGZpZWxkc1xuICAgKiBAcGFyYW0ge0FycmF5PFZhc0ZpbGVEdG8+fSBmaWxlcyxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWF0ZWRCeURpc3BsYXlOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZEJ5RGlzcGxheU5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iRGF0ZTogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JTdGF0dXM6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBhc3NpZ25lZUlkOiBzdHJpbmcsXG4gICAgcHVibGljIGZvcm1JZDogc3RyaW5nLFxuICAgIHB1YmxpYyB0aW1lWm9uZU9mZnNldDogbnVtYmVyLFxuICAgIHB1YmxpYyBwZW5kaW5nRmllbGRzOiBudW1iZXIsXG4gICAgcHVibGljIGNoaWxkTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgdmVyc2lvbjogbnVtYmVyLFxuICAgIHB1YmxpYyBmaWVsZHM6IEFycmF5PFZhc0ZpZWxkRHRvPixcbiAgICBwdWJsaWMgZmlsZXM6IEFycmF5PFZhc0ZpbGVEdG8+LFxuICAgIHB1YmxpYyBjcmVhdGVkQnlEaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBtb2RpZmllZEJ5RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBpZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyB3aXRoIHRoZSBkeW5hbWljIGludGVyZmFjZVxuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2V9XG4gICAqL1xuICBnZXQgJHRoaXMoKTogVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIGR5bmFtaWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGFkZGVkIGJ5IHRoZVxuICAgKiBkeW5hbWljIGZvcm1zXG4gICAqL1xuICBnZXQgZHluYW1pY1Byb3BlcnRpZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgbmF0aXZlUHJvcHMgPSB0aGlzLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgcmV0dXJuIE9iamVjdFxuICAgICAgLmdldE93blByb3BlcnR5TmFtZXModGhpcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiAhbmF0aXZlUHJvcHMuaW5jbHVkZXMocHJvcCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIEpvYiBzdGF0aWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGRlY2xhcmVkIGJ5XG4gICAqIHRoZSB0eXBlXG4gICAqL1xuICBnZXQgc3RhdGljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoVmFzSm9iTW9kZWwuZW1wdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0pvYk1vZGVsIHtcbiAgICByZXR1cm4gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIFVVSUQuVVVJRCgpLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgIG1vbWVudCgpLnV0Y09mZnNldCgpLFxuICAgICAgMCxcbiAgICAgICcnLFxuICAgICAgMCxcbiAgICAgIFtdLFxuICAgICAgW10sXG4gICAgICAnJyxcbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0pvYkR0b30gam9iRHRvXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGpvYkR0bzogUGFydGlhbDxWYXNKb2JEdG8+KTogVmFzSm9iTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIGpvYkR0by5pZCB8fCBVVUlELlVVSUQoKSxcbiAgICAgIGpvYkR0by5jcmVhdGVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlckNyZWF0ZWQgfHwgJycsXG4gICAgICBqb2JEdG8uY3JlYXRlZEJ5IHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlck1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnkgfHwgJycsXG4gICAgICBqb2JEdG8uYWNjb3VudCB8fCAnJyxcbiAgICAgIGpvYkR0by5hY2Nlc3NHcm91cCB8fCAnJyxcbiAgICAgIGpvYkR0by5yZWZlcmVuY2UgfHwgJycsXG4gICAgICBqb2JEdG8uam9iRGF0ZSB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JTdGF0dXMgfHwgJycsXG4gICAgICBqb2JEdG8uam9iVHlwZSB8fCAnJyxcbiAgICAgIGpvYkR0by5hc3NpZ25lZUlkIHx8ICcnLFxuICAgICAgam9iRHRvLmZvcm1JZCB8fCAnJyxcbiAgICAgIGpvYkR0by50aW1lWm9uZU9mZnNldCB8fCBtb21lbnQoKS51dGNPZmZzZXQoKSxcbiAgICAgIGpvYkR0by5wZW5kaW5nRmllbGRzIHx8IDAsXG4gICAgICBqb2JEdG8uY2hpbGRNb2RpZmllZCB8fCAnJyxcbiAgICAgIGpvYkR0by52ZXJzaW9uIHx8IDAsXG4gICAgICBqb2JEdG8uZmllbGRzIHx8IFtdLFxuICAgICAgam9iRHRvLmZpbGVzIHx8IFtdLFxuICAgICAgam9iRHRvLmNyZWF0ZWRCeURpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnlEaXNwbGF5TmFtZSB8fCAnJyxcbiAgICApO1xuICAgIGNvbnN0IGVtcHR5S2V5cyA9IG1vZGVsLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgT2JqZWN0XG4gICAgICAua2V5cyhqb2JEdG8pXG4gICAgICAuZmlsdGVyKGtleSA9PiBlbXB0eUtleXMuaW5kZXhPZihrZXkpID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICAgICAgbW9kZWwuJHRoaXNba2V5XSA9IChqb2JEdG8gYXMgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlKVtrZXldXG4gICAgICApO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fVxuICAgKi9cbiAgZ2V0RmllbGRzKGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGNvbnN0IGZpZWxkczoge1trZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWV9ID0ge307XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIChmaWVsZHMpW2NvbnRyb2wucmVwb3J0VGVtcGxhdGVOYW1lXSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmV0dXJuIGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgYWxsIGZpZWxkcyBpbiB0aGUgam9iIGJ1dFxuICAgKiB3aXRoIHRoZSBcImZpZWxkcy5cIiBwYXJ0IHJlbW92ZWQuIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gYGdldEZpZWxkc2BcbiAgICogZXhjZXB0IHRoYXQgdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgc2V0IHdoZXJlYXNcbiAgICogYGdldEZpZWxkc2Agd2lsbCByZXR1cm4gYSBwcm9wZXJ0eSByZWdhcmRsZXNzIChiZWNhdXNlIGl0IHVzZXMgdGhlIGZvcm0gdG9cbiAgICogZHJpdmUgdGhlIGxvZ2ljKVxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkczIoKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGxldCBmaWVsZHM6IHtba2V5OiBzdHJpbmddOiBWYXNGaWVsZER0b1ZhbHVlfSA9IHt9O1xuICAgIHRoaXMuZHluYW1pY1Byb3BlcnRpZXNcbiAgICAgIC5mb3JFYWNoKChncm91cE5hbWUpID0+IHtcbiAgICAgICAgT2JqZWN0XG4gICAgICAgICAgLmtleXModGhpcy4kdGhpc1tncm91cE5hbWVdKVxuICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lU2hvcnQgPSBjb250cm9sTmFtZS5yZXBsYWNlKC9maWVsZHNcXC4vLCAnJyk7XG4gICAgICAgICAgICBmaWVsZHNbY29udHJvbE5hbWVTaG9ydF0gPSB0aGlzLmdldFZhbHVlQnlQYXRoKFxuICAgICAgICAgICAgICBbZ3JvdXBOYW1lLCBjb250cm9sTmFtZV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfSwge30pXG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGh5ZHJhdGUgdGhlIGBmaWVsZHNgIHByb3BlcnR5IG9mIHRoZSBtb2RlbC4gVGhlIHJlYXNvbiBmb3JcbiAgICogdGhpcyBpcyB0aGF0IHdlIGhhdmUgZGlmZmVyZW50IHdheXMgdG8gc3RvcmUgdGhlIGZpZWxkIGRhdGEuIE9uZSB3YXksIGlzXG4gICAqIHdlIHN0b3JlIHRoZW0gYXMgZHluYW1pYyBwcm9wZXJ0aWVzIG9mIHRoZSBqb2IuIEZvciBleGFtcGxlIGpvYi5mb28uYmFyLFxuICAgKiB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZSBvZiBhIEdyb3VwLCBhbmQgYGJhcmAgaXMgdGhlIG5hbWUgb2YgYSBjb250cm9sLlxuICAgKiBUaHVzLCB3aGVuIHdlIGNyZWF0ZSBhIGpvYiB1c2luZyBhIGZvcm0gaW4gdGhlIGNsaWVudCwgdGhlIGpvYiBvYmplY3Qgd2lsbFxuICAgKiBoYXZlIGl0cyBzdGF0aWMgcHJvcGVydGllcyAoaWQsIGFjY291bnQsIHJlZmVyZW5jZSBldGMpLCBhbmQgYWxzbyBhIG51bWJlclxuICAgKiBvZiBkeW5hbWljIHByb3BlcnRpZXMgZGV0ZXJtaW5lZCBieSB0aGUgR3JvdXBzIGFuZCBDb250cm9scy4gVGhpcyBraW5kIG9mXG4gICAqIG9iamVjdCBpcyBuaWNlIHRvIHdvcmsgd2l0aCBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEhvd2V2ZXIsIHRoZSBhcGlcbiAgICogd29ya3MgZGlmZmVyZW50bHkuIEluIHRoZSBBUEkgYSBKb2IgaXMgYSByZWNvcmQsIGFuZCByZWZlcmVuY2VzIGEgbnVtYmVyIG9mXG4gICAqIEZpZWxkIHJlY29yZHMuIEVhY2ggRmllbGQgc3RvcmVzIHRoZSB2YWx1ZS4gQ29tcGFyaW5nIHRoZXNlIHR3byBtb2RlbHMgd2VcbiAgICogaGF2ZTpcbiAgICogQSkgam9iIHdpdGggZHluYW1pYyBwcm9wZXJ0aWVzLCBlLmcuXG4gICAqIHtcbiAgICogICBpZDogPGd1aWQ+LFxuICAgKiAgIHJlZmVyZW5jZTogXCJzb21ldGhpbmdcIlxuICAgKiAgIDxvdGhlciBzdGF0aWMgam9iIHByb3BlcnRpZXM+Li4uXG4gICAqICAgZm9vOiB7XG4gICAqICAgICBiYXI6IFwidmFsdWVcIlxuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBCKSBqb2Igd2l0aCBmaWVsZHNcbiAgICoge1xuICAgKiAgIGlkOiA8Z3VpZD4sXG4gICAqICAgcmVmZXJlbmNlOiBcInNvbWV0aGluZ1wiXG4gICAqICAgPG90aGVyIHN0YXRpYyBqb2IgcHJvcGVydGllcz4uLi5cbiAgICogICA8d2lsbCBub3QgaGF2ZSBkeW5hbWljIHByb3BlcnRpZXM+Li4uXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7XG4gICAqICAgICAgIGlkOiA8Z3VpZD4sXG4gICAqICAgICAgIDxvdGhlciBmaWVsZCBwcm9wZXJ0aWVzPixcbiAgICogICAgICAgdmFsdWU6IFwidmFsdWVcIlxuICAgKiAgICAgfVxuICAgKiAgIF1cbiAgICogfVxuICAgKlxuICAgKiBTbywgd2hhdCB0aGlzIG1ldGhvZCBkb2VzIGlzIGdpdmVuIGEgSm9iTW9kZWwgaW4gdGhlIGZvcm0gb2YgQSwgcmVhZCBhbGxcbiAgICogb2YgdGhvc2UgZHluYW1pYyBwcm9wZXJ0aWVzIGFuZCBzZXQgdGhlbSBpbnRvIGBmaWVsZHNgLiBEb2luZyB0aGlzIHJlcXVpcmVzXG4gICAqIGtub3dsZWRnZSBvZiB0aGUgRm9ybSB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgam9iLiBNb3Jlb3Zlciwgc2luY2UgdGhlXG4gICAqIGR5bmFtaWMgcHJvcGVydGllcyBkbyBub3QgY29udGFpbiB0aGUgaWRzIG9mIHRoZSBmaWVsZHMsIHdlIGFsc28gYWxsb3cgdG9cbiAgICogcGFzcyBpbiBhIGBjb250cm9sRmllbGRJZE1hcGAuIFRoaXMgbWFwIHN0b3JlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIENvbnRyb2xcbiAgICogYW5kIHRoZSBGaWVsZCB0aGF0IHdhcyBjcmVhdGVkIGluIHRoZSBKb2IgdG8gc3RvcmUgdGhlIHZhbHVlIGZvciB0aGF0XG4gICAqIENvbnRyb2wuIFRoaXMgaXMgdXNlZnVsLCBpZiBmb3IgZXhhbXBsZSB5b3Ugd2FudCB0byBjb21wYXJlIGEgSm9iIGluIGZvcm0gQVxuICAgKiB3aXRoIGEgSm9iIGluIGZvcm0gQiwgZm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIHRoZSBKb2Igb24gdGhlIEFQSVxuICAgKiB3aXRoIGEgSm9iIHRoYXQgd2FzIHNhdmVkIGJ5IGEgY2xpZW50IGluIGZvcm0gQS5cbiAgICpcbiAgICogRS5nLlxuICAgKiBDbGllbnQgLT4gQVBJOiBjbGllbnQgcmVxdWVzdHMgZm9ybVxuICAgKiBVc2VyIC0+IENsaWVudDogdXNlciBmaWxscyBpbiB0aGUgZm9ybSBhbmQgc3VibWl0c1xuICAgKiBDbGllbnQgLT4gRmlyZXN0b3JlOiBjbGllbnQgc2F2ZXMgdGhlIEpvYiBpbiBmb3JtIEEgaS5lLiBkeW5hbWljIHByb3BzXG4gICAqIEZpcmVzdG9yZSAtPiBGdW5jdGlvbjogQSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgdG8gc3luYyB0aGUgam9iIHRvIHRoZSBBUElcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBGdW5jdGlvbiBjaGVja3MgaWYgam9iIGFscmVhZHkgZXhpc3RzLCBpdCByZWNlaXZlcyA0MDRcbiAgICogRnVuY3Rpb24gLT4gRnVuY3Rpb246IFRoZSBmdW5jdGlvbiBjYWxscyBgaHlkcmF0ZUZpZWxkcyguLi4pYFxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQT1NUIHRoZSBKb2IgdG8gL2pvYnNcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUE9TVCBlYWNoIGZpZWxkIHRvIC9maWVsZHNcbiAgICpcbiAgICogU2ltaWxhcmx5LCBpZiB0aGUgdXNlciB1cGRhdGVzIHRoZSBqb2JcbiAgICogQ2xpZW50IC0+IEFQSTogY2xpZW50IHJlcXVlc3RzIGZvcm1cbiAgICogVXNlciAtPiBDbGllbnQ6IHVzZXIgZmlsbHMgaW4gdGhlIGZvcm0gYW5kIHN1Ym1pdHMgYW4gdXBkYXRlXG4gICAqIENsaWVudCAtPiBGaXJlc3RvcmU6IGNsaWVudCBzYXZlcyB0aGUgSm9iIGluIGZvcm0gQSBpLmUuIGR5bmFtaWMgcHJvcHNcbiAgICogRmlyZXN0b3JlIC0+IEZ1bmN0aW9uOiBBIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB0byBzeW5jIHRoZSBqb2IgdG8gdGhlIEFQSVxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IEZ1bmN0aW9uIGNoZWNrcyBpZiBqb2IgYWxyZWFkeSBleGlzdHMsIGl0IHJlY2VpdmVzIDIwMFxuICAgKiBGdW5jdGlvbiAtPiBGdW5jdGlvbjogVGhlIGZ1bmN0aW9uIGNhbGxzIGBoeWRyYXRlRmllbGRzKC4uLilgIHBhc3NpbmcgaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYXAgaXMgbWFkZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUgZmllbGRzIGl0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCBmcm9tIHRoZSBBUEkgYW5kIHN0b3JpbmcgdGhlIG1hcHBpbmdzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIGNvbnRyb2xJZCBhbmQgZmllbGRJZCBmb3IgZWFjaCBmaWVsZFxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQQVRDSCB0aGUgSm9iIHRvIC9qb2JzXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBPU1QvUEFUQ0ggZWFjaCBmaWVsZCB0byAvZmllbGRzXG4gICAqIHRyZWF0ZWQgYXMgbmV3XG4gICAqXG4gICAqIEBwYXJhbSB7VmFzRm9ybU1vZGVsfSBmb3JtTW9kZWwgdGhlIFZhc0Zvcm1Nb2RlbCB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZVxuICAgKiB0aGUgam9iXG4gICAqIEBwYXJhbSB7TWFwPHN0cmluZywgc3RyaW5nPn0gY29udHJvbEZpZWxkSWRNYXAgYSBtYXBwaW5nIG9mIGNvbnRyb2wgdG9cbiAgICogZmllbGQgaWRzLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBuZXcgaWQgZm9yIHRoZSBmaWVsZCBzaG91bGRcbiAgICogYmUgZ2VuZXJhdGVkLCBvciB0byByZXVzZSBhbiBleGlzdGluZyBvbmUgZnJvbSB0aGUgbWFwLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGNvbnRyb2xOYW1lcyBpZiBhIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWRcbiAgICogdG8gZmlsdGVyIHRoZSBmaWVsZHMgdGhhdCBhcmUgcmV0dXJuZWQuXG4gICAqIEByZXR1cm4ge0FycmF5PFZhc0ZpZWxkRHRvPn1cbiAgICovXG4gIGh5ZHJhdGVGaWVsZHMoXG4gICAgZm9ybU1vZGVsOiBWYXNGb3JtTW9kZWwsXG4gICAgY29udHJvbEZpZWxkSWRNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgIGNvbnRyb2xOYW1lcz86IEFycmF5PHN0cmluZz5cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGRzOiBBcnJheTxWYXNGaWVsZER0bz4gPSBbXTtcbiAgICBmb3JtTW9kZWwuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG5cbiAgICAgICAgICBpZiAoIWNvbnRyb2wubmFtZS5zdGFydHNXaXRoKCdmaWVsZHMuJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29udHJvbE5hbWVzICYmICFjb250cm9sTmFtZXMuaW5jbHVkZXMoY29udHJvbC5uYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkcy5wdXNoKFZhc0ZpZWxkTW9kZWwuZnJvbUR0byh7XG4gICAgICAgICAgICAvLyBpZiB0aGUgY29udHJvbElkIGV4aXN0cyBpbiB0aGUgbWFwLCB1c2UgdGhlIGFzc29jaWF0ZWQgZmllbGRJZCxcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBnZW5lcmF0ZSBhIG5ldyBpZCBmb3IgdGhlIGZpZWxkLlxuICAgICAgICAgICAgaWQ6IGNvbnRyb2xGaWVsZElkTWFwLmdldChjb250cm9sLmlkKSB8fCBVVUlELlVVSUQoKSxcbiAgICAgICAgICAgIGFjY291bnQ6IHRoaXMuYWNjb3VudCxcbiAgICAgICAgICAgIGpvYjogdGhpcy5pZCxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogdGhpcy5jcmVhdGVkQnksXG4gICAgICAgICAgICBjcmVhdGVkOiB0aGlzLmNyZWF0ZWQsXG4gICAgICAgICAgICBtb2RpZmllZEJ5OiB0aGlzLm1vZGlmaWVkQnksXG4gICAgICAgICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgICAgICAgIGNvbnRyb2w6IGNvbnRyb2wuaWQsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRWYWx1ZUJ5UGF0aChcbiAgICAgICAgICAgICAgW2dyb3VwLm5hbWUsIGNvbnRyb2wubmFtZV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGdldFZhbHVlQnlQYXRoPFQgZXh0ZW5kcyBWYXNGaWVsZER0b1ZhbHVlPihcbiAgICBwYXRoOiBzdHJpbmdbXSA9IFtdXG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLiR0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHZlcnkgbm9uIHNvcGhpc3RpY2F0ZWQgd2F5IHRvIHNldCB2YWx1ZXMgaW4gdGhlIGpvYiB2aWEgcGF0aHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIHNldFZhbHVlQnlQYXRoKCd2YWx1ZScsIFsnZm9vJywgJ2JhciddKTtcbiAgICpcbiAgICogd2lsbCBtYWtlIHJlc3VsdHMgaW4gam9iXG4gICAqIHtcbiAgICogICBmb286IHtcbiAgICogICAgIGJhcjogJ3ZhbHVlJ1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICovXG4gIHNldFZhbHVlQnlQYXRoKHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlLCBwYXRoOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgc3dpdGNoIChwYXRoLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICAodGhpcyBhcyBhbnkpW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICgodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4pW3BhdGhbMl1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ3BhdGggaGFzIHRvbyBtYW55IHNlZ21lbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGljT25seSBpZiB0cnVlLCB3aWxsIG9ubHkgb3V0cHV0IHZhbHVlcyBmb3IgdGhlIHN0YXRpY1xuICAgKiBwcm9wZXJ0aWVzIGluIHRoZSBkdG9cbiAgICogQHJldHVybiB7VmFzSm9iRHRvfVxuICAgKi9cbiAgcHVibGljIHRvRHRvKHN0YXRpY09ubHkgPSBmYWxzZSk6IFZhc0pvYkR0byB7XG5cbiAgICBpZiAoc3RhdGljT25seSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgICAgc2VydmVyQ3JlYXRlZDogdGhpcy5zZXJ2ZXJDcmVhdGVkLFxuICAgICAgICBzZXJ2ZXJNb2RpZmllZDogdGhpcy5zZXJ2ZXJNb2RpZmllZCxcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICBhY2Nlc3NHcm91cDogdGhpcy5hY2Nlc3NHcm91cCxcbiAgICAgICAgcmVmZXJlbmNlOiB0aGlzLnJlZmVyZW5jZSxcbiAgICAgICAgam9iRGF0ZTogdGhpcy5qb2JEYXRlLFxuICAgICAgICBqb2JTdGF0dXM6IHRoaXMuam9iU3RhdHVzLFxuICAgICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUsXG4gICAgICAgIGFzc2lnbmVlSWQ6IHRoaXMuYXNzaWduZWVJZCxcbiAgICAgICAgZm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQsXG4gICAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyxcbiAgICAgICAgY2hpbGRNb2RpZmllZDogdGhpcy5jaGlsZE1vZGlmaWVkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgIGZpZWxkczogdGhpcy5maWVsZHMsXG4gICAgICAgIGZpbGVzOiB0aGlzLmZpbGVzLFxuICAgICAgICBjcmVhdGVkQnlEaXNwbGF5TmFtZTogdGhpcy5jcmVhdGVkQnlEaXNwbGF5TmFtZSxcbiAgICAgICAgbW9kaWZpZWRCeURpc3BsYXlOYW1lOiB0aGlzLm1vZGlmaWVkQnlEaXNwbGF5TmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkdG8gPSB7fSBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gICAgWy4uLnRoaXMuc3RhdGljUHJvcGVydGllcywgLi4udGhpcy5keW5hbWljUHJvcGVydGllc11cbiAgICAgIC5mb3JFYWNoKHByb3AgPT5cbiAgICAgICAgKGR0bylbcHJvcF0gPSB0aGlzLiR0aGlzW3Byb3BdKTtcblxuICAgIHJldHVybiBkdG8gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgYSBzeW50YXggdGhhdCBhbGxvd3MgdXMgdG8gYnVpbGQgc3RyaW5ncyBmcm9tIHRoZVxuICAgKiB2YWx1ZXMgb2YgZnJvbSB0aGUgam9iIG1vZGVsLiBGb3IgZXhhbXBsZSBpZiB0aGUgam9iIG1vZGVsIHdhczpcbiAgICpcbiAgICoge1xuICAgKiAgIGZvbzogJ2JhcidcbiAgICogfVxuICAgKlxuICAgKiBhbmQgd2UgcGFzcyBcImkgYW0gZm9vIHtmb299XCIsIHRoZSByZXN1bHQgd291bGQgYmU6XG4gICAqXG4gICAqIFwiaSBhbSBmb28gYmFyXCJcbiAgICpcbiAgICogd2UgY2FuIGFsc28gdXNlIG1vbWVudCB0byBwYXJzZSBkYXRlcywgZm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBjcmVhdGVkOiBcIjIwMjItMDEtMDFUMDA6MDA6MDArMDAwMFwiXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJ7Y3JlYXRlZHxkYXRlOllZLU1NLUREfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcIjIwMjItMDEtMDFcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgYSBzdHJpbmcgd2l0aCB0aGUgc3ludGF4XG4gICAqIEBwYXJhbSB7UGFyc2VTeW50YXhPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3ludGF4IG9uIHRoaXMgam9iXG4gICAqL1xuICBwYXJzZVN5bnRheChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnNlU3ludGF4T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVab25lT2Zmc2V0OiAwXG4gICAgfVxuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oe1tefV0qfSkvZywgKG1hdGNoOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHN5bnRheCA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5sZW5ndGggLSAxKTtcblxuICAgICAgbGV0IFtrZXksIGZpbHRlcl0gPSBzeW50YXguc3BsaXQoJ3wnKTtcbiAgICAgIGtleSA9IChrZXkgfHwgJycpLnRyaW0oKTtcbiAgICAgIGZpbHRlciA9IChmaWx0ZXIgfHwgJycpLnRyaW0oKVxuXG4gICAgICBsZXQgZmlsdGVyTmFtZSwgZmlsdGVyQXJnOiBzdHJpbmcgPSAnJztcbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRJbmRleCA9IGZpbHRlci5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzcGxpdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXIuc3Vic3RyaW5nKDAsIHNwbGl0SW5kZXgpO1xuICAgICAgICAgIGZpbHRlckFyZyA9IGZpbHRlci5zdWJzdHJpbmcoc3BsaXRJbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXI7XG4gICAgICAgICAgZmlsdGVyQXJnID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyTmFtZSA9IChmaWx0ZXJOYW1lIHx8ICcnKS50cmltKCk7XG4gICAgICAgIGZpbHRlckFyZyA9IChmaWx0ZXJBcmcgfHwgJycpLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IG9iamVjdEtleSA9IHBhdGguc2hpZnQoKSB8fCAnJztcbiAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgIGlmIChvYmplY3RLZXkgPT09ICdqb2InKSB7XG4gICAgICAgIHJlc3VsdCA9ICh0aGlzLmdldFZhbHVlQnlQYXRoKHBhdGgpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgPT09ICdmaWVsZHMnKSB7XG4gICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLmdldEZpZWxkczIoKSkgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKG9iamVjdEtleS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykge1xuICAgICAgICAgIGlmIChvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSBpcyBub3QgcHJlc2VudCBpbiBvcHRpb25zLm9iamVjdGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGdldFZhbHVlQnlQYXRoKHBhdGgsIG9wdGlvbnMub2JqZWN0c1tvYmplY3RLZXldKSB8fCAnJylcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSB3YXMgdXNlZCBidXQgb3B0aW9ucy5vYmplY3QgaXMgbm90IHNldGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG5cbiAgICAgIGlmIChmaWx0ZXJOYW1lICYmIHJlc3VsdCkge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlck5hbWUpIHtcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChyZXN1bHQpXG4gICAgICAgICAgICAgIC51dGNPZmZzZXQob3B0aW9ucy50aW1lWm9uZU9mZnNldClcbiAgICAgICAgICAgICAgLmZvcm1hdChmaWx0ZXJBcmcgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Vua25vd24gZmlsdGVyICVzJywgZmlsdGVyTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkudHJpbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBvdmVycmlkZSB0b0FwaUR0bygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQXBpRHRvKCksXG4gICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlIHx8ICd+JyxcbiAgICAgIGpvYkRhdGU6IHRoaXMuam9iRGF0ZSB8fCAnficsXG4gICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUgfHwgJ34nLFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAgfHwgJ34nLFxuICAgICAgam9iU3RhdHVzOiB0aGlzLmpvYlN0YXR1cyB8fCAnficsXG4gICAgICBhc3NpZ25lZUlkOiB0aGlzLmFzc2lnbmVlSWQgfHwgJ34nLFxuICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQgfHwgMCxcbiAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyB8fCAwLFxuICAgICAgbGFzdEZvcm06IHRoaXMuZm9ybUlkIHx8ICd+J1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -66,7 +66,7 @@ class VasUserModel extends VasBaseModel {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
class VasFireUserModel extends VasUserModel {
|
|
69
|
-
constructor(id, created = '', serverCreated = '', createdBy = '', modified = '', serverModified = '', modifiedBy = '', email, username, accounts, tokens, topics) {
|
|
69
|
+
constructor(id, created = '', serverCreated = '', createdBy = '', modified = '', serverModified = '', modifiedBy = '', email, username, accounts, tokens, topics, language, fullName) {
|
|
70
70
|
super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, email, username);
|
|
71
71
|
this.id = id;
|
|
72
72
|
this.created = created;
|
|
@@ -80,12 +80,14 @@ class VasFireUserModel extends VasUserModel {
|
|
|
80
80
|
this.accounts = accounts;
|
|
81
81
|
this.tokens = tokens;
|
|
82
82
|
this.topics = topics;
|
|
83
|
+
this.language = language;
|
|
84
|
+
this.fullName = fullName;
|
|
83
85
|
}
|
|
84
86
|
static fromDto(dto) {
|
|
85
|
-
return new VasFireUserModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.email || '', dto.username || '', dto.accounts || {}, dto.tokens || [], dto.topics || []);
|
|
87
|
+
return new VasFireUserModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.email || '', dto.username || '', dto.accounts || {}, dto.tokens || [], dto.topics || [], dto.language || '', dto.fullName || '');
|
|
86
88
|
}
|
|
87
89
|
static newUser(uid, displayName, email) {
|
|
88
|
-
return new VasFireUserModel(uid, moment().toISOString(),
|
|
90
|
+
return new VasFireUserModel(uid, moment().toISOString(), moment().toISOString(), uid, moment().toISOString(), moment().toISOString(), uid, email, displayName, {}, [], [], '', '');
|
|
89
91
|
}
|
|
90
92
|
toDto() {
|
|
91
93
|
return {
|
|
@@ -100,7 +102,9 @@ class VasFireUserModel extends VasUserModel {
|
|
|
100
102
|
username: this.username,
|
|
101
103
|
accounts: this.accounts,
|
|
102
104
|
tokens: this.tokens,
|
|
103
|
-
topics: this.topics
|
|
105
|
+
topics: this.topics,
|
|
106
|
+
language: this.language,
|
|
107
|
+
fullName: this.fullName
|
|
104
108
|
};
|
|
105
109
|
}
|
|
106
110
|
/**
|
|
@@ -1553,7 +1557,7 @@ class VasJobModel extends VasRestrictedAccountObjectModel {
|
|
|
1553
1557
|
* @return {object}
|
|
1554
1558
|
*/
|
|
1555
1559
|
toApiDto() {
|
|
1556
|
-
return Object.assign(Object.assign({}, super.toApiDto()), { reference: this.reference || '~', jobDate: this.jobDate || '~', jobType: this.jobType || '~', accessGroup: this.accessGroup || '~', jobStatus: this.jobStatus || '~', assigneeId: this.assigneeId || '~', timeZoneOffset: this.timeZoneOffset || 0, pendingFields: this.pendingFields || 0,
|
|
1560
|
+
return Object.assign(Object.assign({}, super.toApiDto()), { reference: this.reference || '~', jobDate: this.jobDate || '~', jobType: this.jobType || '~', accessGroup: this.accessGroup || '~', jobStatus: this.jobStatus || '~', assigneeId: this.assigneeId || '~', timeZoneOffset: this.timeZoneOffset || 0, pendingFields: this.pendingFields || 0, lastForm: this.formId || '~' });
|
|
1557
1561
|
}
|
|
1558
1562
|
}
|
|
1559
1563
|
|