@mnemonica/tactica 0.4.6 → 0.4.8
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/README.md +4 -2
- package/lib/analyzer.d.ts +7 -3
- package/lib/analyzer.js +33 -10
- package/lib/cli.js +20 -4
- package/lib/types.d.ts +10 -9
- package/lib/types.js +1 -1
- package/lib/writer.d.ts +6 -4
- package/lib/writer.js +14 -12
- package/package.json +6 -6
package/lib/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcblx0LyoqIEdlbmVyYXRlIGdsb2JhbCBhdWdtZW50YXRpb24gaW5zdGVhZCBvZiBtb2R1bGUgYXVnbWVudGF0aW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuXHRnbG9iYWxBdWdtZW50YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcblx0LyoqIFRydWUgaWYgdGhpcyBpcyBhIGdldHRlciBwcm9wZXJ0eSAocmVhZG9ubHkpICovXG5cdHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlciBpbmZvIGZvciBUeXBlUmVnaXN0cnkgc2lnbmF0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvclBhcmFtSW5mbyB7XG5cdC8qKiBQYXJhbWV0ZXIgbmFtZSAoZS5nLiwgXCJ1c2FnZXNcIiwgXCJkYXRhXCIsIFwiY29uZmlnXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlIHN0cmluZyAtIGNhbiBiZSBhIHNpbXBsZSB0eXBlIG9yIGV4cGFuZGVkIG9iamVjdCBsaXRlcmFsICovXG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBIb3cgdGhlIHBhcmFtZXRlciByZWNlaXZlcyBpdHMgdmFsdWUuIE9ubHkgJ3Jlc3QnIGlzIGVtaXR0ZWQgKFRTXG5cdCAqIGAuLi54c2ApOyBhYnNlbnQgbWVhbnMgYW4gb3JkaW5hcnkgcGFyYW1ldGVyLiBNaXJyb3JzIHRoZSBga2luZGBcblx0ICogdm9jYWJ1bGFyeSBvZiB0aGUgbGV0aGUgZGVmaW5pdGlvbnMgY29udHJhY3QgKGRlZmluaXRpb25zLmpzb24gYXJncykuXG5cdCAqL1xuXHRraW5kPzogJ3Jlc3QnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVOb2RlIHtcblx0LyoqIFR5cGUgbmFtZSAoZS5nLiwgXCJTZWNvbmRUeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgcGF0aCAoZS5nLiwgXCJGaXJzdFR5cGUuU2Vjb25kVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogUHJvcGVydGllcyBkZWZpbmVkIGluIHRoaXMgdHlwZSdzIGNvbnN0cnVjdG9yICovXG5cdHByb3BlcnRpZXM6IE1hcDxzdHJpbmcsIFByb3BlcnR5SW5mbz47XG5cdC8qKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIChmb3IgVHlwZVJlZ2lzdHJ5IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSkgKi9cblx0Y29uc3RydWN0b3JQYXJhbXM/OiBDb25zdHJ1Y3RvclBhcmFtSW5mb1tdO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBjb25zdHJ1Y3QgaGFuZGxlciBpcyBhbiBhc3luYyBmdW5jdGlvbi9hcnJvdyAoZGV0ZWN0ZWRcblx0ICogc3ludGFjdGljYWxseSBieSB0aGUgYXN5bmMgbW9kaWZpZXIpLiBFbWl0dGVkIGNvbnN0cnVjdG9yIHNoYXBlcyB0aGVuXG5cdCAqIHJlc29sdmUgdG8gUHJvbWlzZTxJbnN0YW5jZVR5cGU+LiBBc3luYyBDTEFTU0VTIGFyZSBuZXZlciBmbGFnZ2VkIOKAlFxuXHQgKiB0aGV5IGFyZSB0eXBlZCBieSB0aGUgdXNlciBpbiB1c2VybGFuZCAoZG9jdW1lbnRlZCBpbiBBR0VOVFMubWQpLlxuXHQgKi9cblx0aXNBc3luYz86IGJvb2xlYW47XG5cdC8qKiBQYXJlbnQgdHlwZSBub2RlICovXG5cdHBhcmVudD86IFR5cGVOb2RlO1xuXHQvKiogQ2hpbGQgdHlwZXMgKi9cblx0Y2hpbGRyZW46IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIFNvdXJjZSBmaWxlIHBhdGggKi9cblx0c291cmNlRmlsZTogc3RyaW5nO1xuXHQvKiogTGluZSBudW1iZXIgaW4gc291cmNlICovXG5cdGxpbmU6IG51bWJlcjtcblx0LyoqIENvbHVtbiBudW1iZXIgaW4gc291cmNlICovXG5cdGNvbHVtbjogbnVtYmVyO1xuXHQvKiogQ29uc3RydWN0b3IgZnVuY3Rpb24gbmFtZSBvciBjbGFzcyBuYW1lICovXG5cdGNvbnN0cnVjdG9yTmFtZT86IHN0cmluZztcblx0LyoqIENvbGxlY3Rpb24gaWRlbnRpZmllciBpZiB0aGUgdHlwZSBiZWxvbmdzIHRvIGEgY3VzdG9tIGNvbGxlY3Rpb24gKHVuZGVmaW5lZCA9IGRlZmF1bHQvZ2xvYmFsIHJlZ2lzdHJ5KSAqL1xuXHRjb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG5cdC8qKiBSZWdpc3RyeSBpbnRlcmZhY2UgbmFtZSBmb3IgY3VzdG9tIGNvbGxlY3Rpb25zIHVzaW5nIE9wdGlvbiBCICh1c2VyLXByb3ZpZGVkIHJlZ2lzdHJ5IGludGVyZmFjZSkgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2VOYW1lPzogc3RyaW5nO1xuXHQvKipcblx0ICogU291cmNlIGZpbGUgb2YgdGhlIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIGNhbGwg4oCUIHRoZSBtb2R1bGUgdGhlXG5cdCAqIE9wdGlvbiBCIHJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiBtdXN0IHRhcmdldCAodGhlIGludGVyZmFjZSBpc1xuXHQgKiBjb25maXJtZWQgZGVjbGFyZWQgdGhlcmUpXG5cdCAqL1xuXHRjb2xsZWN0aW9uU291cmNlRmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlR3JhcGgge1xuXHQvKiogUm9vdCB0eXBlcywga2V5ZWQgYnkgZnVsbCBwYXRoIChjdXN0b20tY29sbGVjdGlvbiByb290cyBjYXJyeSB0aGUgYGNvbGxlY3Rpb25JZDo6YCBwcmVmaXgpICovXG5cdHJvb3RzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBbGwgdHlwZXMgYnkgZnVsbCBwYXRoICovXG5cdGFsbFR5cGVzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBZGQgYSByb290IHR5cGUgKi9cblx0YWRkUm9vdChub2RlOiBUeXBlTm9kZSk6IHZvaWQ7XG5cdC8qKiBGaW5kIGEgdHlwZSBieSBmdWxsIHBhdGggKi9cblx0ZmluZFR5cGUoZnVsbFBhdGg6IHN0cmluZyk6IFR5cGVOb2RlIHwgdW5kZWZpbmVkO1xuXHQvKiogR2V0IGFsbCB0eXBlcyBhcyBhcnJheSAqL1xuXHRnZXRBbGxUeXBlcygpOiBUeXBlTm9kZVtdO1xuXHQvKiogQ2xlYXIgdGhlIGdyYXBoICovXG5cdGNsZWFyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZVJlc3VsdCB7XG5cdC8qKiBUeXBlcyBmb3VuZCBpbiB0aGUgYW5hbHlzaXMgKi9cblx0dHlwZXM6IFR5cGVOb2RlW107XG5cdC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgKi9cblx0ZXJyb3JzOiBBbmFseXplRXJyb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplRXJyb3Ige1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGZpbGU6IHN0cmluZztcblx0bGluZTogbnVtYmVyO1xuXHRjb2x1bW46IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRUeXBlcyB7XG5cdC8qKiBDb250ZW50IG9mIHRoZSAuZC50cyBmaWxlICovXG5cdGNvbnRlbnQ6IHN0cmluZztcblx0LyoqIFR5cGVzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgKi9cblx0dHlwZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSBvd24gZmllbGQgb2YgYSB0eXBlLCBpbiBkZWNsYXJhdGlvbiBvcmRlciAoZGVmaW5pdGlvbnMuanNvbiBgZmllbGRzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gYHR5cGVgIGlzIHNvdXJjZS1sYW5ndWFnZSB0ZXh0IGZvciBkaXNwbGF5IG9ubHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkZpZWxkIHtcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdG9wdGlvbmFsOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uIGBhcmdzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gVGhlIHJlY2VpdmVyIChgdGhpc2ApIGlzIG5ldmVyIGxpc3RlZC4gYG9wdGlvbmFsYCBhYnNlbnRcbiAqIG1lYW5zIGZhbHNlOyBhIHJlc3QgcGFyYW1ldGVyIGNhcnJpZXMgYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkFyZyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbD86IGJvb2xlYW47XG5cdGtpbmQ/OiAncmVzdCc7XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uSW5mbyB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogSG93IHR5cGUgd2FzIGNyZWF0ZWQ6ICdkZWZpbmUnIG9yICdkZWNvcmF0ZScgKi9cblx0a2luZDogJ2RlZmluZScgfCAnZGVjb3JhdGUnO1xuXHQvKiogUGFyZW50IHR5cGUgZnVsbCBwYXRoLCBudWxsIGlmIHJvb3QgKi9cblx0cGFyZW50OiBzdHJpbmcgfCBudWxsO1xuXHQvKiogc3RyaWN0Q2hhaW4gY29uZmlnIG9wdGlvbiAqL1xuXHRzdHJpY3RDaGFpbjogYm9vbGVhbjtcblx0LyoqIGJsb2NrRXJyb3JzIGNvbmZpZyBvcHRpb24gKi9cblx0YmxvY2tFcnJvcnM6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSdzIG93biBmaWVsZHMgaW4gZGVjbGFyYXRpb24gb3JkZXIgKGRlZmluaXRpb25zLmpzb24gY29udHJhY3QsXG5cdCAqIGxldGhlIGBmaWVsZGApLiBBYnNlbnQgbWVhbnMgbm90IHJlY29yZGVkOyBhbiBlbXB0eSBhcnJheSBtZWFucyB0aGVcblx0ICogdHlwZSBoYXMgbm8gZmllbGRzLlxuXHQgKi9cblx0ZmllbGRzPzogRGVmaW5pdGlvbkZpZWxkW107XG5cdC8qKlxuXHQgKiBUaGUgY29uc3RydWN0b3IncyBwYXJhbWV0ZXJzIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uXG5cdCAqIGNvbnRyYWN0LCBsZXRoZSBgYXJnYCkuIEFic2VudCBtZWFucyBub3QgcmVjb3JkZWQ7IGFuIGVtcHR5IGFycmF5XG5cdCAqIG1lYW5zIHRoZSBjb25zdHJ1Y3RvciB0YWtlcyBub25lLlxuXHQgKi9cblx0YXJncz86IERlZmluaXRpb25BcmdbXTtcbn1cblxuLyoqXG4gKiBVc2FnZSBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZUluZm8ge1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBLaW5kIG9mIHVzYWdlOiBpbnN0YW50aWF0aW9uLCB0eXBlQW5ub3RhdGlvbiwgcHJvcGVydHlBY2Nlc3MsIGxvb2t1cCwgcmVmZXJlbmNlICovXG5cdGtpbmQ6ICdpbnN0YW50aWF0aW9uJyB8ICd0eXBlQW5ub3RhdGlvbicgfCAncHJvcGVydHlBY2Nlc3MnIHwgJ2xvb2t1cCcgfCAncmVmZXJlbmNlJztcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBTY29wZSBob2xkaW5nIHRoaXMgdXNhZ2UgKExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZDogbW9kdWxlIHNjb3BlIGlzIHRoZVxuXHQgKiBmaWxlIHBhdGgsIGZ1bmN0aW9uIHNjb3BlcyBhcmUgZmlsZTpsaW5lOmNvbCkuIEFkZGl0aXZlOyBhYnNlbnQgd2hlbiB0aGVcblx0ICogdXNhZ2Ugc2l0cyBvdXRzaWRlIHRyYWNrZWQgZmlsZXMuXG5cdCAqL1xuXHRob2xkZXJTY29wZUlkPzogc3RyaW5nO1xuXHQvKipcblx0ICogQ29uc3RydWN0b3IgZXhwcmVzc2lvbiB0ZXh0IGF0IGFuIGluc3RhbnRpYXRpb24gc2l0ZSAoJ1RoaW5nJyxcblx0ICogJ3VzZXIuQWRtaW5FbnRpdHknLCAnVDInIGZvciBhIGxvb2t1cCBhbGlhcykuIEFkZGl0aXZlOyBzZXQgb25seSBvblxuXHQgKiBraW5kICdpbnN0YW50aWF0aW9uJy4gRmVlZHMgQ3JlYXRpb25BbmNob3IuY29uc3RydWN0b3JUZXh0IChQaGFzZSAzKS5cblx0ICovXG5cdGNvbnN0cnVjdG9yVGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgZGVmaW5pdGlvbnMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25zSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIERlZmluaXRpb25JbmZvPjtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgdXNhZ2VzLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHR1c2FnZXM6IFJlY29yZDxzdHJpbmcsIFVzYWdlSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBFRFMgKEV4ZWN1dGlvbiBEYXRhIFN0b3JhZ2UpIGtpbmQgZm9yIHRyYWNraW5nIGV4ZWN1dGlvbiBmbG93IHBhdHRlcm5zXG4gKi9cbmV4cG9ydCB0eXBlIEVEU0tpbmQgPVxuXHR8ICd3cmFwJ1xuXHR8ICdjb250ZXh0Q29uc3VtZSdcblx0fCAnaG9va0F0dGFjaCc7XG5cbi8qKlxuICogRURTIGluZm8gZm9yIGV4ZWN1dGlvbiBkYXRhIGZsb3cgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFRFNJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiBFRFMgdXNhZ2UgKi9cblx0a2luZDogRURTS2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBSZXNvbHZlZCB0YXJnZXQgdHlwZSBpZiBkZXRlY3RhYmxlICovXG5cdHRhcmdldFR5cGU/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBFbmNsb3NpbmcgbW5lbW9uaWNhIHR5cGUgcGF0aCAoZGVmaW5lL2xhenkgaGFuZGxlciBvciBkZWNvcmF0ZWQgY2xhc3MpO1xuXHQgKiBmb3Igd3JhcCBzaXRlcyBvdXRzaWRlIGFueSBoYW5kbGVyLCBhdHRyaWJ1dGVkIHRocm91Z2ggdGhlIGluc3RhbmNlL2NvbnRleHRcblx0ICogYXJndW1lbnQgKHRyYWNrZWQgYXNzaWdubWVudCBvciBwYXJhbWV0ZXIgYW5ub3RhdGlvbiksIHRoZW4gaW5oZXJpdGVkIGRvd25cblx0ICogdGhlIHdyYXAgZ2VuZXJhdGlvbiBjaGFpbiAoYHZpYWApXG5cdCAqL1xuXHRzY29wZT86IHN0cmluZztcblx0LyoqIExvY2F0aW9uIG9mIHRoZSBlbmNsb3Npbmcgd3JhcCBzaXRlIHdob3NlIHJ1bnRpbWUgd3JhcHBpbmcgY2F1c2VkIHRoaXMgZW50cnkgKi9cblx0dmlhPzogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGhzIGluc3RhbnRpYXRlZCBpbnNpZGUgdGhlIHdyYXBwZWQgYm9keSDigJQgZ3VhcmFudGVlZCBwYXRoIGhpdHMgKi9cblx0Y3JlYXRlc1R5cGVzPzogc3RyaW5nW107XG5cdC8qKiBMYWJlbCBzdHJpbmcgbGl0ZXJhbCBwYXNzZWQgdG8gd3JhcChmbiwg4oCmLCAnbGFiZWwnKSB3aGVuIHN0YXRpY2FsbHkgdmlzaWJsZSAqL1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgKHNjb3Blcy5qc29uKSBvZiB0aGUgd3JhcHBlZCBjYWxsYmFjaydzIG93biBzY29wZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdGNhbGxiYWNrU2NvcGVJZD86IHN0cmluZztcblx0LyoqIElkZW50aWZpZXIgcGFzc2VkIGFzIHRoZSBpbnN0YW5jZS9jb250ZXh0IGFyZ3VtZW50ICgndXNlcicpLCB3aGVuIGl0IGlzIG9uZSAqL1xuXHRpbnN0YW5jZUFyZz86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgb2YgdGhlIHNjb3BlIGhvbGRpbmcgdGhlIHdyYXAgY2FsbCBzaXRlIOKAlCBqb2lucyB0byB0aGUgY3JlYXRpb24gZ3JhcGggKi9cblx0c2NvcGVJZD86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSBmdWxsUGF0aCBvZiB0aGUgaW5zdGFuY2UgYXJndW1lbnQsIHJlc29sdmVkIHRocm91Z2ggc2NvcGUgdmFyaWFibGVzICovXG5cdHdyYXBzVHlwZVBhdGg/OiBzdHJpbmc7XG5cdC8qKiBXcmFwLWZhbWlseSBmdW5jdGlvbiBuYW1lICgnd3JhcCcgfCAnd3JhcENvbnN0cnVjdG9yQXJnJyB8IOKApikg4oCUIGpvaW5zIHRoZVxuXHQgKiAgY2FsbCBzaXRlIHRvIGRpdmUncyBlbmdpbmUga25vdCBpbiBncmFwaCBjb25zdW1lcnMgKi9cblx0Zm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGVkcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZWRzOiBSZWNvcmQ8c3RyaW5nLCBFRFNJbmZvW10+O1xufVxuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBraW5kIGZvciBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZHNcbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uS2luZCA9XG5cdHwgJ2ludGVyY2VwdG9yJ1xuXHR8ICdndWFyZCdcblx0fCAncGlwZSdcblx0fCAnZmlsdGVyJ1xuXHR8ICdtaWRkbGV3YXJlJztcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gc2NvcGU6IHdoZXJlIHRoZSBwb2ludCBhdHRhY2hlcy5cbiAqICdnbG9iYWwnIGZvciBwcm92aWRlci10b2tlbiByZWdpc3RyYXRpb25zLCAnbW9kdWxlJyBmb3IgbWlkZGxld2FyZSB3aXJlZFxuICogdmlhIGNvbnN1bWVyLmFwcGx5KCkgQU5EIGZvciBiYXJlIGhlcml0YWdlIGRlY2xhcmF0aW9ucyB3aG9zZSBhdHRhY2htZW50XG4gKiBpcyBzdGF0aWNhbGx5IHVua25vd24sIGBjb250cm9sbGVyOk5hbWVgIC8gYG1ldGhvZDpDbGFzcy5tZXRob2RgIGZvclxuICogZGVjb3JhdG9yLXNjb3BlZCBhdHRhY2htZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uU2NvcGUgPVxuXHR8ICdnbG9iYWwnXG5cdHwgJ21vZHVsZSdcblx0fCBgY29udHJvbGxlcjoke3N0cmluZ31gXG5cdHwgYG1ldGhvZDoke3N0cmluZ31gO1xuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBwb2ludDogYSBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAoaW50ZXJjZXB0b3IsXG4gKiBndWFyZCwgcGlwZSwgZmlsdGVyLCBtaWRkbGV3YXJlKSBkZXRlY3RlZCBzeW50YWN0aWNhbGx5LiBUaGUgdm9jYWJ1bGFyeVxuICogdGhhdCB0dXJucyBhIHN5bnRhY3RpYyBzaGFwZSBpbnRvIGEgcG9pbnQgY29tZXMgZnJvbSBwbHVnaW5zIOKAlCB3aXRoIG5vXG4gKiBwbHVnaW4gbG9hZGVkLCBubyBwb2ludHMgYXJlIGNvbGxlY3RlZC5cbiAqXG4gKiBEZWR1cGUvc2NvcGUgZGVjaXNpb246IHBvaW50cyBhcmUga2V5ZWQgYnkgKGtpbmQsIGNsYXNzTmFtZSwgbG9jYXRpb24sXG4gKiBzY29wZSkgYW5kIGR1cGxpY2F0ZXMgbWVyZ2UgdGhlaXIgYHRhcmdldHNgLiBBIGNsYXNzIGRldGVjdGVkIGJvdGggYnlcbiAqIGhlcml0YWdlIChhIHBsdWdpbi1saXN0ZWQgYGltcGxlbWVudHNgIGludGVyZmFjZSkgYW5kIGJ5IGEgZGVjb3JhdG9yXG4gKiBzaXRlIHlpZWxkcyBTRVBBUkFURSBlbnRyaWVzIOKAlCB0aGUgY2xhc3MtZGVjbGFyYXRpb24gcG9pbnQga2VlcHMgc2NvcGVcbiAqICdtb2R1bGUnIChhdHRhY2htZW50IHVua25vd24pIHdoaWxlIGVhY2ggcmVnaXN0cmF0aW9uIHNpdGUgY2FycmllcyBpdHNcbiAqIG93biBzY29wZS4gT25lIHBvaW50IHNlcnZpbmcgbXVsdGlwbGUgc2NvcGVzIHZpYSBtZXJnZWQgc2NvcGUgbGlzdHMgd2FzXG4gKiByZWplY3RlZDogY29uc3VtZXJzIChtbmVtb2dyYXBoaWNhIGRpYW1vbmRzKSBrZXkgb2ZmIGEgc2luZ2xlIHNjb3BlIHBlclxuICogcG9pbnQsIGFuZCBzZXBhcmF0ZSBlbnRyaWVzIGtlZXAgdGhhdCBjb250cmFjdCBzaW1wbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1bWVudGF0aW9uUG9pbnQge1xuXHQvKiogS2luZCBvZiBsaWZlY3ljbGUgY3Jvc3Nyb2FkICovXG5cdGtpbmQ6IEluc3RydW1lbnRhdGlvbktpbmQ7XG5cdC8qKiBDbGFzcyBwcm92aWRpbmcgdGhlIGluc3RydW1lbnRhdGlvbiAoZS5nLiwgXCJBdXRoR3VhcmRcIikgKi9cblx0Y2xhc3NOYW1lOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKGNsYXNzIGRlY2xhcmF0aW9uIHdoZW4gZGVjbGFyZWQgaW4tcHJvamVjdCwgZWxzZSB0aGUgcmVnaXN0cmF0aW9uIHNpdGUpICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDb2RlIHNuaXBwZXQ6IHNpZ25hdHVyZSAvIGZpcnN0IGxpbmUsIGxpa2UgRURTIGBjb2RlYCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBXaGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMgKi9cblx0c2NvcGU6IEluc3RydW1lbnRhdGlvblNjb3BlO1xuXHQvKiogQ29udHJvbGxlci9wcm92aWRlciBuYW1lcyB0aGUgcG9pbnQgYXR0YWNoZXMgdG87IGVtcHR5IGZvciBnbG9iYWwgcG9pbnRzICovXG5cdHRhcmdldHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBpbnN0cnVtZW50YXRpb24uanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvbkpzb24ge1xuXHQvKiogU2NoZW1hIHZlcnNpb246IDIgYWRkcyB0aGUgb3B0aW9uYWwgY3JlYXRpb25HcmFwaCBrZXkgKFBoYXNlIDMpICovXG5cdHZlcnNpb246IG51bWJlcjtcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xuXHQvKipcblx0ICogSW5zaWRlLW91dCBjcmVhdGlvbiB3YWxrIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDMpOiB3aGljaFxuXHQgKiBzY29wZXMgY3JlYXRlIG1uZW1vbmljYSBpbnN0YW5jZXMgYW5kIHdobyBjYWxscyB0aGVtLCB3YWxrZWQgb3V0d2FyZCB0b1xuXHQgKiB0aGUgc3RhcnRlcnMuIEFic2VudCB3aGVuIHRoZSB3cml0ZXIgaXMgY2FsbGVkIHdpdGhvdXQgY3JlYXRpb24tZ3JhcGhcblx0ICogZGF0YSAoZGlyZWN0IGxpYnJhcnkgdXNlKTsgYWx3YXlzIHByZXNlbnQgZnJvbSB0aGUgQ0xJLlxuXHQgKi9cblx0Y3JlYXRpb25HcmFwaD86IENyZWF0aW9uR3JhcGg7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGNvbnRyb2wuanNvbiAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjEpOiBgY2FsbGVyc2BcbiAqIGNhcnJpZXMgdGhlIHNhbWUgY3JlYXRpb24gZ3JhcGggaW5zdHJ1bWVudGF0aW9uLmpzb24gdjIgY2FycmllcyB1bmRlclxuICogYGNyZWF0aW9uR3JhcGhgLCBgcG9pbnRzYCB0aGUgc2FtZSBwbHVnaW4tc3VwcGxpZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50cy5cbiAqIGluc3RydW1lbnRhdGlvbi5qc29uIHN0YXlzIHVuY2hhbmdlZCBmb3IgbW5lbW9ncmFwaGljYTsgY29udHJvbC5qc29uIGlzXG4gKiB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3QgcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEpzb24ge1xuXHR2ZXJzaW9uOiAnMS4xJztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0Y2FsbGVyczogQ3JlYXRpb25HcmFwaDtcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xufVxuXG4vKipcbiAqIEZsb3cga2luZCBmb3IgdHJhY2tpbmcgbmF0aXZlIGluc3RhbmNlIHVzYWdlIHBhdHRlcm5zIOKAlCBXSEFUIEZMT1dTIFdIRVJFXG4gKiBpbiBwbGFpbiBzb3VyY2Ugc2hhcGVzLiBFYWNoIGtpbmQgbmFtZXMgb25lIHN5bnRhY3RpYyBwYXR0ZXJuIHRoYXQgbW92ZXNcbiAqIGEgdHlwZWQgdmFsdWUsIHdpdGggdGhlIHNoYXBlIHRoYXQgcHJvZHVjZXMgaXQ6XG4gKlxuICogICAncHJvcGVydHlSZWFkJyAgICAgIHJlYWRpbmcgYSBmaWVsZCBvZmYgdGhlIGluc3RhbmNlIOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGB1c2VyLm5hbWVgIChhbHNvIGB1c2VyPy5uYW1lYCDigJQgb3B0aW9uYWwgY2hhaW5pbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzIGFzIGEgcGxhaW4gcHJvcGVydHlSZWFkKVxuICogICAncHJvcGVydHlXcml0ZScgICAgIGFzc2lnbmluZyBhIGZpZWxkIOKAlCBgdXNlci5uYW1lID0gJ3gnYFxuICogICAnbWV0aG9kQ2FsbCcgICAgICAgIGNhbGxpbmcgYSBtZXRob2Qgb24gaXQg4oCUIGB1c2VyLnZhbGlkYXRlKClgXG4gKiAgICdlbGVtZW50QWNjZXNzJyAgICAgYnJhY2tldCByZWFkIOKAlCBgdXNlclsnbmFtZSddYFxuICogICAnZGVzdHJ1Y3R1cmVSZWFkJyAgIGRlc3RydWN0dXJpbmcgcHVsbHMgdGhlIGZpZWxkcyBhcGFydCDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgY29uc3QgeyBuYW1lIH0gPSB1c2VyYFxuICogICAncGFzc0FzQXJnJyAgICAgICAgIHRoZSB2YWx1ZSBjcm9zc2VzIGludG8gYSBjYWxsIGFzIGFuIGFyZ3VtZW50IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGBwcm9jZXNzVXNlcih1c2VyKWAgKGNvbnRleHQgbmFtZXMgY2FsbGVlICsgc2xvdClcbiAqICAgJ3JldHVybicgICAgICAgICAgICB0aGUgdmFsdWUgbGVhdmVzIHRoZSBmdW5jdGlvbiBhcyBpdHMgcmVzdWx0IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGByZXR1cm4gdXNlcmBcbiAqICAgJ3NwcmVhZCcgICAgICAgICAgICB0aGUgZmllbGRzIHNjYXR0ZXIgaW50byBhIGxpdGVyYWwg4oCUIGAoeyAuLi51c2VyIH0pYFxuICogICAncmVhc3NpZ25tZW50JyAgICAgIHRoZSBiaW5kaW5nIGlzIHJlLXBvaW50ZWQg4oCUIGB1c2VyID0gb3RoZXJgXG4gKiAgICdpbnN0YW50aWF0aW9uJyAgICAgYSBjb25zdHJ1Y3Rpb24tc2hhcGVkIGNhbGwg4oCUIGBuZXcgVXNlcigpYCAoYWxzb1xuICogICAgICAgICAgICAgICAgICAgICAgIHJlY29yZGVkIGZvciBjaGFpbiB0aXBzIGFuZCBjYWxsL2FwcGx5L2ZvcmsvbWVyZ2UpXG4gKlxuICogJ2FycmF5RWxlbWVudCcgYW5kICdjb25kaXRpb25hbEFjY2VzcycgYXJlIHJlc2VydmVkIG1lbWJlcnMgb2YgdGhlXG4gKiB1bmlvbiDigJQgZGVjbGFyZWQsIG5vdCB5ZXQgZW1pdHRlZCBieSB0aGUgYW5hbHl6ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEZsb3dLaW5kID1cblx0fCAncHJvcGVydHlSZWFkJ1xuXHR8ICdwcm9wZXJ0eVdyaXRlJ1xuXHR8ICdtZXRob2RDYWxsJ1xuXHR8ICdkZXN0cnVjdHVyZVJlYWQnXG5cdHwgJ3Bhc3NBc0FyZydcblx0fCAncmV0dXJuJ1xuXHR8ICdzcHJlYWQnXG5cdHwgJ2FycmF5RWxlbWVudCdcblx0fCAnY29uZGl0aW9uYWxBY2Nlc3MnXG5cdHwgJ2VsZW1lbnRBY2Nlc3MnXG5cdHwgJ3JlYXNzaWdubWVudCdcblx0fCAnaW5zdGFudGlhdGlvbic7XG5cbi8qKlxuICogRmxvdyBpbmZvIGZvciBuYXRpdmUgaW5zdGFuY2UgdXNhZ2UgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgZmxvdyAqL1xuXHRraW5kOiBGbG93S2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0eSBuYW1lIGlmIGFwcGxpY2FibGUgKi9cblx0cHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYga25vd24gKi9cblx0dGFyZ2V0VHlwZT86IHN0cmluZztcblx0LyoqIENvbnRleHQgKGZ1bmN0aW9uIG5hbWUsIHBhcmFtIHBvc2l0aW9uLCBldGMuKSAqL1xuXHRjb250ZXh0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBmbG93Lmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZmxvdzogUmVjb3JkPHN0cmluZywgRmxvd0luZm9bXT47XG59XG5cbi8qKlxuICogV2hhdCBhIG1vZHVsZS1sZXZlbCBiaW5kaW5nIGlzLiBWYXJpYWJsZXMgYXJlIGNsYXNzaWZpZWQgYXMgJ2NvbnN0J1xuICogcmVnYXJkbGVzcyBvZiBsZXQvdmFyIOKAlCBtdXRhYmlsaXR5IChyZWFzc2lnbm1lbnQgdHJhY2tpbmcpIGlzIHRoZVxuICogbG9jYWwtc2NvcGUgd2Fsa2VyJ3MgY29uY2VybiAoUGhhc2UgMiksIG5vdCB0aGUgbW9kdWxlIGdyYXBoJ3MuXG4gKi9cbmV4cG9ydCB0eXBlIE1vZHVsZUJpbmRpbmdLaW5kID1cblx0fCAnZnVuY3Rpb24nXG5cdHwgJ2NsYXNzJ1xuXHR8ICdjb25zdCdcblx0fCAndHlwZSdcblx0fCAndW5rbm93bic7XG5cbi8qKlxuICogSG93IGEgYmluZGluZyBlbnRlcnMgYSBtb2R1bGVcbiAqL1xuZXhwb3J0IHR5cGUgTW9kdWxlSW1wb3J0S2luZCA9XG5cdHwgJ25hbWVkJ1xuXHR8ICdkZWZhdWx0J1xuXHR8ICduYW1lc3BhY2UnXG5cdHwgJ3JlcXVpcmUnO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBtb2R1bGUtbGV2ZWwgYmluZGluZyAoZXhwb3J0LCBpbXBvcnQsIG9yIHJlLWV4cG9ydCkuXG4gKlxuICogYG5hbWVgIGlzIGFsd2F5cyB0aGUgbmFtZSB0aGlzIG1vZHVsZSBwcmVzZW50czogdGhlIGxvY2FsIGlkZW50aWZpZXIgZm9yXG4gKiBpbXBvcnRzLCB0aGUgZXhwb3J0ZWQgbmFtZSBmb3IgZXhwb3J0cy4gYGltcG9ydEFsaWFzYCBjYXJyaWVzIHRoZSBvcmlnaW5hbFxuICogbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGl0IGRpZmZlcnMgKGBpbXBvcnQgeyBYIGFzIFkgfWAg4oaSIG5hbWUgJ1knLFxuICogaW1wb3J0QWxpYXMgJ1gnOyBgZXhwb3J0IHsgWCBhcyBZIH0gZnJvbSDigKZgIOKGkiBuYW1lICdZJywgaW1wb3J0QWxpYXMgJ1gnKS5cbiAqIEZvciBkZWZhdWx0IGltcG9ydHMgbmFtZSBpcyB0aGUgbG9jYWwgaWRlbnRpZmllciBhbmQgdGhlIHNvdXJjZSBsb29rdXAga2V5XG4gKiBpcyAnZGVmYXVsdCcgKGltcGxpZWQgYnkgaW1wb3J0S2luZCk7IGZvciBuYW1lc3BhY2UgaW1wb3J0cy9leHBvcnRzIG5hbWUgaXNcbiAqIHRoZSBuYW1lc3BhY2UgYWxpYXMgKCcqJyBmb3IgYmFyZSBgZXhwb3J0ICogZnJvbSDigKZgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVCaW5kaW5nIHtcblx0LyoqIE5hbWUgYXMgcHJlc2VudGVkIGluIHRoaXMgbW9kdWxlIChsb2NhbCBuYW1lIGZvciBpbXBvcnRzLCBleHBvcnRlZCBuYW1lIGZvciBleHBvcnRzKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBXaGF0IHRoZSBiaW5kaW5nIGlzOyBiYWNrZmlsbGVkIGZyb20gdGhlIG9yaWdpbiBtb2R1bGUgd2hlbiByZXNvbHZhYmxlICovXG5cdGtpbmQ6IE1vZHVsZUJpbmRpbmdLaW5kO1xuXHQvKipcblx0ICogUmVzb2x2ZWQgYWJzb2x1dGUgZmlsZSBwYXRoIG9mIHRoZSBzb3VyY2UgbW9kdWxlICh0aGUgbW9kdWxlIGl0c2VsZiBmb3Jcblx0ICogbG9jYWwgZGVjbGFyYXRpb25zOyB0aGUgcmF3IHNwZWNpZmllciB3aGVuIHJlc29sdXRpb24gZmFpbHMpXG5cdCAqL1xuXHRzb3VyY2VNb2R1bGU6IHN0cmluZztcblx0LyoqIEhvdyB0aGUgYmluZGluZyBlbnRlcnMgdGhlIG1vZHVsZSAoYWJzZW50IG9uIHBsYWluIGxvY2FsIGV4cG9ydHMpICovXG5cdGltcG9ydEtpbmQ/OiBNb2R1bGVJbXBvcnRLaW5kO1xuXHQvKiogT3JpZ2luYWwgbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGFsaWFzZWQgKi9cblx0aW1wb3J0QWxpYXM/OiBzdHJpbmc7XG5cdC8qKiBUcnVlIGZvciBgZXhwb3J0IHsgWCB9IGZyb20gJy4veSdgIC8gYGV4cG9ydCAqIGZyb20gJy4veSdgIChiYXJyZWxzKSAqL1xuXHRpc1JlRXhwb3J0OiBib29sZWFuO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBzcGVjaWZpZXIgcmVzb2x2ZWQgaW50byBub2RlX21vZHVsZXNcblx0ICogKHRzLnJlc29sdmVNb2R1bGVOYW1lJ3MgaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQpLiBFeHRlcm5hbCBiaW5kaW5ncyBhcmVcblx0ICogcmVjb3JkZWQgZm9yIHJlZmVyZW5jZSBidXQgbmV2ZXIgZW50ZXIgYGRlcGVuZGVuY2llc2AgYW5kIGFyZSBuZXZlciB3YWxrZWQuXG5cdCAqIE5vZGUuanMgYnVpbHRpbnMgYXJlIG5vdCByZWNvcmRlZCBhcyBiaW5kaW5ncyBhdCBhbGwg4oCUIHNlZVxuXHQgKiBNb2R1bGVJbmZvLmJ1aWx0aW5TcGVjaWZpZXJzLlxuXHQgKi9cblx0ZXh0ZXJuYWw/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBlci1tb2R1bGUgcmVjb3JkIG9mIHRoZSBjcm9zcy1maWxlIGdyYXBoIChtb2R1bGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlSW5mbyB7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKG1hcCBrZXkpICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSAqL1xuXHRkZWZpbmVkVHlwZXM6IHN0cmluZ1tdO1xuXHQvKiogRXZlcnl0aGluZyB0aGlzIG1vZHVsZSBleHBvcnRzIChsb2NhbCBkZWNsYXJhdGlvbnMgYW5kIHJlLWV4cG9ydHMpICovXG5cdGV4cG9ydGVkQmluZGluZ3M6IE1vZHVsZUJpbmRpbmdbXTtcblx0LyoqIEV2ZXJ5dGhpbmcgdGhpcyBtb2R1bGUgaW1wb3J0cyAocmUtZXhwb3J0cyBhcHBlYXIgaGVyZSB0b28sIG1hcmtlZCBpc1JlRXhwb3J0KSAqL1xuXHRpbXBvcnRlZEJpbmRpbmdzOiBNb2R1bGVCaW5kaW5nW107XG5cdC8qKiBBYnNvbHV0ZSBwYXRocyBvZiBhbmFseXplZCBwcm9qZWN0IG1vZHVsZXMgdGhpcyBtb2R1bGUgaW1wb3J0cyBmcm9tICovXG5cdGRlcGVuZGVuY2llczogc3RyaW5nW107XG5cdC8qKiBJbXBvcnQgc3BlY2lmaWVycyB0aGF0IG1vZHVsZSByZXNvbHV0aW9uIGNvdWxkIG5vdCByZXNvbHZlIChub2RlIGJ1aWx0aW5zIGV4Y2x1ZGVkIOKAlCBzZWUgYnVpbHRpblNwZWNpZmllcnMpICovXG5cdHVucmVzb2x2ZWRTcGVjaWZpZXJzOiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIE5vZGUuanMgYnVpbHRpbiBzcGVjaWZpZXJzIHRoaXMgbW9kdWxlIGltcG9ydHMgKCdwYXRoJywgJ25vZGU6ZnMnLCDigKYpLFxuXHQgKiBtYXRjaGVkIGFnYWluc3Qgbm9kZTptb2R1bGUncyBidWlsdGluTW9kdWxlcyBpbiBib3RoIGJhcmUgYW5kXG5cdCAqIGBub2RlOmAtcHJlZml4ZWQgZm9ybXMuIFJlY29yZGVkIGZvciBob25lc3R5IG9ubHk6IGJ1aWx0aW5zIHByb2R1Y2Ugbm9cblx0ICogYmluZGluZ3MsIG5ldmVyIGVudGVyIGBkZXBlbmRlbmNpZXNgL2B1bnJlc29sdmVkU3BlY2lmaWVyc2AsIGFuZCBuZXZlclxuXHQgKiBwcm9kdWNlIGVkZ2VzLlxuXHQgKi9cblx0YnVpbHRpblNwZWNpZmllcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgY3Jvc3MtbW9kdWxlIHVzYWdlIG9mIGEgbW5lbW9uaWNhIHR5cGU6IHVzYWdlTW9kdWxlIGltcG9ydHMgYSBiaW5kaW5nXG4gKiB3aG9zZSBvcmlnaW4gbW9kdWxlIGRlZmluZXMgdGhlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NNb2R1bGVVc2FnZSB7XG5cdC8qKiBNYXRjaGVkIG1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIChvciB0aGUgaW1wb3J0ZWQgbmFtZSB3aGVuIHVubWF0Y2hlZCkgKi9cblx0dHlwZVBhdGg6IHN0cmluZztcblx0LyoqIEFic29sdXRlIHBhdGggb2YgdGhlIG1vZHVsZSB3aGVyZSB0aGUgdHlwZSBpcyBkZWZpbmVkIChyZS1leHBvcnQgY2hhaW5zIGNoYXNlZCB0byB0aGUgb3JpZ2luKSAqL1xuXHRkZWZpbml0aW9uTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBpbXBvcnRpbmcgbW9kdWxlICovXG5cdHVzYWdlTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBJbXBvcnQgc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR1c2FnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGZ1bGwgbW9kdWxlIGdyYXBoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlR3JhcGgge1xuXHQvKiogS2V5ZWQgYnkgYWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdG1vZHVsZXM6IE1hcDxzdHJpbmcsIE1vZHVsZUluZm8+O1xuXHRlZGdlczogQ3Jvc3NNb2R1bGVVc2FnZVtdO1xuXHQvKipcblx0ICogQ2lyY3VsYXIgaW1wb3J0IGNoYWlucyAoZWFjaCBhbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocykuIFJlY29yZGVkLCBub3Rcblx0ICogYW4gZXJyb3Ig4oCUIG1uZW1vbmljYSBzdHJpY3RDaGFpbjpmYWxzZSBwZXJtaXRzIG5vbi1saW5lYXIgY29uc3RydWN0aW9uXG5cdCAqL1xuXHRjeWNsZXM6IHN0cmluZ1tdW107XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIG1vZHVsZXMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRtb2R1bGVzOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVJbmZvPjtcblx0ZWRnZXM6IENyb3NzTW9kdWxlVXNhZ2VbXTtcblx0Y3ljbGVzOiBzdHJpbmdbXVtdO1xufVxuXG4vKipcbiAqIFdoYXQgYSB0cmFja2VkIHNjb3BlIGlzLiBEZWNpc2lvbiA1IChyZXNvbHZlZCAyMDI2LTA5LTAzKTogZnVuY3Rpb24sXG4gKiBtZXRob2QsIGFuZCBhcnJvdyBzY29wZXMgT05MWSDigJQgbm8gYmxvY2sgc2NvcGVzLiAnbW9kdWxlJyBpcyB0aGUgc3ludGhldGljXG4gKiBwZXItZmlsZSByb290IHNjb3BlIHNvIG1vZHVsZS1sZXZlbCBpbnN0YW5jZSBjcmVhdGlvbnMgYXJlIGxhYmVsZWQsIG5vdFxuICogZHJvcHBlZCAod2Fsa2VyIHBsYW46IFwicmVjb3JkZWQgYXMgYSByb290ZWQgaW5zdGFuY2VcIikuXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlS2luZCA9XG5cdHwgJ21vZHVsZSdcblx0fCAnZnVuY3Rpb24nXG5cdHwgJ21ldGhvZCdcblx0fCAnYXJyb3cnO1xuXG4vKipcbiAqIE9uZSB0cmFja2VkIHNjb3BlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZUluZm8ge1xuXHQvKiogVW5pcXVlIGlkOiBtb2R1bGUgc2NvcGUgaXMgdGhlIGZpbGUgcGF0aDsgZnVuY3Rpb24gc2NvcGVzIGFyZSBmaWxlOmxpbmU6Y29sIG9mIHRoZSBzY29wZSBub2RlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIERlY2lzaW9uIDggbGFiZWxpbmc6IGZ1bmN0aW9uL21ldGhvZCBuYW1lICgnQ2xhc3MubWV0aG9kJyBmb3IgbWV0aG9kcyksIGZpbGU6bGluZSBmb3IgYW5vbnltb3VzIGhvbGRlcnMgKi9cblx0bmFtZTogc3RyaW5nO1xuXHRraW5kOiBTY29wZUtpbmQ7XG5cdC8qKiBOZWFyZXN0IGVuY2xvc2luZyBzY29wZSAodW5kZWZpbmVkIG9uIG1vZHVsZSBzY29wZXMpICovXG5cdHBhcmVudFNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIFNjb3BlIHN0YXJ0OiBmaWxlLnRzOkxpbmU6Q29sIChtb2R1bGUgc2NvcGU6IGZpbGU6MToxKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSB0cmFja2VkIHZhcmlhYmxlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVZhcmlhYmxlIHtcblx0bmFtZTogc3RyaW5nO1xuXHQvKiogT3duaW5nIHNjb3BlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIHdoZW4ga25vd24gKG5ldyBYKCkgb24gYSBrbm93biB0eXBlLCBuZXcgaW5zdC5TdWIoKSBjaGFpbmluZywgb3IgYSBrbm93biBhbm5vdGF0aW9uKSAqL1xuXHR0eXBlUGF0aD86IHN0cmluZztcblx0LyoqIENoZWFwIHRleHR1YWwgdHlwZTogYW5ub3RhdGlvbiB0ZXh0IG9yIHRpbnkgaW5pdGlhbGl6ZXIgY2xhc3NpZmljYXRpb24gKi9cblx0aW5mZXJyZWRUeXBlPzogc3RyaW5nO1xuXHQvKiogRGVjbGFyYXRpb24gc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRkZWNsYXJhdGlvbjogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcjogYm9vbGVhbjtcblx0LyoqIGNvbnN0ID0gZmFsc2U7IGxldC92YXIgYW5kIHBhcmFtZXRlcnMgPSB0cnVlIChwYXJhbWV0ZXJzIGFyZSByZWFzc2lnbmFibGUpICovXG5cdGlzTXV0YWJsZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFJlYXNzaWdubWVudCBzaXRlcyAoZmlsZS50czpMaW5lOkNvbCkgb2YgdGhpcyBiaW5kaW5nIOKAlCBmbG93LXRlcm1pbmF0aW9uXG5cdCAqIHBvaW50cyAoZGVjaXNpb24gNik6IHRoZSBQaGFzZSAzIHdhbGtlciBzdG9wcyBmb2xsb3dpbmcgdGhlIGJpbmRpbmcgdGhlcmVcblx0ICovXG5cdHJlYXNzaWdubWVudHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmdWxsIGxvY2FsLXNjb3BlIGFuYWx5c2lzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVBbmFseXNpcyB7XG5cdC8qKiBLZXllZCBieSBzY29wZUlkICovXG5cdHNjb3BlczogTWFwPHN0cmluZywgU2NvcGVJbmZvPjtcblx0LyoqIEtleWVkIGJ5IGAke3Njb3BlSWR9IyR7bmFtZX1gICovXG5cdHZhcmlhYmxlczogTWFwPHN0cmluZywgU2NvcGVWYXJpYWJsZT47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHNjb3Blcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0c2NvcGVzOiBSZWNvcmQ8c3RyaW5nLCBTY29wZUluZm8+O1xuXHR2YXJpYWJsZXM6IFNjb3BlVmFyaWFibGVbXTtcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvZiB0aGUgY3JlYXRpb24gZ3JhcGggKGluc3RydW1lbnRhdGlvbiB3YWxrZXIgcGxhbiwgUGhhc2UgMyk6XG4gKiBhIHNjb3BlIHRoYXQgY3JlYXRlcyBtbmVtb25pY2EgaW5zdGFuY2VzLCBvciBvbmUgc2l0dGluZyBvbiBhIGNhbGwgcGF0aFxuICogdG8gYSBjcmVhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGhOb2RlIHtcblx0LyoqIExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZCAobW9kdWxlIHNjb3BlID0gZmlsZSBwYXRoOyBmdW5jdGlvbiBzY29wZXMgPSBmaWxlOmxpbmU6Y29sKSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBEZWNpc2lvbiA4IGxhYmVsOiBmdW5jdGlvbi9tZXRob2QgbmFtZSAoJ0NsYXNzLm1ldGhvZCcpLCBmaWxlOmxpbmUgZm9yIGFub255bW91cyBob2xkZXJzICovXG5cdG5hbWU6IHN0cmluZztcblx0a2luZDogU2NvcGVLaW5kO1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBzdGFydDogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogVHJ1ZSB3aGVuIHRoZSB3YWxrIGZvdW5kIG5vIGNhbGxlcnMg4oCUIGFuIGFwcGxpY2F0aW9uIGVudHJ5IHBvaW50ICovXG5cdHN0YXJ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT25lIGVkZ2Ugb2YgdGhlIGNyZWF0aW9uIGdyYXBoOiB0aGUgY2FsbGVyIHNjb3BlIGludm9rZXMgb3IgcmVmZXJlbmNlcyB0aGVcbiAqIGNhbGxlZSBzY29wZS4gRGlyZWN0aW9uIGlzIGluc2lkZS1vdXQ6IGNhbGxlciDihpIgY2FsbGVlLCB3aGVyZSB0aGUgY2FsbGVlIGlzXG4gKiBjbG9zZXIgdG8gdGhlIGNyZWF0aW9uIHNpdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaEVkZ2Uge1xuXHQvKiogQ2FsbGluZyBzY29wZSdzIHNjb3BlSWQgKi9cblx0Y2FsbGVyOiBzdHJpbmc7XG5cdC8qKiBDYWxsZWQgKGhvbGRlcikgc2NvcGUncyBzY29wZUlkICovXG5cdGNhbGxlZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluc3RhbnRpYXRpb24gYW5jaG9yOiBvbmUgbW5lbW9uaWNhIGNyZWF0aW9uIHNpdGUgcGlubmVkIHRvIGl0cyBob2xkZXJcbiAqIHNjb3BlLlxuICpcbiAqIGB2YXJpYWJsZWAvYHRlcm1pbmF0ZWRBdGAgYXJlIGEgZG9jdW1lbnRlZCBoZXVyaXN0aWM6IHRoZSB2YXJpYWJsZSBkZWNsYXJlZFxuICogaW4gdGhlIGhvbGRlciBzY29wZSBvbiB0aGUgU0FNRSBsaW5lIGFzIHRoZSBjcmVhdGlvbiwgd2hvc2UgdHlwZVBhdGggKHdoZW5cbiAqIGtub3duKSBtYXRjaGVzIHRoZSBjcmVhdGVkIHR5cGUuIGB0ZXJtaW5hdGVkQXRgIGlzIHRoYXQgdmFyaWFibGUncyBmaXJzdFxuICogcmVhc3NpZ25tZW50IHNpdGUg4oCUIHRoZSBkZWNpc2lvbiA2IGZsb3ctdGVybWluYXRpb24gcG9pbnQgd2hlcmUgdGhlIHdhbGtlclxuICogc3RvcHMgZm9sbG93aW5nIHRoZSBiaW5kaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uQW5jaG9yIHtcblx0LyoqIENyZWF0aW9uIHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKHRoZSB1c2FnZXMuanNvbiBsb2NhdGlvbikgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIFNjb3BlIGhvbGRpbmcgdGhlIGNyZWF0aW9uIChzY29wZXMuanNvbiBzY29wZUlkKSAqL1xuXHRob2xkZXJTY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aCBiZWluZyBjcmVhdGVkICovXG5cdHR5cGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBDb25zdHJ1Y3RvciBleHByZXNzaW9uIHRleHQgKCdUaGluZycsICd1c2VyLkFkbWluRW50aXR5JywgYSBsb29rdXAgYWxpYXMgbmFtZSkgKi9cblx0Y29uc3RydWN0b3JUZXh0Pzogc3RyaW5nO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBob2xkZXIgaXMgdGhlIG1vZHVsZSBzY29wZSDigJQgYSByb290ZWQgaW5zdGFuY2UgKHBsYW46XG5cdCAqIGxlZ2l0aW1hdGUgcm9vdCBvciBkZXZlbG9wZXIgZXJyb3I7IGxhYmVsZWQsIG5vdCBwb2xpY2VkKVxuXHQgKi9cblx0cm9vdGVkPzogYm9vbGVhbjtcblx0LyoqIFZhcmlhYmxlIHRoZSBmcmVzaCBpbnN0YW5jZSB3YXMgYm91bmQgdG8gKHNhbWUtbGluZSBoZXVyaXN0aWMpICovXG5cdHZhcmlhYmxlPzogc3RyaW5nO1xuXHQvKiogRmlyc3QgcmVhc3NpZ25tZW50IHNpdGUgb2YgdGhhdCB2YXJpYWJsZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR0ZXJtaW5hdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNyZWF0aW9uIGdyYXBoOiBldmVyeXRoaW5nIHRoYXQgbGVhZHMgdG8gbW5lbW9uaWNhIGluc3RhbmNlcyBiZWluZ1xuICogY3JlYXRlZC4gRW1pdHRlZCBhcyB0aGUgYGNyZWF0aW9uR3JhcGhgIGtleSBvZiBpbnN0cnVtZW50YXRpb24uanNvbiB2Mi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoIHtcblx0bm9kZXM6IENyZWF0aW9uR3JhcGhOb2RlW107XG5cdGVkZ2VzOiBDcmVhdGlvbkdyYXBoRWRnZVtdO1xuXHRhbmNob3JzOiBDcmVhdGlvbkFuY2hvcltdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBoaWVyYXJjaHkuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeUpzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHJvb3RzOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIHRoZSBjb2xsZWN0aW9ucy5qc29uIG1hbmlmZXN0LiBUaGUgZGVmYXVsdCBjb2xsZWN0aW9uIGlzXG4gKiBlbWl0dGVkIGZpcnN0IHdoZW5ldmVyIGRlZmF1bHQtY29sbGVjdGlvbiB0eXBlcyBleGlzdDogaXQgaGFzIG5vIGNhbGxcbiAqIHNpdGUsIHNvIGBpZGAgYW5kIGBsb2NhdGlvbmAgc3RheSBudWxsICh1bnByZWZpeGVkIGZ1bGxQYXRocyBBUkUgaXRzXG4gKiBpZGVudGl0eSkgYW5kIGl0cyByZWdpc3RyeSBpbnRlcmZhY2UgaXMgdGhlIGdsb2JhbCBgVHlwZVJlZ2lzdHJ5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeSB7XG5cdC8qKiBNaW50ZWQgaWQgdXNlZCBpbiBgY29sbGVjdGlvbklkOjpgIGZ1bGxQYXRoIHByZWZpeGVzOyBudWxsIGZvciB0aGUgZGVmYXVsdCBjb2xsZWN0aW9uICovXG5cdGlkOiBzdHJpbmcgfCBudWxsO1xuXHQvKiogVmFyaWFibGUgaG9sZGluZyB0aGUgY3JlYXRlVHlwZXNDb2xsZWN0aW9uKCkgcmVzdWx0ICgnZGVmYXVsdFR5cGVzJyBmb3IgdGhlIGRlZmF1bHQgY29sbGVjdGlvbikgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogT3B0aW9uLUIgcmVnaXN0cnkgaW50ZXJmYWNlIG5hbWU7IGFic2VudCB3aGVuIHRoZSBjb2xsZWN0aW9uIGRlY2xhcmVzIG5vbmUgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2U/OiBzdHJpbmc7XG5cdC8qKiBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKSBjYWxsIHNpdGUgKGZpbGU6bGluZTpjb2wpOyBudWxsIGZvciB0aGUgZGVmYXVsdCBjb2xsZWN0aW9uICovXG5cdGxvY2F0aW9uOiBzdHJpbmcgfCBudWxsO1xuXHQvKipcblx0ICogU291cmNlIGxhbmd1YWdlIG9mIHRoaXMgY29sbGVjdGlvbidzIGNvZGViYXNlIChmb3JtYXQgMS4xOyBhYnNlbnQgaW5cblx0ICogMS4wIG91dHB1dCwgd2hlcmUgcmVhZGVycyBkZWZhdWx0IGl0IHRvIFwidHlwZXNjcmlwdFwiKS4gdGFjdGljYSBpcyB0aGVcblx0ICogVHlwZVNjcmlwdCBnZW5lcmF0b3IsIHNvIGV2ZXJ5IGVudHJ5IGl0IHdyaXRlcyBpcyBcInR5cGVzY3JpcHRcIi5cblx0ICovXG5cdGxhbmd1YWdlPzogJ3R5cGVzY3JpcHQnO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBjb2xsZWN0aW9ucy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbnNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRjb2xsZWN0aW9uczogQ29sbGVjdGlvbk1hbmlmZXN0RW50cnlbXTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmVkIGhpZXJhcmNoeSBub2RlIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeU5vZGUge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIkFkbWluVHlwZVwiKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBGdWxsIGRvdHRlZCBwYXRoIChlLmcuLCBcIlVzZXJUeXBlLkFkbWluVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDaGlsZCB0eXBlcyBpbiB0aGUgVHJpZSAqL1xuXHRjaGlsZHJlbjogSGllcmFyY2h5Tm9kZVtdO1xufVxuXG4vKipcbiAqIEEgZmF0YWwgcmVzb2x1dGlvbiBmYWlsdXJlOiBzYW1lLW5hbWVzcGFjZSBkdXBsaWNhdGUgbW5lbW9uaWNhXG4gKiBkZWZpbml0aW9ucywgb3IgYSBtbmVtb25pY2EtZ3JhcGggdHlwZSByZWZlcmVuY2UgdGhhdCBzdGF5cyBhbWJpZ3VvdXNcbiAqIGFmdGVyIHBhdGgtYXdhcmUgcmVzb2x1dGlvbiAob3IgcmVzb2x2ZXMgdG8gbm90aGluZykuIFRoZSBDTEkgcHJpbnRzXG4gKiBldmVyeSBsb2NhdGlvbiBhbmQgd3JpdGVzIG5vIC50YWN0aWNhIG91dHB1dCBhdCBhbGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x1dGlvbkVycm9yIHtcblx0LyoqIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBmYWlsdXJlICovXG5cdG1lc3NhZ2U6IHN0cmluZztcblx0LyoqIGV2ZXJ5IGludm9sdmVkIHNvdXJjZSBsb2NhdGlvbiwgYGZpbGU6bGluZTpjb2x1bW5gICovXG5cdGxvY2F0aW9uczogc3RyaW5nW107XG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcblx0LyoqIEdlbmVyYXRlIGdsb2JhbCBhdWdtZW50YXRpb24gaW5zdGVhZCBvZiBtb2R1bGUgYXVnbWVudGF0aW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuXHRnbG9iYWxBdWdtZW50YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcblx0LyoqIFRydWUgaWYgdGhpcyBpcyBhIGdldHRlciBwcm9wZXJ0eSAocmVhZG9ubHkpICovXG5cdHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlciBpbmZvIGZvciBUeXBlUmVnaXN0cnkgc2lnbmF0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvclBhcmFtSW5mbyB7XG5cdC8qKiBQYXJhbWV0ZXIgbmFtZSAoZS5nLiwgXCJ1c2FnZXNcIiwgXCJkYXRhXCIsIFwiY29uZmlnXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlIHN0cmluZyAtIGNhbiBiZSBhIHNpbXBsZSB0eXBlIG9yIGV4cGFuZGVkIG9iamVjdCBsaXRlcmFsICovXG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBIb3cgdGhlIHBhcmFtZXRlciByZWNlaXZlcyBpdHMgdmFsdWUuIE9ubHkgJ3Jlc3QnIGlzIGVtaXR0ZWQgKFRTXG5cdCAqIGAuLi54c2ApOyBhYnNlbnQgbWVhbnMgYW4gb3JkaW5hcnkgcGFyYW1ldGVyLiBNaXJyb3JzIHRoZSBga2luZGBcblx0ICogdm9jYWJ1bGFyeSBvZiB0aGUgbGV0aGUgZGVmaW5pdGlvbnMgY29udHJhY3QgKGRlZmluaXRpb25zLmpzb24gYXJncykuXG5cdCAqL1xuXHRraW5kPzogJ3Jlc3QnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVOb2RlIHtcblx0LyoqIFR5cGUgbmFtZSAoZS5nLiwgXCJTZWNvbmRUeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgcGF0aCAoZS5nLiwgXCJGaXJzdFR5cGUuU2Vjb25kVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogUHJvcGVydGllcyBkZWZpbmVkIGluIHRoaXMgdHlwZSdzIGNvbnN0cnVjdG9yICovXG5cdHByb3BlcnRpZXM6IE1hcDxzdHJpbmcsIFByb3BlcnR5SW5mbz47XG5cdC8qKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIChmb3IgVHlwZVJlZ2lzdHJ5IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSkgKi9cblx0Y29uc3RydWN0b3JQYXJhbXM/OiBDb25zdHJ1Y3RvclBhcmFtSW5mb1tdO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBjb25zdHJ1Y3QgaGFuZGxlciBpcyBhbiBhc3luYyBmdW5jdGlvbi9hcnJvdyAoZGV0ZWN0ZWRcblx0ICogc3ludGFjdGljYWxseSBieSB0aGUgYXN5bmMgbW9kaWZpZXIpLiBFbWl0dGVkIGNvbnN0cnVjdG9yIHNoYXBlcyB0aGVuXG5cdCAqIHJlc29sdmUgdG8gUHJvbWlzZTxJbnN0YW5jZVR5cGU+LiBBc3luYyBDTEFTU0VTIGFyZSBuZXZlciBmbGFnZ2VkIOKAlFxuXHQgKiB0aGV5IGFyZSB0eXBlZCBieSB0aGUgdXNlciBpbiB1c2VybGFuZCAoZG9jdW1lbnRlZCBpbiBBR0VOVFMubWQpLlxuXHQgKi9cblx0aXNBc3luYz86IGJvb2xlYW47XG5cdC8qKiBQYXJlbnQgdHlwZSBub2RlICovXG5cdHBhcmVudD86IFR5cGVOb2RlO1xuXHQvKiogQ2hpbGQgdHlwZXMgKi9cblx0Y2hpbGRyZW46IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIFNvdXJjZSBmaWxlIHBhdGggKi9cblx0c291cmNlRmlsZTogc3RyaW5nO1xuXHQvKiogTGluZSBudW1iZXIgaW4gc291cmNlICovXG5cdGxpbmU6IG51bWJlcjtcblx0LyoqIENvbHVtbiBudW1iZXIgaW4gc291cmNlICovXG5cdGNvbHVtbjogbnVtYmVyO1xuXHQvKiogQ29uc3RydWN0b3IgZnVuY3Rpb24gbmFtZSBvciBjbGFzcyBuYW1lICovXG5cdGNvbnN0cnVjdG9yTmFtZT86IHN0cmluZztcblx0LyoqIENvbGxlY3Rpb24gaWRlbnRpZmllciBpZiB0aGUgdHlwZSBiZWxvbmdzIHRvIGEgY3VzdG9tIGNvbGxlY3Rpb24gKHVuZGVmaW5lZCA9IGRlZmF1bHQvZ2xvYmFsIHJlZ2lzdHJ5KSAqL1xuXHRjb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG5cdC8qKiBSZWdpc3RyeSBpbnRlcmZhY2UgbmFtZSBmb3IgY3VzdG9tIGNvbGxlY3Rpb25zIHVzaW5nIE9wdGlvbiBCICh1c2VyLXByb3ZpZGVkIHJlZ2lzdHJ5IGludGVyZmFjZSkgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2VOYW1lPzogc3RyaW5nO1xuXHQvKipcblx0ICogU291cmNlIGZpbGUgb2YgdGhlIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIGNhbGwg4oCUIHRoZSBtb2R1bGUgdGhlXG5cdCAqIE9wdGlvbiBCIHJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiBtdXN0IHRhcmdldCAodGhlIGludGVyZmFjZSBpc1xuXHQgKiBjb25maXJtZWQgZGVjbGFyZWQgdGhlcmUpXG5cdCAqL1xuXHRjb2xsZWN0aW9uU291cmNlRmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlR3JhcGgge1xuXHQvKiogUm9vdCB0eXBlcywga2V5ZWQgYnkgZnVsbCBwYXRoIChjdXN0b20tY29sbGVjdGlvbiByb290cyBjYXJyeSB0aGUgYGNvbGxlY3Rpb25JZDo6YCBwcmVmaXgpICovXG5cdHJvb3RzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBbGwgdHlwZXMgYnkgZnVsbCBwYXRoICovXG5cdGFsbFR5cGVzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBZGQgYSByb290IHR5cGUgKi9cblx0YWRkUm9vdChub2RlOiBUeXBlTm9kZSk6IHZvaWQ7XG5cdC8qKiBGaW5kIGEgdHlwZSBieSBmdWxsIHBhdGggKi9cblx0ZmluZFR5cGUoZnVsbFBhdGg6IHN0cmluZyk6IFR5cGVOb2RlIHwgdW5kZWZpbmVkO1xuXHQvKiogR2V0IGFsbCB0eXBlcyBhcyBhcnJheSAqL1xuXHRnZXRBbGxUeXBlcygpOiBUeXBlTm9kZVtdO1xuXHQvKiogQ2xlYXIgdGhlIGdyYXBoICovXG5cdGNsZWFyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZVJlc3VsdCB7XG5cdC8qKiBUeXBlcyBmb3VuZCBpbiB0aGUgYW5hbHlzaXMgKi9cblx0dHlwZXM6IFR5cGVOb2RlW107XG5cdC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgKi9cblx0ZXJyb3JzOiBBbmFseXplRXJyb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplRXJyb3Ige1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGZpbGU6IHN0cmluZztcblx0bGluZTogbnVtYmVyO1xuXHRjb2x1bW46IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRUeXBlcyB7XG5cdC8qKiBDb250ZW50IG9mIHRoZSAuZC50cyBmaWxlICovXG5cdGNvbnRlbnQ6IHN0cmluZztcblx0LyoqIFR5cGVzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgKi9cblx0dHlwZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSBvd24gZmllbGQgb2YgYSB0eXBlLCBpbiBkZWNsYXJhdGlvbiBvcmRlciAoZGVmaW5pdGlvbnMuanNvbiBgZmllbGRzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gYHR5cGVgIGlzIHNvdXJjZS1sYW5ndWFnZSB0ZXh0IGZvciBkaXNwbGF5IG9ubHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkZpZWxkIHtcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdG9wdGlvbmFsOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uIGBhcmdzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gVGhlIHJlY2VpdmVyIChgdGhpc2ApIGlzIG5ldmVyIGxpc3RlZC4gYG9wdGlvbmFsYCBhYnNlbnRcbiAqIG1lYW5zIGZhbHNlOyBhIHJlc3QgcGFyYW1ldGVyIGNhcnJpZXMgYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkFyZyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbD86IGJvb2xlYW47XG5cdGtpbmQ/OiAncmVzdCc7XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uSW5mbyB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogSG93IHR5cGUgd2FzIGNyZWF0ZWQ6ICdkZWZpbmUnIG9yICdkZWNvcmF0ZScgKi9cblx0a2luZDogJ2RlZmluZScgfCAnZGVjb3JhdGUnO1xuXHQvKiogUGFyZW50IHR5cGUgZnVsbCBwYXRoLCBudWxsIGlmIHJvb3QgKi9cblx0cGFyZW50OiBzdHJpbmcgfCBudWxsO1xuXHQvKiogc3RyaWN0Q2hhaW4gY29uZmlnIG9wdGlvbiAqL1xuXHRzdHJpY3RDaGFpbjogYm9vbGVhbjtcblx0LyoqIGJsb2NrRXJyb3JzIGNvbmZpZyBvcHRpb24gKi9cblx0YmxvY2tFcnJvcnM6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSdzIG93biBmaWVsZHMgaW4gZGVjbGFyYXRpb24gb3JkZXIgKGRlZmluaXRpb25zLmpzb24gY29udHJhY3QsXG5cdCAqIGxldGhlIGBmaWVsZGApLiBBYnNlbnQgbWVhbnMgbm90IHJlY29yZGVkOyBhbiBlbXB0eSBhcnJheSBtZWFucyB0aGVcblx0ICogdHlwZSBoYXMgbm8gZmllbGRzLlxuXHQgKi9cblx0ZmllbGRzPzogRGVmaW5pdGlvbkZpZWxkW107XG5cdC8qKlxuXHQgKiBUaGUgY29uc3RydWN0b3IncyBwYXJhbWV0ZXJzIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uXG5cdCAqIGNvbnRyYWN0LCBsZXRoZSBgYXJnYCkuIEFic2VudCBtZWFucyBub3QgcmVjb3JkZWQ7IGFuIGVtcHR5IGFycmF5XG5cdCAqIG1lYW5zIHRoZSBjb25zdHJ1Y3RvciB0YWtlcyBub25lLlxuXHQgKi9cblx0YXJncz86IERlZmluaXRpb25BcmdbXTtcbn1cblxuLyoqXG4gKiBVc2FnZSBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZUluZm8ge1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBLaW5kIG9mIHVzYWdlOiBpbnN0YW50aWF0aW9uLCB0eXBlQW5ub3RhdGlvbiwgcHJvcGVydHlBY2Nlc3MsIGxvb2t1cCwgcmVmZXJlbmNlICovXG5cdGtpbmQ6ICdpbnN0YW50aWF0aW9uJyB8ICd0eXBlQW5ub3RhdGlvbicgfCAncHJvcGVydHlBY2Nlc3MnIHwgJ2xvb2t1cCcgfCAncmVmZXJlbmNlJztcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBTY29wZSBob2xkaW5nIHRoaXMgdXNhZ2UgKExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZDogbW9kdWxlIHNjb3BlIGlzIHRoZVxuXHQgKiBmaWxlIHBhdGgsIGZ1bmN0aW9uIHNjb3BlcyBhcmUgZmlsZTpsaW5lOmNvbCkuIEFkZGl0aXZlOyBhYnNlbnQgd2hlbiB0aGVcblx0ICogdXNhZ2Ugc2l0cyBvdXRzaWRlIHRyYWNrZWQgZmlsZXMuXG5cdCAqL1xuXHRob2xkZXJTY29wZUlkPzogc3RyaW5nO1xuXHQvKipcblx0ICogQ29uc3RydWN0b3IgZXhwcmVzc2lvbiB0ZXh0IGF0IGFuIGluc3RhbnRpYXRpb24gc2l0ZSAoJ1RoaW5nJyxcblx0ICogJ3VzZXIuQWRtaW5FbnRpdHknLCAnVDInIGZvciBhIGxvb2t1cCBhbGlhcykuIEFkZGl0aXZlOyBzZXQgb25seSBvblxuXHQgKiBraW5kICdpbnN0YW50aWF0aW9uJy4gRmVlZHMgQ3JlYXRpb25BbmNob3IuY29uc3RydWN0b3JUZXh0IChQaGFzZSAzKS5cblx0ICovXG5cdGNvbnN0cnVjdG9yVGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgZGVmaW5pdGlvbnMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25zSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIERlZmluaXRpb25JbmZvPjtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgdXNhZ2VzLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHR1c2FnZXM6IFJlY29yZDxzdHJpbmcsIFVzYWdlSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBFRFMgKEV4ZWN1dGlvbiBEYXRhIFN0b3JhZ2UpIGtpbmQgZm9yIHRyYWNraW5nIGV4ZWN1dGlvbiBmbG93IHBhdHRlcm5zXG4gKi9cbmV4cG9ydCB0eXBlIEVEU0tpbmQgPVxuXHR8ICd3cmFwJ1xuXHR8ICdjb250ZXh0Q29uc3VtZSdcblx0fCAnaG9va0F0dGFjaCc7XG5cbi8qKlxuICogRURTIGluZm8gZm9yIGV4ZWN1dGlvbiBkYXRhIGZsb3cgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFRFNJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiBFRFMgdXNhZ2UgKi9cblx0a2luZDogRURTS2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBSZXNvbHZlZCB0YXJnZXQgdHlwZSBpZiBkZXRlY3RhYmxlICovXG5cdHRhcmdldFR5cGU/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBFbmNsb3NpbmcgbW5lbW9uaWNhIHR5cGUgcGF0aCAoZGVmaW5lL2xhenkgaGFuZGxlciBvciBkZWNvcmF0ZWQgY2xhc3MpO1xuXHQgKiBmb3Igd3JhcCBzaXRlcyBvdXRzaWRlIGFueSBoYW5kbGVyLCBhdHRyaWJ1dGVkIHRocm91Z2ggdGhlIGluc3RhbmNlL2NvbnRleHRcblx0ICogYXJndW1lbnQgKHRyYWNrZWQgYXNzaWdubWVudCBvciBwYXJhbWV0ZXIgYW5ub3RhdGlvbiksIHRoZW4gaW5oZXJpdGVkIGRvd25cblx0ICogdGhlIHdyYXAgZ2VuZXJhdGlvbiBjaGFpbiAoYHZpYWApXG5cdCAqL1xuXHRzY29wZT86IHN0cmluZztcblx0LyoqIExvY2F0aW9uIG9mIHRoZSBlbmNsb3Npbmcgd3JhcCBzaXRlIHdob3NlIHJ1bnRpbWUgd3JhcHBpbmcgY2F1c2VkIHRoaXMgZW50cnkgKi9cblx0dmlhPzogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGhzIGluc3RhbnRpYXRlZCBpbnNpZGUgdGhlIHdyYXBwZWQgYm9keSDigJQgZ3VhcmFudGVlZCBwYXRoIGhpdHMgKi9cblx0Y3JlYXRlc1R5cGVzPzogc3RyaW5nW107XG5cdC8qKiBMYWJlbCBzdHJpbmcgbGl0ZXJhbCBwYXNzZWQgdG8gd3JhcChmbiwg4oCmLCAnbGFiZWwnKSB3aGVuIHN0YXRpY2FsbHkgdmlzaWJsZSAqL1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgKHNjb3Blcy5qc29uKSBvZiB0aGUgd3JhcHBlZCBjYWxsYmFjaydzIG93biBzY29wZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdGNhbGxiYWNrU2NvcGVJZD86IHN0cmluZztcblx0LyoqIElkZW50aWZpZXIgcGFzc2VkIGFzIHRoZSBpbnN0YW5jZS9jb250ZXh0IGFyZ3VtZW50ICgndXNlcicpLCB3aGVuIGl0IGlzIG9uZSAqL1xuXHRpbnN0YW5jZUFyZz86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgb2YgdGhlIHNjb3BlIGhvbGRpbmcgdGhlIHdyYXAgY2FsbCBzaXRlIOKAlCBqb2lucyB0byB0aGUgY3JlYXRpb24gZ3JhcGggKi9cblx0c2NvcGVJZD86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSBmdWxsUGF0aCBvZiB0aGUgaW5zdGFuY2UgYXJndW1lbnQsIHJlc29sdmVkIHRocm91Z2ggc2NvcGUgdmFyaWFibGVzICovXG5cdHdyYXBzVHlwZVBhdGg/OiBzdHJpbmc7XG5cdC8qKiBXcmFwLWZhbWlseSBmdW5jdGlvbiBuYW1lICgnd3JhcCcgfCAnd3JhcENvbnN0cnVjdG9yQXJnJyB8IOKApikg4oCUIGpvaW5zIHRoZVxuXHQgKiAgY2FsbCBzaXRlIHRvIGRpdmUncyBlbmdpbmUga25vdCBpbiBncmFwaCBjb25zdW1lcnMgKi9cblx0Zm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGVkcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZWRzOiBSZWNvcmQ8c3RyaW5nLCBFRFNJbmZvW10+O1xufVxuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBraW5kIGZvciBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZHNcbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uS2luZCA9XG5cdHwgJ2ludGVyY2VwdG9yJ1xuXHR8ICdndWFyZCdcblx0fCAncGlwZSdcblx0fCAnZmlsdGVyJ1xuXHR8ICdtaWRkbGV3YXJlJztcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gc2NvcGU6IHdoZXJlIHRoZSBwb2ludCBhdHRhY2hlcy5cbiAqICdnbG9iYWwnIGZvciBwcm92aWRlci10b2tlbiByZWdpc3RyYXRpb25zLCAnbW9kdWxlJyBmb3IgbWlkZGxld2FyZSB3aXJlZFxuICogdmlhIGNvbnN1bWVyLmFwcGx5KCkgQU5EIGZvciBiYXJlIGhlcml0YWdlIGRlY2xhcmF0aW9ucyB3aG9zZSBhdHRhY2htZW50XG4gKiBpcyBzdGF0aWNhbGx5IHVua25vd24sIGBjb250cm9sbGVyOk5hbWVgIC8gYG1ldGhvZDpDbGFzcy5tZXRob2RgIGZvclxuICogZGVjb3JhdG9yLXNjb3BlZCBhdHRhY2htZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uU2NvcGUgPVxuXHR8ICdnbG9iYWwnXG5cdHwgJ21vZHVsZSdcblx0fCBgY29udHJvbGxlcjoke3N0cmluZ31gXG5cdHwgYG1ldGhvZDoke3N0cmluZ31gO1xuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBwb2ludDogYSBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAoaW50ZXJjZXB0b3IsXG4gKiBndWFyZCwgcGlwZSwgZmlsdGVyLCBtaWRkbGV3YXJlKSBkZXRlY3RlZCBzeW50YWN0aWNhbGx5LiBUaGUgdm9jYWJ1bGFyeVxuICogdGhhdCB0dXJucyBhIHN5bnRhY3RpYyBzaGFwZSBpbnRvIGEgcG9pbnQgY29tZXMgZnJvbSBwbHVnaW5zIOKAlCB3aXRoIG5vXG4gKiBwbHVnaW4gbG9hZGVkLCBubyBwb2ludHMgYXJlIGNvbGxlY3RlZC5cbiAqXG4gKiBEZWR1cGUvc2NvcGUgZGVjaXNpb246IHBvaW50cyBhcmUga2V5ZWQgYnkgKGtpbmQsIGNsYXNzTmFtZSwgbG9jYXRpb24sXG4gKiBzY29wZSkgYW5kIGR1cGxpY2F0ZXMgbWVyZ2UgdGhlaXIgYHRhcmdldHNgLiBBIGNsYXNzIGRldGVjdGVkIGJvdGggYnlcbiAqIGhlcml0YWdlIChhIHBsdWdpbi1saXN0ZWQgYGltcGxlbWVudHNgIGludGVyZmFjZSkgYW5kIGJ5IGEgZGVjb3JhdG9yXG4gKiBzaXRlIHlpZWxkcyBTRVBBUkFURSBlbnRyaWVzIOKAlCB0aGUgY2xhc3MtZGVjbGFyYXRpb24gcG9pbnQga2VlcHMgc2NvcGVcbiAqICdtb2R1bGUnIChhdHRhY2htZW50IHVua25vd24pIHdoaWxlIGVhY2ggcmVnaXN0cmF0aW9uIHNpdGUgY2FycmllcyBpdHNcbiAqIG93biBzY29wZS4gT25lIHBvaW50IHNlcnZpbmcgbXVsdGlwbGUgc2NvcGVzIHZpYSBtZXJnZWQgc2NvcGUgbGlzdHMgd2FzXG4gKiByZWplY3RlZDogY29uc3VtZXJzIChtbmVtb2dyYXBoaWNhIGRpYW1vbmRzKSBrZXkgb2ZmIGEgc2luZ2xlIHNjb3BlIHBlclxuICogcG9pbnQsIGFuZCBzZXBhcmF0ZSBlbnRyaWVzIGtlZXAgdGhhdCBjb250cmFjdCBzaW1wbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1bWVudGF0aW9uUG9pbnQge1xuXHQvKiogS2luZCBvZiBsaWZlY3ljbGUgY3Jvc3Nyb2FkICovXG5cdGtpbmQ6IEluc3RydW1lbnRhdGlvbktpbmQ7XG5cdC8qKiBDbGFzcyBwcm92aWRpbmcgdGhlIGluc3RydW1lbnRhdGlvbiAoZS5nLiwgXCJBdXRoR3VhcmRcIikgKi9cblx0Y2xhc3NOYW1lOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKGNsYXNzIGRlY2xhcmF0aW9uIHdoZW4gZGVjbGFyZWQgaW4tcHJvamVjdCwgZWxzZSB0aGUgcmVnaXN0cmF0aW9uIHNpdGUpICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDb2RlIHNuaXBwZXQ6IHNpZ25hdHVyZSAvIGZpcnN0IGxpbmUsIGxpa2UgRURTIGBjb2RlYCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBXaGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMgKi9cblx0c2NvcGU6IEluc3RydW1lbnRhdGlvblNjb3BlO1xuXHQvKiogQ29udHJvbGxlci9wcm92aWRlciBuYW1lcyB0aGUgcG9pbnQgYXR0YWNoZXMgdG87IGVtcHR5IGZvciBnbG9iYWwgcG9pbnRzICovXG5cdHRhcmdldHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBpbnN0cnVtZW50YXRpb24uanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvbkpzb24ge1xuXHQvKiogU2NoZW1hIHZlcnNpb246IDIgYWRkcyB0aGUgb3B0aW9uYWwgY3JlYXRpb25HcmFwaCBrZXkgKFBoYXNlIDMpICovXG5cdHZlcnNpb246IG51bWJlcjtcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xuXHQvKipcblx0ICogSW5zaWRlLW91dCBjcmVhdGlvbiB3YWxrIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDMpOiB3aGljaFxuXHQgKiBzY29wZXMgY3JlYXRlIG1uZW1vbmljYSBpbnN0YW5jZXMgYW5kIHdobyBjYWxscyB0aGVtLCB3YWxrZWQgb3V0d2FyZCB0b1xuXHQgKiB0aGUgc3RhcnRlcnMuIEFic2VudCB3aGVuIHRoZSB3cml0ZXIgaXMgY2FsbGVkIHdpdGhvdXQgY3JlYXRpb24tZ3JhcGhcblx0ICogZGF0YSAoZGlyZWN0IGxpYnJhcnkgdXNlKTsgYWx3YXlzIHByZXNlbnQgZnJvbSB0aGUgQ0xJLlxuXHQgKi9cblx0Y3JlYXRpb25HcmFwaD86IENyZWF0aW9uR3JhcGg7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGNvbnRyb2wuanNvbiAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjIpOiBgY2FsbGVyc2BcbiAqIGNhcnJpZXMgdGhlIHNhbWUgY3JlYXRpb24gZ3JhcGggaW5zdHJ1bWVudGF0aW9uLmpzb24gdjIgY2FycmllcyB1bmRlclxuICogYGNyZWF0aW9uR3JhcGhgLCBgcG9pbnRzYCB0aGUgc2FtZSBwbHVnaW4tc3VwcGxpZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50cy5cbiAqIGluc3RydW1lbnRhdGlvbi5qc29uIHN0YXlzIHVuY2hhbmdlZCBmb3IgbW5lbW9ncmFwaGljYTsgY29udHJvbC5qc29uIGlzXG4gKiB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3QgcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEpzb24ge1xuXHR2ZXJzaW9uOiAnMS4yJztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0Y2FsbGVyczogQ3JlYXRpb25HcmFwaDtcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xufVxuXG4vKipcbiAqIEZsb3cga2luZCBmb3IgdHJhY2tpbmcgbmF0aXZlIGluc3RhbmNlIHVzYWdlIHBhdHRlcm5zIOKAlCBXSEFUIEZMT1dTIFdIRVJFXG4gKiBpbiBwbGFpbiBzb3VyY2Ugc2hhcGVzLiBFYWNoIGtpbmQgbmFtZXMgb25lIHN5bnRhY3RpYyBwYXR0ZXJuIHRoYXQgbW92ZXNcbiAqIGEgdHlwZWQgdmFsdWUsIHdpdGggdGhlIHNoYXBlIHRoYXQgcHJvZHVjZXMgaXQ6XG4gKlxuICogICAncHJvcGVydHlSZWFkJyAgICAgIHJlYWRpbmcgYSBmaWVsZCBvZmYgdGhlIGluc3RhbmNlIOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGB1c2VyLm5hbWVgIChhbHNvIGB1c2VyPy5uYW1lYCDigJQgb3B0aW9uYWwgY2hhaW5pbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzIGFzIGEgcGxhaW4gcHJvcGVydHlSZWFkKVxuICogICAncHJvcGVydHlXcml0ZScgICAgIGFzc2lnbmluZyBhIGZpZWxkIOKAlCBgdXNlci5uYW1lID0gJ3gnYFxuICogICAnbWV0aG9kQ2FsbCcgICAgICAgIGNhbGxpbmcgYSBtZXRob2Qgb24gaXQg4oCUIGB1c2VyLnZhbGlkYXRlKClgXG4gKiAgICdlbGVtZW50QWNjZXNzJyAgICAgYnJhY2tldCByZWFkIOKAlCBgdXNlclsnbmFtZSddYFxuICogICAnZGVzdHJ1Y3R1cmVSZWFkJyAgIGRlc3RydWN0dXJpbmcgcHVsbHMgdGhlIGZpZWxkcyBhcGFydCDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgY29uc3QgeyBuYW1lIH0gPSB1c2VyYFxuICogICAncGFzc0FzQXJnJyAgICAgICAgIHRoZSB2YWx1ZSBjcm9zc2VzIGludG8gYSBjYWxsIGFzIGFuIGFyZ3VtZW50IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGBwcm9jZXNzVXNlcih1c2VyKWAgKGNvbnRleHQgbmFtZXMgY2FsbGVlICsgc2xvdClcbiAqICAgJ3JldHVybicgICAgICAgICAgICB0aGUgdmFsdWUgbGVhdmVzIHRoZSBmdW5jdGlvbiBhcyBpdHMgcmVzdWx0IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGByZXR1cm4gdXNlcmBcbiAqICAgJ3NwcmVhZCcgICAgICAgICAgICB0aGUgZmllbGRzIHNjYXR0ZXIgaW50byBhIGxpdGVyYWwg4oCUIGAoeyAuLi51c2VyIH0pYFxuICogICAncmVhc3NpZ25tZW50JyAgICAgIHRoZSBiaW5kaW5nIGlzIHJlLXBvaW50ZWQg4oCUIGB1c2VyID0gb3RoZXJgXG4gKiAgICdpbnN0YW50aWF0aW9uJyAgICAgYSBjb25zdHJ1Y3Rpb24tc2hhcGVkIGNhbGwg4oCUIGBuZXcgVXNlcigpYCAoYWxzb1xuICogICAgICAgICAgICAgICAgICAgICAgIHJlY29yZGVkIGZvciBjaGFpbiB0aXBzIGFuZCBjYWxsL2FwcGx5L2ZvcmsvbWVyZ2UpXG4gKlxuICogJ2FycmF5RWxlbWVudCcgYW5kICdjb25kaXRpb25hbEFjY2VzcycgYXJlIHJlc2VydmVkIG1lbWJlcnMgb2YgdGhlXG4gKiB1bmlvbiDigJQgZGVjbGFyZWQsIG5vdCB5ZXQgZW1pdHRlZCBieSB0aGUgYW5hbHl6ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEZsb3dLaW5kID1cblx0fCAncHJvcGVydHlSZWFkJ1xuXHR8ICdwcm9wZXJ0eVdyaXRlJ1xuXHR8ICdtZXRob2RDYWxsJ1xuXHR8ICdkZXN0cnVjdHVyZVJlYWQnXG5cdHwgJ3Bhc3NBc0FyZydcblx0fCAncmV0dXJuJ1xuXHR8ICdzcHJlYWQnXG5cdHwgJ2FycmF5RWxlbWVudCdcblx0fCAnY29uZGl0aW9uYWxBY2Nlc3MnXG5cdHwgJ2VsZW1lbnRBY2Nlc3MnXG5cdHwgJ3JlYXNzaWdubWVudCdcblx0fCAnaW5zdGFudGlhdGlvbic7XG5cbi8qKlxuICogRmxvdyBpbmZvIGZvciBuYXRpdmUgaW5zdGFuY2UgdXNhZ2UgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgZmxvdyAqL1xuXHRraW5kOiBGbG93S2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0eSBuYW1lIGlmIGFwcGxpY2FibGUgKi9cblx0cHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYga25vd24gKi9cblx0dGFyZ2V0VHlwZT86IHN0cmluZztcblx0LyoqIENvbnRleHQgKGZ1bmN0aW9uIG5hbWUsIHBhcmFtIHBvc2l0aW9uLCBldGMuKSAqL1xuXHRjb250ZXh0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBmbG93Lmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZmxvdzogUmVjb3JkPHN0cmluZywgRmxvd0luZm9bXT47XG59XG5cbi8qKlxuICogV2hhdCBhIG1vZHVsZS1sZXZlbCBiaW5kaW5nIGlzLiBWYXJpYWJsZXMgYXJlIGNsYXNzaWZpZWQgYXMgJ2NvbnN0J1xuICogcmVnYXJkbGVzcyBvZiBsZXQvdmFyIOKAlCBtdXRhYmlsaXR5IChyZWFzc2lnbm1lbnQgdHJhY2tpbmcpIGlzIHRoZVxuICogbG9jYWwtc2NvcGUgd2Fsa2VyJ3MgY29uY2VybiAoUGhhc2UgMiksIG5vdCB0aGUgbW9kdWxlIGdyYXBoJ3MuXG4gKi9cbmV4cG9ydCB0eXBlIE1vZHVsZUJpbmRpbmdLaW5kID1cblx0fCAnZnVuY3Rpb24nXG5cdHwgJ2NsYXNzJ1xuXHR8ICdjb25zdCdcblx0fCAndHlwZSdcblx0fCAndW5rbm93bic7XG5cbi8qKlxuICogSG93IGEgYmluZGluZyBlbnRlcnMgYSBtb2R1bGVcbiAqL1xuZXhwb3J0IHR5cGUgTW9kdWxlSW1wb3J0S2luZCA9XG5cdHwgJ25hbWVkJ1xuXHR8ICdkZWZhdWx0J1xuXHR8ICduYW1lc3BhY2UnXG5cdHwgJ3JlcXVpcmUnO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBtb2R1bGUtbGV2ZWwgYmluZGluZyAoZXhwb3J0LCBpbXBvcnQsIG9yIHJlLWV4cG9ydCkuXG4gKlxuICogYG5hbWVgIGlzIGFsd2F5cyB0aGUgbmFtZSB0aGlzIG1vZHVsZSBwcmVzZW50czogdGhlIGxvY2FsIGlkZW50aWZpZXIgZm9yXG4gKiBpbXBvcnRzLCB0aGUgZXhwb3J0ZWQgbmFtZSBmb3IgZXhwb3J0cy4gYGltcG9ydEFsaWFzYCBjYXJyaWVzIHRoZSBvcmlnaW5hbFxuICogbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGl0IGRpZmZlcnMgKGBpbXBvcnQgeyBYIGFzIFkgfWAg4oaSIG5hbWUgJ1knLFxuICogaW1wb3J0QWxpYXMgJ1gnOyBgZXhwb3J0IHsgWCBhcyBZIH0gZnJvbSDigKZgIOKGkiBuYW1lICdZJywgaW1wb3J0QWxpYXMgJ1gnKS5cbiAqIEZvciBkZWZhdWx0IGltcG9ydHMgbmFtZSBpcyB0aGUgbG9jYWwgaWRlbnRpZmllciBhbmQgdGhlIHNvdXJjZSBsb29rdXAga2V5XG4gKiBpcyAnZGVmYXVsdCcgKGltcGxpZWQgYnkgaW1wb3J0S2luZCk7IGZvciBuYW1lc3BhY2UgaW1wb3J0cy9leHBvcnRzIG5hbWUgaXNcbiAqIHRoZSBuYW1lc3BhY2UgYWxpYXMgKCcqJyBmb3IgYmFyZSBgZXhwb3J0ICogZnJvbSDigKZgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVCaW5kaW5nIHtcblx0LyoqIE5hbWUgYXMgcHJlc2VudGVkIGluIHRoaXMgbW9kdWxlIChsb2NhbCBuYW1lIGZvciBpbXBvcnRzLCBleHBvcnRlZCBuYW1lIGZvciBleHBvcnRzKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBXaGF0IHRoZSBiaW5kaW5nIGlzOyBiYWNrZmlsbGVkIGZyb20gdGhlIG9yaWdpbiBtb2R1bGUgd2hlbiByZXNvbHZhYmxlICovXG5cdGtpbmQ6IE1vZHVsZUJpbmRpbmdLaW5kO1xuXHQvKipcblx0ICogUmVzb2x2ZWQgYWJzb2x1dGUgZmlsZSBwYXRoIG9mIHRoZSBzb3VyY2UgbW9kdWxlICh0aGUgbW9kdWxlIGl0c2VsZiBmb3Jcblx0ICogbG9jYWwgZGVjbGFyYXRpb25zOyB0aGUgcmF3IHNwZWNpZmllciB3aGVuIHJlc29sdXRpb24gZmFpbHMpXG5cdCAqL1xuXHRzb3VyY2VNb2R1bGU6IHN0cmluZztcblx0LyoqIEhvdyB0aGUgYmluZGluZyBlbnRlcnMgdGhlIG1vZHVsZSAoYWJzZW50IG9uIHBsYWluIGxvY2FsIGV4cG9ydHMpICovXG5cdGltcG9ydEtpbmQ/OiBNb2R1bGVJbXBvcnRLaW5kO1xuXHQvKiogT3JpZ2luYWwgbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGFsaWFzZWQgKi9cblx0aW1wb3J0QWxpYXM/OiBzdHJpbmc7XG5cdC8qKiBUcnVlIGZvciBgZXhwb3J0IHsgWCB9IGZyb20gJy4veSdgIC8gYGV4cG9ydCAqIGZyb20gJy4veSdgIChiYXJyZWxzKSAqL1xuXHRpc1JlRXhwb3J0OiBib29sZWFuO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBzcGVjaWZpZXIgcmVzb2x2ZWQgaW50byBub2RlX21vZHVsZXNcblx0ICogKHRzLnJlc29sdmVNb2R1bGVOYW1lJ3MgaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQpLiBFeHRlcm5hbCBiaW5kaW5ncyBhcmVcblx0ICogcmVjb3JkZWQgZm9yIHJlZmVyZW5jZSBidXQgbmV2ZXIgZW50ZXIgYGRlcGVuZGVuY2llc2AgYW5kIGFyZSBuZXZlciB3YWxrZWQuXG5cdCAqIE5vZGUuanMgYnVpbHRpbnMgYXJlIG5vdCByZWNvcmRlZCBhcyBiaW5kaW5ncyBhdCBhbGwg4oCUIHNlZVxuXHQgKiBNb2R1bGVJbmZvLmJ1aWx0aW5TcGVjaWZpZXJzLlxuXHQgKi9cblx0ZXh0ZXJuYWw/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBlci1tb2R1bGUgcmVjb3JkIG9mIHRoZSBjcm9zcy1maWxlIGdyYXBoIChtb2R1bGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlSW5mbyB7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKG1hcCBrZXkpICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSAqL1xuXHRkZWZpbmVkVHlwZXM6IHN0cmluZ1tdO1xuXHQvKiogRXZlcnl0aGluZyB0aGlzIG1vZHVsZSBleHBvcnRzIChsb2NhbCBkZWNsYXJhdGlvbnMgYW5kIHJlLWV4cG9ydHMpICovXG5cdGV4cG9ydGVkQmluZGluZ3M6IE1vZHVsZUJpbmRpbmdbXTtcblx0LyoqIEV2ZXJ5dGhpbmcgdGhpcyBtb2R1bGUgaW1wb3J0cyAocmUtZXhwb3J0cyBhcHBlYXIgaGVyZSB0b28sIG1hcmtlZCBpc1JlRXhwb3J0KSAqL1xuXHRpbXBvcnRlZEJpbmRpbmdzOiBNb2R1bGVCaW5kaW5nW107XG5cdC8qKiBBYnNvbHV0ZSBwYXRocyBvZiBhbmFseXplZCBwcm9qZWN0IG1vZHVsZXMgdGhpcyBtb2R1bGUgaW1wb3J0cyBmcm9tICovXG5cdGRlcGVuZGVuY2llczogc3RyaW5nW107XG5cdC8qKiBJbXBvcnQgc3BlY2lmaWVycyB0aGF0IG1vZHVsZSByZXNvbHV0aW9uIGNvdWxkIG5vdCByZXNvbHZlIChub2RlIGJ1aWx0aW5zIGV4Y2x1ZGVkIOKAlCBzZWUgYnVpbHRpblNwZWNpZmllcnMpICovXG5cdHVucmVzb2x2ZWRTcGVjaWZpZXJzOiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIE5vZGUuanMgYnVpbHRpbiBzcGVjaWZpZXJzIHRoaXMgbW9kdWxlIGltcG9ydHMgKCdwYXRoJywgJ25vZGU6ZnMnLCDigKYpLFxuXHQgKiBtYXRjaGVkIGFnYWluc3Qgbm9kZTptb2R1bGUncyBidWlsdGluTW9kdWxlcyBpbiBib3RoIGJhcmUgYW5kXG5cdCAqIGBub2RlOmAtcHJlZml4ZWQgZm9ybXMuIFJlY29yZGVkIGZvciBob25lc3R5IG9ubHk6IGJ1aWx0aW5zIHByb2R1Y2Ugbm9cblx0ICogYmluZGluZ3MsIG5ldmVyIGVudGVyIGBkZXBlbmRlbmNpZXNgL2B1bnJlc29sdmVkU3BlY2lmaWVyc2AsIGFuZCBuZXZlclxuXHQgKiBwcm9kdWNlIGVkZ2VzLlxuXHQgKi9cblx0YnVpbHRpblNwZWNpZmllcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgY3Jvc3MtbW9kdWxlIHVzYWdlIG9mIGEgbW5lbW9uaWNhIHR5cGU6IHVzYWdlTW9kdWxlIGltcG9ydHMgYSBiaW5kaW5nXG4gKiB3aG9zZSBvcmlnaW4gbW9kdWxlIGRlZmluZXMgdGhlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NNb2R1bGVVc2FnZSB7XG5cdC8qKiBNYXRjaGVkIG1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIChvciB0aGUgaW1wb3J0ZWQgbmFtZSB3aGVuIHVubWF0Y2hlZCkgKi9cblx0dHlwZVBhdGg6IHN0cmluZztcblx0LyoqIEFic29sdXRlIHBhdGggb2YgdGhlIG1vZHVsZSB3aGVyZSB0aGUgdHlwZSBpcyBkZWZpbmVkIChyZS1leHBvcnQgY2hhaW5zIGNoYXNlZCB0byB0aGUgb3JpZ2luKSAqL1xuXHRkZWZpbml0aW9uTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBpbXBvcnRpbmcgbW9kdWxlICovXG5cdHVzYWdlTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBJbXBvcnQgc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR1c2FnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGZ1bGwgbW9kdWxlIGdyYXBoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlR3JhcGgge1xuXHQvKiogS2V5ZWQgYnkgYWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdG1vZHVsZXM6IE1hcDxzdHJpbmcsIE1vZHVsZUluZm8+O1xuXHRlZGdlczogQ3Jvc3NNb2R1bGVVc2FnZVtdO1xuXHQvKipcblx0ICogQ2lyY3VsYXIgaW1wb3J0IGNoYWlucyAoZWFjaCBhbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocykuIFJlY29yZGVkLCBub3Rcblx0ICogYW4gZXJyb3Ig4oCUIG1uZW1vbmljYSBzdHJpY3RDaGFpbjpmYWxzZSBwZXJtaXRzIG5vbi1saW5lYXIgY29uc3RydWN0aW9uXG5cdCAqL1xuXHRjeWNsZXM6IHN0cmluZ1tdW107XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIG1vZHVsZXMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRtb2R1bGVzOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVJbmZvPjtcblx0ZWRnZXM6IENyb3NzTW9kdWxlVXNhZ2VbXTtcblx0Y3ljbGVzOiBzdHJpbmdbXVtdO1xufVxuXG4vKipcbiAqIFdoYXQgYSB0cmFja2VkIHNjb3BlIGlzLiBEZWNpc2lvbiA1IChyZXNvbHZlZCAyMDI2LTA5LTAzKTogZnVuY3Rpb24sXG4gKiBtZXRob2QsIGFuZCBhcnJvdyBzY29wZXMgT05MWSDigJQgbm8gYmxvY2sgc2NvcGVzLiAnbW9kdWxlJyBpcyB0aGUgc3ludGhldGljXG4gKiBwZXItZmlsZSByb290IHNjb3BlIHNvIG1vZHVsZS1sZXZlbCBpbnN0YW5jZSBjcmVhdGlvbnMgYXJlIGxhYmVsZWQsIG5vdFxuICogZHJvcHBlZCAod2Fsa2VyIHBsYW46IFwicmVjb3JkZWQgYXMgYSByb290ZWQgaW5zdGFuY2VcIikuXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlS2luZCA9XG5cdHwgJ21vZHVsZSdcblx0fCAnZnVuY3Rpb24nXG5cdHwgJ21ldGhvZCdcblx0fCAnYXJyb3cnO1xuXG4vKipcbiAqIE9uZSB0cmFja2VkIHNjb3BlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZUluZm8ge1xuXHQvKiogVW5pcXVlIGlkOiBtb2R1bGUgc2NvcGUgaXMgdGhlIGZpbGUgcGF0aDsgZnVuY3Rpb24gc2NvcGVzIGFyZSBmaWxlOmxpbmU6Y29sIG9mIHRoZSBzY29wZSBub2RlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIERlY2lzaW9uIDggbGFiZWxpbmc6IGZ1bmN0aW9uL21ldGhvZCBuYW1lICgnQ2xhc3MubWV0aG9kJyBmb3IgbWV0aG9kcyksIGZpbGU6bGluZSBmb3IgYW5vbnltb3VzIGhvbGRlcnMgKi9cblx0bmFtZTogc3RyaW5nO1xuXHRraW5kOiBTY29wZUtpbmQ7XG5cdC8qKiBOZWFyZXN0IGVuY2xvc2luZyBzY29wZSAodW5kZWZpbmVkIG9uIG1vZHVsZSBzY29wZXMpICovXG5cdHBhcmVudFNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIFNjb3BlIHN0YXJ0OiBmaWxlLnRzOkxpbmU6Q29sIChtb2R1bGUgc2NvcGU6IGZpbGU6MToxKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSB0cmFja2VkIHZhcmlhYmxlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVZhcmlhYmxlIHtcblx0bmFtZTogc3RyaW5nO1xuXHQvKiogT3duaW5nIHNjb3BlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIHdoZW4ga25vd24gKG5ldyBYKCkgb24gYSBrbm93biB0eXBlLCBuZXcgaW5zdC5TdWIoKSBjaGFpbmluZywgb3IgYSBrbm93biBhbm5vdGF0aW9uKSAqL1xuXHR0eXBlUGF0aD86IHN0cmluZztcblx0LyoqIENoZWFwIHRleHR1YWwgdHlwZTogYW5ub3RhdGlvbiB0ZXh0IG9yIHRpbnkgaW5pdGlhbGl6ZXIgY2xhc3NpZmljYXRpb24gKi9cblx0aW5mZXJyZWRUeXBlPzogc3RyaW5nO1xuXHQvKiogRGVjbGFyYXRpb24gc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRkZWNsYXJhdGlvbjogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcjogYm9vbGVhbjtcblx0LyoqIGNvbnN0ID0gZmFsc2U7IGxldC92YXIgYW5kIHBhcmFtZXRlcnMgPSB0cnVlIChwYXJhbWV0ZXJzIGFyZSByZWFzc2lnbmFibGUpICovXG5cdGlzTXV0YWJsZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFJlYXNzaWdubWVudCBzaXRlcyAoZmlsZS50czpMaW5lOkNvbCkgb2YgdGhpcyBiaW5kaW5nIOKAlCBmbG93LXRlcm1pbmF0aW9uXG5cdCAqIHBvaW50cyAoZGVjaXNpb24gNik6IHRoZSBQaGFzZSAzIHdhbGtlciBzdG9wcyBmb2xsb3dpbmcgdGhlIGJpbmRpbmcgdGhlcmVcblx0ICovXG5cdHJlYXNzaWdubWVudHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmdWxsIGxvY2FsLXNjb3BlIGFuYWx5c2lzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVBbmFseXNpcyB7XG5cdC8qKiBLZXllZCBieSBzY29wZUlkICovXG5cdHNjb3BlczogTWFwPHN0cmluZywgU2NvcGVJbmZvPjtcblx0LyoqIEtleWVkIGJ5IGAke3Njb3BlSWR9IyR7bmFtZX1gICovXG5cdHZhcmlhYmxlczogTWFwPHN0cmluZywgU2NvcGVWYXJpYWJsZT47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHNjb3Blcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0c2NvcGVzOiBSZWNvcmQ8c3RyaW5nLCBTY29wZUluZm8+O1xuXHR2YXJpYWJsZXM6IFNjb3BlVmFyaWFibGVbXTtcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvZiB0aGUgY3JlYXRpb24gZ3JhcGggKGluc3RydW1lbnRhdGlvbiB3YWxrZXIgcGxhbiwgUGhhc2UgMyk6XG4gKiBhIHNjb3BlIHRoYXQgY3JlYXRlcyBtbmVtb25pY2EgaW5zdGFuY2VzLCBvciBvbmUgc2l0dGluZyBvbiBhIGNhbGwgcGF0aFxuICogdG8gYSBjcmVhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGhOb2RlIHtcblx0LyoqIExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZCAobW9kdWxlIHNjb3BlID0gZmlsZSBwYXRoOyBmdW5jdGlvbiBzY29wZXMgPSBmaWxlOmxpbmU6Y29sKSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBEZWNpc2lvbiA4IGxhYmVsOiBmdW5jdGlvbi9tZXRob2QgbmFtZSAoJ0NsYXNzLm1ldGhvZCcpLCBmaWxlOmxpbmUgZm9yIGFub255bW91cyBob2xkZXJzICovXG5cdG5hbWU6IHN0cmluZztcblx0a2luZDogU2NvcGVLaW5kO1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBzdGFydDogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogVHJ1ZSB3aGVuIHRoZSB3YWxrIGZvdW5kIG5vIGNhbGxlcnMg4oCUIGFuIGFwcGxpY2F0aW9uIGVudHJ5IHBvaW50ICovXG5cdHN0YXJ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT25lIGVkZ2Ugb2YgdGhlIGNyZWF0aW9uIGdyYXBoOiB0aGUgY2FsbGVyIHNjb3BlIGludm9rZXMgb3IgcmVmZXJlbmNlcyB0aGVcbiAqIGNhbGxlZSBzY29wZS4gRGlyZWN0aW9uIGlzIGluc2lkZS1vdXQ6IGNhbGxlciDihpIgY2FsbGVlLCB3aGVyZSB0aGUgY2FsbGVlIGlzXG4gKiBjbG9zZXIgdG8gdGhlIGNyZWF0aW9uIHNpdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaEVkZ2Uge1xuXHQvKiogQ2FsbGluZyBzY29wZSdzIHNjb3BlSWQgKi9cblx0Y2FsbGVyOiBzdHJpbmc7XG5cdC8qKiBDYWxsZWQgKGhvbGRlcikgc2NvcGUncyBzY29wZUlkICovXG5cdGNhbGxlZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluc3RhbnRpYXRpb24gYW5jaG9yOiBvbmUgbW5lbW9uaWNhIGNyZWF0aW9uIHNpdGUgcGlubmVkIHRvIGl0cyBob2xkZXJcbiAqIHNjb3BlLlxuICpcbiAqIGB2YXJpYWJsZWAvYHRlcm1pbmF0ZWRBdGAgYXJlIGEgZG9jdW1lbnRlZCBoZXVyaXN0aWM6IHRoZSB2YXJpYWJsZSBkZWNsYXJlZFxuICogaW4gdGhlIGhvbGRlciBzY29wZSBvbiB0aGUgU0FNRSBsaW5lIGFzIHRoZSBjcmVhdGlvbiwgd2hvc2UgdHlwZVBhdGggKHdoZW5cbiAqIGtub3duKSBtYXRjaGVzIHRoZSBjcmVhdGVkIHR5cGUuIGB0ZXJtaW5hdGVkQXRgIGlzIHRoYXQgdmFyaWFibGUncyBmaXJzdFxuICogcmVhc3NpZ25tZW50IHNpdGUg4oCUIHRoZSBkZWNpc2lvbiA2IGZsb3ctdGVybWluYXRpb24gcG9pbnQgd2hlcmUgdGhlIHdhbGtlclxuICogc3RvcHMgZm9sbG93aW5nIHRoZSBiaW5kaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uQW5jaG9yIHtcblx0LyoqIENyZWF0aW9uIHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKHRoZSB1c2FnZXMuanNvbiBsb2NhdGlvbikgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIFNjb3BlIGhvbGRpbmcgdGhlIGNyZWF0aW9uIChzY29wZXMuanNvbiBzY29wZUlkKSAqL1xuXHRob2xkZXJTY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aCBiZWluZyBjcmVhdGVkICovXG5cdHR5cGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBDb25zdHJ1Y3RvciBleHByZXNzaW9uIHRleHQgKCdUaGluZycsICd1c2VyLkFkbWluRW50aXR5JywgYSBsb29rdXAgYWxpYXMgbmFtZSkgKi9cblx0Y29uc3RydWN0b3JUZXh0Pzogc3RyaW5nO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBob2xkZXIgaXMgdGhlIG1vZHVsZSBzY29wZSDigJQgYSByb290ZWQgaW5zdGFuY2UgKHBsYW46XG5cdCAqIGxlZ2l0aW1hdGUgcm9vdCBvciBkZXZlbG9wZXIgZXJyb3I7IGxhYmVsZWQsIG5vdCBwb2xpY2VkKVxuXHQgKi9cblx0cm9vdGVkPzogYm9vbGVhbjtcblx0LyoqIFZhcmlhYmxlIHRoZSBmcmVzaCBpbnN0YW5jZSB3YXMgYm91bmQgdG8gKHNhbWUtbGluZSBoZXVyaXN0aWMpICovXG5cdHZhcmlhYmxlPzogc3RyaW5nO1xuXHQvKiogRmlyc3QgcmVhc3NpZ25tZW50IHNpdGUgb2YgdGhhdCB2YXJpYWJsZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR0ZXJtaW5hdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNyZWF0aW9uIGdyYXBoOiBldmVyeXRoaW5nIHRoYXQgbGVhZHMgdG8gbW5lbW9uaWNhIGluc3RhbmNlcyBiZWluZ1xuICogY3JlYXRlZC4gRW1pdHRlZCBhcyB0aGUgYGNyZWF0aW9uR3JhcGhgIGtleSBvZiBpbnN0cnVtZW50YXRpb24uanNvbiB2Mi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoIHtcblx0bm9kZXM6IENyZWF0aW9uR3JhcGhOb2RlW107XG5cdGVkZ2VzOiBDcmVhdGlvbkdyYXBoRWRnZVtdO1xuXHRhbmNob3JzOiBDcmVhdGlvbkFuY2hvcltdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBoaWVyYXJjaHkuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeUpzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHJvb3RzOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIHRoZSBjb2xsZWN0aW9ucy5qc29uIG1hbmlmZXN0LiBUaGUgZGVmYXVsdCBjb2xsZWN0aW9uIGlzXG4gKiBlbWl0dGVkIGZpcnN0IHdoZW5ldmVyIGRlZmF1bHQtY29sbGVjdGlvbiB0eXBlcyBleGlzdDogaXQgaGFzIG5vIGNhbGxcbiAqIHNpdGUsIHNvIGBpZGAgYW5kIGBsb2NhdGlvbmAgc3RheSBudWxsICh1bnByZWZpeGVkIGZ1bGxQYXRocyBBUkUgaXRzXG4gKiBpZGVudGl0eSkuIEZvcm1hdCAxLjI6IHRoZSByZWdpc3RyeSBpbnRlcmZhY2UgaXMgTk9UIHBhcnQgb2YgdGhlXG4gKiBtYW5pZmVzdCAoYSBUeXBlU2NyaXB0LW9ubHkgY29uY2VybiDigJQgdGhlIGluLW1lbW9yeVxuICogYHJlZ2lzdHJ5SW50ZXJmYWNlTmFtZWAgdGhhdCB0eXBlcy50cy9yZWdpc3RyeS50cyBhcmUgZ2VuZXJhdGVkIGZyb21cbiAqIHN0YXlzIG9uIHRoZSBUeXBlTm9kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbk1hbmlmZXN0RW50cnkge1xuXHQvKiogTWludGVkIGlkIHVzZWQgaW4gYGNvbGxlY3Rpb25JZDo6YCBmdWxsUGF0aCBwcmVmaXhlczsgbnVsbCBmb3IgdGhlIGRlZmF1bHQgY29sbGVjdGlvbiAqL1xuXHRpZDogc3RyaW5nIHwgbnVsbDtcblx0LyoqIFZhcmlhYmxlIGhvbGRpbmcgdGhlIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIHJlc3VsdCAoJ2RlZmF1bHRUeXBlcycgZm9yIHRoZSBkZWZhdWx0IGNvbGxlY3Rpb24pICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIGNhbGwgc2l0ZSAoZmlsZTpsaW5lOmNvbCk7IG51bGwgZm9yIHRoZSBkZWZhdWx0IGNvbGxlY3Rpb24gKi9cblx0bG9jYXRpb246IHN0cmluZyB8IG51bGw7XG5cdC8qKlxuXHQgKiBTb3VyY2UgbGFuZ3VhZ2Ugb2YgdGhpcyBjb2xsZWN0aW9uJ3MgY29kZWJhc2UgKGZvcm1hdCAxLjI6IHJlcXVpcmVkIOKAlFxuXHQgKiB0aGVyZSBpcyBubyBkZWZhdWx0IGxhbmd1YWdlKS4gdGFjdGljYSBpcyB0aGUgVHlwZVNjcmlwdCBnZW5lcmF0b3IsXG5cdCAqIHNvIGV2ZXJ5IGVudHJ5IGl0IHdyaXRlcyBpcyBcInR5cGVzY3JpcHRcIi5cblx0ICovXG5cdGxhbmd1YWdlOiAndHlwZXNjcmlwdCc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGNvbGxlY3Rpb25zLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeVtdO1xufVxuXG4vKipcbiAqIFN0cnVjdHVyZWQgaGllcmFyY2h5IG5vZGUgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGllcmFyY2h5Tm9kZSB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgZG90dGVkIHBhdGggKGUuZy4sIFwiVXNlclR5cGUuQWRtaW5UeXBlXCIpICovXG5cdGZ1bGxQYXRoOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIENoaWxkIHR5cGVzIGluIHRoZSBUcmllICovXG5cdGNoaWxkcmVuOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogQSBmYXRhbCByZXNvbHV0aW9uIGZhaWx1cmU6IHNhbWUtbmFtZXNwYWNlIGR1cGxpY2F0ZSBtbmVtb25pY2FcbiAqIGRlZmluaXRpb25zLCBvciBhIG1uZW1vbmljYS1ncmFwaCB0eXBlIHJlZmVyZW5jZSB0aGF0IHN0YXlzIGFtYmlndW91c1xuICogYWZ0ZXIgcGF0aC1hd2FyZSByZXNvbHV0aW9uIChvciByZXNvbHZlcyB0byBub3RoaW5nKS4gVGhlIENMSSBwcmludHNcbiAqIGV2ZXJ5IGxvY2F0aW9uIGFuZCB3cml0ZXMgbm8gLnRhY3RpY2Egb3V0cHV0IGF0IGFsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHV0aW9uRXJyb3Ige1xuXHQvKiogaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGZhaWx1cmUgKi9cblx0bWVzc2FnZTogc3RyaW5nO1xuXHQvKiogZXZlcnkgaW52b2x2ZWQgc291cmNlIGxvY2F0aW9uLCBgZmlsZTpsaW5lOmNvbHVtbmAgKi9cblx0bG9jYXRpb25zOiBzdHJpbmdbXTtcbn1cbiJdfQ==
|
package/lib/writer.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ export declare class TypesWriter {
|
|
|
67
67
|
*/
|
|
68
68
|
writeInstrumentationFile(points: InstrumentationPoint[], creationGraph?: CreationGraph): string;
|
|
69
69
|
/**
|
|
70
|
-
* Write control.json file (lethe contract, format 1.
|
|
70
|
+
* Write control.json file (lethe contract, format 1.2): `callers` is the
|
|
71
71
|
* creation graph instrumentation.json v2 carries, `points` the same
|
|
72
72
|
* plugin-supplied instrumentation points. instrumentation.json keeps its
|
|
73
73
|
* shape for mnemographica; control.json is the cross-language contract
|
|
@@ -93,9 +93,11 @@ export declare class TypesWriter {
|
|
|
93
93
|
/**
|
|
94
94
|
* Write the collection manifest: one entry per collection (default
|
|
95
95
|
* first when default-collection types exist), ids + display names +
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
96
|
+
* call sites + language. The `collectionId::` prefix on graph-output
|
|
97
|
+
* fullPaths joins to the entry `id`. Format 1.2: the registry
|
|
98
|
+
* interface is not part of the manifest — the registry-prefixed
|
|
99
|
+
* aliases in types.ts / registry.ts come from the in-memory
|
|
100
|
+
* TypeNode.registryInterfaceName instead.
|
|
99
101
|
*/
|
|
100
102
|
writeCollectionsFile(collections: CollectionManifestEntry[]): string;
|
|
101
103
|
}
|
package/lib/writer.js
CHANGED
|
@@ -200,7 +200,7 @@ class TypesWriter {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
const json = this.relativize({
|
|
203
|
-
version: '1.
|
|
203
|
+
version: '1.2',
|
|
204
204
|
generatedAt: new Date().toISOString(),
|
|
205
205
|
definitions: definitionsObj,
|
|
206
206
|
});
|
|
@@ -219,7 +219,7 @@ class TypesWriter {
|
|
|
219
219
|
usagesObj[key] = value;
|
|
220
220
|
}
|
|
221
221
|
const json = this.relativize({
|
|
222
|
-
version: '1.
|
|
222
|
+
version: '1.2',
|
|
223
223
|
generatedAt: new Date().toISOString(),
|
|
224
224
|
usages: usagesObj,
|
|
225
225
|
});
|
|
@@ -238,7 +238,7 @@ class TypesWriter {
|
|
|
238
238
|
edsObj[key] = value;
|
|
239
239
|
}
|
|
240
240
|
const json = this.relativize({
|
|
241
|
-
version: '1.
|
|
241
|
+
version: '1.2',
|
|
242
242
|
generatedAt: new Date().toISOString(),
|
|
243
243
|
eds: edsObj,
|
|
244
244
|
});
|
|
@@ -265,7 +265,7 @@ class TypesWriter {
|
|
|
265
265
|
return filePath;
|
|
266
266
|
}
|
|
267
267
|
/**
|
|
268
|
-
* Write control.json file (lethe contract, format 1.
|
|
268
|
+
* Write control.json file (lethe contract, format 1.2): `callers` is the
|
|
269
269
|
* creation graph instrumentation.json v2 carries, `points` the same
|
|
270
270
|
* plugin-supplied instrumentation points. instrumentation.json keeps its
|
|
271
271
|
* shape for mnemographica; control.json is the cross-language contract
|
|
@@ -275,7 +275,7 @@ class TypesWriter {
|
|
|
275
275
|
this.ensureDirectory();
|
|
276
276
|
const filePath = path.join(this.outputDir, 'control.json');
|
|
277
277
|
const json = {
|
|
278
|
-
version: '1.
|
|
278
|
+
version: '1.2',
|
|
279
279
|
generatedAt: new Date().toISOString(),
|
|
280
280
|
callers,
|
|
281
281
|
points,
|
|
@@ -296,7 +296,7 @@ class TypesWriter {
|
|
|
296
296
|
flowObj[key] = value;
|
|
297
297
|
}
|
|
298
298
|
const json = this.relativize({
|
|
299
|
-
version: '1.
|
|
299
|
+
version: '1.2',
|
|
300
300
|
generatedAt: new Date().toISOString(),
|
|
301
301
|
flow: flowObj,
|
|
302
302
|
});
|
|
@@ -352,7 +352,7 @@ class TypesWriter {
|
|
|
352
352
|
this.ensureDirectory();
|
|
353
353
|
const filePath = path.join(this.outputDir, 'hierarchy.json');
|
|
354
354
|
const json = this.relativize({
|
|
355
|
-
version: '1.
|
|
355
|
+
version: '1.2',
|
|
356
356
|
generatedAt: new Date().toISOString(),
|
|
357
357
|
roots,
|
|
358
358
|
});
|
|
@@ -362,15 +362,17 @@ class TypesWriter {
|
|
|
362
362
|
/**
|
|
363
363
|
* Write the collection manifest: one entry per collection (default
|
|
364
364
|
* first when default-collection types exist), ids + display names +
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
365
|
+
* call sites + language. The `collectionId::` prefix on graph-output
|
|
366
|
+
* fullPaths joins to the entry `id`. Format 1.2: the registry
|
|
367
|
+
* interface is not part of the manifest — the registry-prefixed
|
|
368
|
+
* aliases in types.ts / registry.ts come from the in-memory
|
|
369
|
+
* TypeNode.registryInterfaceName instead.
|
|
368
370
|
*/
|
|
369
371
|
writeCollectionsFile(collections) {
|
|
370
372
|
this.ensureDirectory();
|
|
371
373
|
const filePath = path.join(this.outputDir, 'collections.json');
|
|
372
374
|
const json = this.relativize({
|
|
373
|
-
version: '1.
|
|
375
|
+
version: '1.2',
|
|
374
376
|
generatedAt: new Date().toISOString(),
|
|
375
377
|
collections,
|
|
376
378
|
});
|
|
@@ -379,4 +381,4 @@ class TypesWriter {
|
|
|
379
381
|
}
|
|
380
382
|
}
|
|
381
383
|
exports.TypesWriter = TypesWriter;
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFPN0I7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFJdkIsWUFBYSxTQUFTLEdBQUcsVUFBVSxFQUFFLFdBQW9CO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxLQUFLLFNBQVM7WUFDM0MsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVUsQ0FBSyxPQUFVO1FBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7WUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxD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U0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFFLFdBQXNDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUUvRCxNQUFNLElBQUksR0FBb0IsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxPQUFPLEVBQU8sS0FBSztZQUNuQixXQUFXLEVBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDdEMsV0FBVztTQUNYLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDO0NBQ0Q7QUFsWUQsa0NBa1lDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcblx0R2VuZXJhdGVkVHlwZXMsIERlZmluaXRpb25JbmZvLCBVc2FnZUluZm8sIEVEU0luZm8sIEZsb3dJbmZvLCBGbG93SnNvbiwgSGllcmFyY2h5Tm9kZSwgSGllcmFyY2h5SnNvbixcblx0SW5zdHJ1bWVudGF0aW9uUG9pbnQsIEluc3RydW1lbnRhdGlvbkpzb24sIE1vZHVsZUdyYXBoLCBNb2R1bGVzSnNvbiwgU2NvcGVBbmFseXNpcywgU2NvcGVzSnNvbiwgQ3JlYXRpb25HcmFwaCxcblx0Q29sbGVjdGlvbk1hbmlmZXN0RW50cnksIENvbGxlY3Rpb25zSnNvbiwgQ29udHJvbEpzb24sIFR5cGVHcmFwaCwgRGVmaW5pdGlvbkZpZWxkLCBEZWZpbml0aW9uQXJnXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFdyaXRlcyBnZW5lcmF0ZWQgdHlwZXMgdG8gZmlsZSBzeXN0ZW1cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVzV3JpdGVyIHtcblx0cHJpdmF0ZSBvdXRwdXREaXI6IHN0cmluZztcblx0cHJpdmF0ZSBwcm9qZWN0Um9vdD86IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvciAob3V0cHV0RGlyID0gJy50YWN0aWNhJywgcHJvamVjdFJvb3Q/OiBzdHJpbmcpIHtcblx0XHR0aGlzLm91dHB1dERpciA9IG91dHB1dERpcjtcblx0XHR0aGlzLnByb2plY3RSb290ID0gcHJvamVjdFJvb3QgPT09IHVuZGVmaW5lZFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogcGF0aC5yZXNvbHZlKHByb2plY3RSb290KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXdyaXRlIGV2ZXJ5IHByb2plY3Qtcm9vdGVkIGFic29sdXRlIHBhdGggaW4gdGhlIHBheWxvYWQgdG8gYVxuXHQgKiBwcm9qZWN0LXJlbGF0aXZlIG9uZSAodmFsdWVzIEFORCBvYmplY3Qga2V5cyksIHNvIC50YWN0aWNhIG91dHB1dFxuXHQgKiBzdGF5cyBwb3J0YWJsZSBhY3Jvc3MgbWFjaGluZXMgYW5kIGNoZWNrb3V0cy4gUGF0aHMgb3V0c2lkZSB0aGVcblx0ICogcHJvamVjdCByb290IGtlZXAgdGhlaXIgYWJzb2x1dGUgZm9ybSDigJQgdGhleSBnZW51aW5lbHkgYXJlXG5cdCAqIG1hY2hpbmUtc3BlY2lmaWMuIENvbnN1bWVycyByZXNvbHZlIHJlbGF0aXZlIGVudHJpZXMgYWdhaW5zdCB0aGVcblx0ICogZGlyZWN0b3J5IHRoYXQgaG9sZHMgLnRhY3RpY2EuXG5cdCAqL1xuXHRwcml2YXRlIHJlbGF0aXZpemU8VD4gKHBheWxvYWQ6IFQpOiBUIHtcblx0XHRpZiAodGhpcy5wcm9qZWN0Um9vdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gcGF5bG9hZDtcblx0XHR9XG5cdFx0Y29uc3QgcHJlZml4ID0gdGhpcy5wcm9qZWN0Um9vdCArIHBhdGguc2VwO1xuXHRcdGNvbnN0IHdhbGsgPSAoaW5wdXQ6IHVua25vd24pOiB1bmtub3duID0+IHtcblx0XHRcdGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGlmICghaW5wdXQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGlucHV0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJlbGF0aXZlID0gaW5wdXQuc2xpY2UocHJlZml4Lmxlbmd0aCk7XG5cdFx0XHRcdGNvbnN0IHdhbGtlZCA9IHJlbGF0aXZlLnNwbGl0KHBhdGguc2VwKS5qb2luKCcvJyk7XG5cdFx0XHRcdHJldHVybiB3YWxrZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcblx0XHRcdFx0Y29uc3Qgd2Fsa2VkID0gaW5wdXQubWFwKHdhbGspO1xuXHRcdFx0XHRyZXR1cm4gd2Fsa2VkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Y29uc3Qgd2Fsa2VkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIE9iamVjdC5lbnRyaWVzKGlucHV0KSkge1xuXHRcdFx0XHRcdGNvbnN0IHdhbGtlZEtleSA9IHdhbGsoa2V5KSBhcyBzdHJpbmc7XG5cdFx0XHRcdFx0d2Fsa2VkWyB3YWxrZWRLZXkgXSA9IHdhbGsodmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB3YWxrZWQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaW5wdXQ7XG5cdFx0fTtcblx0XHRjb25zdCByZXN1bHQgPSB3YWxrKHBheWxvYWQpO1xuXHRcdHJldHVybiByZXN1bHQgYXMgVDtcblx0fVxuXG5cdC8qKlxuXHQgKiBMZWdhY3kgd3JpdGUgbWV0aG9kIC0gZGVsZWdhdGVzIHRvIHdyaXRlVHlwZXNGaWxlXG5cdCAqL1xuXHR3cml0ZSAoZ2VuZXJhdGVkOiBHZW5lcmF0ZWRUeXBlcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMud3JpdGVUeXBlc0ZpbGUoZ2VuZXJhdGVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0eXBlcy50cyBmaWxlIChleHBvcnRhYmxlIHR5cGUgYWxpYXNlcyAtIGRlZmF1bHQgbW9kZSlcblx0ICovXG5cdHdyaXRlVHlwZXNGaWxlIChnZW5lcmF0ZWQ6IEdlbmVyYXRlZFR5cGVzKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAndHlwZXMudHMnKTtcblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBnZW5lcmF0ZWQuY29udGVudCwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGdsb2JhbCBhdWdtZW50YXRpb24gZmlsZSAoaW5kZXguZC50cyAtIG1vZHVsZSBhdWdtZW50YXRpb24gbW9kZSlcblx0ICovXG5cdHdyaXRlR2xvYmFsQXVnbWVudGF0aW9uIChnZW5lcmF0ZWQ6IEdlbmVyYXRlZFR5cGVzKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnaW5kZXguZC50cycpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGdlbmVyYXRlZC5jb250ZW50LCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgdG8gYSBjdXN0b20gZmlsZW5hbWVcblx0ICovXG5cdHdyaXRlVG8gKGZpbGVuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgZmlsZW5hbWUpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnQsICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcblx0ICovXG5cdHByaXZhdGUgZW5zdXJlRGlyZWN0b3J5ICgpOiB2b2lkIHtcblx0XHRpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vdXRwdXREaXIpKSB7XG5cdFx0XHRmcy5ta2RpclN5bmModGhpcy5vdXRwdXREaXIsIHsgcmVjdXJzaXZlIDogdHJ1ZSB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYW4gdGhlIG91dHB1dCBkaXJlY3Rvcnlcblx0ICovXG5cdGNsZWFuICgpOiB2b2lkIHtcblx0XHRpZiAoZnMuZXhpc3RzU3luYyh0aGlzLm91dHB1dERpcikpIHtcblx0XHRcdGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGhpcy5vdXRwdXREaXIpO1xuXHRcdFx0Zm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG5cdFx0XHRcdGZzLnVubGlua1N5bmMocGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCBmaWxlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBvdXRwdXQgZGlyZWN0b3J5XG5cdCAqL1xuXHRnZXRPdXRwdXREaXIgKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMub3V0cHV0RGlyO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGRlZmluaXRpb25zLmpzb24gZmlsZS4gV2hlbiB0aGUgdHlwZSBncmFwaCBpcyBwYXNzZWQgKHRoZSBDTElcblx0ICogYWx3YXlzIHBhc3NlcyBpdCksIGVhY2ggZW50cnkgZ2FpbnMgYGZpZWxkc2AgKHRoZSB0eXBlJ3Mgb3duIGZpZWxkcyBpblxuXHQgKiBkZWNsYXJhdGlvbiBvcmRlciwgZnJvbSBUeXBlTm9kZS5wcm9wZXJ0aWVzKSBhbmQgYGFyZ3NgICh0aGVcblx0ICogY29uc3RydWN0b3IncyBwYXJhbWV0ZXJzLCBmcm9tIFR5cGVOb2RlLmNvbnN0cnVjdG9yUGFyYW1zKSDigJQgdGhlIHNhbWVcblx0ICogc291cmNlIG9mIHRydXRoIHR5cGVzLnRzIHJlbmRlcnMuIEEgcmVzdCBwYXJhbWV0ZXIgaXMgZW1pdHRlZCB3aXRoXG5cdCAqIGBraW5kOiAncmVzdCdgIGFuZCBubyBgb3B0aW9uYWxgIChsZXRoZSBkZWZpbml0aW9ucyBjb250cmFjdCk7IGBhcmdzYFxuXHQgKiBpcyBvbWl0dGVkIG9ubHkgd2hlbiBjb25zdHJ1Y3RvclBhcmFtcyB3YXMgbmV2ZXIgZXh0cmFjdGVkLlxuXHQgKi9cblx0d3JpdGVEZWZpbml0aW9uc0ZpbGUgKGRlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBEZWZpbml0aW9uSW5mbz4sIGdyYXBoPzogVHlwZUdyYXBoKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZGVmaW5pdGlvbnMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXAgdG8gcGxhaW4gb2JqZWN0XG5cdFx0Y29uc3QgZGVmaW5pdGlvbnNPYmo6IFJlY29yZDxzdHJpbmcsIERlZmluaXRpb25JbmZvPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZGVmaW5pdGlvbnMpIHtcblx0XHRcdGRlZmluaXRpb25zT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmIChncmFwaCkge1xuXHRcdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBkZWZpbml0aW9ucykge1xuXHRcdFx0XHRjb25zdCBub2RlID0gZ3JhcGguZmluZFR5cGUoa2V5KTtcblx0XHRcdFx0aWYgKCFub2RlKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZW5yaWNoIGEgY29weSDigJQgdGhlIGFuYWx5emVyJ3MgZGVmaW5pdGlvbnMgbWFwIHN0YXlzIHVudG91Y2hlZFxuXHRcdFx0XHRjb25zdCBlbnRyeTogRGVmaW5pdGlvbkluZm8gPSB7IC4uLnZhbHVlIH07XG5cdFx0XHRcdGNvbnN0IGZpZWxkczogRGVmaW5pdGlvbkZpZWxkW10gPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm9wSW5mbyBvZiBub2RlLnByb3BlcnRpZXMudmFsdWVzKCkpIHtcblx0XHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0XHRuYW1lICAgICA6IHByb3BJbmZvLm5hbWUsXG5cdFx0XHRcdFx0XHR0eXBlICAgICA6IHByb3BJbmZvLnR5cGUsXG5cdFx0XHRcdFx0XHRvcHRpb25hbCA6IHByb3BJbmZvLm9wdGlvbmFsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZW50cnkuZmllbGRzID0gZmllbGRzO1xuXHRcdFx0XHRpZiAobm9kZS5jb25zdHJ1Y3RvclBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0Y29uc3QgYXJnczogRGVmaW5pdGlvbkFyZ1tdID0gbm9kZS5jb25zdHJ1Y3RvclBhcmFtcy5tYXAoKHBhcmFtKSA9PiB7XG5cdFx0XHRcdFx0XHQvLyBhIHJlc3QgcGFyYW1ldGVyIG1heSBhbHdheXMgcmVjZWl2ZSBub3RoaW5nOlxuXHRcdFx0XHRcdFx0Ly8gdGhlIGNvbnRyYWN0IGdpdmVzIGl0IGBraW5kYCBhbmQgbm8gYG9wdGlvbmFsYFxuXHRcdFx0XHRcdFx0Y29uc3QgYXJnOiBEZWZpbml0aW9uQXJnID0gcGFyYW0ua2luZCA9PT0gJ3Jlc3QnXG5cdFx0XHRcdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgOiBwYXJhbS5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGUgOiBwYXJhbS50eXBlLFxuXHRcdFx0XHRcdFx0XHRcdGtpbmQgOiAncmVzdCdcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lICAgICA6IHBhcmFtLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZSAgICAgOiBwYXJhbS50eXBlLFxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbmFsIDogcGFyYW0ub3B0aW9uYWxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBhcmc7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZW50cnkuYXJncyA9IGFyZ3M7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVmaW5pdGlvbnNPYmpbIGtleSBdID0gZW50cnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjEnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRkZWZpbml0aW9ucyA6IGRlZmluaXRpb25zT2JqLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB1c2FnZXMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZVVzYWdlc0ZpbGUgKHVzYWdlczogTWFwPHN0cmluZywgVXNhZ2VJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAndXNhZ2VzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IHVzYWdlc09iajogUmVjb3JkPHN0cmluZywgVXNhZ2VJbmZvW10+ID0ge307XG5cdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiB1c2FnZXMpIHtcblx0XHRcdHVzYWdlc09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMScsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdHVzYWdlcyAgICAgIDogdXNhZ2VzT2JqLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBlZHMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZUVEU0ZpbGUgKGVkczogTWFwPHN0cmluZywgRURTSW5mb1tdPik6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2Vkcy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBlZHNPYmo6IFJlY29yZDxzdHJpbmcsIEVEU0luZm9bXT4gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGVkcykge1xuXHRcdFx0ZWRzT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGpzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4xJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0ZWRzICAgICAgICAgOiBlZHNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGluc3RydW1lbnRhdGlvbi5qc29uIGZpbGUgKHYyOiBhZGRzIHRoZSBjcmVhdGlvbkdyYXBoIGtleSB3aGVuXG5cdCAqIHRoZSBjYWxsZXIgcGFzc2VzIGNyZWF0aW9uLWdyYXBoIGRhdGEg4oCUIHRoZSBDTEkgYWx3YXlzIGRvZXMpXG5cdCAqL1xuXHR3cml0ZUluc3RydW1lbnRhdGlvbkZpbGUgKHBvaW50czogSW5zdHJ1bWVudGF0aW9uUG9pbnRbXSwgY3JlYXRpb25HcmFwaD86IENyZWF0aW9uR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdpbnN0cnVtZW50YXRpb24uanNvbicpO1xuXG5cdFx0Y29uc3QganNvbjogSW5zdHJ1bWVudGF0aW9uSnNvbiA9IHtcblx0XHRcdHZlcnNpb24gICAgIDogMixcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0cG9pbnRzLFxuXHRcdH07XG5cdFx0aWYgKGNyZWF0aW9uR3JhcGgpIHtcblx0XHRcdGpzb24uY3JlYXRpb25HcmFwaCA9IGNyZWF0aW9uR3JhcGg7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVsYXRpdml6ZWQgPSB0aGlzLnJlbGF0aXZpemUoanNvbik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpdml6ZWQsIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgY29udHJvbC5qc29uIGZpbGUgKGxldGhlIGNvbnRyYWN0LCBmb3JtYXQgMS4xKTogYGNhbGxlcnNgIGlzIHRoZVxuXHQgKiBjcmVhdGlvbiBncmFwaCBpbnN0cnVtZW50YXRpb24uanNvbiB2MiBjYXJyaWVzLCBgcG9pbnRzYCB0aGUgc2FtZVxuXHQgKiBwbHVnaW4tc3VwcGxpZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50cy4gaW5zdHJ1bWVudGF0aW9uLmpzb24ga2VlcHMgaXRzXG5cdCAqIHNoYXBlIGZvciBtbmVtb2dyYXBoaWNhOyBjb250cm9sLmpzb24gaXMgdGhlIGNyb3NzLWxhbmd1YWdlIGNvbnRyYWN0XG5cdCAqIHJlbmRlcmluZyBvZiB0aGUgc2FtZSBkYXRhLlxuXHQgKi9cblx0d3JpdGVDb250cm9sRmlsZSAocG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdLCBjYWxsZXJzOiBDcmVhdGlvbkdyYXBoKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnY29udHJvbC5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBDb250cm9sSnNvbiA9IHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMScsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGNhbGxlcnMsXG5cdFx0XHRwb2ludHMsXG5cdFx0fTtcblxuXHRcdGNvbnN0IHJlbGF0aXZpemVkID0gdGhpcy5yZWxhdGl2aXplKGpzb24pO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHJlbGF0aXZpemVkLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGZsb3cuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZUZsb3dGaWxlIChmbG93OiBNYXA8c3RyaW5nLCBGbG93SW5mb1tdPik6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2Zsb3cuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXAgdG8gcGxhaW4gb2JqZWN0XG5cdFx0Y29uc3QgZmxvd09iajogUmVjb3JkPHN0cmluZywgRmxvd0luZm9bXT4gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGZsb3cpIHtcblx0XHRcdGZsb3dPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbjogRmxvd0pzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4xJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0ZmxvdyAgICAgICAgOiBmbG93T2JqLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBtb2R1bGVzLmpzb24gZmlsZVxuXHQgKi9cblx0d3JpdGVNb2R1bGVzRmlsZSAoZ3JhcGg6IE1vZHVsZUdyYXBoKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnbW9kdWxlcy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBtb2R1bGVzT2JqOiBNb2R1bGVzSnNvblsgJ21vZHVsZXMnIF0gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGdyYXBoLm1vZHVsZXMpIHtcblx0XHRcdG1vZHVsZXNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbjogTW9kdWxlc0pzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4wJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0bW9kdWxlcyAgICAgOiBtb2R1bGVzT2JqLFxuXHRcdFx0ZWRnZXMgICAgICAgOiBncmFwaC5lZGdlcyxcblx0XHRcdGN5Y2xlcyAgICAgIDogZ3JhcGguY3ljbGVzLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBzY29wZXMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZVNjb3Blc0ZpbGUgKGFuYWx5c2lzOiBTY29wZUFuYWx5c2lzKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnc2NvcGVzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwcyB0byBwbGFpbiBzaGFwZXNcblx0XHRjb25zdCBzY29wZXNPYmo6IFNjb3Blc0pzb25bICdzY29wZXMnIF0gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGFuYWx5c2lzLnNjb3Blcykge1xuXHRcdFx0c2NvcGVzT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblx0XHRjb25zdCB2YXJpYWJsZXMgPSBBcnJheS5mcm9tKGFuYWx5c2lzLnZhcmlhYmxlcy52YWx1ZXMoKSk7XG5cblx0XHRjb25zdCBqc29uOiBTY29wZXNKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMCcsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdHNjb3BlcyAgICAgIDogc2NvcGVzT2JqLFxuXHRcdFx0dmFyaWFibGVzLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBoaWVyYXJjaHkuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZUhpZXJhcmNoeUZpbGUgKHJvb3RzOiBIaWVyYXJjaHlOb2RlW10pOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdoaWVyYXJjaHkuanNvbicpO1xuXG5cdFx0Y29uc3QganNvbjogSGllcmFyY2h5SnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjEnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRyb290cyxcblx0XHR9KTtcblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgdGhlIGNvbGxlY3Rpb24gbWFuaWZlc3Q6IG9uZSBlbnRyeSBwZXIgY29sbGVjdGlvbiAoZGVmYXVsdFxuXHQgKiBmaXJzdCB3aGVuIGRlZmF1bHQtY29sbGVjdGlvbiB0eXBlcyBleGlzdCksIGlkcyArIGRpc3BsYXkgbmFtZXMgK1xuXHQgKiBPcHRpb24tQiByZWdpc3RyeSBpbnRlcmZhY2VzICsgY2FsbCBzaXRlcy4gVGhlIGlk4oaUaW50ZXJmYWNlIG1hcHBpbmdcblx0ICogaXMgdGhlIGpvaW4ga2V5IGJldHdlZW4gdGhlIGBjb2xsZWN0aW9uSWQ6OmAtcHJlZml4ZWQgZ3JhcGggb3V0cHV0c1xuXHQgKiBhbmQgdGhlIHJlZ2lzdHJ5LXByZWZpeGVkIGFsaWFzZXMgaW4gdHlwZXMudHMgLyByZWdpc3RyeS50cy5cblx0ICovXG5cdHdyaXRlQ29sbGVjdGlvbnNGaWxlIChjb2xsZWN0aW9uczogQ29sbGVjdGlvbk1hbmlmZXN0RW50cnlbXSk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2NvbGxlY3Rpb25zLmpzb24nKTtcblxuXHRcdGNvbnN0IGpzb246IENvbGxlY3Rpb25zSnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjEnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRjb2xsZWN0aW9ucyxcblx0XHR9KTtcblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cbn1cbiJdfQ==
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFPN0I7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFJdkIsWUFBYSxTQUFTLEdBQUcsVUFBVSxFQUFFLFdBQW9CO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxLQUFLLFNBQVM7WUFDM0MsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVUsQ0FBSyxPQUFVO1FBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7WUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxD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U0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0JBQW9CLENBQUUsV0FBc0M7UUFDM0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sSUFBSSxHQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdDLE9BQU8sRUFBTyxLQUFLO1lBQ25CLFdBQVcsRUFBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUN0QyxXQUFXO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7Q0FDRDtBQXBZRCxrQ0FvWUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuXHRHZW5lcmF0ZWRUeXBlcywgRGVmaW5pdGlvbkluZm8sIFVzYWdlSW5mbywgRURTSW5mbywgRmxvd0luZm8sIEZsb3dKc29uLCBIaWVyYXJjaHlOb2RlLCBIaWVyYXJjaHlKc29uLFxuXHRJbnN0cnVtZW50YXRpb25Qb2ludCwgSW5zdHJ1bWVudGF0aW9uSnNvbiwgTW9kdWxlR3JhcGgsIE1vZHVsZXNKc29uLCBTY29wZUFuYWx5c2lzLCBTY29wZXNKc29uLCBDcmVhdGlvbkdyYXBoLFxuXHRDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeSwgQ29sbGVjdGlvbnNKc29uLCBDb250cm9sSnNvbiwgVHlwZUdyYXBoLCBEZWZpbml0aW9uRmllbGQsIERlZmluaXRpb25Bcmdcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogV3JpdGVzIGdlbmVyYXRlZCB0eXBlcyB0byBmaWxlIHN5c3RlbVxuICovXG5leHBvcnQgY2xhc3MgVHlwZXNXcml0ZXIge1xuXHRwcml2YXRlIG91dHB1dERpcjogc3RyaW5nO1xuXHRwcml2YXRlIHByb2plY3RSb290Pzogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yIChvdXRwdXREaXIgPSAnLnRhY3RpY2EnLCBwcm9qZWN0Um9vdD86IHN0cmluZykge1xuXHRcdHRoaXMub3V0cHV0RGlyID0gb3V0cHV0RGlyO1xuXHRcdHRoaXMucHJvamVjdFJvb3QgPSBwcm9qZWN0Um9vdCA9PT0gdW5kZWZpbmVkXG5cdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0OiBwYXRoLnJlc29sdmUocHJvamVjdFJvb3QpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJld3JpdGUgZXZlcnkgcHJvamVjdC1yb290ZWQgYWJzb2x1dGUgcGF0aCBpbiB0aGUgcGF5bG9hZCB0byBhXG5cdCAqIHByb2plY3QtcmVsYXRpdmUgb25lICh2YWx1ZXMgQU5EIG9iamVjdCBrZXlzKSwgc28gLnRhY3RpY2Egb3V0cHV0XG5cdCAqIHN0YXlzIHBvcnRhYmxlIGFjcm9zcyBtYWNoaW5lcyBhbmQgY2hlY2tvdXRzLiBQYXRocyBvdXRzaWRlIHRoZVxuXHQgKiBwcm9qZWN0IHJvb3Qga2VlcCB0aGVpciBhYnNvbHV0ZSBmb3JtIOKAlCB0aGV5IGdlbnVpbmVseSBhcmVcblx0ICogbWFjaGluZS1zcGVjaWZpYy4gQ29uc3VtZXJzIHJlc29sdmUgcmVsYXRpdmUgZW50cmllcyBhZ2FpbnN0IHRoZVxuXHQgKiBkaXJlY3RvcnkgdGhhdCBob2xkcyAudGFjdGljYS5cblx0ICovXG5cdHByaXZhdGUgcmVsYXRpdml6ZTxUPiAocGF5bG9hZDogVCk6IFQge1xuXHRcdGlmICh0aGlzLnByb2plY3RSb290ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBwYXlsb2FkO1xuXHRcdH1cblx0XHRjb25zdCBwcmVmaXggPSB0aGlzLnByb2plY3RSb290ICsgcGF0aC5zZXA7XG5cdFx0Y29uc3Qgd2FsayA9IChpbnB1dDogdW5rbm93bik6IHVua25vd24gPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0aWYgKCFpbnB1dC5zdGFydHNXaXRoKHByZWZpeCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gaW5wdXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVsYXRpdmUgPSBpbnB1dC5zbGljZShwcmVmaXgubGVuZ3RoKTtcblx0XHRcdFx0Y29uc3Qgd2Fsa2VkID0gcmVsYXRpdmUuc3BsaXQocGF0aC5zZXApLmpvaW4oJy8nKTtcblx0XHRcdFx0cmV0dXJuIHdhbGtlZDtcblx0XHRcdH1cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuXHRcdFx0XHRjb25zdCB3YWxrZWQgPSBpbnB1dC5tYXAod2Fsayk7XG5cdFx0XHRcdHJldHVybiB3YWxrZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5wdXQgIT09IG51bGwgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRjb25zdCB3YWxrZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXQpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgd2Fsa2VkS2V5ID0gd2FsayhrZXkpIGFzIHN0cmluZztcblx0XHRcdFx0XHR3YWxrZWRbIHdhbGtlZEtleSBdID0gd2Fsayh2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHdhbGtlZDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpbnB1dDtcblx0XHR9O1xuXHRcdGNvbnN0IHJlc3VsdCA9IHdhbGsocGF5bG9hZCk7XG5cdFx0cmV0dXJuIHJlc3VsdCBhcyBUO1xuXHR9XG5cblx0LyoqXG5cdCAqIExlZ2FjeSB3cml0ZSBtZXRob2QgLSBkZWxlZ2F0ZXMgdG8gd3JpdGVUeXBlc0ZpbGVcblx0ICovXG5cdHdyaXRlIChnZW5lcmF0ZWQ6IEdlbmVyYXRlZFR5cGVzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy53cml0ZVR5cGVzRmlsZShnZW5lcmF0ZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHR5cGVzLnRzIGZpbGUgKGV4cG9ydGFibGUgdHlwZSBhbGlhc2VzIC0gZGVmYXVsdCBtb2RlKVxuXHQgKi9cblx0d3JpdGVUeXBlc0ZpbGUgKGdlbmVyYXRlZDogR2VuZXJhdGVkVHlwZXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICd0eXBlcy50cycpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGdlbmVyYXRlZC5jb250ZW50LCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZ2xvYmFsIGF1Z21lbnRhdGlvbiBmaWxlIChpbmRleC5kLnRzIC0gbW9kdWxlIGF1Z21lbnRhdGlvbiBtb2RlKVxuXHQgKi9cblx0d3JpdGVHbG9iYWxBdWdtZW50YXRpb24gKGdlbmVyYXRlZDogR2VuZXJhdGVkVHlwZXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdpbmRleC5kLnRzJyk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZ2VuZXJhdGVkLmNvbnRlbnQsICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0byBhIGN1c3RvbSBmaWxlbmFtZVxuXHQgKi9cblx0d3JpdGVUbyAoZmlsZW5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCBmaWxlbmFtZSk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudCwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0c1xuXHQgKi9cblx0cHJpdmF0ZSBlbnN1cmVEaXJlY3RvcnkgKCk6IHZvaWQge1xuXHRcdGlmICghZnMuZXhpc3RzU3luYyh0aGlzLm91dHB1dERpcikpIHtcblx0XHRcdGZzLm1rZGlyU3luYyh0aGlzLm91dHB1dERpciwgeyByZWN1cnNpdmUgOiB0cnVlIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuXHQgKi9cblx0Y2xlYW4gKCk6IHZvaWQge1xuXHRcdGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3V0cHV0RGlyKSkge1xuXHRcdFx0Y29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLm91dHB1dERpcik7XG5cdFx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcblx0XHRcdFx0ZnMudW5saW5rU3luYyhwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsIGZpbGUpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IG91dHB1dCBkaXJlY3Rvcnlcblx0ICovXG5cdGdldE91dHB1dERpciAoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5vdXRwdXREaXI7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZGVmaW5pdGlvbnMuanNvbiBmaWxlLiBXaGVuIHRoZSB0eXBlIGdyYXBoIGlzIHBhc3NlZCAodGhlIENMSVxuXHQgKiBhbHdheXMgcGFzc2VzIGl0KSwgZWFjaCBlbnRyeSBnYWlucyBgZmllbGRzYCAodGhlIHR5cGUncyBvd24gZmllbGRzIGluXG5cdCAqIGRlY2xhcmF0aW9uIG9yZGVyLCBmcm9tIFR5cGVOb2RlLnByb3BlcnRpZXMpIGFuZCBgYXJnc2AgKHRoZVxuXHQgKiBjb25zdHJ1Y3RvcidzIHBhcmFtZXRlcnMsIGZyb20gVHlwZU5vZGUuY29uc3RydWN0b3JQYXJhbXMpIOKAlCB0aGUgc2FtZVxuXHQgKiBzb3VyY2Ugb2YgdHJ1dGggdHlwZXMudHMgcmVuZGVycy4gQSByZXN0IHBhcmFtZXRlciBpcyBlbWl0dGVkIHdpdGhcblx0ICogYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAgKGxldGhlIGRlZmluaXRpb25zIGNvbnRyYWN0KTsgYGFyZ3NgXG5cdCAqIGlzIG9taXR0ZWQgb25seSB3aGVuIGNvbnN0cnVjdG9yUGFyYW1zIHdhcyBuZXZlciBleHRyYWN0ZWQuXG5cdCAqL1xuXHR3cml0ZURlZmluaXRpb25zRmlsZSAoZGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIERlZmluaXRpb25JbmZvPiwgZ3JhcGg/OiBUeXBlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdkZWZpbml0aW9ucy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBkZWZpbml0aW9uc09iajogUmVjb3JkPHN0cmluZywgRGVmaW5pdGlvbkluZm8+ID0ge307XG5cdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBkZWZpbml0aW9ucykge1xuXHRcdFx0ZGVmaW5pdGlvbnNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKGdyYXBoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGRlZmluaXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5vZGUgPSBncmFwaC5maW5kVHlwZShrZXkpO1xuXHRcdFx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBlbnJpY2ggYSBjb3B5IOKAlCB0aGUgYW5hbHl6ZXIncyBkZWZpbml0aW9ucyBtYXAgc3RheXMgdW50b3VjaGVkXG5cdFx0XHRcdGNvbnN0IGVudHJ5OiBEZWZpbml0aW9uSW5mbyA9IHsgLi4udmFsdWUgfTtcblx0XHRcdFx0Y29uc3QgZmllbGRzOiBEZWZpbml0aW9uRmllbGRbXSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BJbmZvIG9mIG5vZGUucHJvcGVydGllcy52YWx1ZXMoKSkge1xuXHRcdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWUgICAgIDogcHJvcEluZm8ubmFtZSxcblx0XHRcdFx0XHRcdHR5cGUgICAgIDogcHJvcEluZm8udHlwZSxcblx0XHRcdFx0XHRcdG9wdGlvbmFsIDogcHJvcEluZm8ub3B0aW9uYWxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbnRyeS5maWVsZHMgPSBmaWVsZHM7XG5cdFx0XHRcdGlmIChub2RlLmNvbnN0cnVjdG9yUGFyYW1zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBhcmdzOiBEZWZpbml0aW9uQXJnW10gPSBub2RlLmNvbnN0cnVjdG9yUGFyYW1zLm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0XHRcdC8vIGEgcmVzdCBwYXJhbWV0ZXIgbWF5IGFsd2F5cyByZWNlaXZlIG5vdGhpbmc6XG5cdFx0XHRcdFx0XHQvLyB0aGUgY29udHJhY3QgZ2l2ZXMgaXQgYGtpbmRgIGFuZCBubyBgb3B0aW9uYWxgXG5cdFx0XHRcdFx0XHRjb25zdCBhcmc6IERlZmluaXRpb25BcmcgPSBwYXJhbS5raW5kID09PSAncmVzdCdcblx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA6IHBhcmFtLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZSA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0a2luZCA6ICdyZXN0J1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgICAgIDogcGFyYW0ubmFtZSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlICAgICA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uYWwgOiBwYXJhbS5vcHRpb25hbFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFyZztcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbnRyeS5hcmdzID0gYXJncztcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWZpbml0aW9uc09ialsga2V5IF0gPSBlbnRyeTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBqc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGRlZmluaXRpb25zIDogZGVmaW5pdGlvbnNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHVzYWdlcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlVXNhZ2VzRmlsZSAodXNhZ2VzOiBNYXA8c3RyaW5nLCBVc2FnZUluZm9bXT4pOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICd1c2FnZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXAgdG8gcGxhaW4gb2JqZWN0XG5cdFx0Y29uc3QgdXNhZ2VzT2JqOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT4gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIHVzYWdlcykge1xuXHRcdFx0dXNhZ2VzT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGpzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0dXNhZ2VzICAgICAgOiB1c2FnZXNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGVkcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRURTRmlsZSAoZWRzOiBNYXA8c3RyaW5nLCBFRFNJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZWRzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IGVkc09iajogUmVjb3JkPHN0cmluZywgRURTSW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZWRzKSB7XG5cdFx0XHRlZHNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRlZHMgICAgICAgICA6IGVkc09iaixcblx0XHR9KTtcblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgaW5zdHJ1bWVudGF0aW9uLmpzb24gZmlsZSAodjI6IGFkZHMgdGhlIGNyZWF0aW9uR3JhcGgga2V5IHdoZW5cblx0ICogdGhlIGNhbGxlciBwYXNzZXMgY3JlYXRpb24tZ3JhcGggZGF0YSDigJQgdGhlIENMSSBhbHdheXMgZG9lcylcblx0ICovXG5cdHdyaXRlSW5zdHJ1bWVudGF0aW9uRmlsZSAocG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdLCBjcmVhdGlvbkdyYXBoPzogQ3JlYXRpb25HcmFwaCk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2luc3RydW1lbnRhdGlvbi5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBJbnN0cnVtZW50YXRpb25Kc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAyLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRwb2ludHMsXG5cdFx0fTtcblx0XHRpZiAoY3JlYXRpb25HcmFwaCkge1xuXHRcdFx0anNvbi5jcmVhdGlvbkdyYXBoID0gY3JlYXRpb25HcmFwaDtcblx0XHR9XG5cblx0XHRjb25zdCByZWxhdGl2aXplZCA9IHRoaXMucmVsYXRpdml6ZShqc29uKTtcblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZWxhdGl2aXplZCwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBjb250cm9sLmpzb24gZmlsZSAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjIpOiBgY2FsbGVyc2AgaXMgdGhlXG5cdCAqIGNyZWF0aW9uIGdyYXBoIGluc3RydW1lbnRhdGlvbi5qc29uIHYyIGNhcnJpZXMsIGBwb2ludHNgIHRoZSBzYW1lXG5cdCAqIHBsdWdpbi1zdXBwbGllZCBpbnN0cnVtZW50YXRpb24gcG9pbnRzLiBpbnN0cnVtZW50YXRpb24uanNvbiBrZWVwcyBpdHNcblx0ICogc2hhcGUgZm9yIG1uZW1vZ3JhcGhpY2E7IGNvbnRyb2wuanNvbiBpcyB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3Rcblx0ICogcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG5cdCAqL1xuXHR3cml0ZUNvbnRyb2xGaWxlIChwb2ludHM6IEluc3RydW1lbnRhdGlvblBvaW50W10sIGNhbGxlcnM6IENyZWF0aW9uR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdjb250cm9sLmpzb24nKTtcblxuXHRcdGNvbnN0IGpzb246IENvbnRyb2xKc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0Y2FsbGVycyxcblx0XHRcdHBvaW50cyxcblx0XHR9O1xuXG5cdFx0Y29uc3QgcmVsYXRpdml6ZWQgPSB0aGlzLnJlbGF0aXZpemUoanNvbik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpdml6ZWQsIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZmxvdy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRmxvd0ZpbGUgKGZsb3c6IE1hcDxzdHJpbmcsIEZsb3dJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZmxvdy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBmbG93T2JqOiBSZWNvcmQ8c3RyaW5nLCBGbG93SW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZmxvdykge1xuXHRcdFx0Zmxvd09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBGbG93SnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRmbG93ICAgICAgICA6IGZsb3dPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIG1vZHVsZXMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZU1vZHVsZXNGaWxlIChncmFwaDogTW9kdWxlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdtb2R1bGVzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IG1vZHVsZXNPYmo6IE1vZHVsZXNKc29uWyAnbW9kdWxlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZ3JhcGgubW9kdWxlcykge1xuXHRcdFx0bW9kdWxlc09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBNb2R1bGVzSnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjAnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRtb2R1bGVzICAgICA6IG1vZHVsZXNPYmosXG5cdFx0XHRlZGdlcyAgICAgICA6IGdyYXBoLmVkZ2VzLFxuXHRcdFx0Y3ljbGVzICAgICAgOiBncmFwaC5jeWNsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHNjb3Blcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlU2NvcGVzRmlsZSAoYW5hbHlzaXM6IFNjb3BlQW5hbHlzaXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdzY29wZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXBzIHRvIHBsYWluIHNoYXBlc1xuXHRcdGNvbnN0IHNjb3Blc09iajogU2NvcGVzSnNvblsgJ3Njb3BlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgYW5hbHlzaXMuc2NvcGVzKSB7XG5cdFx0XHRzY29wZXNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXHRcdGNvbnN0IHZhcmlhYmxlcyA9IEFycmF5LmZyb20oYW5hbHlzaXMudmFyaWFibGVzLnZhbHVlcygpKTtcblxuXHRcdGNvbnN0IGpzb246IFNjb3Blc0pzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4wJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0c2NvcGVzICAgICAgOiBzY29wZXNPYmosXG5cdFx0XHR2YXJpYWJsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGhpZXJhcmNoeS5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlSGllcmFyY2h5RmlsZSAocm9vdHM6IEhpZXJhcmNoeU5vZGVbXSk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2hpZXJhcmNoeS5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBIaWVyYXJjaHlKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdHJvb3RzLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0aGUgY29sbGVjdGlvbiBtYW5pZmVzdDogb25lIGVudHJ5IHBlciBjb2xsZWN0aW9uIChkZWZhdWx0XG5cdCAqIGZpcnN0IHdoZW4gZGVmYXVsdC1jb2xsZWN0aW9uIHR5cGVzIGV4aXN0KSwgaWRzICsgZGlzcGxheSBuYW1lcyArXG5cdCAqIGNhbGwgc2l0ZXMgKyBsYW5ndWFnZS4gVGhlIGBjb2xsZWN0aW9uSWQ6OmAgcHJlZml4IG9uIGdyYXBoLW91dHB1dFxuXHQgKiBmdWxsUGF0aHMgam9pbnMgdG8gdGhlIGVudHJ5IGBpZGAuIEZvcm1hdCAxLjI6IHRoZSByZWdpc3RyeVxuXHQgKiBpbnRlcmZhY2UgaXMgbm90IHBhcnQgb2YgdGhlIG1hbmlmZXN0IOKAlCB0aGUgcmVnaXN0cnktcHJlZml4ZWRcblx0ICogYWxpYXNlcyBpbiB0eXBlcy50cyAvIHJlZ2lzdHJ5LnRzIGNvbWUgZnJvbSB0aGUgaW4tbWVtb3J5XG5cdCAqIFR5cGVOb2RlLnJlZ2lzdHJ5SW50ZXJmYWNlTmFtZSBpbnN0ZWFkLlxuXHQgKi9cblx0d3JpdGVDb2xsZWN0aW9uc0ZpbGUgKGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeVtdKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnY29sbGVjdGlvbnMuanNvbicpO1xuXG5cdFx0Y29uc3QganNvbjogQ29sbGVjdGlvbnNKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGNvbGxlY3Rpb25zLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnemonica/tactica",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"description": "Type definition generator for Mnemonica: statically analyzes define() calls and emits .tactica types, registry, and metadata",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -46,16 +46,16 @@
|
|
|
46
46
|
"homepage": "https://github.com/mythographica/tactica#readme",
|
|
47
47
|
"license": "MIT",
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"mnemonica": "^1.
|
|
49
|
+
"mnemonica": "^1.4.2"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
53
|
-
"@mnemonica/lethe": "^0.2.
|
|
53
|
+
"@mnemonica/lethe": "^0.2.2",
|
|
54
54
|
"@types/chai": "^4.3.20",
|
|
55
55
|
"@types/mocha": "^10.0.10",
|
|
56
56
|
"@types/node": "^20.19.43",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.71.
|
|
58
|
-
"@typescript-eslint/parser": "^8.71.
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "^8.71.2",
|
|
58
|
+
"@typescript-eslint/parser": "^8.71.2",
|
|
59
59
|
"ajv": "^8.20.0",
|
|
60
60
|
"chai": "^4.5.0",
|
|
61
61
|
"eslint": "^9.39.5",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"eslint-plugin-no-arrow-this": "^1.3.0",
|
|
64
64
|
"globals": "^15.15.0",
|
|
65
65
|
"husky": "^9.1.7",
|
|
66
|
-
"mnemonica": "1.
|
|
66
|
+
"mnemonica": "1.4.2",
|
|
67
67
|
"mocha": "^8.4.0",
|
|
68
68
|
"nyc": "^18.0.0",
|
|
69
69
|
"ts-node": "^10.9.2",
|