mirror of
https://github.com/kristoferssolo/solorice.git
synced 2025-10-21 20:10:34 +00:00
7 lines
135 KiB
JavaScript
7 lines
135 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdQcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWJ1Z1Byb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Z0dBR2dHO0FBRWhHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKiBEZWNsYXJhdGlvbiBtb2R1bGUgZGVzY3JpYmluZyB0aGUgVlMgQ29kZSBkZWJ1ZyBwcm90b2NvbC5cblx0QXV0by1nZW5lcmF0ZWQgZnJvbSBqc29uIHNjaGVtYS4gRG8gbm90IGVkaXQgbWFudWFsbHkuXG4qL1xuZXhwb3J0IG1vZHVsZSBEZWJ1Z1Byb3RvY29sIHtcblxuXHQvKiogQmFzZSBjbGFzcyBvZiByZXF1ZXN0cywgcmVzcG9uc2VzLCBhbmQgZXZlbnRzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0LyoqIFNlcXVlbmNlIG51bWJlciAoYWxzbyBrbm93biBhcyBtZXNzYWdlIElEKS4gRm9yIHByb3RvY29sIG1lc3NhZ2VzIG9mIHR5cGUgJ3JlcXVlc3QnIHRoaXMgSUQgY2FuIGJlIHVzZWQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LiAqL1xuXHRcdHNlcTogbnVtYmVyO1xuXHRcdC8qKiBNZXNzYWdlIHR5cGUuXG5cdFx0XHRWYWx1ZXM6ICdyZXF1ZXN0JywgJ3Jlc3BvbnNlJywgJ2V2ZW50JywgZXRjLlxuXHRcdCovXG5cdFx0dHlwZTogc3RyaW5nO1xuXHR9XG5cblx0LyoqIEEgY2xpZW50IG9yIGRlYnVnIGFkYXB0ZXIgaW5pdGlhdGVkIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdCBleHRlbmRzIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0Ly8gdHlwZTogJ3JlcXVlc3QnO1xuXHRcdC8qKiBUaGUgY29tbWFuZCB0byBleGVjdXRlLiAqL1xuXHRcdGNvbW1hbmQ6IHN0cmluZztcblx0XHQvKiogT2JqZWN0IGNvbnRhaW5pbmcgYXJndW1lbnRzIGZvciB0aGUgY29tbWFuZC4gKi9cblx0XHRhcmd1bWVudHM/OiBhbnk7XG5cdH1cblxuXHQvKiogQSBkZWJ1ZyBhZGFwdGVyIGluaXRpYXRlZCBldmVudC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFdmVudCBleHRlbmRzIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0Ly8gdHlwZTogJ2V2ZW50Jztcblx0XHQvKiogVHlwZSBvZiBldmVudC4gKi9cblx0XHRldmVudDogc3RyaW5nO1xuXHRcdC8qKiBFdmVudC1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gKi9cblx0XHRib2R5PzogYW55O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIGZvciBhIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2UgZXh0ZW5kcyBQcm90b2NvbE1lc3NhZ2Uge1xuXHRcdC8vIHR5cGU6ICdyZXNwb25zZSc7XG5cdFx0LyoqIFNlcXVlbmNlIG51bWJlciBvZiB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0LiAqL1xuXHRcdHJlcXVlc3Rfc2VxOiBudW1iZXI7XG5cdFx0LyoqIE91dGNvbWUgb2YgdGhlIHJlcXVlc3QuXG5cdFx0XHRJZiB0cnVlLCB0aGUgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bCBhbmQgdGhlICdib2R5JyBhdHRyaWJ1dGUgbWF5IGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUgcmVxdWVzdC5cblx0XHRcdElmIHRoZSB2YWx1ZSBpcyBmYWxzZSwgdGhlIGF0dHJpYnV0ZSAnbWVzc2FnZScgY29udGFpbnMgdGhlIGVycm9yIGluIHNob3J0IGZvcm0gYW5kIHRoZSAnYm9keScgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAoc2VlICdFcnJvclJlc3BvbnNlLmJvZHkuZXJyb3InKS5cblx0XHQqL1xuXHRcdHN1Y2Nlc3M6IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBjb21tYW5kIHJlcXVlc3RlZC4gKi9cblx0XHRjb21tYW5kOiBzdHJpbmc7XG5cdFx0LyoqIENvbnRhaW5zIHRoZSByYXcgZXJyb3IgaW4gc2hvcnQgZm9ybSBpZiAnc3VjY2VzcycgaXMgZmFsc2UuXG5cdFx0XHRUaGlzIHJhdyBlcnJvciBtaWdodCBiZSBpbnRlcnByZXRlZCBieSB0aGUgZnJvbnRlbmQgYW5kIGlzIG5vdCBzaG93biBpbiB0aGUgVUkuXG5cdFx0XHRTb21lIHByZWRlZmluZWQgdmFsdWVzIGV4aXN0LlxuXHRcdFx0VmFsdWVzOiBcblx0XHRcdCdjYW5jZWxsZWQnOiByZXF1ZXN0IHdhcyBjYW5jZWxsZWQuXG5cdFx0XHRldGMuXG5cdFx0Ki9cblx0XHRtZXNzYWdlPzogc3RyaW5nO1xuXHRcdC8qKiBDb250YWlucyByZXF1ZXN0IHJlc3VsdCBpZiBzdWNjZXNzIGlzIHRydWUgYW5kIG9wdGlvbmFsIGVycm9yIGRldGFpbHMgaWYgc3VjY2VzcyBpcyBmYWxzZS4gKi9cblx0XHRib2R5PzogYW55O1xuXHR9XG5cblx0LyoqIE9uIGVycm9yICh3aGVuZXZlciAnc3VjY2VzcycgaXMgZmFsc2UpLCB0aGUgYm9keSBjYW4gcHJvdmlkZSBtb3JlIGRldGFpbHMuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXJyb3JSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQW4gb3B0aW9uYWwsIHN0cnVjdHVyZWQgZXJyb3IgbWVzc2FnZS4gKi9cblx0XHRcdGVycm9yPzogTWVzc2FnZTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIENhbmNlbCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdjYW5jZWwnLlxuXHRcdFRoZSAnY2FuY2VsJyByZXF1ZXN0IGlzIHVzZWQgYnkgdGhlIGZyb250ZW5kIGluIHR3byBzaXR1YXRpb25zOlxuXHRcdC0gdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBubyBsb25nZXIgaW50ZXJlc3RlZCBpbiB0aGUgcmVzdWx0IHByb2R1Y2VkIGJ5IGEgc3BlY2lmaWMgcmVxdWVzdCBpc3N1ZWQgZWFybGllclxuXHRcdC0gdG8gY2FuY2VsIGEgcHJvZ3Jlc3Mgc2VxdWVuY2UuIENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzQ2FuY2VsUmVxdWVzdCcgaXMgdHJ1ZS5cblx0XHRUaGlzIHJlcXVlc3QgaGFzIGEgaGludCBjaGFyYWN0ZXJpc3RpYzogYSBkZWJ1ZyBhZGFwdGVyIGNhbiBvbmx5IGJlIGV4cGVjdGVkIHRvIG1ha2UgYSAnYmVzdCBlZmZvcnQnIGluIGhvbm91cmluZyB0aGlzIHJlcXVlc3QgYnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuXHRcdFRoZSAnY2FuY2VsJyByZXF1ZXN0IG1heSByZXR1cm4gYW4gZXJyb3IgaWYgaXQgY291bGQgbm90IGNhbmNlbCBhbiBvcGVyYXRpb24gYnV0IGEgZnJvbnRlbmQgc2hvdWxkIHJlZnJhaW4gZnJvbSBwcmVzZW50aW5nIHRoaXMgZXJyb3IgdG8gZW5kIHVzZXJzLlxuXHRcdEEgZnJvbnRlbmQgY2xpZW50IHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0NhbmNlbFJlcXVlc3QnIGlzIHRydWUuXG5cdFx0VGhlIHJlcXVlc3QgdGhhdCBnb3QgY2FuY2VsZWQgc3RpbGwgbmVlZHMgdG8gc2VuZCBhIHJlc3BvbnNlIGJhY2suIFRoaXMgY2FuIGVpdGhlciBiZSBhIG5vcm1hbCByZXN1bHQgKCdzdWNjZXNzJyBhdHRyaWJ1dGUgdHJ1ZSlcblx0XHRvciBhbiBlcnJvciByZXNwb25zZSAoJ3N1Y2Nlc3MnIGF0dHJpYnV0ZSBmYWxzZSBhbmQgdGhlICdtZXNzYWdlJyBzZXQgdG8gJ2NhbmNlbGxlZCcpLlxuXHRcdFJldHVybmluZyBwYXJ0aWFsIHJlc3VsdHMgZnJvbSBhIGNhbmNlbGxlZCByZXF1ZXN0IGlzIHBvc3NpYmxlIGJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGEgZnJvbnRlbmQgY2xpZW50IGhhcyBubyBnZW5lcmljIHdheSBmb3IgZGV0ZWN0aW5nIHRoYXQgYSByZXNwb25zZSBpcyBwYXJ0aWFsIG9yIG5vdC5cblx0XHQgVGhlIHByb2dyZXNzIHRoYXQgZ290IGNhbmNlbGxlZCBzdGlsbCBuZWVkcyB0byBzZW5kIGEgJ3Byb2dyZXNzRW5kJyBldmVudCBiYWNrLlxuXHRcdCBBIGNsaWVudCBzaG91bGQgbm90IGFzc3VtZSB0aGF0IHByb2dyZXNzIGp1c3QgZ290IGNhbmNlbGxlZCBhZnRlciBzZW5kaW5nIHRoZSAnY2FuY2VsJyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENhbmNlbFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnY2FuY2VsJztcblx0XHRhcmd1bWVudHM/OiBDYW5jZWxBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY2FuY2VsJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENhbmNlbEFyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBJRCAoYXR0cmlidXRlICdzZXEnKSBvZiB0aGUgcmVxdWVzdCB0byBjYW5jZWwuIElmIG1pc3Npbmcgbm8gcmVxdWVzdCBpcyBjYW5jZWxsZWQuXG5cdFx0XHRCb3RoIGEgJ3JlcXVlc3RJZCcgYW5kIGEgJ3Byb2dyZXNzSWQnIGNhbiBiZSBzcGVjaWZpZWQgaW4gb25lIHJlcXVlc3QuXG5cdFx0Ki9cblx0XHRyZXF1ZXN0SWQ/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBJRCAoYXR0cmlidXRlICdwcm9ncmVzc0lkJykgb2YgdGhlIHByb2dyZXNzIHRvIGNhbmNlbC4gSWYgbWlzc2luZyBubyBwcm9ncmVzcyBpcyBjYW5jZWxsZWQuXG5cdFx0XHRCb3RoIGEgJ3JlcXVlc3RJZCcgYW5kIGEgJ3Byb2dyZXNzSWQnIGNhbiBiZSBzcGVjaWZpZWQgaW4gb25lIHJlcXVlc3QuXG5cdFx0Ki9cblx0XHRwcm9ncmVzc0lkPzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdjYW5jZWwnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2luaXRpYWxpemVkJyBldmVudCB0eXBlLlxuXHRcdFRoaXMgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGRlYnVnIGFkYXB0ZXIgaXMgcmVhZHkgdG8gYWNjZXB0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdHMgKGUuZy4gU2V0QnJlYWtwb2ludHNSZXF1ZXN0LCBTZXRFeGNlcHRpb25CcmVha3BvaW50c1JlcXVlc3QpLlxuXHRcdEEgZGVidWcgYWRhcHRlciBpcyBleHBlY3RlZCB0byBzZW5kIHRoaXMgZXZlbnQgd2hlbiBpdCBpcyByZWFkeSB0byBhY2NlcHQgY29uZmlndXJhdGlvbiByZXF1ZXN0cyAoYnV0IG5vdCBiZWZvcmUgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0IGhhcyBmaW5pc2hlZCkuXG5cdFx0VGhlIHNlcXVlbmNlIG9mIGV2ZW50cy9yZXF1ZXN0cyBpcyBhcyBmb2xsb3dzOlxuXHRcdC0gYWRhcHRlcnMgc2VuZHMgJ2luaXRpYWxpemVkJyBldmVudCAoYWZ0ZXIgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0IGhhcyByZXR1cm5lZClcblx0XHQtIGZyb250ZW5kIHNlbmRzIHplcm8gb3IgbW9yZSAnc2V0QnJlYWtwb2ludHMnIHJlcXVlc3RzXG5cdFx0LSBmcm9udGVuZCBzZW5kcyBvbmUgJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QgKGlmIGNhcGFiaWxpdHkgJ3N1cHBvcnRzRnVuY3Rpb25CcmVha3BvaW50cycgaXMgdHJ1ZSlcblx0XHQtIGZyb250ZW5kIHNlbmRzIGEgJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0IGlmIG9uZSBvciBtb3JlICdleGNlcHRpb25CcmVha3BvaW50RmlsdGVycycgaGF2ZSBiZWVuIGRlZmluZWQgKG9yIGlmICdzdXBwb3J0c0NvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCcgaXMgbm90IGRlZmluZWQgb3IgZmFsc2UpXG5cdFx0LSBmcm9udGVuZCBzZW5kcyBvdGhlciBmdXR1cmUgY29uZmlndXJhdGlvbiByZXF1ZXN0c1xuXHRcdC0gZnJvbnRlbmQgc2VuZHMgb25lICdjb25maWd1cmF0aW9uRG9uZScgcmVxdWVzdCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEluaXRpYWxpemVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdpbml0aWFsaXplZCc7XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ3N0b3BwZWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBleGVjdXRpb24gb2YgdGhlIGRlYnVnZ2VlIGhhcyBzdG9wcGVkIGR1ZSB0byBzb21lIGNvbmRpdGlvbi5cblx0XHRUaGlzIGNhbiBiZSBjYXVzZWQgYnkgYSBicmVhayBwb2ludCBwcmV2aW91c2x5IHNldCwgYSBzdGVwcGluZyByZXF1ZXN0IGhhcyBjb21wbGV0ZWQsIGJ5IGV4ZWN1dGluZyBhIGRlYnVnZ2VyIHN0YXRlbWVudCBldGMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RvcHBlZEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnc3RvcHBlZCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSByZWFzb24gZm9yIHRoZSBldmVudC5cblx0XHRcdFx0Rm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJIGlmIHRoZSAnZGVzY3JpcHRpb24nIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIChidXQgaXQgbXVzdCBub3QgYmUgdHJhbnNsYXRlZCkuXG5cdFx0XHRcdFZhbHVlczogJ3N0ZXAnLCAnYnJlYWtwb2ludCcsICdleGNlcHRpb24nLCAncGF1c2UnLCAnZW50cnknLCAnZ290bycsICdmdW5jdGlvbiBicmVha3BvaW50JywgJ2RhdGEgYnJlYWtwb2ludCcsICdpbnN0cnVjdGlvbiBicmVha3BvaW50JywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdHJlYXNvbjogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBmdWxsIHJlYXNvbiBmb3IgdGhlIGV2ZW50LCBlLmcuICdQYXVzZWQgb24gZXhjZXB0aW9uJy4gVGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJIGFzIGlzIGFuZCBtdXN0IGJlIHRyYW5zbGF0ZWQuICovXG5cdFx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHRcdC8qKiBUaGUgdGhyZWFkIHdoaWNoIHdhcyBzdG9wcGVkLiAqL1xuXHRcdFx0dGhyZWFkSWQ/OiBudW1iZXI7XG5cdFx0XHQvKiogQSB2YWx1ZSBvZiB0cnVlIGhpbnRzIHRvIHRoZSBmcm9udGVuZCB0aGF0IHRoaXMgZXZlbnQgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGZvY3VzLiAqL1xuXHRcdFx0cHJlc2VydmVGb2N1c0hpbnQ/OiBib29sZWFuO1xuXHRcdFx0LyoqIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEUuZy4gaWYgcmVhc29uIGlzICdleGNlcHRpb24nLCB0ZXh0IGNvbnRhaW5zIHRoZSBleGNlcHRpb24gbmFtZS4gVGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJLiAqL1xuXHRcdFx0dGV4dD86IHN0cmluZztcblx0XHRcdC8qKiBJZiAnYWxsVGhyZWFkc1N0b3BwZWQnIGlzIHRydWUsIGEgZGVidWcgYWRhcHRlciBjYW4gYW5ub3VuY2UgdGhhdCBhbGwgdGhyZWFkcyBoYXZlIHN0b3BwZWQuXG5cdFx0XHRcdC0gVGhlIGNsaWVudCBzaG91bGQgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5hYmxlIHRoYXQgYWxsIHRocmVhZHMgY2FuIGJlIGV4cGFuZGVkIHRvIGFjY2VzcyB0aGVpciBzdGFja3RyYWNlcy5cblx0XHRcdFx0LSBJZiB0aGUgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgZmFsc2UsIG9ubHkgdGhlIHRocmVhZCB3aXRoIHRoZSBnaXZlbiB0aHJlYWRJZCBjYW4gYmUgZXhwYW5kZWQuXG5cdFx0XHQqL1xuXHRcdFx0YWxsVGhyZWFkc1N0b3BwZWQ/OiBib29sZWFuO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2NvbnRpbnVlZCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZGVidWdnZWUgaGFzIGNvbnRpbnVlZC5cblx0XHRQbGVhc2Ugbm90ZTogYSBkZWJ1ZyBhZGFwdGVyIGlzIG5vdCBleHBlY3RlZCB0byBzZW5kIHRoaXMgZXZlbnQgaW4gcmVzcG9uc2UgdG8gYSByZXF1ZXN0IHRoYXQgaW1wbGllcyB0aGF0IGV4ZWN1dGlvbiBjb250aW51ZXMsIGUuZy4gJ2xhdW5jaCcgb3IgJ2NvbnRpbnVlJy5cblx0XHRJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBzZW5kIGEgJ2NvbnRpbnVlZCcgZXZlbnQgaWYgdGhlcmUgd2FzIG5vIHByZXZpb3VzIHJlcXVlc3QgdGhhdCBpbXBsaWVkIHRoaXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udGludWVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdjb250aW51ZWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgdGhyZWFkIHdoaWNoIHdhcyBjb250aW51ZWQuICovXG5cdFx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdFx0LyoqIElmICdhbGxUaHJlYWRzQ29udGludWVkJyBpcyB0cnVlLCBhIGRlYnVnIGFkYXB0ZXIgY2FuIGFubm91bmNlIHRoYXQgYWxsIHRocmVhZHMgaGF2ZSBjb250aW51ZWQuICovXG5cdFx0XHRhbGxUaHJlYWRzQ29udGludWVkPzogYm9vbGVhbjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdleGl0ZWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBkZWJ1Z2dlZSBoYXMgZXhpdGVkIGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXhpdGVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdleGl0ZWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgZXhpdCBjb2RlIHJldHVybmVkIGZyb20gdGhlIGRlYnVnZ2VlLiAqL1xuXHRcdFx0ZXhpdENvZGU6IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICd0ZXJtaW5hdGVkJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBkZWJ1Z2dpbmcgb2YgdGhlIGRlYnVnZ2VlIGhhcyB0ZXJtaW5hdGVkLiBUaGlzIGRvZXMgKipub3QqKiBtZWFuIHRoYXQgdGhlIGRlYnVnZ2VlIGl0c2VsZiBoYXMgZXhpdGVkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3Rlcm1pbmF0ZWQnO1xuXHRcdGJvZHk/OiB7XG5cdFx0XHQvKiogQSBkZWJ1ZyBhZGFwdGVyIG1heSBzZXQgJ3Jlc3RhcnQnIHRvIHRydWUgKG9yIHRvIGFuIGFyYml0cmFyeSBvYmplY3QpIHRvIHJlcXVlc3QgdGhhdCB0aGUgZnJvbnQgZW5kIHJlc3RhcnRzIHRoZSBzZXNzaW9uLlxuXHRcdFx0XHRUaGUgdmFsdWUgaXMgbm90IGludGVycHJldGVkIGJ5IHRoZSBjbGllbnQgYW5kIHBhc3NlZCB1bm1vZGlmaWVkIGFzIGFuIGF0dHJpYnV0ZSAnX19yZXN0YXJ0JyB0byB0aGUgJ2xhdW5jaCcgYW5kICdhdHRhY2gnIHJlcXVlc3RzLlxuXHRcdFx0Ki9cblx0XHRcdHJlc3RhcnQ/OiBhbnk7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAndGhyZWFkJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBhIHRocmVhZCBoYXMgc3RhcnRlZCBvciBleGl0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVGhyZWFkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICd0aHJlYWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVhc29uIGZvciB0aGUgZXZlbnQuXG5cdFx0XHRcdFZhbHVlczogJ3N0YXJ0ZWQnLCAnZXhpdGVkJywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdHJlYXNvbjogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSB0aHJlYWQuICovXG5cdFx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ291dHB1dCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIHRhcmdldCBoYXMgcHJvZHVjZWQgc29tZSBvdXRwdXQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdvdXRwdXQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgb3V0cHV0IGNhdGVnb3J5LiBJZiBub3Qgc3BlY2lmaWVkLCAnY29uc29sZScgaXMgYXNzdW1lZC5cblx0XHRcdFx0VmFsdWVzOiAnY29uc29sZScsICdzdGRvdXQnLCAnc3RkZXJyJywgJ3RlbGVtZXRyeScsIGV0Yy5cblx0XHRcdCovXG5cdFx0XHRjYXRlZ29yeT86IHN0cmluZztcblx0XHRcdC8qKiBUaGUgb3V0cHV0IHRvIHJlcG9ydC4gKi9cblx0XHRcdG91dHB1dDogc3RyaW5nO1xuXHRcdFx0LyoqIFN1cHBvcnQgZm9yIGtlZXBpbmcgYW4gb3V0cHV0IGxvZyBvcmdhbml6ZWQgYnkgZ3JvdXBpbmcgcmVsYXRlZCBtZXNzYWdlcy5cblx0XHRcdFx0J3N0YXJ0JzogU3RhcnQgYSBuZXcgZ3JvdXAgaW4gZXhwYW5kZWQgbW9kZS4gU3Vic2VxdWVudCBvdXRwdXQgZXZlbnRzIGFyZSBtZW1iZXJzIG9mIHRoZSBncm91cCBhbmQgc2hvdWxkIGJlIHNob3duIGluZGVudGVkLlxuXHRcdFx0XHRUaGUgJ291dHB1dCcgYXR0cmlidXRlIGJlY29tZXMgdGhlIG5hbWUgb2YgdGhlIGdyb3VwIGFuZCBpcyBub3QgaW5kZW50ZWQuXG5cdFx0XHRcdCdzdGFydENvbGxhcHNlZCc6IFN0YXJ0IGEgbmV3IGdyb3VwIGluIGNvbGxhcHNlZCBtb2RlLiBTdWJzZXF1ZW50IG91dHB1dCBldmVudHMgYXJlIG1lbWJlcnMgb2YgdGhlIGdyb3VwIGFuZCBzaG91bGQgYmUgc2hvd24gaW5kZW50ZWQgKGFzIHNvb24gYXMgdGhlIGdyb3VwIGlzIGV4cGFuZGVkKS5cblx0XHRcdFx0VGhlICdvdXRwdXQnIGF0dHJpYnV0ZSBiZWNvbWVzIHRoZSBuYW1lIG9mIHRoZSBncm91cCBhbmQgaXMgbm90IGluZGVudGVkLlxuXHRcdFx0XHQnZW5kJzogRW5kIHRoZSBjdXJyZW50IGdyb3VwIGFuZCBkZWNyZWFzZXMgdGhlIGluZGVudGF0aW9uIG9mIHN1YnNlcXVlbnQgb3V0cHV0IGV2ZW50cy5cblx0XHRcdFx0QSBub24gZW1wdHkgJ291dHB1dCcgYXR0cmlidXRlIGlzIHNob3duIGFzIHRoZSB1bmluZGVudGVkIGVuZCBvZiB0aGUgZ3JvdXAuXG5cdFx0XHQqL1xuXHRcdFx0Z3JvdXA/OiAnc3RhcnQnIHwgJ3N0YXJ0Q29sbGFwc2VkJyB8ICdlbmQnO1xuXHRcdFx0LyoqIElmIGFuIGF0dHJpYnV0ZSAndmFyaWFibGVzUmVmZXJlbmNlJyBleGlzdHMgYW5kIGl0cyB2YWx1ZSBpcyA+IDAsIHRoZSBvdXRwdXQgY29udGFpbnMgb2JqZWN0cyB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGJ5IHBhc3NpbmcgJ3ZhcmlhYmxlc1JlZmVyZW5jZScgdG8gdGhlICd2YXJpYWJsZXMnIHJlcXVlc3QuIFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS4gKi9cblx0XHRcdHZhcmlhYmxlc1JlZmVyZW5jZT86IG51bWJlcjtcblx0XHRcdC8qKiBBbiBvcHRpb25hbCBzb3VyY2UgbG9jYXRpb24gd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRzb3VyY2U/OiBTb3VyY2U7XG5cdFx0XHQvKiogQW4gb3B0aW9uYWwgc291cmNlIGxvY2F0aW9uIGxpbmUgd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRsaW5lPzogbnVtYmVyO1xuXHRcdFx0LyoqIEFuIG9wdGlvbmFsIHNvdXJjZSBsb2NhdGlvbiBjb2x1bW4gd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdFx0XHQvKiogT3B0aW9uYWwgZGF0YSB0byByZXBvcnQuIEZvciB0aGUgJ3RlbGVtZXRyeScgY2F0ZWdvcnkgdGhlIGRhdGEgd2lsbCBiZSBzZW50IHRvIHRlbGVtZXRyeSwgZm9yIHRoZSBvdGhlciBjYXRlZ29yaWVzIHRoZSBkYXRhIGlzIHNob3duIGluIEpTT04gZm9ybWF0LiAqL1xuXHRcdFx0ZGF0YT86IGFueTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdicmVha3BvaW50JyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGEgYnJlYWtwb2ludCBoYXMgY2hhbmdlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBCcmVha3BvaW50RXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdicmVha3BvaW50Jztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LlxuXHRcdFx0XHRWYWx1ZXM6ICdjaGFuZ2VkJywgJ25ldycsICdyZW1vdmVkJywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdHJlYXNvbjogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSAnaWQnIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGZpbmQgdGhlIHRhcmdldCBicmVha3BvaW50IGFuZCB0aGUgb3RoZXIgYXR0cmlidXRlcyBhcmUgdXNlZCBhcyB0aGUgbmV3IHZhbHVlcy4gKi9cblx0XHRcdGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQ7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnbW9kdWxlJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGEgbW9kdWxlIGhhcyBjaGFuZ2VkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnbW9kdWxlJztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LiAqL1xuXHRcdFx0cmVhc29uOiAnbmV3JyB8ICdjaGFuZ2VkJyB8ICdyZW1vdmVkJztcblx0XHRcdC8qKiBUaGUgbmV3LCBjaGFuZ2VkLCBvciByZW1vdmVkIG1vZHVsZS4gSW4gY2FzZSBvZiAncmVtb3ZlZCcgb25seSB0aGUgbW9kdWxlIGlkIGlzIHVzZWQuICovXG5cdFx0XHRtb2R1bGU6IE1vZHVsZTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdsb2FkZWRTb3VyY2UnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHNvbWUgc291cmNlIGhhcyBiZWVuIGFkZGVkLCBjaGFuZ2VkLCBvciByZW1vdmVkIGZyb20gdGhlIHNldCBvZiBhbGwgbG9hZGVkIHNvdXJjZXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkU291cmNlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdsb2FkZWRTb3VyY2UnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVhc29uIGZvciB0aGUgZXZlbnQuICovXG5cdFx0XHRyZWFzb246ICduZXcnIHwgJ2NoYW5nZWQnIHwgJ3JlbW92ZWQnO1xuXHRcdFx0LyoqIFRoZSBuZXcsIGNoYW5nZWQsIG9yIHJlbW92ZWQgc291cmNlLiAqL1xuXHRcdFx0c291cmNlOiBTb3VyY2U7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAncHJvY2VzcycgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGRlYnVnZ2VyIGhhcyBiZWd1biBkZWJ1Z2dpbmcgYSBuZXcgcHJvY2Vzcy4gRWl0aGVyIG9uZSB0aGF0IGl0IGhhcyBsYXVuY2hlZCwgb3Igb25lIHRoYXQgaXQgaGFzIGF0dGFjaGVkIHRvLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3Byb2Nlc3MnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgbG9naWNhbCBuYW1lIG9mIHRoZSBwcm9jZXNzLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGZ1bGwgcGF0aCB0byBwcm9jZXNzJ3MgZXhlY3V0YWJsZSBmaWxlLiBFeGFtcGxlOiAvaG9tZS9leGFtcGxlL215cHJvai9wcm9ncmFtLmpzLiAqL1xuXHRcdFx0bmFtZTogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBzeXN0ZW0gcHJvY2VzcyBpZCBvZiB0aGUgZGVidWdnZWQgcHJvY2Vzcy4gVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIG1pc3NpbmcgZm9yIG5vbi1zeXN0ZW0gcHJvY2Vzc2VzLiAqL1xuXHRcdFx0c3lzdGVtUHJvY2Vzc0lkPzogbnVtYmVyO1xuXHRcdFx0LyoqIElmIHRydWUsIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZXIgYXMgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0XHRpc0xvY2FsUHJvY2Vzcz86IGJvb2xlYW47XG5cdFx0XHQvKiogRGVzY3JpYmVzIGhvdyB0aGUgZGVidWcgZW5naW5lIHN0YXJ0ZWQgZGVidWdnaW5nIHRoaXMgcHJvY2Vzcy5cblx0XHRcdFx0J2xhdW5jaCc6IFByb2Nlc3Mgd2FzIGxhdW5jaGVkIHVuZGVyIHRoZSBkZWJ1Z2dlci5cblx0XHRcdFx0J2F0dGFjaCc6IERlYnVnZ2VyIGF0dGFjaGVkIHRvIGFuIGV4aXN0aW5nIHByb2Nlc3MuXG5cdFx0XHRcdCdhdHRhY2hGb3JTdXNwZW5kZWRMYXVuY2gnOiBBIHByb2plY3QgbGF1bmNoZXIgY29tcG9uZW50IGhhcyBsYXVuY2hlZCBhIG5ldyBwcm9jZXNzIGluIGEgc3VzcGVuZGVkIHN0YXRlIGFuZCB0aGVuIGFza2VkIHRoZSBkZWJ1Z2dlciB0byBhdHRhY2guXG5cdFx0XHQqL1xuXHRcdFx0c3RhcnRNZXRob2Q/OiAnbGF1bmNoJyB8ICdhdHRhY2gnIHwgJ2F0dGFjaEZvclN1c3BlbmRlZExhdW5jaCc7XG5cdFx0XHQvKiogVGhlIHNpemUgb2YgYSBwb2ludGVyIG9yIGFkZHJlc3MgZm9yIHRoaXMgcHJvY2VzcywgaW4gYml0cy4gVGhpcyB2YWx1ZSBtYXkgYmUgdXNlZCBieSBjbGllbnRzIHdoZW4gZm9ybWF0dGluZyBhZGRyZXNzZXMgZm9yIGRpc3BsYXkuICovXG5cdFx0XHRwb2ludGVyU2l6ZT86IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdjYXBhYmlsaXRpZXMnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IG9uZSBvciBtb3JlIGNhcGFiaWxpdGllcyBoYXZlIGNoYW5nZWQuXG5cdFx0U2luY2UgdGhlIGNhcGFiaWxpdGllcyBhcmUgZGVwZW5kZW50IG9uIHRoZSBmcm9udGVuZCBhbmQgaXRzIFVJLCBpdCBtaWdodCBub3QgYmUgcG9zc2libGUgdG8gY2hhbmdlIHRoYXQgYXQgcmFuZG9tIHRpbWVzIChvciB0b28gbGF0ZSkuXG5cdFx0Q29uc2VxdWVudGx5IHRoaXMgZXZlbnQgaGFzIGEgaGludCBjaGFyYWN0ZXJpc3RpYzogYSBmcm9udGVuZCBjYW4gb25seSBiZSBleHBlY3RlZCB0byBtYWtlIGEgJ2Jlc3QgZWZmb3J0JyBpbiBob25vdXJpbmcgaW5kaXZpZHVhbCBjYXBhYmlsaXRpZXMgYnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuXHRcdE9ubHkgY2hhbmdlZCBjYXBhYmlsaXRpZXMgbmVlZCB0byBiZSBpbmNsdWRlZCwgYWxsIG90aGVyIGNhcGFiaWxpdGllcyBrZWVwIHRoZWlyIHZhbHVlcy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDYXBhYmlsaXRpZXNFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ2NhcGFiaWxpdGllcyc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBzZXQgb2YgdXBkYXRlZCBjYXBhYmlsaXRpZXMuICovXG5cdFx0XHRjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdwcm9ncmVzc1N0YXJ0JyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBzaWduYWxzIHRoYXQgYSBsb25nIHJ1bm5pbmcgb3BlcmF0aW9uIGlzIGFib3V0IHRvIHN0YXJ0IGFuZFxuXHRcdHByb3ZpZGVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHRoZSBjbGllbnQgdG8gc2V0IHVwIGEgY29ycmVzcG9uZGluZyBwcm9ncmVzcyBhbmQgY2FuY2VsbGF0aW9uIFVJLlxuXHRcdFRoZSBjbGllbnQgaXMgZnJlZSB0byBkZWxheSB0aGUgc2hvd2luZyBvZiB0aGUgVUkgaW4gb3JkZXIgdG8gcmVkdWNlIGZsaWNrZXIuXG5cdFx0VGhpcyBldmVudCBzaG91bGQgb25seSBiZSBzZW50IGlmIHRoZSBjbGllbnQgaGFzIHBhc3NlZCB0aGUgdmFsdWUgdHJ1ZSBmb3IgdGhlICdzdXBwb3J0c1Byb2dyZXNzUmVwb3J0aW5nJyBjYXBhYmlsaXR5IG9mIHRoZSAnaW5pdGlhbGl6ZScgcmVxdWVzdC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1N0YXJ0RXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdwcm9ncmVzc1N0YXJ0Jztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQW4gSUQgdGhhdCBtdXN0IGJlIHVzZWQgaW4gc3Vic2VxdWVudCAncHJvZ3Jlc3NVcGRhdGUnIGFuZCAncHJvZ3Jlc3NFbmQnIGV2ZW50cyB0byBtYWtlIHRoZW0gcmVmZXIgdG8gdGhlIHNhbWUgcHJvZ3Jlc3MgcmVwb3J0aW5nLlxuXHRcdFx0XHRJRHMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGVidWcgc2Vzc2lvbi5cblx0XHRcdCovXG5cdFx0XHRwcm9ncmVzc0lkOiBzdHJpbmc7XG5cdFx0XHQvKiogTWFuZGF0b3J5IChzaG9ydCkgdGl0bGUgb2YgdGhlIHByb2dyZXNzIHJlcG9ydGluZy4gU2hvd24gaW4gdGhlIFVJIHRvIGRlc2NyaWJlIHRoZSBsb25nIHJ1bm5pbmcgb3BlcmF0aW9uLiAqL1xuXHRcdFx0dGl0bGU6IHN0cmluZztcblx0XHRcdC8qKiBUaGUgcmVxdWVzdCBJRCB0aGF0IHRoaXMgcHJvZ3Jlc3MgcmVwb3J0IGlzIHJlbGF0ZWQgdG8uIElmIHNwZWNpZmllZCBhIGRlYnVnIGFkYXB0ZXIgaXMgZXhwZWN0ZWQgdG8gZW1pdFxuXHRcdFx0XHRwcm9ncmVzcyBldmVudHMgZm9yIHRoZSBsb25nIHJ1bm5pbmcgcmVxdWVzdCB1bnRpbCB0aGUgcmVxdWVzdCBoYXMgYmVlbiBlaXRoZXIgY29tcGxldGVkIG9yIGNhbmNlbGxlZC5cblx0XHRcdFx0SWYgdGhlIHJlcXVlc3QgSUQgaXMgb21pdHRlZCwgdGhlIHByb2dyZXNzIHJlcG9ydCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0ZWQgdG8gc29tZSBnZW5lcmFsIGFjdGl2aXR5IG9mIHRoZSBkZWJ1ZyBhZGFwdGVyLlxuXHRcdFx0Ki9cblx0XHRcdHJlcXVlc3RJZD86IG51bWJlcjtcblx0XHRcdC8qKiBJZiB0cnVlLCB0aGUgcmVxdWVzdCB0aGF0IHJlcG9ydHMgcHJvZ3Jlc3MgbWF5IGJlIGNhbmNlbGVkIHdpdGggYSAnY2FuY2VsJyByZXF1ZXN0LlxuXHRcdFx0XHRTbyB0aGlzIHByb3BlcnR5IGJhc2ljYWxseSBjb250cm9scyB3aGV0aGVyIHRoZSBjbGllbnQgc2hvdWxkIHVzZSBVWCB0aGF0IHN1cHBvcnRzIGNhbmNlbGxhdGlvbi5cblx0XHRcdFx0Q2xpZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgY2FuY2VsbGF0aW9uIGFyZSBhbGxvd2VkIHRvIGlnbm9yZSB0aGUgc2V0dGluZy5cblx0XHRcdCovXG5cdFx0XHRjYW5jZWxsYWJsZT86IGJvb2xlYW47XG5cdFx0XHQvKiogT3B0aW9uYWwsIG1vcmUgZGV0YWlsZWQgcHJvZ3Jlc3MgbWVzc2FnZS4gKi9cblx0XHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0XHQvKiogT3B0aW9uYWwgcHJvZ3Jlc3MgcGVyY2VudGFnZSB0byBkaXNwbGF5ICh2YWx1ZSByYW5nZTogMCB0byAxMDApLiBJZiBvbWl0dGVkIG5vIHBlcmNlbnRhZ2Ugd2lsbCBiZSBzaG93bi4gKi9cblx0XHRcdHBlcmNlbnRhZ2U/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAncHJvZ3Jlc3NVcGRhdGUnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IHNpZ25hbHMgdGhhdCB0aGUgcHJvZ3Jlc3MgcmVwb3J0aW5nIG5lZWRzIHRvIHVwZGF0ZWQgd2l0aCBhIG5ldyBtZXNzYWdlIGFuZC9vciBwZXJjZW50YWdlLlxuXHRcdFRoZSBjbGllbnQgZG9lcyBub3QgaGF2ZSB0byB1cGRhdGUgdGhlIFVJIGltbWVkaWF0ZWx5LCBidXQgdGhlIGNsaWVudHMgbmVlZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUgbWVzc2FnZSBhbmQvb3IgcGVyY2VudGFnZSB2YWx1ZXMuXG5cdFx0VGhpcyBldmVudCBzaG91bGQgb25seSBiZSBzZW50IGlmIHRoZSBjbGllbnQgaGFzIHBhc3NlZCB0aGUgdmFsdWUgdHJ1ZSBmb3IgdGhlICdzdXBwb3J0c1Byb2dyZXNzUmVwb3J0aW5nJyBjYXBhYmlsaXR5IG9mIHRoZSAnaW5pdGlhbGl6ZScgcmVxdWVzdC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1VwZGF0ZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAncHJvZ3Jlc3NVcGRhdGUnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgSUQgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiB0aGUgaW5pdGlhbCAncHJvZ3Jlc3NTdGFydCcgZXZlbnQuICovXG5cdFx0XHRwcm9ncmVzc0lkOiBzdHJpbmc7XG5cdFx0XHQvKiogT3B0aW9uYWwsIG1vcmUgZGV0YWlsZWQgcHJvZ3Jlc3MgbWVzc2FnZS4gSWYgb21pdHRlZCwgdGhlIHByZXZpb3VzIG1lc3NhZ2UgKGlmIGFueSkgaXMgdXNlZC4gKi9cblx0XHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0XHQvKiogT3B0aW9uYWwgcHJvZ3Jlc3MgcGVyY2VudGFnZSB0byBkaXNwbGF5ICh2YWx1ZSByYW5nZTogMCB0byAxMDApLiBJZiBvbWl0dGVkIG5vIHBlcmNlbnRhZ2Ugd2lsbCBiZSBzaG93bi4gKi9cblx0XHRcdHBlcmNlbnRhZ2U/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAncHJvZ3Jlc3NFbmQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgcHJvZ3Jlc3MgcmVwb3J0aW5nIHdpdGggYW4gb3B0aW9uYWwgZmluYWwgbWVzc2FnZS5cblx0XHRUaGlzIGV2ZW50IHNob3VsZCBvbmx5IGJlIHNlbnQgaWYgdGhlIGNsaWVudCBoYXMgcGFzc2VkIHRoZSB2YWx1ZSB0cnVlIGZvciB0aGUgJ3N1cHBvcnRzUHJvZ3Jlc3NSZXBvcnRpbmcnIGNhcGFiaWxpdHkgb2YgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzRW5kRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdwcm9ncmVzc0VuZCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBJRCB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHRoZSBpbml0aWFsICdQcm9ncmVzc1N0YXJ0RXZlbnQnLiAqL1xuXHRcdFx0cHJvZ3Jlc3NJZDogc3RyaW5nO1xuXHRcdFx0LyoqIE9wdGlvbmFsLCBtb3JlIGRldGFpbGVkIHByb2dyZXNzIG1lc3NhZ2UuIElmIG9taXR0ZWQsIHRoZSBwcmV2aW91cyBtZXNzYWdlIChpZiBhbnkpIGlzIHVzZWQuICovXG5cdFx0XHRtZXNzYWdlPzogc3RyaW5nO1xuXHRcdH07XG5cdH1cblxuXHQvKiogUnVuSW5UZXJtaW5hbCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdydW5JblRlcm1pbmFsJy5cblx0XHRUaGlzIG9wdGlvbmFsIHJlcXVlc3QgaXMgc2VudCBmcm9tIHRoZSBkZWJ1ZyBhZGFwdGVyIHRvIHRoZSBjbGllbnQgdG8gcnVuIGEgY29tbWFuZCBpbiBhIHRlcm1pbmFsLlxuXHRcdFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gbGF1bmNoIHRoZSBkZWJ1Z2dlZSBpbiBhIHRlcm1pbmFsIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQuXG5cdFx0VGhpcyByZXF1ZXN0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgY2xpZW50IGhhcyBwYXNzZWQgdGhlIHZhbHVlIHRydWUgZm9yIHRoZSAnc3VwcG9ydHNSdW5JblRlcm1pbmFsUmVxdWVzdCcgY2FwYWJpbGl0eSBvZiB0aGUgJ2luaXRpYWxpemUnIHJlcXVlc3QuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUnVuSW5UZXJtaW5hbFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAncnVuSW5UZXJtaW5hbCc7XG5cdFx0YXJndW1lbnRzOiBSdW5JblRlcm1pbmFsUmVxdWVzdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdydW5JblRlcm1pbmFsJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJ1bkluVGVybWluYWxSZXF1ZXN0QXJndW1lbnRzIHtcblx0XHQvKiogV2hhdCBraW5kIG9mIHRlcm1pbmFsIHRvIGxhdW5jaC4gKi9cblx0XHRraW5kPzogJ2ludGVncmF0ZWQnIHwgJ2V4dGVybmFsJztcblx0XHQvKiogT3B0aW9uYWwgdGl0bGUgb2YgdGhlIHRlcm1pbmFsLiAqL1xuXHRcdHRpdGxlPzogc3RyaW5nO1xuXHRcdC8qKiBXb3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY29tbWFuZC4gKi9cblx0XHRjd2Q6IHN0cmluZztcblx0XHQvKiogTGlzdCBvZiBhcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCB0byBydW4uICovXG5cdFx0YXJnczogc3RyaW5nW107XG5cdFx0LyoqIEVudmlyb25tZW50IGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQuICovXG5cdFx0ZW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudWxsOyB9O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdydW5JblRlcm1pbmFsJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJ1bkluVGVybWluYWxSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHByb2Nlc3MgSUQuIFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS4gKi9cblx0XHRcdHByb2Nlc3NJZD86IG51bWJlcjtcblx0XHRcdC8qKiBUaGUgcHJvY2VzcyBJRCBvZiB0aGUgdGVybWluYWwgc2hlbGwuIFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS4gKi9cblx0XHRcdHNoZWxsUHJvY2Vzc0lkPzogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogSW5pdGlhbGl6ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdpbml0aWFsaXplJy5cblx0XHRUaGUgJ2luaXRpYWxpemUnIHJlcXVlc3QgaXMgc2VudCBhcyB0aGUgZmlyc3QgcmVxdWVzdCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIGRlYnVnIGFkYXB0ZXJcblx0XHRpbiBvcmRlciB0byBjb25maWd1cmUgaXQgd2l0aCBjbGllbnQgY2FwYWJpbGl0aWVzIGFuZCB0byByZXRyaWV2ZSBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgZGVidWcgYWRhcHRlci5cblx0XHRVbnRpbCB0aGUgZGVidWcgYWRhcHRlciBoYXMgcmVzcG9uZGVkIHRvIHdpdGggYW4gJ2luaXRpYWxpemUnIHJlc3BvbnNlLCB0aGUgY2xpZW50IG11c3Qgbm90IHNlbmQgYW55IGFkZGl0aW9uYWwgcmVxdWVzdHMgb3IgZXZlbnRzIHRvIHRoZSBkZWJ1ZyBhZGFwdGVyLlxuXHRcdEluIGFkZGl0aW9uIHRoZSBkZWJ1ZyBhZGFwdGVyIGlzIG5vdCBhbGxvd2VkIHRvIHNlbmQgYW55IHJlcXVlc3RzIG9yIGV2ZW50cyB0byB0aGUgY2xpZW50IHVudGlsIGl0IGhhcyByZXNwb25kZWQgd2l0aCBhbiAnaW5pdGlhbGl6ZScgcmVzcG9uc2UuXG5cdFx0VGhlICdpbml0aWFsaXplJyByZXF1ZXN0IG1heSBvbmx5IGJlIHNlbnQgb25jZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdpbml0aWFsaXplJztcblx0XHRhcmd1bWVudHM6IEluaXRpYWxpemVSZXF1ZXN0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2luaXRpYWxpemUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZVJlcXVlc3RBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgSUQgb2YgdGhlIChmcm9udGVuZCkgY2xpZW50IHVzaW5nIHRoaXMgYWRhcHRlci4gKi9cblx0XHRjbGllbnRJRD86IHN0cmluZztcblx0XHQvKiogVGhlIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIChmcm9udGVuZCkgY2xpZW50IHVzaW5nIHRoaXMgYWRhcHRlci4gKi9cblx0XHRjbGllbnROYW1lPzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgSUQgb2YgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0YWRhcHRlcklEOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBJU08tNjM5IGxvY2FsZSBvZiB0aGUgKGZyb250ZW5kKSBjbGllbnQgdXNpbmcgdGhpcyBhZGFwdGVyLCBlLmcuIGVuLVVTIG9yIGRlLUNILiAqL1xuXHRcdGxvY2FsZT86IHN0cmluZztcblx0XHQvKiogSWYgdHJ1ZSBhbGwgbGluZSBudW1iZXJzIGFyZSAxLWJhc2VkIChkZWZhdWx0KS4gKi9cblx0XHRsaW5lc1N0YXJ0QXQxPzogYm9vbGVhbjtcblx0XHQvKiogSWYgdHJ1ZSBhbGwgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFzZWQgKGRlZmF1bHQpLiAqL1xuXHRcdGNvbHVtbnNTdGFydEF0MT86IGJvb2xlYW47XG5cdFx0LyoqIERldGVybWluZXMgaW4gd2hhdCBmb3JtYXQgcGF0aHMgYXJlIHNwZWNpZmllZC4gVGhlIGRlZmF1bHQgaXMgJ3BhdGgnLCB3aGljaCBpcyB0aGUgbmF0aXZlIGZvcm1hdC5cblx0XHRcdFZhbHVlczogJ3BhdGgnLCAndXJpJywgZXRjLlxuXHRcdCovXG5cdFx0cGF0aEZvcm1hdD86IHN0cmluZztcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIHRoZSBvcHRpb25hbCB0eXBlIGF0dHJpYnV0ZSBmb3IgdmFyaWFibGVzLiAqL1xuXHRcdHN1cHBvcnRzVmFyaWFibGVUeXBlPzogYm9vbGVhbjtcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIHRoZSBwYWdpbmcgb2YgdmFyaWFibGVzLiAqL1xuXHRcdHN1cHBvcnRzVmFyaWFibGVQYWdpbmc/OiBib29sZWFuO1xuXHRcdC8qKiBDbGllbnQgc3VwcG9ydHMgdGhlIHJ1bkluVGVybWluYWwgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c1J1bkluVGVybWluYWxSZXF1ZXN0PzogYm9vbGVhbjtcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIG1lbW9yeSByZWZlcmVuY2VzLiAqL1xuXHRcdHN1cHBvcnRzTWVtb3J5UmVmZXJlbmNlcz86IGJvb2xlYW47XG5cdFx0LyoqIENsaWVudCBzdXBwb3J0cyBwcm9ncmVzcyByZXBvcnRpbmcuICovXG5cdFx0c3VwcG9ydHNQcm9ncmVzc1JlcG9ydGluZz86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2luaXRpYWxpemUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdC8qKiBUaGUgY2FwYWJpbGl0aWVzIG9mIHRoaXMgZGVidWcgYWRhcHRlci4gKi9cblx0XHRib2R5PzogQ2FwYWJpbGl0aWVzO1xuXHR9XG5cblx0LyoqIENvbmZpZ3VyYXRpb25Eb25lIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2NvbmZpZ3VyYXRpb25Eb25lJy5cblx0XHRUaGlzIG9wdGlvbmFsIHJlcXVlc3QgaW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBoYXMgZmluaXNoZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRlYnVnIGFkYXB0ZXIuXG5cdFx0U28gaXQgaXMgdGhlIGxhc3QgcmVxdWVzdCBpbiB0aGUgc2VxdWVuY2Ugb2YgY29uZmlndXJhdGlvbiByZXF1ZXN0cyAod2hpY2ggd2FzIHN0YXJ0ZWQgYnkgdGhlICdpbml0aWFsaXplZCcgZXZlbnQpLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0JyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdjb25maWd1cmF0aW9uRG9uZSc7XG5cdFx0YXJndW1lbnRzPzogQ29uZmlndXJhdGlvbkRvbmVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY29uZmlndXJhdGlvbkRvbmUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJhdGlvbkRvbmVBcmd1bWVudHMge1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdjb25maWd1cmF0aW9uRG9uZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uRG9uZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIExhdW5jaCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdsYXVuY2gnLlxuXHRcdFRoaXMgbGF1bmNoIHJlcXVlc3QgaXMgc2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIGRlYnVnIGFkYXB0ZXIgdG8gc3RhcnQgdGhlIGRlYnVnZ2VlIHdpdGggb3Igd2l0aG91dCBkZWJ1Z2dpbmcgKGlmICdub0RlYnVnJyBpcyB0cnVlKS5cblx0XHRTaW5jZSBsYXVuY2hpbmcgaXMgZGVidWdnZXIvcnVudGltZSBzcGVjaWZpYywgdGhlIGFyZ3VtZW50cyBmb3IgdGhpcyByZXF1ZXN0IGFyZSBub3QgcGFydCBvZiB0aGlzIHNwZWNpZmljYXRpb24uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdsYXVuY2gnO1xuXHRcdGFyZ3VtZW50czogTGF1bmNoUmVxdWVzdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdsYXVuY2gnIHJlcXVlc3QuIEFkZGl0aW9uYWwgYXR0cmlidXRlcyBhcmUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoUmVxdWVzdEFyZ3VtZW50cyB7XG5cdFx0LyoqIElmIG5vRGVidWcgaXMgdHJ1ZSB0aGUgbGF1bmNoIHJlcXVlc3Qgc2hvdWxkIGxhdW5jaCB0aGUgcHJvZ3JhbSB3aXRob3V0IGVuYWJsaW5nIGRlYnVnZ2luZy4gKi9cblx0XHRub0RlYnVnPzogYm9vbGVhbjtcblx0XHQvKiogT3B0aW9uYWwgZGF0YSBmcm9tIHRoZSBwcmV2aW91cywgcmVzdGFydGVkIHNlc3Npb24uXG5cdFx0XHRUaGUgZGF0YSBpcyBzZW50IGFzIHRoZSAncmVzdGFydCcgYXR0cmlidXRlIG9mIHRoZSAndGVybWluYXRlZCcgZXZlbnQuXG5cdFx0XHRUaGUgY2xpZW50IHNob3VsZCBsZWF2ZSB0aGUgZGF0YSBpbnRhY3QuXG5cdFx0Ki9cblx0XHRfX3Jlc3RhcnQ/OiBhbnk7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2xhdW5jaCcgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMYXVuY2hSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBBdHRhY2ggcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnYXR0YWNoJy5cblx0XHRUaGUgYXR0YWNoIHJlcXVlc3QgaXMgc2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIGRlYnVnIGFkYXB0ZXIgdG8gYXR0YWNoIHRvIGEgZGVidWdnZWUgdGhhdCBpcyBhbHJlYWR5IHJ1bm5pbmcuXG5cdFx0U2luY2UgYXR0YWNoaW5nIGlzIGRlYnVnZ2VyL3J1bnRpbWUgc3BlY2lmaWMsIHRoZSBhcmd1bWVudHMgZm9yIHRoaXMgcmVxdWVzdCBhcmUgbm90IHBhcnQgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEF0dGFjaFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnYXR0YWNoJztcblx0XHRhcmd1bWVudHM6IEF0dGFjaFJlcXVlc3RBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnYXR0YWNoJyByZXF1ZXN0LiBBZGRpdGlvbmFsIGF0dHJpYnV0ZXMgYXJlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEF0dGFjaFJlcXVlc3RBcmd1bWVudHMge1xuXHRcdC8qKiBPcHRpb25hbCBkYXRhIGZyb20gdGhlIHByZXZpb3VzLCByZXN0YXJ0ZWQgc2Vzc2lvbi5cblx0XHRcdFRoZSBkYXRhIGlzIHNlbnQgYXMgdGhlICdyZXN0YXJ0JyBhdHRyaWJ1dGUgb2YgdGhlICd0ZXJtaW5hdGVkJyBldmVudC5cblx0XHRcdFRoZSBjbGllbnQgc2hvdWxkIGxlYXZlIHRoZSBkYXRhIGludGFjdC5cblx0XHQqL1xuXHRcdF9fcmVzdGFydD86IGFueTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnYXR0YWNoJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEF0dGFjaFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFJlc3RhcnQgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncmVzdGFydCcuXG5cdFx0UmVzdGFydHMgYSBkZWJ1ZyBzZXNzaW9uLiBDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c1Jlc3RhcnRSZXF1ZXN0JyBpcyB0cnVlLlxuXHRcdElmIHRoZSBjYXBhYmlsaXR5IGlzIG1pc3Npbmcgb3IgaGFzIHRoZSB2YWx1ZSBmYWxzZSwgYSB0eXBpY2FsIGNsaWVudCB3aWxsIGVtdWxhdGUgJ3Jlc3RhcnQnIGJ5IHRlcm1pbmF0aW5nIHRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IGFuZCB0aGVuIGxhdW5jaGluZyBpdCBhbmV3LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3Jlc3RhcnQnO1xuXHRcdGFyZ3VtZW50cz86IFJlc3RhcnRBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAncmVzdGFydCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0QXJndW1lbnRzIHtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAncmVzdGFydCcgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0UmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogRGlzY29ubmVjdCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdkaXNjb25uZWN0Jy5cblx0XHRUaGUgJ2Rpc2Nvbm5lY3QnIHJlcXVlc3QgaXMgc2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIGRlYnVnIGFkYXB0ZXIgaW4gb3JkZXIgdG8gc3RvcCBkZWJ1Z2dpbmcuXG5cdFx0SXQgYXNrcyB0aGUgZGVidWcgYWRhcHRlciB0byBkaXNjb25uZWN0IGZyb20gdGhlIGRlYnVnZ2VlIGFuZCB0byB0ZXJtaW5hdGUgdGhlIGRlYnVnIGFkYXB0ZXIuXG5cdFx0SWYgdGhlIGRlYnVnZ2VlIGhhcyBiZWVuIHN0YXJ0ZWQgd2l0aCB0aGUgJ2xhdW5jaCcgcmVxdWVzdCwgdGhlICdkaXNjb25uZWN0JyByZXF1ZXN0IHRlcm1pbmF0ZXMgdGhlIGRlYnVnZ2VlLlxuXHRcdElmIHRoZSAnYXR0YWNoJyByZXF1ZXN0IHdhcyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRlYnVnZ2VlLCAnZGlzY29ubmVjdCcgZG9lcyBub3QgdGVybWluYXRlIHRoZSBkZWJ1Z2dlZS5cblx0XHRUaGlzIGJlaGF2aW9yIGNhbiBiZSBjb250cm9sbGVkIHdpdGggdGhlICd0ZXJtaW5hdGVEZWJ1Z2dlZScgYXJndW1lbnQgKGlmIHN1cHBvcnRlZCBieSB0aGUgZGVidWcgYWRhcHRlcikuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRGlzY29ubmVjdFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZGlzY29ubmVjdCc7XG5cdFx0YXJndW1lbnRzPzogRGlzY29ubmVjdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdkaXNjb25uZWN0JyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Nvbm5lY3RBcmd1bWVudHMge1xuXHRcdC8qKiBBIHZhbHVlIG9mIHRydWUgaW5kaWNhdGVzIHRoYXQgdGhpcyAnZGlzY29ubmVjdCcgcmVxdWVzdCBpcyBwYXJ0IG9mIGEgcmVzdGFydCBzZXF1ZW5jZS4gKi9cblx0XHRyZXN0YXJ0PzogYm9vbGVhbjtcblx0XHQvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRlYnVnZ2VlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGRpc2Nvbm5lY3RlZC5cblx0XHRcdElmIHVuc3BlY2lmaWVkLCB0aGUgZGVidWcgYWRhcHRlciBpcyBmcmVlIHRvIGRvIHdoYXRldmVyIGl0IHRoaW5rcyBpcyBiZXN0LlxuXHRcdFx0VGhlIGF0dHJpYnV0ZSBpcyBvbmx5IGhvbm9yZWQgYnkgYSBkZWJ1ZyBhZGFwdGVyIGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0VGVybWluYXRlRGVidWdnZWUnIGlzIHRydWUuXG5cdFx0Ki9cblx0XHR0ZXJtaW5hdGVEZWJ1Z2dlZT86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2Rpc2Nvbm5lY3QnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRGlzY29ubmVjdFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFRlcm1pbmF0ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICd0ZXJtaW5hdGUnLlxuXHRcdFRoZSAndGVybWluYXRlJyByZXF1ZXN0IGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBkZWJ1ZyBhZGFwdGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIGRlYnVnZ2VlIGEgY2hhbmNlIGZvciB0ZXJtaW5hdGluZyBpdHNlbGYuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNUZXJtaW5hdGVSZXF1ZXN0JyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAndGVybWluYXRlJztcblx0XHRhcmd1bWVudHM/OiBUZXJtaW5hdGVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAndGVybWluYXRlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZUFyZ3VtZW50cyB7XG5cdFx0LyoqIEEgdmFsdWUgb2YgdHJ1ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzICd0ZXJtaW5hdGUnIHJlcXVlc3QgaXMgcGFydCBvZiBhIHJlc3RhcnQgc2VxdWVuY2UuICovXG5cdFx0cmVzdGFydD86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3Rlcm1pbmF0ZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBUZXJtaW5hdGVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBCcmVha3BvaW50TG9jYXRpb25zIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2JyZWFrcG9pbnRMb2NhdGlvbnMnLlxuXHRcdFRoZSAnYnJlYWtwb2ludExvY2F0aW9ucycgcmVxdWVzdCByZXR1cm5zIGFsbCBwb3NzaWJsZSBsb2NhdGlvbnMgZm9yIHNvdXJjZSBicmVha3BvaW50cyBpbiBhIGdpdmVuIHJhbmdlLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzQnJlYWtwb2ludExvY2F0aW9uc1JlcXVlc3QnIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludExvY2F0aW9uc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnYnJlYWtwb2ludExvY2F0aW9ucyc7XG5cdFx0YXJndW1lbnRzPzogQnJlYWtwb2ludExvY2F0aW9uc0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdicmVha3BvaW50TG9jYXRpb25zJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEJyZWFrcG9pbnRMb2NhdGlvbnNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgc291cmNlIGxvY2F0aW9uIG9mIHRoZSBicmVha3BvaW50czsgZWl0aGVyICdzb3VyY2UucGF0aCcgb3IgJ3NvdXJjZS5yZWZlcmVuY2UnIG11c3QgYmUgc3BlY2lmaWVkLiAqL1xuXHRcdHNvdXJjZTogU291cmNlO1xuXHRcdC8qKiBTdGFydCBsaW5lIG9mIHJhbmdlIHRvIHNlYXJjaCBwb3NzaWJsZSBicmVha3BvaW50IGxvY2F0aW9ucyBpbi4gSWYgb25seSB0aGUgbGluZSBpcyBzcGVjaWZpZWQsIHRoZSByZXF1ZXN0IHJldHVybnMgYWxsIHBvc3NpYmxlIGxvY2F0aW9ucyBpbiB0aGF0IGxpbmUuICovXG5cdFx0bGluZTogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBzdGFydCBjb2x1bW4gb2YgcmFuZ2UgdG8gc2VhcmNoIHBvc3NpYmxlIGJyZWFrcG9pbnQgbG9jYXRpb25zIGluLiBJZiBubyBzdGFydCBjb2x1bW4gaXMgZ2l2ZW4sIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHN0YXJ0IGxpbmUgaXMgYXNzdW1lZC4gKi9cblx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIGVuZCBsaW5lIG9mIHJhbmdlIHRvIHNlYXJjaCBwb3NzaWJsZSBicmVha3BvaW50IGxvY2F0aW9ucyBpbi4gSWYgbm8gZW5kIGxpbmUgaXMgZ2l2ZW4sIHRoZW4gdGhlIGVuZCBsaW5lIGlzIGFzc3VtZWQgdG8gYmUgdGhlIHN0YXJ0IGxpbmUuICovXG5cdFx0ZW5kTGluZT86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZW5kIGNvbHVtbiBvZiByYW5nZSB0byBzZWFyY2ggcG9zc2libGUgYnJlYWtwb2ludCBsb2NhdGlvbnMgaW4uIElmIG5vIGVuZCBjb2x1bW4gaXMgZ2l2ZW4sIHRoZW4gaXQgaXMgYXNzdW1lZCB0byBiZSBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIGVuZCBsaW5lLiAqL1xuXHRcdGVuZENvbHVtbj86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnYnJlYWtwb2ludExvY2F0aW9ucycgcmVxdWVzdC5cblx0XHRDb250YWlucyBwb3NzaWJsZSBsb2NhdGlvbnMgZm9yIHNvdXJjZSBicmVha3BvaW50cy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBCcmVha3BvaW50TG9jYXRpb25zUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFNvcnRlZCBzZXQgb2YgcG9zc2libGUgYnJlYWtwb2ludCBsb2NhdGlvbnMuICovXG5cdFx0XHRicmVha3BvaW50czogQnJlYWtwb2ludExvY2F0aW9uW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXRCcmVha3BvaW50cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRCcmVha3BvaW50cycuXG5cdFx0U2V0cyBtdWx0aXBsZSBicmVha3BvaW50cyBmb3IgYSBzaW5nbGUgc291cmNlIGFuZCBjbGVhcnMgYWxsIHByZXZpb3VzIGJyZWFrcG9pbnRzIGluIHRoYXQgc291cmNlLlxuXHRcdFRvIGNsZWFyIGFsbCBicmVha3BvaW50IGZvciBhIHNvdXJjZSwgc3BlY2lmeSBhbiBlbXB0eSBhcnJheS5cblx0XHRXaGVuIGEgYnJlYWtwb2ludCBpcyBoaXQsIGEgJ3N0b3BwZWQnIGV2ZW50ICh3aXRoIHJlYXNvbiAnYnJlYWtwb2ludCcpIGlzIGdlbmVyYXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRCcmVha3BvaW50c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0QnJlYWtwb2ludHMnO1xuXHRcdGFyZ3VtZW50czogU2V0QnJlYWtwb2ludHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2V0QnJlYWtwb2ludHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0QnJlYWtwb2ludHNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgc291cmNlIGxvY2F0aW9uIG9mIHRoZSBicmVha3BvaW50czsgZWl0aGVyICdzb3VyY2UucGF0aCcgb3IgJ3NvdXJjZS5yZWZlcmVuY2UnIG11c3QgYmUgc3BlY2lmaWVkLiAqL1xuXHRcdHNvdXJjZTogU291cmNlO1xuXHRcdC8qKiBUaGUgY29kZSBsb2NhdGlvbnMgb2YgdGhlIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGJyZWFrcG9pbnRzPzogU291cmNlQnJlYWtwb2ludFtdO1xuXHRcdC8qKiBEZXByZWNhdGVkOiBUaGUgY29kZSBsb2NhdGlvbnMgb2YgdGhlIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGxpbmVzPzogbnVtYmVyW107XG5cdFx0LyoqIEEgdmFsdWUgb2YgdHJ1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdW5kZXJseWluZyBzb3VyY2UgaGFzIGJlZW4gbW9kaWZpZWQgd2hpY2ggcmVzdWx0cyBpbiBuZXcgYnJlYWtwb2ludCBsb2NhdGlvbnMuICovXG5cdFx0c291cmNlTW9kaWZpZWQ/OiBib29sZWFuO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRCcmVha3BvaW50cycgcmVxdWVzdC5cblx0XHRSZXR1cm5lZCBpcyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGJyZWFrcG9pbnQgY3JlYXRlZCBieSB0aGlzIHJlcXVlc3QuXG5cdFx0VGhpcyBpbmNsdWRlcyB0aGUgYWN0dWFsIGNvZGUgbG9jYXRpb24gYW5kIHdoZXRoZXIgdGhlIGJyZWFrcG9pbnQgY291bGQgYmUgdmVyaWZpZWQuXG5cdFx0VGhlIGJyZWFrcG9pbnRzIHJldHVybmVkIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgZWxlbWVudHMgb2YgdGhlICdicmVha3BvaW50cydcblx0XHQob3IgdGhlIGRlcHJlY2F0ZWQgJ2xpbmVzJykgYXJyYXkgaW4gdGhlIGFyZ3VtZW50cy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRCcmVha3BvaW50c1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludHMuXG5cdFx0XHRcdFRoZSBhcnJheSBlbGVtZW50cyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGVsZW1lbnRzIG9mIHRoZSAnYnJlYWtwb2ludHMnIChvciB0aGUgZGVwcmVjYXRlZCAnbGluZXMnKSBhcnJheSBpbiB0aGUgYXJndW1lbnRzLlxuXHRcdFx0Ki9cblx0XHRcdGJyZWFrcG9pbnRzOiBCcmVha3BvaW50W107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnLlxuXHRcdFJlcGxhY2VzIGFsbCBleGlzdGluZyBmdW5jdGlvbiBicmVha3BvaW50cyB3aXRoIG5ldyBmdW5jdGlvbiBicmVha3BvaW50cy5cblx0XHRUbyBjbGVhciBhbGwgZnVuY3Rpb24gYnJlYWtwb2ludHMsIHNwZWNpZnkgYW4gZW1wdHkgYXJyYXkuXG5cdFx0V2hlbiBhIGZ1bmN0aW9uIGJyZWFrcG9pbnQgaXMgaGl0LCBhICdzdG9wcGVkJyBldmVudCAod2l0aCByZWFzb24gJ2Z1bmN0aW9uIGJyZWFrcG9pbnQnKSBpcyBnZW5lcmF0ZWQuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNGdW5jdGlvbkJyZWFrcG9pbnRzJyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEZ1bmN0aW9uQnJlYWtwb2ludHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnO1xuXHRcdGFyZ3VtZW50czogU2V0RnVuY3Rpb25CcmVha3BvaW50c0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzZXRGdW5jdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEZ1bmN0aW9uQnJlYWtwb2ludHNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgZnVuY3Rpb24gbmFtZXMgb2YgdGhlIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGJyZWFrcG9pbnRzOiBGdW5jdGlvbkJyZWFrcG9pbnRbXTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc2V0RnVuY3Rpb25CcmVha3BvaW50cycgcmVxdWVzdC5cblx0XHRSZXR1cm5lZCBpcyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGJyZWFrcG9pbnQgY3JlYXRlZCBieSB0aGlzIHJlcXVlc3QuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RnVuY3Rpb25CcmVha3BvaW50c1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludHMuIFRoZSBhcnJheSBlbGVtZW50cyBjb3JyZXNwb25kIHRvIHRoZSBlbGVtZW50cyBvZiB0aGUgJ2JyZWFrcG9pbnRzJyBhcnJheS4gKi9cblx0XHRcdGJyZWFrcG9pbnRzOiBCcmVha3BvaW50W107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXRFeGNlcHRpb25CcmVha3BvaW50cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRFeGNlcHRpb25CcmVha3BvaW50cycuXG5cdFx0VGhlIHJlcXVlc3QgY29uZmlndXJlcyB0aGUgZGVidWdnZXJzIHJlc3BvbnNlIHRvIHRocm93biBleGNlcHRpb25zLlxuXHRcdElmIGFuIGV4Y2VwdGlvbiBpcyBjb25maWd1cmVkIHRvIGJyZWFrLCBhICdzdG9wcGVkJyBldmVudCBpcyBmaXJlZCAod2l0aCByZWFzb24gJ2V4Y2VwdGlvbicpLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ2V4Y2VwdGlvbkJyZWFrcG9pbnRGaWx0ZXJzJyByZXR1cm5zIG9uZSBvciBtb3JlIGZpbHRlcnMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhjZXB0aW9uQnJlYWtwb2ludHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJztcblx0XHRhcmd1bWVudHM6IFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzIHtcblx0XHQvKiogSURzIG9mIGNoZWNrZWQgZXhjZXB0aW9uIG9wdGlvbnMuIFRoZSBzZXQgb2YgSURzIGlzIHJldHVybmVkIHZpYSB0aGUgJ2V4Y2VwdGlvbkJyZWFrcG9pbnRGaWx0ZXJzJyBjYXBhYmlsaXR5LiAqL1xuXHRcdGZpbHRlcnM6IHN0cmluZ1tdO1xuXHRcdC8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHNlbGVjdGVkIGV4Y2VwdGlvbnMuXG5cdFx0XHRUaGUgYXR0cmlidXRlIGlzIG9ubHkgaG9ub3JlZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzRXhjZXB0aW9uT3B0aW9ucycgaXMgdHJ1ZS5cblx0XHQqL1xuXHRcdGV4Y2VwdGlvbk9wdGlvbnM/OiBFeGNlcHRpb25PcHRpb25zW107XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogRGF0YUJyZWFrcG9pbnRJbmZvIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2RhdGFCcmVha3BvaW50SW5mbycuXG5cdFx0T2J0YWlucyBpbmZvcm1hdGlvbiBvbiBhIHBvc3NpYmxlIGRhdGEgYnJlYWtwb2ludCB0aGF0IGNvdWxkIGJlIHNldCBvbiBhbiBleHByZXNzaW9uIG9yIHZhcmlhYmxlLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzRGF0YUJyZWFrcG9pbnRzJyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERhdGFCcmVha3BvaW50SW5mb1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZGF0YUJyZWFrcG9pbnRJbmZvJztcblx0XHRhcmd1bWVudHM6IERhdGFCcmVha3BvaW50SW5mb0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdkYXRhQnJlYWtwb2ludEluZm8nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRGF0YUJyZWFrcG9pbnRJbmZvQXJndW1lbnRzIHtcblx0XHQvKiogUmVmZXJlbmNlIHRvIHRoZSBWYXJpYWJsZSBjb250YWluZXIgaWYgdGhlIGRhdGEgYnJlYWtwb2ludCBpcyByZXF1ZXN0ZWQgZm9yIGEgY2hpbGQgb2YgdGhlIGNvbnRhaW5lci4gKi9cblx0XHR2YXJpYWJsZXNSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBuYW1lIG9mIHRoZSBWYXJpYWJsZSdzIGNoaWxkIHRvIG9idGFpbiBkYXRhIGJyZWFrcG9pbnQgaW5mb3JtYXRpb24gZm9yLlxuXHRcdFx0SWYgdmFyaWFibGVSZWZlcmVuY2UgaXNu4oCZdCBwcm92aWRlZCwgdGhpcyBjYW4gYmUgYW4gZXhwcmVzc2lvbi5cblx0XHQqL1xuXHRcdG5hbWU6IHN0cmluZztcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnZGF0YUJyZWFrcG9pbnRJbmZvJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERhdGFCcmVha3BvaW50SW5mb1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YSBvbiB3aGljaCBhIGRhdGEgYnJlYWtwb2ludCBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXREYXRhQnJlYWtwb2ludHMgcmVxdWVzdCBvciBudWxsIGlmIG5vIGRhdGEgYnJlYWtwb2ludCBpcyBhdmFpbGFibGUuICovXG5cdFx0XHRkYXRhSWQ6IHN0cmluZyB8IG51bGw7XG5cdFx0XHQvKiogVUkgc3RyaW5nIHRoYXQgZGVzY3JpYmVzIG9uIHdoYXQgZGF0YSB0aGUgYnJlYWtwb2ludCBpcyBzZXQgb24gb3Igd2h5IGEgZGF0YSBicmVha3BvaW50IGlzIG5vdCBhdmFpbGFibGUuICovXG5cdFx0XHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRcdFx0LyoqIE9wdGlvbmFsIGF0dHJpYnV0ZSBsaXN0aW5nIHRoZSBhdmFpbGFibGUgYWNjZXNzIHR5cGVzIGZvciBhIHBvdGVudGlhbCBkYXRhIGJyZWFrcG9pbnQuIEEgVUkgZnJvbnRlbmQgY291bGQgc3VyZmFjZSB0aGlzIGluZm9ybWF0aW9uLiAqL1xuXHRcdFx0YWNjZXNzVHlwZXM/OiBEYXRhQnJlYWtwb2ludEFjY2Vzc1R5cGVbXTtcblx0XHRcdC8qKiBPcHRpb25hbCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGF0IGEgcG90ZW50aWFsIGRhdGEgYnJlYWtwb2ludCBjb3VsZCBiZSBwZXJzaXN0ZWQgYWNyb3NzIHNlc3Npb25zLiAqL1xuXHRcdFx0Y2FuUGVyc2lzdD86IGJvb2xlYW47XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXREYXRhQnJlYWtwb2ludHMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc2V0RGF0YUJyZWFrcG9pbnRzJy5cblx0XHRSZXBsYWNlcyBhbGwgZXhpc3RpbmcgZGF0YSBicmVha3BvaW50cyB3aXRoIG5ldyBkYXRhIGJyZWFrcG9pbnRzLlxuXHRcdFRvIGNsZWFyIGFsbCBkYXRhIGJyZWFrcG9pbnRzLCBzcGVjaWZ5IGFuIGVtcHR5IGFycmF5LlxuXHRcdFdoZW4gYSBkYXRhIGJyZWFrcG9pbnQgaXMgaGl0LCBhICdzdG9wcGVkJyBldmVudCAod2l0aCByZWFzb24gJ2RhdGEgYnJlYWtwb2ludCcpIGlzIGdlbmVyYXRlZC5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0RhdGFCcmVha3BvaW50cycgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXREYXRhQnJlYWtwb2ludHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldERhdGFCcmVha3BvaW50cyc7XG5cdFx0YXJndW1lbnRzOiBTZXREYXRhQnJlYWtwb2ludHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2V0RGF0YUJyZWFrcG9pbnRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldERhdGFCcmVha3BvaW50c0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBjb250ZW50cyBvZiB0aGlzIGFycmF5IHJlcGxhY2VzIGFsbCBleGlzdGluZyBkYXRhIGJyZWFrcG9pbnRzLiBBbiBlbXB0eSBhcnJheSBjbGVhcnMgYWxsIGRhdGEgYnJlYWtwb2ludHMuICovXG5cdFx0YnJlYWtwb2ludHM6IERhdGFCcmVha3BvaW50W107XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NldERhdGFCcmVha3BvaW50cycgcmVxdWVzdC5cblx0XHRSZXR1cm5lZCBpcyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGJyZWFrcG9pbnQgY3JlYXRlZCBieSB0aGlzIHJlcXVlc3QuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RGF0YUJyZWFrcG9pbnRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIGJyZWFrcG9pbnRzLiBUaGUgYXJyYXkgZWxlbWVudHMgY29ycmVzcG9uZCB0byB0aGUgZWxlbWVudHMgb2YgdGhlIGlucHV0IGFyZ3VtZW50ICdicmVha3BvaW50cycgYXJyYXkuICovXG5cdFx0XHRicmVha3BvaW50czogQnJlYWtwb2ludFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogU2V0SW5zdHJ1Y3Rpb25CcmVha3BvaW50cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzJy5cblx0XHRSZXBsYWNlcyBhbGwgZXhpc3RpbmcgaW5zdHJ1Y3Rpb24gYnJlYWtwb2ludHMuIFR5cGljYWxseSwgaW5zdHJ1Y3Rpb24gYnJlYWtwb2ludHMgd291bGQgYmUgc2V0IGZyb20gYSBkaWFzc2VtYmx5IHdpbmRvdy4gXG5cdFx0VG8gY2xlYXIgYWxsIGluc3RydWN0aW9uIGJyZWFrcG9pbnRzLCBzcGVjaWZ5IGFuIGVtcHR5IGFycmF5LlxuXHRcdFdoZW4gYW4gaW5zdHJ1Y3Rpb24gYnJlYWtwb2ludCBpcyBoaXQsIGEgJ3N0b3BwZWQnIGV2ZW50ICh3aXRoIHJlYXNvbiAnaW5zdHJ1Y3Rpb24gYnJlYWtwb2ludCcpIGlzIGdlbmVyYXRlZC5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0luc3RydWN0aW9uQnJlYWtwb2ludHMnIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0SW5zdHJ1Y3Rpb25CcmVha3BvaW50c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0SW5zdHJ1Y3Rpb25CcmVha3BvaW50cyc7XG5cdFx0YXJndW1lbnRzOiBTZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEluc3RydWN0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QgKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIGluc3RydWN0aW9uIHJlZmVyZW5jZXMgb2YgdGhlIGJyZWFrcG9pbnRzICovXG5cdFx0YnJlYWtwb2ludHM6IEluc3RydWN0aW9uQnJlYWtwb2ludFtdO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0ICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0SW5zdHJ1Y3Rpb25CcmVha3BvaW50c1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludHMuIFRoZSBhcnJheSBlbGVtZW50cyBjb3JyZXNwb25kIHRvIHRoZSBlbGVtZW50cyBvZiB0aGUgJ2JyZWFrcG9pbnRzJyBhcnJheS4gKi9cblx0XHRcdGJyZWFrcG9pbnRzOiBCcmVha3BvaW50W107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBDb250aW51ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdjb250aW51ZScuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gYWdhaW4uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udGludWVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2NvbnRpbnVlJztcblx0XHRhcmd1bWVudHM6IENvbnRpbnVlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2NvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbnRpbnVlQXJndW1lbnRzIHtcblx0XHQvKiogQ29udGludWUgZXhlY3V0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRocmVhZCAoaWYgcG9zc2libGUpLlxuXHRcdFx0SWYgdGhlIGJhY2tlbmQgY2Fubm90IGNvbnRpbnVlIG9uIGEgc2luZ2xlIHRocmVhZCBidXQgd2lsbCBjb250aW51ZSBvbiBhbGwgdGhyZWFkcywgaXQgc2hvdWxkIHNldCB0aGUgJ2FsbFRocmVhZHNDb250aW51ZWQnIGF0dHJpYnV0ZSBpbiB0aGUgcmVzcG9uc2UgdG8gdHJ1ZS5cblx0XHQqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2NvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbnRpbnVlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIElmIHRydWUsIHRoZSAnY29udGludWUnIHJlcXVlc3QgaGFzIGlnbm9yZWQgdGhlIHNwZWNpZmllZCB0aHJlYWQgYW5kIGNvbnRpbnVlZCBhbGwgdGhyZWFkcyBpbnN0ZWFkLlxuXHRcdFx0XHRJZiB0aGlzIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIGEgdmFsdWUgb2YgJ3RydWUnIGlzIGFzc3VtZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG5cdFx0XHQqL1xuXHRcdFx0YWxsVGhyZWFkc0NvbnRpbnVlZD86IGJvb2xlYW47XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBOZXh0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ25leHQnLlxuXHRcdFRoZSByZXF1ZXN0IHN0YXJ0cyB0aGUgZGVidWdnZWUgdG8gcnVuIGFnYWluIGZvciBvbmUgc3RlcC5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgcmVzcG9uc2UgYW5kIHRoZW4gYSAnc3RvcHBlZCcgZXZlbnQgKHdpdGggcmVhc29uICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBOZXh0UmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICduZXh0Jztcblx0XHRhcmd1bWVudHM6IE5leHRBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnbmV4dCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBOZXh0QXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnbmV4dCcgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIGdyYW51bGFyaXR5IHRvIHN0ZXAuIElmIG5vIGdyYW51bGFyaXR5IGlzIHNwZWNpZmllZCwgYSBncmFudWxhcml0eSBvZiAnc3RhdGVtZW50JyBpcyBhc3N1bWVkLiAqL1xuXHRcdGdyYW51bGFyaXR5PzogU3RlcHBpbmdHcmFudWxhcml0eTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnbmV4dCcgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBOZXh0UmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogU3RlcEluIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0ZXBJbicuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBzdGVwIGludG8gYSBmdW5jdGlvbi9tZXRob2QgaWYgcG9zc2libGUuXG5cdFx0SWYgaXQgY2Fubm90IHN0ZXAgaW50byBhIHRhcmdldCwgJ3N0ZXBJbicgYmVoYXZlcyBsaWtlICduZXh0Jy5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgcmVzcG9uc2UgYW5kIHRoZW4gYSAnc3RvcHBlZCcgZXZlbnQgKHdpdGggcmVhc29uICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC5cblx0XHRJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZnVuY3Rpb24vbWV0aG9kIGNhbGxzIChvciBvdGhlciB0YXJnZXRzKSBvbiB0aGUgc291cmNlIGxpbmUsXG5cdFx0dGhlIG9wdGlvbmFsIGFyZ3VtZW50ICd0YXJnZXRJZCcgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBpbnRvIHdoaWNoIHRhcmdldCB0aGUgJ3N0ZXBJbicgc2hvdWxkIG9jY3VyLlxuXHRcdFRoZSBsaXN0IG9mIHBvc3NpYmxlIHRhcmdldHMgZm9yIGEgZ2l2ZW4gc291cmNlIGxpbmUgY2FuIGJlIHJldHJpZXZlZCB2aWEgdGhlICdzdGVwSW5UYXJnZXRzJyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJblJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RlcEluJztcblx0XHRhcmd1bWVudHM6IFN0ZXBJbkFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzdGVwSW4nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluQXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnc3RlcEluJyBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgaWQgb2YgdGhlIHRhcmdldCB0byBzdGVwIGludG8uICovXG5cdFx0dGFyZ2V0SWQ/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIGdyYW51bGFyaXR5IHRvIHN0ZXAuIElmIG5vIGdyYW51bGFyaXR5IGlzIHNwZWNpZmllZCwgYSBncmFudWxhcml0eSBvZiAnc3RhdGVtZW50JyBpcyBhc3N1bWVkLiAqL1xuXHRcdGdyYW51bGFyaXR5PzogU3RlcHBpbmdHcmFudWxhcml0eTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc3RlcEluJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJblJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFN0ZXBPdXQgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc3RlcE91dCcuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gYWdhaW4gZm9yIG9uZSBzdGVwLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSByZXNwb25zZSBhbmQgdGhlbiBhICdzdG9wcGVkJyBldmVudCAod2l0aCByZWFzb24gJ3N0ZXAnKSBhZnRlciB0aGUgc3RlcCBoYXMgY29tcGxldGVkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBPdXRSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3N0ZXBPdXQnO1xuXHRcdGFyZ3VtZW50czogU3RlcE91dEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzdGVwT3V0JyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBPdXRBcmd1bWVudHMge1xuXHRcdC8qKiBFeGVjdXRlICdzdGVwT3V0JyBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZ3JhbnVsYXJpdHkgdG8gc3RlcC4gSWYgbm8gZ3JhbnVsYXJpdHkgaXMgc3BlY2lmaWVkLCBhIGdyYW51bGFyaXR5IG9mICdzdGF0ZW1lbnQnIGlzIGFzc3VtZWQuICovXG5cdFx0Z3JhbnVsYXJpdHk/OiBTdGVwcGluZ0dyYW51bGFyaXR5O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGVwT3V0JyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBPdXRSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTdGVwQmFjayByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzdGVwQmFjaycuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gb25lIHN0ZXAgYmFja3dhcmRzLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSByZXNwb25zZSBhbmQgdGhlbiBhICdzdG9wcGVkJyBldmVudCAod2l0aCByZWFzb24gJ3N0ZXAnKSBhZnRlciB0aGUgc3RlcCBoYXMgY29tcGxldGVkLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzU3RlcEJhY2snIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEJhY2tSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3N0ZXBCYWNrJztcblx0XHRhcmd1bWVudHM6IFN0ZXBCYWNrQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3N0ZXBCYWNrJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBCYWNrQXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnc3RlcEJhY2snIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBncmFudWxhcml0eSB0byBzdGVwLiBJZiBubyBncmFudWxhcml0eSBpcyBzcGVjaWZpZWQsIGEgZ3JhbnVsYXJpdHkgb2YgJ3N0YXRlbWVudCcgaXMgYXNzdW1lZC4gKi9cblx0XHRncmFudWxhcml0eT86IFN0ZXBwaW5nR3JhbnVsYXJpdHk7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0ZXBCYWNrJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBCYWNrUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogUmV2ZXJzZUNvbnRpbnVlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3JldmVyc2VDb250aW51ZScuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gYmFja3dhcmQuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNTdGVwQmFjaycgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXZlcnNlQ29udGludWVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3JldmVyc2VDb250aW51ZSc7XG5cdFx0YXJndW1lbnRzOiBSZXZlcnNlQ29udGludWVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAncmV2ZXJzZUNvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJldmVyc2VDb250aW51ZUFyZ3VtZW50cyB7XG5cdFx0LyoqIEV4ZWN1dGUgJ3JldmVyc2VDb250aW51ZScgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3JldmVyc2VDb250aW51ZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXZlcnNlQ29udGludWVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBSZXN0YXJ0RnJhbWUgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncmVzdGFydEZyYW1lJy5cblx0XHRUaGUgcmVxdWVzdCByZXN0YXJ0cyBleGVjdXRpb24gb2YgdGhlIHNwZWNpZmllZCBzdGFja2ZyYW1lLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSByZXNwb25zZSBhbmQgdGhlbiBhICdzdG9wcGVkJyBldmVudCAod2l0aCByZWFzb24gJ3Jlc3RhcnQnKSBhZnRlciB0aGUgcmVzdGFydCBoYXMgY29tcGxldGVkLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzUmVzdGFydEZyYW1lJyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRGcmFtZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAncmVzdGFydEZyYW1lJztcblx0XHRhcmd1bWVudHM6IFJlc3RhcnRGcmFtZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdyZXN0YXJ0RnJhbWUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydEZyYW1lQXJndW1lbnRzIHtcblx0XHQvKiogUmVzdGFydCB0aGlzIHN0YWNrZnJhbWUuICovXG5cdFx0ZnJhbWVJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdyZXN0YXJ0RnJhbWUnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydEZyYW1lUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogR290byByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdnb3RvJy5cblx0XHRUaGUgcmVxdWVzdCBzZXRzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZGVidWdnZWUgd2lsbCBjb250aW51ZSB0byBydW4uXG5cdFx0VGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBza2lwIHRoZSBleGVjdXRpb24gb2YgY29kZSBvciB0byBleGVjdXRlZCBjb2RlIGFnYWluLlxuXHRcdFRoZSBjb2RlIGJldHdlZW4gdGhlIGN1cnJlbnQgbG9jYXRpb24gYW5kIHRoZSBnb3RvIHRhcmdldCBpcyBub3QgZXhlY3V0ZWQgYnV0IHNraXBwZWQuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIHJlc3BvbnNlIGFuZCB0aGVuIGEgJ3N0b3BwZWQnIGV2ZW50IHdpdGggcmVhc29uICdnb3RvJy5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0dvdG9UYXJnZXRzUmVxdWVzdCcgaXMgdHJ1ZSAoYmVjYXVzZSBvbmx5IHRoZW4gZ290byB0YXJnZXRzIGV4aXN0IHRoYXQgY2FuIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMpLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9SZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2dvdG8nO1xuXHRcdGFyZ3VtZW50czogR290b0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdnb3RvJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9Bcmd1bWVudHMge1xuXHRcdC8qKiBTZXQgdGhlIGdvdG8gdGFyZ2V0IGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIGRlYnVnZ2VlIHdpbGwgY29udGludWUgdG8gcnVuLiAqL1xuXHRcdHRhcmdldElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2dvdG8nIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFBhdXNlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3BhdXNlJy5cblx0XHRUaGUgcmVxdWVzdCBzdXNwZW5kcyB0aGUgZGVidWdnZWUuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIHJlc3BvbnNlIGFuZCB0aGVuIGEgJ3N0b3BwZWQnIGV2ZW50ICh3aXRoIHJlYXNvbiAncGF1c2UnKSBhZnRlciB0aGUgdGhyZWFkIGhhcyBiZWVuIHBhdXNlZCBzdWNjZXNzZnVsbHkuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUGF1c2VSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3BhdXNlJztcblx0XHRhcmd1bWVudHM6IFBhdXNlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3BhdXNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFBhdXNlQXJndW1lbnRzIHtcblx0XHQvKiogUGF1c2UgZXhlY3V0aW9uIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdwYXVzZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBQYXVzZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFN0YWNrVHJhY2UgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc3RhY2tUcmFjZScuXG5cdFx0VGhlIHJlcXVlc3QgcmV0dXJucyBhIHN0YWNrdHJhY2UgZnJvbSB0aGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tUcmFjZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RhY2tUcmFjZSc7XG5cdFx0YXJndW1lbnRzOiBTdGFja1RyYWNlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3N0YWNrVHJhY2UnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tUcmFjZUFyZ3VtZW50cyB7XG5cdFx0LyoqIFJldHJpZXZlIHRoZSBzdGFja3RyYWNlIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdC8qKiBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGZyYW1lIHRvIHJldHVybjsgaWYgb21pdHRlZCBmcmFtZXMgc3RhcnQgYXQgMC4gKi9cblx0XHRzdGFydEZyYW1lPzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIHJldHVybi4gSWYgbGV2ZWxzIGlzIG5vdCBzcGVjaWZpZWQgb3IgMCwgYWxsIGZyYW1lcyBhcmUgcmV0dXJuZWQuICovXG5cdFx0bGV2ZWxzPzogbnVtYmVyO1xuXHRcdC8qKiBTcGVjaWZpZXMgZGV0YWlscyBvbiBob3cgdG8gZm9ybWF0IHRoZSBzdGFjayBmcmFtZXMuXG5cdFx0XHRUaGUgYXR0cmlidXRlIGlzIG9ubHkgaG9ub3JlZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzVmFsdWVGb3JtYXR0aW5nT3B0aW9ucycgaXMgdHJ1ZS5cblx0XHQqL1xuXHRcdGZvcm1hdD86IFN0YWNrRnJhbWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0YWNrVHJhY2UnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tUcmFjZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgZnJhbWVzIG9mIHRoZSBzdGFja2ZyYW1lLiBJZiB0aGUgYXJyYXkgaGFzIGxlbmd0aCB6ZXJvLCB0aGVyZSBhcmUgbm8gc3RhY2tmcmFtZXMgYXZhaWxhYmxlLlxuXHRcdFx0XHRUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gbG9jYXRpb24gaW5mb3JtYXRpb24gYXZhaWxhYmxlLlxuXHRcdFx0Ki9cblx0XHRcdHN0YWNrRnJhbWVzOiBTdGFja0ZyYW1lW107XG5cdFx0XHQvKiogVGhlIHRvdGFsIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlLiAqL1xuXHRcdFx0dG90YWxGcmFtZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTY29wZXMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc2NvcGVzJy5cblx0XHRUaGUgcmVxdWVzdCByZXR1cm5zIHRoZSB2YXJpYWJsZSBzY29wZXMgZm9yIGEgZ2l2ZW4gc3RhY2tmcmFtZSBJRC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZXNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3Njb3Blcyc7XG5cdFx0YXJndW1lbnRzOiBTY29wZXNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2NvcGVzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNjb3Blc0FyZ3VtZW50cyB7XG5cdFx0LyoqIFJldHJpZXZlIHRoZSBzY29wZXMgZm9yIHRoaXMgc3RhY2tmcmFtZS4gKi9cblx0XHRmcmFtZUlkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3Njb3BlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHNjb3BlcyBvZiB0aGUgc3RhY2tmcmFtZS4gSWYgdGhlIGFycmF5IGhhcyBsZW5ndGggemVybywgdGhlcmUgYXJlIG5vIHNjb3BlcyBhdmFpbGFibGUuICovXG5cdFx0XHRzY29wZXM6IFNjb3BlW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBWYXJpYWJsZXMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAndmFyaWFibGVzJy5cblx0XHRSZXRyaWV2ZXMgYWxsIGNoaWxkIHZhcmlhYmxlcyBmb3IgdGhlIGdpdmVuIHZhcmlhYmxlIHJlZmVyZW5jZS5cblx0XHRBbiBvcHRpb25hbCBmaWx0ZXIgY2FuIGJlIHVzZWQgdG8gbGltaXQgdGhlIGZldGNoZWQgY2hpbGRyZW4gdG8gZWl0aGVyIG5hbWVkIG9yIGluZGV4ZWQgY2hpbGRyZW4uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICd2YXJpYWJsZXMnO1xuXHRcdGFyZ3VtZW50czogVmFyaWFibGVzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3ZhcmlhYmxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgVmFyaWFibGUgcmVmZXJlbmNlLiAqL1xuXHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBmaWx0ZXIgdG8gbGltaXQgdGhlIGNoaWxkIHZhcmlhYmxlcyB0byBlaXRoZXIgbmFtZWQgb3IgaW5kZXhlZC4gSWYgb21pdHRlZCwgYm90aCB0eXBlcyBhcmUgZmV0Y2hlZC4gKi9cblx0XHRmaWx0ZXI/OiAnaW5kZXhlZCcgfCAnbmFtZWQnO1xuXHRcdC8qKiBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IHZhcmlhYmxlIHRvIHJldHVybjsgaWYgb21pdHRlZCBjaGlsZHJlbiBzdGFydCBhdCAwLiAqL1xuXHRcdHN0YXJ0PzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbnVtYmVyIG9mIHZhcmlhYmxlcyB0byByZXR1cm4uIElmIGNvdW50IGlzIG1pc3Npbmcgb3IgMCwgYWxsIHZhcmlhYmxlcyBhcmUgcmV0dXJuZWQuICovXG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIFZhcmlhYmxlIHZhbHVlcy5cblx0XHRcdFRoZSBhdHRyaWJ1dGUgaXMgb25seSBob25vcmVkIGJ5IGEgZGVidWcgYWRhcHRlciBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNWYWx1ZUZvcm1hdHRpbmdPcHRpb25zJyBpcyB0cnVlLlxuXHRcdCovXG5cdFx0Zm9ybWF0PzogVmFsdWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3ZhcmlhYmxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQWxsIChvciBhIHJhbmdlKSBvZiB2YXJpYWJsZXMgZm9yIHRoZSBnaXZlbiB2YXJpYWJsZSByZWZlcmVuY2UuICovXG5cdFx0XHR2YXJpYWJsZXM6IFZhcmlhYmxlW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXRWYXJpYWJsZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRWYXJpYWJsZScuXG5cdFx0U2V0IHRoZSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGluIHRoZSB2YXJpYWJsZSBjb250YWluZXIgdG8gYSBuZXcgdmFsdWUuIENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzU2V0VmFyaWFibGUnIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0VmFyaWFibGVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldFZhcmlhYmxlJztcblx0XHRhcmd1bWVudHM6IFNldFZhcmlhYmxlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldFZhcmlhYmxlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldFZhcmlhYmxlQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIHJlZmVyZW5jZSBvZiB0aGUgdmFyaWFibGUgY29udGFpbmVyLiAqL1xuXHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgaW4gdGhlIGNvbnRhaW5lci4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuICovXG5cdFx0dmFsdWU6IHN0cmluZztcblx0XHQvKiogU3BlY2lmaWVzIGRldGFpbHMgb24gaG93IHRvIGZvcm1hdCB0aGUgcmVzcG9uc2UgdmFsdWUuICovXG5cdFx0Zm9ybWF0PzogVmFsdWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NldFZhcmlhYmxlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldFZhcmlhYmxlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLiAqL1xuXHRcdFx0dmFsdWU6IHN0cmluZztcblx0XHRcdC8qKiBUaGUgdHlwZSBvZiB0aGUgbmV3IHZhbHVlLiBUeXBpY2FsbHkgc2hvd24gaW4gdGhlIFVJIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgdmFsdWUuICovXG5cdFx0XHR0eXBlPzogc3RyaW5nO1xuXHRcdFx0LyoqIElmIHZhcmlhYmxlc1JlZmVyZW5jZSBpcyA+IDAsIHRoZSBuZXcgdmFsdWUgaXMgc3RydWN0dXJlZCBhbmQgaXRzIGNoaWxkcmVuIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuXG5cdFx0XHRcdFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS5cblx0XHRcdCovXG5cdFx0XHR2YXJpYWJsZXNSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBuYW1lZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdFx0VGhlIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjE0NzQ4MzY0NyAoMl4zMSAtIDEpLlxuXHRcdFx0Ki9cblx0XHRcdG5hbWVkVmFyaWFibGVzPzogbnVtYmVyO1xuXHRcdFx0LyoqIFRoZSBudW1iZXIgb2YgaW5kZXhlZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdFx0VGhlIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjE0NzQ4MzY0NyAoMl4zMSAtIDEpLlxuXHRcdFx0Ki9cblx0XHRcdGluZGV4ZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTb3VyY2UgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc291cmNlJy5cblx0XHRUaGUgcmVxdWVzdCByZXRyaWV2ZXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhIGdpdmVuIHNvdXJjZSByZWZlcmVuY2UuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU291cmNlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzb3VyY2UnO1xuXHRcdGFyZ3VtZW50czogU291cmNlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NvdXJjZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VBcmd1bWVudHMge1xuXHRcdC8qKiBTcGVjaWZpZXMgdGhlIHNvdXJjZSBjb250ZW50IHRvIGxvYWQuIEVpdGhlciBzb3VyY2UucGF0aCBvciBzb3VyY2Uuc291cmNlUmVmZXJlbmNlIG11c3QgYmUgc3BlY2lmaWVkLiAqL1xuXHRcdHNvdXJjZT86IFNvdXJjZTtcblx0XHQvKiogVGhlIHJlZmVyZW5jZSB0byB0aGUgc291cmNlLiBUaGlzIGlzIHRoZSBzYW1lIGFzIHNvdXJjZS5zb3VyY2VSZWZlcmVuY2UuXG5cdFx0XHRUaGlzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHNpbmNlIG9sZCBiYWNrZW5kcyBkbyBub3QgdW5kZXJzdGFuZCB0aGUgJ3NvdXJjZScgYXR0cmlidXRlLlxuXHRcdCovXG5cdFx0c291cmNlUmVmZXJlbmNlOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NvdXJjZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQ29udGVudCBvZiB0aGUgc291cmNlIHJlZmVyZW5jZS4gKi9cblx0XHRcdGNvbnRlbnQ6IHN0cmluZztcblx0XHRcdC8qKiBPcHRpb25hbCBjb250ZW50IHR5cGUgKG1pbWUgdHlwZSkgb2YgdGhlIHNvdXJjZS4gKi9cblx0XHRcdG1pbWVUeXBlPzogc3RyaW5nO1xuXHRcdH07XG5cdH1cblxuXHQvKiogVGhyZWFkcyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICd0aHJlYWRzJy5cblx0XHRUaGUgcmVxdWVzdCByZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCB0aHJlYWRzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRocmVhZHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3RocmVhZHMnO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICd0aHJlYWRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRocmVhZHNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQWxsIHRocmVhZHMuICovXG5cdFx0XHR0aHJlYWRzOiBUaHJlYWRbXTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIFRlcm1pbmF0ZVRocmVhZHMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAndGVybWluYXRlVGhyZWFkcycuXG5cdFx0VGhlIHJlcXVlc3QgdGVybWluYXRlcyB0aGUgdGhyZWFkcyB3aXRoIHRoZSBnaXZlbiBpZHMuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNUZXJtaW5hdGVUaHJlYWRzUmVxdWVzdCcgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBUZXJtaW5hdGVUaHJlYWRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICd0ZXJtaW5hdGVUaHJlYWRzJztcblx0XHRhcmd1bWVudHM6IFRlcm1pbmF0ZVRocmVhZHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAndGVybWluYXRlVGhyZWFkcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBUZXJtaW5hdGVUaHJlYWRzQXJndW1lbnRzIHtcblx0XHQvKiogSWRzIG9mIHRocmVhZHMgdG8gYmUgdGVybWluYXRlZC4gKi9cblx0XHR0aHJlYWRJZHM/OiBudW1iZXJbXTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAndGVybWluYXRlVGhyZWFkcycgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBUZXJtaW5hdGVUaHJlYWRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogTW9kdWxlcyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdtb2R1bGVzJy5cblx0XHRNb2R1bGVzIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgZGVidWcgYWRhcHRlciB3aXRoIHRoaXMgcmVxdWVzdCB3aGljaCBjYW4gZWl0aGVyIHJldHVybiBhbGwgbW9kdWxlcyBvciBhIHJhbmdlIG9mIG1vZHVsZXMgdG8gc3VwcG9ydCBwYWdpbmcuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNNb2R1bGVzUmVxdWVzdCcgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBNb2R1bGVzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdtb2R1bGVzJztcblx0XHRhcmd1bWVudHM6IE1vZHVsZXNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnbW9kdWxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBNb2R1bGVzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBtb2R1bGUgdG8gcmV0dXJuOyBpZiBvbWl0dGVkIG1vZHVsZXMgc3RhcnQgYXQgMC4gKi9cblx0XHRzdGFydE1vZHVsZT86IG51bWJlcjtcblx0XHQvKiogVGhlIG51bWJlciBvZiBtb2R1bGVzIHRvIHJldHVybi4gSWYgbW9kdWxlQ291bnQgaXMgbm90IHNwZWNpZmllZCBvciAwLCBhbGwgbW9kdWxlcyBhcmUgcmV0dXJuZWQuICovXG5cdFx0bW9kdWxlQ291bnQ/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ21vZHVsZXMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBBbGwgbW9kdWxlcyBvciByYW5nZSBvZiBtb2R1bGVzLiAqL1xuXHRcdFx0bW9kdWxlczogTW9kdWxlW107XG5cdFx0XHQvKiogVGhlIHRvdGFsIG51bWJlciBvZiBtb2R1bGVzIGF2YWlsYWJsZS4gKi9cblx0XHRcdHRvdGFsTW9kdWxlcz86IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIExvYWRlZFNvdXJjZXMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnbG9hZGVkU291cmNlcycuXG5cdFx0UmV0cmlldmVzIHRoZSBzZXQgb2YgYWxsIHNvdXJjZXMgY3VycmVudGx5IGxvYWRlZCBieSB0aGUgZGVidWdnZWQgcHJvY2Vzcy5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0xvYWRlZFNvdXJjZXNSZXF1ZXN0JyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIExvYWRlZFNvdXJjZXNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2xvYWRlZFNvdXJjZXMnO1xuXHRcdGFyZ3VtZW50cz86IExvYWRlZFNvdXJjZXNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnbG9hZGVkU291cmNlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMb2FkZWRTb3VyY2VzQXJndW1lbnRzIHtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnbG9hZGVkU291cmNlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMb2FkZWRTb3VyY2VzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFNldCBvZiBsb2FkZWQgc291cmNlcy4gKi9cblx0XHRcdHNvdXJjZXM6IFNvdXJjZVtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZhbHVhdGUgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnZXZhbHVhdGUnLlxuXHRcdEV2YWx1YXRlcyB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgdG9wIG1vc3Qgc3RhY2sgZnJhbWUuXG5cdFx0VGhlIGV4cHJlc3Npb24gaGFzIGFjY2VzcyB0byBhbnkgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgaW4gc2NvcGUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2V2YWx1YXRlJztcblx0XHRhcmd1bWVudHM6IEV2YWx1YXRlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2V2YWx1YXRlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUuICovXG5cdFx0ZXhwcmVzc2lvbjogc3RyaW5nO1xuXHRcdC8qKiBFdmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgc2NvcGUgb2YgdGhpcyBzdGFjayBmcmFtZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUuICovXG5cdFx0ZnJhbWVJZD86IG51bWJlcjtcblx0XHQvKiogVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIGV2YWx1YXRlIHJlcXVlc3QgaXMgcnVuLlxuXHRcdFx0VmFsdWVzOiBcblx0XHRcdCd3YXRjaCc6IGV2YWx1YXRlIGlzIHJ1biBpbiBhIHdhdGNoLlxuXHRcdFx0J3JlcGwnOiBldmFsdWF0ZSBpcyBydW4gZnJvbSBSRVBMIGNvbnNvbGUuXG5cdFx0XHQnaG92ZXInOiBldmFsdWF0ZSBpcyBydW4gZnJvbSBhIGRhdGEgaG92ZXIuXG5cdFx0XHQnY2xpcGJvYXJkJzogZXZhbHVhdGUgaXMgcnVuIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSBjbGlwYm9hcmQuXG5cdFx0XHRUaGUgYXR0cmlidXRlIGlzIG9ubHkgaG9ub3JlZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzQ2xpcGJvYXJkQ29udGV4dCcgaXMgdHJ1ZS5cblx0XHRcdGV0Yy5cblx0XHQqL1xuXHRcdGNvbnRleHQ/OiBzdHJpbmc7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIEV2YWx1YXRlIHJlc3VsdC5cblx0XHRcdFRoZSBhdHRyaWJ1dGUgaXMgb25seSBob25vcmVkIGJ5IGEgZGVidWcgYWRhcHRlciBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNWYWx1ZUZvcm1hdHRpbmdPcHRpb25zJyBpcyB0cnVlLlxuXHRcdCovXG5cdFx0Zm9ybWF0PzogVmFsdWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2V2YWx1YXRlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSByZXN1bHQgb2YgdGhlIGV2YWx1YXRlIHJlcXVlc3QuICovXG5cdFx0XHRyZXN1bHQ6IHN0cmluZztcblx0XHRcdC8qKiBUaGUgb3B0aW9uYWwgdHlwZSBvZiB0aGUgZXZhbHVhdGUgcmVzdWx0LlxuXHRcdFx0XHRUaGlzIGF0dHJpYnV0ZSBzaG91bGQgb25seSBiZSByZXR1cm5lZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNsaWVudCBoYXMgcGFzc2VkIHRoZSB2YWx1ZSB0cnVlIGZvciB0aGUgJ3N1cHBvcnRzVmFyaWFibGVUeXBlJyBjYXBhYmlsaXR5IG9mIHRoZSAnaW5pdGlhbGl6ZScgcmVxdWVzdC5cblx0XHRcdCovXG5cdFx0XHR0eXBlPzogc3RyaW5nO1xuXHRcdFx0LyoqIFByb3BlcnRpZXMgb2YgYSBldmFsdWF0ZSByZXN1bHQgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaG93IHRvIHJlbmRlciB0aGUgcmVzdWx0IGluIHRoZSBVSS4gKi9cblx0XHRcdHByZXNlbnRhdGlvbkhpbnQ/OiBWYXJpYWJsZVByZXNlbnRhdGlvbkhpbnQ7XG5cdFx0XHQvKiogSWYgdmFyaWFibGVzUmVmZXJlbmNlIGlzID4gMCwgdGhlIGV2YWx1YXRlIHJlc3VsdCBpcyBzdHJ1Y3R1cmVkIGFuZCBpdHMgY2hpbGRyZW4gY2FuIGJlIHJldHJpZXZlZCBieSBwYXNzaW5nIHZhcmlhYmxlc1JlZmVyZW5jZSB0byB0aGUgVmFyaWFibGVzUmVxdWVzdC5cblx0XHRcdFx0VGhlIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjE0NzQ4MzY0NyAoMl4zMSAtIDEpLlxuXHRcdFx0Ki9cblx0XHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHRcdFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS5cblx0XHRcdCovXG5cdFx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHRcdC8qKiBUaGUgbnVtYmVyIG9mIGluZGV4ZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHRcdFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS5cblx0XHRcdCovXG5cdFx0XHRpbmRleGVkVmFyaWFibGVzPzogbnVtYmVyO1xuXHRcdFx0LyoqIE9wdGlvbmFsIG1lbW9yeSByZWZlcmVuY2UgdG8gYSBsb2NhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdGhpcyByZXN1bHQuXG5cdFx0XHRcdEZvciBwb2ludGVyIHR5cGUgZXZhbCByZXN1bHRzLCB0aGlzIGlzIGdlbmVyYWxseSBhIHJlZmVyZW5jZSB0byB0aGUgbWVtb3J5IGFkZHJlc3MgY29udGFpbmVkIGluIHRoZSBwb2ludGVyLlxuXHRcdFx0XHRUaGlzIGF0dHJpYnV0ZSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgYSBkZWJ1ZyBhZGFwdGVyIGlmIHRoZSBjbGllbnQgaGFzIHBhc3NlZCB0aGUgdmFsdWUgdHJ1ZSBmb3IgdGhlICdzdXBwb3J0c01lbW9yeVJlZmVyZW5jZXMnIGNhcGFiaWxpdHkgb2YgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0LlxuXHRcdFx0Ki9cblx0XHRcdG1lbW9yeVJlZmVyZW5jZT86IHN0cmluZztcblx0XHR9O1xuXHR9XG5cblx0LyoqIFNldEV4cHJlc3Npb24gcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc2V0RXhwcmVzc2lvbicuXG5cdFx0RXZhbHVhdGVzIHRoZSBnaXZlbiAndmFsdWUnIGV4cHJlc3Npb24gYW5kIGFzc2lnbnMgaXQgdG8gdGhlICdleHByZXNzaW9uJyB3aGljaCBtdXN0IGJlIGEgbW9kaWZpYWJsZSBsLXZhbHVlLlxuXHRcdFRoZSBleHByZXNzaW9ucyBoYXZlIGFjY2VzcyB0byBhbnkgdmFyaWFibGVzIGFuZCBhcmd1bWVudHMgdGhhdCBhcmUgaW4gc2NvcGUgb2YgdGhlIHNwZWNpZmllZCBmcmFtZS5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c1NldEV4cHJlc3Npb24nIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhwcmVzc2lvblJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0RXhwcmVzc2lvbic7XG5cdFx0YXJndW1lbnRzOiBTZXRFeHByZXNzaW9uQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEV4cHJlc3Npb24nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhwcmVzc2lvbkFyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBsLXZhbHVlIGV4cHJlc3Npb24gdG8gYXNzaWduIHRvLiAqL1xuXHRcdGV4cHJlc3Npb246IHN0cmluZztcblx0XHQvKiogVGhlIHZhbHVlIGV4cHJlc3Npb24gdG8gYXNzaWduIHRvIHRoZSBsLXZhbHVlIGV4cHJlc3Npb24uICovXG5cdFx0dmFsdWU6IHN0cmluZztcblx0XHQvKiogRXZhbHVhdGUgdGhlIGV4cHJlc3Npb25zIGluIHRoZSBzY29wZSBvZiB0aGlzIHN0YWNrIGZyYW1lLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLiAqL1xuXHRcdGZyYW1lSWQ/OiBudW1iZXI7XG5cdFx0LyoqIFNwZWNpZmllcyBob3cgdGhlIHJlc3VsdGluZyB2YWx1ZSBzaG91bGQgYmUgZm9ybWF0dGVkLiAqL1xuXHRcdGZvcm1hdD86IFZhbHVlRm9ybWF0O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRFeHByZXNzaW9uJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEV4cHJlc3Npb25SZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIG5ldyB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gKi9cblx0XHRcdHZhbHVlOiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIG9wdGlvbmFsIHR5cGUgb2YgdGhlIHZhbHVlLlxuXHRcdFx0XHRUaGlzIGF0dHJpYnV0ZSBzaG91bGQgb25seSBiZSByZXR1cm5lZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNsaWVudCBoYXMgcGFzc2VkIHRoZSB2YWx1ZSB0cnVlIGZvciB0aGUgJ3N1cHBvcnRzVmFyaWFibGVUeXBlJyBjYXBhYmlsaXR5IG9mIHRoZSAnaW5pdGlhbGl6ZScgcmVxdWVzdC5cblx0XHRcdCovXG5cdFx0XHR0eXBlPzogc3RyaW5nO1xuXHRcdFx0LyoqIFByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBob3cgdG8gcmVuZGVyIHRoZSByZXN1bHQgaW4gdGhlIFVJLiAqL1xuXHRcdFx0cHJlc2VudGF0aW9uSGludD86IFZhcmlhYmxlUHJlc2VudGF0aW9uSGludDtcblx0XHRcdC8qKiBJZiB2YXJpYWJsZXNSZWZlcmVuY2UgaXMgPiAwLCB0aGUgdmFsdWUgaXMgc3RydWN0dXJlZCBhbmQgaXRzIGNoaWxkcmVuIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuXG5cdFx0XHRcdFRoZSB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIxNDc0ODM2NDcgKDJeMzEgLSAxKS5cblx0XHRcdCovXG5cdFx0XHR2YXJpYWJsZXNSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBuYW1lZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdFx0VGhlIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjE0NzQ4MzY0NyAoMl4zMSAtIDEpLlxuXHRcdFx0Ki9cblx0XHRcdG5hbWVkVmFyaWFibGVzPzogbnVtYmVyO1xuXHRcdFx0LyoqIFRoZSBudW1iZXIgb2YgaW5kZXhlZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdFx0VGhlIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjE0NzQ4MzY0NyAoMl4zMSAtIDEpLlxuXHRcdFx0Ki9cblx0XHRcdGluZGV4ZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTdGVwSW5UYXJnZXRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0ZXBJblRhcmdldHMnLlxuXHRcdFRoaXMgcmVxdWVzdCByZXRyaWV2ZXMgdGhlIHBvc3NpYmxlIHN0ZXBJbiB0YXJnZXRzIGZvciB0aGUgc3BlY2lmaWVkIHN0YWNrIGZyYW1lLlxuXHRcdFRoZXNlIHRhcmdldHMgY2FuIGJlIHVzZWQgaW4gdGhlICdzdGVwSW4nIHJlcXVlc3QuXG5cdFx0VGhlIFN0ZXBJblRhcmdldHMgbWF5IG9ubHkgYmUgY2FsbGVkIGlmIHRoZSAnc3VwcG9ydHNTdGVwSW5UYXJnZXRzUmVxdWVzdCcgY2FwYWJpbGl0eSBleGlzdHMgYW5kIGlzIHRydWUuXG5cdFx0Q2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNTdGVwSW5UYXJnZXRzUmVxdWVzdCcgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwSW5UYXJnZXRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzdGVwSW5UYXJnZXRzJztcblx0XHRhcmd1bWVudHM6IFN0ZXBJblRhcmdldHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc3RlcEluVGFyZ2V0cycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwSW5UYXJnZXRzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIHN0YWNrIGZyYW1lIGZvciB3aGljaCB0byByZXRyaWV2ZSB0aGUgcG9zc2libGUgc3RlcEluIHRhcmdldHMuICovXG5cdFx0ZnJhbWVJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGVwSW5UYXJnZXRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJblRhcmdldHNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHBvc3NpYmxlIHN0ZXBJbiB0YXJnZXRzIG9mIHRoZSBzcGVjaWZpZWQgc291cmNlIGxvY2F0aW9uLiAqL1xuXHRcdFx0dGFyZ2V0czogU3RlcEluVGFyZ2V0W107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBHb3RvVGFyZ2V0cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdnb3RvVGFyZ2V0cycuXG5cdFx0VGhpcyByZXF1ZXN0IHJldHJpZXZlcyB0aGUgcG9zc2libGUgZ290byB0YXJnZXRzIGZvciB0aGUgc3BlY2lmaWVkIHNvdXJjZSBsb2NhdGlvbi5cblx0XHRUaGVzZSB0YXJnZXRzIGNhbiBiZSB1c2VkIGluIHRoZSAnZ290bycgcmVxdWVzdC5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0dvdG9UYXJnZXRzUmVxdWVzdCcgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBHb3RvVGFyZ2V0c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZ290b1RhcmdldHMnO1xuXHRcdGFyZ3VtZW50czogR290b1RhcmdldHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnZ290b1RhcmdldHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b1RhcmdldHNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgc291cmNlIGxvY2F0aW9uIGZvciB3aGljaCB0aGUgZ290byB0YXJnZXRzIGFyZSBkZXRlcm1pbmVkLiAqL1xuXHRcdHNvdXJjZTogU291cmNlO1xuXHRcdC8qKiBUaGUgbGluZSBsb2NhdGlvbiBmb3Igd2hpY2ggdGhlIGdvdG8gdGFyZ2V0cyBhcmUgZGV0ZXJtaW5lZC4gKi9cblx0XHRsaW5lOiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGNvbHVtbiBsb2NhdGlvbiBmb3Igd2hpY2ggdGhlIGdvdG8gdGFyZ2V0cyBhcmUgZGV0ZXJtaW5lZC4gKi9cblx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2dvdG9UYXJnZXRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9UYXJnZXRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBwb3NzaWJsZSBnb3RvIHRhcmdldHMgb2YgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4gKi9cblx0XHRcdHRhcmdldHM6IEdvdG9UYXJnZXRbXTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIENvbXBsZXRpb25zIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2NvbXBsZXRpb25zJy5cblx0XHRSZXR1cm5zIGEgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3IgYSBnaXZlbiBjYXJldCBwb3NpdGlvbiBhbmQgdGV4dC5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0NvbXBsZXRpb25zUmVxdWVzdCcgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb21wbGV0aW9uc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnY29tcGxldGlvbnMnO1xuXHRcdGFyZ3VtZW50czogQ29tcGxldGlvbnNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY29tcGxldGlvbnMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGlvbnNBcmd1bWVudHMge1xuXHRcdC8qKiBSZXR1cm5zIGNvbXBsZXRpb25zIGluIHRoZSBzY29wZSBvZiB0aGlzIHN0YWNrIGZyYW1lLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgY29tcGxldGlvbnMgYXJlIHJldHVybmVkIGZvciB0aGUgZ2xvYmFsIHNjb3BlLiAqL1xuXHRcdGZyYW1lSWQ/OiBudW1iZXI7XG5cdFx0LyoqIE9uZSBvciBtb3JlIHNvdXJjZSBsaW5lcy4gVHlwaWNhbGx5IHRoaXMgaXMgdGhlIHRleHQgYSB1c2VyIGhhcyB0eXBlZCBpbnRvIHRoZSBkZWJ1ZyBjb25zb2xlIGJlZm9yZSBoZSBhc2tlZCBmb3IgY29tcGxldGlvbi4gKi9cblx0XHR0ZXh0OiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9yIHdoaWNoIHRvIGRldGVybWluZSB0aGUgY29tcGxldGlvbiBwcm9wb3NhbHMuICovXG5cdFx0Y29sdW1uOiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGxpbmUgZm9yIHdoaWNoIHRvIGRldGVybWluZSB0aGUgY29tcGxldGlvbiBwcm9wb3NhbHMuIElmIG1pc3NpbmcgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRleHQgaXMgYXNzdW1lZC4gKi9cblx0XHRsaW5lPzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdjb21wbGV0aW9ucycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBDb21wbGV0aW9uc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcG9zc2libGUgY29tcGxldGlvbnMgZm9yIC4gKi9cblx0XHRcdHRhcmdldHM6IENvbXBsZXRpb25JdGVtW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFeGNlcHRpb25JbmZvIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2V4Y2VwdGlvbkluZm8nLlxuXHRcdFJldHJpZXZlcyB0aGUgZGV0YWlscyBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoaXMgZXZlbnQgdG8gYmUgcmFpc2VkLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzRXhjZXB0aW9uSW5mb1JlcXVlc3QnIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSW5mb1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZXhjZXB0aW9uSW5mbyc7XG5cdFx0YXJndW1lbnRzOiBFeGNlcHRpb25JbmZvQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2V4Y2VwdGlvbkluZm8nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSW5mb0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRocmVhZCBmb3Igd2hpY2ggZXhjZXB0aW9uIGluZm9ybWF0aW9uIHNob3VsZCBiZSByZXRyaWV2ZWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnZXhjZXB0aW9uSW5mbycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25JbmZvUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIElEIG9mIHRoZSBleGNlcHRpb24gdGhhdCB3YXMgdGhyb3duLiAqL1xuXHRcdFx0ZXhjZXB0aW9uSWQ6IHN0cmluZztcblx0XHRcdC8qKiBEZXNjcmlwdGl2ZSB0ZXh0IGZvciB0aGUgZXhjZXB0aW9uIHByb3ZpZGVkIGJ5IHRoZSBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRcdFx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdFx0XHQvKiogTW9kZSB0aGF0IGNhdXNlZCB0aGUgZXhjZXB0aW9uIG5vdGlmaWNhdGlvbiB0byBiZSByYWlzZWQuICovXG5cdFx0XHRicmVha01vZGU6IEV4Y2VwdGlvbkJyZWFrTW9kZTtcblx0XHRcdC8qKiBEZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXhjZXB0aW9uLiAqL1xuXHRcdFx0ZGV0YWlscz86IEV4Y2VwdGlvbkRldGFpbHM7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBSZWFkTWVtb3J5IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3JlYWRNZW1vcnknLlxuXHRcdFJlYWRzIGJ5dGVzIGZyb20gbWVtb3J5IGF0IHRoZSBwcm92aWRlZCBsb2NhdGlvbi5cblx0XHRDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c1JlYWRNZW1vcnlSZXF1ZXN0JyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlYWRNZW1vcnlSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3JlYWRNZW1vcnknO1xuXHRcdGFyZ3VtZW50czogUmVhZE1lbW9yeUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdyZWFkTWVtb3J5JyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlYWRNZW1vcnlBcmd1bWVudHMge1xuXHRcdC8qKiBNZW1vcnkgcmVmZXJlbmNlIHRvIHRoZSBiYXNlIGxvY2F0aW9uIGZyb20gd2hpY2ggZGF0YSBzaG91bGQgYmUgcmVhZC4gKi9cblx0XHRtZW1vcnlSZWZlcmVuY2U6IHN0cmluZztcblx0XHQvKiogT3B0aW9uYWwgb2Zmc2V0IChpbiBieXRlcykgdG8gYmUgYXBwbGllZCB0byB0aGUgcmVmZXJlbmNlIGxvY2F0aW9uIGJlZm9yZSByZWFkaW5nIGRhdGEuIENhbiBiZSBuZWdhdGl2ZS4gKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqIE51bWJlciBvZiBieXRlcyB0byByZWFkIGF0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gYW5kIG9mZnNldC4gKi9cblx0XHRjb3VudDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdyZWFkTWVtb3J5JyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlYWRNZW1vcnlSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5Pzoge1xuXHRcdFx0LyoqIFRoZSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBieXRlIG9mIGRhdGEgcmV0dXJuZWQuXG5cdFx0XHRcdFRyZWF0ZWQgYXMgYSBoZXggdmFsdWUgaWYgcHJlZml4ZWQgd2l0aCAnMHgnLCBvciBhcyBhIGRlY2ltYWwgdmFsdWUgb3RoZXJ3aXNlLlxuXHRcdFx0Ki9cblx0XHRcdGFkZHJlc3M6IHN0cmluZztcblx0XHRcdC8qKiBUaGUgbnVtYmVyIG9mIHVucmVhZGFibGUgYnl0ZXMgZW5jb3VudGVyZWQgYWZ0ZXIgdGhlIGxhc3Qgc3VjY2Vzc2Z1bGx5IHJlYWQgYnl0ZS5cblx0XHRcdFx0VGhpcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgc2tpcHBlZCBiZWZvcmUgYSBzdWJzZXF1ZW50ICdyZWFkTWVtb3J5JyByZXF1ZXN0IHdpbGwgc3VjY2VlZC5cblx0XHRcdCovXG5cdFx0XHR1bnJlYWRhYmxlQnl0ZXM/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIGJ5dGVzIHJlYWQgZnJvbSBtZW1vcnksIGVuY29kZWQgdXNpbmcgYmFzZTY0LiAqL1xuXHRcdFx0ZGF0YT86IHN0cmluZztcblx0XHR9O1xuXHR9XG5cblx0LyoqIERpc2Fzc2VtYmxlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2Rpc2Fzc2VtYmxlJy5cblx0XHREaXNhc3NlbWJsZXMgY29kZSBzdG9yZWQgYXQgdGhlIHByb3ZpZGVkIGxvY2F0aW9uLlxuXHRcdENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzRGlzYXNzZW1ibGVSZXF1ZXN0JyBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Fzc2VtYmxlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdkaXNhc3NlbWJsZSc7XG5cdFx0YXJndW1lbnRzOiBEaXNhc3NlbWJsZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdkaXNhc3NlbWJsZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBEaXNhc3NlbWJsZUFyZ3VtZW50cyB7XG5cdFx0LyoqIE1lbW9yeSByZWZlcmVuY2UgdG8gdGhlIGJhc2UgbG9jYXRpb24gY29udGFpbmluZyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGRpc2Fzc2VtYmxlLiAqL1xuXHRcdG1lbW9yeVJlZmVyZW5jZTogc3RyaW5nO1xuXHRcdC8qKiBPcHRpb25hbCBvZmZzZXQgKGluIGJ5dGVzKSB0byBiZSBhcHBsaWVkIHRvIHRoZSByZWZlcmVuY2UgbG9jYXRpb24gYmVmb3JlIGRpc2Fzc2VtYmxpbmcuIENhbiBiZSBuZWdhdGl2ZS4gKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIG9mZnNldCAoaW4gaW5zdHJ1Y3Rpb25zKSB0byBiZSBhcHBsaWVkIGFmdGVyIHRoZSBieXRlIG9mZnNldCAoaWYgYW55KSBiZWZvcmUgZGlzYXNzZW1ibGluZy4gQ2FuIGJlIG5lZ2F0aXZlLiAqL1xuXHRcdGluc3RydWN0aW9uT2Zmc2V0PzogbnVtYmVyO1xuXHRcdC8qKiBOdW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIHRvIGRpc2Fzc2VtYmxlIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gYW5kIG9mZnNldC5cblx0XHRcdEFuIGFkYXB0ZXIgbXVzdCByZXR1cm4gZXhhY3RseSB0aGlzIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgLSBhbnkgdW5hdmFpbGFibGUgaW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgJ2ludmFsaWQgaW5zdHJ1Y3Rpb24nIHZhbHVlLlxuXHRcdCovXG5cdFx0aW5zdHJ1Y3Rpb25Db3VudDogbnVtYmVyO1xuXHRcdC8qKiBJZiB0cnVlLCB0aGUgYWRhcHRlciBzaG91bGQgYXR0ZW1wdCB0byByZXNvbHZlIG1lbW9yeSBhZGRyZXNzZXMgYW5kIG90aGVyIHZhbHVlcyB0byBzeW1ib2xpYyBuYW1lcy4gKi9cblx0XHRyZXNvbHZlU3ltYm9scz86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2Rpc2Fzc2VtYmxlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Fzc2VtYmxlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keT86IHtcblx0XHRcdC8qKiBUaGUgbGlzdCBvZiBkaXNhc3NlbWJsZWQgaW5zdHJ1Y3Rpb25zLiAqL1xuXHRcdFx0aW5zdHJ1Y3Rpb25zOiBEaXNhc3NlbWJsZWRJbnN0cnVjdGlvbltdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcGFiaWxpdGllcyBvZiBhIGRlYnVnIGFkYXB0ZXIuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ2FwYWJpbGl0aWVzIHtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgdGhlICdjb25maWd1cmF0aW9uRG9uZScgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c0NvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGZ1bmN0aW9uIGJyZWFrcG9pbnRzLiAqL1xuXHRcdHN1cHBvcnRzRnVuY3Rpb25CcmVha3BvaW50cz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGNvbmRpdGlvbmFsIGJyZWFrcG9pbnRzLiAqL1xuXHRcdHN1cHBvcnRzQ29uZGl0aW9uYWxCcmVha3BvaW50cz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGJyZWFrcG9pbnRzIHRoYXQgYnJlYWsgZXhlY3V0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIG51bWJlciBvZiBoaXRzLiAqL1xuXHRcdHN1cHBvcnRzSGl0Q29uZGl0aW9uYWxCcmVha3BvaW50cz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGEgKHNpZGUgZWZmZWN0IGZyZWUpIGV2YWx1YXRlIHJlcXVlc3QgZm9yIGRhdGEgaG92ZXJzLiAqL1xuXHRcdHN1cHBvcnRzRXZhbHVhdGVGb3JIb3ZlcnM/OiBib29sZWFuO1xuXHRcdC8qKiBBdmFpbGFibGUgZmlsdGVycyBvciBvcHRpb25zIGZvciB0aGUgc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMgcmVxdWVzdC4gKi9cblx0XHRleGNlcHRpb25CcmVha3BvaW50RmlsdGVycz86IEV4Y2VwdGlvbkJyZWFrcG9pbnRzRmlsdGVyW107XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHN0ZXBwaW5nIGJhY2sgdmlhIHRoZSAnc3RlcEJhY2snIGFuZCAncmV2ZXJzZUNvbnRpbnVlJyByZXF1ZXN0cy4gKi9cblx0XHRzdXBwb3J0c1N0ZXBCYWNrPzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgc2V0dGluZyBhIHZhcmlhYmxlIHRvIGEgdmFsdWUuICovXG5cdFx0c3VwcG9ydHNTZXRWYXJpYWJsZT86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHJlc3RhcnRpbmcgYSBmcmFtZS4gKi9cblx0XHRzdXBwb3J0c1Jlc3RhcnRGcmFtZT86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnZ290b1RhcmdldHMnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNHb3RvVGFyZ2V0c1JlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ3N0ZXBJblRhcmdldHMnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNTdGVwSW5UYXJnZXRzUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnY29tcGxldGlvbnMnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNDb21wbGV0aW9uc1JlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgdHJpZ2dlciBjb21wbGV0aW9uIGluIGEgUkVQTC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIFVJIHNob3VsZCBhc3N1bWUgdGhlICcuJyBjaGFyYWN0ZXIuICovXG5cdFx0Y29tcGxldGlvblRyaWdnZXJDaGFyYWN0ZXJzPzogc3RyaW5nW107XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnbW9kdWxlcycgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c01vZHVsZXNSZXF1ZXN0PzogYm9vbGVhbjtcblx0XHQvKiogVGhlIHNldCBvZiBhZGRpdGlvbmFsIG1vZHVsZSBpbmZvcm1hdGlvbiBleHBvc2VkIGJ5IHRoZSBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRcdGFkZGl0aW9uYWxNb2R1bGVDb2x1bW5zPzogQ29sdW1uRGVzY3JpcHRvcltdO1xuXHRcdC8qKiBDaGVja3N1bSBhbGdvcml0aG1zIHN1cHBvcnRlZCBieSB0aGUgZGVidWcgYWRhcHRlci4gKi9cblx0XHRzdXBwb3J0ZWRDaGVja3N1bUFsZ29yaXRobXM/OiBDaGVja3N1bUFsZ29yaXRobVtdO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ3Jlc3RhcnQnIHJlcXVlc3QuIEluIHRoaXMgY2FzZSBhIGNsaWVudCBzaG91bGQgbm90IGltcGxlbWVudCAncmVzdGFydCcgYnkgdGVybWluYXRpbmcgYW5kIHJlbGF1bmNoaW5nIHRoZSBhZGFwdGVyIGJ1dCBieSBjYWxsaW5nIHRoZSBSZXN0YXJ0UmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c1Jlc3RhcnRSZXF1ZXN0PzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgJ2V4Y2VwdGlvbk9wdGlvbnMnIG9uIHRoZSBzZXRFeGNlcHRpb25CcmVha3BvaW50cyByZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzRXhjZXB0aW9uT3B0aW9ucz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGEgJ2Zvcm1hdCcgYXR0cmlidXRlIG9uIHRoZSBzdGFja1RyYWNlUmVxdWVzdCwgdmFyaWFibGVzUmVxdWVzdCwgYW5kIGV2YWx1YXRlUmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c1ZhbHVlRm9ybWF0dGluZ09wdGlvbnM/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ2V4Y2VwdGlvbkluZm8nIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNFeGNlcHRpb25JbmZvUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAndGVybWluYXRlRGVidWdnZWUnIGF0dHJpYnV0ZSBvbiB0aGUgJ2Rpc2Nvbm5lY3QnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydFRlcm1pbmF0ZURlYnVnZ2VlPzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIGRlbGF5ZWQgbG9hZGluZyBvZiBwYXJ0cyBvZiB0aGUgc3RhY2ssIHdoaWNoIHJlcXVpcmVzIHRoYXQgYm90aCB0aGUgJ3N0YXJ0RnJhbWUnIGFuZCAnbGV2ZWxzJyBhcmd1bWVudHMgYW5kIHRoZSAndG90YWxGcmFtZXMnIHJlc3VsdCBvZiB0aGUgJ1N0YWNrVHJhY2UnIHJlcXVlc3QgYXJlIHN1cHBvcnRlZC4gKi9cblx0XHRzdXBwb3J0c0RlbGF5ZWRTdGFja1RyYWNlTG9hZGluZz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnbG9hZGVkU291cmNlcycgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c0xvYWRlZFNvdXJjZXNSZXF1ZXN0PzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgbG9ncG9pbnRzIGJ5IGludGVycHJldGluZyB0aGUgJ2xvZ01lc3NhZ2UnIGF0dHJpYnV0ZSBvZiB0aGUgU291cmNlQnJlYWtwb2ludC4gKi9cblx0XHRzdXBwb3J0c0xvZ1BvaW50cz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAndGVybWluYXRlVGhyZWFkcycgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c1Rlcm1pbmF0ZVRocmVhZHNSZXF1ZXN0PzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgdGhlICdzZXRFeHByZXNzaW9uJyByZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzU2V0RXhwcmVzc2lvbj86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAndGVybWluYXRlJyByZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzVGVybWluYXRlUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIGRhdGEgYnJlYWtwb2ludHMuICovXG5cdFx0c3VwcG9ydHNEYXRhQnJlYWtwb2ludHM/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ3JlYWRNZW1vcnknIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNSZWFkTWVtb3J5UmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnZGlzYXNzZW1ibGUnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNEaXNhc3NlbWJsZVJlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ2NhbmNlbCcgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c0NhbmNlbFJlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgJ2JyZWFrcG9pbnRMb2NhdGlvbnMnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNCcmVha3BvaW50TG9jYXRpb25zUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnY2xpcGJvYXJkJyBjb250ZXh0IHZhbHVlIGluIHRoZSAnZXZhbHVhdGUnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNDbGlwYm9hcmRDb250ZXh0PzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgc3RlcHBpbmcgZ3JhbnVsYXJpdGllcyAoYXJndW1lbnQgJ2dyYW51bGFyaXR5JykgZm9yIHRoZSBzdGVwcGluZyByZXF1ZXN0cy4gKi9cblx0XHRzdXBwb3J0c1N0ZXBwaW5nR3JhbnVsYXJpdHk/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBhZGRpbmcgYnJlYWtwb2ludHMgYmFzZWQgb24gaW5zdHJ1Y3Rpb24gcmVmZXJlbmNlcy4gKi9cblx0XHRzdXBwb3J0c0luc3RydWN0aW9uQnJlYWtwb2ludHM/OiBib29sZWFuO1xuXHR9XG5cblx0LyoqIEFuIEV4Y2VwdGlvbkJyZWFrcG9pbnRzRmlsdGVyIGlzIHNob3duIGluIHRoZSBVSSBhcyBhbiBvcHRpb24gZm9yIGNvbmZpZ3VyaW5nIGhvdyBleGNlcHRpb25zIGFyZSBkZWFsdCB3aXRoLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbkJyZWFrcG9pbnRzRmlsdGVyIHtcblx0XHQvKiogVGhlIGludGVybmFsIElEIG9mIHRoZSBmaWx0ZXIuIFRoaXMgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBzZXRFeGNlcHRpb25CcmVha3BvaW50cyByZXF1ZXN0LiAqL1xuXHRcdGZpbHRlcjogc3RyaW5nO1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgZmlsdGVyLiBUaGlzIHdpbGwgYmUgc2hvd24gaW4gdGhlIFVJLiAqL1xuXHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0LyoqIEluaXRpYWwgdmFsdWUgb2YgdGhlIGZpbHRlci4gSWYgbm90IHNwZWNpZmllZCBhIHZhbHVlICdmYWxzZScgaXMgYXNzdW1lZC4gKi9cblx0XHRkZWZhdWx0PzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBBIHN0cnVjdHVyZWQgbWVzc2FnZSBvYmplY3QuIFVzZWQgdG8gcmV0dXJuIGVycm9ycyBmcm9tIHJlcXVlc3RzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuXHRcdC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1lc3NhZ2UuICovXG5cdFx0aWQ6IG51bWJlcjtcblx0XHQvKiogQSBmb3JtYXQgc3RyaW5nIGZvciB0aGUgbWVzc2FnZS4gRW1iZWRkZWQgdmFyaWFibGVzIGhhdmUgdGhlIGZvcm0gJ3tuYW1lfScuXG5cdFx0XHRJZiB2YXJpYWJsZSBuYW1lIHN0YXJ0cyB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyLCB0aGUgdmFyaWFibGUgZG9lcyBub3QgY29udGFpbiB1c2VyIGRhdGEgKFBJSSkgYW5kIGNhbiBiZSBzYWZlbHkgdXNlZCBmb3IgdGVsZW1ldHJ5IHB1cnBvc2VzLlxuXHRcdCovXG5cdFx0Zm9ybWF0OiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9iamVjdCB1c2VkIGFzIGEgZGljdGlvbmFyeSBmb3IgbG9va2luZyB1cCB0aGUgdmFyaWFibGVzIGluIHRoZSBmb3JtYXQgc3RyaW5nLiAqL1xuXHRcdHZhcmlhYmxlcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nOyB9O1xuXHRcdC8qKiBJZiB0cnVlIHNlbmQgdG8gdGVsZW1ldHJ5LiAqL1xuXHRcdHNlbmRUZWxlbWV0cnk/OiBib29sZWFuO1xuXHRcdC8qKiBJZiB0cnVlIHNob3cgdXNlci4gKi9cblx0XHRzaG93VXNlcj86IGJvb2xlYW47XG5cdFx0LyoqIEFuIG9wdGlvbmFsIHVybCB3aGVyZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbWVzc2FnZSBjYW4gYmUgZm91bmQuICovXG5cdFx0dXJsPzogc3RyaW5nO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBsYWJlbCB0aGF0IGlzIHByZXNlbnRlZCB0byB0aGUgdXNlciBhcyB0aGUgVUkgZm9yIG9wZW5pbmcgdGhlIHVybC4gKi9cblx0XHR1cmxMYWJlbD86IHN0cmluZztcblx0fVxuXG5cdC8qKiBBIE1vZHVsZSBvYmplY3QgcmVwcmVzZW50cyBhIHJvdyBpbiB0aGUgbW9kdWxlcyB2aWV3LlxuXHRcdFR3byBhdHRyaWJ1dGVzIGFyZSBtYW5kYXRvcnk6IGFuIGlkIGlkZW50aWZpZXMgYSBtb2R1bGUgaW4gdGhlIG1vZHVsZXMgdmlldyBhbmQgaXMgdXNlZCBpbiBhIE1vZHVsZUV2ZW50IGZvciBpZGVudGlmeWluZyBhIG1vZHVsZSBmb3IgYWRkaW5nLCB1cGRhdGluZyBvciBkZWxldGluZy5cblx0XHRUaGUgbmFtZSBpcyB1c2VkIHRvIG1pbmltYWxseSByZW5kZXIgdGhlIG1vZHVsZSBpbiB0aGUgVUkuXG5cdFx0XG5cdFx0QWRkaXRpb25hbCBhdHRyaWJ1dGVzIGNhbiBiZSBhZGRlZCB0byB0aGUgbW9kdWxlLiBUaGV5IHdpbGwgc2hvdyB1cCBpbiB0aGUgbW9kdWxlIFZpZXcgaWYgdGhleSBoYXZlIGEgY29ycmVzcG9uZGluZyBDb2x1bW5EZXNjcmlwdG9yLlxuXHRcdFxuXHRcdFRvIGF2b2lkIGFuIHVubmVjZXNzYXJ5IHByb2xpZmVyYXRpb24gb2YgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHdpdGggc2ltaWxhciBzZW1hbnRpY3MgYnV0IGRpZmZlcmVudCBuYW1lc1xuXHRcdHdlIHJlY29tbWVuZCB0byByZS11c2UgYXR0cmlidXRlcyBmcm9tIHRoZSAncmVjb21tZW5kZWQnIGxpc3QgYmVsb3cgZmlyc3QsIGFuZCBvbmx5IGludHJvZHVjZSBuZXcgYXR0cmlidXRlcyBpZiBub3RoaW5nIGFwcHJvcHJpYXRlIGNvdWxkIGJlIGZvdW5kLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZSB7XG5cdFx0LyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbW9kdWxlLiAqL1xuXHRcdGlkOiBudW1iZXIgfCBzdHJpbmc7XG5cdFx0LyoqIEEgbmFtZSBvZiB0aGUgbW9kdWxlLiAqL1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHQvKiogb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkIGF0dHJpYnV0ZXMuXG5cdFx0XHRhbHdheXMgdHJ5IHRvIHVzZSB0aGVzZSBmaXJzdCBiZWZvcmUgaW50cm9kdWNpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzLlxuXHRcdFx0XG5cdFx0XHRMb2dpY2FsIGZ1bGwgcGF0aCB0byB0aGUgbW9kdWxlLiBUaGUgZXhhY3QgZGVmaW5pdGlvbiBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLCBidXQgdXN1YWxseSB0aGlzIHdvdWxkIGJlIGEgZnVsbCBwYXRoIHRvIHRoZSBvbi1kaXNrIGZpbGUgZm9yIHRoZSBtb2R1bGUuXG5cdFx0Ki9cblx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdC8qKiBUcnVlIGlmIHRoZSBtb2R1bGUgaXMgb3B0aW1pemVkLiAqL1xuXHRcdGlzT3B0aW1pemVkPzogYm9vbGVhbjtcblx0XHQvKiogVHJ1ZSBpZiB0aGUgbW9kdWxlIGlzIGNvbnNpZGVyZWQgJ3VzZXIgY29kZScgYnkgYSBkZWJ1Z2dlciB0aGF0IHN1cHBvcnRzICdKdXN0IE15IENvZGUnLiAqL1xuXHRcdGlzVXNlckNvZGU/OiBib29sZWFuO1xuXHRcdC8qKiBWZXJzaW9uIG9mIE1vZHVsZS4gKi9cblx0XHR2ZXJzaW9uPzogc3RyaW5nO1xuXHRcdC8qKiBVc2VyIHVuZGVyc3RhbmRhYmxlIGRlc2NyaXB0aW9uIG9mIGlmIHN5bWJvbHMgd2VyZSBmb3VuZCBmb3IgdGhlIG1vZHVsZSAoZXg6ICdTeW1ib2xzIExvYWRlZCcsICdTeW1ib2xzIG5vdCBmb3VuZCcsIGV0Yy4gKi9cblx0XHRzeW1ib2xTdGF0dXM/OiBzdHJpbmc7XG5cdFx0LyoqIExvZ2ljYWwgZnVsbCBwYXRoIHRvIHRoZSBzeW1ib2wgZmlsZS4gVGhlIGV4YWN0IGRlZmluaXRpb24gaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZC4gKi9cblx0XHRzeW1ib2xGaWxlUGF0aD86IHN0cmluZztcblx0XHQvKiogTW9kdWxlIGNyZWF0ZWQgb3IgbW9kaWZpZWQuICovXG5cdFx0ZGF0ZVRpbWVTdGFtcD86IHN0cmluZztcblx0XHQvKiogQWRkcmVzcyByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgbW9kdWxlLiAqL1xuXHRcdGFkZHJlc3NSYW5nZT86IHN0cmluZztcblx0fVxuXG5cdC8qKiBBIENvbHVtbkRlc2NyaXB0b3Igc3BlY2lmaWVzIHdoYXQgbW9kdWxlIGF0dHJpYnV0ZSB0byBzaG93IGluIGEgY29sdW1uIG9mIHRoZSBNb2R1bGVzVmlldywgaG93IHRvIGZvcm1hdCBpdCxcblx0XHRhbmQgd2hhdCB0aGUgY29sdW1uJ3MgbGFiZWwgc2hvdWxkIGJlLlxuXHRcdEl0IGlzIG9ubHkgdXNlZCBpZiB0aGUgdW5kZXJseWluZyBVSSBhY3R1YWxseSBzdXBwb3J0cyB0aGlzIGxldmVsIG9mIGN1c3RvbWl6YXRpb24uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGVzY3JpcHRvciB7XG5cdFx0LyoqIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZSByZW5kZXJlZCBpbiB0aGlzIGNvbHVtbi4gKi9cblx0XHRhdHRyaWJ1dGVOYW1lOiBzdHJpbmc7XG5cdFx0LyoqIEhlYWRlciBVSSBsYWJlbCBvZiBjb2x1bW4uICovXG5cdFx0bGFiZWw6IHN0cmluZztcblx0XHQvKiogRm9ybWF0IHRvIHVzZSBmb3IgdGhlIHJlbmRlcmVkIHZhbHVlcyBpbiB0aGlzIGNvbHVtbi4gVEJEIGhvdyB0aGUgZm9ybWF0IHN0cmluZ3MgbG9va3MgbGlrZS4gKi9cblx0XHRmb3JtYXQ/OiBzdHJpbmc7XG5cdFx0LyoqIERhdGF0eXBlIG9mIHZhbHVlcyBpbiB0aGlzIGNvbHVtbi4gIERlZmF1bHRzIHRvICdzdHJpbmcnIGlmIG5vdCBzcGVjaWZpZWQuICovXG5cdFx0dHlwZT86ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbGVhbicgfCAndW5peFRpbWVzdGFtcFVUQyc7XG5cdFx0LyoqIFdpZHRoIG9mIHRoaXMgY29sdW1uIGluIGNoYXJhY3RlcnMgKGhpbnQgb25seSkuICovXG5cdFx0d2lkdGg/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogVGhlIE1vZHVsZXNWaWV3RGVzY3JpcHRvciBpcyB0aGUgY29udGFpbmVyIGZvciBhbGwgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIGEgTW9kdWxlVmlldy5cblx0XHRGb3Igbm93IGl0IG9ubHkgc3BlY2lmaWVzIHRoZSBjb2x1bW5zIHRvIGJlIHNob3duIGluIHRoZSBtb2R1bGVzIHZpZXcuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlc1ZpZXdEZXNjcmlwdG9yIHtcblx0XHRjb2x1bW5zOiBDb2x1bW5EZXNjcmlwdG9yW107XG5cdH1cblxuXHQvKiogQSBUaHJlYWQgKi9cblx0ZXhwb3J0IGludGVyZmFjZSBUaHJlYWQge1xuXHRcdC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRocmVhZC4gKi9cblx0XHRpZDogbnVtYmVyO1xuXHRcdC8qKiBBIG5hbWUgb2YgdGhlIHRocmVhZC4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdH1cblxuXHQvKiogQSBTb3VyY2UgaXMgYSBkZXNjcmlwdG9yIGZvciBzb3VyY2UgY29kZS5cblx0XHRJdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBkZWJ1ZyBhZGFwdGVyIGFzIHBhcnQgb2YgYSBTdGFja0ZyYW1lIGFuZCBpdCBpcyB1c2VkIGJ5IGNsaWVudHMgd2hlbiBzcGVjaWZ5aW5nIGJyZWFrcG9pbnRzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG5cdFx0LyoqIFRoZSBzaG9ydCBuYW1lIG9mIHRoZSBzb3VyY2UuIEV2ZXJ5IHNvdXJjZSByZXR1cm5lZCBmcm9tIHRoZSBkZWJ1ZyBhZGFwdGVyIGhhcyBhIG5hbWUuXG5cdFx0XHRXaGVuIHNlbmRpbmcgYSBzb3VyY2UgdG8gdGhlIGRlYnVnIGFkYXB0ZXIgdGhpcyBuYW1lIGlzIG9wdGlvbmFsLlxuXHRcdCovXG5cdFx0bmFtZT86IHN0cmluZztcblx0XHQvKiogVGhlIHBhdGggb2YgdGhlIHNvdXJjZSB0byBiZSBzaG93biBpbiB0aGUgVUkuXG5cdFx0XHRJdCBpcyBvbmx5IHVzZWQgdG8gbG9jYXRlIGFuZCBsb2FkIHRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgaWYgbm8gc291cmNlUmVmZXJlbmNlIGlzIHNwZWNpZmllZCAob3IgaXRzIHZhbHVlIGlzIDApLlxuXHRcdCovXG5cdFx0cGF0aD86IHN0cmluZztcblx0XHQvKiogSWYgc291cmNlUmVmZXJlbmNlID4gMCB0aGUgY29udGVudHMgb2YgdGhlIHNvdXJjZSBtdXN0IGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSBTb3VyY2VSZXF1ZXN0IChldmVuIGlmIGEgcGF0aCBpcyBzcGVjaWZpZWQpLlxuXHRcdFx0QSBzb3VyY2VSZWZlcmVuY2UgaXMgb25seSB2YWxpZCBmb3IgYSBzZXNzaW9uLCBzbyBpdCBtdXN0IG5vdCBiZSB1c2VkIHRvIHBlcnNpc3QgYSBzb3VyY2UuXG5cdFx0XHRUaGUgdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyMTQ3NDgzNjQ3ICgyXjMxIC0gMSkuXG5cdFx0Ki9cblx0XHRzb3VyY2VSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGhpbnQgZm9yIGhvdyB0byBwcmVzZW50IHRoZSBzb3VyY2UgaW4gdGhlIFVJLlxuXHRcdFx0QSB2YWx1ZSBvZiAnZGVlbXBoYXNpemUnIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlIG9yIHRoYXQgaXQgaXMgc2tpcHBlZCBvbiBzdGVwcGluZy5cblx0XHQqL1xuXHRcdHByZXNlbnRhdGlvbkhpbnQ/OiAnbm9ybWFsJyB8ICdlbXBoYXNpemUnIHwgJ2RlZW1waGFzaXplJztcblx0XHQvKiogVGhlIChvcHRpb25hbCkgb3JpZ2luIG9mIHRoaXMgc291cmNlOiBwb3NzaWJsZSB2YWx1ZXMgJ2ludGVybmFsIG1vZHVsZScsICdpbmxpbmVkIGNvbnRlbnQgZnJvbSBzb3VyY2UgbWFwJywgZXRjLiAqL1xuXHRcdG9yaWdpbj86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgbGlzdCBvZiBzb3VyY2VzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBzb3VyY2UuIFRoZXNlIG1heSBiZSB0aGUgc291cmNlIHRoYXQgZ2VuZXJhdGVkIHRoaXMgc291cmNlLiAqL1xuXHRcdHNvdXJjZXM/OiBTb3VyY2VbXTtcblx0XHQvKiogT3B0aW9uYWwgZGF0YSB0aGF0IGEgZGVidWcgYWRhcHRlciBtaWdodCB3YW50IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2xpZW50LlxuXHRcdFx0VGhlIGNsaWVudCBzaG91bGQgbGVhdmUgdGhlIGRhdGEgaW50YWN0IGFuZCBwZXJzaXN0IGl0IGFjcm9zcyBzZXNzaW9ucy4gVGhlIGNsaWVudCBzaG91bGQgbm90IGludGVycHJldCB0aGUgZGF0YS5cblx0XHQqL1xuXHRcdGFkYXB0ZXJEYXRhPzogYW55O1xuXHRcdC8qKiBUaGUgY2hlY2tzdW1zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbGUuICovXG5cdFx0Y2hlY2tzdW1zPzogQ2hlY2tzdW1bXTtcblx0fVxuXG5cdC8qKiBBIFN0YWNrZnJhbWUgY29udGFpbnMgdGhlIHNvdXJjZSBsb2NhdGlvbi4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGFja0ZyYW1lIHtcblx0XHQvKiogQW4gaWRlbnRpZmllciBmb3IgdGhlIHN0YWNrIGZyYW1lLiBJdCBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHRocmVhZHMuXG5cdFx0XHRUaGlzIGlkIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzY29wZXMgb2YgdGhlIGZyYW1lIHdpdGggdGhlICdzY29wZXNSZXF1ZXN0JyBvciB0byByZXN0YXJ0IHRoZSBleGVjdXRpb24gb2YgYSBzdGFja2ZyYW1lLlxuXHRcdCovXG5cdFx0aWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIGZyYW1lLCB0eXBpY2FsbHkgYSBtZXRob2QgbmFtZS4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBvcHRpb25hbCBzb3VyY2Ugb2YgdGhlIGZyYW1lLiAqL1xuXHRcdHNvdXJjZT86IFNvdXJjZTtcblx0XHQvKiogVGhlIGxpbmUgd2l0aGluIHRoZSBmaWxlIG9mIHRoZSBmcmFtZS4gSWYgc291cmNlIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdCwgbGluZSBpcyAwIGFuZCBtdXN0IGJlIGlnbm9yZWQuICovXG5cdFx0bGluZTogbnVtYmVyO1xuXHRcdC8qKiBUaGUgY29sdW1uIHdpdGhpbiB0aGUgbGluZS4gSWYgc291cmNlIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdCwgY29sdW1uIGlzIDAgYW5kIG11c3QgYmUgaWdub3JlZC4gKi9cblx0XHRjb2x1bW46IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZW5kIGxpbmUgb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGVuZExpbmU/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGVuZCBjb2x1bW4gb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGVuZENvbHVtbj86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgbWVtb3J5IHJlZmVyZW5jZSBmb3IgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gcG9pbnRlciBpbiB0aGlzIGZyYW1lLiAqL1xuXHRcdGluc3RydWN0aW9uUG9pbnRlclJlZmVyZW5jZT86IHN0cmluZztcblx0XHQvKiogVGhlIG1vZHVsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFtZSwgaWYgYW55LiAqL1xuXHRcdG1vZHVsZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBoaW50IGZvciBob3cgdG8gcHJlc2VudCB0aGlzIGZyYW1lIGluIHRoZSBVSS5cblx0XHRcdEEgdmFsdWUgb2YgJ2xhYmVsJyBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmcmFtZSBpcyBhbiBhcnRpZmljaWFsIGZyYW1lIHRoYXQgaXMgdXNlZCBhcyBhIHZpc3VhbCBsYWJlbCBvciBzZXBhcmF0b3IuIEEgdmFsdWUgb2YgJ3N1YnRsZScgY2FuIGJlIHVzZWQgdG8gY2hhbmdlIHRoZSBhcHBlYXJhbmNlIG9mIGEgZnJhbWUgaW4gYSAnc3VidGxlJyB3YXkuXG5cdFx0Ki9cblx0XHRwcmVzZW50YXRpb25IaW50PzogJ25vcm1hbCcgfCAnbGFiZWwnIHwgJ3N1YnRsZSc7XG5cdH1cblxuXHQvKiogQSBTY29wZSBpcyBhIG5hbWVkIGNvbnRhaW5lciBmb3IgdmFyaWFibGVzLiBPcHRpb25hbGx5IGEgc2NvcGUgY2FuIG1hcCB0byBhIHNvdXJjZSBvciBhIHJhbmdlIHdpdGhpbiBhIHNvdXJjZS4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZSB7XG5cdFx0LyoqIE5hbWUgb2YgdGhlIHNjb3BlIHN1Y2ggYXMgJ0FyZ3VtZW50cycsICdMb2NhbHMnLCBvciAnUmVnaXN0ZXJzJy4gVGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJIGFzIGlzIGFuZCBjYW4gYmUgdHJhbnNsYXRlZC4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGhpbnQgZm9yIGhvdyB0byBwcmVzZW50IHRoaXMgc2NvcGUgaW4gdGhlIFVJLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBtaXNzaW5nLCB0aGUgc2NvcGUgaXMgc2hvd24gd2l0aCBhIGdlbmVyaWMgVUkuXG5cdFx0XHRWYWx1ZXM6IFxuXHRcdFx0J2FyZ3VtZW50cyc6IFNjb3BlIGNvbnRhaW5zIG1ldGhvZCBhcmd1bWVudHMuXG5cdFx0XHQnbG9jYWxzJzogU2NvcGUgY29udGFpbnMgbG9jYWwgdmFyaWFibGVzLlxuXHRcdFx0J3JlZ2lzdGVycyc6IFNjb3BlIGNvbnRhaW5zIHJlZ2lzdGVycy4gT25seSBhIHNpbmdsZSAncmVnaXN0ZXJzJyBzY29wZSBzaG91bGQgYmUgcmV0dXJuZWQgZnJvbSBhICdzY29wZXMnIHJlcXVlc3QuXG5cdFx0XHRldGMuXG5cdFx0Ki9cblx0XHRwcmVzZW50YXRpb25IaW50Pzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgdmFyaWFibGVzIG9mIHRoaXMgc2NvcGUgY2FuIGJlIHJldHJpZXZlZCBieSBwYXNzaW5nIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuICovXG5cdFx0dmFyaWFibGVzUmVmZXJlbmNlOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgdmFyaWFibGVzIGluIHRoaXMgc2NvcGUuXG5cdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0Ki9cblx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHQvKiogVGhlIG51bWJlciBvZiBpbmRleGVkIHZhcmlhYmxlcyBpbiB0aGlzIHNjb3BlLlxuXHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgdmFyaWFibGVzIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdCovXG5cdFx0aW5kZXhlZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHQvKiogSWYgdHJ1ZSwgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgaW4gdGhpcyBzY29wZSBpcyBsYXJnZSBvciBleHBlbnNpdmUgdG8gcmV0cmlldmUuICovXG5cdFx0ZXhwZW5zaXZlOiBib29sZWFuO1xuXHRcdC8qKiBPcHRpb25hbCBzb3VyY2UgZm9yIHRoaXMgc2NvcGUuICovXG5cdFx0c291cmNlPzogU291cmNlO1xuXHRcdC8qKiBPcHRpb25hbCBzdGFydCBsaW5lIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgc2NvcGUuICovXG5cdFx0bGluZT86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgc3RhcnQgY29sdW1uIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgc2NvcGUuICovXG5cdFx0Y29sdW1uPzogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBlbmQgbGluZSBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGlzIHNjb3BlLiAqL1xuXHRcdGVuZExpbmU/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIGVuZCBjb2x1bW4gb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhpcyBzY29wZS4gKi9cblx0XHRlbmRDb2x1bW4/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogQSBWYXJpYWJsZSBpcyBhIG5hbWUvdmFsdWUgcGFpci5cblx0XHRPcHRpb25hbGx5IGEgdmFyaWFibGUgY2FuIGhhdmUgYSAndHlwZScgdGhhdCBpcyBzaG93biBpZiBzcGFjZSBwZXJtaXRzIG9yIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgdmFyaWFibGUncyBuYW1lLlxuXHRcdEFuIG9wdGlvbmFsICdraW5kJyBpcyB1c2VkIHRvIHJlbmRlciBhZGRpdGlvbmFsIHByb3BlcnRpZXMgb2YgdGhlIHZhcmlhYmxlLCBlLmcuIGRpZmZlcmVudCBpY29ucyBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGEgdmFyaWFibGUgaXMgcHVibGljIG9yIHByaXZhdGUuXG5cdFx0SWYgdGhlIHZhbHVlIGlzIHN0cnVjdHVyZWQgKGhhcyBjaGlsZHJlbiksIGEgaGFuZGxlIGlzIHByb3ZpZGVkIHRvIHJldHJpZXZlIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSBWYXJpYWJsZXNSZXF1ZXN0LlxuXHRcdElmIHRoZSBudW1iZXIgb2YgbmFtZWQgb3IgaW5kZXhlZCBjaGlsZHJlbiBpcyBsYXJnZSwgdGhlIG51bWJlcnMgc2hvdWxkIGJlIHJldHVybmVkIHZpYSB0aGUgb3B0aW9uYWwgJ25hbWVkVmFyaWFibGVzJyBhbmQgJ2luZGV4ZWRWYXJpYWJsZXMnIGF0dHJpYnV0ZXMuXG5cdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgY2hpbGRyZW4gaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGUge1xuXHRcdC8qKiBUaGUgdmFyaWFibGUncyBuYW1lLiAqL1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHQvKiogVGhlIHZhcmlhYmxlJ3MgdmFsdWUuIFRoaXMgY2FuIGJlIGEgbXVsdGktbGluZSB0ZXh0LCBlLmcuIGZvciBhIGZ1bmN0aW9uIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24uICovXG5cdFx0dmFsdWU6IHN0cmluZztcblx0XHQvKiogVGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlJ3MgdmFsdWUuIFR5cGljYWxseSBzaG93biBpbiB0aGUgVUkgd2hlbiBob3ZlcmluZyBvdmVyIHRoZSB2YWx1ZS5cblx0XHRcdFRoaXMgYXR0cmlidXRlIHNob3VsZCBvbmx5IGJlIHJldHVybmVkIGJ5IGEgZGVidWcgYWRhcHRlciBpZiB0aGUgY2xpZW50IGhhcyBwYXNzZWQgdGhlIHZhbHVlIHRydWUgZm9yIHRoZSAnc3VwcG9ydHNWYXJpYWJsZVR5cGUnIGNhcGFiaWxpdHkgb2YgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0LlxuXHRcdCovXG5cdFx0dHlwZT86IHN0cmluZztcblx0XHQvKiogUHJvcGVydGllcyBvZiBhIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGhvdyB0byByZW5kZXIgdGhlIHZhcmlhYmxlIGluIHRoZSBVSS4gKi9cblx0XHRwcmVzZW50YXRpb25IaW50PzogVmFyaWFibGVQcmVzZW50YXRpb25IaW50O1xuXHRcdC8qKiBPcHRpb25hbCBldmFsdWF0YWJsZSBuYW1lIG9mIHRoaXMgdmFyaWFibGUgd2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgJ0V2YWx1YXRlUmVxdWVzdCcgdG8gZmV0Y2ggdGhlIHZhcmlhYmxlJ3MgdmFsdWUuICovXG5cdFx0ZXZhbHVhdGVOYW1lPzogc3RyaW5nO1xuXHRcdC8qKiBJZiB2YXJpYWJsZXNSZWZlcmVuY2UgaXMgPiAwLCB0aGUgdmFyaWFibGUgaXMgc3RydWN0dXJlZCBhbmQgaXRzIGNoaWxkcmVuIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuICovXG5cdFx0dmFyaWFibGVzUmVmZXJlbmNlOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgY2hpbGRyZW4gaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0Ki9cblx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHQvKiogVGhlIG51bWJlciBvZiBpbmRleGVkIGNoaWxkIHZhcmlhYmxlcy5cblx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIGNoaWxkcmVuIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdCovXG5cdFx0aW5kZXhlZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgbWVtb3J5IHJlZmVyZW5jZSBmb3IgdGhlIHZhcmlhYmxlIGlmIHRoZSB2YXJpYWJsZSByZXByZXNlbnRzIGV4ZWN1dGFibGUgY29kZSwgc3VjaCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuXG5cdFx0XHRUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZSBjbGllbnQgaGFzIHBhc3NlZCB0aGUgdmFsdWUgdHJ1ZSBmb3IgdGhlICdzdXBwb3J0c01lbW9yeVJlZmVyZW5jZXMnIGNhcGFiaWxpdHkgb2YgdGhlICdpbml0aWFsaXplJyByZXF1ZXN0LlxuXHRcdCovXG5cdFx0bWVtb3J5UmVmZXJlbmNlPzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIE9wdGlvbmFsIHByb3BlcnRpZXMgb2YgYSB2YXJpYWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBob3cgdG8gcmVuZGVyIHRoZSB2YXJpYWJsZSBpbiB0aGUgVUkuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVQcmVzZW50YXRpb25IaW50IHtcblx0XHQvKiogVGhlIGtpbmQgb2YgdmFyaWFibGUuIEJlZm9yZSBpbnRyb2R1Y2luZyBhZGRpdGlvbmFsIHZhbHVlcywgdHJ5IHRvIHVzZSB0aGUgbGlzdGVkIHZhbHVlcy5cblx0XHRcdFZhbHVlczogXG5cdFx0XHQncHJvcGVydHknOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgcHJvcGVydHkuXG5cdFx0XHQnbWV0aG9kJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhIG1ldGhvZC5cblx0XHRcdCdjbGFzcyc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgYSBjbGFzcy5cblx0XHRcdCdkYXRhJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBkYXRhLlxuXHRcdFx0J2V2ZW50JzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhbiBldmVudC5cblx0XHRcdCdiYXNlQ2xhc3MnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgYmFzZSBjbGFzcy5cblx0XHRcdCdpbm5lckNsYXNzJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhbiBpbm5lciBjbGFzcy5cblx0XHRcdCdpbnRlcmZhY2UnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGFuIGludGVyZmFjZS5cblx0XHRcdCdtb3N0RGVyaXZlZENsYXNzJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyB0aGUgbW9zdCBkZXJpdmVkIGNsYXNzLlxuXHRcdFx0J3ZpcnR1YWwnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHZpcnR1YWwsIHRoYXQgbWVhbnMgaXQgaXMgYSBzeW50aGV0aWMgb2JqZWN0IGludHJvZHVjZWRieSB0aGVcblx0XHRcdGFkYXB0ZXIgZm9yIHJlbmRlcmluZyBwdXJwb3NlcywgZS5nLiBhbiBpbmRleCByYW5nZSBmb3IgbGFyZ2UgYXJyYXlzLlxuXHRcdFx0J2RhdGFCcmVha3BvaW50JzogSW5kaWNhdGVzIHRoYXQgYSBkYXRhIGJyZWFrcG9pbnQgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIG9iamVjdC5cblx0XHRcdGV0Yy5cblx0XHQqL1xuXHRcdGtpbmQ/OiBzdHJpbmc7XG5cdFx0LyoqIFNldCBvZiBhdHRyaWJ1dGVzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIHN0cmluZ3MuIEJlZm9yZSBpbnRyb2R1Y2luZyBhZGRpdGlvbmFsIHZhbHVlcywgdHJ5IHRvIHVzZSB0aGUgbGlzdGVkIHZhbHVlcy5cblx0XHRcdFZhbHVlczogXG5cdFx0XHQnc3RhdGljJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBzdGF0aWMuXG5cdFx0XHQnY29uc3RhbnQnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgY29uc3RhbnQuXG5cdFx0XHQncmVhZE9ubHknOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJlYWQgb25seS5cblx0XHRcdCdyYXdTdHJpbmcnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgcmF3IHN0cmluZy5cblx0XHRcdCdoYXNPYmplY3RJZCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgY2FuIGhhdmUgYW4gT2JqZWN0IElEIGNyZWF0ZWQgZm9yIGl0LlxuXHRcdFx0J2NhbkhhdmVPYmplY3RJZCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaGFzIGFuIE9iamVjdCBJRCBhc3NvY2lhdGVkIHdpdGggaXQuXG5cdFx0XHQnaGFzU2lkZUVmZmVjdHMnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZXZhbHVhdGlvbiBoYWQgc2lkZSBlZmZlY3RzLlxuXHRcdFx0ZXRjLlxuXHRcdCovXG5cdFx0YXR0cmlidXRlcz86IHN0cmluZ1tdO1xuXHRcdC8qKiBWaXNpYmlsaXR5IG9mIHZhcmlhYmxlLiBCZWZvcmUgaW50cm9kdWNpbmcgYWRkaXRpb25hbCB2YWx1ZXMsIHRyeSB0byB1c2UgdGhlIGxpc3RlZCB2YWx1ZXMuXG5cdFx0XHRWYWx1ZXM6ICdwdWJsaWMnLCAncHJpdmF0ZScsICdwcm90ZWN0ZWQnLCAnaW50ZXJuYWwnLCAnZmluYWwnLCBldGMuXG5cdFx0Ki9cblx0XHR2aXNpYmlsaXR5Pzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFByb3BlcnRpZXMgb2YgYSBicmVha3BvaW50IGxvY2F0aW9uIHJldHVybmVkIGZyb20gdGhlICdicmVha3BvaW50TG9jYXRpb25zJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEJyZWFrcG9pbnRMb2NhdGlvbiB7XG5cdFx0LyoqIFN0YXJ0IGxpbmUgb2YgYnJlYWtwb2ludCBsb2NhdGlvbi4gKi9cblx0XHRsaW5lOiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIHN0YXJ0IGNvbHVtbiBvZiBicmVha3BvaW50IGxvY2F0aW9uLiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZW5kIGxpbmUgb2YgYnJlYWtwb2ludCBsb2NhdGlvbiBpZiB0aGUgbG9jYXRpb24gY292ZXJzIGEgcmFuZ2UuICovXG5cdFx0ZW5kTGluZT86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZW5kIGNvbHVtbiBvZiBicmVha3BvaW50IGxvY2F0aW9uIGlmIHRoZSBsb2NhdGlvbiBjb3ZlcnMgYSByYW5nZS4gKi9cblx0XHRlbmRDb2x1bW4/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogUHJvcGVydGllcyBvZiBhIGJyZWFrcG9pbnQgb3IgbG9ncG9pbnQgcGFzc2VkIHRvIHRoZSBzZXRCcmVha3BvaW50cyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNvdXJjZUJyZWFrcG9pbnQge1xuXHRcdC8qKiBUaGUgc291cmNlIGxpbmUgb2YgdGhlIGJyZWFrcG9pbnQgb3IgbG9ncG9pbnQuICovXG5cdFx0bGluZTogbnVtYmVyO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBzb3VyY2UgY29sdW1uIG9mIHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiBmb3IgY29uZGl0aW9uYWwgYnJlYWtwb2ludHMuXG5cdFx0XHRJdCBpcyBvbmx5IGhvbm9yZWQgYnkgYSBkZWJ1ZyBhZGFwdGVyIGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0NvbmRpdGlvbmFsQnJlYWtwb2ludHMnIGlzIHRydWUuXG5cdFx0Ki9cblx0XHRjb25kaXRpb24/OiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGV4cHJlc3Npb24gdGhhdCBjb250cm9scyBob3cgbWFueSBoaXRzIG9mIHRoZSBicmVha3BvaW50IGFyZSBpZ25vcmVkLlxuXHRcdFx0VGhlIGJhY2tlbmQgaXMgZXhwZWN0ZWQgdG8gaW50ZXJwcmV0IHRoZSBleHByZXNzaW9uIGFzIG5lZWRlZC5cblx0XHRcdFRoZSBhdHRyaWJ1dGUgaXMgb25seSBob25vcmVkIGJ5IGEgZGVidWcgYWRhcHRlciBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNIaXRDb25kaXRpb25hbEJyZWFrcG9pbnRzJyBpcyB0cnVlLlxuXHRcdCovXG5cdFx0aGl0Q29uZGl0aW9uPzogc3RyaW5nO1xuXHRcdC8qKiBJZiB0aGlzIGF0dHJpYnV0ZSBleGlzdHMgYW5kIGlzIG5vbi1lbXB0eSwgdGhlIGJhY2tlbmQgbXVzdCBub3QgJ2JyZWFrJyAoc3RvcClcblx0XHRcdGJ1dCBsb2cgdGhlIG1lc3NhZ2UgaW5zdGVhZC4gRXhwcmVzc2lvbnMgd2l0aGluIHt9IGFyZSBpbnRlcnBvbGF0ZWQuXG5cdFx0XHRUaGUgYXR0cmlidXRlIGlzIG9ubHkgaG9ub3JlZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzTG9nUG9pbnRzJyBpcyB0cnVlLlxuXHRcdCovXG5cdFx0bG9nTWVzc2FnZT86IHN0cmluZztcblx0fVxuXG5cdC8qKiBQcm9wZXJ0aWVzIG9mIGEgYnJlYWtwb2ludCBwYXNzZWQgdG8gdGhlIHNldEZ1bmN0aW9uQnJlYWtwb2ludHMgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkJyZWFrcG9pbnQge1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24uICovXG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBleHByZXNzaW9uIGZvciBjb25kaXRpb25hbCBicmVha3BvaW50cy5cblx0XHRcdEl0IGlzIG9ubHkgaG9ub3JlZCBieSBhIGRlYnVnIGFkYXB0ZXIgaWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzQ29uZGl0aW9uYWxCcmVha3BvaW50cycgaXMgdHJ1ZS5cblx0XHQqL1xuXHRcdGNvbmRpdGlvbj86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGNvbnRyb2xzIGhvdyBtYW55IGhpdHMgb2YgdGhlIGJyZWFrcG9pbnQgYXJlIGlnbm9yZWQuXG5cdFx0XHRUaGUgYmFja2VuZCBpcyBleHBlY3RlZCB0byBpbnRlcnByZXQgdGhlIGV4cHJlc3Npb24gYXMgbmVlZGVkLlxuXHRcdFx0VGhlIGF0dHJpYnV0ZSBpcyBvbmx5IGhvbm9yZWQgYnkgYSBkZWJ1ZyBhZGFwdGVyIGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0hpdENvbmRpdGlvbmFsQnJlYWtwb2ludHMnIGlzIHRydWUuXG5cdFx0Ki9cblx0XHRoaXRDb25kaXRpb24/OiBzdHJpbmc7XG5cdH1cblxuXHQvKiogVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBhY2Nlc3MgdHlwZXMgZm9yIGRhdGEgYnJlYWtwb2ludHMuICovXG5cdGV4cG9ydCB0eXBlIERhdGFCcmVha3BvaW50QWNjZXNzVHlwZSA9ICdyZWFkJyB8ICd3cml0ZScgfCAncmVhZFdyaXRlJztcblxuXHQvKiogUHJvcGVydGllcyBvZiBhIGRhdGEgYnJlYWtwb2ludCBwYXNzZWQgdG8gdGhlIHNldERhdGFCcmVha3BvaW50cyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERhdGFCcmVha3BvaW50IHtcblx0XHQvKiogQW4gaWQgcmVwcmVzZW50aW5nIHRoZSBkYXRhLiBUaGlzIGlkIGlzIHJldHVybmVkIGZyb20gdGhlIGRhdGFCcmVha3BvaW50SW5mbyByZXF1ZXN0LiAqL1xuXHRcdGRhdGFJZDogc3RyaW5nO1xuXHRcdC8qKiBUaGUgYWNjZXNzIHR5cGUgb2YgdGhlIGRhdGEuICovXG5cdFx0YWNjZXNzVHlwZT86IERhdGFCcmVha3BvaW50QWNjZXNzVHlwZTtcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiBmb3IgY29uZGl0aW9uYWwgYnJlYWtwb2ludHMuICovXG5cdFx0Y29uZGl0aW9uPzogc3RyaW5nO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBleHByZXNzaW9uIHRoYXQgY29udHJvbHMgaG93IG1hbnkgaGl0cyBvZiB0aGUgYnJlYWtwb2ludCBhcmUgaWdub3JlZC5cblx0XHRcdFRoZSBiYWNrZW5kIGlzIGV4cGVjdGVkIHRvIGludGVycHJldCB0aGUgZXhwcmVzc2lvbiBhcyBuZWVkZWQuXG5cdFx0Ki9cblx0XHRoaXRDb25kaXRpb24/OiBzdHJpbmc7XG5cdH1cblxuXHQvKiogUHJvcGVydGllcyBvZiBhIGJyZWFrcG9pbnQgcGFzc2VkIHRvIHRoZSBzZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3QgKi9cblx0ZXhwb3J0IGludGVyZmFjZSBJbnN0cnVjdGlvbkJyZWFrcG9pbnQge1xuXHRcdC8qKiBUaGUgaW5zdHJ1Y3Rpb24gcmVmZXJlbmNlIG9mIHRoZSBicmVha3BvaW50LlxuXHRcdFx0VGhpcyBzaG91bGQgYmUgYSBtZW1vcnkgb3IgaW5zdHJ1Y3Rpb24gcG9pbnRlciByZWZlcmVuY2UgZnJvbSBhbiBFdmFsdWF0ZVJlc3BvbnNlLCBWYXJpYWJsZSwgU3RhY2tGcmFtZSwgR290b1RhcmdldCwgb3IgQnJlYWtwb2ludC5cblx0XHQqL1xuXHRcdGluc3RydWN0aW9uUmVmZXJlbmNlOiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIG9mZnNldCBmcm9tIHRoZSBpbnN0cnVjdGlvbiByZWZlcmVuY2UuXG5cdFx0XHRUaGlzIGNhbiBiZSBuZWdhdGl2ZS5cblx0XHQqL1xuXHRcdG9mZnNldD86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiBmb3IgY29uZGl0aW9uYWwgYnJlYWtwb2ludHMuXG5cdFx0XHRJdCBpcyBvbmx5IGhvbm9yZWQgYnkgYSBkZWJ1ZyBhZGFwdGVyIGlmIHRoZSBjYXBhYmlsaXR5ICdzdXBwb3J0c0NvbmRpdGlvbmFsQnJlYWtwb2ludHMnIGlzIHRydWUuXG5cdFx0Ki9cblx0XHRjb25kaXRpb24/OiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGV4cHJlc3Npb24gdGhhdCBjb250cm9scyBob3cgbWFueSBoaXRzIG9mIHRoZSBicmVha3BvaW50IGFyZSBpZ25vcmVkLlxuXHRcdFx0VGhlIGJhY2tlbmQgaXMgZXhwZWN0ZWQgdG8gaW50ZXJwcmV0IHRoZSBleHByZXNzaW9uIGFzIG5lZWRlZC5cblx0XHRcdFRoZSBhdHRyaWJ1dGUgaXMgb25seSBob25vcmVkIGJ5IGEgZGVidWcgYWRhcHRlciBpZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNIaXRDb25kaXRpb25hbEJyZWFrcG9pbnRzJyBpcyB0cnVlLlxuXHRcdCovXG5cdFx0aGl0Q29uZGl0aW9uPzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIEluZm9ybWF0aW9uIGFib3V0IGEgQnJlYWtwb2ludCBjcmVhdGVkIGluIHNldEJyZWFrcG9pbnRzLCBzZXRGdW5jdGlvbkJyZWFrcG9pbnRzLCBzZXRJbnN0cnVjdGlvbkJyZWFrcG9pbnRzLCBvciBzZXREYXRhQnJlYWtwb2ludHMuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludCB7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBicmVha3BvaW50LiBJdCBpcyBuZWVkZWQgaWYgYnJlYWtwb2ludCBldmVudHMgYXJlIHVzZWQgdG8gdXBkYXRlIG9yIHJlbW92ZSBicmVha3BvaW50cy4gKi9cblx0XHRpZD86IG51bWJlcjtcblx0XHQvKiogSWYgdHJ1ZSBicmVha3BvaW50IGNvdWxkIGJlIHNldCAoYnV0IG5vdCBuZWNlc3NhcmlseSBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbikuICovXG5cdFx0dmVyaWZpZWQ6IGJvb2xlYW47XG5cdFx0LyoqIEFuIG9wdGlvbmFsIG1lc3NhZ2UgYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBicmVha3BvaW50LlxuXHRcdFx0VGhpcyBpcyBzaG93biB0byB0aGUgdXNlciBhbmQgY2FuIGJlIHVzZWQgdG8gZXhwbGFpbiB3aHkgYSBicmVha3BvaW50IGNvdWxkIG5vdCBiZSB2ZXJpZmllZC5cblx0XHQqL1xuXHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBzb3VyY2Ugd2hlcmUgdGhlIGJyZWFrcG9pbnQgaXMgbG9jYXRlZC4gKi9cblx0XHRzb3VyY2U/OiBTb3VyY2U7XG5cdFx0LyoqIFRoZSBzdGFydCBsaW5lIG9mIHRoZSBhY3R1YWwgcmFuZ2UgY292ZXJlZCBieSB0aGUgYnJlYWtwb2ludC4gKi9cblx0XHRsaW5lPzogbnVtYmVyO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBzdGFydCBjb2x1bW4gb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZW5kIGxpbmUgb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGVuZExpbmU/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGVuZCBjb2x1bW4gb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LlxuXHRcdFx0SWYgbm8gZW5kIGxpbmUgaXMgZ2l2ZW4sIHRoZW4gdGhlIGVuZCBjb2x1bW4gaXMgYXNzdW1lZCB0byBiZSBpbiB0aGUgc3RhcnQgbGluZS5cblx0XHQqL1xuXHRcdGVuZENvbHVtbj86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgbWVtb3J5IHJlZmVyZW5jZSB0byB3aGVyZSB0aGUgYnJlYWtwb2ludCBpcyBzZXQuICovXG5cdFx0aW5zdHJ1Y3Rpb25SZWZlcmVuY2U/OiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIG9mZnNldCBmcm9tIHRoZSBpbnN0cnVjdGlvbiByZWZlcmVuY2UuXG5cdFx0XHRUaGlzIGNhbiBiZSBuZWdhdGl2ZS5cblx0XHQqL1xuXHRcdG9mZnNldD86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBUaGUgZ3JhbnVsYXJpdHkgb2Ygb25lICdzdGVwJyBpbiB0aGUgc3RlcHBpbmcgcmVxdWVzdHMgJ25leHQnLCAnc3RlcEluJywgJ3N0ZXBPdXQnLCBhbmQgJ3N0ZXBCYWNrJy5cblx0XHQnc3RhdGVtZW50JzogVGhlIHN0ZXAgc2hvdWxkIGFsbG93IHRoZSBwcm9ncmFtIHRvIHJ1biB1bnRpbCB0aGUgY3VycmVudCBzdGF0ZW1lbnQgaGFzIGZpbmlzaGVkIGV4ZWN1dGluZy5cblx0XHRUaGUgbWVhbmluZyBvZiBhIHN0YXRlbWVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhZGFwdGVyIGFuZCBpdCBtYXkgYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IHRvIGEgbGluZS5cblx0XHRGb3IgZXhhbXBsZSAnZm9yKGludCBpID0gMDsgaSA8IDEwOyBpKyspIGNvdWxkIGJlIGNvbnNpZGVyZWQgdG8gaGF2ZSAzIHN0YXRlbWVudHMgJ2ludCBpID0gMCcsICdpIDwgMTAnLCBhbmQgJ2krKycuXG5cdFx0J2xpbmUnOiBUaGUgc3RlcCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW0gdG8gcnVuIHVudGlsIHRoZSBjdXJyZW50IHNvdXJjZSBsaW5lIGhhcyBleGVjdXRlZC5cblx0XHQnaW5zdHJ1Y3Rpb24nOiBUaGUgc3RlcCBzaG91bGQgYWxsb3cgb25lIGluc3RydWN0aW9uIHRvIGV4ZWN1dGUgKGUuZy4gb25lIHg4NiBpbnN0cnVjdGlvbikuXG5cdCovXG5cdGV4cG9ydCB0eXBlIFN0ZXBwaW5nR3JhbnVsYXJpdHkgPSAnc3RhdGVtZW50JyB8ICdsaW5lJyB8ICdpbnN0cnVjdGlvbic7XG5cblx0LyoqIEEgU3RlcEluVGFyZ2V0IGNhbiBiZSB1c2VkIGluIHRoZSAnc3RlcEluJyByZXF1ZXN0IGFuZCBkZXRlcm1pbmVzIGludG8gd2hpY2ggc2luZ2xlIHRhcmdldCB0aGUgc3RlcEluIHJlcXVlc3Qgc2hvdWxkIHN0ZXAuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluVGFyZ2V0IHtcblx0XHQvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgc3RlcEluIHRhcmdldC4gKi9cblx0XHRpZDogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgc3RlcEluIHRhcmdldCAoc2hvd24gaW4gdGhlIFVJKS4gKi9cblx0XHRsYWJlbDogc3RyaW5nO1xuXHR9XG5cblx0LyoqIEEgR290b1RhcmdldCBkZXNjcmliZXMgYSBjb2RlIGxvY2F0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSB0YXJnZXQgaW4gdGhlICdnb3RvJyByZXF1ZXN0LlxuXHRcdFRoZSBwb3NzaWJsZSBnb3RvIHRhcmdldHMgY2FuIGJlIGRldGVybWluZWQgdmlhIHRoZSAnZ290b1RhcmdldHMnIHJlcXVlc3QuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b1RhcmdldCB7XG5cdFx0LyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGdvdG8gdGFyZ2V0LiBUaGlzIGlzIHVzZWQgaW4gdGhlIGdvdG8gcmVxdWVzdC4gKi9cblx0XHRpZDogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgZ290byB0YXJnZXQgKHNob3duIGluIHRoZSBVSSkuICovXG5cdFx0bGFiZWw6IHN0cmluZztcblx0XHQvKiogVGhlIGxpbmUgb2YgdGhlIGdvdG8gdGFyZ2V0LiAqL1xuXHRcdGxpbmU6IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgY29sdW1uIG9mIHRoZSBnb3RvIHRhcmdldC4gKi9cblx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGVuZCBsaW5lIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBnb3RvIHRhcmdldC4gKi9cblx0XHRlbmRMaW5lPzogbnVtYmVyO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBlbmQgY29sdW1uIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBnb3RvIHRhcmdldC4gKi9cblx0XHRlbmRDb2x1bW4/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIG1lbW9yeSByZWZlcmVuY2UgZm9yIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIHZhbHVlIHJlcHJlc2VudGVkIGJ5IHRoaXMgdGFyZ2V0LiAqL1xuXHRcdGluc3RydWN0aW9uUG9pbnRlclJlZmVyZW5jZT86IHN0cmluZztcblx0fVxuXG5cdC8qKiBDb21wbGV0aW9uSXRlbXMgYXJlIHRoZSBzdWdnZXN0aW9ucyByZXR1cm5lZCBmcm9tIHRoZSBDb21wbGV0aW9uc1JlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGlvbkl0ZW0ge1xuXHRcdC8qKiBUaGUgbGFiZWwgb2YgdGhpcyBjb21wbGV0aW9uIGl0ZW0uIEJ5IGRlZmF1bHQgdGhpcyBpcyBhbHNvIHRoZSB0ZXh0IHRoYXQgaXMgaW5zZXJ0ZWQgd2hlbiBzZWxlY3RpbmcgdGhpcyBjb21wbGV0aW9uLiAqL1xuXHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0LyoqIElmIHRleHQgaXMgbm90IGZhbHN5IHRoZW4gaXQgaXMgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0aGUgbGFiZWwuICovXG5cdFx0dGV4dD86IHN0cmluZztcblx0XHQvKiogQSBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGNvbXBhcmluZyB0aGlzIGl0ZW0gd2l0aCBvdGhlciBpdGVtcy4gV2hlbiBgZmFsc3lgIHRoZSBsYWJlbCBpcyB1c2VkLiAqL1xuXHRcdHNvcnRUZXh0Pzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgaXRlbSdzIHR5cGUuIFR5cGljYWxseSB0aGUgY2xpZW50IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byByZW5kZXIgdGhlIGl0ZW0gaW4gdGhlIFVJIHdpdGggYW4gaWNvbi4gKi9cblx0XHR0eXBlPzogQ29tcGxldGlvbkl0ZW1UeXBlO1xuXHRcdC8qKiBUaGlzIHZhbHVlIGRldGVybWluZXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgQ29tcGxldGlvbnNSZXF1ZXN0J3MgJ3RleHQnIGF0dHJpYnV0ZSkgd2hlcmUgdGhlIGNvbXBsZXRpb24gdGV4dCBpcyBhZGRlZC5cblx0XHRcdElmIG1pc3NpbmcgdGhlIHRleHQgaXMgYWRkZWQgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGUgQ29tcGxldGlvbnNSZXF1ZXN0J3MgJ2NvbHVtbicgYXR0cmlidXRlLlxuXHRcdCovXG5cdFx0c3RhcnQ/OiBudW1iZXI7XG5cdFx0LyoqIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZSBvdmVyd3JpdHRlbiBieSB0aGUgY29tcGxldGlvbiB0ZXh0LlxuXHRcdFx0SWYgbWlzc2luZyB0aGUgdmFsdWUgMCBpcyBhc3N1bWVkIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGNvbXBsZXRpb24gdGV4dCBiZWluZyBpbnNlcnRlZC5cblx0XHQqL1xuXHRcdGxlbmd0aD86IG51bWJlcjtcblx0XHQvKiogRGV0ZXJtaW5lcyB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gYWZ0ZXIgdGhlIHRleHQgaGFzIGJlZW4gaW5zZXJ0ZWQgKG9yIHJlcGxhY2VkKS5cblx0XHRcdFRoZSBzdGFydCBwb3NpdGlvbiBtdXN0IGluIHRoZSByYW5nZSAwIGFuZCBsZW5ndGggb2YgdGhlIGNvbXBsZXRpb24gdGV4dC5cblx0XHRcdElmIG9taXR0ZWQgdGhlIHNlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGVuZCBvZiB0aGUgY29tcGxldGlvbiB0ZXh0LlxuXHRcdCovXG5cdFx0c2VsZWN0aW9uU3RhcnQ/OiBudW1iZXI7XG5cdFx0LyoqIERldGVybWluZXMgdGhlIGxlbmd0aCBvZiB0aGUgbmV3IHNlbGVjdGlvbiBhZnRlciB0aGUgdGV4dCBoYXMgYmVlbiBpbnNlcnRlZCAob3IgcmVwbGFjZWQpLlxuXHRcdFx0VGhlIHNlbGVjdGlvbiBjYW4gbm90IGV4dGVuZCBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0aGUgY29tcGxldGlvbiB0ZXh0LlxuXHRcdFx0SWYgb21pdHRlZCB0aGUgbGVuZ3RoIGlzIGFzc3VtZWQgdG8gYmUgMC5cblx0XHQqL1xuXHRcdHNlbGVjdGlvbkxlbmd0aD86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBTb21lIHByZWRlZmluZWQgdHlwZXMgZm9yIHRoZSBDb21wbGV0aW9uSXRlbS4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIGNsaWVudHMgaGF2ZSBzcGVjaWZpYyBpY29ucyBmb3IgYWxsIG9mIHRoZW0uICovXG5cdGV4cG9ydCB0eXBlIENvbXBsZXRpb25JdGVtVHlwZSA9ICdtZXRob2QnIHwgJ2Z1bmN0aW9uJyB8ICdjb25zdHJ1Y3RvcicgfCAnZmllbGQnIHwgJ3ZhcmlhYmxlJyB8ICdjbGFzcycgfCAnaW50ZXJmYWNlJyB8ICdtb2R1bGUnIHwgJ3Byb3BlcnR5JyB8ICd1bml0JyB8ICd2YWx1ZScgfCAnZW51bScgfCAna2V5d29yZCcgfCAnc25pcHBldCcgfCAndGV4dCcgfCAnY29sb3InIHwgJ2ZpbGUnIHwgJ3JlZmVyZW5jZScgfCAnY3VzdG9tY29sb3InO1xuXG5cdC8qKiBOYW1lcyBvZiBjaGVja3N1bSBhbGdvcml0aG1zIHRoYXQgbWF5IGJlIHN1cHBvcnRlZCBieSBhIGRlYnVnIGFkYXB0ZXIuICovXG5cdGV4cG9ydCB0eXBlIENoZWNrc3VtQWxnb3JpdGhtID0gJ01ENScgfCAnU0hBMScgfCAnU0hBMjU2JyB8ICd0aW1lc3RhbXAnO1xuXG5cdC8qKiBUaGUgY2hlY2tzdW0gb2YgYW4gaXRlbSBjYWxjdWxhdGVkIGJ5IHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENoZWNrc3VtIHtcblx0XHQvKiogVGhlIGFsZ29yaXRobSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGlzIGNoZWNrc3VtLiAqL1xuXHRcdGFsZ29yaXRobTogQ2hlY2tzdW1BbGdvcml0aG07XG5cdFx0LyoqIFZhbHVlIG9mIHRoZSBjaGVja3N1bS4gKi9cblx0XHRjaGVja3N1bTogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFByb3ZpZGVzIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gZm9yIGEgdmFsdWUuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtYXQge1xuXHRcdC8qKiBEaXNwbGF5IHRoZSB2YWx1ZSBpbiBoZXguICovXG5cdFx0aGV4PzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBQcm92aWRlcyBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIGZvciBhIHN0YWNrIGZyYW1lLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0YWNrRnJhbWVGb3JtYXQgZXh0ZW5kcyBWYWx1ZUZvcm1hdCB7XG5cdFx0LyoqIERpc3BsYXlzIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJzPzogYm9vbGVhbjtcblx0XHQvKiogRGlzcGxheXMgdGhlIHR5cGVzIG9mIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJUeXBlcz86IGJvb2xlYW47XG5cdFx0LyoqIERpc3BsYXlzIHRoZSBuYW1lcyBvZiBwYXJhbWV0ZXJzIGZvciB0aGUgc3RhY2sgZnJhbWUuICovXG5cdFx0cGFyYW1ldGVyTmFtZXM/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJWYWx1ZXM/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGxpbmU/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgbW9kdWxlIG9mIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRtb2R1bGU/OiBib29sZWFuO1xuXHRcdC8qKiBJbmNsdWRlcyBhbGwgc3RhY2sgZnJhbWVzLCBpbmNsdWRpbmcgdGhvc2UgdGhlIGRlYnVnIGFkYXB0ZXIgbWlnaHQgb3RoZXJ3aXNlIGhpZGUuICovXG5cdFx0aW5jbHVkZUFsbD86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogQW4gRXhjZXB0aW9uT3B0aW9ucyBhc3NpZ25zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBhIHNldCBvZiBleGNlcHRpb25zLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbk9wdGlvbnMge1xuXHRcdC8qKiBBIHBhdGggdGhhdCBzZWxlY3RzIGEgc2luZ2xlIG9yIG11bHRpcGxlIGV4Y2VwdGlvbnMgaW4gYSB0cmVlLiBJZiAncGF0aCcgaXMgbWlzc2luZywgdGhlIHdob2xlIHRyZWUgaXMgc2VsZWN0ZWQuXG5cdFx0XHRCeSBjb252ZW50aW9uIHRoZSBmaXJzdCBzZWdtZW50IG9mIHRoZSBwYXRoIGlzIGEgY2F0ZWdvcnkgdGhhdCBpcyB1c2VkIHRvIGdyb3VwIGV4Y2VwdGlvbnMgaW4gdGhlIFVJLlxuXHRcdCovXG5cdFx0cGF0aD86IEV4Y2VwdGlvblBhdGhTZWdtZW50W107XG5cdFx0LyoqIENvbmRpdGlvbiB3aGVuIGEgdGhyb3duIGV4Y2VwdGlvbiBzaG91bGQgcmVzdWx0IGluIGEgYnJlYWsuICovXG5cdFx0YnJlYWtNb2RlOiBFeGNlcHRpb25CcmVha01vZGU7XG5cdH1cblxuXHQvKiogVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBjb25kaXRpb25zIHdoZW4gYSB0aHJvd24gZXhjZXB0aW9uIHNob3VsZCByZXN1bHQgaW4gYSBicmVhay5cblx0XHRuZXZlcjogbmV2ZXIgYnJlYWtzLFxuXHRcdGFsd2F5czogYWx3YXlzIGJyZWFrcyxcblx0XHR1bmhhbmRsZWQ6IGJyZWFrcyB3aGVuIGV4Y2VwdGlvbiB1bmhhbmRsZWQsXG5cdFx0dXNlclVuaGFuZGxlZDogYnJlYWtzIGlmIHRoZSBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYnkgdXNlciBjb2RlLlxuXHQqL1xuXHRleHBvcnQgdHlwZSBFeGNlcHRpb25CcmVha01vZGUgPSAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAndW5oYW5kbGVkJyB8ICd1c2VyVW5oYW5kbGVkJztcblxuXHQvKiogQW4gRXhjZXB0aW9uUGF0aFNlZ21lbnQgcmVwcmVzZW50cyBhIHNlZ21lbnQgaW4gYSBwYXRoIHRoYXQgaXMgdXNlZCB0byBtYXRjaCBsZWFmcyBvciBub2RlcyBpbiBhIHRyZWUgb2YgZXhjZXB0aW9ucy5cblx0XHRJZiBhIHNlZ21lbnQgY29uc2lzdHMgb2YgbW9yZSB0aGFuIG9uZSBuYW1lLCBpdCBtYXRjaGVzIHRoZSBuYW1lcyBwcm92aWRlZCBpZiAnbmVnYXRlJyBpcyBmYWxzZSBvciBtaXNzaW5nIG9yXG5cdFx0aXQgbWF0Y2hlcyBhbnl0aGluZyBleGNlcHQgdGhlIG5hbWVzIHByb3ZpZGVkIGlmICduZWdhdGUnIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uUGF0aFNlZ21lbnQge1xuXHRcdC8qKiBJZiBmYWxzZSBvciBtaXNzaW5nIHRoaXMgc2VnbWVudCBtYXRjaGVzIHRoZSBuYW1lcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGl0IG1hdGNoZXMgYW55dGhpbmcgZXhjZXB0IHRoZSBuYW1lcyBwcm92aWRlZC4gKi9cblx0XHRuZWdhdGU/OiBib29sZWFuO1xuXHRcdC8qKiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICduZWdhdGUnIHRoZSBuYW1lcyB0aGF0IHNob3VsZCBtYXRjaCBvciBub3QgbWF0Y2guICovXG5cdFx0bmFtZXM6IHN0cmluZ1tdO1xuXHR9XG5cblx0LyoqIERldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4Y2VwdGlvbiB0aGF0IGhhcyBvY2N1cnJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25EZXRhaWxzIHtcblx0XHQvKiogTWVzc2FnZSBjb250YWluZWQgaW4gdGhlIGV4Y2VwdGlvbi4gKi9cblx0XHRtZXNzYWdlPzogc3RyaW5nO1xuXHRcdC8qKiBTaG9ydCB0eXBlIG5hbWUgb2YgdGhlIGV4Y2VwdGlvbiBvYmplY3QuICovXG5cdFx0dHlwZU5hbWU/OiBzdHJpbmc7XG5cdFx0LyoqIEZ1bGx5LXF1YWxpZmllZCB0eXBlIG5hbWUgb2YgdGhlIGV4Y2VwdGlvbiBvYmplY3QuICovXG5cdFx0ZnVsbFR5cGVOYW1lPzogc3RyaW5nO1xuXHRcdC8qKiBPcHRpb25hbCBleHByZXNzaW9uIHRoYXQgY2FuIGJlIGV2YWx1YXRlZCBpbiB0aGUgY3VycmVudCBzY29wZSB0byBvYnRhaW4gdGhlIGV4Y2VwdGlvbiBvYmplY3QuICovXG5cdFx0ZXZhbHVhdGVOYW1lPzogc3RyaW5nO1xuXHRcdC8qKiBTdGFjayB0cmFjZSBhdCB0aGUgdGltZSB0aGUgZXhjZXB0aW9uIHdhcyB0aHJvd24uICovXG5cdFx0c3RhY2tUcmFjZT86IHN0cmluZztcblx0XHQvKiogRGV0YWlscyBvZiB0aGUgZXhjZXB0aW9uIGNvbnRhaW5lZCBieSB0aGlzIGV4Y2VwdGlvbiwgaWYgYW55LiAqL1xuXHRcdGlubmVyRXhjZXB0aW9uPzogRXhjZXB0aW9uRGV0YWlsc1tdO1xuXHR9XG5cblx0LyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgZGlzYXNzZW1ibGVkIGluc3RydWN0aW9uLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Fzc2VtYmxlZEluc3RydWN0aW9uIHtcblx0XHQvKiogVGhlIGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0aW9uLiBUcmVhdGVkIGFzIGEgaGV4IHZhbHVlIGlmIHByZWZpeGVkIHdpdGggJzB4Jywgb3IgYXMgYSBkZWNpbWFsIHZhbHVlIG90aGVyd2lzZS4gKi9cblx0XHRhZGRyZXNzOiBzdHJpbmc7XG5cdFx0LyoqIE9wdGlvbmFsIHJhdyBieXRlcyByZXByZXNlbnRpbmcgdGhlIGluc3RydWN0aW9uIGFuZCBpdHMgb3BlcmFuZHMsIGluIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgZm9ybWF0LiAqL1xuXHRcdGluc3RydWN0aW9uQnl0ZXM/OiBzdHJpbmc7XG5cdFx0LyoqIFRleHQgcmVwcmVzZW50aW5nIHRoZSBpbnN0cnVjdGlvbiBhbmQgaXRzIG9wZXJhbmRzLCBpbiBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGZvcm1hdC4gKi9cblx0XHRpbnN0cnVjdGlvbjogc3RyaW5nO1xuXHRcdC8qKiBOYW1lIG9mIHRoZSBzeW1ib2wgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGluc3RydWN0aW9uLCBpZiBhbnkuICovXG5cdFx0c3ltYm9sPzogc3RyaW5nO1xuXHRcdC8qKiBTb3VyY2UgbG9jYXRpb24gdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIGluc3RydWN0aW9uLCBpZiBhbnkuXG5cdFx0XHRTaG91bGQgYWx3YXlzIGJlIHNldCAoaWYgYXZhaWxhYmxlKSBvbiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gcmV0dXJuZWQsXG5cdFx0XHRidXQgY2FuIGJlIG9taXR0ZWQgYWZ0ZXJ3YXJkcyBpZiB0aGlzIGluc3RydWN0aW9uIG1hcHMgdG8gdGhlIHNhbWUgc291cmNlIGZpbGUgYXMgdGhlIHByZXZpb3VzIGluc3RydWN0aW9uLlxuXHRcdCovXG5cdFx0bG9jYXRpb24/OiBTb3VyY2U7XG5cdFx0LyoqIFRoZSBsaW5lIHdpdGhpbiB0aGUgc291cmNlIGxvY2F0aW9uIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhpcyBpbnN0cnVjdGlvbiwgaWYgYW55LiAqL1xuXHRcdGxpbmU/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBjb2x1bW4gd2l0aGluIHRoZSBsaW5lIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhpcyBpbnN0cnVjdGlvbiwgaWYgYW55LiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogVGhlIGVuZCBsaW5lIG9mIHRoZSByYW5nZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgaW5zdHJ1Y3Rpb24sIGlmIGFueS4gKi9cblx0XHRlbmRMaW5lPzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgZW5kIGNvbHVtbiBvZiB0aGUgcmFuZ2UgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIGluc3RydWN0aW9uLCBpZiBhbnkuICovXG5cdFx0ZW5kQ29sdW1uPzogbnVtYmVyO1xuXHR9XG59XG5cbiJdfQ==
|