@decaf-ts/decorator-validation 1.7.13 → 1.7.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/decorator-validation.cjs +69 -46
  2. package/dist/decorator-validation.esm.cjs +69 -46
  3. package/lib/esm/index.d.ts +1 -1
  4. package/lib/esm/index.js +1 -1
  5. package/lib/esm/model/Model.js +6 -4
  6. package/lib/esm/model/validation.js +5 -4
  7. package/lib/esm/validation/Validators/DiffValidator.js +2 -2
  8. package/lib/esm/validation/Validators/EqualsValidator.js +2 -2
  9. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +2 -2
  10. package/lib/esm/validation/Validators/GreaterThanValidator.js +2 -2
  11. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +2 -2
  12. package/lib/esm/validation/Validators/LessThanValidator.js +2 -2
  13. package/lib/esm/validation/Validators/TypeValidator.js +3 -3
  14. package/lib/esm/validation/decorators.d.ts +25 -13
  15. package/lib/esm/validation/decorators.js +51 -31
  16. package/lib/esm/validation/types.d.ts +11 -8
  17. package/lib/esm/validation/types.js +1 -1
  18. package/lib/index.cjs +1 -1
  19. package/lib/index.d.ts +1 -1
  20. package/lib/model/Model.cjs +6 -4
  21. package/lib/model/validation.cjs +5 -4
  22. package/lib/validation/Validators/DiffValidator.cjs +2 -2
  23. package/lib/validation/Validators/EqualsValidator.cjs +2 -2
  24. package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +2 -2
  25. package/lib/validation/Validators/GreaterThanValidator.cjs +2 -2
  26. package/lib/validation/Validators/LessThanOrEqualValidator.cjs +2 -2
  27. package/lib/validation/Validators/LessThanValidator.cjs +2 -2
  28. package/lib/validation/Validators/TypeValidator.cjs +3 -3
  29. package/lib/validation/decorators.cjs +51 -31
  30. package/lib/validation/decorators.d.ts +25 -13
  31. package/lib/validation/types.cjs +1 -1
  32. package/lib/validation/types.d.ts +11 -8
  33. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import "reflect-metadata";
2
- import { DateValidatorOptions, ListValidatorOptions, ValidatorOptions } from "./types";
2
+ import { ComparisonValidatorOptions, DateValidatorOptions, ListValidatorOptions, ValidatorOptions } from "./types";
3
3
  import { Constructor, ModelConstructor } from "../model/types";
4
4
  /**
5
5
  * @description Combined property decorator factory for metadata and attribute marking
@@ -215,76 +215,88 @@ export declare function set(clazz: ModelConstructor<any>, message?: string): (ta
215
215
  * @description Applies the {@link ValidationKeys.EQUALS} validator to ensure the decorated value matches the value of the given property.
216
216
  *
217
217
  * @param {string} propertyToCompare - The name of the property to compare equality against.
218
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.EQUALS] - Custom error message to return if validation fails.
218
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
219
+ * @param {string} [options.label] - The label text displayed in the error message.
220
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.EQUALS] - Custom error message to be returned if validation fails.
219
221
  *
220
222
  * @returns {PropertyDecorator} A property decorator used to register the equality validation metadata.
221
223
  *
222
224
  * @function eq
223
225
  * @category Property Decorators
224
226
  */
225
- export declare function eq(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
227
+ export declare function eq(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
226
228
  /**
227
229
  * @summary Declares that the decorated property must be different from another specified property.
228
230
  * @description Applies the {@link ValidationKeys.DIFF} validator to ensure the decorated value is different from the value of the given property.
229
231
  *
230
232
  * @param {string} propertyToCompare - The name of the property to compare difference against.
231
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.DIFF] - Custom error message to return if validation fails.
233
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
234
+ * @param {string} [options.label] - The label text displayed in the error message.
235
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.DIFF] - Custom error message to be returned if validation fails.
232
236
  *
233
237
  * @returns {PropertyDecorator} A property decorator used to register the difference validation metadata.
234
238
  *
235
239
  * @function diff
236
240
  * @category Property Decorators
237
241
  */
238
- export declare function diff(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
242
+ export declare function diff(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
239
243
  /**
240
244
  * @summary Declares that the decorated property must be less than another specified property.
241
245
  * @description Applies the {@link ValidationKeys.LESS_THAN} validator to ensure the decorated value is less than the value of the given property.
242
246
  *
243
247
  * @param {string} propertyToCompare - The name of the property to compare against.
244
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.LESS_THAN] - Custom error message to return if validation fails.
248
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
249
+ * @param {string} [options.label] - The label text displayed in the error message.
250
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.LESS_THAN] - Custom error message to be returned if validation fails.
245
251
  *
246
252
  * @returns {PropertyDecorator} A property decorator used to register the less than validation metadata.
247
253
  *
248
254
  * @function lt
249
255
  * @category Property Decorators
250
256
  */
251
- export declare function lt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
257
+ export declare function lt(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
252
258
  /**
253
259
  * @summary Declares that the decorated property must be equal or less than another specified property.
254
260
  * @description Applies the {@link ValidationKeys.LESS_THAN_OR_EQUAL} validator to ensure the decorated value is equal or less than the value of the given property.
255
261
  *
256
262
  * @param {string} propertyToCompare - The name of the property to compare against.
257
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.LESS_THAN_OR_EQUAL] - Custom error message to return if validation fails.
263
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
264
+ * @param {string} [options.label] - The label text displayed in the error message.
265
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.LESS_THAN_OR_EQUAL] - Custom error message to be returned if validation fails.
258
266
  *
259
267
  * @returns {PropertyDecorator} A property decorator used to register the less than or equal validation metadata.
260
268
  *
261
269
  * @function lte
262
270
  * @category Property Decorators
263
271
  */
264
- export declare function lte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
272
+ export declare function lte(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
265
273
  /**
266
274
  * @summary Declares that the decorated property must be greater than another specified property.
267
275
  * @description Applies the {@link ValidationKeys.GREATER_THAN} validator to ensure the decorated value is greater than the value of the given property.
268
276
  *
269
277
  * @param {string} propertyToCompare - The name of the property to compare against.
270
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.GREATER_THAN] - Custom error message to return if validation fails.
278
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
279
+ * @param {string} [options.label] - The label text displayed in the error message.
280
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.GREATER_THAN] - Custom error message to be returned if validation fails.
271
281
  *
272
282
  * @returns {PropertyDecorator} A property decorator used to register the greater than validation metadata.
273
283
  *
274
284
  * @function gt
275
285
  * @category Property Decorators
276
286
  */
277
- export declare function gt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
287
+ export declare function gt(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
278
288
  /**
279
289
  * @summary Declares that the decorated property must be equal or greater than another specified property.
280
290
  * @description Applies the {@link ValidationKeys.GREATER_THAN_OR_EQUAL} validator to ensure the decorated value is equal or greater than the value of the given property.
281
291
  *
282
292
  * @param {string} propertyToCompare - The name of the property to compare against.
283
- * @param {string} [message=DEFAULT_ERROR_MESSAGES.GREATER_THAN_OR_EQUAL] - Custom error message to return if validation fails.
293
+ * @param {ComparisonValidatorOptions} options - Options for the validator.
294
+ * @param {string} [options.label] - The label text displayed in the error message.
295
+ * @param {string} [options.message=DEFAULT_ERROR_MESSAGES.GREATER_THAN_OR_EQUAL] - Custom error message to be returned if validation fails.
284
296
  *
285
297
  * @returns {PropertyDecorator} A property decorator used to register the greater than or equal validation metadata.
286
298
  *
287
299
  * @function gte
288
300
  * @category Property Decorators
289
301
  */
290
- export declare function gte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
302
+ export declare function gte(propertyToCompare: string, options: Omit<ComparisonValidatorOptions, "async" | "description">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const Validators_1 = require("./Validators/index.cjs");
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICogQHByb3BlcnR5IHtib29sZWFufSBhc3luYyAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWxpZGF0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWNvcmF0b3IgcGVyZm9ybXMgYXN5bmNocm9ub3VzIHZhbGlkYXRpb24gbG9naWMuXG4gKiBVc2UgYHRydWVgIHdoZW4gdGhlIHZhbGlkYXRvciByZXR1cm5zIGEgUHJvbWlzZSwgYW5kIGBmYWxzZWAgd2hlbiB0aGUgdmFsaWRhdGlvbiBpcyBzeW5jaHJvbm91cy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25NZXRhZGF0YSA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcbiAgYXJncz86IGFueVtdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG4gIGFzeW5jOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBwcm9wZXJ0eS1sZXZlbCB2YWxpZGF0aW9uIGRlY29yYXRvciBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgdGhhdCBhc3NvY2lhdGVzIGEgcHJvcGVydHkgd2l0aCBpdHMgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLlxuICogVGhpcyB0eXBlIGlzIHVzZWQgdG8gdHJhY2sgd2hpY2ggZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0byBhIHNwZWNpZmljIHByb3BlcnR5IGR1cmluZyB2YWxpZGF0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN5bWJvbH0gcHJvcCAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9yIHN5bWJvbCB0aGF0IHRoZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIHRvXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW119IGRlY29yYXRvcnMgLSBBcnJheSBvZiBkZWNvcmF0b3IgZGVmaW5pdGlvbnMgYXBwbGllZCB0byB0aGUgcHJvcGVydHlcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uID0ge1xuICBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7XG4gIGRlY29yYXRvcnM6IFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW107XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgaW5kaXZpZHVhbCB2YWxpZGF0aW9uIGRlY29yYXRvciBtZXRhZGF0YVxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBEZWNvcmF0b3JNZXRhZGF0YSB0eXBlIHdpdGggdmFsaWRhdGlvbi1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICogVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIG1ldGFkYXRhIGZvciBhIHNpbmdsZSB2YWxpZGF0aW9uIGRlY29yYXRvciBhcHBsaWVkIHRvIGEgcHJvcGVydHkuXG4gKlxuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb259IHByb3BzIC0gVGhlIHZhbGlkYXRpb24gZWxlbWVudCBwcm9wZXJ0aWVzIGFuZCBjb25maWd1cmF0aW9uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uID0gRGVjb3JhdG9yTWV0YWRhdGEgJiB7XG4gIHByb3BzOiBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb247XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQGludGVyZmFjZSBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2VdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYXN5bmMgLSBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsaWRhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVjb3JhdG9yIHBlcmZvcm1zIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGxvZ2ljLlxuICogVXNlIGB0cnVlYCB3aGVuIHRoZSB2YWxpZGF0b3IgcmV0dXJucyBhIFByb21pc2UsIGFuZCBgZmFsc2VgIHdoZW4gdGhlIHZhbGlkYXRpb24gaXMgc3luY2hyb25vdXMuXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvck9wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYXN5bmM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVUkwgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBVUkwgdmFsaWRhdGlvbiwgaW5jbHVkaW5nIGFsbG93ZWQgVVJMIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KHN0cmluZ3xzdHJpbmdbXXx7IG5hbWU6IHN0cmluZyB9KX0gdHlwZXMgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgVVJMIHR5cGVzIG9yIHBhdHRlcm5zXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHR5cGUgdmFsaWRhdGlvbiwgc3BlY2lmeWluZyBhbGxvd2VkIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGVzIC0gU3BlY2lmaWVzIHRoZSBhbGxvd2VkIGRhdGEgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbiAgY3VzdG9tVHlwZXM/OiAoc3RyaW5nIHwgKCgpID0+IHN0cmluZykpW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0ZXAgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBzdGVwIHZhbGlkYXRpb24sIHNwZWNpZnlpbmcgdGhlIHN0ZXAgaW5jcmVtZW50XG4gKiBAaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLlNURVBdIC0gVGhlIHN0ZXAgdmFsdWUgZm9yIG51bWVyaWNhbCB2YWxpZGF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5TVEVQXTogbnVtYmVyIHwgc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgcGF0dGVybiB2YWxpZGF0aW9uIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqIEBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KFJlZ0V4cHxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0gLSBUaGUgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXT86IFJlZ0V4cCB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSB2YWx1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1pbmltdW0gdmFsdWUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNaW5WYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8RGF0ZXxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuTUlOXSAtIFRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWluVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOXTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSBsZW5ndGggdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtaW5pbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF0gLSBUaGUgbWluaW11bSBhbGxvd2VkIGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXTogbnVtYmVyO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIHZhbHVlIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1heFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG51bWJlcnxEYXRlfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5NQVhdIC0gVGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhdOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1heGltdW0gbGVuZ3RoIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXSAtIFRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdOiBudW1iZXI7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpc3QgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBsaXN0IHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNsYXp6IC0gQXJyYXkgb2YgYWxsb3dlZCBjbGFzcyBuYW1lcyBvciB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBjbGF6ejogKHN0cmluZyB8ICgoKSA9PiBDb25zdHJ1Y3Rvcjxhbnk+KSlbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVW5pcXVlIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgdW5pcXVlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgVW5pcXVlVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gdW5pcXVlIC0gQXJyYXkgb2YgYWxsb3dlZCBjbGFzcyBuYW1lcyBvciB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5VTklRVUVdOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGF0ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIGRhdGUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBEYXRlVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdIC0gVGhlIGV4cGVjdGVkIGRhdGUgZm9ybWF0IHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkZPUk1BVF0/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXF1YWxzVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuRVFVQUxTXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5ESUZGXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTEVTU19USEFOXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuT3JFcXVhbFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl9PUl9FUVVBTF06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdOiBzdHJpbmc7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICogQHByb3BlcnR5IHtib29sZWFufSBhc3luYyAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWxpZGF0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWNvcmF0b3IgcGVyZm9ybXMgYXN5bmNocm9ub3VzIHZhbGlkYXRpb24gbG9naWMuXG4gKiBVc2UgYHRydWVgIHdoZW4gdGhlIHZhbGlkYXRvciByZXR1cm5zIGEgUHJvbWlzZSwgYW5kIGBmYWxzZWAgd2hlbiB0aGUgdmFsaWRhdGlvbiBpcyBzeW5jaHJvbm91cy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25NZXRhZGF0YSA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcbiAgYXJncz86IGFueVtdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG4gIGFzeW5jOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBwcm9wZXJ0eS1sZXZlbCB2YWxpZGF0aW9uIGRlY29yYXRvciBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgdGhhdCBhc3NvY2lhdGVzIGEgcHJvcGVydHkgd2l0aCBpdHMgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLlxuICogVGhpcyB0eXBlIGlzIHVzZWQgdG8gdHJhY2sgd2hpY2ggZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0byBhIHNwZWNpZmljIHByb3BlcnR5IGR1cmluZyB2YWxpZGF0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN5bWJvbH0gcHJvcCAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9yIHN5bWJvbCB0aGF0IHRoZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIHRvXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW119IGRlY29yYXRvcnMgLSBBcnJheSBvZiBkZWNvcmF0b3IgZGVmaW5pdGlvbnMgYXBwbGllZCB0byB0aGUgcHJvcGVydHlcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uID0ge1xuICBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7XG4gIGRlY29yYXRvcnM6IFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW107XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgaW5kaXZpZHVhbCB2YWxpZGF0aW9uIGRlY29yYXRvciBtZXRhZGF0YVxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBEZWNvcmF0b3JNZXRhZGF0YSB0eXBlIHdpdGggdmFsaWRhdGlvbi1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICogVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIG1ldGFkYXRhIGZvciBhIHNpbmdsZSB2YWxpZGF0aW9uIGRlY29yYXRvciBhcHBsaWVkIHRvIGEgcHJvcGVydHkuXG4gKlxuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb259IHByb3BzIC0gVGhlIHZhbGlkYXRpb24gZWxlbWVudCBwcm9wZXJ0aWVzIGFuZCBjb25maWd1cmF0aW9uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uID0gRGVjb3JhdG9yTWV0YWRhdGEgJiB7XG4gIHByb3BzOiBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb247XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQGludGVyZmFjZSBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2VdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYXN5bmMgLSBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsaWRhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVjb3JhdG9yIHBlcmZvcm1zIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGxvZ2ljLlxuICogVXNlIGB0cnVlYCB3aGVuIHRoZSB2YWxpZGF0b3IgcmV0dXJucyBhIFByb21pc2UsIGFuZCBgZmFsc2VgIHdoZW4gdGhlIHZhbGlkYXRpb24gaXMgc3luY2hyb25vdXMuXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvck9wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYXN5bmM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVUkwgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBVUkwgdmFsaWRhdGlvbiwgaW5jbHVkaW5nIGFsbG93ZWQgVVJMIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KHN0cmluZ3xzdHJpbmdbXXx7IG5hbWU6IHN0cmluZyB9KX0gdHlwZXMgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgVVJMIHR5cGVzIG9yIHBhdHRlcm5zXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHR5cGUgdmFsaWRhdGlvbiwgc3BlY2lmeWluZyBhbGxvd2VkIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGUgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgZGF0YSB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICB0eXBlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG4gIGN1c3RvbVR5cGVzPzogKHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpKVtdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGVwIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3Igc3RlcCB2YWxpZGF0aW9uLCBzcGVjaWZ5aW5nIHRoZSBzdGVwIGluY3JlbWVudFxuICogQGludGVyZmFjZSBTdGVwVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsobnVtYmVyfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5TVEVQXSAtIFRoZSBzdGVwIHZhbHVlIGZvciBudW1lcmljYWwgdmFsaWRhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuU1RFUF06IG51bWJlciB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGF0dGVybiB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHBhdHRlcm4gdmFsaWRhdGlvbiB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zXG4gKiBAaW50ZXJmYWNlIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhSZWdFeHB8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dIC0gVGhlIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0/OiBSZWdFeHAgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1pbmltdW0gdmFsdWUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtaW5pbXVtIHZhbHVlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWluVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsobnVtYmVyfERhdGV8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLk1JTl0gLSBUaGUgbWluaW11bSBhbGxvd2VkIHZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1JTl06IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1pbmltdW0gbGVuZ3RoIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWluaW11bSBsZW5ndGggdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW1ZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEhdIC0gVGhlIG1pbmltdW0gYWxsb3dlZCBsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF06IG51bWJlcjtcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1heGltdW0gdmFsdWUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8RGF0ZXxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuTUFYXSAtIFRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF4VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUFYXTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWF4aW11bSBsZW5ndGggdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF0gLSBUaGUgbWF4aW11bSBhbGxvd2VkIGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXTogbnVtYmVyO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBMaXN0IHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbGlzdCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIExpc3RWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBjbGF6eiAtIEFycmF5IG9mIGFsbG93ZWQgY2xhc3MgbmFtZXMgb3IgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgY2xheno6IChzdHJpbmcgfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55PikpW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFVuaXF1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHVuaXF1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIFVuaXF1ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHVuaXF1ZSAtIEFycmF5IG9mIGFsbG93ZWQgY2xhc3MgbmFtZXMgb3IgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuVU5JUVVFXTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERhdGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBkYXRlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbVmFsaWRhdGlvbktleXMuRk9STUFUXSAtIFRoZSBleHBlY3RlZCBkYXRlIGZvcm1hdCBwYXR0ZXJuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5FUVVBTFNdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5ESUZGXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zXG4gIGV4dGVuZHMgQ29tcGFyaXNvblZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTEVTU19USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyZWF0ZXJUaGFuVmFsaWRhdG9yT3B0aW9uc1xuICBleHRlbmRzIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zXG4gIGV4dGVuZHMgQ29tcGFyaXNvblZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuIl19
@@ -161,12 +161,12 @@ export interface URLValidatorOptions extends ValidatorOptions {
161
161
  * @description Type validation options interface
162
162
  * @summary Defines options for type validation, specifying allowed types
163
163
  * @interface TypeValidatorOptions
164
- * @property {(string|string[]|{ name: string })} types - Specifies the allowed data types
164
+ * @property {(string|string[]|{ name: string })} type - Specifies the allowed data types
165
165
  * @memberOf module:decorator-validation
166
166
  * @category Validation
167
167
  */
168
168
  export interface TypeValidatorOptions extends ValidatorOptions {
169
- types: string | string[] | {
169
+ type: string | string[] | {
170
170
  name: string;
171
171
  };
172
172
  customTypes?: (string | (() => string))[];
@@ -276,21 +276,24 @@ export interface UniqueValidatorOptions extends ValidatorOptions {
276
276
  export interface DateValidatorOptions extends ValidatorOptions {
277
277
  [ValidationKeys.FORMAT]?: string;
278
278
  }
279
- export interface EqualsValidatorOptions extends ValidatorOptions {
279
+ export interface ComparisonValidatorOptions extends ValidatorOptions {
280
+ label?: string;
281
+ }
282
+ export interface EqualsValidatorOptions extends ComparisonValidatorOptions {
280
283
  [ValidationKeys.EQUALS]: string;
281
284
  }
282
- export interface DiffValidatorOptions extends ValidatorOptions {
285
+ export interface DiffValidatorOptions extends ComparisonValidatorOptions {
283
286
  [ValidationKeys.DIFF]: string;
284
287
  }
285
- export interface LessThanValidatorOptions extends ValidatorOptions {
288
+ export interface LessThanValidatorOptions extends ComparisonValidatorOptions {
286
289
  [ValidationKeys.LESS_THAN]: string;
287
290
  }
288
- export interface LessThanOrEqualValidatorOptions extends ValidatorOptions {
291
+ export interface LessThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
289
292
  [ValidationKeys.LESS_THAN_OR_EQUAL]: string;
290
293
  }
291
- export interface GreaterThanValidatorOptions extends ValidatorOptions {
294
+ export interface GreaterThanValidatorOptions extends ComparisonValidatorOptions {
292
295
  [ValidationKeys.GREATER_THAN]: string;
293
296
  }
294
- export interface GreaterThanOrEqualValidatorOptions extends ValidatorOptions {
297
+ export interface GreaterThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
295
298
  [ValidationKeys.GREATER_THAN_OR_EQUAL]: string;
296
299
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/decorator-validation",
3
- "version": "1.7.13",
3
+ "version": "1.7.15",
4
4
  "description": "simple decorator based validation engine",
5
5
  "type": "module",
6
6
  "exports": {