@adonoustech/bacon-tax 2.5.28 → 2.5.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -441,7 +441,7 @@ exports.ActionTaxFragments = [
441
441
  {
442
442
  actionTaxSubject: "Disposed Capital Assets",
443
443
  actionTitle: "Disposed Capital Assets",
444
- actionInstructions: `<p>We understand that you've indicated disposing of capital assets during the last tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>
444
+ actionInstructions: `<p>We understand that you've indicated disposing of capital assets during the tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>
445
445
  <p>Please provide the following details at your earliest convenience:</p>
446
446
  <ol>
447
447
  <li><b>Description of each disposed asset:</b> Include the type of asset (e.g., real estate, stocks, bonds).</li>
@@ -467,7 +467,7 @@ exports.ActionTaxFragments = [
467
467
  <li><strong>Any other relevant documents:</strong> This could include additional 1099 forms (like 1099-B if any sales occurred), original investment statements, or anything else that could impact your tax situation.</li>
468
468
  </ol>
469
469
  <p>We understand that gathering these documents may require some time, however, having these readily available will ensure the accuracy and efficiency of your tax preparation process. Your prompt response will be greatly appreciated.</p>
470
- <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact me.</p>`
470
+ <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact us.</p>`
471
471
  },
472
472
  {
473
473
  actionTaxSubject: "Mutual Fund Disposal",
@@ -613,4 +613,4 @@ exports.ActionTaxFragments = [
613
613
  <p>If you have any questions or require clarification, do not hesitate to contact us. Thank you for your prompt attention to this matter.</p>`
614
614
  }
615
615
  ];
616
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCO1FBQ25DLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7K0RBVXVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OzsrREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHFCQUFxQjtRQUN2QyxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0VBU3VEO0tBQzVFO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7UUFDckQsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FFQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7OzttTUFRMks7S0FDaE07SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzJDQWFtQjtLQUN4QztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUU7Ozs7Ozs7O3NIQVE4RjtLQUNuSDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsc0JBQXNCO1FBQ3hDLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsa0JBQWtCLEVBQUU7Ozs7Ozs7O3lLQVFpSjtLQUN0SztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsV0FBVztRQUM3QixXQUFXLEVBQUUsdUJBQXVCO1FBQ3BDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7OzswSkFXa0k7S0FDdko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLFdBQVc7UUFDN0IsV0FBVyxFQUFFLFdBQVc7UUFDeEIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzsrREFjdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFOzs7Ozs7Ozs7OzJDQVVtQjtLQUN4QztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0RBc0J1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNEJBQTRCO1FBQzlDLFdBQVcsRUFBRSw0QkFBNEI7UUFDekMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0pBK0IwSDtLQUMvSTtDQWlCRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFjdGlvblRheEZyYWdtZW50cyA9IFtcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgUHJvdmlkZSBQcmlvciBZZWFyIFRheCBSZXR1cm5zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgcmVxdWlyZSB5b3VyIGFzc2lzdGFuY2UgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3MuIE9uZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHlvdXIgPHN0cm9uZz5QcmlvciBZZWFyIFRheCBSZXR1cm5zPC9zdHJvbmc+LiBUaGlzIGRvY3VtZW50IGlzIGVzc2VudGlhbCBmb3Igc2V2ZXJhbCByZWFzb25zLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiB2ZXJpZnlpbmcgY2FycnktZm9yd2FyZCBhbW91bnRzLCBjb21wYXJpbmcgeWVhci1vdmVyLXllYXIgaW5jb21lIGFuZCBkZWR1Y3Rpb25zLCBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIHRheCBsYXdzLjwvcD5cclxuICAgIDxwPlRvIGZhY2lsaXRhdGUgeW91ciB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPkZlZGVyYWwgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5TdGF0ZSB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhciwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgPHN0cm9uZz5ub3RpY2VzIG9yIGFtZW5kbWVudHM8L3N0cm9uZz4gcmVsYXRlZCB0byB5b3VyIHByaW9yIHllYXIgdGF4IHJldHVybnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgZGlmZmljdWx0eSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgbGV0IHVzIGtub3cgYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBQcm92aWRpbmcgdGhlc2Ugd2lsbCBlbmFibGUgdXMgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gd2l0aG91dCBkZWxheS48L3A+YCxcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU3RhdHV0b3J5IEV4dGVuc2lvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgRGV0ZXJtaW5pbmcgRWxpZ2liaWxpdHkgZm9yIFN0YXR1dG9yeSBGaWxpbmcgRXh0ZW5zaW9uc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgeW91IHF1YWxpZnkgZm9yIHN0YXR1dG9yeSBmaWxpbmcgZXh0ZW5zaW9ucyBmb3IgeW91ciB0YXggcmV0dXJucywgd2UgcmVxdWlyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIHlvdS4gUGxlYXNlIHNlZSBiZWxvdyB0aGUgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiBuZWVkZWQgYmFzZWQgb24gZGlmZmVyZW50IGVsaWdpYmlsaXR5IGNyaXRlcmlhOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GZWRlcmFsIERpc2FzdGVyIEFyZWFzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db25maXJtYXRpb24gb2YgeW91ciBwcmltYXJ5IHJlc2lkZW5jZSBsb2NhdGlvbiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgcmVjZWl2ZWQgcmVnYXJkaW5nIGRpc2FzdGVyIGRlY2xhcmF0aW9ucyBpbiB5b3VyIGFyZWEuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxpdmluZyBBYnJvYWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlByb29mIG9mIHJlc2lkZW5jZSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGZvciBtb3JlIHRoYW4gMzMwIGZ1bGwgZGF5cyB3aXRoaW4gYSAxMi1tb250aCBwZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgeW91ciBwaHlzaWNhbCBwcmVzZW5jZSBvciBib25hIGZpZGUgcmVzaWRlbmNlIGluIGEgZm9yZWlnbiBjb3VudHJ5LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmUgTWlsaXRhcnk8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gaW5kaWNhdGluZyBhY3RpdmUgZHV0eSBzdGF0dXMsIGluY2x1ZGluZyBkYXRlcyBvZiBzZXJ2aWNlIHdpdGhpbiB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBvcmRlcnMgZm9yIG92ZXJzZWFzIGRlcGxveW1lbnQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvbWJhdCBab25lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5PZmZpY2lhbCBvcmRlcnMgZGVtb25zdHJhdGluZyB5b3VyIGRlcGxveW1lbnQgdG8gYSBjb21iYXQgem9uZSwgaW5jbHVkaW5nIHRoZSBzcGVjaWZpYyBkYXRlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSByZWxldmFudCBjb21tdW5pY2F0aW9uIGZyb20gdGhlIERlcGFydG1lbnQgb2YgRGVmZW5zZSBvciBvdGhlciBvZmZpY2lhbCBib2RpZXMgcmVnYXJkaW5nIHlvdXIgc2VydmljZSBpbiBhIGNvbWJhdCB6b25lLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGVwZW5kZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVxdWVzdCBmb3IgRGVwZW5kZW50IEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGRlcGVuZGVudHMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXBwbHlpbmcgdGhlIG1vc3QgYmVuZWZpY2lhbCBkZXBlbmRlbmN5IHRlc3RzLCBpbmNsdWRpbmcgcXVhbGlmaWNhdGlvbnMgZm9yIEhlYWQgb2YgSG91c2Vob2xkIChIT0gpLCBDaGlsZCBUYXggQ3JlZGl0LCBhbmQgb3RoZXIgcmVsYXRlZCBiZW5lZml0cy4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIGZvciBlYWNoIG9mIHlvdXIgY2xhaW1lZCBkZXBlbmRlbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GdWxsIE5hbWU6PC9zdHJvbmc+IFRoZSBjb21wbGV0ZSBsZWdhbCBuYW1lIG9mIHRoZSBkZXBlbmRlbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Tb2NpYWwgU2VjdXJpdHkgTnVtYmVyIChTU04pIG9yIFRheHBheWVyIElkZW50aWZpY2F0aW9uIE51bWJlciAoVElOKTo8L3N0cm9uZz4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBCaXJ0aDo8L3N0cm9uZz4gSGVscHMgdG8gZGV0ZXJtaW5lIGVsaWdpYmlsaXR5IGZvciBjZXJ0YWluIGNyZWRpdHMgbGlrZSB0aGUgQ2hpbGQgVGF4IENyZWRpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlbGF0aW9uc2hpcCB0byBZb3U6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRlcGVuZGVudCdzIHJlbGF0aW9uc2hpcCAoc29uLCBkYXVnaHRlciwgc3RlcGNoaWxkLCBmb3N0ZXIgY2hpbGQsIGJyb3RoZXIsIHNpc3RlciwgZXRjLikgdG8geW91LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVzaWRlbmN5Ojwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgbGl2ZWQgd2l0aCB5b3UgZm9yIG1vcmUgdGhhbiBoYWxmIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIFN1cHBvcnQ6PC9zdHJvbmc+IENvbmZpcm0geW91IHByb3ZpZGVkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBkZXBlbmRlbnTigJlzIGZpbmFuY2lhbCBzdXBwb3J0IGZvciB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNpdGl6ZW5zaGlwOjwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgaXMgYSBVLlMuIGNpdGl6ZW4sIFUuUy4gbmF0aW9uYWwsIG9yIGEgcmVzaWRlbnQgYWxpZW4uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSW5kaWNhdGUgd2hldGhlciB0aGUgZGVwZW5kZW50IGlzIG1hcnJpZWQgYW5kLCBpZiBzbywgd2hldGhlciB0aGV5IGFyZSBmaWxpbmcgam9pbnRseS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkluY29tZSBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgcHJvdmlkZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgaW5jb21lIHRoZSBkZXBlbmRlbnQgbWF5IGhhdmUgZWFybmVkIG9yIHJlY2VpdmVkLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB5b3UgcHJvdmlkZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgaW5mb3JtYXRpb24gdG8gYXZvaWQgYW55IGRlbGF5cyBpbiB0aGUgcHJvY2Vzc2luZyBvZiB5b3VyIHRheCByZXR1cm4uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSGVhZCBvZiBIb3VzZWhvbGQgRmlsaW5nXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgYW5kIGNvbXBsaWFudCB0YXggZmlsaW5nIHVuZGVyIHRoZSBcIkhlYWQgb2YgSG91c2Vob2xkXCIgc3RhdHVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiBUaGlzIHN0YXR1cyBjYW4gcHJvdmlkZSBzaWduaWZpY2FudCB0YXggYmVuZWZpdHMsIGFuZCBpdCBpcyBjcnVjaWFsIHRoYXQgYWxsIElSUyByZXF1aXJlbWVudHMgYXJlIG1ldC4gUGxlYXNlIHByb3ZpZGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IENvbmZpcm1hdGlvbiBvZiB5b3VyIG1hcml0YWwgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IGRheSBvZiB0aGUgdGF4IHllYXIgKGUuZy4sIHNpbmdsZSwgZGl2b3JjZWQsIGxlZ2FsbHkgc2VwYXJhdGVkKS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+SG91c2Vob2xkIEV4cGVuc2VzOjwvc3Ryb25nPiBEZXRhaWxlZCByZWNvcmRzIGluZGljYXRpbmcgdGhhdCB5b3UgcGFpZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY29zdHMgb2Yga2VlcGluZyB1cCBhIGhvbWUgZm9yIHRoZSB0YXggeWVhci4gVGhpcyBpbmNsdWRlcyByZW50LCBtb3J0Z2FnZSBpbnRlcmVzdCwgcHJvcGVydHkgdGF4ZXMsIHV0aWxpdGllcywgcmVwYWlycywgbWFpbnRlbmFuY2UsIGFuZCBncm9jZXJpZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPlF1YWxpZnlpbmcgUGVyc29uOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcXVhbGlmeWluZyBwZXJzb24ocykgd2hvIGxpdmVkIHdpdGggeW91IGluIHRoZSBob21lIGZvciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgeWVhciwgZXhjZXB0IGZvciB0ZW1wb3JhcnkgYWJzZW5jZXMgc3VjaCBhcyBzY2hvb2wuIFBsZWFzZSBpbmNsdWRlOlxyXG4gICAgICA8dWw+XHJcbiAgICAgIDxsaT5GdWxsIG5hbWUgYW5kIHJlbGF0aW9uc2hpcCB0byB5b3UgKGUuZy4sIGNoaWxkLCBwYXJlbnQsIHNpYmxpbmcpLjwvbGk+XHJcbiAgICAgIDxsaT5EdXJhdGlvbiBvZiByZXNpZGVuY3kgYXQgeW91ciBob21lIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgPGxpPlN1cHBvcnRpbmcgZG9jdW1lbnRzIChiaXJ0aCBjZXJ0aWZpY2F0ZXMsIHNjaG9vbCByZWNvcmRzLCBldGMuKSBwcm92aW5nIHRoZSByZXNpZGVuY3kgYW5kIHJlbGF0aW9uc2hpcC48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgU3VwcG9ydDo8L3N0cm9uZz4gQW55IGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHlvdXIgY2xhaW0gZm9yIHRoZSBIZWFkIG9mIEhvdXNlaG9sZCBmaWxpbmcgc3RhdHVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCBwcm92aWRpbmcgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgeW91ciBiZW5lZml0IGFuZCB0byBjb21wbHkgd2l0aCB0YXggbGF3cy4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkZXRhaWxzLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbmZvcm1hdGlvbiBvbiBSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIHNwb3VzZSBpcyBub3QgYSBVLlMuIGNpdGl6ZW4uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHlvdXIgdGF4IHN0YXR1cywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVjZXNzYXJ5IFRheCBSZXNpZGVuY3kgVGVzdHMsIHdoaWNoIGluY2x1ZGUgdGhlIDxzdHJvbmc+R3JlZW4gQ2FyZCBUZXN0PC9zdHJvbmc+IGFuZCB0aGUgPHN0cm9uZz5TdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0PC9zdHJvbmc+LiBUaGlzIHdpbGwgaGVscCB1cyBlbnN1cmUgeW91ciB0YXggcmV0dXJucyBhcmUgY29tcGxldGVkIGNvcnJlY3RseSBhbmQgY29tcGx5IHdpdGggVS5TLiByZWd1bGF0aW9ucy48L3A+XHJcblxyXG4gICAgPHA+VG8gcHJvY2VlZCwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5HcmVlbiBDYXJkIFN0YXR1czo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgeW91IG9yIHlvdXIgc3BvdXNlIGhhdmUgYmVlbiBpc3N1ZWQgYSBVLlMuIGdyZWVuIGNhcmQgKExhd2Z1bCBQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCkgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgdGF4IHllYXIuIElmIHllcywgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIGdyZWVuIGNhcmQgb3IgdGhlIG9mZmljaWFsIGRvY3VtZW50IGNvbmZpcm1pbmcgdGhlIHN0YXR1cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQXJyaXZhbCBpbiB0aGUgVS5TLjo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGVzIHdoZW4geW91IGFuZC9vciB5b3VyIHNwb3VzZSBmaXJzdCBhcnJpdmVkIGluIHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5UcmF2ZWwgSGlzdG9yeTo8L3N0cm9uZz4gQSBkZXRhaWxlZCBsaXN0IG9mIGFsbCB0aGUgZGF0ZXMgeW91IGFuZC9vciB5b3VyIHNwb3VzZSBlbnRlcmVkIGFuZCBsZWZ0IHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdGhlIFN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3QuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WaXNhIFR5cGU6PC9zdHJvbmc+IElmIHlvdSBvciB5b3VyIHNwb3VzZSBhcmUgb24gYSB2aXNhLCBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIHZpc2EuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFRheCBGaWxpbmdzOjwvc3Ryb25nPiBDb3BpZXMgb2YgbGFzdCB5ZWFyJ3MgdGF4IHJldHVybnMsIGlmIGFwcGxpY2FibGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIHByb3ZpZGUgY29udGV4dCBhbmQgaGVscCBkZXRlcm1pbmUgcmVzaWRlbmN5IHN0YXR1cyBtb3JlIGFjY3VyYXRlbHkuPC9saT5cclxuICAgIDwvb2w+XHJcblxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZS4gWW91IGNhbiBzZW5kIHRoZW0gdG8gdXMgdmlhIGVtYWlsIG9yIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLiBGb3IgYW55IHF1ZXN0aW9ucyBvciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+XHJcblxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IHdpdGggeW91ciB0YXggcHJlcGFyYXRpb24uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSm9pbnQgVGF4IFJlbGllZiBEZXRhaWxzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBhc3Npc3QgeW91IGVmZmVjdGl2ZWx5IHdpdGggeW91ciByZXF1ZXN0IGZvciBqb2ludCB0YXggcmVsaWVmLCB3ZSBuZWVkIHRvIGNvbGxlY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCB5b3VyIHNpdHVhdGlvbiB0aG9yb3VnaGx5LiBUaGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIG1vc3Qgc3VpdGFibGUgdHlwZSBvZiByZWxpZWYgZm9yIHlvdXIgY2lyY3Vtc3RhbmNlcywgd2hpY2ggbWF5IGluY2x1ZGUgSW5ub2NlbnQgU3BvdXNlIFJlbGllZiwgSW5qdXJlZCBTcG91c2UgQWxsb2NhdGlvbiwgU2VwYXJhdGlvbiBvZiBMaWFiaWxpdHkgUmVsaWVmLCBvciBFcXVpdGFibGUgUmVsaWVmLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbXBsZXRlIFRheCBSZXR1cm5zOjwvc3Ryb25nPiBDb3BpZXMgb2YgYWxsIHRheCByZXR1cm5zIGZvciB0aGUgeWVhcnMgeW91IGFyZSByZXF1ZXN0aW5nIHJlbGllZi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCBTdGF0ZW1lbnQ6PC9zdHJvbmc+IEEgd3JpdHRlbiBzdGF0ZW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGJlbGlldmUgeW91IHF1YWxpZnkgZm9yIHJlbGllZiwgaW5jbHVkaW5nIGFueSBzcGVjaWZpYyBldmVudHMgb3IgY2lyY3Vtc3RhbmNlcyB5b3Ugd2FudCB1cyB0byBjb25zaWRlci48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gUHJvb2Ygb2YgeW91ciBjdXJyZW50IGluY29tZSBhbmQgdGhhdCBvZiB5b3VyIHNwb3VzZSBpZiBhcHBsaWNhYmxlLCBzdWNoIGFzIHJlY2VudCBwYXkgc3R1YnMsIFctMiBmb3Jtcywgb3Igb3RoZXIgaW5jb21lIHN0YXRlbWVudHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgRmluYW5jaWFsIFNpdHVhdGlvbjo8L3N0cm9uZz4gRG9jdW1lbnRzIHNob3dpbmcgeW91ciBjdXJyZW50IGZpbmFuY2lhbCBzaXR1YXRpb24sIGluY2x1ZGluZyBiYW5rIHN0YXRlbWVudHMsIG1vbnRobHkgYmlsbHMsIGFuZCBhbnkgb3RoZXIgbGlhYmlsaXRpZXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBNYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgbGVnYWwgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gc2VwYXJhdGlvbiwgZGl2b3JjZSwgb3IgYW5udWxtZW50LjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHRoYXQgcHJvdmUgd2hlcmUgZWFjaCBvZiB5b3UgaGFzIGxpdmVkIGR1cmluZyB0aGUgdGF4IHllYXJzIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGpvaW50IHRheCBsaWFiaWxpdHksIHBsZWFzZSBpbmNsdWRlIGNvcGllcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXJseSBsZWdpYmxlLiBZb3UgbWF5IHNlbmQgdGhlbSB2aWEgZW1haWwsIG9yIHVwbG9hZC4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IHRvIHByb3ZpZGUsIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9jZXNzIGNhbiBiZSBjb21wbGV4LCBidXQgd2UgYXJlIGhlcmUgdG8gZ3VpZGUgeW91IHRocm91Z2ggaXQuIE91ciBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgc2l0dWF0aW9uIHRvIGFkdm9jYXRlIGZvciB0aGUgbW9zdCBmYXZvcmFibGUgb3V0Y29tZSBvbiB5b3VyIGJlaGFsZi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIHJlcXVpcmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHlvdXIgc291cmNlcyBvZiBpbmNvbWUuIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB5b3VyIDEwOTkgTkVDIEluY29tZS4gVGhlIDEwOTktTkVDIGZvcm0gaXMgY3J1Y2lhbCBmb3IgY29ycmVjdGx5IHJlcG9ydGluZyB5b3VyIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gZW5zdXJlIGEgdGhvcm91Z2ggYW5kIGFjY3VyYXRlIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdXMgd2l0aCB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+QWxsIDEwOTktTkVDIGZvcm1zPC9iPiB5b3UgcmVjZWl2ZWQgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8Yj5hZGRpdGlvbmFsIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb248L2I+IG5vdCByZXBvcnRlZCBvbiBhIDEwOTktTkVDIGZvcm0uPC9saT5cclxuICAgICAgICA8bGk+SW5mb3JtYXRpb24gcmVnYXJkaW5nIDxiPmV4cGVuc2VzIHJlbGF0ZWQgdG8geW91ciAxMDk5IE5FQyBpbmNvbWU8L2I+LCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgbm90IHlldCByZWNlaXZlZCBhbGwgeW91ciAxMDk5LU5FQyBmb3JtcywgcGxlYXNlIGxldCB1cyBrbm93LCBhbmQgcHJvdmlkZSBhbiBlc3RpbWF0ZSBvZiB3aGVuIHlvdSBleHBlY3QgdG8gcmVjZWl2ZSB0aGVtLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBhY2N1cmF0ZWx5IHJlcG9ydGluZyB5b3VyIGluY29tZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMgZnJvbSB0aGUgSVJTLjwvcD5cclxuICAgIDxwPlBsZWFzZSByZWFjaCBvdXQgdG8gdXMgZGlyZWN0bHkgc2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24uIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBwcm9jZXNzZWQgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkuPC9wPlxyXG5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBTY2hlZHVsZSBLIGluY29tZSBmb3IgdGhlIGN1cnJlbnQgdGF4IHllYXIuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB3ZSBnYXRoZXIgYWxsIG5lY2Vzc2FyeSBkb2N1bWVudHMgcmVsYXRlZCB0byB0aGlzIGluY29tZS48L3A+XHJcbiAgICA8cD5JZiB3ZSBhcmUgcHJlcGFyaW5nIHlvdXIgYnVzaW5lc3MgcmV0dXJuLCByZXN0IGFzc3VyZWQgdGhhdCB3ZSB3aWxsIGdlbmVyYXRlIHRoZSBhcHBsaWNhYmxlIFNjaGVkdWxlIEstMShzKSBmb3IgeW91ciBidXNpbmVzcyBpbnRlcmVzdHMuIEhvd2V2ZXIsIGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIGNvbGxlY3QgY29waWVzIG9mIDxzdHJvbmc+YWxsIG90aGVyIFNjaGVkdWxlIEstMXM8L3N0cm9uZz4geW91IG1heSBoYXZlIHJlY2VpdmVkIHRvIGluY29ycG9yYXRlIGludG8geW91ciBwZXJzb25hbCB0YXggcmV0dXJuLjwvcD4gIFxyXG4gICAgPGgzPlNwZWNpZmljIERvY3VtZW50IFJlcXVlc3Q6PC9oMz5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QW55IGFuZCBhbGwgU2NoZWR1bGUgSy0xKHMpIHlvdSBoYXZlIHJlY2VpdmVkIGZyb206PC9saT5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5QYXJ0bmVyc2hpcHM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+UyBDb3Jwb3JhdGlvbnM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+RXN0YXRlIG9yIFRydXN0czwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgPHN0cm9uZz5jbGVhciBhbmQgbGVnaWJsZTwvc3Ryb25nPiB0byBwcmV2ZW50IGFueSBkZWxheXMgaW4gcHJvY2Vzc2luZyB5b3VyIHJldHVybi4gWW91IG1heSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLCBvciBjb250YWN0IHVzIHRvIG1ha2UgYWx0ZXJuYXRpdmUgYXJyYW5nZW1lbnRzIGlmIG5lY2Vzc2FyeS48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYW55IGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2Ygc2VsZi1lbXBsb3ltZW50IGluY29tZSBub3QgcmVwb3J0ZWQgdGhyb3VnaCAxMDk5LU5FQyBmb3JtcyBvciBhIFNjaGVkdWxlIEstMS4gVG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBhY2N1cmF0ZSBhbmQgbWF4aW1pemVzIHlvdXIgYmVuZWZpdHMsIGl0J3MgY3J1Y2lhbCB3ZSBnYXRoZXIgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlIHNvdXJjZXMgb2YgaW5jb21lLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eTo8L3N0cm9uZz4gQnJpZWZseSBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGVhY2ggYWN0aXZpdHkgZnJvbSB3aGljaCB5b3UgZGVyaXZlIHNlbGYtZW1wbG95bWVudCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiBvcGVyYXRpb246PC9zdHJvbmc+IEZvciBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eSwgc3BlY2lmeSB0aGUgZGF0ZXMgb3IgcmFuZ2Ugb2YgZGF0ZXMgZHVyaW5nIHdoaWNoIHlvdSBlYXJuZWQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgaW5jb21lIGdlbmVyYXRlZDo8L3N0cm9uZz4gRm9yIGVhY2ggYWN0aXZpdHksIHByb3ZpZGUgdGhlIHRvdGFsIGFtb3VudCBvZiBpbmNvbWUgZWFybmVkIGJlZm9yZSBhbnkgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5FeHBlbnNlcyBpbmN1cnJlZDo8L3N0cm9uZz4gTGlzdCBhbGwgZXhwZW5zZXMgcmVsYXRlZCB0byBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eS4gUGxlYXNlIGNhdGVnb3JpemUgdGhlc2UgZXhwZW5zZXMgKGUuZy4sIG9mZmljZSBzdXBwbGllcywgdHJhdmVsLCBhZHZlcnRpc2luZykuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9yIGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBleGlzdGluZyByZWNvcmRzIG9yIGRvY3VtZW50YXRpb24gdGhhdCBjb3Jyb2JvcmF0ZSB5b3VyIGluY29tZSBhbmQgZXhwZW5zZXMsIHN1Y2ggYXMgYmFuayBzdGF0ZW1lbnRzLCByZWNlaXB0cywgaW52b2ljZXMsIG9yIGNvbnRyYWN0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGFtb3VudCBvZiB0YXggeW91IG93ZSBhbmQgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIHRoYXQgY2FuIG1pbmltaXplIHlvdXIgdGF4IGxpYWJpbGl0eS4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFlvdXIgdGltZWx5IGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQsIGFuZCB3ZSBhcmUgaGVyZSB0byBoZWxwIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UaGFuayB5b3UgZm9yIGVudHJ1c3RpbmcgdXMgd2l0aCB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gQXMgcGFydCBvZiBvdXIgY29tcHJlaGVuc2l2ZSByZXZpZXcgYW5kIGluIG91ciBxdWVzdCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZ3MsIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB3YWdlcyBmcm9tIGVtcGxveW1lbnQgb3ZlciB0aGUgcGFzdCB0YXggeWVhci48L3A+XHJcbiAgICA8cD5UbyBwcm9jZWVkIGVmZmVjdGl2ZWx5LCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlctMiBGb3Jtczo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgY29waWVzIG9mIGFsbCBXLTIgZm9ybXMgcmVjZWl2ZWQgZnJvbSB5b3VyIGVtcGxveWVycy4gVGhpcyBpbmNsdWRlcyB3YWdlcyBlYXJuZWQgZnJvbSBhbGwgc291cmNlcywgbm90IGp1c3QgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZlcmlmaWNhdGlvbiBvZiBTLUNvcnBvcmF0aW9uIFdhZ2VzOjwvc3Ryb25nPiBJZiB3ZSBhcmUgYWxzbyBoYW5kbGluZyB5b3VyIGJ1c2luZXNzIHRheGVzIGZvciBhbiBTLUNvcnBvcmF0aW9uLCB3ZSBsaWtlbHkgaGF2ZSB0aGUgd2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhhdCBlbnRpdHkuIEhvd2V2ZXIsIGZvciB0aG9yb3VnaG5lc3MgYW5kIGNvbXBsaWFuY2UsIHBsZWFzZSBjb25maXJtIGlmIHRoZSB3YWdlcyBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uIGFyZSBmdWxseSByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRzIHdlIGFscmVhZHkgaG9sZC4gVGhpcyB3aWxsIGhlbHAgdXMgdmVyaWZ5IHRoYXQgYWxsIGluY29tZSBpcyBhY2N1cmF0ZWx5IHJlcG9ydGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBJbmNvbWUgRG9jdW1lbnRzOjwvc3Ryb25nPiBTaG91bGQgeW91IGhhdmUgb3RoZXIgc291cmNlcyBvZiB3YWdlIGluY29tZSAoZS5nLiwgY29udHJhY3Qgd29yaywgYm9udXNlcywgZXRjLikgbm90IGNvdmVyZWQgYnkgdGhlIFctMiBmb3JtcyBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgYW55IDEwOTkgZm9ybXMgb3Igb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPllvdXIgY29vcGVyYXRpb24gaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gS2luZGx5IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBUaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJQcm9wZXJ0eS9TZXJ2aWNlcyBpbiBMaWV1IG9mIFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgcHJvcGVydHkgYW5kL29yIHNlcnZpY2VzIGluIGxpZXUgb2YgdHJhZGl0aW9uYWwgd2FnZXMgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyB0eXBlIG9mIGNvbXBlbnNhdGlvbiBjb25zdGl0dXRlcyB0YXhhYmxlIGluY29tZSBhbmQgbXVzdCBiZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgZnVsbHkgY29tcGxpYW50IHdpdGggSVJTIHJlZ3VsYXRpb25zLjwvcD5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgcmVjb2duaXplIGFuZCByZXBvcnQgdGhlc2UgaXRlbXMgYXMgdGF4YWJsZSBpbmNvbWUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBQcm9wZXJ0eSBvciBTZXJ2aWNlczo8L3N0cm9uZz4gUHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFueSBwcm9wZXJ0eSBvciBzZXJ2aWNlcyB5b3UgcmVjZWl2ZWQuIFBsZWFzZSBpbmNsdWRlIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBmb3IgcHJvcGVydHkgb3IgdGhlIHNjb3BlIG9mIHNlcnZpY2VzIHJlbmRlcmVkLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5GYWlyIE1hcmtldCBWYWx1ZSBhdCBUaW1lIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IEluZGljYXRlIHRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIHByb3BlcnR5IG9yIHNlcnZpY2UgYXQgdGhlIHRpbWUgeW91IHJlY2VpdmVkIGl0LiBJZiB5b3UgaGF2ZSBhbnkgYXBwcmFpc2FscyBvciBkb2N1bWVudHMgdG8gc3VwcG9ydCB0aGUgRk1WLCBwbGVhc2UgaW5jbHVkZSB0aGVtLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9yIEFncmVlbWVudHM6PC9zdHJvbmc+IFByb3ZpZGUgYW55IGRvY3VtZW50YXRpb24gb3Igd3JpdHRlbiBhZ3JlZW1lbnRzIHRoYXQgZGV0YWlsIHRoZSBhcnJhbmdlbWVudCBmb3IgcmVjZWl2aW5nIHByb3BlcnR5IG9yIHNlcnZpY2VzIGluIGxpZXUgb2Ygd2FnZXMuIFRoaXMgY2FuIGluY2x1ZGUgY29udHJhY3RzLCBlbWFpbHMsIG9yIGFueSBmb3JtIG9mIGNvbW11bmljYXRpb24gdGhhdCBvdXRsaW5lcyB0aGUgYWdyZWVtZW50LjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRhdGUocykgb24gd2hpY2ggeW91IHJlY2VpdmVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIvUHJvdmlkZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFByb3ZpZGUgdGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgcHJvdmlkZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBwcm92aWRlZCBpbmZvcm1hdGlvbiBpcyBhcyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgYXMgcG9zc2libGUuIEluY29tcGxldGUgb3IgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBtYXkgbGVhZCB0byBkZWxheXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybiBvciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIElSUy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIGluZm9ybWF0aW9uIHJlcXVlc3RlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIGNyaXRpY2FsIGZvciB0aGUgdGltZWx5IGFuZCBhY2N1cmF0ZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90aWNlZCB5b3UndmUgbWVudGlvbmVkIGJlaW5nIHJlaW1idXJzZWQgZm9yIGNlcnRhaW4gZXhwZW5zZXMgdW5kZXIgYW4gRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhbi4gVG8gYWNjdXJhdGVseSBhY2NvdW50IGZvciB0aGVzZSByZWltYnVyc2VtZW50cyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB0aGUgZm9ybWFsIHdyaXR0ZW4gQWNjb3VudGFibGUgUGxhbiBwcm92aWRlZCBieSB5b3VyIGVtcGxveWVyLiBUaGlzIHNob3VsZCBvdXRsaW5lIHRoZSBleHBlbnNlIGFsbG93YW5jZSBhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBwb2xpY3kuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgZnJvbSB5b3VyIGVtcGxveWVyIGNvbmZpcm1pbmcgeW91ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgdGhlIGV4cGVuc2VzIHJlaW1idXJzZWQgdW5kZXIgdGhlIHBsYW4sIGluY2x1ZGluZyBkYXRlcywgYW1vdW50cywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGV4cGVuc2UgKHJlY2VpcHRzIG9yIGludm9pY2VzKSBwcm92aWRlZCB0byB5b3VyIGVtcGxveWVyIGZvciByZWltYnVyc2VtZW50IHVuZGVyIHRoZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHJlaW1idXJzZW1lbnRzIG9yIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHNlbmQgdXMgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gcHJvY2VlZCBzbW9vdGhseSB3aXRoIHlvdXIgdGF4IHJldHVybiBwcmVwYXJhdGlvbi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYFxyXG4gICAgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGVuc3VyaW5nIGFsbCBmb3JtcyBvZiBjb21wZW5zYXRpb24sIGluY2x1ZGluZyB0YXhhYmxlIGZyaW5nZSBiZW5lZml0cywgYXJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgb24geW91ciB0YXggcmV0dXJucy4gQmFzZWQgb24gb3VyIHByZXZpb3VzIGNvbW11bmljYXRpb24sIGl0IGFwcGVhcnMgeW91IG1heSBoYXZlIHJlY2VpdmVkIGJlbmVmaXRzIHRoYXQgbmVlZCB0byBiZSByZXZpZXdlZCBmdXJ0aGVyLiBUbyBhc3Npc3QgeW91IHByb3Blcmx5LCB3ZSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWMgZGV0YWlsczo8L3A+XHJcbjxvbD5cclxuICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQgcmVjZWl2ZWQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbXBhbnkgY2FycywgbWVtYmVyc2hpcHMsIGVkdWNhdGlvbmFsIGFzc2lzdGFuY2UsIGV0Yy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gSWYgeW91J3JlIHVuc3VyZSwgcGxlYXNlIHByb3ZpZGUgYW4gZXN0aW1hdGUgYW5kIHRoZSBiYXNpcyBmb3IgdGhpcyBlc3RpbWF0ZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkFueSBhbW91bnRzIGNvbnRyaWJ1dGVkIGJ5IHlvdTo8L3N0cm9uZz4gSWYgeW91IG1hZGUgY29udHJpYnV0aW9ucyB0b3dhcmQgdGhlIGNvc3Qgb2YgYW55IGJlbmVmaXQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkRhdGVzOjwvc3Ryb25nPiBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgc3BlY2lmaWMgZGF0ZXMgaWYgcG9zc2libGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5FbXBsb3llciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGVtcGxveWVyKHMpIHByb3ZpZGluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG48L29sPlxyXG48cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgZGV0ZXJtaW5pbmcgdGhlIHRheGFibGUgdmFsdWUgb2YgdGhlc2UgZnJpbmdlIGJlbmVmaXRzIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG48cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFsaXppbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIGlkZW50aWZpZWQgcG90ZW50aWFsIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB0aGF0IG1heSBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgb3B0aW1pemUgeW91ciB0YXggb3V0Y29tZSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYW55IG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQ6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIG1heSBpbmNsdWRlIGhlYWx0aCBzYXZpbmdzIGFjY291bnRzIChIU0FzKSwgZW1wbG95ZWUgZGlzY291bnRzLCBwdWJsaWMgdHJhbnNpdCBwYXNzZXMsIGV0Yy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIEZvciBub24tdGF4YWJsZSBiZW5lZml0cywgdGhpcyBoZWxwcyBpbiByZWNvcmQta2VlcGluZyBhbmQgY29uZmlybWluZyBleGVtcHRpb24gc3RhdHVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbnRyaWJ1dGlvbiBhbW91bnRzLCBpZiBhbnk6PC9zdHJvbmc+IElmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvd2FyZHMgYW55IG9mIHRoZXNlIGJlbmVmaXRzLCBpbmRpY2F0ZSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGRvY3VtZW50YXRpb24gdGhhdCBjYW4gY29ycm9ib3JhdGUgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIHJlY2VpcHQ6PC9zdHJvbmc+IFRoZSB0aW1lZnJhbWUgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBhcyBwcmVjaXNlIGRhdGVzIGFzIHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkVtcGxveWVyIG9yIHByb3ZpZGVyIGluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBlbXBsb3llcihzKSBvciB0aGlyZC1wYXJ0eSBwcm92aWRlcihzKSBvZmZlcmluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uIGhlbHBzIGVuc3VyZSB0aGF0IHlvdXIgdGF4IGZpbGluZ3MgYXJlIGFjY3VyYXRlIGFuZCB0aGF0IHlvdSByZWNlaXZlIHRoZSBmdWxsIGFkdmFudGFnZSBvZiBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMuIFBsZWFzZSBsZXQgdXMga25vdyBpZiB5b3UgbmVlZCBhbnkgaGVscCBpZGVudGlmeWluZyBvciBkb2N1bWVudGluZyB0aGVzZSBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQgYXMgd2Ugc3RyaXZlIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIGVmZmljaWVudGx5LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVkEgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBvbmdvaW5nIGVmZm9ydCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgVmV0ZXJhbiBCZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBvZiB0aGVzZSBiZW5lZml0cywgd2Uga2luZGx5IHJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gdGhpcyB0YXNrLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBsaXN0IG9mIHRoZSBWZXRlcmFuIEJlbmVmaXRzIHlvdSByZWNlaXZlZCwgaW5jbHVkaW5nIGFueSBkaXNhYmlsaXR5LCBlZHVjYXRpb24sIGFuZCBwZW5zaW9uIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPk9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggdHlwZSBvZiBiZW5lZml0IHJlY2VpdmVkLCBzdWNoIGFzIGF3YXJkIGxldHRlcnMgb3Igc3RhdGVtZW50cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIFZldGVyYW5zIEFmZmFpcnMgKFZBKS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgY29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgVkEgb3Igb3RoZXIgcmVsZXZhbnQgZW50aXRpZXMgcmVnYXJkaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHlvdXIgYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+VG90YWwgYW1vdW50IHJlY2VpdmVkIGZvciBlYWNoIGJlbmVmaXQgdGhyb3VnaG91dCB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QW55IG90aGVyIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBwcm92aWRlIGNsYXJpdHkgb24gdGhlIG5hdHVyZSBhbmQgYW1vdW50IG9mIHlvdXIgVmV0ZXJhbiBCZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggYmVuZWZpdHMgYXJlIHRheGFibGUgYW5kIGVuc3VyaW5nIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFBsZWFzZSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBtZW50aW9uIG9mIHJlY2VpdmluZyBsaWZlIGluc3VyYW5jZSBwYXltZW50cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHRoZXNlIHByb2NlZWRzIGFyZSBpbmRlZWQgbm9uLXRheGFibGUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RG9jdW1lbnRhdGlvbiBvciBzdGF0ZW1lbnRzIHBlcnRhaW5pbmcgdG8gdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgaW5zdXJlZCBpbmRpdmlkdWFsIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91LjwvbGk+XHJcbiAgICAgIDxsaT5BbnkgY29tbXVuaWNhdGlvbnMgb3IgbGV0dGVycyBmcm9tIHRoZSBpbnN1cmFuY2UgY29tcGFueSByZWdhcmRpbmcgdGhlIHRheCBzdGF0dXMgb2YgdGhlc2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRldGFpbHMgcmVnYXJkaW5nIGlmIHRoZSBwb2xpY3kgd2FzIHB1cmNoYXNlZCB3aXRoIGFmdGVyLXRheCBvciBwcmUtdGF4IGRvbGxhcnMuPC9saT5cclxuICAgICAgPGxpPklmIGFueSBwb3J0aW9uIG9mIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50IHdhcyBhbiBpbnZlc3RtZW50IHJldHVybiwgcGxlYXNlIHByb3ZpZGUgcmVsYXRlZCBkb2N1bWVudHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGd1YXJhbnRlZSB0aGUgYWNjdXJhY3kgYW5kIGludGVncml0eSBvZiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gV2UncmUgaGVyZSB0byBoZWxwITwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgd2UgcHJvY2VlZCB3aXRoIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zLCB3ZSBub3RlZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB1bmRlciB0aGUgZGlmZmljdWx0eS1vZi1jYXJlIHByb3Zpc2lvbnMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gZW5zdXJlIHdlIG1heGltaXplIHlvdXIgZWxpZ2libGUgaW5jb21lIGV4Y2x1c2lvbnMsIGl0J3MgY3J1Y2lhbCB3ZSB2ZXJpZnkgY2VydGFpbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBsaXZpbmcgYXJyYW5nZW1lbnQsIGFzIHBlciBJUlMgZ3VpZGVsaW5lcy48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gY29uZmlybWluZyB0aGF0IHRoZXNlIHBheW1lbnRzIHF1YWxpZnkgZm9yIGluY29tZSBleGNsdXNpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHByb3ZpbmcgdGhhdCB5b3UgYW5kIHRoZSBpbmRpdmlkdWFsIHVuZGVyIGNhcmUgc2hhcmVkIHRoZSBzYW1lIHByaW1hcnkgcmVzaWRlbmNlIGR1cmluZyB0aGUgcmVjZWlwdCBvZiB0aGVzZSBwYXltZW50cy4gVGhpcyBjb3VsZCBpbmNsdWRlIHV0aWxpdHkgYmlsbHMsIGEgcmVudGFsIGFncmVlbWVudCwgb3IgaG9tZW93bmVyJ3MgaW5zdXJhbmNlIGluIGJvdGggb2YgeW91ciBuYW1lcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgdGhlIENhcmUgUmVjaXBpZW50Ojwvc3Ryb25nPiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyc29uIHJlY2VpdmluZyBjYXJlLCBpbmNsdWRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdSBhbmQgYW55IGRvY3VtZW50YXRpb24gdGhhdCBpZGVudGlmaWVzIHRoZWlyIG5lZWQgZm9yIGNhcmUgKGUuZy4sIGEgbGV0dGVyIGZyb20gYSBoZWFsdGhjYXJlIHByb3ZpZGVyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgUmVjb3Jkczo8L3N0cm9uZz4gQW55IHJlY29yZHMgb2YgdGhlIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB5b3UgcmVjZWl2ZWQsIGFzIHRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgZXhhY3QgYW1vdW50cyBhbmQgdGhlIHBlcmlvZHMgY292ZXJlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBGb3JtYWwgQWdyZWVtZW50cyBvciBDb250cmFjdHM6PC9zdHJvbmc+IElmIHRoZXJlIHdhcyBhIGZvcm1hbCBhZ3JlZW1lbnQgb3IgY29udHJhY3QgZGV0YWlsaW5nIHRoZSBjYXJlIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSB0aGlzIGFzIHdlbGwuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGNhcmUgYXJyYW5nZW1lbnQgd2FzIGZhY2lsaXRhdGVkIHRocm91Z2ggYSBzdGF0ZSBvciB0aGlyZC1wYXJ0eSBhZ2VuY3kuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB3ZSBjb21wbHkgd2l0aCB0YXhpbmcgYXV0aG9yaXRpZXMgd2hpbGUgYWNjdXJhdGVseSByZWZsZWN0aW5nIHlvdXIgZmluYW5jZXMuIElmIGFueSBvZiB0aGVzZSByZXF1aXJlbWVudHMgcG9zZSBhIGRpZmZpY3VsdHkgb3IgaWYgeW91IGhhdmUgcXVlc3Rpb25zLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gT3VyIGdvYWwgaXMgdG8gc3VwcG9ydCB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MgYW5kIG9wdGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBXZSBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGJlbmVmaXRzIGFyZSBlbGlnaWJsZSB0byBiZSBleGNsdWRlZCBmcm9tIHlvdXIgaW5jb21lLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyBwYWlkLjwvcD5cclxuICAgIDxwPktpbmRseSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgb2YgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCBzdGF0ZW1lbnRzIG9yIGRvY3VtZW50YXRpb24gc2hvd2luZyB0aGUgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9uIHdobyBwYWlkIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgKHlvdSBvciB5b3VyIGVtcGxveWVyKS48L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHlvdSBwYWlkIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB0aGUgcGF5bWVudHMgbWFkZSBieSB5b3UgKHJlY2VpcHRzIG9yIGJhbmsgc3RhdGVtZW50cykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3VyIGVtcGxveWVyIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgcGFpZCBieSB5b3VyIGVtcGxveWVyIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGRvY3VtZW50cyBpbmRpY2F0aW5nIGVtcGxveWVyIGNvbnRyaWJ1dGlvbnMgKHBheSBzdHVicywgZW1wbG95ZXIgbGV0dGVycykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXhhYmxlIHBvcnRpb24sIGlmIGFueSwgb2YgeW91ciBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cy4gUHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBoZWxwIHVzIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5nIGFuZCBwb3RlbnRpYWxseSBsb3dlciB5b3VyIHRheGFibGUgaW5jb21lLjwvcD5cclxuICAgIDxwPlBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaWYgd2UgY2FuIGJlIG9mIGZ1cnRoZXIgYXNzaXN0YW5jZS4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCByZXNwb25zZSB0byB0aGlzIHJlcXVlc3QuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJbiBvcmRlciB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cywgd2UgbmVlZCBhZGRpdGlvbmFsIGRldGFpbHMuIFRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzIGNhbiBkZXBlbmQgb24gd2hlbiB5b3UgdG9vayByZXRpcmVtZW50IGR1ZSB0byBkaXNhYmlsaXR5LjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZXRpcmVtZW50Ojwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZSB5b3UgcmV0aXJlZCBkdWUgdG8gZGlzYWJpbGl0eS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgRGlzYWJpbGl0eSBSZXRpcmVtZW50Ojwvc3Ryb25nPiBBbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB5b3UgaGF2ZSB0aGF0IGNvbmZpcm1zIHlvdXIgcmV0aXJlbWVudCB3YXMgZHVlIHRvIGRpc2FiaWxpdHkuIFRoaXMgbWF5IGluY2x1ZGUgbGV0dGVycyBmcm9tIHlvdXIgZW1wbG95ZXIsIHRoZSByZXRpcmVtZW50IHBsYW4sIG9yIG1lZGljYWwgcmVjb3Jkcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgQmVuZWZpdHMgUmVjZWl2ZWQ6PC9zdHJvbmc+IFNwZWNpZmljIGFtb3VudHMgYW5kIHRoZSBzb3VyY2Ugb2YgdGhlIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cy4gUGxlYXNlIGluY2x1ZGUgYW55IHJlbGF0ZWQgZG9jdW1lbnRzIHN1Y2ggYXMgc3RhdGVtZW50cyBvciBub3RpY2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBXLTIgb3IgMTA5OSBGb3Jtczo8L3N0cm9uZz4gSWYgeW91IHJlY2VpdmVkIGFueSB3YWdlcyBvciBkaXNhYmlsaXR5IHBheW1lbnRzIHRoYXQgd2VyZSByZXBvcnRlZCBvbiBXLTIgb3IgMTA5OSBmb3JtcyBpbiB0aGUgeWVhciBvZiB5b3VyIHJldGlyZW1lbnQsIHBsZWFzZSBwcm92aWRlIHRoZXNlIGZvcm1zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgdGhlc2UgY29tbXVuaWNhdGlvbnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyB3aWxsIGFpZCB1cyBpbiBkZXRlcm1pbmluZyB0aGVpciB0YXhhYmlsaXR5IGFuZCBlbnN1cmluZyB0aGF0IHlvdXIgdGF4IG9ibGlnYXRpb25zIGFyZSBwcmVjaXNlbHkgY2FsY3VsYXRlZC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgVy0yIHdhZ2VzIGFzIGEgY2xlcmd5IG1lbWJlci4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgdG8gcG90ZW50aWFsbHkgbWF4aW1pemUgeW91ciB0YXggYmVuZWZpdHMsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB5b3VyIGNvbXBlbnNhdGlvbiBwYWNrYWdlLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+Vy0yIEZvcm06PC9iPiBJZiBub3QgYWxyZWFkeSBwcm92aWRlZCwgaW5jbHVkZSBhbnkgVy0yIGZvcm1zIGlzc3VlZCBieSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Ib3VzaW5nIEFsbG93YW5jZSBEb2N1bWVudGF0aW9uOjwvYj4gRGV0YWlsZWQgc3RhdGVtZW50IG9yIGxldHRlciBmcm9tIHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uIHNwZWNpZnlpbmcgdGhlIGFtb3VudCBkZXNpZ25hdGVkIGFzIGhvdXNpbmcgYWxsb3dhbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNlbGYtRW1wbG95bWVudCBUYXg6PC9iPiBDb25maXJtYXRpb24gb24gd2hldGhlciB5b3UgaGF2ZSB0YWtlbiBhIHZvdyBvZiBwb3ZlcnR5IChpZiBhcHBsaWNhYmxlKSwgb3IgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBvcHRpbmcgb3V0IG9mIHNlbGYtZW1wbG95bWVudCB0YXguPC9saT5cclxuICAgICAgICA8bGk+PGI+RXhwZW5zZSBSZWltYnVyc2VtZW50czo8L2I+IERvY3VtZW50YXRpb24gc2hvd2luZyBhbnkgZXhwZW5zZSByZWltYnVyc2VtZW50cyByZWNlaXZlZCB1bmRlciBhbiBhY2NvdW50YWJsZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPk90aGVyIENvbXBlbnNhdGlvbjo8L2I+IEluZm9ybWF0aW9uIG9uIGFueSBvdGhlciBjb21wZW5zYXRpb24gcmVjZWl2ZWQgaW4geW91ciBjYXBhY2l0eSBhcyBjbGVyZ3ksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbG92ZSBvZmZlcmluZ3MsIGZlZXMgZm9yIHNlcnZpY2VzICh3ZWRkaW5ncywgZnVuZXJhbHMsIGV0Yy4pLCBhbmQgcGFyc29uYWdlIGFsbG93YW5jZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGFjY3VyYXRlbHkgcmVwcmVzZW50IHlvdXIgZWFybmluZ3MgYW5kIHRvIGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgY29ycmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IHdpbGwgaGVscCBlbnN1cmUgdGhhdCB5b3VyIHRheCByZXR1cm5zIGFyZSBwcmVwYXJlZCBpbiBhIHRpbWVseSBhbmQgZWZmaWNpZW50IG1hbm5lci48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgaXMgcmVxdWlyZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gV2UgYXJlIGhlcmUgdG8gYXNzaXN0IHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhpcyBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkludGVyZXN0IEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+SW4gcmV2aWV3aW5nIHlvdXIgZmluYW5jaWFsIGFjdGl2aXRpZXMgZm9yIHRoZSB0YXggeWVhciwgeW91IGluZGljYXRlZCByZWNlaXZpbmcgaW50ZXJlc3QgaW5jb21lLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGlzIGluY29tZSBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBkZXRhaWxzLiBLaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxiPlNvdXJjZSBvZiBJbnRlcmVzdCBJbmNvbWU6PC9iPiBQbGVhc2Ugc3BlY2lmeSB0aGUgaW5zdGl0dXRpb24ocykgb3IgZW50aXR5KGllcykgZnJvbSB3aGljaCB5b3UgcmVjZWl2ZWQgaW50ZXJlc3QgaW5jb21lIChlLmcuLCBiYW5rcywgY3JlZGl0IHVuaW9ucykuPC9saT5cclxuICAgICAgPGxpPjxiPkFtb3VudCBSZWNlaXZlZDo8L2I+IENvbmZpcm0gdGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcmVzdCBpbmNvbWUgcmVjZWl2ZWQgZnJvbSBlYWNoIHNvdXJjZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BY2NvdW50IFR5cGVzOjwvYj4gSWRlbnRpZnkgdGhlIHR5cGUgb2YgYWNjb3VudHMgdGhhdCBnZW5lcmF0ZWQgdGhlIGludGVyZXN0IChlLmcuLCBzYXZpbmdzLCBjaGVja2luZywgY2VydGlmaWNhdGVzIG9mIGRlcG9zaXQpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5UYXggRm9ybXMgUmVjZWl2ZWQ6PC9iPiBMaXN0IGFueSB0YXggZm9ybXMgeW91IGhhdmUgcmVjZWl2ZWQgcmVsYXRlZCB0byBpbnRlcmVzdCBpbmNvbWUsIHN1Y2ggYXMgRm9ybSAxMDk5LUlOVCBvciBGb3JtIDEwOTktT0lELjwvbGk+XHJcbiAgICAgIDxsaT48Yj5Gb3JlaWduIEludGVyZXN0OjwvYj4gSWYgYW55IGludGVyZXN0IGluY29tZSB3YXMgZWFybmVkIGZyb20gZm9yZWlnbiBhY2NvdW50cyBvciBzb3VyY2VzLCBwbGVhc2UgcHJvdmlkZSBkZXRhaWxzLCBpbmNsdWRpbmcgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBlbmFibGUgdXMgdG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgeW91ciBpbnRlcmVzdCBpbmNvbWUgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGNvcnJlY3QuIFlvdSBjYW4gYXR0YWNoIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBieSByZXBseWluZyB0byB0aGlzIGVtYWlsIG9yIHVwbG9hZGluZyB0aGVtIGRpcmVjdGx5IHRvIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQmFuayBBY2NvdW50IE9wZW5pbmcgR2lmdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmV2aWV3aW5nIHlvdXIgdGF4IHNpdHVhdGlvbiBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBhIGdpZnQgZm9yIG9wZW5pbmcgYW4gYWNjb3VudCBhdCBhIGZpbmFuY2lhbCBpbnN0aXR1dGlvbi4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uIHdoZXJlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+VGhlIGRhdGUgdGhlIGFjY291bnQgd2FzIG9wZW5lZC48L2xpPlxyXG4gICAgICAgIDxsaT5BIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBnaWZ0IHJlY2VpdmVkIChlLmcuLCBjYXNoLCBtZXJjaGFuZGlzZSwgb3Igc2VydmljZXMpLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBmYWlyIG1hcmtldCB2YWx1ZSBvZiB0aGUgZ2lmdCBhdCB0aGUgdGltZSBpdCB3YXMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiByZWdhcmRpbmcgdGhlIGdpZnQgKGUuZy4sIGEgbGV0dGVyLCBlbWFpbCBjb25maXJtYXRpb24sIG9yIHN0YXRlbWVudCBpbmRpY2F0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZ2lmdCkuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIGlmIHlvdSBoYXZlIHJlY2VpdmVkIG1vcmUgdGhhbiBvbmUgZ2lmdCBmb3Igb3BlbmluZyBhY2NvdW50cyB3aXRoaW4gdGhlIHNhbWUgdGF4IHllYXIsIGFuZCBpZiBzbywgdGhlIGRldGFpbHMgZm9yIGVhY2guPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIHdlIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgY29tcGx5IHdpdGggYWxsIElSUyByZXF1aXJlbWVudHMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIG9mIHlvdXIgaW5jb21lIGZyb20gQ2VydGlmaWNhdGVzIG9mIERlcG9zaXQgKENEcykgZm9yIHRoZSB0YXggeWVhciwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gY29tcGx5IHdpdGggSVJTIHJlZ3VsYXRpb25zIGFuZCB0byBwb3RlbnRpYWxseSBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TmFtZSBvZiB0aGUgQmFuayBvciBGaW5hbmNpYWwgSW5zdGl0dXRpb246PC9zdHJvbmc+IFdoZXJlIHRoZSBDRCBpcyBoZWxkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWNjb3VudCBOdW1iZXI6PC9zdHJvbmc+IFRoaXMgaGVscHMgaW4gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgSW50ZXJlc3QgRWFybmVkOjwvc3Ryb25nPiBUaGUgYW1vdW50IG9mIGludGVyZXN0IGVhcm5lZCBmcm9tIHRoZSBDRCBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q0QgVGVybTo8L3N0cm9uZz4gVGhlIGR1cmF0aW9uIG9yIHRlcm0gb2YgdGhlIENEIChlLmcuLCA2IG1vbnRocywgMSB5ZWFyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUHVyY2hhc2U6PC9zdHJvbmc+IFdoZW4geW91IG9yaWdpbmFsbHkgYWNxdWlyZWQgdGhlIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWF0dXJpdHkgRGF0ZTo8L3N0cm9uZz4gV2hlbiB0aGUgQ0QgcmVhY2hlZCBvciB3aWxsIHJlYWNoIGl0cyBmdWxsIHRlcm0uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LUlOVCBGb3Jtczo8L3N0cm9uZz4gSWYgcmVjZWl2ZWQsIHBsZWFzZSBpbmNsdWRlIGNvcGllcyBvZiBhbnkgMTA5OS1JTlQgZm9ybXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBDRCBpbnRlcmVzdC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCBkb2N1bWVudHMuIFlvdSBtYXkgdXBsb2FkIHRoZSBkb2N1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwgb3IgcHJvdmlkZSB0aGVtIHZpYSBlbWFpbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGF4LWV4ZW1wdCBpbnRlcmVzdCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBwb3NzaWJseSBmcm9tIG11bmljaXBhbCBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUbyBhY2N1cmF0ZWx5IHByZXBhcmUgeW91ciB0YXggcmV0dXJucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudHMgb2YgVGF4LUV4ZW1wdCBJbnRlcmVzdDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYWxsIDEwOTktSU5UIGZvcm1zIG9yIGVxdWl2YWxlbnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB5b3VyIHRheC1leGVtcHQgaW50ZXJlc3QgaW5jb21lIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIElzc3VpbmcgRW50aXRpZXM6PC9zdHJvbmc+IEEgbGlzdCBvciBzdGF0ZW1lbnQgaWRlbnRpZnlpbmcgdGhlIGVudGl0aWVzIHRoYXQgaXNzdWVkIHRoZSBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUaGlzIGluY2x1ZGVzIG11bmljaXBhbCwgc3RhdGUsIG9yIGZlZGVyYWwgZW50aXRpZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IERldGFpbDo8L3N0cm9uZz4gQSBicmVha2Rvd24gb2YgdGhlIGludmVzdG1lbnRzIGNvbnRyaWJ1dGluZyB0byB0YXgtZXhlbXB0IGludGVyZXN0LiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBwdXJjaGFzZSBkYXRlLCBwdXJjaGFzZSBhbW91bnRzLCBhbmQgYW55IHJlbGF0ZWQgbWF0dXJpdHkgZGF0ZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Ccm9rZXJhZ2UgQWNjb3VudCBTdGF0ZW1lbnRzOjwvc3Ryb25nPiBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHRyYW5zYWN0aW9ucyBhbmQgaG9sZGluZ3MgaW4gdGF4LWV4ZW1wdCBpbnZlc3RtZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFNVCAoQWx0ZXJuYXRpdmUgTWluaW11bSBUYXgpIENvbnNpZGVyYXRpb246PC9zdHJvbmc+IElmIGF2YWlsYWJsZSwgZG9jdW1lbnRhdGlvbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW55IG9mIHRoZSB0YXgtZXhlbXB0IGludGVyZXN0IGlzIHN1YmplY3QgdG8gdGhlIEFsdGVybmF0aXZlIE1pbmltdW0gVGF4LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbiBhY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBQbGVhc2UgZm9yd2FyZCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgY29udGludWVkIGVmZm9ydCB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBiZXN0IHRheCBwcmVwYXJhdGlvbiBzZXJ2aWNlcywgd2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byB0aGUgaW50ZXJlc3QgeW91IG1heSBoYXZlIHJlY2VpdmVkIGZyb20gcmVkZWVtaW5nIGFuIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L3A+XHJcblxyXG4gICAgPHA+VG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGVsaWdpYmlsaXR5IGZvciBleGVtcHRpb24gYW5kIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIElSUywgd2Uga2luZGx5IHJlcXVlc3QgeW91IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiBGb3JtIDEwOTktSU5UIG9yIHNpbWlsYXIgc3RhdGVtZW50IHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24sIGluZGljYXRpbmcgdGhlIGFtb3VudCBvZiBpbnRlcmVzdCByZWNlaXZlZCBmcm9tIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgcmVjb3JkcyBvZiB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kcyByZWRlZW1lZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Cb25kIHNlcmlhbCBudW1iZXJzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Jc3N1ZSBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UmVkZW1wdGlvbiBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50czwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UmVjZWlwdHMgb3IgZG9jdW1lbnRhdGlvbiBmb3IgcXVhbGlmaWVkIGVkdWNhdGlvbmFsIGV4cGVuc2VzIHBhaWQgZHVyaW5nIHRoZSB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UdWl0aW9uIGFuZCBmZWVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3Vyc2UgbWF0ZXJpYWxzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgb3RoZXIgcmVxdWlyZWQgZXhwZW5zZXMgZm9yIGVucm9sbG1lbnQgb3IgYXR0ZW5kYW5jZSBhdCBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UHJvb2Ygb2YgZW5yb2xsbWVudCBmcm9tIGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uIGZvciB0aGUgYmVuZWZpY2lhcnkgb2YgdGhlIGJvbmQuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHRoZSBpbnRlcmVzdCBpbmNvbWUgYW5kIHBvdGVudGlhbGx5IG1heGltaXppbmcgeW91ciB0YXggYmVuZWZpdHMuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBhbmQgcmVjb21tZW5kIGNvbXBpbGluZyB0aGVzZSBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3Qgb3VyIG9mZmljZSBkaXJlY3RseS48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGRpdmlkZW5kIGluY29tZSBvdmVyIHRoZSBwYXN0IHRheCB5ZWFyLiBUbyBlbnN1cmUgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhpcyBpbmNvbWUgYW5kIG9wdGltaXplIHlvdXIgdGF4IHNpdHVhdGlvbiwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5BbGwgMTA5OS1ESVYgZm9ybXMgcmVjZWl2ZWQgZnJvbSBjb3Jwb3JhdGlvbnMgb3IgbXV0dWFsIGZ1bmRzLiBUaGlzIGluY2x1ZGVzIGRpc3RyaWJ1dGlvbnMgb2YgY2FzaCwgc3RvY2ssIG9yIG90aGVyIHByb3BlcnR5LjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgZm9yZWlnbiBkaXZpZGVuZHMgaW5jbHVkaW5nIHRoZSBhbW91bnQgaW4gZm9yZWlnbiBjdXJyZW5jeSwgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLCBhbmQgYW55IGZvcmVpZ24gdGF4IHBhaWQuPC9saT5cclxuICAgICAgPGxpPkZvciBkaXZpZGVuZHMgcmVpbnZlc3RlZCwgcGxlYXNlIHByb3ZpZGUgc3RhdGVtZW50cyBvciBjb25maXJtYXRpb25zIHNob3dpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgIDxsaT5Bbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgZGl2aWRlbmRzIG5vdCBjb3ZlcmVkIGJ5IGEgMTA5OS1ESVYuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFyIGFuZCBsZWdpYmxlIHRvIGF2b2lkIGFueSBwcm9jZXNzaW5nIGRlbGF5cy4gV2UgcmVjb21tZW5kIHNlY3VyZWx5IHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uIHRocm91Z2ggb3VyIGNsaWVudCBwb3J0YWwgb3IgYXJyYW5naW5nIGEgc2VjdXJlIGVtYWlsIHRyYW5zbWlzc2lvbi48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBhcHByZWNpYXRlZCBhcyBpdCB3aWxsIGhlbHAgdXMgaW4gY29tcGxldGluZyB5b3VyIHRheCBwcmVwYXJhdGlvbnMgZWZmaWNpZW50bHkuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNwb3NlZCBDYXBpdGFsIEFzc2V0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzcG9zZWQgQ2FwaXRhbCBBc3NldHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgaW5kaWNhdGVkIGRpc3Bvc2luZyBvZiBjYXBpdGFsIGFzc2V0cyBkdXJpbmcgdGhlIGxhc3QgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgeW91ciB0YXggZmlsaW5ncyBhcmUgY29tcGxldGUgYW5kIGNvbXBsaWFudCwgd2UgcmVxdWlyZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+RGVzY3JpcHRpb24gb2YgZWFjaCBkaXNwb3NlZCBhc3NldDo8L2I+IEluY2x1ZGUgdGhlIHR5cGUgb2YgYXNzZXQgKGUuZy4sIHJlYWwgZXN0YXRlLCBzdG9ja3MsIGJvbmRzKS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5EYXRlIG9mIGFjcXVpc2l0aW9uOjwvYj4gVGhlIHB1cmNoYXNlIGRhdGUgb3IgdGhlIGRhdGUgeW91IG9yaWdpbmFsbHkgY2FtZSBpbnRvIHBvc3Nlc3Npb24gb2YgZWFjaCBhc3NldC48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5BY3F1aXNpdGlvbiBjb3N0OjwvYj4gVGhlIG9yaWdpbmFsIHB1cmNoYXNlIHByaWNlIG9yIGNvc3QgYmFzaXMgb2YgZWFjaCBhc3NldCwgaW5jbHVkaW5nIGFueSBpbXByb3ZlbWVudHMgbWFkZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5EYXRlIG9mIGRpc3Bvc2FsOjwvYj4gVGhlIHNwZWNpZmljIGRhdGUgb24gd2hpY2ggZWFjaCBhc3NldCB3YXMgc29sZCwgZXhjaGFuZ2VkLCBvciBvdGhlcndpc2UgZGlzcG9zZWQgb2YuPC9saT5cclxuICAgICAgICA8bGk+PGI+U2FsZSBvciBkaXNwb3NhbCBwcm9jZWVkczo8L2I+IFRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSB0aGUgZGlzcG9zYWwgb2YgdGhlIGFzc2V0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkFzc29jaWF0ZWQgZXhwZW5zZXM6PC9iPiBBbnkgY29zdHMgaW5jdXJyZWQgZGlyZWN0bHkgZnJvbSB0aGUgc2FsZSBvciBkaXNwb3NhbCBwcm9jZXNzLCBzdWNoIGFzIGJyb2tlcidzIGZlZXMsIGFkdmVydGlzaW5nLCBsZWdhbCBmZWVzLCBldGMuPC9saT5cclxuICAgICAgICA8bGk+PGI+UmVhc29uIGZvciBkaXNwb3NhbDo8L2I+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGRpc3Bvc2FsIG9mIHRoZSBhc3NldCwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgY2FsY3VsYXRpbmcgcG90ZW50aWFsIGNhcGl0YWwgZ2FpbnMgb3IgbG9zc2VzIGFuZCBkZXRlcm1pbmluZyB0aGVpciBpbXBhY3Qgb24geW91ciB0YXggb2JsaWdhdGlvbnMuIFBsZWFzZSBhdHRhY2ggYW55IHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBzYWxlcyByZWNlaXB0cywgZGVlZHMsIGNvbnRyYWN0cywgb3IgYnJva2VyYWdlIHN0YXRlbWVudHMsIHRvIHN1YnN0YW50aWF0ZSB0aGUgZGV0YWlscyBwcm92aWRlZC48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgYXJlIGhlcmUgdG8gYXNzaXN0IHdpdGggYW55IHF1ZXN0aW9ucyB5b3UgbWF5IGhhdmUuIFlvdSBjYW4gcmVhY2ggdXMgdmlhIGVtYWlsIG9yIHBob25lIGZvciBmdXJ0aGVyIGRpc2N1c3Npb24uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk11dHVhbCBGdW5kIEdhaW5cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk11dHVhbCBGdW5kIEdhaW5cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIG9yZGVyIHRvIGFjY3VyYXRlbHkgcmVwb3J0IHlvdXIgbXV0dWFsIGZ1bmQgZWFybmluZ3Mgb24geW91ciB0YXggcmV0dXJuLCBhcyBwZXIgeW91ciBpbmRpY2F0aW9uIG9mIHJlY2VpdmluZyBnYWlucyBmcm9tIGEgbXV0dWFsIGZ1bmQgb3Igc2ltaWxhciBpbnZlc3RtZW50LCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LURJViBGb3JtOjwvc3Ryb25nPiBUaGlzIGZvcm0gaXMgY3J1Y2lhbCBhcyBpdCBwcm92aWRlcyBkZXRhaWxzIG9uIGRpdmlkZW5kcyBhbmQgZGlzdHJpYnV0aW9ucyB5b3UgcmVjZWl2ZWQgZnJvbSB5b3VyIG11dHVhbCBmdW5kIGludmVzdG1lbnRzLiBQbGVhc2UgZW5zdXJlIHRvIHByb3ZpZGUgdGhpcyBmb3JtIGlmIHlvdXIgbXV0dWFsIGZ1bmQgZWFybmluZ3Mgd2VyZSByZXBvcnRlZCBvbiBpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudCBvZiBBY2NvdW50Ojwvc3Ryb25nPiBUaGlzIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGFsbCB0cmFuc2FjdGlvbnMgd2l0aGluIHlvdXIgYWNjb3VudCwgaW5jbHVkaW5nIHB1cmNoYXNlcywgcmVkZW1wdGlvbnMsIGFuZCByZWludmVzdGVkIGRpdmlkZW5kcyB3aGljaCBoZWxwIHVzIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgeW91ciBnYWlucy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlllYXItRW5kIFN1bW1hcnk6PC9zdHJvbmc+IE9mdGVuIG11dHVhbCBmdW5kcyBwcm92aWRlIGEgeWVhci1lbmQgc3VtbWFyeSB0byB0aGVpciBpbnZlc3RvcnMuIFRoaXMgc3VtbWFyeSBjYW4gYmUgdmVyeSBoZWxwZnVsIGluIHByZXBhcmluZyB5b3VyIHRheGVzIGFzIGl0IGNvbnNvbGlkYXRlcyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50czo8L3N0cm9uZz4gVGhpcyBjb3VsZCBpbmNsdWRlIGFkZGl0aW9uYWwgMTA5OSBmb3JtcyAobGlrZSAxMDk5LUIgaWYgYW55IHNhbGVzIG9jY3VycmVkKSwgb3JpZ2luYWwgaW52ZXN0bWVudCBzdGF0ZW1lbnRzLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgY291bGQgaW1wYWN0IHlvdXIgdGF4IHNpdHVhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPldlIHVuZGVyc3RhbmQgdGhhdCBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzIG1heSByZXF1aXJlIHNvbWUgdGltZSwgaG93ZXZlciwgaGF2aW5nIHRoZXNlIHJlYWRpbHkgYXZhaWxhYmxlIHdpbGwgZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgZWZmaWNpZW5jeSBvZiB5b3VyIHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBZb3VyIHByb21wdCByZXNwb25zZSB3aWxsIGJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBkaWZmaWN1bHRpZXMgb2J0YWluaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IG1lLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk11dHVhbCBGdW5kIERpc3Bvc2FsXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJNdXR1YWwgRnVuZCBEaXNwb3NhbFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSd2ZSBtYWRlIGEgZGlzcG9zYWwgb2Ygc2hhcmVzIGluIGEgbXV0dWFsIGZ1bmQgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBhY3QgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGVkIGFjY3VyYXRlbHksIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSA8c3Ryb25nPjEwOTktQiBmb3JtPC9zdHJvbmc+IGFzc29jaWF0ZWQgd2l0aCB0aGUgbXV0dWFsIGZ1bmQgZGlzcG9zYWwsIGlmIGF2YWlsYWJsZS4gVGhpcyBkb2N1bWVudCBwcm92aWRlcyBkZXRhaWxzIG9uIHRoZSBzYWxlIG9mIHlvdXIgc2hhcmVzLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbGVkIDxzdHJvbmc+cmVjb3JkIG9mIHRoZSBwdXJjaGFzZTwvc3Ryb25nPiBvZiB0aGUgbXV0dWFsIGZ1bmQgc2hhcmVzIGluY2x1ZGluZyB0aGUgcHVyY2hhc2UgZGF0ZSBhbmQgY29zdCBiYXNpcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBjYWxjdWxhdGluZyBhbnkgY2FwaXRhbCBnYWluIG9yIGxvc3MuPC9saT5cclxuICAgICAgICA8bGk+SWYgdGhlIDEwOTktQiBmb3JtIGlzIG5vdCBhdmFpbGFibGUsIHBsZWFzZSBwcm92aWRlIGFueSA8c3Ryb25nPmJyb2tlcmFnZSBzdGF0ZW1lbnRzPC9zdHJvbmc+IG9yIG90aGVyIGRvY3VtZW50YXRpb24gdGhhdCBzaG93cyB0aGUgZGlzcG9zYWwgb2YgdGhlIG11dHVhbCBmdW5kIHNoYXJlcywgaW5jbHVkaW5nIHRoZSBzYWxlIGRhdGUgYW5kIGFtb3VudC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8c3Ryb25nPnJlaW52ZXN0ZWQgZGl2aWRlbmRzPC9zdHJvbmc+IG9yIGNhcGl0YWwgZ2FpbnMgZGlzdHJpYnV0aW9ucywgYXMgdGhlc2UgY2FuIGFkanVzdCB5b3VyIGNvc3QgYmFzaXMgYW5kIGFmZmVjdCB0aGUgY2FsY3VsYXRpb24gb2YgeW91ciBjYXBpdGFsIGdhaW4gb3IgbG9zcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkhhdmluZyB0aGlzIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgdGhhdCB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGUgZGlzcG9zYWwgb2YgeW91ciBtdXR1YWwgZnVuZCBzaGFyZXMgYW5kIGFjY3VyYXRlbHkgY2FsY3VsYXRlIGFueSBwb3RlbnRpYWwgY2FwaXRhbCBnYWlucyBvciBsb3NzZXMuIFRoaXMgd2lsbCBhbHNvIGhlbHAgdXMgdG8gb3B0aW1pemUgeW91ciB0YXggbGlhYmlsaXR5IGZvciB0aGUgeWVhci48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBhYm91dCBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC4gV2UncmUgaGVyZSB0byBoZWxwIHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhlIHByb2Nlc3MuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiV2FzaCBTYWxlXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJXYXNoIFNhbGUgVHJhbnNhY3Rpb25cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBpbmRpY2F0aW9uIG9mIGEgcG9zc2libGUgV2FzaCBTYWxlIHRyYW5zYWN0aW9uLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGFjdCBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbGVkIHRyYW5zYWN0aW9uIHJlY29yZHM8L3N0cm9uZz4gLSBQbGVhc2UgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiB0aGUgc2VjdXJpdHkgdGhhdCB3YXMgc29sZCBhbmQgdGhlbiByZXB1cmNoYXNlZCwgaW5jbHVkaW5nIGRhdGVzIGFuZCBhbW91bnRzIGZvciBlYWNoIHRyYW5zYWN0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q29zdCBiYXNpcyBmb3IgcmVwdXJjaGFzZWQgc2VjdXJpdHk8L3N0cm9uZz4gLSBEZXRhaWxzIG9mIHRoZSBjb3N0IGJhc2lzIGZvciB0aGUgc2VjdXJpdGllcyByZXB1cmNoYXNlZCB3aXRoaW4gYSA2MS1kYXkgd2luZG93ICgzMCBkYXlzIGJlZm9yZSB0byAzMCBkYXlzIGFmdGVyIHRoZSBzYWxlKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgc3RhdGVtZW50czwvc3Ryb25nPiAtIENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgc2hvd2luZyB0aGUgdHJhbnNhY3Rpb25zIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TG9zc2VzIHJlYWxpemVkPC9zdHJvbmc+IC0gRG9jdW1lbnRhdGlvbiBvZiBhbnkgbG9zc2VzIHJlYWxpemVkIGZyb20gdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IGNvcnJlc3BvbmRlbmNlPC9zdHJvbmc+IC0gQ29ycmVzcG9uZGVuY2UgZnJvbSBicm9rZXJzIG9yIGZpbmFuY2lhbCBhZHZpc29ycyByZWdhcmRpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBkb2N1bWVudHMgYXJlIG9yZ2FuaXplZCBhbmQgY2xlYXJseSBsYWJlbGVkIGZvciBlYWNoIHRyYW5zYWN0aW9uLiBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBhIHNtb290aGVyIGFuZCBxdWlja2VyIHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIFdhc2ggU2FsZSB0cmFuc2FjdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBwcm92aWRlIGFjY3VyYXRlIHRheCBhZHZpY2UgYW5kIHByZXBhcmF0aW9uLiBGdXJ0aGVyLCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYXNzaXN0IGluIGRldGVybWluaW5nIGhvdyB0aGUgV2FzaCBTYWxlIHJ1bGUgYWZmZWN0cyB0aGUgZGVkdWN0aWJpbGl0eSBvZiBhbnkgbG9zc2VzIHlvdSBtaWdodCBoYXZlIGluY3VycmVkLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLCB0byBlbnN1cmUgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggZmlsaW5ncy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU29sZCBIb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJTb2xkIEhvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSBzb2xkIGEgcGVyc29uYWwgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcmVndWxhdGlvbnMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBTYWxlOjwvc3Ryb25nPiBUaGUgY2xvc2luZyBkYXRlIHdoZW4gdGhlIHNhbGUgd2FzIG9mZmljaWFsbHkgY29tcGxldGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U2FsZSBQcmljZTo8L3N0cm9uZz4gVGhlIHRvdGFsIGFtb3VudCB5b3UgcmVjZWl2ZWQgZm9yIHRoZSBob21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q29zdCBCYXNpczo8L3N0cm9uZz4gT3JpZ2luYWwgcHVyY2hhc2UgcHJpY2UsIHBsdXMgYW55IGltcHJvdmVtZW50cyBtYWRlIHRvIHRoZSBob21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJvcGVydHkgRGV0YWlsczo8L3N0cm9uZz4gQWRkcmVzcyBhbmQgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHkgc29sZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1haW4gUmVzaWRlbmNlIG9yIE5vdDo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgdGhpcyB3YXMgeW91ciBtYWluIHJlc2lkZW5jZSBmb3IgYXQgbGVhc3QgdHdvIG9mIHRoZSBsYXN0IGZpdmUgeWVhcnMgcHJpb3IgdG8gdGhlIHNhbGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9mIEhvbWUgSW1wcm92ZW1lbnRzOjwvc3Ryb25nPiBSZWNlaXB0cyBvciByZWNvcmRzIG9mIGFueSBtYWpvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgcHJvcGVydHksIHdoaWNoIGNhbiBhZmZlY3QgdGhlIGNvc3QgYmFzaXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBVc2U6PC9zdHJvbmc+IElmIG5vdCBhbHdheXMgdXNlZCBhcyBhIHBlcnNvbmFsIGhvbWUsIGRldGFpbHMgb24gYW55IHVzZSBvZiB0aGUgcHJvcGVydHkgZm9yIHJlbnRhbCwgYnVzaW5lc3MsIG9yIG90aGVyIG5vbi1wZXJzb25hbCB1c2UuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGVkIEV4cGVuc2VzOjwvc3Ryb25nPiBBbnkgY29zdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYWxlLCBzdWNoIGFzIGxlZ2FsIGZlZXMsIHJlYWwgZXN0YXRlIGFnZW50IGNvbW1pc3Npb25zLCBhbmQgaG9tZSBzdGFnaW5nIGV4cGVuc2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgZGV0ZXJtaW5pbmcgcG90ZW50aWFsIHRheCBiZW5lZml0cyBvciBvYmxpZ2F0aW9ucy4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhcyBzb29uIGFzIHBvc3NpYmxlLCB0byBlbnN1cmUgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggcmV0dXJuLiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW5zdGFsbG1lbnQgU2FsZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5zdGFsbG1lbnQgU2FsZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB5b3UndmUgc29sZCBwcm9wZXJ0eSB0aGlzIHllYXIgdW5kZXIgYW4gaW5zdGFsbG1lbnQgcGxhbi4gVG8gYWNjdXJhdGVseSByZXBvcnQgdGhpcyB0cmFuc2FjdGlvbiBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U2FsZSBBZ3JlZW1lbnQ6PC9zdHJvbmc+IEEgY29weSBvZiB0aGUgY29tcGxldGUgc2FsZSBhZ3JlZW1lbnQgZGV0YWlsaW5nIHRoZSB0ZXJtcyBvZiB0aGUgaW5zdGFsbG1lbnQgc2FsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IERlc2NyaXB0aW9uOjwvc3Ryb25nPiBBIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eSBzb2xkIChlLmcuLCBsYW5kLCBidWlsZGluZywgZXF1aXBtZW50KS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgU2NoZWR1bGU6PC9zdHJvbmc+IEluZm9ybWF0aW9uIG9uIHRoZSBwYXltZW50IHNjaGVkdWxlIGFncmVlZCB1cG9uLCBpbmNsdWRpbmcgdGhlIGRhdGVzIGFuZCBhbW91bnRzIG9mIGVhY2ggaW5zdGFsbG1lbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbW91bnRzIFJlY2VpdmVkOjwvc3Ryb25nPiBUb3RhbCBhbW91bnRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZyBkb3duIHBheW1lbnQgYW5kIGFueSBpbnN0YWxsbWVudCBwYXltZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByaW5jaXBhbCAmYW1wOyBJbnRlcmVzdCBCcmVha2Rvd246PC9zdHJvbmc+IEEgYnJlYWtkb3duIG9mIHRoZSBhbW91bnRzIHJlY2VpdmVkIGJldHdlZW4gcHJpbmNpcGFsIGFuZCBpbnRlcmVzdCBmb3IgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJvcGVydHkgQmFzaXM6PC9zdHJvbmc+IERvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoZSBwcm9wZXJ0eSdzIG9yaWdpbmFsIGNvc3QsIGltcHJvdmVtZW50cyBtYWRlLCBhbmQgYW55IGRlcHJlY2lhdGlvbiB0YWtlbiBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZSBEb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgcmVsZXZhbnQgZXhwZW5zZXMgaW4gcmVsYXRpb24gdG8gdGhlIHNhbGUgdGhhdCBtaWdodCBiZSBkZWR1Y3RpYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QnV5ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IExlZ2FsIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgYnV5ZXIuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgY2FsY3VsYXRpbmcgYW55IHByb2ZpdCBvciBsb3NzIGZyb20gdGhlIHNhbGUgYW5kIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlIGluc3RhbGxtZW50IHBheW1lbnRzIHJlY2VpdmVkLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm5zLiBZb3UgY2FuIHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGVtYWlsIHRoZW0gdG8gdGF4QGxlbmRhaGFuZGFjY291bnRpbmcuY29tLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJXb3J0aGxlc3MgU2VjdXJpdGllc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiV29ydGhsZXNzIFNlY3VyaXRpZXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkFzIHlvdSBpbmRpY2F0ZWQgdGhhdCB5b3UgaGF2ZSBoYWQgaW52ZXN0bWVudHMsIHN1Y2ggYXMgc3RvY2tzIG9yIGJvbmRzLCB0aGF0IGJlY2FtZSBjb21wbGV0ZWx5IHdvcnRobGVzcyB0aGlzIHllYXIsIHdlIG5lZWQgdG8gZ2F0aGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHByb3Blcmx5IHJlcG9ydCB0aGVzZSBvbiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgdGhlIFNlY3VyaXR5Ojwvc3Ryb25nPiBGdWxsIG5hbWUgYW5kIHR5cGUgb2YgZWFjaCBzZWN1cml0eSB0aGF0IGJlY2FtZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QdXJjaGFzZSBEZXRhaWxzOjwvc3Ryb25nPiBEYXRlIG9mIHB1cmNoYXNlIGFuZCB0aGUgcHVyY2hhc2UgcHJpY2UgZm9yIGVhY2ggc2VjdXJpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Xb3J0aGxlc3NuZXNzIERldGVybWluYXRpb24gRGF0ZTo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgd2hlbiB5b3UgZGV0ZXJtaW5lZCB0aGUgc2VjdXJpdHkgdG8gYmUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IHJlY2VpdmVkIG9yIHVzZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGludmVzdG1lbnRzIGJlY2FtZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BdHRlbXB0cyB0byBTZWxsIG9yIFRyYWRlOjwvc3Ryb25nPiBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGFueSBhdHRlbXB0cyBtYWRlIHRvIHNlbGwgb3IgdHJhZGUgdGhlIHNlY3VyaXRpZXMgYmVmb3JlIGRldGVybWluaW5nIHRoZXkgd2VyZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IEFjY291bnQgU3RhdGVtZW50czo8L3N0cm9uZz4gQ29waWVzIG9mIHlvdXIgaW52ZXN0bWVudCBhY2NvdW50IHN0YXRlbWVudHMgc2hvd2luZyB0aGUgd29ydGhsZXNzIHNlY3VyaXRpZXMgYW5kIHRoZWlyIHZhbHVlIG92ZXIgdGltZSwgbGVhZGluZyB1cCB0byB0aGVpciBkZWNsYXJlZCB3b3J0aGxlc3NuZXNzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhY2N1cmF0ZSBhbmQgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggcmV0dXJuLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24uPC9wPmBcclxuICB9LCBcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNlY3Rpb24gMTI0NCBCdXNpbmVzcyBTdG9ja1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2VjdGlvbiAxMjQ0IEJ1c2luZXNzIFN0b2NrXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBzYWxlIG9mIHNoYXJlcyBpbiBhIHNtYWxsIGJ1c2luZXNzIHdoZXJlIHlvdSB3ZXJlIGFuIG9yaWdpbmFsIGludmVzdG9yLiBBcyB5b3UgaW5kaWNhdGVkIGEgbG9zcyBvbiB0aGlzIGludmVzdG1lbnQsIGl0J3MgY3J1Y2lhbCB0byBldmFsdWF0ZSB3aGV0aGVyIHRoaXMgcXVhbGlmaWVzIGZvciBzcGVjaWFsIHRheCB0cmVhdG1lbnQgdW5kZXIgU2VjdGlvbiAxMjQ0LiBUbyBhY2N1cmF0ZWx5IGFuYWx5emUgYW5kIHJlcG9ydCB0aGVzZSBhY3Rpdml0aWVzLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIDxzdHJvbmc+Y2VydGlmaWNhdGUgb2YgaW5jb3Jwb3JhdGlvbjwvc3Ryb25nPiBvciBvdGhlciBkb2N1bWVudGF0aW9uIGNvbmZpcm1pbmcgdGhlIHN0b2NrIHF1YWxpZmllcyBhcyBTZWN0aW9uIDEyNDQgc3RvY2suPC9saT5cclxuICAgICAgICA8bGk+QSA8c3Ryb25nPmRldGFpbGVkIHN0YXRlbWVudDwvc3Ryb25nPiBvZiB0aGUgaW52ZXN0bWVudCwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50IGFuZCBkYXRlIG9mIHRoZSBvcmlnaW5hbCBpbnZlc3RtZW50LjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+TnVtYmVyIG9mIHNoYXJlcyBwdXJjaGFzZWQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiBiZWluZyBhbiBvcmlnaW5hbCBob2xkZXIuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgdGhlIHNhbGU8L3N0cm9uZz4sIHNwZWNpZnlpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5EYXRlIG9mIHNhbGUuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5OdW1iZXIgb2Ygc2hhcmVzIHNvbGQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5TYWxlIHByaWNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGFzc29jaWF0ZWQgZXhwZW5zZXMgd2l0aCB0aGUgc2FsZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPkEgYnJpZWYgZXhwbGFuYXRpb24gb2YgdGhlIGNpcmN1bXN0YW5jZXMgbGVhZGluZyB0byB0aGUgbG9zcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gd2lsbCBlbmFibGUgdXMgdG8gYXNzZXNzIHRoZSBlbGlnaWJpbGl0eSBmb3IgYSBiZW5lZmljaWFsIHRheCB0cmVhdG1lbnQgdW5kZXIgU2VjdGlvbiAxMjQ0LCBwb3RlbnRpYWxseSBtaW5pbWl6aW5nIHlvdXIgdGF4YWJsZSBpbmNvbWUuIFBsZWFzZSBzdWJtaXQgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSB0byBlbnN1cmUgdGltZWx5IGZpbGluZy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZWxhdGVkIFBhcnR5IFRyYW5zYWN0aW9uc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVsYXRlZCBQYXJ0eSBUcmFuc2FjdGlvbnNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHJlY2VpdmVkIHlvdXIgcmVzcG9uc2UgaW5kaWNhdGluZyB0aGF0IHRoZXJlIHdlcmUgdHJhbnNhY3Rpb25zIHdpdGggcmVsYXRlZCBwYXJ0aWVzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZXNlIHRyYW5zYWN0aW9ucyBhbmQgaW5jb3Jwb3JhdGUgdGhlbSBpbnRvIHlvdXIgdGF4IGZpbGluZ3MsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIHRoZSBUcmFuc2FjdGlvbnM6PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UeXBlIG9mIHRyYW5zYWN0aW9ucyAoZS5nLiwgc2FsZSwgdHJhZGUsIHRyYW5zZmVyIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzKS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRhdGUocykgb2YgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RGVzY3JpcHRpb24gb2YgaXRlbXMgb3IgcHJvcGVydGllcyB0cmFuc2ZlcnJlZC48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UGFydGllcyBJbnZvbHZlZDo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPk5hbWVzIGFuZCByZWxhdGlvbnNoaXBzIHRvIHlvdSAoZS5nLiwgZmFtaWx5IG1lbWJlciwgZnJpZW5kLCBvciBidXNpbmVzcyBlbnRpdHkpLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYSBidXNpbmVzcyBlbnRpdHkgaXMgaW52b2x2ZWQsIHlvdXIgYW5kIHlvdXIgZmFtaWx5J3Mgb3duZXJzaGlwIHBlcmNlbnRhZ2UgaW4gdGhlIGJ1c2luZXNzLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GaW5hbmNpYWwgRGV0YWlscyBvZiB0aGUgVHJhbnNhY3Rpb25zOjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+TWFya2V0IHZhbHVlIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzIGF0IHRoZSB0aW1lIG9mIHRyYW5zYWN0aW9uLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50IHJlY2VpdmVkIG9yIHBhaWQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgZXhjaGFuZ2Ugb2YgZ29vZHMsIHNlcnZpY2VzLCBvciBvdGhlciBhc3NldHMsIGluY2x1ZGluZyB0aGVpciBmYWlyIG1hcmtldCB2YWx1ZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbjo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvcGllcyBvZiBjb250cmFjdHMgb3IgYWdyZWVtZW50cy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlJlY2VpcHRzIG9yIHByb29mIG9mIHBheW1lbnQvZXhjaGFuZ2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BcHByYWlzYWxzIG9yIHZhbHVhdGlvbnMgb2YgcHJvcGVydHkgb3IgaW52ZXN0bWVudHMsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cyByZWdhcmRpbmcgcmVsYXRlZCBwYXJ0eSB0cmFuc2FjdGlvbnMgYW5kIGF2b2lkaW5nIGFueSBwb3RlbnRpYWwgcGVuYWx0aWVzIG9yIGF1ZGl0cy4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGNvbXBsZXRpb24gb2YgeW91ciB0YXggcHJlcGFyYXRpb25zLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbl07XHJcbiJdfQ==
616
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCO1FBQ25DLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7K0RBVXVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OzsrREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHFCQUFxQjtRQUN2QyxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0VBU3VEO0tBQzVFO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7UUFDckQsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FFQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7OzttTUFRMks7S0FDaE07SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzJDQWFtQjtLQUN4QztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUU7Ozs7Ozs7O3NIQVE4RjtLQUNuSDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsc0JBQXNCO1FBQ3hDLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsa0JBQWtCLEVBQUU7Ozs7Ozs7O3lLQVFpSjtLQUN0SztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsV0FBVztRQUM3QixXQUFXLEVBQUUsdUJBQXVCO1FBQ3BDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7OzswSkFXa0k7S0FDdko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLFdBQVc7UUFDN0IsV0FBVyxFQUFFLFdBQVc7UUFDeEIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzsrREFjdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFOzs7Ozs7Ozs7OzJDQVVtQjtLQUN4QztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0RBc0J1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNEJBQTRCO1FBQzlDLFdBQVcsRUFBRSw0QkFBNEI7UUFDekMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0pBK0IwSDtLQUMvSTtDQWlCRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFjdGlvblRheEZyYWdtZW50cyA9IFtcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgUHJvdmlkZSBQcmlvciBZZWFyIFRheCBSZXR1cm5zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgcmVxdWlyZSB5b3VyIGFzc2lzdGFuY2UgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3MuIE9uZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHlvdXIgPHN0cm9uZz5QcmlvciBZZWFyIFRheCBSZXR1cm5zPC9zdHJvbmc+LiBUaGlzIGRvY3VtZW50IGlzIGVzc2VudGlhbCBmb3Igc2V2ZXJhbCByZWFzb25zLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiB2ZXJpZnlpbmcgY2FycnktZm9yd2FyZCBhbW91bnRzLCBjb21wYXJpbmcgeWVhci1vdmVyLXllYXIgaW5jb21lIGFuZCBkZWR1Y3Rpb25zLCBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIHRheCBsYXdzLjwvcD5cclxuICAgIDxwPlRvIGZhY2lsaXRhdGUgeW91ciB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPkZlZGVyYWwgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5TdGF0ZSB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhciwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgPHN0cm9uZz5ub3RpY2VzIG9yIGFtZW5kbWVudHM8L3N0cm9uZz4gcmVsYXRlZCB0byB5b3VyIHByaW9yIHllYXIgdGF4IHJldHVybnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgZGlmZmljdWx0eSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgbGV0IHVzIGtub3cgYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBQcm92aWRpbmcgdGhlc2Ugd2lsbCBlbmFibGUgdXMgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gd2l0aG91dCBkZWxheS48L3A+YCxcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU3RhdHV0b3J5IEV4dGVuc2lvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgRGV0ZXJtaW5pbmcgRWxpZ2liaWxpdHkgZm9yIFN0YXR1dG9yeSBGaWxpbmcgRXh0ZW5zaW9uc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgeW91IHF1YWxpZnkgZm9yIHN0YXR1dG9yeSBmaWxpbmcgZXh0ZW5zaW9ucyBmb3IgeW91ciB0YXggcmV0dXJucywgd2UgcmVxdWlyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIHlvdS4gUGxlYXNlIHNlZSBiZWxvdyB0aGUgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiBuZWVkZWQgYmFzZWQgb24gZGlmZmVyZW50IGVsaWdpYmlsaXR5IGNyaXRlcmlhOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GZWRlcmFsIERpc2FzdGVyIEFyZWFzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db25maXJtYXRpb24gb2YgeW91ciBwcmltYXJ5IHJlc2lkZW5jZSBsb2NhdGlvbiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgcmVjZWl2ZWQgcmVnYXJkaW5nIGRpc2FzdGVyIGRlY2xhcmF0aW9ucyBpbiB5b3VyIGFyZWEuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxpdmluZyBBYnJvYWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlByb29mIG9mIHJlc2lkZW5jZSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGZvciBtb3JlIHRoYW4gMzMwIGZ1bGwgZGF5cyB3aXRoaW4gYSAxMi1tb250aCBwZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgeW91ciBwaHlzaWNhbCBwcmVzZW5jZSBvciBib25hIGZpZGUgcmVzaWRlbmNlIGluIGEgZm9yZWlnbiBjb3VudHJ5LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmUgTWlsaXRhcnk8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gaW5kaWNhdGluZyBhY3RpdmUgZHV0eSBzdGF0dXMsIGluY2x1ZGluZyBkYXRlcyBvZiBzZXJ2aWNlIHdpdGhpbiB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBvcmRlcnMgZm9yIG92ZXJzZWFzIGRlcGxveW1lbnQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvbWJhdCBab25lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5PZmZpY2lhbCBvcmRlcnMgZGVtb25zdHJhdGluZyB5b3VyIGRlcGxveW1lbnQgdG8gYSBjb21iYXQgem9uZSwgaW5jbHVkaW5nIHRoZSBzcGVjaWZpYyBkYXRlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSByZWxldmFudCBjb21tdW5pY2F0aW9uIGZyb20gdGhlIERlcGFydG1lbnQgb2YgRGVmZW5zZSBvciBvdGhlciBvZmZpY2lhbCBib2RpZXMgcmVnYXJkaW5nIHlvdXIgc2VydmljZSBpbiBhIGNvbWJhdCB6b25lLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGVwZW5kZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVxdWVzdCBmb3IgRGVwZW5kZW50IEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGRlcGVuZGVudHMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXBwbHlpbmcgdGhlIG1vc3QgYmVuZWZpY2lhbCBkZXBlbmRlbmN5IHRlc3RzLCBpbmNsdWRpbmcgcXVhbGlmaWNhdGlvbnMgZm9yIEhlYWQgb2YgSG91c2Vob2xkIChIT0gpLCBDaGlsZCBUYXggQ3JlZGl0LCBhbmQgb3RoZXIgcmVsYXRlZCBiZW5lZml0cy4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIGZvciBlYWNoIG9mIHlvdXIgY2xhaW1lZCBkZXBlbmRlbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GdWxsIE5hbWU6PC9zdHJvbmc+IFRoZSBjb21wbGV0ZSBsZWdhbCBuYW1lIG9mIHRoZSBkZXBlbmRlbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Tb2NpYWwgU2VjdXJpdHkgTnVtYmVyIChTU04pIG9yIFRheHBheWVyIElkZW50aWZpY2F0aW9uIE51bWJlciAoVElOKTo8L3N0cm9uZz4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBCaXJ0aDo8L3N0cm9uZz4gSGVscHMgdG8gZGV0ZXJtaW5lIGVsaWdpYmlsaXR5IGZvciBjZXJ0YWluIGNyZWRpdHMgbGlrZSB0aGUgQ2hpbGQgVGF4IENyZWRpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlbGF0aW9uc2hpcCB0byBZb3U6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRlcGVuZGVudCdzIHJlbGF0aW9uc2hpcCAoc29uLCBkYXVnaHRlciwgc3RlcGNoaWxkLCBmb3N0ZXIgY2hpbGQsIGJyb3RoZXIsIHNpc3RlciwgZXRjLikgdG8geW91LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVzaWRlbmN5Ojwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgbGl2ZWQgd2l0aCB5b3UgZm9yIG1vcmUgdGhhbiBoYWxmIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIFN1cHBvcnQ6PC9zdHJvbmc+IENvbmZpcm0geW91IHByb3ZpZGVkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBkZXBlbmRlbnTigJlzIGZpbmFuY2lhbCBzdXBwb3J0IGZvciB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNpdGl6ZW5zaGlwOjwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgaXMgYSBVLlMuIGNpdGl6ZW4sIFUuUy4gbmF0aW9uYWwsIG9yIGEgcmVzaWRlbnQgYWxpZW4uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSW5kaWNhdGUgd2hldGhlciB0aGUgZGVwZW5kZW50IGlzIG1hcnJpZWQgYW5kLCBpZiBzbywgd2hldGhlciB0aGV5IGFyZSBmaWxpbmcgam9pbnRseS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkluY29tZSBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgcHJvdmlkZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgaW5jb21lIHRoZSBkZXBlbmRlbnQgbWF5IGhhdmUgZWFybmVkIG9yIHJlY2VpdmVkLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB5b3UgcHJvdmlkZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgaW5mb3JtYXRpb24gdG8gYXZvaWQgYW55IGRlbGF5cyBpbiB0aGUgcHJvY2Vzc2luZyBvZiB5b3VyIHRheCByZXR1cm4uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSGVhZCBvZiBIb3VzZWhvbGQgRmlsaW5nXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgYW5kIGNvbXBsaWFudCB0YXggZmlsaW5nIHVuZGVyIHRoZSBcIkhlYWQgb2YgSG91c2Vob2xkXCIgc3RhdHVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiBUaGlzIHN0YXR1cyBjYW4gcHJvdmlkZSBzaWduaWZpY2FudCB0YXggYmVuZWZpdHMsIGFuZCBpdCBpcyBjcnVjaWFsIHRoYXQgYWxsIElSUyByZXF1aXJlbWVudHMgYXJlIG1ldC4gUGxlYXNlIHByb3ZpZGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IENvbmZpcm1hdGlvbiBvZiB5b3VyIG1hcml0YWwgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IGRheSBvZiB0aGUgdGF4IHllYXIgKGUuZy4sIHNpbmdsZSwgZGl2b3JjZWQsIGxlZ2FsbHkgc2VwYXJhdGVkKS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+SG91c2Vob2xkIEV4cGVuc2VzOjwvc3Ryb25nPiBEZXRhaWxlZCByZWNvcmRzIGluZGljYXRpbmcgdGhhdCB5b3UgcGFpZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY29zdHMgb2Yga2VlcGluZyB1cCBhIGhvbWUgZm9yIHRoZSB0YXggeWVhci4gVGhpcyBpbmNsdWRlcyByZW50LCBtb3J0Z2FnZSBpbnRlcmVzdCwgcHJvcGVydHkgdGF4ZXMsIHV0aWxpdGllcywgcmVwYWlycywgbWFpbnRlbmFuY2UsIGFuZCBncm9jZXJpZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPlF1YWxpZnlpbmcgUGVyc29uOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcXVhbGlmeWluZyBwZXJzb24ocykgd2hvIGxpdmVkIHdpdGggeW91IGluIHRoZSBob21lIGZvciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgeWVhciwgZXhjZXB0IGZvciB0ZW1wb3JhcnkgYWJzZW5jZXMgc3VjaCBhcyBzY2hvb2wuIFBsZWFzZSBpbmNsdWRlOlxyXG4gICAgICA8dWw+XHJcbiAgICAgIDxsaT5GdWxsIG5hbWUgYW5kIHJlbGF0aW9uc2hpcCB0byB5b3UgKGUuZy4sIGNoaWxkLCBwYXJlbnQsIHNpYmxpbmcpLjwvbGk+XHJcbiAgICAgIDxsaT5EdXJhdGlvbiBvZiByZXNpZGVuY3kgYXQgeW91ciBob21lIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgPGxpPlN1cHBvcnRpbmcgZG9jdW1lbnRzIChiaXJ0aCBjZXJ0aWZpY2F0ZXMsIHNjaG9vbCByZWNvcmRzLCBldGMuKSBwcm92aW5nIHRoZSByZXNpZGVuY3kgYW5kIHJlbGF0aW9uc2hpcC48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgU3VwcG9ydDo8L3N0cm9uZz4gQW55IGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHlvdXIgY2xhaW0gZm9yIHRoZSBIZWFkIG9mIEhvdXNlaG9sZCBmaWxpbmcgc3RhdHVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCBwcm92aWRpbmcgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgeW91ciBiZW5lZml0IGFuZCB0byBjb21wbHkgd2l0aCB0YXggbGF3cy4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkZXRhaWxzLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbmZvcm1hdGlvbiBvbiBSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIHNwb3VzZSBpcyBub3QgYSBVLlMuIGNpdGl6ZW4uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHlvdXIgdGF4IHN0YXR1cywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVjZXNzYXJ5IFRheCBSZXNpZGVuY3kgVGVzdHMsIHdoaWNoIGluY2x1ZGUgdGhlIDxzdHJvbmc+R3JlZW4gQ2FyZCBUZXN0PC9zdHJvbmc+IGFuZCB0aGUgPHN0cm9uZz5TdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0PC9zdHJvbmc+LiBUaGlzIHdpbGwgaGVscCB1cyBlbnN1cmUgeW91ciB0YXggcmV0dXJucyBhcmUgY29tcGxldGVkIGNvcnJlY3RseSBhbmQgY29tcGx5IHdpdGggVS5TLiByZWd1bGF0aW9ucy48L3A+XHJcblxyXG4gICAgPHA+VG8gcHJvY2VlZCwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5HcmVlbiBDYXJkIFN0YXR1czo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgeW91IG9yIHlvdXIgc3BvdXNlIGhhdmUgYmVlbiBpc3N1ZWQgYSBVLlMuIGdyZWVuIGNhcmQgKExhd2Z1bCBQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCkgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgdGF4IHllYXIuIElmIHllcywgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIGdyZWVuIGNhcmQgb3IgdGhlIG9mZmljaWFsIGRvY3VtZW50IGNvbmZpcm1pbmcgdGhlIHN0YXR1cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQXJyaXZhbCBpbiB0aGUgVS5TLjo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGVzIHdoZW4geW91IGFuZC9vciB5b3VyIHNwb3VzZSBmaXJzdCBhcnJpdmVkIGluIHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5UcmF2ZWwgSGlzdG9yeTo8L3N0cm9uZz4gQSBkZXRhaWxlZCBsaXN0IG9mIGFsbCB0aGUgZGF0ZXMgeW91IGFuZC9vciB5b3VyIHNwb3VzZSBlbnRlcmVkIGFuZCBsZWZ0IHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdGhlIFN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3QuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WaXNhIFR5cGU6PC9zdHJvbmc+IElmIHlvdSBvciB5b3VyIHNwb3VzZSBhcmUgb24gYSB2aXNhLCBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIHZpc2EuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFRheCBGaWxpbmdzOjwvc3Ryb25nPiBDb3BpZXMgb2YgbGFzdCB5ZWFyJ3MgdGF4IHJldHVybnMsIGlmIGFwcGxpY2FibGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIHByb3ZpZGUgY29udGV4dCBhbmQgaGVscCBkZXRlcm1pbmUgcmVzaWRlbmN5IHN0YXR1cyBtb3JlIGFjY3VyYXRlbHkuPC9saT5cclxuICAgIDwvb2w+XHJcblxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZS4gWW91IGNhbiBzZW5kIHRoZW0gdG8gdXMgdmlhIGVtYWlsIG9yIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLiBGb3IgYW55IHF1ZXN0aW9ucyBvciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+XHJcblxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IHdpdGggeW91ciB0YXggcHJlcGFyYXRpb24uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSm9pbnQgVGF4IFJlbGllZiBEZXRhaWxzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBhc3Npc3QgeW91IGVmZmVjdGl2ZWx5IHdpdGggeW91ciByZXF1ZXN0IGZvciBqb2ludCB0YXggcmVsaWVmLCB3ZSBuZWVkIHRvIGNvbGxlY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCB5b3VyIHNpdHVhdGlvbiB0aG9yb3VnaGx5LiBUaGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIG1vc3Qgc3VpdGFibGUgdHlwZSBvZiByZWxpZWYgZm9yIHlvdXIgY2lyY3Vtc3RhbmNlcywgd2hpY2ggbWF5IGluY2x1ZGUgSW5ub2NlbnQgU3BvdXNlIFJlbGllZiwgSW5qdXJlZCBTcG91c2UgQWxsb2NhdGlvbiwgU2VwYXJhdGlvbiBvZiBMaWFiaWxpdHkgUmVsaWVmLCBvciBFcXVpdGFibGUgUmVsaWVmLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbXBsZXRlIFRheCBSZXR1cm5zOjwvc3Ryb25nPiBDb3BpZXMgb2YgYWxsIHRheCByZXR1cm5zIGZvciB0aGUgeWVhcnMgeW91IGFyZSByZXF1ZXN0aW5nIHJlbGllZi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCBTdGF0ZW1lbnQ6PC9zdHJvbmc+IEEgd3JpdHRlbiBzdGF0ZW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGJlbGlldmUgeW91IHF1YWxpZnkgZm9yIHJlbGllZiwgaW5jbHVkaW5nIGFueSBzcGVjaWZpYyBldmVudHMgb3IgY2lyY3Vtc3RhbmNlcyB5b3Ugd2FudCB1cyB0byBjb25zaWRlci48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gUHJvb2Ygb2YgeW91ciBjdXJyZW50IGluY29tZSBhbmQgdGhhdCBvZiB5b3VyIHNwb3VzZSBpZiBhcHBsaWNhYmxlLCBzdWNoIGFzIHJlY2VudCBwYXkgc3R1YnMsIFctMiBmb3Jtcywgb3Igb3RoZXIgaW5jb21lIHN0YXRlbWVudHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgRmluYW5jaWFsIFNpdHVhdGlvbjo8L3N0cm9uZz4gRG9jdW1lbnRzIHNob3dpbmcgeW91ciBjdXJyZW50IGZpbmFuY2lhbCBzaXR1YXRpb24sIGluY2x1ZGluZyBiYW5rIHN0YXRlbWVudHMsIG1vbnRobHkgYmlsbHMsIGFuZCBhbnkgb3RoZXIgbGlhYmlsaXRpZXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBNYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgbGVnYWwgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gc2VwYXJhdGlvbiwgZGl2b3JjZSwgb3IgYW5udWxtZW50LjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHRoYXQgcHJvdmUgd2hlcmUgZWFjaCBvZiB5b3UgaGFzIGxpdmVkIGR1cmluZyB0aGUgdGF4IHllYXJzIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGpvaW50IHRheCBsaWFiaWxpdHksIHBsZWFzZSBpbmNsdWRlIGNvcGllcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXJseSBsZWdpYmxlLiBZb3UgbWF5IHNlbmQgdGhlbSB2aWEgZW1haWwsIG9yIHVwbG9hZC4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IHRvIHByb3ZpZGUsIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9jZXNzIGNhbiBiZSBjb21wbGV4LCBidXQgd2UgYXJlIGhlcmUgdG8gZ3VpZGUgeW91IHRocm91Z2ggaXQuIE91ciBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgc2l0dWF0aW9uIHRvIGFkdm9jYXRlIGZvciB0aGUgbW9zdCBmYXZvcmFibGUgb3V0Y29tZSBvbiB5b3VyIGJlaGFsZi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIHJlcXVpcmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHlvdXIgc291cmNlcyBvZiBpbmNvbWUuIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB5b3VyIDEwOTkgTkVDIEluY29tZS4gVGhlIDEwOTktTkVDIGZvcm0gaXMgY3J1Y2lhbCBmb3IgY29ycmVjdGx5IHJlcG9ydGluZyB5b3VyIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gZW5zdXJlIGEgdGhvcm91Z2ggYW5kIGFjY3VyYXRlIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdXMgd2l0aCB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+QWxsIDEwOTktTkVDIGZvcm1zPC9iPiB5b3UgcmVjZWl2ZWQgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8Yj5hZGRpdGlvbmFsIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb248L2I+IG5vdCByZXBvcnRlZCBvbiBhIDEwOTktTkVDIGZvcm0uPC9saT5cclxuICAgICAgICA8bGk+SW5mb3JtYXRpb24gcmVnYXJkaW5nIDxiPmV4cGVuc2VzIHJlbGF0ZWQgdG8geW91ciAxMDk5IE5FQyBpbmNvbWU8L2I+LCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgbm90IHlldCByZWNlaXZlZCBhbGwgeW91ciAxMDk5LU5FQyBmb3JtcywgcGxlYXNlIGxldCB1cyBrbm93LCBhbmQgcHJvdmlkZSBhbiBlc3RpbWF0ZSBvZiB3aGVuIHlvdSBleHBlY3QgdG8gcmVjZWl2ZSB0aGVtLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBhY2N1cmF0ZWx5IHJlcG9ydGluZyB5b3VyIGluY29tZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMgZnJvbSB0aGUgSVJTLjwvcD5cclxuICAgIDxwPlBsZWFzZSByZWFjaCBvdXQgdG8gdXMgZGlyZWN0bHkgc2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24uIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBwcm9jZXNzZWQgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkuPC9wPlxyXG5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBTY2hlZHVsZSBLIGluY29tZSBmb3IgdGhlIGN1cnJlbnQgdGF4IHllYXIuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB3ZSBnYXRoZXIgYWxsIG5lY2Vzc2FyeSBkb2N1bWVudHMgcmVsYXRlZCB0byB0aGlzIGluY29tZS48L3A+XHJcbiAgICA8cD5JZiB3ZSBhcmUgcHJlcGFyaW5nIHlvdXIgYnVzaW5lc3MgcmV0dXJuLCByZXN0IGFzc3VyZWQgdGhhdCB3ZSB3aWxsIGdlbmVyYXRlIHRoZSBhcHBsaWNhYmxlIFNjaGVkdWxlIEstMShzKSBmb3IgeW91ciBidXNpbmVzcyBpbnRlcmVzdHMuIEhvd2V2ZXIsIGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIGNvbGxlY3QgY29waWVzIG9mIDxzdHJvbmc+YWxsIG90aGVyIFNjaGVkdWxlIEstMXM8L3N0cm9uZz4geW91IG1heSBoYXZlIHJlY2VpdmVkIHRvIGluY29ycG9yYXRlIGludG8geW91ciBwZXJzb25hbCB0YXggcmV0dXJuLjwvcD4gIFxyXG4gICAgPGgzPlNwZWNpZmljIERvY3VtZW50IFJlcXVlc3Q6PC9oMz5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QW55IGFuZCBhbGwgU2NoZWR1bGUgSy0xKHMpIHlvdSBoYXZlIHJlY2VpdmVkIGZyb206PC9saT5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5QYXJ0bmVyc2hpcHM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+UyBDb3Jwb3JhdGlvbnM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+RXN0YXRlIG9yIFRydXN0czwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgPHN0cm9uZz5jbGVhciBhbmQgbGVnaWJsZTwvc3Ryb25nPiB0byBwcmV2ZW50IGFueSBkZWxheXMgaW4gcHJvY2Vzc2luZyB5b3VyIHJldHVybi4gWW91IG1heSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLCBvciBjb250YWN0IHVzIHRvIG1ha2UgYWx0ZXJuYXRpdmUgYXJyYW5nZW1lbnRzIGlmIG5lY2Vzc2FyeS48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYW55IGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2Ygc2VsZi1lbXBsb3ltZW50IGluY29tZSBub3QgcmVwb3J0ZWQgdGhyb3VnaCAxMDk5LU5FQyBmb3JtcyBvciBhIFNjaGVkdWxlIEstMS4gVG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBhY2N1cmF0ZSBhbmQgbWF4aW1pemVzIHlvdXIgYmVuZWZpdHMsIGl0J3MgY3J1Y2lhbCB3ZSBnYXRoZXIgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlIHNvdXJjZXMgb2YgaW5jb21lLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eTo8L3N0cm9uZz4gQnJpZWZseSBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGVhY2ggYWN0aXZpdHkgZnJvbSB3aGljaCB5b3UgZGVyaXZlIHNlbGYtZW1wbG95bWVudCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiBvcGVyYXRpb246PC9zdHJvbmc+IEZvciBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eSwgc3BlY2lmeSB0aGUgZGF0ZXMgb3IgcmFuZ2Ugb2YgZGF0ZXMgZHVyaW5nIHdoaWNoIHlvdSBlYXJuZWQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgaW5jb21lIGdlbmVyYXRlZDo8L3N0cm9uZz4gRm9yIGVhY2ggYWN0aXZpdHksIHByb3ZpZGUgdGhlIHRvdGFsIGFtb3VudCBvZiBpbmNvbWUgZWFybmVkIGJlZm9yZSBhbnkgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5FeHBlbnNlcyBpbmN1cnJlZDo8L3N0cm9uZz4gTGlzdCBhbGwgZXhwZW5zZXMgcmVsYXRlZCB0byBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eS4gUGxlYXNlIGNhdGVnb3JpemUgdGhlc2UgZXhwZW5zZXMgKGUuZy4sIG9mZmljZSBzdXBwbGllcywgdHJhdmVsLCBhZHZlcnRpc2luZykuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9yIGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBleGlzdGluZyByZWNvcmRzIG9yIGRvY3VtZW50YXRpb24gdGhhdCBjb3Jyb2JvcmF0ZSB5b3VyIGluY29tZSBhbmQgZXhwZW5zZXMsIHN1Y2ggYXMgYmFuayBzdGF0ZW1lbnRzLCByZWNlaXB0cywgaW52b2ljZXMsIG9yIGNvbnRyYWN0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGFtb3VudCBvZiB0YXggeW91IG93ZSBhbmQgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIHRoYXQgY2FuIG1pbmltaXplIHlvdXIgdGF4IGxpYWJpbGl0eS4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFlvdXIgdGltZWx5IGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQsIGFuZCB3ZSBhcmUgaGVyZSB0byBoZWxwIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UaGFuayB5b3UgZm9yIGVudHJ1c3RpbmcgdXMgd2l0aCB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gQXMgcGFydCBvZiBvdXIgY29tcHJlaGVuc2l2ZSByZXZpZXcgYW5kIGluIG91ciBxdWVzdCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZ3MsIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB3YWdlcyBmcm9tIGVtcGxveW1lbnQgb3ZlciB0aGUgcGFzdCB0YXggeWVhci48L3A+XHJcbiAgICA8cD5UbyBwcm9jZWVkIGVmZmVjdGl2ZWx5LCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlctMiBGb3Jtczo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgY29waWVzIG9mIGFsbCBXLTIgZm9ybXMgcmVjZWl2ZWQgZnJvbSB5b3VyIGVtcGxveWVycy4gVGhpcyBpbmNsdWRlcyB3YWdlcyBlYXJuZWQgZnJvbSBhbGwgc291cmNlcywgbm90IGp1c3QgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZlcmlmaWNhdGlvbiBvZiBTLUNvcnBvcmF0aW9uIFdhZ2VzOjwvc3Ryb25nPiBJZiB3ZSBhcmUgYWxzbyBoYW5kbGluZyB5b3VyIGJ1c2luZXNzIHRheGVzIGZvciBhbiBTLUNvcnBvcmF0aW9uLCB3ZSBsaWtlbHkgaGF2ZSB0aGUgd2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhhdCBlbnRpdHkuIEhvd2V2ZXIsIGZvciB0aG9yb3VnaG5lc3MgYW5kIGNvbXBsaWFuY2UsIHBsZWFzZSBjb25maXJtIGlmIHRoZSB3YWdlcyBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uIGFyZSBmdWxseSByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRzIHdlIGFscmVhZHkgaG9sZC4gVGhpcyB3aWxsIGhlbHAgdXMgdmVyaWZ5IHRoYXQgYWxsIGluY29tZSBpcyBhY2N1cmF0ZWx5IHJlcG9ydGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBJbmNvbWUgRG9jdW1lbnRzOjwvc3Ryb25nPiBTaG91bGQgeW91IGhhdmUgb3RoZXIgc291cmNlcyBvZiB3YWdlIGluY29tZSAoZS5nLiwgY29udHJhY3Qgd29yaywgYm9udXNlcywgZXRjLikgbm90IGNvdmVyZWQgYnkgdGhlIFctMiBmb3JtcyBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgYW55IDEwOTkgZm9ybXMgb3Igb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPllvdXIgY29vcGVyYXRpb24gaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gS2luZGx5IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBUaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJQcm9wZXJ0eS9TZXJ2aWNlcyBpbiBMaWV1IG9mIFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgcHJvcGVydHkgYW5kL29yIHNlcnZpY2VzIGluIGxpZXUgb2YgdHJhZGl0aW9uYWwgd2FnZXMgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyB0eXBlIG9mIGNvbXBlbnNhdGlvbiBjb25zdGl0dXRlcyB0YXhhYmxlIGluY29tZSBhbmQgbXVzdCBiZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgZnVsbHkgY29tcGxpYW50IHdpdGggSVJTIHJlZ3VsYXRpb25zLjwvcD5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgcmVjb2duaXplIGFuZCByZXBvcnQgdGhlc2UgaXRlbXMgYXMgdGF4YWJsZSBpbmNvbWUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBQcm9wZXJ0eSBvciBTZXJ2aWNlczo8L3N0cm9uZz4gUHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFueSBwcm9wZXJ0eSBvciBzZXJ2aWNlcyB5b3UgcmVjZWl2ZWQuIFBsZWFzZSBpbmNsdWRlIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBmb3IgcHJvcGVydHkgb3IgdGhlIHNjb3BlIG9mIHNlcnZpY2VzIHJlbmRlcmVkLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5GYWlyIE1hcmtldCBWYWx1ZSBhdCBUaW1lIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IEluZGljYXRlIHRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIHByb3BlcnR5IG9yIHNlcnZpY2UgYXQgdGhlIHRpbWUgeW91IHJlY2VpdmVkIGl0LiBJZiB5b3UgaGF2ZSBhbnkgYXBwcmFpc2FscyBvciBkb2N1bWVudHMgdG8gc3VwcG9ydCB0aGUgRk1WLCBwbGVhc2UgaW5jbHVkZSB0aGVtLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9yIEFncmVlbWVudHM6PC9zdHJvbmc+IFByb3ZpZGUgYW55IGRvY3VtZW50YXRpb24gb3Igd3JpdHRlbiBhZ3JlZW1lbnRzIHRoYXQgZGV0YWlsIHRoZSBhcnJhbmdlbWVudCBmb3IgcmVjZWl2aW5nIHByb3BlcnR5IG9yIHNlcnZpY2VzIGluIGxpZXUgb2Ygd2FnZXMuIFRoaXMgY2FuIGluY2x1ZGUgY29udHJhY3RzLCBlbWFpbHMsIG9yIGFueSBmb3JtIG9mIGNvbW11bmljYXRpb24gdGhhdCBvdXRsaW5lcyB0aGUgYWdyZWVtZW50LjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRhdGUocykgb24gd2hpY2ggeW91IHJlY2VpdmVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIvUHJvdmlkZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFByb3ZpZGUgdGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgcHJvdmlkZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBwcm92aWRlZCBpbmZvcm1hdGlvbiBpcyBhcyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgYXMgcG9zc2libGUuIEluY29tcGxldGUgb3IgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBtYXkgbGVhZCB0byBkZWxheXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybiBvciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIElSUy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIGluZm9ybWF0aW9uIHJlcXVlc3RlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIGNyaXRpY2FsIGZvciB0aGUgdGltZWx5IGFuZCBhY2N1cmF0ZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90aWNlZCB5b3UndmUgbWVudGlvbmVkIGJlaW5nIHJlaW1idXJzZWQgZm9yIGNlcnRhaW4gZXhwZW5zZXMgdW5kZXIgYW4gRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhbi4gVG8gYWNjdXJhdGVseSBhY2NvdW50IGZvciB0aGVzZSByZWltYnVyc2VtZW50cyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB0aGUgZm9ybWFsIHdyaXR0ZW4gQWNjb3VudGFibGUgUGxhbiBwcm92aWRlZCBieSB5b3VyIGVtcGxveWVyLiBUaGlzIHNob3VsZCBvdXRsaW5lIHRoZSBleHBlbnNlIGFsbG93YW5jZSBhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBwb2xpY3kuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgZnJvbSB5b3VyIGVtcGxveWVyIGNvbmZpcm1pbmcgeW91ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgdGhlIGV4cGVuc2VzIHJlaW1idXJzZWQgdW5kZXIgdGhlIHBsYW4sIGluY2x1ZGluZyBkYXRlcywgYW1vdW50cywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGV4cGVuc2UgKHJlY2VpcHRzIG9yIGludm9pY2VzKSBwcm92aWRlZCB0byB5b3VyIGVtcGxveWVyIGZvciByZWltYnVyc2VtZW50IHVuZGVyIHRoZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHJlaW1idXJzZW1lbnRzIG9yIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHNlbmQgdXMgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gcHJvY2VlZCBzbW9vdGhseSB3aXRoIHlvdXIgdGF4IHJldHVybiBwcmVwYXJhdGlvbi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYFxyXG4gICAgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGVuc3VyaW5nIGFsbCBmb3JtcyBvZiBjb21wZW5zYXRpb24sIGluY2x1ZGluZyB0YXhhYmxlIGZyaW5nZSBiZW5lZml0cywgYXJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgb24geW91ciB0YXggcmV0dXJucy4gQmFzZWQgb24gb3VyIHByZXZpb3VzIGNvbW11bmljYXRpb24sIGl0IGFwcGVhcnMgeW91IG1heSBoYXZlIHJlY2VpdmVkIGJlbmVmaXRzIHRoYXQgbmVlZCB0byBiZSByZXZpZXdlZCBmdXJ0aGVyLiBUbyBhc3Npc3QgeW91IHByb3Blcmx5LCB3ZSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWMgZGV0YWlsczo8L3A+XHJcbjxvbD5cclxuICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQgcmVjZWl2ZWQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbXBhbnkgY2FycywgbWVtYmVyc2hpcHMsIGVkdWNhdGlvbmFsIGFzc2lzdGFuY2UsIGV0Yy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gSWYgeW91J3JlIHVuc3VyZSwgcGxlYXNlIHByb3ZpZGUgYW4gZXN0aW1hdGUgYW5kIHRoZSBiYXNpcyBmb3IgdGhpcyBlc3RpbWF0ZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkFueSBhbW91bnRzIGNvbnRyaWJ1dGVkIGJ5IHlvdTo8L3N0cm9uZz4gSWYgeW91IG1hZGUgY29udHJpYnV0aW9ucyB0b3dhcmQgdGhlIGNvc3Qgb2YgYW55IGJlbmVmaXQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkRhdGVzOjwvc3Ryb25nPiBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgc3BlY2lmaWMgZGF0ZXMgaWYgcG9zc2libGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5FbXBsb3llciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGVtcGxveWVyKHMpIHByb3ZpZGluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG48L29sPlxyXG48cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgZGV0ZXJtaW5pbmcgdGhlIHRheGFibGUgdmFsdWUgb2YgdGhlc2UgZnJpbmdlIGJlbmVmaXRzIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG48cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFsaXppbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIGlkZW50aWZpZWQgcG90ZW50aWFsIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB0aGF0IG1heSBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgb3B0aW1pemUgeW91ciB0YXggb3V0Y29tZSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYW55IG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQ6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIG1heSBpbmNsdWRlIGhlYWx0aCBzYXZpbmdzIGFjY291bnRzIChIU0FzKSwgZW1wbG95ZWUgZGlzY291bnRzLCBwdWJsaWMgdHJhbnNpdCBwYXNzZXMsIGV0Yy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIEZvciBub24tdGF4YWJsZSBiZW5lZml0cywgdGhpcyBoZWxwcyBpbiByZWNvcmQta2VlcGluZyBhbmQgY29uZmlybWluZyBleGVtcHRpb24gc3RhdHVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbnRyaWJ1dGlvbiBhbW91bnRzLCBpZiBhbnk6PC9zdHJvbmc+IElmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvd2FyZHMgYW55IG9mIHRoZXNlIGJlbmVmaXRzLCBpbmRpY2F0ZSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGRvY3VtZW50YXRpb24gdGhhdCBjYW4gY29ycm9ib3JhdGUgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIHJlY2VpcHQ6PC9zdHJvbmc+IFRoZSB0aW1lZnJhbWUgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBhcyBwcmVjaXNlIGRhdGVzIGFzIHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkVtcGxveWVyIG9yIHByb3ZpZGVyIGluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBlbXBsb3llcihzKSBvciB0aGlyZC1wYXJ0eSBwcm92aWRlcihzKSBvZmZlcmluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uIGhlbHBzIGVuc3VyZSB0aGF0IHlvdXIgdGF4IGZpbGluZ3MgYXJlIGFjY3VyYXRlIGFuZCB0aGF0IHlvdSByZWNlaXZlIHRoZSBmdWxsIGFkdmFudGFnZSBvZiBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMuIFBsZWFzZSBsZXQgdXMga25vdyBpZiB5b3UgbmVlZCBhbnkgaGVscCBpZGVudGlmeWluZyBvciBkb2N1bWVudGluZyB0aGVzZSBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQgYXMgd2Ugc3RyaXZlIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIGVmZmljaWVudGx5LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVkEgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBvbmdvaW5nIGVmZm9ydCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgVmV0ZXJhbiBCZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBvZiB0aGVzZSBiZW5lZml0cywgd2Uga2luZGx5IHJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gdGhpcyB0YXNrLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBsaXN0IG9mIHRoZSBWZXRlcmFuIEJlbmVmaXRzIHlvdSByZWNlaXZlZCwgaW5jbHVkaW5nIGFueSBkaXNhYmlsaXR5LCBlZHVjYXRpb24sIGFuZCBwZW5zaW9uIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPk9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggdHlwZSBvZiBiZW5lZml0IHJlY2VpdmVkLCBzdWNoIGFzIGF3YXJkIGxldHRlcnMgb3Igc3RhdGVtZW50cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIFZldGVyYW5zIEFmZmFpcnMgKFZBKS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgY29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgVkEgb3Igb3RoZXIgcmVsZXZhbnQgZW50aXRpZXMgcmVnYXJkaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHlvdXIgYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+VG90YWwgYW1vdW50IHJlY2VpdmVkIGZvciBlYWNoIGJlbmVmaXQgdGhyb3VnaG91dCB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QW55IG90aGVyIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBwcm92aWRlIGNsYXJpdHkgb24gdGhlIG5hdHVyZSBhbmQgYW1vdW50IG9mIHlvdXIgVmV0ZXJhbiBCZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggYmVuZWZpdHMgYXJlIHRheGFibGUgYW5kIGVuc3VyaW5nIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFBsZWFzZSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBtZW50aW9uIG9mIHJlY2VpdmluZyBsaWZlIGluc3VyYW5jZSBwYXltZW50cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHRoZXNlIHByb2NlZWRzIGFyZSBpbmRlZWQgbm9uLXRheGFibGUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RG9jdW1lbnRhdGlvbiBvciBzdGF0ZW1lbnRzIHBlcnRhaW5pbmcgdG8gdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgaW5zdXJlZCBpbmRpdmlkdWFsIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91LjwvbGk+XHJcbiAgICAgIDxsaT5BbnkgY29tbXVuaWNhdGlvbnMgb3IgbGV0dGVycyBmcm9tIHRoZSBpbnN1cmFuY2UgY29tcGFueSByZWdhcmRpbmcgdGhlIHRheCBzdGF0dXMgb2YgdGhlc2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRldGFpbHMgcmVnYXJkaW5nIGlmIHRoZSBwb2xpY3kgd2FzIHB1cmNoYXNlZCB3aXRoIGFmdGVyLXRheCBvciBwcmUtdGF4IGRvbGxhcnMuPC9saT5cclxuICAgICAgPGxpPklmIGFueSBwb3J0aW9uIG9mIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50IHdhcyBhbiBpbnZlc3RtZW50IHJldHVybiwgcGxlYXNlIHByb3ZpZGUgcmVsYXRlZCBkb2N1bWVudHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGd1YXJhbnRlZSB0aGUgYWNjdXJhY3kgYW5kIGludGVncml0eSBvZiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gV2UncmUgaGVyZSB0byBoZWxwITwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgd2UgcHJvY2VlZCB3aXRoIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zLCB3ZSBub3RlZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB1bmRlciB0aGUgZGlmZmljdWx0eS1vZi1jYXJlIHByb3Zpc2lvbnMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gZW5zdXJlIHdlIG1heGltaXplIHlvdXIgZWxpZ2libGUgaW5jb21lIGV4Y2x1c2lvbnMsIGl0J3MgY3J1Y2lhbCB3ZSB2ZXJpZnkgY2VydGFpbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBsaXZpbmcgYXJyYW5nZW1lbnQsIGFzIHBlciBJUlMgZ3VpZGVsaW5lcy48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gY29uZmlybWluZyB0aGF0IHRoZXNlIHBheW1lbnRzIHF1YWxpZnkgZm9yIGluY29tZSBleGNsdXNpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHByb3ZpbmcgdGhhdCB5b3UgYW5kIHRoZSBpbmRpdmlkdWFsIHVuZGVyIGNhcmUgc2hhcmVkIHRoZSBzYW1lIHByaW1hcnkgcmVzaWRlbmNlIGR1cmluZyB0aGUgcmVjZWlwdCBvZiB0aGVzZSBwYXltZW50cy4gVGhpcyBjb3VsZCBpbmNsdWRlIHV0aWxpdHkgYmlsbHMsIGEgcmVudGFsIGFncmVlbWVudCwgb3IgaG9tZW93bmVyJ3MgaW5zdXJhbmNlIGluIGJvdGggb2YgeW91ciBuYW1lcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgdGhlIENhcmUgUmVjaXBpZW50Ojwvc3Ryb25nPiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyc29uIHJlY2VpdmluZyBjYXJlLCBpbmNsdWRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdSBhbmQgYW55IGRvY3VtZW50YXRpb24gdGhhdCBpZGVudGlmaWVzIHRoZWlyIG5lZWQgZm9yIGNhcmUgKGUuZy4sIGEgbGV0dGVyIGZyb20gYSBoZWFsdGhjYXJlIHByb3ZpZGVyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgUmVjb3Jkczo8L3N0cm9uZz4gQW55IHJlY29yZHMgb2YgdGhlIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB5b3UgcmVjZWl2ZWQsIGFzIHRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgZXhhY3QgYW1vdW50cyBhbmQgdGhlIHBlcmlvZHMgY292ZXJlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBGb3JtYWwgQWdyZWVtZW50cyBvciBDb250cmFjdHM6PC9zdHJvbmc+IElmIHRoZXJlIHdhcyBhIGZvcm1hbCBhZ3JlZW1lbnQgb3IgY29udHJhY3QgZGV0YWlsaW5nIHRoZSBjYXJlIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSB0aGlzIGFzIHdlbGwuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGNhcmUgYXJyYW5nZW1lbnQgd2FzIGZhY2lsaXRhdGVkIHRocm91Z2ggYSBzdGF0ZSBvciB0aGlyZC1wYXJ0eSBhZ2VuY3kuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB3ZSBjb21wbHkgd2l0aCB0YXhpbmcgYXV0aG9yaXRpZXMgd2hpbGUgYWNjdXJhdGVseSByZWZsZWN0aW5nIHlvdXIgZmluYW5jZXMuIElmIGFueSBvZiB0aGVzZSByZXF1aXJlbWVudHMgcG9zZSBhIGRpZmZpY3VsdHkgb3IgaWYgeW91IGhhdmUgcXVlc3Rpb25zLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gT3VyIGdvYWwgaXMgdG8gc3VwcG9ydCB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MgYW5kIG9wdGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBXZSBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGJlbmVmaXRzIGFyZSBlbGlnaWJsZSB0byBiZSBleGNsdWRlZCBmcm9tIHlvdXIgaW5jb21lLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyBwYWlkLjwvcD5cclxuICAgIDxwPktpbmRseSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgb2YgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCBzdGF0ZW1lbnRzIG9yIGRvY3VtZW50YXRpb24gc2hvd2luZyB0aGUgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9uIHdobyBwYWlkIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgKHlvdSBvciB5b3VyIGVtcGxveWVyKS48L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHlvdSBwYWlkIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB0aGUgcGF5bWVudHMgbWFkZSBieSB5b3UgKHJlY2VpcHRzIG9yIGJhbmsgc3RhdGVtZW50cykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3VyIGVtcGxveWVyIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgcGFpZCBieSB5b3VyIGVtcGxveWVyIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGRvY3VtZW50cyBpbmRpY2F0aW5nIGVtcGxveWVyIGNvbnRyaWJ1dGlvbnMgKHBheSBzdHVicywgZW1wbG95ZXIgbGV0dGVycykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXhhYmxlIHBvcnRpb24sIGlmIGFueSwgb2YgeW91ciBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cy4gUHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBoZWxwIHVzIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5nIGFuZCBwb3RlbnRpYWxseSBsb3dlciB5b3VyIHRheGFibGUgaW5jb21lLjwvcD5cclxuICAgIDxwPlBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaWYgd2UgY2FuIGJlIG9mIGZ1cnRoZXIgYXNzaXN0YW5jZS4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCByZXNwb25zZSB0byB0aGlzIHJlcXVlc3QuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJbiBvcmRlciB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cywgd2UgbmVlZCBhZGRpdGlvbmFsIGRldGFpbHMuIFRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzIGNhbiBkZXBlbmQgb24gd2hlbiB5b3UgdG9vayByZXRpcmVtZW50IGR1ZSB0byBkaXNhYmlsaXR5LjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZXRpcmVtZW50Ojwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZSB5b3UgcmV0aXJlZCBkdWUgdG8gZGlzYWJpbGl0eS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgRGlzYWJpbGl0eSBSZXRpcmVtZW50Ojwvc3Ryb25nPiBBbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB5b3UgaGF2ZSB0aGF0IGNvbmZpcm1zIHlvdXIgcmV0aXJlbWVudCB3YXMgZHVlIHRvIGRpc2FiaWxpdHkuIFRoaXMgbWF5IGluY2x1ZGUgbGV0dGVycyBmcm9tIHlvdXIgZW1wbG95ZXIsIHRoZSByZXRpcmVtZW50IHBsYW4sIG9yIG1lZGljYWwgcmVjb3Jkcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgQmVuZWZpdHMgUmVjZWl2ZWQ6PC9zdHJvbmc+IFNwZWNpZmljIGFtb3VudHMgYW5kIHRoZSBzb3VyY2Ugb2YgdGhlIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cy4gUGxlYXNlIGluY2x1ZGUgYW55IHJlbGF0ZWQgZG9jdW1lbnRzIHN1Y2ggYXMgc3RhdGVtZW50cyBvciBub3RpY2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBXLTIgb3IgMTA5OSBGb3Jtczo8L3N0cm9uZz4gSWYgeW91IHJlY2VpdmVkIGFueSB3YWdlcyBvciBkaXNhYmlsaXR5IHBheW1lbnRzIHRoYXQgd2VyZSByZXBvcnRlZCBvbiBXLTIgb3IgMTA5OSBmb3JtcyBpbiB0aGUgeWVhciBvZiB5b3VyIHJldGlyZW1lbnQsIHBsZWFzZSBwcm92aWRlIHRoZXNlIGZvcm1zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgdGhlc2UgY29tbXVuaWNhdGlvbnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyB3aWxsIGFpZCB1cyBpbiBkZXRlcm1pbmluZyB0aGVpciB0YXhhYmlsaXR5IGFuZCBlbnN1cmluZyB0aGF0IHlvdXIgdGF4IG9ibGlnYXRpb25zIGFyZSBwcmVjaXNlbHkgY2FsY3VsYXRlZC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgVy0yIHdhZ2VzIGFzIGEgY2xlcmd5IG1lbWJlci4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgdG8gcG90ZW50aWFsbHkgbWF4aW1pemUgeW91ciB0YXggYmVuZWZpdHMsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB5b3VyIGNvbXBlbnNhdGlvbiBwYWNrYWdlLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+Vy0yIEZvcm06PC9iPiBJZiBub3QgYWxyZWFkeSBwcm92aWRlZCwgaW5jbHVkZSBhbnkgVy0yIGZvcm1zIGlzc3VlZCBieSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Ib3VzaW5nIEFsbG93YW5jZSBEb2N1bWVudGF0aW9uOjwvYj4gRGV0YWlsZWQgc3RhdGVtZW50IG9yIGxldHRlciBmcm9tIHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uIHNwZWNpZnlpbmcgdGhlIGFtb3VudCBkZXNpZ25hdGVkIGFzIGhvdXNpbmcgYWxsb3dhbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNlbGYtRW1wbG95bWVudCBUYXg6PC9iPiBDb25maXJtYXRpb24gb24gd2hldGhlciB5b3UgaGF2ZSB0YWtlbiBhIHZvdyBvZiBwb3ZlcnR5IChpZiBhcHBsaWNhYmxlKSwgb3IgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBvcHRpbmcgb3V0IG9mIHNlbGYtZW1wbG95bWVudCB0YXguPC9saT5cclxuICAgICAgICA8bGk+PGI+RXhwZW5zZSBSZWltYnVyc2VtZW50czo8L2I+IERvY3VtZW50YXRpb24gc2hvd2luZyBhbnkgZXhwZW5zZSByZWltYnVyc2VtZW50cyByZWNlaXZlZCB1bmRlciBhbiBhY2NvdW50YWJsZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPk90aGVyIENvbXBlbnNhdGlvbjo8L2I+IEluZm9ybWF0aW9uIG9uIGFueSBvdGhlciBjb21wZW5zYXRpb24gcmVjZWl2ZWQgaW4geW91ciBjYXBhY2l0eSBhcyBjbGVyZ3ksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbG92ZSBvZmZlcmluZ3MsIGZlZXMgZm9yIHNlcnZpY2VzICh3ZWRkaW5ncywgZnVuZXJhbHMsIGV0Yy4pLCBhbmQgcGFyc29uYWdlIGFsbG93YW5jZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGFjY3VyYXRlbHkgcmVwcmVzZW50IHlvdXIgZWFybmluZ3MgYW5kIHRvIGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgY29ycmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IHdpbGwgaGVscCBlbnN1cmUgdGhhdCB5b3VyIHRheCByZXR1cm5zIGFyZSBwcmVwYXJlZCBpbiBhIHRpbWVseSBhbmQgZWZmaWNpZW50IG1hbm5lci48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgaXMgcmVxdWlyZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gV2UgYXJlIGhlcmUgdG8gYXNzaXN0IHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhpcyBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkludGVyZXN0IEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+SW4gcmV2aWV3aW5nIHlvdXIgZmluYW5jaWFsIGFjdGl2aXRpZXMgZm9yIHRoZSB0YXggeWVhciwgeW91IGluZGljYXRlZCByZWNlaXZpbmcgaW50ZXJlc3QgaW5jb21lLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGlzIGluY29tZSBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBkZXRhaWxzLiBLaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxiPlNvdXJjZSBvZiBJbnRlcmVzdCBJbmNvbWU6PC9iPiBQbGVhc2Ugc3BlY2lmeSB0aGUgaW5zdGl0dXRpb24ocykgb3IgZW50aXR5KGllcykgZnJvbSB3aGljaCB5b3UgcmVjZWl2ZWQgaW50ZXJlc3QgaW5jb21lIChlLmcuLCBiYW5rcywgY3JlZGl0IHVuaW9ucykuPC9saT5cclxuICAgICAgPGxpPjxiPkFtb3VudCBSZWNlaXZlZDo8L2I+IENvbmZpcm0gdGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcmVzdCBpbmNvbWUgcmVjZWl2ZWQgZnJvbSBlYWNoIHNvdXJjZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BY2NvdW50IFR5cGVzOjwvYj4gSWRlbnRpZnkgdGhlIHR5cGUgb2YgYWNjb3VudHMgdGhhdCBnZW5lcmF0ZWQgdGhlIGludGVyZXN0IChlLmcuLCBzYXZpbmdzLCBjaGVja2luZywgY2VydGlmaWNhdGVzIG9mIGRlcG9zaXQpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5UYXggRm9ybXMgUmVjZWl2ZWQ6PC9iPiBMaXN0IGFueSB0YXggZm9ybXMgeW91IGhhdmUgcmVjZWl2ZWQgcmVsYXRlZCB0byBpbnRlcmVzdCBpbmNvbWUsIHN1Y2ggYXMgRm9ybSAxMDk5LUlOVCBvciBGb3JtIDEwOTktT0lELjwvbGk+XHJcbiAgICAgIDxsaT48Yj5Gb3JlaWduIEludGVyZXN0OjwvYj4gSWYgYW55IGludGVyZXN0IGluY29tZSB3YXMgZWFybmVkIGZyb20gZm9yZWlnbiBhY2NvdW50cyBvciBzb3VyY2VzLCBwbGVhc2UgcHJvdmlkZSBkZXRhaWxzLCBpbmNsdWRpbmcgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBlbmFibGUgdXMgdG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgeW91ciBpbnRlcmVzdCBpbmNvbWUgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGNvcnJlY3QuIFlvdSBjYW4gYXR0YWNoIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBieSByZXBseWluZyB0byB0aGlzIGVtYWlsIG9yIHVwbG9hZGluZyB0aGVtIGRpcmVjdGx5IHRvIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQmFuayBBY2NvdW50IE9wZW5pbmcgR2lmdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmV2aWV3aW5nIHlvdXIgdGF4IHNpdHVhdGlvbiBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBhIGdpZnQgZm9yIG9wZW5pbmcgYW4gYWNjb3VudCBhdCBhIGZpbmFuY2lhbCBpbnN0aXR1dGlvbi4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uIHdoZXJlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+VGhlIGRhdGUgdGhlIGFjY291bnQgd2FzIG9wZW5lZC48L2xpPlxyXG4gICAgICAgIDxsaT5BIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBnaWZ0IHJlY2VpdmVkIChlLmcuLCBjYXNoLCBtZXJjaGFuZGlzZSwgb3Igc2VydmljZXMpLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBmYWlyIG1hcmtldCB2YWx1ZSBvZiB0aGUgZ2lmdCBhdCB0aGUgdGltZSBpdCB3YXMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiByZWdhcmRpbmcgdGhlIGdpZnQgKGUuZy4sIGEgbGV0dGVyLCBlbWFpbCBjb25maXJtYXRpb24sIG9yIHN0YXRlbWVudCBpbmRpY2F0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZ2lmdCkuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIGlmIHlvdSBoYXZlIHJlY2VpdmVkIG1vcmUgdGhhbiBvbmUgZ2lmdCBmb3Igb3BlbmluZyBhY2NvdW50cyB3aXRoaW4gdGhlIHNhbWUgdGF4IHllYXIsIGFuZCBpZiBzbywgdGhlIGRldGFpbHMgZm9yIGVhY2guPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIHdlIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgY29tcGx5IHdpdGggYWxsIElSUyByZXF1aXJlbWVudHMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIG9mIHlvdXIgaW5jb21lIGZyb20gQ2VydGlmaWNhdGVzIG9mIERlcG9zaXQgKENEcykgZm9yIHRoZSB0YXggeWVhciwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gY29tcGx5IHdpdGggSVJTIHJlZ3VsYXRpb25zIGFuZCB0byBwb3RlbnRpYWxseSBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TmFtZSBvZiB0aGUgQmFuayBvciBGaW5hbmNpYWwgSW5zdGl0dXRpb246PC9zdHJvbmc+IFdoZXJlIHRoZSBDRCBpcyBoZWxkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWNjb3VudCBOdW1iZXI6PC9zdHJvbmc+IFRoaXMgaGVscHMgaW4gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgSW50ZXJlc3QgRWFybmVkOjwvc3Ryb25nPiBUaGUgYW1vdW50IG9mIGludGVyZXN0IGVhcm5lZCBmcm9tIHRoZSBDRCBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q0QgVGVybTo8L3N0cm9uZz4gVGhlIGR1cmF0aW9uIG9yIHRlcm0gb2YgdGhlIENEIChlLmcuLCA2IG1vbnRocywgMSB5ZWFyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUHVyY2hhc2U6PC9zdHJvbmc+IFdoZW4geW91IG9yaWdpbmFsbHkgYWNxdWlyZWQgdGhlIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWF0dXJpdHkgRGF0ZTo8L3N0cm9uZz4gV2hlbiB0aGUgQ0QgcmVhY2hlZCBvciB3aWxsIHJlYWNoIGl0cyBmdWxsIHRlcm0uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LUlOVCBGb3Jtczo8L3N0cm9uZz4gSWYgcmVjZWl2ZWQsIHBsZWFzZSBpbmNsdWRlIGNvcGllcyBvZiBhbnkgMTA5OS1JTlQgZm9ybXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBDRCBpbnRlcmVzdC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCBkb2N1bWVudHMuIFlvdSBtYXkgdXBsb2FkIHRoZSBkb2N1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwgb3IgcHJvdmlkZSB0aGVtIHZpYSBlbWFpbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGF4LWV4ZW1wdCBpbnRlcmVzdCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBwb3NzaWJseSBmcm9tIG11bmljaXBhbCBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUbyBhY2N1cmF0ZWx5IHByZXBhcmUgeW91ciB0YXggcmV0dXJucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudHMgb2YgVGF4LUV4ZW1wdCBJbnRlcmVzdDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYWxsIDEwOTktSU5UIGZvcm1zIG9yIGVxdWl2YWxlbnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB5b3VyIHRheC1leGVtcHQgaW50ZXJlc3QgaW5jb21lIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIElzc3VpbmcgRW50aXRpZXM6PC9zdHJvbmc+IEEgbGlzdCBvciBzdGF0ZW1lbnQgaWRlbnRpZnlpbmcgdGhlIGVudGl0aWVzIHRoYXQgaXNzdWVkIHRoZSBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUaGlzIGluY2x1ZGVzIG11bmljaXBhbCwgc3RhdGUsIG9yIGZlZGVyYWwgZW50aXRpZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IERldGFpbDo8L3N0cm9uZz4gQSBicmVha2Rvd24gb2YgdGhlIGludmVzdG1lbnRzIGNvbnRyaWJ1dGluZyB0byB0YXgtZXhlbXB0IGludGVyZXN0LiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBwdXJjaGFzZSBkYXRlLCBwdXJjaGFzZSBhbW91bnRzLCBhbmQgYW55IHJlbGF0ZWQgbWF0dXJpdHkgZGF0ZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Ccm9rZXJhZ2UgQWNjb3VudCBTdGF0ZW1lbnRzOjwvc3Ryb25nPiBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHRyYW5zYWN0aW9ucyBhbmQgaG9sZGluZ3MgaW4gdGF4LWV4ZW1wdCBpbnZlc3RtZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFNVCAoQWx0ZXJuYXRpdmUgTWluaW11bSBUYXgpIENvbnNpZGVyYXRpb246PC9zdHJvbmc+IElmIGF2YWlsYWJsZSwgZG9jdW1lbnRhdGlvbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW55IG9mIHRoZSB0YXgtZXhlbXB0IGludGVyZXN0IGlzIHN1YmplY3QgdG8gdGhlIEFsdGVybmF0aXZlIE1pbmltdW0gVGF4LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbiBhY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBQbGVhc2UgZm9yd2FyZCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgY29udGludWVkIGVmZm9ydCB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBiZXN0IHRheCBwcmVwYXJhdGlvbiBzZXJ2aWNlcywgd2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byB0aGUgaW50ZXJlc3QgeW91IG1heSBoYXZlIHJlY2VpdmVkIGZyb20gcmVkZWVtaW5nIGFuIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L3A+XHJcblxyXG4gICAgPHA+VG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGVsaWdpYmlsaXR5IGZvciBleGVtcHRpb24gYW5kIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIElSUywgd2Uga2luZGx5IHJlcXVlc3QgeW91IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiBGb3JtIDEwOTktSU5UIG9yIHNpbWlsYXIgc3RhdGVtZW50IHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24sIGluZGljYXRpbmcgdGhlIGFtb3VudCBvZiBpbnRlcmVzdCByZWNlaXZlZCBmcm9tIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgcmVjb3JkcyBvZiB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kcyByZWRlZW1lZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Cb25kIHNlcmlhbCBudW1iZXJzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Jc3N1ZSBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UmVkZW1wdGlvbiBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50czwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UmVjZWlwdHMgb3IgZG9jdW1lbnRhdGlvbiBmb3IgcXVhbGlmaWVkIGVkdWNhdGlvbmFsIGV4cGVuc2VzIHBhaWQgZHVyaW5nIHRoZSB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UdWl0aW9uIGFuZCBmZWVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3Vyc2UgbWF0ZXJpYWxzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgb3RoZXIgcmVxdWlyZWQgZXhwZW5zZXMgZm9yIGVucm9sbG1lbnQgb3IgYXR0ZW5kYW5jZSBhdCBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UHJvb2Ygb2YgZW5yb2xsbWVudCBmcm9tIGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uIGZvciB0aGUgYmVuZWZpY2lhcnkgb2YgdGhlIGJvbmQuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHRoZSBpbnRlcmVzdCBpbmNvbWUgYW5kIHBvdGVudGlhbGx5IG1heGltaXppbmcgeW91ciB0YXggYmVuZWZpdHMuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBhbmQgcmVjb21tZW5kIGNvbXBpbGluZyB0aGVzZSBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3Qgb3VyIG9mZmljZSBkaXJlY3RseS48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGRpdmlkZW5kIGluY29tZSBvdmVyIHRoZSBwYXN0IHRheCB5ZWFyLiBUbyBlbnN1cmUgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhpcyBpbmNvbWUgYW5kIG9wdGltaXplIHlvdXIgdGF4IHNpdHVhdGlvbiwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5BbGwgMTA5OS1ESVYgZm9ybXMgcmVjZWl2ZWQgZnJvbSBjb3Jwb3JhdGlvbnMgb3IgbXV0dWFsIGZ1bmRzLiBUaGlzIGluY2x1ZGVzIGRpc3RyaWJ1dGlvbnMgb2YgY2FzaCwgc3RvY2ssIG9yIG90aGVyIHByb3BlcnR5LjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgZm9yZWlnbiBkaXZpZGVuZHMgaW5jbHVkaW5nIHRoZSBhbW91bnQgaW4gZm9yZWlnbiBjdXJyZW5jeSwgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLCBhbmQgYW55IGZvcmVpZ24gdGF4IHBhaWQuPC9saT5cclxuICAgICAgPGxpPkZvciBkaXZpZGVuZHMgcmVpbnZlc3RlZCwgcGxlYXNlIHByb3ZpZGUgc3RhdGVtZW50cyBvciBjb25maXJtYXRpb25zIHNob3dpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgIDxsaT5Bbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgZGl2aWRlbmRzIG5vdCBjb3ZlcmVkIGJ5IGEgMTA5OS1ESVYuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFyIGFuZCBsZWdpYmxlIHRvIGF2b2lkIGFueSBwcm9jZXNzaW5nIGRlbGF5cy4gV2UgcmVjb21tZW5kIHNlY3VyZWx5IHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uIHRocm91Z2ggb3VyIGNsaWVudCBwb3J0YWwgb3IgYXJyYW5naW5nIGEgc2VjdXJlIGVtYWlsIHRyYW5zbWlzc2lvbi48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBhcHByZWNpYXRlZCBhcyBpdCB3aWxsIGhlbHAgdXMgaW4gY29tcGxldGluZyB5b3VyIHRheCBwcmVwYXJhdGlvbnMgZWZmaWNpZW50bHkuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNwb3NlZCBDYXBpdGFsIEFzc2V0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzcG9zZWQgQ2FwaXRhbCBBc3NldHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgaW5kaWNhdGVkIGRpc3Bvc2luZyBvZiBjYXBpdGFsIGFzc2V0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHlvdXIgdGF4IGZpbGluZ3MgYXJlIGNvbXBsZXRlIGFuZCBjb21wbGlhbnQsIHdlIHJlcXVpcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkRlc2NyaXB0aW9uIG9mIGVhY2ggZGlzcG9zZWQgYXNzZXQ6PC9iPiBJbmNsdWRlIHRoZSB0eXBlIG9mIGFzc2V0IChlLmcuLCByZWFsIGVzdGF0ZSwgc3RvY2tzLCBib25kcykuPC9saT5cclxuICAgICAgICA8bGk+PGI+RGF0ZSBvZiBhY3F1aXNpdGlvbjo8L2I+IFRoZSBwdXJjaGFzZSBkYXRlIG9yIHRoZSBkYXRlIHlvdSBvcmlnaW5hbGx5IGNhbWUgaW50byBwb3NzZXNzaW9uIG9mIGVhY2ggYXNzZXQuPC9saT5cclxuICAgICAgICA8bGk+PGI+QWNxdWlzaXRpb24gY29zdDo8L2I+IFRoZSBvcmlnaW5hbCBwdXJjaGFzZSBwcmljZSBvciBjb3N0IGJhc2lzIG9mIGVhY2ggYXNzZXQsIGluY2x1ZGluZyBhbnkgaW1wcm92ZW1lbnRzIG1hZGUuPC9saT5cclxuICAgICAgICA8bGk+PGI+RGF0ZSBvZiBkaXNwb3NhbDo8L2I+IFRoZSBzcGVjaWZpYyBkYXRlIG9uIHdoaWNoIGVhY2ggYXNzZXQgd2FzIHNvbGQsIGV4Y2hhbmdlZCwgb3Igb3RoZXJ3aXNlIGRpc3Bvc2VkIG9mLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNhbGUgb3IgZGlzcG9zYWwgcHJvY2VlZHM6PC9iPiBUaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gdGhlIGRpc3Bvc2FsIG9mIHRoZSBhc3NldC48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Bc3NvY2lhdGVkIGV4cGVuc2VzOjwvYj4gQW55IGNvc3RzIGluY3VycmVkIGRpcmVjdGx5IGZyb20gdGhlIHNhbGUgb3IgZGlzcG9zYWwgcHJvY2Vzcywgc3VjaCBhcyBicm9rZXIncyBmZWVzLCBhZHZlcnRpc2luZywgbGVnYWwgZmVlcywgZXRjLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlJlYXNvbiBmb3IgZGlzcG9zYWw6PC9iPiBCcmllZmx5IGRlc2NyaWJlIHRoZSByZWFzb24gYmVoaW5kIHRoZSBkaXNwb3NhbCBvZiB0aGUgYXNzZXQsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGNhbGN1bGF0aW5nIHBvdGVudGlhbCBjYXBpdGFsIGdhaW5zIG9yIGxvc3NlcyBhbmQgZGV0ZXJtaW5pbmcgdGhlaXIgaW1wYWN0IG9uIHlvdXIgdGF4IG9ibGlnYXRpb25zLiBQbGVhc2UgYXR0YWNoIGFueSBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMgc2FsZXMgcmVjZWlwdHMsIGRlZWRzLCBjb250cmFjdHMsIG9yIGJyb2tlcmFnZSBzdGF0ZW1lbnRzLCB0byBzdWJzdGFudGlhdGUgdGhlIGRldGFpbHMgcHJvdmlkZWQuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGFyZSBoZXJlIHRvIGFzc2lzdCB3aXRoIGFueSBxdWVzdGlvbnMgeW91IG1heSBoYXZlLiBZb3UgY2FuIHJlYWNoIHVzIHZpYSBlbWFpbCBvciBwaG9uZSBmb3IgZnVydGhlciBkaXNjdXNzaW9uLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNdXR1YWwgRnVuZCBHYWluXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJNdXR1YWwgRnVuZCBHYWluXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5JbiBvcmRlciB0byBhY2N1cmF0ZWx5IHJlcG9ydCB5b3VyIG11dHVhbCBmdW5kIGVhcm5pbmdzIG9uIHlvdXIgdGF4IHJldHVybiwgYXMgcGVyIHlvdXIgaW5kaWNhdGlvbiBvZiByZWNlaXZpbmcgZ2FpbnMgZnJvbSBhIG11dHVhbCBmdW5kIG9yIHNpbWlsYXIgaW52ZXN0bWVudCwgd2UgcmVxdWlyZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1ESVYgRm9ybTo8L3N0cm9uZz4gVGhpcyBmb3JtIGlzIGNydWNpYWwgYXMgaXQgcHJvdmlkZXMgZGV0YWlscyBvbiBkaXZpZGVuZHMgYW5kIGRpc3RyaWJ1dGlvbnMgeW91IHJlY2VpdmVkIGZyb20geW91ciBtdXR1YWwgZnVuZCBpbnZlc3RtZW50cy4gUGxlYXNlIGVuc3VyZSB0byBwcm92aWRlIHRoaXMgZm9ybSBpZiB5b3VyIG11dHVhbCBmdW5kIGVhcm5pbmdzIHdlcmUgcmVwb3J0ZWQgb24gaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5TdGF0ZW1lbnQgb2YgQWNjb3VudDo8L3N0cm9uZz4gVGhpcyBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiBhbGwgdHJhbnNhY3Rpb25zIHdpdGhpbiB5b3VyIGFjY291bnQsIGluY2x1ZGluZyBwdXJjaGFzZXMsIHJlZGVtcHRpb25zLCBhbmQgcmVpbnZlc3RlZCBkaXZpZGVuZHMgd2hpY2ggaGVscCB1cyB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHlvdXIgZ2FpbnMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5ZZWFyLUVuZCBTdW1tYXJ5Ojwvc3Ryb25nPiBPZnRlbiBtdXR1YWwgZnVuZHMgcHJvdmlkZSBhIHllYXItZW5kIHN1bW1hcnkgdG8gdGhlaXIgaW52ZXN0b3JzLiBUaGlzIHN1bW1hcnkgY2FuIGJlIHZlcnkgaGVscGZ1bCBpbiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhcyBpdCBjb25zb2xpZGF0ZXMgYWxsIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudHM6PC9zdHJvbmc+IFRoaXMgY291bGQgaW5jbHVkZSBhZGRpdGlvbmFsIDEwOTkgZm9ybXMgKGxpa2UgMTA5OS1CIGlmIGFueSBzYWxlcyBvY2N1cnJlZCksIG9yaWdpbmFsIGludmVzdG1lbnQgc3RhdGVtZW50cywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IGNvdWxkIGltcGFjdCB5b3VyIHRheCBzaXR1YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cyBtYXkgcmVxdWlyZSBzb21lIHRpbWUsIGhvd2V2ZXIsIGhhdmluZyB0aGVzZSByZWFkaWx5IGF2YWlsYWJsZSB3aWxsIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGVmZmljaWVuY3kgb2YgeW91ciB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gWW91ciBwcm9tcHQgcmVzcG9uc2Ugd2lsbCBiZSBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgZGlmZmljdWx0aWVzIG9idGFpbmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNdXR1YWwgRnVuZCBEaXNwb3NhbFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTXV0dWFsIEZ1bmQgRGlzcG9zYWxcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgbWFkZSBhIGRpc3Bvc2FsIG9mIHNoYXJlcyBpbiBhIG11dHVhbCBmdW5kIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wYWN0IGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlZCBhY2N1cmF0ZWx5LCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgPHN0cm9uZz4xMDk5LUIgZm9ybTwvc3Ryb25nPiBhc3NvY2lhdGVkIHdpdGggdGhlIG11dHVhbCBmdW5kIGRpc3Bvc2FsLCBpZiBhdmFpbGFibGUuIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgZGV0YWlscyBvbiB0aGUgc2FsZSBvZiB5b3VyIHNoYXJlcy48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCA8c3Ryb25nPnJlY29yZCBvZiB0aGUgcHVyY2hhc2U8L3N0cm9uZz4gb2YgdGhlIG11dHVhbCBmdW5kIHNoYXJlcyBpbmNsdWRpbmcgdGhlIHB1cmNoYXNlIGRhdGUgYW5kIGNvc3QgYmFzaXMuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgY2FsY3VsYXRpbmcgYW55IGNhcGl0YWwgZ2FpbiBvciBsb3NzLjwvbGk+XHJcbiAgICAgICAgPGxpPklmIHRoZSAxMDk5LUIgZm9ybSBpcyBub3QgYXZhaWxhYmxlLCBwbGVhc2UgcHJvdmlkZSBhbnkgPHN0cm9uZz5icm9rZXJhZ2Ugc3RhdGVtZW50czwvc3Ryb25nPiBvciBvdGhlciBkb2N1bWVudGF0aW9uIHRoYXQgc2hvd3MgdGhlIGRpc3Bvc2FsIG9mIHRoZSBtdXR1YWwgZnVuZCBzaGFyZXMsIGluY2x1ZGluZyB0aGUgc2FsZSBkYXRlIGFuZCBhbW91bnQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPHN0cm9uZz5yZWludmVzdGVkIGRpdmlkZW5kczwvc3Ryb25nPiBvciBjYXBpdGFsIGdhaW5zIGRpc3RyaWJ1dGlvbnMsIGFzIHRoZXNlIGNhbiBhZGp1c3QgeW91ciBjb3N0IGJhc2lzIGFuZCBhZmZlY3QgdGhlIGNhbGN1bGF0aW9uIG9mIHlvdXIgY2FwaXRhbCBnYWluIG9yIGxvc3MuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5IYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIGVuc3VyaW5nIHRoYXQgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhlIGRpc3Bvc2FsIG9mIHlvdXIgbXV0dWFsIGZ1bmQgc2hhcmVzIGFuZCBhY2N1cmF0ZWx5IGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGNhcGl0YWwgZ2FpbnMgb3IgbG9zc2VzLiBUaGlzIHdpbGwgYWxzbyBoZWxwIHVzIHRvIG9wdGltaXplIHlvdXIgdGF4IGxpYWJpbGl0eSBmb3IgdGhlIHllYXIuPC9wPlxyXG4gICAgPHA+U2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgYWJvdXQgZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuIFdlJ3JlIGhlcmUgdG8gaGVscCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoZSBwcm9jZXNzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIldhc2ggU2FsZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiV2FzaCBTYWxlIFRyYW5zYWN0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIFdhc2ggU2FsZSB0cmFuc2FjdGlvbi4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBhY3QgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCB0cmFuc2FjdGlvbiByZWNvcmRzPC9zdHJvbmc+IC0gUGxlYXNlIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdGhlIHNlY3VyaXR5IHRoYXQgd2FzIHNvbGQgYW5kIHRoZW4gcmVwdXJjaGFzZWQsIGluY2x1ZGluZyBkYXRlcyBhbmQgYW1vdW50cyBmb3IgZWFjaCB0cmFuc2FjdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvc3QgYmFzaXMgZm9yIHJlcHVyY2hhc2VkIHNlY3VyaXR5PC9zdHJvbmc+IC0gRGV0YWlscyBvZiB0aGUgY29zdCBiYXNpcyBmb3IgdGhlIHNlY3VyaXRpZXMgcmVwdXJjaGFzZWQgd2l0aGluIGEgNjEtZGF5IHdpbmRvdyAoMzAgZGF5cyBiZWZvcmUgdG8gMzAgZGF5cyBhZnRlciB0aGUgc2FsZSkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY2NvdW50IHN0YXRlbWVudHM8L3N0cm9uZz4gLSBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHNob3dpbmcgdGhlIHRyYW5zYWN0aW9ucyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxvc3NlcyByZWFsaXplZDwvc3Ryb25nPiAtIERvY3VtZW50YXRpb24gb2YgYW55IGxvc3NlcyByZWFsaXplZCBmcm9tIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBjb3JyZXNwb25kZW5jZTwvc3Ryb25nPiAtIENvcnJlc3BvbmRlbmNlIGZyb20gYnJva2VycyBvciBmaW5hbmNpYWwgYWR2aXNvcnMgcmVnYXJkaW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCB0aGUgZG9jdW1lbnRzIGFyZSBvcmdhbml6ZWQgYW5kIGNsZWFybHkgbGFiZWxlZCBmb3IgZWFjaCB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIGZhY2lsaXRhdGUgYSBzbW9vdGhlciBhbmQgcXVpY2tlciB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5VbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBXYXNoIFNhbGUgdHJhbnNhY3Rpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gcHJvdmlkZSBhY2N1cmF0ZSB0YXggYWR2aWNlIGFuZCBwcmVwYXJhdGlvbi4gRnVydGhlciwgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGFzc2lzdCBpbiBkZXRlcm1pbmluZyBob3cgdGhlIFdhc2ggU2FsZSBydWxlIGFmZmVjdHMgdGhlIGRlZHVjdGliaWxpdHkgb2YgYW55IGxvc3NlcyB5b3UgbWlnaHQgaGF2ZSBpbmN1cnJlZC48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gUGxlYXNlIHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gZW5zdXJlIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IGZpbGluZ3MuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gWW91ciBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNvbGQgSG9tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU29sZCBIb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgc29sZCBhIHBlcnNvbmFsIGhvbWUgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgU2FsZTo8L3N0cm9uZz4gVGhlIGNsb3NpbmcgZGF0ZSB3aGVuIHRoZSBzYWxlIHdhcyBvZmZpY2lhbGx5IGNvbXBsZXRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlNhbGUgUHJpY2U6PC9zdHJvbmc+IFRoZSB0b3RhbCBhbW91bnQgeW91IHJlY2VpdmVkIGZvciB0aGUgaG9tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvc3QgQmFzaXM6PC9zdHJvbmc+IE9yaWdpbmFsIHB1cmNoYXNlIHByaWNlLCBwbHVzIGFueSBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgaG9tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IERldGFpbHM6PC9zdHJvbmc+IEFkZHJlc3MgYW5kIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnR5IHNvbGQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYWluIFJlc2lkZW5jZSBvciBOb3Q6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHRoaXMgd2FzIHlvdXIgbWFpbiByZXNpZGVuY2UgZm9yIGF0IGxlYXN0IHR3byBvZiB0aGUgbGFzdCBmaXZlIHllYXJzIHByaW9yIHRvIHRoZSBzYWxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvZiBIb21lIEltcHJvdmVtZW50czo8L3N0cm9uZz4gUmVjZWlwdHMgb3IgcmVjb3JkcyBvZiBhbnkgbWFqb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIHByb3BlcnR5LCB3aGljaCBjYW4gYWZmZWN0IHRoZSBjb3N0IGJhc2lzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgVXNlOjwvc3Ryb25nPiBJZiBub3QgYWx3YXlzIHVzZWQgYXMgYSBwZXJzb25hbCBob21lLCBkZXRhaWxzIG9uIGFueSB1c2Ugb2YgdGhlIHByb3BlcnR5IGZvciByZW50YWwsIGJ1c2luZXNzLCBvciBvdGhlciBub24tcGVyc29uYWwgdXNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVsYXRlZCBFeHBlbnNlczo8L3N0cm9uZz4gQW55IGNvc3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FsZSwgc3VjaCBhcyBsZWdhbCBmZWVzLCByZWFsIGVzdGF0ZSBhZ2VudCBjb21taXNzaW9ucywgYW5kIGhvbWUgc3RhZ2luZyBleHBlbnNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIGRldGVybWluaW5nIHBvdGVudGlhbCB0YXggYmVuZWZpdHMgb3Igb2JsaWdhdGlvbnMuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gZW5zdXJlIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkluc3RhbGxtZW50IFNhbGUgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkluc3RhbGxtZW50IFNhbGUgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgeW91J3ZlIHNvbGQgcHJvcGVydHkgdGhpcyB5ZWFyIHVuZGVyIGFuIGluc3RhbGxtZW50IHBsYW4uIFRvIGFjY3VyYXRlbHkgcmVwb3J0IHRoaXMgdHJhbnNhY3Rpb24gYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlNhbGUgQWdyZWVtZW50Ojwvc3Ryb25nPiBBIGNvcHkgb2YgdGhlIGNvbXBsZXRlIHNhbGUgYWdyZWVtZW50IGRldGFpbGluZyB0aGUgdGVybXMgb2YgdGhlIGluc3RhbGxtZW50IHNhbGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9wZXJ0eSBEZXNjcmlwdGlvbjo8L3N0cm9uZz4gQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHkgc29sZCAoZS5nLiwgbGFuZCwgYnVpbGRpbmcsIGVxdWlwbWVudCkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFNjaGVkdWxlOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcGF5bWVudCBzY2hlZHVsZSBhZ3JlZWQgdXBvbiwgaW5jbHVkaW5nIHRoZSBkYXRlcyBhbmQgYW1vdW50cyBvZiBlYWNoIGluc3RhbGxtZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW1vdW50cyBSZWNlaXZlZDo8L3N0cm9uZz4gVG90YWwgYW1vdW50cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgZG93biBwYXltZW50IGFuZCBhbnkgaW5zdGFsbG1lbnQgcGF5bWVudHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmluY2lwYWwgJmFtcDsgSW50ZXJlc3QgQnJlYWtkb3duOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgYW1vdW50cyByZWNlaXZlZCBiZXR3ZWVuIHByaW5jaXBhbCBhbmQgaW50ZXJlc3QgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IEJhc2lzOjwvc3Ryb25nPiBEb2N1bWVudGF0aW9uIHJlZ2FyZGluZyB0aGUgcHJvcGVydHkncyBvcmlnaW5hbCBjb3N0LCBpbXByb3ZlbWVudHMgbWFkZSwgYW5kIGFueSBkZXByZWNpYXRpb24gdGFrZW4gaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkV4cGVuc2UgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IHJlbGV2YW50IGV4cGVuc2VzIGluIHJlbGF0aW9uIHRvIHRoZSBzYWxlIHRoYXQgbWlnaHQgYmUgZGVkdWN0aWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJ1eWVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBMZWdhbCBuYW1lIGFuZCBjb250YWN0IGRldGFpbHMgb2YgdGhlIGJ1eWVyLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGNhbGN1bGF0aW5nIGFueSBwcm9maXQgb3IgbG9zcyBmcm9tIHRoZSBzYWxlIGFuZCBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCB0YXggaW1wbGljYXRpb25zIG9mIHRoZSBpbnN0YWxsbWVudCBwYXltZW50cyByZWNlaXZlZC48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gWW91IGNhbiB1cGxvYWQgdGhlIGRvY3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCBvciBlbWFpbCB0aGVtIHRvIHRheEBsZW5kYWhhbmRhY2NvdW50aW5nLmNvbS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiV29ydGhsZXNzIFNlY3VyaXRpZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIldvcnRobGVzcyBTZWN1cml0aWVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5BcyB5b3UgaW5kaWNhdGVkIHRoYXQgeW91IGhhdmUgaGFkIGludmVzdG1lbnRzLCBzdWNoIGFzIHN0b2NrcyBvciBib25kcywgdGhhdCBiZWNhbWUgY29tcGxldGVseSB3b3J0aGxlc3MgdGhpcyB5ZWFyLCB3ZSBuZWVkIHRvIGdhdGhlciBzcGVjaWZpYyBpbmZvcm1hdGlvbiB0byBwcm9wZXJseSByZXBvcnQgdGhlc2Ugb24geW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIHRoZSBTZWN1cml0eTo8L3N0cm9uZz4gRnVsbCBuYW1lIGFuZCB0eXBlIG9mIGVhY2ggc2VjdXJpdHkgdGhhdCBiZWNhbWUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHVyY2hhc2UgRGV0YWlsczo8L3N0cm9uZz4gRGF0ZSBvZiBwdXJjaGFzZSBhbmQgdGhlIHB1cmNoYXNlIHByaWNlIGZvciBlYWNoIHNlY3VyaXR5LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+V29ydGhsZXNzbmVzcyBEZXRlcm1pbmF0aW9uIERhdGU6PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlIHdoZW4geW91IGRldGVybWluZWQgdGhlIHNlY3VyaXR5IHRvIGJlIHdvcnRobGVzcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIHlvdSByZWNlaXZlZCBvciB1c2VkIHRvIGRldGVybWluZSB0aGF0IHRoZSBpbnZlc3RtZW50cyBiZWNhbWUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QXR0ZW1wdHMgdG8gU2VsbCBvciBUcmFkZTo8L3N0cm9uZz4gQSBicmllZiBkZXNjcmlwdGlvbiBvZiBhbnkgYXR0ZW1wdHMgbWFkZSB0byBzZWxsIG9yIHRyYWRlIHRoZSBzZWN1cml0aWVzIGJlZm9yZSBkZXRlcm1pbmluZyB0aGV5IHdlcmUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+SW52ZXN0bWVudCBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGludmVzdG1lbnQgYWNjb3VudCBzdGF0ZW1lbnRzIHNob3dpbmcgdGhlIHdvcnRobGVzcyBzZWN1cml0aWVzIGFuZCB0aGVpciB2YWx1ZSBvdmVyIHRpbWUsIGxlYWRpbmcgdXAgdG8gdGhlaXIgZGVjbGFyZWQgd29ydGhsZXNzbmVzcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uLjwvcD5gXHJcbiAgfSwgXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTZWN0aW9uIDEyNDQgQnVzaW5lc3MgU3RvY2tcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNlY3Rpb24gMTI0NCBCdXNpbmVzcyBTdG9ja1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgc2FsZSBvZiBzaGFyZXMgaW4gYSBzbWFsbCBidXNpbmVzcyB3aGVyZSB5b3Ugd2VyZSBhbiBvcmlnaW5hbCBpbnZlc3Rvci4gQXMgeW91IGluZGljYXRlZCBhIGxvc3Mgb24gdGhpcyBpbnZlc3RtZW50LCBpdCdzIGNydWNpYWwgdG8gZXZhbHVhdGUgd2hldGhlciB0aGlzIHF1YWxpZmllcyBmb3Igc3BlY2lhbCB0YXggdHJlYXRtZW50IHVuZGVyIFNlY3Rpb24gMTI0NC4gVG8gYWNjdXJhdGVseSBhbmFseXplIGFuZCByZXBvcnQgdGhlc2UgYWN0aXZpdGllcywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSA8c3Ryb25nPmNlcnRpZmljYXRlIG9mIGluY29ycG9yYXRpb248L3N0cm9uZz4gb3Igb3RoZXIgZG9jdW1lbnRhdGlvbiBjb25maXJtaW5nIHRoZSBzdG9jayBxdWFsaWZpZXMgYXMgU2VjdGlvbiAxMjQ0IHN0b2NrLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgPHN0cm9uZz5kZXRhaWxlZCBzdGF0ZW1lbnQ8L3N0cm9uZz4gb2YgdGhlIGludmVzdG1lbnQsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudCBhbmQgZGF0ZSBvZiB0aGUgb3JpZ2luYWwgaW52ZXN0bWVudC48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPk51bWJlciBvZiBzaGFyZXMgcHVyY2hhc2VkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UHJvb2Ygb2YgYmVpbmcgYW4gb3JpZ2luYWwgaG9sZGVyLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIHRoZSBzYWxlPC9zdHJvbmc+LCBzcGVjaWZ5aW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+RGF0ZSBvZiBzYWxlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+TnVtYmVyIG9mIHNoYXJlcyBzb2xkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+U2FsZSBwcmljZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBhc3NvY2lhdGVkIGV4cGVuc2VzIHdpdGggdGhlIHNhbGUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5BIGJyaWVmIGV4cGxhbmF0aW9uIG9mIHRoZSBjaXJjdW1zdGFuY2VzIGxlYWRpbmcgdG8gdGhlIGxvc3MuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIHdpbGwgZW5hYmxlIHVzIHRvIGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGEgYmVuZWZpY2lhbCB0YXggdHJlYXRtZW50IHVuZGVyIFNlY3Rpb24gMTI0NCwgcG90ZW50aWFsbHkgbWluaW1pemluZyB5b3VyIHRheGFibGUgaW5jb21lLiBQbGVhc2Ugc3VibWl0IHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRpbWVseSBmaWxpbmcuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVsYXRlZCBQYXJ0eSBUcmFuc2FjdGlvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlbGF0ZWQgUGFydHkgVHJhbnNhY3Rpb25zXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSByZWNlaXZlZCB5b3VyIHJlc3BvbnNlIGluZGljYXRpbmcgdGhhdCB0aGVyZSB3ZXJlIHRyYW5zYWN0aW9ucyB3aXRoIHJlbGF0ZWQgcGFydGllcyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGVzZSB0cmFuc2FjdGlvbnMgYW5kIGluY29ycG9yYXRlIHRoZW0gaW50byB5b3VyIHRheCBmaWxpbmdzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiB0aGUgVHJhbnNhY3Rpb25zOjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VHlwZSBvZiB0cmFuc2FjdGlvbnMgKGUuZy4sIHNhbGUsIHRyYWRlLCB0cmFuc2ZlciBvZiBwcm9wZXJ0eSBvciBpbnZlc3RtZW50cykuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5EYXRlKHMpIG9mIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRlc2NyaXB0aW9uIG9mIGl0ZW1zIG9yIHByb3BlcnRpZXMgdHJhbnNmZXJyZWQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBhcnRpZXMgSW52b2x2ZWQ6PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5OYW1lcyBhbmQgcmVsYXRpb25zaGlwcyB0byB5b3UgKGUuZy4sIGZhbWlseSBtZW1iZXIsIGZyaWVuZCwgb3IgYnVzaW5lc3MgZW50aXR5KS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklmIGEgYnVzaW5lc3MgZW50aXR5IGlzIGludm9sdmVkLCB5b3VyIGFuZCB5b3VyIGZhbWlseSdzIG93bmVyc2hpcCBwZXJjZW50YWdlIGluIHRoZSBidXNpbmVzcy48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIERldGFpbHMgb2YgdGhlIFRyYW5zYWN0aW9uczo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPk1hcmtldCB2YWx1ZSBvZiBwcm9wZXJ0eSBvciBpbnZlc3RtZW50cyBhdCB0aGUgdGltZSBvZiB0cmFuc2FjdGlvbi48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudCByZWNlaXZlZCBvciBwYWlkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGV4Y2hhbmdlIG9mIGdvb2RzLCBzZXJ2aWNlcywgb3Igb3RoZXIgYXNzZXRzLCBpbmNsdWRpbmcgdGhlaXIgZmFpciBtYXJrZXQgdmFsdWUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb246PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3BpZXMgb2YgY29udHJhY3RzIG9yIGFncmVlbWVudHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWNlaXB0cyBvciBwcm9vZiBvZiBwYXltZW50L2V4Y2hhbmdlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QXBwcmFpc2FscyBvciB2YWx1YXRpb25zIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzLCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggdGF4IGxhd3MgcmVnYXJkaW5nIHJlbGF0ZWQgcGFydHkgdHJhbnNhY3Rpb25zIGFuZCBhdm9pZGluZyBhbnkgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHByZXBhcmF0aW9ucy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1ub24tcmVjb2duaXRpb24tdHJhbnNmZXJzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zvcm0tbW9kZWxzL2ktbm9uLXJlY29nbml0aW9uLXRyYW5zZmVycy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTm9ucmVjb2duaXRpb25UcmFuc2ZlcnNNb2RlbCB7XHJcbiAgICBoYWRTZWN0aW9uMTIxSG9tZVNhbGU6IGJvb2xlYW47XHJcbiAgICBoYWRTZWN0aW9uMTAzMUV4Y2hhbmdlOiBib29sZWFuO1xyXG4gICAgaGFkU2VjdGlvbjEwMzNFeGNoYW5nZTogYm9vbGVhbjtcclxufSJdfQ==
@@ -12,9 +12,10 @@ tslib_1.__exportStar(require("./i-insurance-payments-model"), exports);
12
12
  tslib_1.__exportStar(require("./i-investment-income-model"), exports);
13
13
  tslib_1.__exportStar(require("./i-last-day-year-marital-status-model"), exports);
14
14
  tslib_1.__exportStar(require("./i-multiple-business-se-tax-model"), exports);
15
+ tslib_1.__exportStar(require("./i-non-recognition-transfers-model"), exports);
15
16
  tslib_1.__exportStar(require("./i-statutory-extensions-model"), exports);
16
17
  tslib_1.__exportStar(require("./i-taxable-self-employment-income-model"), exports);
17
18
  tslib_1.__exportStar(require("./i-taxpayer-bio-model"), exports);
18
19
  tslib_1.__exportStar(require("./i-veteran-benefits-model"), exports);
19
20
  tslib_1.__exportStar(require("./last-day-year-marital-statuses"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWtDO0FBQ2xDLHdFQUE4QztBQUM5Qyx1RUFBNkM7QUFDN0Msb0VBQTBDO0FBQzFDLG9FQUEwQztBQUMxQyxvRUFBMEM7QUFDMUMsMEVBQWdEO0FBQ2hELHVFQUE2QztBQUM3QyxzRUFBNEM7QUFDNUMsaUZBQXVEO0FBQ3ZELDZFQUFtRDtBQUNuRCx5RUFBK0M7QUFDL0MsbUZBQXlEO0FBQ3pELGlFQUF1QztBQUN2QyxxRUFBMkM7QUFDM0MsMkVBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaS1hZGRyZXNzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktY2Fub25pY2FsLXJlc2lkZW5jeS5tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhcGl0YWwtZ2FpbnMtbG9zcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNsZXJneS10YXhhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWRlcGVuZGVudHMtZm9ybS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWZyaW5nZS1iZW5lZml0cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWVtcGxveWVlLWNvbXBlbnNhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWluc3VyYW5jZS1wYXltZW50cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWludmVzdG1lbnQtaW5jb21lLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLW11bHRpcGxlLWJ1c2luZXNzLXNlLXRheC1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXN0YXR1dG9yeS1leHRlbnNpb25zLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdGF4YWJsZS1zZWxmLWVtcGxveW1lbnQtaW5jb21lLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdGF4cGF5ZXItYmlvLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdmV0ZXJhbi1iZW5lZml0cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9sYXN0LWRheS15ZWFyLW1hcml0YWwtc3RhdHVzZXNcIjtcclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWtDO0FBQ2xDLHdFQUE4QztBQUM5Qyx1RUFBNkM7QUFDN0Msb0VBQTBDO0FBQzFDLG9FQUEwQztBQUMxQyxvRUFBMEM7QUFDMUMsMEVBQWdEO0FBQ2hELHVFQUE2QztBQUM3QyxzRUFBNEM7QUFDNUMsaUZBQXVEO0FBQ3ZELDZFQUFtRDtBQUNuRCw4RUFBb0Q7QUFDcEQseUVBQStDO0FBQy9DLG1GQUF5RDtBQUN6RCxpRUFBdUM7QUFDdkMscUVBQTJDO0FBQzNDLDJFQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ktYWRkcmVzcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhbm9uaWNhbC1yZXNpZGVuY3kubW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jbGVyZ3ktdGF4YXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1kZXBlbmRlbnRzLWZvcm0tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1mcmluZ2UtYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1lbXBsb3llZS1jb21wZW5zYXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnN1cmFuY2UtcGF5bWVudHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnZlc3RtZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWxhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1tdWx0aXBsZS1idXNpbmVzcy1zZS10YXgtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1ub24tcmVjb2duaXRpb24tdHJhbnNmZXJzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktc3RhdHV0b3J5LWV4dGVuc2lvbnMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhhYmxlLXNlbGYtZW1wbG95bWVudC1pbmNvbWUtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhwYXllci1iaW8tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS12ZXRlcmFuLWJlbmVmaXRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXNlc1wiO1xyXG4iXX0=
@@ -132,12 +132,12 @@ export var ActionTaxFragments = [
132
132
  {
133
133
  actionTaxSubject: "Disposed Capital Assets",
134
134
  actionTitle: "Disposed Capital Assets",
135
- actionInstructions: "<p>We understand that you've indicated disposing of capital assets during the last tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>\n <p>Please provide the following details at your earliest convenience:</p>\n <ol>\n <li><b>Description of each disposed asset:</b> Include the type of asset (e.g., real estate, stocks, bonds).</li>\n <li><b>Date of acquisition:</b> The purchase date or the date you originally came into possession of each asset.</li>\n <li><b>Acquisition cost:</b> The original purchase price or cost basis of each asset, including any improvements made.</li>\n <li><b>Date of disposal:</b> The specific date on which each asset was sold, exchanged, or otherwise disposed of.</li>\n <li><b>Sale or disposal proceeds:</b> The total amount received from the disposal of the asset.</li>\n <li><b>Associated expenses:</b> Any costs incurred directly from the sale or disposal process, such as broker's fees, advertising, legal fees, etc.</li>\n <li><b>Reason for disposal:</b> Briefly describe the reason behind the disposal of the asset, if applicable.</li>\n </ol>\n <p>This information is crucial for calculating potential capital gains or losses and determining their impact on your tax obligations. Please attach any supporting documentation, such as sales receipts, deeds, contracts, or brokerage statements, to substantiate the details provided.</p>\n <p>We appreciate your prompt attention to this matter and are here to assist with any questions you may have. You can reach us via email or phone for further discussion.</p>\n <p>Thank you for your cooperation.</p>"
135
+ actionInstructions: "<p>We understand that you've indicated disposing of capital assets during the tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>\n <p>Please provide the following details at your earliest convenience:</p>\n <ol>\n <li><b>Description of each disposed asset:</b> Include the type of asset (e.g., real estate, stocks, bonds).</li>\n <li><b>Date of acquisition:</b> The purchase date or the date you originally came into possession of each asset.</li>\n <li><b>Acquisition cost:</b> The original purchase price or cost basis of each asset, including any improvements made.</li>\n <li><b>Date of disposal:</b> The specific date on which each asset was sold, exchanged, or otherwise disposed of.</li>\n <li><b>Sale or disposal proceeds:</b> The total amount received from the disposal of the asset.</li>\n <li><b>Associated expenses:</b> Any costs incurred directly from the sale or disposal process, such as broker's fees, advertising, legal fees, etc.</li>\n <li><b>Reason for disposal:</b> Briefly describe the reason behind the disposal of the asset, if applicable.</li>\n </ol>\n <p>This information is crucial for calculating potential capital gains or losses and determining their impact on your tax obligations. Please attach any supporting documentation, such as sales receipts, deeds, contracts, or brokerage statements, to substantiate the details provided.</p>\n <p>We appreciate your prompt attention to this matter and are here to assist with any questions you may have. You can reach us via email or phone for further discussion.</p>\n <p>Thank you for your cooperation.</p>"
136
136
  },
137
137
  {
138
138
  actionTaxSubject: "Mutual Fund Gain",
139
139
  actionTitle: "Mutual Fund Gain",
140
- actionInstructions: "<p>In order to accurately report your mutual fund earnings on your tax return, as per your indication of receiving gains from a mutual fund or similar investment, we require the following documents:</p>\n <ol>\n <li><strong>1099-DIV Form:</strong> This form is crucial as it provides details on dividends and distributions you received from your mutual fund investments. Please ensure to provide this form if your mutual fund earnings were reported on it.</li>\n <li><strong>Statement of Account:</strong> This provides a comprehensive view of all transactions within your account, including purchases, redemptions, and reinvested dividends which help us understand the context of your gains.</li>\n <li><strong>Year-End Summary:</strong> Often mutual funds provide a year-end summary to their investors. This summary can be very helpful in preparing your taxes as it consolidates all the relevant information.</li>\n <li><strong>Any other relevant documents:</strong> This could include additional 1099 forms (like 1099-B if any sales occurred), original investment statements, or anything else that could impact your tax situation.</li>\n </ol>\n <p>We understand that gathering these documents may require some time, however, having these readily available will ensure the accuracy and efficiency of your tax preparation process. Your prompt response will be greatly appreciated.</p>\n <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact me.</p>"
140
+ actionInstructions: "<p>In order to accurately report your mutual fund earnings on your tax return, as per your indication of receiving gains from a mutual fund or similar investment, we require the following documents:</p>\n <ol>\n <li><strong>1099-DIV Form:</strong> This form is crucial as it provides details on dividends and distributions you received from your mutual fund investments. Please ensure to provide this form if your mutual fund earnings were reported on it.</li>\n <li><strong>Statement of Account:</strong> This provides a comprehensive view of all transactions within your account, including purchases, redemptions, and reinvested dividends which help us understand the context of your gains.</li>\n <li><strong>Year-End Summary:</strong> Often mutual funds provide a year-end summary to their investors. This summary can be very helpful in preparing your taxes as it consolidates all the relevant information.</li>\n <li><strong>Any other relevant documents:</strong> This could include additional 1099 forms (like 1099-B if any sales occurred), original investment statements, or anything else that could impact your tax situation.</li>\n </ol>\n <p>We understand that gathering these documents may require some time, however, having these readily available will ensure the accuracy and efficiency of your tax preparation process. Your prompt response will be greatly appreciated.</p>\n <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact us.</p>"
141
141
  },
142
142
  {
143
143
  actionTaxSubject: "Mutual Fund Disposal",
@@ -175,4 +175,4 @@ export var ActionTaxFragments = [
175
175
  actionInstructions: "<p>We received your response indicating that there were transactions with related parties during the tax year. To accurately assess these transactions and incorporate them into your tax filings, we kindly request the following detailed information:</p>\n <ol>\n <li><strong>Description of the Transactions:</strong>\n <ul>\n <li>Type of transactions (e.g., sale, trade, transfer of property or investments).</li>\n <li>Date(s) of transactions.</li>\n <li>Description of items or properties transferred.</li>\n </ul>\n </li>\n <li><strong>Parties Involved:</strong>\n <ul>\n <li>Names and relationships to you (e.g., family member, friend, or business entity).</li>\n <li>If a business entity is involved, your and your family's ownership percentage in the business.</li>\n </ul>\n </li>\n <li><strong>Financial Details of the Transactions:</strong>\n <ul>\n <li>Market value of property or investments at the time of transaction.</li>\n <li>Amount received or paid.</li>\n <li>Any exchange of goods, services, or other assets, including their fair market value.</li>\n </ul>\n </li>\n <li><strong>Documentation:</strong>\n <ul>\n <li>Copies of contracts or agreements.</li>\n <li>Receipts or proof of payment/exchange.</li>\n <li>Appraisals or valuations of property or investments, if applicable.</li>\n </ul>\n </li>\n </ol>\n <p>This information is critical for ensuring compliance with tax laws regarding related party transactions and avoiding any potential penalties or audits. Please provide these details at your earliest convenience to facilitate the completion of your tax preparations.</p>\n <p>If you have any questions or require clarification, do not hesitate to contact us. Thank you for your prompt attention to this matter.</p>"
176
176
  }
177
177
  ];
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLGdoREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDRCQUE0QjtRQUM5QyxXQUFXLEVBQUUsNEJBQTRCO1FBQ3pDLGtCQUFrQixFQUFFLGtvQ0FVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUUsazRDQVl1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsa0JBQWtCLEVBQUUseWxEQVN1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUNBQW1DO1FBQ3JELFdBQVcsRUFBRSxtQ0FBbUM7UUFDaEQsa0JBQWtCLEVBQUUsKzFEQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLDB1Q0FRMks7S0FDaE07SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG92REFhbUI7S0FDeEM7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLGtCQUFrQixFQUFFLHdnREFROEY7S0FDbkg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFLDg2Q0FRaUo7S0FDdEs7SUFDRDtRQUNFLGdCQUFnQixFQUFFLFdBQVc7UUFDN0IsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxrQkFBa0IsRUFBRSxvdkRBV2tJO0tBQ3ZKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLFdBQVcsRUFBRSxXQUFXO1FBQ3hCLGtCQUFrQixFQUFFLHNsREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFLHM1REFjdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFLG02Q0FVbUI7S0FDeEM7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDZCQUE2QjtRQUMvQyxXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLGtCQUFrQixFQUFFLHluREFzQnVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRSxtaEVBK0IwSDtLQUMvSTtDQWlCRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFjdGlvblRheEZyYWdtZW50cyA9IFtcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgUHJvdmlkZSBQcmlvciBZZWFyIFRheCBSZXR1cm5zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgcmVxdWlyZSB5b3VyIGFzc2lzdGFuY2UgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3MuIE9uZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHlvdXIgPHN0cm9uZz5QcmlvciBZZWFyIFRheCBSZXR1cm5zPC9zdHJvbmc+LiBUaGlzIGRvY3VtZW50IGlzIGVzc2VudGlhbCBmb3Igc2V2ZXJhbCByZWFzb25zLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiB2ZXJpZnlpbmcgY2FycnktZm9yd2FyZCBhbW91bnRzLCBjb21wYXJpbmcgeWVhci1vdmVyLXllYXIgaW5jb21lIGFuZCBkZWR1Y3Rpb25zLCBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIHRheCBsYXdzLjwvcD5cclxuICAgIDxwPlRvIGZhY2lsaXRhdGUgeW91ciB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPkZlZGVyYWwgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5TdGF0ZSB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhciwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgPHN0cm9uZz5ub3RpY2VzIG9yIGFtZW5kbWVudHM8L3N0cm9uZz4gcmVsYXRlZCB0byB5b3VyIHByaW9yIHllYXIgdGF4IHJldHVybnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgZGlmZmljdWx0eSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgbGV0IHVzIGtub3cgYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBQcm92aWRpbmcgdGhlc2Ugd2lsbCBlbmFibGUgdXMgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gd2l0aG91dCBkZWxheS48L3A+YCxcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU3RhdHV0b3J5IEV4dGVuc2lvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgRGV0ZXJtaW5pbmcgRWxpZ2liaWxpdHkgZm9yIFN0YXR1dG9yeSBGaWxpbmcgRXh0ZW5zaW9uc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgeW91IHF1YWxpZnkgZm9yIHN0YXR1dG9yeSBmaWxpbmcgZXh0ZW5zaW9ucyBmb3IgeW91ciB0YXggcmV0dXJucywgd2UgcmVxdWlyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIHlvdS4gUGxlYXNlIHNlZSBiZWxvdyB0aGUgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiBuZWVkZWQgYmFzZWQgb24gZGlmZmVyZW50IGVsaWdpYmlsaXR5IGNyaXRlcmlhOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GZWRlcmFsIERpc2FzdGVyIEFyZWFzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db25maXJtYXRpb24gb2YgeW91ciBwcmltYXJ5IHJlc2lkZW5jZSBsb2NhdGlvbiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgcmVjZWl2ZWQgcmVnYXJkaW5nIGRpc2FzdGVyIGRlY2xhcmF0aW9ucyBpbiB5b3VyIGFyZWEuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxpdmluZyBBYnJvYWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlByb29mIG9mIHJlc2lkZW5jZSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGZvciBtb3JlIHRoYW4gMzMwIGZ1bGwgZGF5cyB3aXRoaW4gYSAxMi1tb250aCBwZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgeW91ciBwaHlzaWNhbCBwcmVzZW5jZSBvciBib25hIGZpZGUgcmVzaWRlbmNlIGluIGEgZm9yZWlnbiBjb3VudHJ5LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmUgTWlsaXRhcnk8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gaW5kaWNhdGluZyBhY3RpdmUgZHV0eSBzdGF0dXMsIGluY2x1ZGluZyBkYXRlcyBvZiBzZXJ2aWNlIHdpdGhpbiB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBvcmRlcnMgZm9yIG92ZXJzZWFzIGRlcGxveW1lbnQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvbWJhdCBab25lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5PZmZpY2lhbCBvcmRlcnMgZGVtb25zdHJhdGluZyB5b3VyIGRlcGxveW1lbnQgdG8gYSBjb21iYXQgem9uZSwgaW5jbHVkaW5nIHRoZSBzcGVjaWZpYyBkYXRlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSByZWxldmFudCBjb21tdW5pY2F0aW9uIGZyb20gdGhlIERlcGFydG1lbnQgb2YgRGVmZW5zZSBvciBvdGhlciBvZmZpY2lhbCBib2RpZXMgcmVnYXJkaW5nIHlvdXIgc2VydmljZSBpbiBhIGNvbWJhdCB6b25lLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGVwZW5kZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVxdWVzdCBmb3IgRGVwZW5kZW50IEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGRlcGVuZGVudHMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXBwbHlpbmcgdGhlIG1vc3QgYmVuZWZpY2lhbCBkZXBlbmRlbmN5IHRlc3RzLCBpbmNsdWRpbmcgcXVhbGlmaWNhdGlvbnMgZm9yIEhlYWQgb2YgSG91c2Vob2xkIChIT0gpLCBDaGlsZCBUYXggQ3JlZGl0LCBhbmQgb3RoZXIgcmVsYXRlZCBiZW5lZml0cy4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIGZvciBlYWNoIG9mIHlvdXIgY2xhaW1lZCBkZXBlbmRlbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GdWxsIE5hbWU6PC9zdHJvbmc+IFRoZSBjb21wbGV0ZSBsZWdhbCBuYW1lIG9mIHRoZSBkZXBlbmRlbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Tb2NpYWwgU2VjdXJpdHkgTnVtYmVyIChTU04pIG9yIFRheHBheWVyIElkZW50aWZpY2F0aW9uIE51bWJlciAoVElOKTo8L3N0cm9uZz4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBCaXJ0aDo8L3N0cm9uZz4gSGVscHMgdG8gZGV0ZXJtaW5lIGVsaWdpYmlsaXR5IGZvciBjZXJ0YWluIGNyZWRpdHMgbGlrZSB0aGUgQ2hpbGQgVGF4IENyZWRpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlbGF0aW9uc2hpcCB0byBZb3U6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRlcGVuZGVudCdzIHJlbGF0aW9uc2hpcCAoc29uLCBkYXVnaHRlciwgc3RlcGNoaWxkLCBmb3N0ZXIgY2hpbGQsIGJyb3RoZXIsIHNpc3RlciwgZXRjLikgdG8geW91LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVzaWRlbmN5Ojwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgbGl2ZWQgd2l0aCB5b3UgZm9yIG1vcmUgdGhhbiBoYWxmIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIFN1cHBvcnQ6PC9zdHJvbmc+IENvbmZpcm0geW91IHByb3ZpZGVkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBkZXBlbmRlbnTigJlzIGZpbmFuY2lhbCBzdXBwb3J0IGZvciB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNpdGl6ZW5zaGlwOjwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgaXMgYSBVLlMuIGNpdGl6ZW4sIFUuUy4gbmF0aW9uYWwsIG9yIGEgcmVzaWRlbnQgYWxpZW4uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSW5kaWNhdGUgd2hldGhlciB0aGUgZGVwZW5kZW50IGlzIG1hcnJpZWQgYW5kLCBpZiBzbywgd2hldGhlciB0aGV5IGFyZSBmaWxpbmcgam9pbnRseS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkluY29tZSBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgcHJvdmlkZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgaW5jb21lIHRoZSBkZXBlbmRlbnQgbWF5IGhhdmUgZWFybmVkIG9yIHJlY2VpdmVkLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB5b3UgcHJvdmlkZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgaW5mb3JtYXRpb24gdG8gYXZvaWQgYW55IGRlbGF5cyBpbiB0aGUgcHJvY2Vzc2luZyBvZiB5b3VyIHRheCByZXR1cm4uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSGVhZCBvZiBIb3VzZWhvbGQgRmlsaW5nXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgYW5kIGNvbXBsaWFudCB0YXggZmlsaW5nIHVuZGVyIHRoZSBcIkhlYWQgb2YgSG91c2Vob2xkXCIgc3RhdHVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiBUaGlzIHN0YXR1cyBjYW4gcHJvdmlkZSBzaWduaWZpY2FudCB0YXggYmVuZWZpdHMsIGFuZCBpdCBpcyBjcnVjaWFsIHRoYXQgYWxsIElSUyByZXF1aXJlbWVudHMgYXJlIG1ldC4gUGxlYXNlIHByb3ZpZGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IENvbmZpcm1hdGlvbiBvZiB5b3VyIG1hcml0YWwgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IGRheSBvZiB0aGUgdGF4IHllYXIgKGUuZy4sIHNpbmdsZSwgZGl2b3JjZWQsIGxlZ2FsbHkgc2VwYXJhdGVkKS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+SG91c2Vob2xkIEV4cGVuc2VzOjwvc3Ryb25nPiBEZXRhaWxlZCByZWNvcmRzIGluZGljYXRpbmcgdGhhdCB5b3UgcGFpZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY29zdHMgb2Yga2VlcGluZyB1cCBhIGhvbWUgZm9yIHRoZSB0YXggeWVhci4gVGhpcyBpbmNsdWRlcyByZW50LCBtb3J0Z2FnZSBpbnRlcmVzdCwgcHJvcGVydHkgdGF4ZXMsIHV0aWxpdGllcywgcmVwYWlycywgbWFpbnRlbmFuY2UsIGFuZCBncm9jZXJpZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPlF1YWxpZnlpbmcgUGVyc29uOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcXVhbGlmeWluZyBwZXJzb24ocykgd2hvIGxpdmVkIHdpdGggeW91IGluIHRoZSBob21lIGZvciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgeWVhciwgZXhjZXB0IGZvciB0ZW1wb3JhcnkgYWJzZW5jZXMgc3VjaCBhcyBzY2hvb2wuIFBsZWFzZSBpbmNsdWRlOlxyXG4gICAgICA8dWw+XHJcbiAgICAgIDxsaT5GdWxsIG5hbWUgYW5kIHJlbGF0aW9uc2hpcCB0byB5b3UgKGUuZy4sIGNoaWxkLCBwYXJlbnQsIHNpYmxpbmcpLjwvbGk+XHJcbiAgICAgIDxsaT5EdXJhdGlvbiBvZiByZXNpZGVuY3kgYXQgeW91ciBob21lIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgPGxpPlN1cHBvcnRpbmcgZG9jdW1lbnRzIChiaXJ0aCBjZXJ0aWZpY2F0ZXMsIHNjaG9vbCByZWNvcmRzLCBldGMuKSBwcm92aW5nIHRoZSByZXNpZGVuY3kgYW5kIHJlbGF0aW9uc2hpcC48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgU3VwcG9ydDo8L3N0cm9uZz4gQW55IGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHlvdXIgY2xhaW0gZm9yIHRoZSBIZWFkIG9mIEhvdXNlaG9sZCBmaWxpbmcgc3RhdHVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCBwcm92aWRpbmcgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgeW91ciBiZW5lZml0IGFuZCB0byBjb21wbHkgd2l0aCB0YXggbGF3cy4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkZXRhaWxzLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbmZvcm1hdGlvbiBvbiBSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIHNwb3VzZSBpcyBub3QgYSBVLlMuIGNpdGl6ZW4uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHlvdXIgdGF4IHN0YXR1cywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVjZXNzYXJ5IFRheCBSZXNpZGVuY3kgVGVzdHMsIHdoaWNoIGluY2x1ZGUgdGhlIDxzdHJvbmc+R3JlZW4gQ2FyZCBUZXN0PC9zdHJvbmc+IGFuZCB0aGUgPHN0cm9uZz5TdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0PC9zdHJvbmc+LiBUaGlzIHdpbGwgaGVscCB1cyBlbnN1cmUgeW91ciB0YXggcmV0dXJucyBhcmUgY29tcGxldGVkIGNvcnJlY3RseSBhbmQgY29tcGx5IHdpdGggVS5TLiByZWd1bGF0aW9ucy48L3A+XHJcblxyXG4gICAgPHA+VG8gcHJvY2VlZCwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5HcmVlbiBDYXJkIFN0YXR1czo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgeW91IG9yIHlvdXIgc3BvdXNlIGhhdmUgYmVlbiBpc3N1ZWQgYSBVLlMuIGdyZWVuIGNhcmQgKExhd2Z1bCBQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCkgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgdGF4IHllYXIuIElmIHllcywgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIGdyZWVuIGNhcmQgb3IgdGhlIG9mZmljaWFsIGRvY3VtZW50IGNvbmZpcm1pbmcgdGhlIHN0YXR1cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQXJyaXZhbCBpbiB0aGUgVS5TLjo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGVzIHdoZW4geW91IGFuZC9vciB5b3VyIHNwb3VzZSBmaXJzdCBhcnJpdmVkIGluIHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5UcmF2ZWwgSGlzdG9yeTo8L3N0cm9uZz4gQSBkZXRhaWxlZCBsaXN0IG9mIGFsbCB0aGUgZGF0ZXMgeW91IGFuZC9vciB5b3VyIHNwb3VzZSBlbnRlcmVkIGFuZCBsZWZ0IHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdGhlIFN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3QuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WaXNhIFR5cGU6PC9zdHJvbmc+IElmIHlvdSBvciB5b3VyIHNwb3VzZSBhcmUgb24gYSB2aXNhLCBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIHZpc2EuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFRheCBGaWxpbmdzOjwvc3Ryb25nPiBDb3BpZXMgb2YgbGFzdCB5ZWFyJ3MgdGF4IHJldHVybnMsIGlmIGFwcGxpY2FibGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIHByb3ZpZGUgY29udGV4dCBhbmQgaGVscCBkZXRlcm1pbmUgcmVzaWRlbmN5IHN0YXR1cyBtb3JlIGFjY3VyYXRlbHkuPC9saT5cclxuICAgIDwvb2w+XHJcblxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZS4gWW91IGNhbiBzZW5kIHRoZW0gdG8gdXMgdmlhIGVtYWlsIG9yIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLiBGb3IgYW55IHF1ZXN0aW9ucyBvciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+XHJcblxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IHdpdGggeW91ciB0YXggcHJlcGFyYXRpb24uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSm9pbnQgVGF4IFJlbGllZiBEZXRhaWxzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBhc3Npc3QgeW91IGVmZmVjdGl2ZWx5IHdpdGggeW91ciByZXF1ZXN0IGZvciBqb2ludCB0YXggcmVsaWVmLCB3ZSBuZWVkIHRvIGNvbGxlY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCB5b3VyIHNpdHVhdGlvbiB0aG9yb3VnaGx5LiBUaGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIG1vc3Qgc3VpdGFibGUgdHlwZSBvZiByZWxpZWYgZm9yIHlvdXIgY2lyY3Vtc3RhbmNlcywgd2hpY2ggbWF5IGluY2x1ZGUgSW5ub2NlbnQgU3BvdXNlIFJlbGllZiwgSW5qdXJlZCBTcG91c2UgQWxsb2NhdGlvbiwgU2VwYXJhdGlvbiBvZiBMaWFiaWxpdHkgUmVsaWVmLCBvciBFcXVpdGFibGUgUmVsaWVmLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbXBsZXRlIFRheCBSZXR1cm5zOjwvc3Ryb25nPiBDb3BpZXMgb2YgYWxsIHRheCByZXR1cm5zIGZvciB0aGUgeWVhcnMgeW91IGFyZSByZXF1ZXN0aW5nIHJlbGllZi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCBTdGF0ZW1lbnQ6PC9zdHJvbmc+IEEgd3JpdHRlbiBzdGF0ZW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGJlbGlldmUgeW91IHF1YWxpZnkgZm9yIHJlbGllZiwgaW5jbHVkaW5nIGFueSBzcGVjaWZpYyBldmVudHMgb3IgY2lyY3Vtc3RhbmNlcyB5b3Ugd2FudCB1cyB0byBjb25zaWRlci48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gUHJvb2Ygb2YgeW91ciBjdXJyZW50IGluY29tZSBhbmQgdGhhdCBvZiB5b3VyIHNwb3VzZSBpZiBhcHBsaWNhYmxlLCBzdWNoIGFzIHJlY2VudCBwYXkgc3R1YnMsIFctMiBmb3Jtcywgb3Igb3RoZXIgaW5jb21lIHN0YXRlbWVudHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgRmluYW5jaWFsIFNpdHVhdGlvbjo8L3N0cm9uZz4gRG9jdW1lbnRzIHNob3dpbmcgeW91ciBjdXJyZW50IGZpbmFuY2lhbCBzaXR1YXRpb24sIGluY2x1ZGluZyBiYW5rIHN0YXRlbWVudHMsIG1vbnRobHkgYmlsbHMsIGFuZCBhbnkgb3RoZXIgbGlhYmlsaXRpZXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBNYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgbGVnYWwgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gc2VwYXJhdGlvbiwgZGl2b3JjZSwgb3IgYW5udWxtZW50LjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHRoYXQgcHJvdmUgd2hlcmUgZWFjaCBvZiB5b3UgaGFzIGxpdmVkIGR1cmluZyB0aGUgdGF4IHllYXJzIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGpvaW50IHRheCBsaWFiaWxpdHksIHBsZWFzZSBpbmNsdWRlIGNvcGllcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXJseSBsZWdpYmxlLiBZb3UgbWF5IHNlbmQgdGhlbSB2aWEgZW1haWwsIG9yIHVwbG9hZC4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IHRvIHByb3ZpZGUsIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9jZXNzIGNhbiBiZSBjb21wbGV4LCBidXQgd2UgYXJlIGhlcmUgdG8gZ3VpZGUgeW91IHRocm91Z2ggaXQuIE91ciBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgc2l0dWF0aW9uIHRvIGFkdm9jYXRlIGZvciB0aGUgbW9zdCBmYXZvcmFibGUgb3V0Y29tZSBvbiB5b3VyIGJlaGFsZi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIHJlcXVpcmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHlvdXIgc291cmNlcyBvZiBpbmNvbWUuIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB5b3VyIDEwOTkgTkVDIEluY29tZS4gVGhlIDEwOTktTkVDIGZvcm0gaXMgY3J1Y2lhbCBmb3IgY29ycmVjdGx5IHJlcG9ydGluZyB5b3VyIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gZW5zdXJlIGEgdGhvcm91Z2ggYW5kIGFjY3VyYXRlIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdXMgd2l0aCB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+QWxsIDEwOTktTkVDIGZvcm1zPC9iPiB5b3UgcmVjZWl2ZWQgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8Yj5hZGRpdGlvbmFsIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb248L2I+IG5vdCByZXBvcnRlZCBvbiBhIDEwOTktTkVDIGZvcm0uPC9saT5cclxuICAgICAgICA8bGk+SW5mb3JtYXRpb24gcmVnYXJkaW5nIDxiPmV4cGVuc2VzIHJlbGF0ZWQgdG8geW91ciAxMDk5IE5FQyBpbmNvbWU8L2I+LCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgbm90IHlldCByZWNlaXZlZCBhbGwgeW91ciAxMDk5LU5FQyBmb3JtcywgcGxlYXNlIGxldCB1cyBrbm93LCBhbmQgcHJvdmlkZSBhbiBlc3RpbWF0ZSBvZiB3aGVuIHlvdSBleHBlY3QgdG8gcmVjZWl2ZSB0aGVtLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBhY2N1cmF0ZWx5IHJlcG9ydGluZyB5b3VyIGluY29tZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMgZnJvbSB0aGUgSVJTLjwvcD5cclxuICAgIDxwPlBsZWFzZSByZWFjaCBvdXQgdG8gdXMgZGlyZWN0bHkgc2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24uIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBwcm9jZXNzZWQgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkuPC9wPlxyXG5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBTY2hlZHVsZSBLIGluY29tZSBmb3IgdGhlIGN1cnJlbnQgdGF4IHllYXIuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB3ZSBnYXRoZXIgYWxsIG5lY2Vzc2FyeSBkb2N1bWVudHMgcmVsYXRlZCB0byB0aGlzIGluY29tZS48L3A+XHJcbiAgICA8cD5JZiB3ZSBhcmUgcHJlcGFyaW5nIHlvdXIgYnVzaW5lc3MgcmV0dXJuLCByZXN0IGFzc3VyZWQgdGhhdCB3ZSB3aWxsIGdlbmVyYXRlIHRoZSBhcHBsaWNhYmxlIFNjaGVkdWxlIEstMShzKSBmb3IgeW91ciBidXNpbmVzcyBpbnRlcmVzdHMuIEhvd2V2ZXIsIGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIGNvbGxlY3QgY29waWVzIG9mIDxzdHJvbmc+YWxsIG90aGVyIFNjaGVkdWxlIEstMXM8L3N0cm9uZz4geW91IG1heSBoYXZlIHJlY2VpdmVkIHRvIGluY29ycG9yYXRlIGludG8geW91ciBwZXJzb25hbCB0YXggcmV0dXJuLjwvcD4gIFxyXG4gICAgPGgzPlNwZWNpZmljIERvY3VtZW50IFJlcXVlc3Q6PC9oMz5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QW55IGFuZCBhbGwgU2NoZWR1bGUgSy0xKHMpIHlvdSBoYXZlIHJlY2VpdmVkIGZyb206PC9saT5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5QYXJ0bmVyc2hpcHM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+UyBDb3Jwb3JhdGlvbnM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+RXN0YXRlIG9yIFRydXN0czwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgPHN0cm9uZz5jbGVhciBhbmQgbGVnaWJsZTwvc3Ryb25nPiB0byBwcmV2ZW50IGFueSBkZWxheXMgaW4gcHJvY2Vzc2luZyB5b3VyIHJldHVybi4gWW91IG1heSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLCBvciBjb250YWN0IHVzIHRvIG1ha2UgYWx0ZXJuYXRpdmUgYXJyYW5nZW1lbnRzIGlmIG5lY2Vzc2FyeS48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYW55IGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2Ygc2VsZi1lbXBsb3ltZW50IGluY29tZSBub3QgcmVwb3J0ZWQgdGhyb3VnaCAxMDk5LU5FQyBmb3JtcyBvciBhIFNjaGVkdWxlIEstMS4gVG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBhY2N1cmF0ZSBhbmQgbWF4aW1pemVzIHlvdXIgYmVuZWZpdHMsIGl0J3MgY3J1Y2lhbCB3ZSBnYXRoZXIgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlIHNvdXJjZXMgb2YgaW5jb21lLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eTo8L3N0cm9uZz4gQnJpZWZseSBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGVhY2ggYWN0aXZpdHkgZnJvbSB3aGljaCB5b3UgZGVyaXZlIHNlbGYtZW1wbG95bWVudCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiBvcGVyYXRpb246PC9zdHJvbmc+IEZvciBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eSwgc3BlY2lmeSB0aGUgZGF0ZXMgb3IgcmFuZ2Ugb2YgZGF0ZXMgZHVyaW5nIHdoaWNoIHlvdSBlYXJuZWQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgaW5jb21lIGdlbmVyYXRlZDo8L3N0cm9uZz4gRm9yIGVhY2ggYWN0aXZpdHksIHByb3ZpZGUgdGhlIHRvdGFsIGFtb3VudCBvZiBpbmNvbWUgZWFybmVkIGJlZm9yZSBhbnkgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5FeHBlbnNlcyBpbmN1cnJlZDo8L3N0cm9uZz4gTGlzdCBhbGwgZXhwZW5zZXMgcmVsYXRlZCB0byBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eS4gUGxlYXNlIGNhdGVnb3JpemUgdGhlc2UgZXhwZW5zZXMgKGUuZy4sIG9mZmljZSBzdXBwbGllcywgdHJhdmVsLCBhZHZlcnRpc2luZykuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9yIGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBleGlzdGluZyByZWNvcmRzIG9yIGRvY3VtZW50YXRpb24gdGhhdCBjb3Jyb2JvcmF0ZSB5b3VyIGluY29tZSBhbmQgZXhwZW5zZXMsIHN1Y2ggYXMgYmFuayBzdGF0ZW1lbnRzLCByZWNlaXB0cywgaW52b2ljZXMsIG9yIGNvbnRyYWN0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGFtb3VudCBvZiB0YXggeW91IG93ZSBhbmQgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIHRoYXQgY2FuIG1pbmltaXplIHlvdXIgdGF4IGxpYWJpbGl0eS4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFlvdXIgdGltZWx5IGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQsIGFuZCB3ZSBhcmUgaGVyZSB0byBoZWxwIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UaGFuayB5b3UgZm9yIGVudHJ1c3RpbmcgdXMgd2l0aCB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gQXMgcGFydCBvZiBvdXIgY29tcHJlaGVuc2l2ZSByZXZpZXcgYW5kIGluIG91ciBxdWVzdCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZ3MsIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB3YWdlcyBmcm9tIGVtcGxveW1lbnQgb3ZlciB0aGUgcGFzdCB0YXggeWVhci48L3A+XHJcbiAgICA8cD5UbyBwcm9jZWVkIGVmZmVjdGl2ZWx5LCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlctMiBGb3Jtczo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgY29waWVzIG9mIGFsbCBXLTIgZm9ybXMgcmVjZWl2ZWQgZnJvbSB5b3VyIGVtcGxveWVycy4gVGhpcyBpbmNsdWRlcyB3YWdlcyBlYXJuZWQgZnJvbSBhbGwgc291cmNlcywgbm90IGp1c3QgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZlcmlmaWNhdGlvbiBvZiBTLUNvcnBvcmF0aW9uIFdhZ2VzOjwvc3Ryb25nPiBJZiB3ZSBhcmUgYWxzbyBoYW5kbGluZyB5b3VyIGJ1c2luZXNzIHRheGVzIGZvciBhbiBTLUNvcnBvcmF0aW9uLCB3ZSBsaWtlbHkgaGF2ZSB0aGUgd2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhhdCBlbnRpdHkuIEhvd2V2ZXIsIGZvciB0aG9yb3VnaG5lc3MgYW5kIGNvbXBsaWFuY2UsIHBsZWFzZSBjb25maXJtIGlmIHRoZSB3YWdlcyBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uIGFyZSBmdWxseSByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRzIHdlIGFscmVhZHkgaG9sZC4gVGhpcyB3aWxsIGhlbHAgdXMgdmVyaWZ5IHRoYXQgYWxsIGluY29tZSBpcyBhY2N1cmF0ZWx5IHJlcG9ydGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBJbmNvbWUgRG9jdW1lbnRzOjwvc3Ryb25nPiBTaG91bGQgeW91IGhhdmUgb3RoZXIgc291cmNlcyBvZiB3YWdlIGluY29tZSAoZS5nLiwgY29udHJhY3Qgd29yaywgYm9udXNlcywgZXRjLikgbm90IGNvdmVyZWQgYnkgdGhlIFctMiBmb3JtcyBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgYW55IDEwOTkgZm9ybXMgb3Igb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPllvdXIgY29vcGVyYXRpb24gaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gS2luZGx5IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBUaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJQcm9wZXJ0eS9TZXJ2aWNlcyBpbiBMaWV1IG9mIFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgcHJvcGVydHkgYW5kL29yIHNlcnZpY2VzIGluIGxpZXUgb2YgdHJhZGl0aW9uYWwgd2FnZXMgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyB0eXBlIG9mIGNvbXBlbnNhdGlvbiBjb25zdGl0dXRlcyB0YXhhYmxlIGluY29tZSBhbmQgbXVzdCBiZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgZnVsbHkgY29tcGxpYW50IHdpdGggSVJTIHJlZ3VsYXRpb25zLjwvcD5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgcmVjb2duaXplIGFuZCByZXBvcnQgdGhlc2UgaXRlbXMgYXMgdGF4YWJsZSBpbmNvbWUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBQcm9wZXJ0eSBvciBTZXJ2aWNlczo8L3N0cm9uZz4gUHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFueSBwcm9wZXJ0eSBvciBzZXJ2aWNlcyB5b3UgcmVjZWl2ZWQuIFBsZWFzZSBpbmNsdWRlIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBmb3IgcHJvcGVydHkgb3IgdGhlIHNjb3BlIG9mIHNlcnZpY2VzIHJlbmRlcmVkLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5GYWlyIE1hcmtldCBWYWx1ZSBhdCBUaW1lIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IEluZGljYXRlIHRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIHByb3BlcnR5IG9yIHNlcnZpY2UgYXQgdGhlIHRpbWUgeW91IHJlY2VpdmVkIGl0LiBJZiB5b3UgaGF2ZSBhbnkgYXBwcmFpc2FscyBvciBkb2N1bWVudHMgdG8gc3VwcG9ydCB0aGUgRk1WLCBwbGVhc2UgaW5jbHVkZSB0aGVtLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9yIEFncmVlbWVudHM6PC9zdHJvbmc+IFByb3ZpZGUgYW55IGRvY3VtZW50YXRpb24gb3Igd3JpdHRlbiBhZ3JlZW1lbnRzIHRoYXQgZGV0YWlsIHRoZSBhcnJhbmdlbWVudCBmb3IgcmVjZWl2aW5nIHByb3BlcnR5IG9yIHNlcnZpY2VzIGluIGxpZXUgb2Ygd2FnZXMuIFRoaXMgY2FuIGluY2x1ZGUgY29udHJhY3RzLCBlbWFpbHMsIG9yIGFueSBmb3JtIG9mIGNvbW11bmljYXRpb24gdGhhdCBvdXRsaW5lcyB0aGUgYWdyZWVtZW50LjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRhdGUocykgb24gd2hpY2ggeW91IHJlY2VpdmVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIvUHJvdmlkZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFByb3ZpZGUgdGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgcHJvdmlkZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBwcm92aWRlZCBpbmZvcm1hdGlvbiBpcyBhcyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgYXMgcG9zc2libGUuIEluY29tcGxldGUgb3IgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBtYXkgbGVhZCB0byBkZWxheXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybiBvciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIElSUy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIGluZm9ybWF0aW9uIHJlcXVlc3RlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIGNyaXRpY2FsIGZvciB0aGUgdGltZWx5IGFuZCBhY2N1cmF0ZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90aWNlZCB5b3UndmUgbWVudGlvbmVkIGJlaW5nIHJlaW1idXJzZWQgZm9yIGNlcnRhaW4gZXhwZW5zZXMgdW5kZXIgYW4gRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhbi4gVG8gYWNjdXJhdGVseSBhY2NvdW50IGZvciB0aGVzZSByZWltYnVyc2VtZW50cyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB0aGUgZm9ybWFsIHdyaXR0ZW4gQWNjb3VudGFibGUgUGxhbiBwcm92aWRlZCBieSB5b3VyIGVtcGxveWVyLiBUaGlzIHNob3VsZCBvdXRsaW5lIHRoZSBleHBlbnNlIGFsbG93YW5jZSBhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBwb2xpY3kuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgZnJvbSB5b3VyIGVtcGxveWVyIGNvbmZpcm1pbmcgeW91ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgdGhlIGV4cGVuc2VzIHJlaW1idXJzZWQgdW5kZXIgdGhlIHBsYW4sIGluY2x1ZGluZyBkYXRlcywgYW1vdW50cywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGV4cGVuc2UgKHJlY2VpcHRzIG9yIGludm9pY2VzKSBwcm92aWRlZCB0byB5b3VyIGVtcGxveWVyIGZvciByZWltYnVyc2VtZW50IHVuZGVyIHRoZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHJlaW1idXJzZW1lbnRzIG9yIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHNlbmQgdXMgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gcHJvY2VlZCBzbW9vdGhseSB3aXRoIHlvdXIgdGF4IHJldHVybiBwcmVwYXJhdGlvbi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYFxyXG4gICAgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGVuc3VyaW5nIGFsbCBmb3JtcyBvZiBjb21wZW5zYXRpb24sIGluY2x1ZGluZyB0YXhhYmxlIGZyaW5nZSBiZW5lZml0cywgYXJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgb24geW91ciB0YXggcmV0dXJucy4gQmFzZWQgb24gb3VyIHByZXZpb3VzIGNvbW11bmljYXRpb24sIGl0IGFwcGVhcnMgeW91IG1heSBoYXZlIHJlY2VpdmVkIGJlbmVmaXRzIHRoYXQgbmVlZCB0byBiZSByZXZpZXdlZCBmdXJ0aGVyLiBUbyBhc3Npc3QgeW91IHByb3Blcmx5LCB3ZSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWMgZGV0YWlsczo8L3A+XHJcbjxvbD5cclxuICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQgcmVjZWl2ZWQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbXBhbnkgY2FycywgbWVtYmVyc2hpcHMsIGVkdWNhdGlvbmFsIGFzc2lzdGFuY2UsIGV0Yy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gSWYgeW91J3JlIHVuc3VyZSwgcGxlYXNlIHByb3ZpZGUgYW4gZXN0aW1hdGUgYW5kIHRoZSBiYXNpcyBmb3IgdGhpcyBlc3RpbWF0ZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkFueSBhbW91bnRzIGNvbnRyaWJ1dGVkIGJ5IHlvdTo8L3N0cm9uZz4gSWYgeW91IG1hZGUgY29udHJpYnV0aW9ucyB0b3dhcmQgdGhlIGNvc3Qgb2YgYW55IGJlbmVmaXQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkRhdGVzOjwvc3Ryb25nPiBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgc3BlY2lmaWMgZGF0ZXMgaWYgcG9zc2libGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5FbXBsb3llciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGVtcGxveWVyKHMpIHByb3ZpZGluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG48L29sPlxyXG48cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgZGV0ZXJtaW5pbmcgdGhlIHRheGFibGUgdmFsdWUgb2YgdGhlc2UgZnJpbmdlIGJlbmVmaXRzIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG48cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFsaXppbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIGlkZW50aWZpZWQgcG90ZW50aWFsIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB0aGF0IG1heSBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgb3B0aW1pemUgeW91ciB0YXggb3V0Y29tZSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYW55IG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQ6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIG1heSBpbmNsdWRlIGhlYWx0aCBzYXZpbmdzIGFjY291bnRzIChIU0FzKSwgZW1wbG95ZWUgZGlzY291bnRzLCBwdWJsaWMgdHJhbnNpdCBwYXNzZXMsIGV0Yy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIEZvciBub24tdGF4YWJsZSBiZW5lZml0cywgdGhpcyBoZWxwcyBpbiByZWNvcmQta2VlcGluZyBhbmQgY29uZmlybWluZyBleGVtcHRpb24gc3RhdHVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbnRyaWJ1dGlvbiBhbW91bnRzLCBpZiBhbnk6PC9zdHJvbmc+IElmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvd2FyZHMgYW55IG9mIHRoZXNlIGJlbmVmaXRzLCBpbmRpY2F0ZSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGRvY3VtZW50YXRpb24gdGhhdCBjYW4gY29ycm9ib3JhdGUgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIHJlY2VpcHQ6PC9zdHJvbmc+IFRoZSB0aW1lZnJhbWUgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBhcyBwcmVjaXNlIGRhdGVzIGFzIHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkVtcGxveWVyIG9yIHByb3ZpZGVyIGluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBlbXBsb3llcihzKSBvciB0aGlyZC1wYXJ0eSBwcm92aWRlcihzKSBvZmZlcmluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uIGhlbHBzIGVuc3VyZSB0aGF0IHlvdXIgdGF4IGZpbGluZ3MgYXJlIGFjY3VyYXRlIGFuZCB0aGF0IHlvdSByZWNlaXZlIHRoZSBmdWxsIGFkdmFudGFnZSBvZiBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMuIFBsZWFzZSBsZXQgdXMga25vdyBpZiB5b3UgbmVlZCBhbnkgaGVscCBpZGVudGlmeWluZyBvciBkb2N1bWVudGluZyB0aGVzZSBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQgYXMgd2Ugc3RyaXZlIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIGVmZmljaWVudGx5LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVkEgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBvbmdvaW5nIGVmZm9ydCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgVmV0ZXJhbiBCZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBvZiB0aGVzZSBiZW5lZml0cywgd2Uga2luZGx5IHJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gdGhpcyB0YXNrLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBsaXN0IG9mIHRoZSBWZXRlcmFuIEJlbmVmaXRzIHlvdSByZWNlaXZlZCwgaW5jbHVkaW5nIGFueSBkaXNhYmlsaXR5LCBlZHVjYXRpb24sIGFuZCBwZW5zaW9uIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPk9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggdHlwZSBvZiBiZW5lZml0IHJlY2VpdmVkLCBzdWNoIGFzIGF3YXJkIGxldHRlcnMgb3Igc3RhdGVtZW50cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIFZldGVyYW5zIEFmZmFpcnMgKFZBKS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgY29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgVkEgb3Igb3RoZXIgcmVsZXZhbnQgZW50aXRpZXMgcmVnYXJkaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHlvdXIgYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+VG90YWwgYW1vdW50IHJlY2VpdmVkIGZvciBlYWNoIGJlbmVmaXQgdGhyb3VnaG91dCB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QW55IG90aGVyIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBwcm92aWRlIGNsYXJpdHkgb24gdGhlIG5hdHVyZSBhbmQgYW1vdW50IG9mIHlvdXIgVmV0ZXJhbiBCZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggYmVuZWZpdHMgYXJlIHRheGFibGUgYW5kIGVuc3VyaW5nIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFBsZWFzZSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBtZW50aW9uIG9mIHJlY2VpdmluZyBsaWZlIGluc3VyYW5jZSBwYXltZW50cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHRoZXNlIHByb2NlZWRzIGFyZSBpbmRlZWQgbm9uLXRheGFibGUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RG9jdW1lbnRhdGlvbiBvciBzdGF0ZW1lbnRzIHBlcnRhaW5pbmcgdG8gdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgaW5zdXJlZCBpbmRpdmlkdWFsIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91LjwvbGk+XHJcbiAgICAgIDxsaT5BbnkgY29tbXVuaWNhdGlvbnMgb3IgbGV0dGVycyBmcm9tIHRoZSBpbnN1cmFuY2UgY29tcGFueSByZWdhcmRpbmcgdGhlIHRheCBzdGF0dXMgb2YgdGhlc2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRldGFpbHMgcmVnYXJkaW5nIGlmIHRoZSBwb2xpY3kgd2FzIHB1cmNoYXNlZCB3aXRoIGFmdGVyLXRheCBvciBwcmUtdGF4IGRvbGxhcnMuPC9saT5cclxuICAgICAgPGxpPklmIGFueSBwb3J0aW9uIG9mIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50IHdhcyBhbiBpbnZlc3RtZW50IHJldHVybiwgcGxlYXNlIHByb3ZpZGUgcmVsYXRlZCBkb2N1bWVudHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGd1YXJhbnRlZSB0aGUgYWNjdXJhY3kgYW5kIGludGVncml0eSBvZiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gV2UncmUgaGVyZSB0byBoZWxwITwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgd2UgcHJvY2VlZCB3aXRoIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zLCB3ZSBub3RlZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB1bmRlciB0aGUgZGlmZmljdWx0eS1vZi1jYXJlIHByb3Zpc2lvbnMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gZW5zdXJlIHdlIG1heGltaXplIHlvdXIgZWxpZ2libGUgaW5jb21lIGV4Y2x1c2lvbnMsIGl0J3MgY3J1Y2lhbCB3ZSB2ZXJpZnkgY2VydGFpbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBsaXZpbmcgYXJyYW5nZW1lbnQsIGFzIHBlciBJUlMgZ3VpZGVsaW5lcy48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gY29uZmlybWluZyB0aGF0IHRoZXNlIHBheW1lbnRzIHF1YWxpZnkgZm9yIGluY29tZSBleGNsdXNpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHByb3ZpbmcgdGhhdCB5b3UgYW5kIHRoZSBpbmRpdmlkdWFsIHVuZGVyIGNhcmUgc2hhcmVkIHRoZSBzYW1lIHByaW1hcnkgcmVzaWRlbmNlIGR1cmluZyB0aGUgcmVjZWlwdCBvZiB0aGVzZSBwYXltZW50cy4gVGhpcyBjb3VsZCBpbmNsdWRlIHV0aWxpdHkgYmlsbHMsIGEgcmVudGFsIGFncmVlbWVudCwgb3IgaG9tZW93bmVyJ3MgaW5zdXJhbmNlIGluIGJvdGggb2YgeW91ciBuYW1lcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgdGhlIENhcmUgUmVjaXBpZW50Ojwvc3Ryb25nPiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyc29uIHJlY2VpdmluZyBjYXJlLCBpbmNsdWRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdSBhbmQgYW55IGRvY3VtZW50YXRpb24gdGhhdCBpZGVudGlmaWVzIHRoZWlyIG5lZWQgZm9yIGNhcmUgKGUuZy4sIGEgbGV0dGVyIGZyb20gYSBoZWFsdGhjYXJlIHByb3ZpZGVyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgUmVjb3Jkczo8L3N0cm9uZz4gQW55IHJlY29yZHMgb2YgdGhlIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB5b3UgcmVjZWl2ZWQsIGFzIHRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgZXhhY3QgYW1vdW50cyBhbmQgdGhlIHBlcmlvZHMgY292ZXJlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBGb3JtYWwgQWdyZWVtZW50cyBvciBDb250cmFjdHM6PC9zdHJvbmc+IElmIHRoZXJlIHdhcyBhIGZvcm1hbCBhZ3JlZW1lbnQgb3IgY29udHJhY3QgZGV0YWlsaW5nIHRoZSBjYXJlIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSB0aGlzIGFzIHdlbGwuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGNhcmUgYXJyYW5nZW1lbnQgd2FzIGZhY2lsaXRhdGVkIHRocm91Z2ggYSBzdGF0ZSBvciB0aGlyZC1wYXJ0eSBhZ2VuY3kuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB3ZSBjb21wbHkgd2l0aCB0YXhpbmcgYXV0aG9yaXRpZXMgd2hpbGUgYWNjdXJhdGVseSByZWZsZWN0aW5nIHlvdXIgZmluYW5jZXMuIElmIGFueSBvZiB0aGVzZSByZXF1aXJlbWVudHMgcG9zZSBhIGRpZmZpY3VsdHkgb3IgaWYgeW91IGhhdmUgcXVlc3Rpb25zLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gT3VyIGdvYWwgaXMgdG8gc3VwcG9ydCB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MgYW5kIG9wdGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBXZSBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGJlbmVmaXRzIGFyZSBlbGlnaWJsZSB0byBiZSBleGNsdWRlZCBmcm9tIHlvdXIgaW5jb21lLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyBwYWlkLjwvcD5cclxuICAgIDxwPktpbmRseSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgb2YgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCBzdGF0ZW1lbnRzIG9yIGRvY3VtZW50YXRpb24gc2hvd2luZyB0aGUgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9uIHdobyBwYWlkIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgKHlvdSBvciB5b3VyIGVtcGxveWVyKS48L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHlvdSBwYWlkIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB0aGUgcGF5bWVudHMgbWFkZSBieSB5b3UgKHJlY2VpcHRzIG9yIGJhbmsgc3RhdGVtZW50cykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3VyIGVtcGxveWVyIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgcGFpZCBieSB5b3VyIGVtcGxveWVyIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGRvY3VtZW50cyBpbmRpY2F0aW5nIGVtcGxveWVyIGNvbnRyaWJ1dGlvbnMgKHBheSBzdHVicywgZW1wbG95ZXIgbGV0dGVycykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXhhYmxlIHBvcnRpb24sIGlmIGFueSwgb2YgeW91ciBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cy4gUHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBoZWxwIHVzIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5nIGFuZCBwb3RlbnRpYWxseSBsb3dlciB5b3VyIHRheGFibGUgaW5jb21lLjwvcD5cclxuICAgIDxwPlBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaWYgd2UgY2FuIGJlIG9mIGZ1cnRoZXIgYXNzaXN0YW5jZS4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCByZXNwb25zZSB0byB0aGlzIHJlcXVlc3QuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJbiBvcmRlciB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cywgd2UgbmVlZCBhZGRpdGlvbmFsIGRldGFpbHMuIFRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzIGNhbiBkZXBlbmQgb24gd2hlbiB5b3UgdG9vayByZXRpcmVtZW50IGR1ZSB0byBkaXNhYmlsaXR5LjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZXRpcmVtZW50Ojwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZSB5b3UgcmV0aXJlZCBkdWUgdG8gZGlzYWJpbGl0eS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgRGlzYWJpbGl0eSBSZXRpcmVtZW50Ojwvc3Ryb25nPiBBbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB5b3UgaGF2ZSB0aGF0IGNvbmZpcm1zIHlvdXIgcmV0aXJlbWVudCB3YXMgZHVlIHRvIGRpc2FiaWxpdHkuIFRoaXMgbWF5IGluY2x1ZGUgbGV0dGVycyBmcm9tIHlvdXIgZW1wbG95ZXIsIHRoZSByZXRpcmVtZW50IHBsYW4sIG9yIG1lZGljYWwgcmVjb3Jkcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgQmVuZWZpdHMgUmVjZWl2ZWQ6PC9zdHJvbmc+IFNwZWNpZmljIGFtb3VudHMgYW5kIHRoZSBzb3VyY2Ugb2YgdGhlIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cy4gUGxlYXNlIGluY2x1ZGUgYW55IHJlbGF0ZWQgZG9jdW1lbnRzIHN1Y2ggYXMgc3RhdGVtZW50cyBvciBub3RpY2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBXLTIgb3IgMTA5OSBGb3Jtczo8L3N0cm9uZz4gSWYgeW91IHJlY2VpdmVkIGFueSB3YWdlcyBvciBkaXNhYmlsaXR5IHBheW1lbnRzIHRoYXQgd2VyZSByZXBvcnRlZCBvbiBXLTIgb3IgMTA5OSBmb3JtcyBpbiB0aGUgeWVhciBvZiB5b3VyIHJldGlyZW1lbnQsIHBsZWFzZSBwcm92aWRlIHRoZXNlIGZvcm1zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgdGhlc2UgY29tbXVuaWNhdGlvbnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyB3aWxsIGFpZCB1cyBpbiBkZXRlcm1pbmluZyB0aGVpciB0YXhhYmlsaXR5IGFuZCBlbnN1cmluZyB0aGF0IHlvdXIgdGF4IG9ibGlnYXRpb25zIGFyZSBwcmVjaXNlbHkgY2FsY3VsYXRlZC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgVy0yIHdhZ2VzIGFzIGEgY2xlcmd5IG1lbWJlci4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgdG8gcG90ZW50aWFsbHkgbWF4aW1pemUgeW91ciB0YXggYmVuZWZpdHMsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB5b3VyIGNvbXBlbnNhdGlvbiBwYWNrYWdlLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+Vy0yIEZvcm06PC9iPiBJZiBub3QgYWxyZWFkeSBwcm92aWRlZCwgaW5jbHVkZSBhbnkgVy0yIGZvcm1zIGlzc3VlZCBieSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Ib3VzaW5nIEFsbG93YW5jZSBEb2N1bWVudGF0aW9uOjwvYj4gRGV0YWlsZWQgc3RhdGVtZW50IG9yIGxldHRlciBmcm9tIHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uIHNwZWNpZnlpbmcgdGhlIGFtb3VudCBkZXNpZ25hdGVkIGFzIGhvdXNpbmcgYWxsb3dhbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNlbGYtRW1wbG95bWVudCBUYXg6PC9iPiBDb25maXJtYXRpb24gb24gd2hldGhlciB5b3UgaGF2ZSB0YWtlbiBhIHZvdyBvZiBwb3ZlcnR5IChpZiBhcHBsaWNhYmxlKSwgb3IgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBvcHRpbmcgb3V0IG9mIHNlbGYtZW1wbG95bWVudCB0YXguPC9saT5cclxuICAgICAgICA8bGk+PGI+RXhwZW5zZSBSZWltYnVyc2VtZW50czo8L2I+IERvY3VtZW50YXRpb24gc2hvd2luZyBhbnkgZXhwZW5zZSByZWltYnVyc2VtZW50cyByZWNlaXZlZCB1bmRlciBhbiBhY2NvdW50YWJsZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPk90aGVyIENvbXBlbnNhdGlvbjo8L2I+IEluZm9ybWF0aW9uIG9uIGFueSBvdGhlciBjb21wZW5zYXRpb24gcmVjZWl2ZWQgaW4geW91ciBjYXBhY2l0eSBhcyBjbGVyZ3ksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbG92ZSBvZmZlcmluZ3MsIGZlZXMgZm9yIHNlcnZpY2VzICh3ZWRkaW5ncywgZnVuZXJhbHMsIGV0Yy4pLCBhbmQgcGFyc29uYWdlIGFsbG93YW5jZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGFjY3VyYXRlbHkgcmVwcmVzZW50IHlvdXIgZWFybmluZ3MgYW5kIHRvIGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgY29ycmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IHdpbGwgaGVscCBlbnN1cmUgdGhhdCB5b3VyIHRheCByZXR1cm5zIGFyZSBwcmVwYXJlZCBpbiBhIHRpbWVseSBhbmQgZWZmaWNpZW50IG1hbm5lci48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgaXMgcmVxdWlyZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gV2UgYXJlIGhlcmUgdG8gYXNzaXN0IHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhpcyBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkludGVyZXN0IEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+SW4gcmV2aWV3aW5nIHlvdXIgZmluYW5jaWFsIGFjdGl2aXRpZXMgZm9yIHRoZSB0YXggeWVhciwgeW91IGluZGljYXRlZCByZWNlaXZpbmcgaW50ZXJlc3QgaW5jb21lLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGlzIGluY29tZSBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBkZXRhaWxzLiBLaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxiPlNvdXJjZSBvZiBJbnRlcmVzdCBJbmNvbWU6PC9iPiBQbGVhc2Ugc3BlY2lmeSB0aGUgaW5zdGl0dXRpb24ocykgb3IgZW50aXR5KGllcykgZnJvbSB3aGljaCB5b3UgcmVjZWl2ZWQgaW50ZXJlc3QgaW5jb21lIChlLmcuLCBiYW5rcywgY3JlZGl0IHVuaW9ucykuPC9saT5cclxuICAgICAgPGxpPjxiPkFtb3VudCBSZWNlaXZlZDo8L2I+IENvbmZpcm0gdGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcmVzdCBpbmNvbWUgcmVjZWl2ZWQgZnJvbSBlYWNoIHNvdXJjZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BY2NvdW50IFR5cGVzOjwvYj4gSWRlbnRpZnkgdGhlIHR5cGUgb2YgYWNjb3VudHMgdGhhdCBnZW5lcmF0ZWQgdGhlIGludGVyZXN0IChlLmcuLCBzYXZpbmdzLCBjaGVja2luZywgY2VydGlmaWNhdGVzIG9mIGRlcG9zaXQpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5UYXggRm9ybXMgUmVjZWl2ZWQ6PC9iPiBMaXN0IGFueSB0YXggZm9ybXMgeW91IGhhdmUgcmVjZWl2ZWQgcmVsYXRlZCB0byBpbnRlcmVzdCBpbmNvbWUsIHN1Y2ggYXMgRm9ybSAxMDk5LUlOVCBvciBGb3JtIDEwOTktT0lELjwvbGk+XHJcbiAgICAgIDxsaT48Yj5Gb3JlaWduIEludGVyZXN0OjwvYj4gSWYgYW55IGludGVyZXN0IGluY29tZSB3YXMgZWFybmVkIGZyb20gZm9yZWlnbiBhY2NvdW50cyBvciBzb3VyY2VzLCBwbGVhc2UgcHJvdmlkZSBkZXRhaWxzLCBpbmNsdWRpbmcgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBlbmFibGUgdXMgdG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgeW91ciBpbnRlcmVzdCBpbmNvbWUgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGNvcnJlY3QuIFlvdSBjYW4gYXR0YWNoIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBieSByZXBseWluZyB0byB0aGlzIGVtYWlsIG9yIHVwbG9hZGluZyB0aGVtIGRpcmVjdGx5IHRvIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQmFuayBBY2NvdW50IE9wZW5pbmcgR2lmdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmV2aWV3aW5nIHlvdXIgdGF4IHNpdHVhdGlvbiBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBhIGdpZnQgZm9yIG9wZW5pbmcgYW4gYWNjb3VudCBhdCBhIGZpbmFuY2lhbCBpbnN0aXR1dGlvbi4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uIHdoZXJlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+VGhlIGRhdGUgdGhlIGFjY291bnQgd2FzIG9wZW5lZC48L2xpPlxyXG4gICAgICAgIDxsaT5BIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBnaWZ0IHJlY2VpdmVkIChlLmcuLCBjYXNoLCBtZXJjaGFuZGlzZSwgb3Igc2VydmljZXMpLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBmYWlyIG1hcmtldCB2YWx1ZSBvZiB0aGUgZ2lmdCBhdCB0aGUgdGltZSBpdCB3YXMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiByZWdhcmRpbmcgdGhlIGdpZnQgKGUuZy4sIGEgbGV0dGVyLCBlbWFpbCBjb25maXJtYXRpb24sIG9yIHN0YXRlbWVudCBpbmRpY2F0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZ2lmdCkuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIGlmIHlvdSBoYXZlIHJlY2VpdmVkIG1vcmUgdGhhbiBvbmUgZ2lmdCBmb3Igb3BlbmluZyBhY2NvdW50cyB3aXRoaW4gdGhlIHNhbWUgdGF4IHllYXIsIGFuZCBpZiBzbywgdGhlIGRldGFpbHMgZm9yIGVhY2guPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIHdlIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgY29tcGx5IHdpdGggYWxsIElSUyByZXF1aXJlbWVudHMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIG9mIHlvdXIgaW5jb21lIGZyb20gQ2VydGlmaWNhdGVzIG9mIERlcG9zaXQgKENEcykgZm9yIHRoZSB0YXggeWVhciwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gY29tcGx5IHdpdGggSVJTIHJlZ3VsYXRpb25zIGFuZCB0byBwb3RlbnRpYWxseSBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TmFtZSBvZiB0aGUgQmFuayBvciBGaW5hbmNpYWwgSW5zdGl0dXRpb246PC9zdHJvbmc+IFdoZXJlIHRoZSBDRCBpcyBoZWxkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWNjb3VudCBOdW1iZXI6PC9zdHJvbmc+IFRoaXMgaGVscHMgaW4gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgSW50ZXJlc3QgRWFybmVkOjwvc3Ryb25nPiBUaGUgYW1vdW50IG9mIGludGVyZXN0IGVhcm5lZCBmcm9tIHRoZSBDRCBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q0QgVGVybTo8L3N0cm9uZz4gVGhlIGR1cmF0aW9uIG9yIHRlcm0gb2YgdGhlIENEIChlLmcuLCA2IG1vbnRocywgMSB5ZWFyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUHVyY2hhc2U6PC9zdHJvbmc+IFdoZW4geW91IG9yaWdpbmFsbHkgYWNxdWlyZWQgdGhlIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWF0dXJpdHkgRGF0ZTo8L3N0cm9uZz4gV2hlbiB0aGUgQ0QgcmVhY2hlZCBvciB3aWxsIHJlYWNoIGl0cyBmdWxsIHRlcm0uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LUlOVCBGb3Jtczo8L3N0cm9uZz4gSWYgcmVjZWl2ZWQsIHBsZWFzZSBpbmNsdWRlIGNvcGllcyBvZiBhbnkgMTA5OS1JTlQgZm9ybXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBDRCBpbnRlcmVzdC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCBkb2N1bWVudHMuIFlvdSBtYXkgdXBsb2FkIHRoZSBkb2N1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwgb3IgcHJvdmlkZSB0aGVtIHZpYSBlbWFpbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGF4LWV4ZW1wdCBpbnRlcmVzdCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBwb3NzaWJseSBmcm9tIG11bmljaXBhbCBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUbyBhY2N1cmF0ZWx5IHByZXBhcmUgeW91ciB0YXggcmV0dXJucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudHMgb2YgVGF4LUV4ZW1wdCBJbnRlcmVzdDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYWxsIDEwOTktSU5UIGZvcm1zIG9yIGVxdWl2YWxlbnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB5b3VyIHRheC1leGVtcHQgaW50ZXJlc3QgaW5jb21lIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIElzc3VpbmcgRW50aXRpZXM6PC9zdHJvbmc+IEEgbGlzdCBvciBzdGF0ZW1lbnQgaWRlbnRpZnlpbmcgdGhlIGVudGl0aWVzIHRoYXQgaXNzdWVkIHRoZSBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUaGlzIGluY2x1ZGVzIG11bmljaXBhbCwgc3RhdGUsIG9yIGZlZGVyYWwgZW50aXRpZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IERldGFpbDo8L3N0cm9uZz4gQSBicmVha2Rvd24gb2YgdGhlIGludmVzdG1lbnRzIGNvbnRyaWJ1dGluZyB0byB0YXgtZXhlbXB0IGludGVyZXN0LiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBwdXJjaGFzZSBkYXRlLCBwdXJjaGFzZSBhbW91bnRzLCBhbmQgYW55IHJlbGF0ZWQgbWF0dXJpdHkgZGF0ZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Ccm9rZXJhZ2UgQWNjb3VudCBTdGF0ZW1lbnRzOjwvc3Ryb25nPiBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHRyYW5zYWN0aW9ucyBhbmQgaG9sZGluZ3MgaW4gdGF4LWV4ZW1wdCBpbnZlc3RtZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFNVCAoQWx0ZXJuYXRpdmUgTWluaW11bSBUYXgpIENvbnNpZGVyYXRpb246PC9zdHJvbmc+IElmIGF2YWlsYWJsZSwgZG9jdW1lbnRhdGlvbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW55IG9mIHRoZSB0YXgtZXhlbXB0IGludGVyZXN0IGlzIHN1YmplY3QgdG8gdGhlIEFsdGVybmF0aXZlIE1pbmltdW0gVGF4LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbiBhY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBQbGVhc2UgZm9yd2FyZCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgY29udGludWVkIGVmZm9ydCB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBiZXN0IHRheCBwcmVwYXJhdGlvbiBzZXJ2aWNlcywgd2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byB0aGUgaW50ZXJlc3QgeW91IG1heSBoYXZlIHJlY2VpdmVkIGZyb20gcmVkZWVtaW5nIGFuIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L3A+XHJcblxyXG4gICAgPHA+VG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGVsaWdpYmlsaXR5IGZvciBleGVtcHRpb24gYW5kIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIElSUywgd2Uga2luZGx5IHJlcXVlc3QgeW91IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiBGb3JtIDEwOTktSU5UIG9yIHNpbWlsYXIgc3RhdGVtZW50IHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24sIGluZGljYXRpbmcgdGhlIGFtb3VudCBvZiBpbnRlcmVzdCByZWNlaXZlZCBmcm9tIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgcmVjb3JkcyBvZiB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kcyByZWRlZW1lZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Cb25kIHNlcmlhbCBudW1iZXJzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Jc3N1ZSBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UmVkZW1wdGlvbiBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50czwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UmVjZWlwdHMgb3IgZG9jdW1lbnRhdGlvbiBmb3IgcXVhbGlmaWVkIGVkdWNhdGlvbmFsIGV4cGVuc2VzIHBhaWQgZHVyaW5nIHRoZSB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UdWl0aW9uIGFuZCBmZWVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3Vyc2UgbWF0ZXJpYWxzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgb3RoZXIgcmVxdWlyZWQgZXhwZW5zZXMgZm9yIGVucm9sbG1lbnQgb3IgYXR0ZW5kYW5jZSBhdCBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UHJvb2Ygb2YgZW5yb2xsbWVudCBmcm9tIGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uIGZvciB0aGUgYmVuZWZpY2lhcnkgb2YgdGhlIGJvbmQuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHRoZSBpbnRlcmVzdCBpbmNvbWUgYW5kIHBvdGVudGlhbGx5IG1heGltaXppbmcgeW91ciB0YXggYmVuZWZpdHMuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBhbmQgcmVjb21tZW5kIGNvbXBpbGluZyB0aGVzZSBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3Qgb3VyIG9mZmljZSBkaXJlY3RseS48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGRpdmlkZW5kIGluY29tZSBvdmVyIHRoZSBwYXN0IHRheCB5ZWFyLiBUbyBlbnN1cmUgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhpcyBpbmNvbWUgYW5kIG9wdGltaXplIHlvdXIgdGF4IHNpdHVhdGlvbiwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5BbGwgMTA5OS1ESVYgZm9ybXMgcmVjZWl2ZWQgZnJvbSBjb3Jwb3JhdGlvbnMgb3IgbXV0dWFsIGZ1bmRzLiBUaGlzIGluY2x1ZGVzIGRpc3RyaWJ1dGlvbnMgb2YgY2FzaCwgc3RvY2ssIG9yIG90aGVyIHByb3BlcnR5LjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgZm9yZWlnbiBkaXZpZGVuZHMgaW5jbHVkaW5nIHRoZSBhbW91bnQgaW4gZm9yZWlnbiBjdXJyZW5jeSwgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLCBhbmQgYW55IGZvcmVpZ24gdGF4IHBhaWQuPC9saT5cclxuICAgICAgPGxpPkZvciBkaXZpZGVuZHMgcmVpbnZlc3RlZCwgcGxlYXNlIHByb3ZpZGUgc3RhdGVtZW50cyBvciBjb25maXJtYXRpb25zIHNob3dpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgIDxsaT5Bbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgZGl2aWRlbmRzIG5vdCBjb3ZlcmVkIGJ5IGEgMTA5OS1ESVYuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFyIGFuZCBsZWdpYmxlIHRvIGF2b2lkIGFueSBwcm9jZXNzaW5nIGRlbGF5cy4gV2UgcmVjb21tZW5kIHNlY3VyZWx5IHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uIHRocm91Z2ggb3VyIGNsaWVudCBwb3J0YWwgb3IgYXJyYW5naW5nIGEgc2VjdXJlIGVtYWlsIHRyYW5zbWlzc2lvbi48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBhcHByZWNpYXRlZCBhcyBpdCB3aWxsIGhlbHAgdXMgaW4gY29tcGxldGluZyB5b3VyIHRheCBwcmVwYXJhdGlvbnMgZWZmaWNpZW50bHkuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNwb3NlZCBDYXBpdGFsIEFzc2V0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzcG9zZWQgQ2FwaXRhbCBBc3NldHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgaW5kaWNhdGVkIGRpc3Bvc2luZyBvZiBjYXBpdGFsIGFzc2V0cyBkdXJpbmcgdGhlIGxhc3QgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIGFuZCBlbnN1cmUgeW91ciB0YXggZmlsaW5ncyBhcmUgY29tcGxldGUgYW5kIGNvbXBsaWFudCwgd2UgcmVxdWlyZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+RGVzY3JpcHRpb24gb2YgZWFjaCBkaXNwb3NlZCBhc3NldDo8L2I+IEluY2x1ZGUgdGhlIHR5cGUgb2YgYXNzZXQgKGUuZy4sIHJlYWwgZXN0YXRlLCBzdG9ja3MsIGJvbmRzKS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5EYXRlIG9mIGFjcXVpc2l0aW9uOjwvYj4gVGhlIHB1cmNoYXNlIGRhdGUgb3IgdGhlIGRhdGUgeW91IG9yaWdpbmFsbHkgY2FtZSBpbnRvIHBvc3Nlc3Npb24gb2YgZWFjaCBhc3NldC48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5BY3F1aXNpdGlvbiBjb3N0OjwvYj4gVGhlIG9yaWdpbmFsIHB1cmNoYXNlIHByaWNlIG9yIGNvc3QgYmFzaXMgb2YgZWFjaCBhc3NldCwgaW5jbHVkaW5nIGFueSBpbXByb3ZlbWVudHMgbWFkZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5EYXRlIG9mIGRpc3Bvc2FsOjwvYj4gVGhlIHNwZWNpZmljIGRhdGUgb24gd2hpY2ggZWFjaCBhc3NldCB3YXMgc29sZCwgZXhjaGFuZ2VkLCBvciBvdGhlcndpc2UgZGlzcG9zZWQgb2YuPC9saT5cclxuICAgICAgICA8bGk+PGI+U2FsZSBvciBkaXNwb3NhbCBwcm9jZWVkczo8L2I+IFRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSB0aGUgZGlzcG9zYWwgb2YgdGhlIGFzc2V0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkFzc29jaWF0ZWQgZXhwZW5zZXM6PC9iPiBBbnkgY29zdHMgaW5jdXJyZWQgZGlyZWN0bHkgZnJvbSB0aGUgc2FsZSBvciBkaXNwb3NhbCBwcm9jZXNzLCBzdWNoIGFzIGJyb2tlcidzIGZlZXMsIGFkdmVydGlzaW5nLCBsZWdhbCBmZWVzLCBldGMuPC9saT5cclxuICAgICAgICA8bGk+PGI+UmVhc29uIGZvciBkaXNwb3NhbDo8L2I+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGRpc3Bvc2FsIG9mIHRoZSBhc3NldCwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgY2FsY3VsYXRpbmcgcG90ZW50aWFsIGNhcGl0YWwgZ2FpbnMgb3IgbG9zc2VzIGFuZCBkZXRlcm1pbmluZyB0aGVpciBpbXBhY3Qgb24geW91ciB0YXggb2JsaWdhdGlvbnMuIFBsZWFzZSBhdHRhY2ggYW55IHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBzYWxlcyByZWNlaXB0cywgZGVlZHMsIGNvbnRyYWN0cywgb3IgYnJva2VyYWdlIHN0YXRlbWVudHMsIHRvIHN1YnN0YW50aWF0ZSB0aGUgZGV0YWlscyBwcm92aWRlZC48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgYXJlIGhlcmUgdG8gYXNzaXN0IHdpdGggYW55IHF1ZXN0aW9ucyB5b3UgbWF5IGhhdmUuIFlvdSBjYW4gcmVhY2ggdXMgdmlhIGVtYWlsIG9yIHBob25lIGZvciBmdXJ0aGVyIGRpc2N1c3Npb24uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk11dHVhbCBGdW5kIEdhaW5cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk11dHVhbCBGdW5kIEdhaW5cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIG9yZGVyIHRvIGFjY3VyYXRlbHkgcmVwb3J0IHlvdXIgbXV0dWFsIGZ1bmQgZWFybmluZ3Mgb24geW91ciB0YXggcmV0dXJuLCBhcyBwZXIgeW91ciBpbmRpY2F0aW9uIG9mIHJlY2VpdmluZyBnYWlucyBmcm9tIGEgbXV0dWFsIGZ1bmQgb3Igc2ltaWxhciBpbnZlc3RtZW50LCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LURJViBGb3JtOjwvc3Ryb25nPiBUaGlzIGZvcm0gaXMgY3J1Y2lhbCBhcyBpdCBwcm92aWRlcyBkZXRhaWxzIG9uIGRpdmlkZW5kcyBhbmQgZGlzdHJpYnV0aW9ucyB5b3UgcmVjZWl2ZWQgZnJvbSB5b3VyIG11dHVhbCBmdW5kIGludmVzdG1lbnRzLiBQbGVhc2UgZW5zdXJlIHRvIHByb3ZpZGUgdGhpcyBmb3JtIGlmIHlvdXIgbXV0dWFsIGZ1bmQgZWFybmluZ3Mgd2VyZSByZXBvcnRlZCBvbiBpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudCBvZiBBY2NvdW50Ojwvc3Ryb25nPiBUaGlzIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIGFsbCB0cmFuc2FjdGlvbnMgd2l0aGluIHlvdXIgYWNjb3VudCwgaW5jbHVkaW5nIHB1cmNoYXNlcywgcmVkZW1wdGlvbnMsIGFuZCByZWludmVzdGVkIGRpdmlkZW5kcyB3aGljaCBoZWxwIHVzIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgeW91ciBnYWlucy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlllYXItRW5kIFN1bW1hcnk6PC9zdHJvbmc+IE9mdGVuIG11dHVhbCBmdW5kcyBwcm92aWRlIGEgeWVhci1lbmQgc3VtbWFyeSB0byB0aGVpciBpbnZlc3RvcnMuIFRoaXMgc3VtbWFyeSBjYW4gYmUgdmVyeSBoZWxwZnVsIGluIHByZXBhcmluZyB5b3VyIHRheGVzIGFzIGl0IGNvbnNvbGlkYXRlcyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50czo8L3N0cm9uZz4gVGhpcyBjb3VsZCBpbmNsdWRlIGFkZGl0aW9uYWwgMTA5OSBmb3JtcyAobGlrZSAxMDk5LUIgaWYgYW55IHNhbGVzIG9jY3VycmVkKSwgb3JpZ2luYWwgaW52ZXN0bWVudCBzdGF0ZW1lbnRzLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgY291bGQgaW1wYWN0IHlvdXIgdGF4IHNpdHVhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPldlIHVuZGVyc3RhbmQgdGhhdCBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzIG1heSByZXF1aXJlIHNvbWUgdGltZSwgaG93ZXZlciwgaGF2aW5nIHRoZXNlIHJlYWRpbHkgYXZhaWxhYmxlIHdpbGwgZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgZWZmaWNpZW5jeSBvZiB5b3VyIHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBZb3VyIHByb21wdCByZXNwb25zZSB3aWxsIGJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBkaWZmaWN1bHRpZXMgb2J0YWluaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IG1lLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk11dHVhbCBGdW5kIERpc3Bvc2FsXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJNdXR1YWwgRnVuZCBEaXNwb3NhbFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSd2ZSBtYWRlIGEgZGlzcG9zYWwgb2Ygc2hhcmVzIGluIGEgbXV0dWFsIGZ1bmQgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBhY3QgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGVkIGFjY3VyYXRlbHksIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSA8c3Ryb25nPjEwOTktQiBmb3JtPC9zdHJvbmc+IGFzc29jaWF0ZWQgd2l0aCB0aGUgbXV0dWFsIGZ1bmQgZGlzcG9zYWwsIGlmIGF2YWlsYWJsZS4gVGhpcyBkb2N1bWVudCBwcm92aWRlcyBkZXRhaWxzIG9uIHRoZSBzYWxlIG9mIHlvdXIgc2hhcmVzLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbGVkIDxzdHJvbmc+cmVjb3JkIG9mIHRoZSBwdXJjaGFzZTwvc3Ryb25nPiBvZiB0aGUgbXV0dWFsIGZ1bmQgc2hhcmVzIGluY2x1ZGluZyB0aGUgcHVyY2hhc2UgZGF0ZSBhbmQgY29zdCBiYXNpcy4gVGhpcyBpcyBjcnVjaWFsIGZvciBjYWxjdWxhdGluZyBhbnkgY2FwaXRhbCBnYWluIG9yIGxvc3MuPC9saT5cclxuICAgICAgICA8bGk+SWYgdGhlIDEwOTktQiBmb3JtIGlzIG5vdCBhdmFpbGFibGUsIHBsZWFzZSBwcm92aWRlIGFueSA8c3Ryb25nPmJyb2tlcmFnZSBzdGF0ZW1lbnRzPC9zdHJvbmc+IG9yIG90aGVyIGRvY3VtZW50YXRpb24gdGhhdCBzaG93cyB0aGUgZGlzcG9zYWwgb2YgdGhlIG11dHVhbCBmdW5kIHNoYXJlcywgaW5jbHVkaW5nIHRoZSBzYWxlIGRhdGUgYW5kIGFtb3VudC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8c3Ryb25nPnJlaW52ZXN0ZWQgZGl2aWRlbmRzPC9zdHJvbmc+IG9yIGNhcGl0YWwgZ2FpbnMgZGlzdHJpYnV0aW9ucywgYXMgdGhlc2UgY2FuIGFkanVzdCB5b3VyIGNvc3QgYmFzaXMgYW5kIGFmZmVjdCB0aGUgY2FsY3VsYXRpb24gb2YgeW91ciBjYXBpdGFsIGdhaW4gb3IgbG9zcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkhhdmluZyB0aGlzIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgdGhhdCB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGUgZGlzcG9zYWwgb2YgeW91ciBtdXR1YWwgZnVuZCBzaGFyZXMgYW5kIGFjY3VyYXRlbHkgY2FsY3VsYXRlIGFueSBwb3RlbnRpYWwgY2FwaXRhbCBnYWlucyBvciBsb3NzZXMuIFRoaXMgd2lsbCBhbHNvIGhlbHAgdXMgdG8gb3B0aW1pemUgeW91ciB0YXggbGlhYmlsaXR5IGZvciB0aGUgeWVhci48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBhYm91dCBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC4gV2UncmUgaGVyZSB0byBoZWxwIHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhlIHByb2Nlc3MuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiV2FzaCBTYWxlXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJXYXNoIFNhbGUgVHJhbnNhY3Rpb25cIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBpbmRpY2F0aW9uIG9mIGEgcG9zc2libGUgV2FzaCBTYWxlIHRyYW5zYWN0aW9uLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGFjdCBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbGVkIHRyYW5zYWN0aW9uIHJlY29yZHM8L3N0cm9uZz4gLSBQbGVhc2UgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiB0aGUgc2VjdXJpdHkgdGhhdCB3YXMgc29sZCBhbmQgdGhlbiByZXB1cmNoYXNlZCwgaW5jbHVkaW5nIGRhdGVzIGFuZCBhbW91bnRzIGZvciBlYWNoIHRyYW5zYWN0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q29zdCBiYXNpcyBmb3IgcmVwdXJjaGFzZWQgc2VjdXJpdHk8L3N0cm9uZz4gLSBEZXRhaWxzIG9mIHRoZSBjb3N0IGJhc2lzIGZvciB0aGUgc2VjdXJpdGllcyByZXB1cmNoYXNlZCB3aXRoaW4gYSA2MS1kYXkgd2luZG93ICgzMCBkYXlzIGJlZm9yZSB0byAzMCBkYXlzIGFmdGVyIHRoZSBzYWxlKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgc3RhdGVtZW50czwvc3Ryb25nPiAtIENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgc2hvd2luZyB0aGUgdHJhbnNhY3Rpb25zIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TG9zc2VzIHJlYWxpemVkPC9zdHJvbmc+IC0gRG9jdW1lbnRhdGlvbiBvZiBhbnkgbG9zc2VzIHJlYWxpemVkIGZyb20gdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IGNvcnJlc3BvbmRlbmNlPC9zdHJvbmc+IC0gQ29ycmVzcG9uZGVuY2UgZnJvbSBicm9rZXJzIG9yIGZpbmFuY2lhbCBhZHZpc29ycyByZWdhcmRpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBkb2N1bWVudHMgYXJlIG9yZ2FuaXplZCBhbmQgY2xlYXJseSBsYWJlbGVkIGZvciBlYWNoIHRyYW5zYWN0aW9uLiBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBhIHNtb290aGVyIGFuZCBxdWlja2VyIHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIFdhc2ggU2FsZSB0cmFuc2FjdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBwcm92aWRlIGFjY3VyYXRlIHRheCBhZHZpY2UgYW5kIHByZXBhcmF0aW9uLiBGdXJ0aGVyLCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYXNzaXN0IGluIGRldGVybWluaW5nIGhvdyB0aGUgV2FzaCBTYWxlIHJ1bGUgYWZmZWN0cyB0aGUgZGVkdWN0aWJpbGl0eSBvZiBhbnkgbG9zc2VzIHlvdSBtaWdodCBoYXZlIGluY3VycmVkLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLCB0byBlbnN1cmUgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggZmlsaW5ncy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU29sZCBIb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJTb2xkIEhvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSBzb2xkIGEgcGVyc29uYWwgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcmVndWxhdGlvbnMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBTYWxlOjwvc3Ryb25nPiBUaGUgY2xvc2luZyBkYXRlIHdoZW4gdGhlIHNhbGUgd2FzIG9mZmljaWFsbHkgY29tcGxldGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U2FsZSBQcmljZTo8L3N0cm9uZz4gVGhlIHRvdGFsIGFtb3VudCB5b3UgcmVjZWl2ZWQgZm9yIHRoZSBob21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q29zdCBCYXNpczo8L3N0cm9uZz4gT3JpZ2luYWwgcHVyY2hhc2UgcHJpY2UsIHBsdXMgYW55IGltcHJvdmVtZW50cyBtYWRlIHRvIHRoZSBob21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJvcGVydHkgRGV0YWlsczo8L3N0cm9uZz4gQWRkcmVzcyBhbmQgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHkgc29sZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1haW4gUmVzaWRlbmNlIG9yIE5vdDo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgdGhpcyB3YXMgeW91ciBtYWluIHJlc2lkZW5jZSBmb3IgYXQgbGVhc3QgdHdvIG9mIHRoZSBsYXN0IGZpdmUgeWVhcnMgcHJpb3IgdG8gdGhlIHNhbGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9mIEhvbWUgSW1wcm92ZW1lbnRzOjwvc3Ryb25nPiBSZWNlaXB0cyBvciByZWNvcmRzIG9mIGFueSBtYWpvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgcHJvcGVydHksIHdoaWNoIGNhbiBhZmZlY3QgdGhlIGNvc3QgYmFzaXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBVc2U6PC9zdHJvbmc+IElmIG5vdCBhbHdheXMgdXNlZCBhcyBhIHBlcnNvbmFsIGhvbWUsIGRldGFpbHMgb24gYW55IHVzZSBvZiB0aGUgcHJvcGVydHkgZm9yIHJlbnRhbCwgYnVzaW5lc3MsIG9yIG90aGVyIG5vbi1wZXJzb25hbCB1c2UuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGVkIEV4cGVuc2VzOjwvc3Ryb25nPiBBbnkgY29zdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYWxlLCBzdWNoIGFzIGxlZ2FsIGZlZXMsIHJlYWwgZXN0YXRlIGFnZW50IGNvbW1pc3Npb25zLCBhbmQgaG9tZSBzdGFnaW5nIGV4cGVuc2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgZGV0ZXJtaW5pbmcgcG90ZW50aWFsIHRheCBiZW5lZml0cyBvciBvYmxpZ2F0aW9ucy4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhcyBzb29uIGFzIHBvc3NpYmxlLCB0byBlbnN1cmUgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggcmV0dXJuLiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW5zdGFsbG1lbnQgU2FsZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5zdGFsbG1lbnQgU2FsZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB5b3UndmUgc29sZCBwcm9wZXJ0eSB0aGlzIHllYXIgdW5kZXIgYW4gaW5zdGFsbG1lbnQgcGxhbi4gVG8gYWNjdXJhdGVseSByZXBvcnQgdGhpcyB0cmFuc2FjdGlvbiBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U2FsZSBBZ3JlZW1lbnQ6PC9zdHJvbmc+IEEgY29weSBvZiB0aGUgY29tcGxldGUgc2FsZSBhZ3JlZW1lbnQgZGV0YWlsaW5nIHRoZSB0ZXJtcyBvZiB0aGUgaW5zdGFsbG1lbnQgc2FsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IERlc2NyaXB0aW9uOjwvc3Ryb25nPiBBIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eSBzb2xkIChlLmcuLCBsYW5kLCBidWlsZGluZywgZXF1aXBtZW50KS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgU2NoZWR1bGU6PC9zdHJvbmc+IEluZm9ybWF0aW9uIG9uIHRoZSBwYXltZW50IHNjaGVkdWxlIGFncmVlZCB1cG9uLCBpbmNsdWRpbmcgdGhlIGRhdGVzIGFuZCBhbW91bnRzIG9mIGVhY2ggaW5zdGFsbG1lbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbW91bnRzIFJlY2VpdmVkOjwvc3Ryb25nPiBUb3RhbCBhbW91bnRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZyBkb3duIHBheW1lbnQgYW5kIGFueSBpbnN0YWxsbWVudCBwYXltZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByaW5jaXBhbCAmYW1wOyBJbnRlcmVzdCBCcmVha2Rvd246PC9zdHJvbmc+IEEgYnJlYWtkb3duIG9mIHRoZSBhbW91bnRzIHJlY2VpdmVkIGJldHdlZW4gcHJpbmNpcGFsIGFuZCBpbnRlcmVzdCBmb3IgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJvcGVydHkgQmFzaXM6PC9zdHJvbmc+IERvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoZSBwcm9wZXJ0eSdzIG9yaWdpbmFsIGNvc3QsIGltcHJvdmVtZW50cyBtYWRlLCBhbmQgYW55IGRlcHJlY2lhdGlvbiB0YWtlbiBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZSBEb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgcmVsZXZhbnQgZXhwZW5zZXMgaW4gcmVsYXRpb24gdG8gdGhlIHNhbGUgdGhhdCBtaWdodCBiZSBkZWR1Y3RpYmxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QnV5ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IExlZ2FsIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgYnV5ZXIuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgY2FsY3VsYXRpbmcgYW55IHByb2ZpdCBvciBsb3NzIGZyb20gdGhlIHNhbGUgYW5kIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlIGluc3RhbGxtZW50IHBheW1lbnRzIHJlY2VpdmVkLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm5zLiBZb3UgY2FuIHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGVtYWlsIHRoZW0gdG8gdGF4QGxlbmRhaGFuZGFjY291bnRpbmcuY29tLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJXb3J0aGxlc3MgU2VjdXJpdGllc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiV29ydGhsZXNzIFNlY3VyaXRpZXNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkFzIHlvdSBpbmRpY2F0ZWQgdGhhdCB5b3UgaGF2ZSBoYWQgaW52ZXN0bWVudHMsIHN1Y2ggYXMgc3RvY2tzIG9yIGJvbmRzLCB0aGF0IGJlY2FtZSBjb21wbGV0ZWx5IHdvcnRobGVzcyB0aGlzIHllYXIsIHdlIG5lZWQgdG8gZ2F0aGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHByb3Blcmx5IHJlcG9ydCB0aGVzZSBvbiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgdGhlIFNlY3VyaXR5Ojwvc3Ryb25nPiBGdWxsIG5hbWUgYW5kIHR5cGUgb2YgZWFjaCBzZWN1cml0eSB0aGF0IGJlY2FtZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QdXJjaGFzZSBEZXRhaWxzOjwvc3Ryb25nPiBEYXRlIG9mIHB1cmNoYXNlIGFuZCB0aGUgcHVyY2hhc2UgcHJpY2UgZm9yIGVhY2ggc2VjdXJpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Xb3J0aGxlc3NuZXNzIERldGVybWluYXRpb24gRGF0ZTo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgd2hlbiB5b3UgZGV0ZXJtaW5lZCB0aGUgc2VjdXJpdHkgdG8gYmUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IHJlY2VpdmVkIG9yIHVzZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGludmVzdG1lbnRzIGJlY2FtZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BdHRlbXB0cyB0byBTZWxsIG9yIFRyYWRlOjwvc3Ryb25nPiBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGFueSBhdHRlbXB0cyBtYWRlIHRvIHNlbGwgb3IgdHJhZGUgdGhlIHNlY3VyaXRpZXMgYmVmb3JlIGRldGVybWluaW5nIHRoZXkgd2VyZSB3b3J0aGxlc3MuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IEFjY291bnQgU3RhdGVtZW50czo8L3N0cm9uZz4gQ29waWVzIG9mIHlvdXIgaW52ZXN0bWVudCBhY2NvdW50IHN0YXRlbWVudHMgc2hvd2luZyB0aGUgd29ydGhsZXNzIHNlY3VyaXRpZXMgYW5kIHRoZWlyIHZhbHVlIG92ZXIgdGltZSwgbGVhZGluZyB1cCB0byB0aGVpciBkZWNsYXJlZCB3b3J0aGxlc3NuZXNzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhY2N1cmF0ZSBhbmQgdGltZWx5IGNvbXBsZXRpb24gb2YgeW91ciB0YXggcmV0dXJuLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24uPC9wPmBcclxuICB9LCBcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNlY3Rpb24gMTI0NCBCdXNpbmVzcyBTdG9ja1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2VjdGlvbiAxMjQ0IEJ1c2luZXNzIFN0b2NrXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBzYWxlIG9mIHNoYXJlcyBpbiBhIHNtYWxsIGJ1c2luZXNzIHdoZXJlIHlvdSB3ZXJlIGFuIG9yaWdpbmFsIGludmVzdG9yLiBBcyB5b3UgaW5kaWNhdGVkIGEgbG9zcyBvbiB0aGlzIGludmVzdG1lbnQsIGl0J3MgY3J1Y2lhbCB0byBldmFsdWF0ZSB3aGV0aGVyIHRoaXMgcXVhbGlmaWVzIGZvciBzcGVjaWFsIHRheCB0cmVhdG1lbnQgdW5kZXIgU2VjdGlvbiAxMjQ0LiBUbyBhY2N1cmF0ZWx5IGFuYWx5emUgYW5kIHJlcG9ydCB0aGVzZSBhY3Rpdml0aWVzLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIDxzdHJvbmc+Y2VydGlmaWNhdGUgb2YgaW5jb3Jwb3JhdGlvbjwvc3Ryb25nPiBvciBvdGhlciBkb2N1bWVudGF0aW9uIGNvbmZpcm1pbmcgdGhlIHN0b2NrIHF1YWxpZmllcyBhcyBTZWN0aW9uIDEyNDQgc3RvY2suPC9saT5cclxuICAgICAgICA8bGk+QSA8c3Ryb25nPmRldGFpbGVkIHN0YXRlbWVudDwvc3Ryb25nPiBvZiB0aGUgaW52ZXN0bWVudCwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50IGFuZCBkYXRlIG9mIHRoZSBvcmlnaW5hbCBpbnZlc3RtZW50LjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+TnVtYmVyIG9mIHNoYXJlcyBwdXJjaGFzZWQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiBiZWluZyBhbiBvcmlnaW5hbCBob2xkZXIuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgdGhlIHNhbGU8L3N0cm9uZz4sIHNwZWNpZnlpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5EYXRlIG9mIHNhbGUuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5OdW1iZXIgb2Ygc2hhcmVzIHNvbGQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5TYWxlIHByaWNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGFzc29jaWF0ZWQgZXhwZW5zZXMgd2l0aCB0aGUgc2FsZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPkEgYnJpZWYgZXhwbGFuYXRpb24gb2YgdGhlIGNpcmN1bXN0YW5jZXMgbGVhZGluZyB0byB0aGUgbG9zcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gd2lsbCBlbmFibGUgdXMgdG8gYXNzZXNzIHRoZSBlbGlnaWJpbGl0eSBmb3IgYSBiZW5lZmljaWFsIHRheCB0cmVhdG1lbnQgdW5kZXIgU2VjdGlvbiAxMjQ0LCBwb3RlbnRpYWxseSBtaW5pbWl6aW5nIHlvdXIgdGF4YWJsZSBpbmNvbWUuIFBsZWFzZSBzdWJtaXQgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSB0byBlbnN1cmUgdGltZWx5IGZpbGluZy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZWxhdGVkIFBhcnR5IFRyYW5zYWN0aW9uc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVsYXRlZCBQYXJ0eSBUcmFuc2FjdGlvbnNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHJlY2VpdmVkIHlvdXIgcmVzcG9uc2UgaW5kaWNhdGluZyB0aGF0IHRoZXJlIHdlcmUgdHJhbnNhY3Rpb25zIHdpdGggcmVsYXRlZCBwYXJ0aWVzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZXNlIHRyYW5zYWN0aW9ucyBhbmQgaW5jb3Jwb3JhdGUgdGhlbSBpbnRvIHlvdXIgdGF4IGZpbGluZ3MsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIHRoZSBUcmFuc2FjdGlvbnM6PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UeXBlIG9mIHRyYW5zYWN0aW9ucyAoZS5nLiwgc2FsZSwgdHJhZGUsIHRyYW5zZmVyIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzKS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRhdGUocykgb2YgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RGVzY3JpcHRpb24gb2YgaXRlbXMgb3IgcHJvcGVydGllcyB0cmFuc2ZlcnJlZC48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UGFydGllcyBJbnZvbHZlZDo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPk5hbWVzIGFuZCByZWxhdGlvbnNoaXBzIHRvIHlvdSAoZS5nLiwgZmFtaWx5IG1lbWJlciwgZnJpZW5kLCBvciBidXNpbmVzcyBlbnRpdHkpLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYSBidXNpbmVzcyBlbnRpdHkgaXMgaW52b2x2ZWQsIHlvdXIgYW5kIHlvdXIgZmFtaWx5J3Mgb3duZXJzaGlwIHBlcmNlbnRhZ2UgaW4gdGhlIGJ1c2luZXNzLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GaW5hbmNpYWwgRGV0YWlscyBvZiB0aGUgVHJhbnNhY3Rpb25zOjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+TWFya2V0IHZhbHVlIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzIGF0IHRoZSB0aW1lIG9mIHRyYW5zYWN0aW9uLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50IHJlY2VpdmVkIG9yIHBhaWQuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgZXhjaGFuZ2Ugb2YgZ29vZHMsIHNlcnZpY2VzLCBvciBvdGhlciBhc3NldHMsIGluY2x1ZGluZyB0aGVpciBmYWlyIG1hcmtldCB2YWx1ZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbjo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvcGllcyBvZiBjb250cmFjdHMgb3IgYWdyZWVtZW50cy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlJlY2VpcHRzIG9yIHByb29mIG9mIHBheW1lbnQvZXhjaGFuZ2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BcHByYWlzYWxzIG9yIHZhbHVhdGlvbnMgb2YgcHJvcGVydHkgb3IgaW52ZXN0bWVudHMsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cyByZWdhcmRpbmcgcmVsYXRlZCBwYXJ0eSB0cmFuc2FjdGlvbnMgYW5kIGF2b2lkaW5nIGFueSBwb3RlbnRpYWwgcGVuYWx0aWVzIG9yIGF1ZGl0cy4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGNvbXBsZXRpb24gb2YgeW91ciB0YXggcHJlcGFyYXRpb25zLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbl07XHJcbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLGdoREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDRCQUE0QjtRQUM5QyxXQUFXLEVBQUUsNEJBQTRCO1FBQ3pDLGtCQUFrQixFQUFFLGtvQ0FVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUUsazRDQVl1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsa0JBQWtCLEVBQUUseWxEQVN1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUNBQW1DO1FBQ3JELFdBQVcsRUFBRSxtQ0FBbUM7UUFDaEQsa0JBQWtCLEVBQUUsKzFEQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLDB1Q0FRMks7S0FDaE07SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLCt1REFhbUI7S0FDeEM7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLGtCQUFrQixFQUFFLHdnREFROEY7S0FDbkg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFLDg2Q0FRaUo7S0FDdEs7SUFDRDtRQUNFLGdCQUFnQixFQUFFLFdBQVc7UUFDN0IsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxrQkFBa0IsRUFBRSxvdkRBV2tJO0tBQ3ZKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxXQUFXO1FBQzdCLFdBQVcsRUFBRSxXQUFXO1FBQ3hCLGtCQUFrQixFQUFFLHNsREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFLHM1REFjdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLGtCQUFrQixFQUFFLG02Q0FVbUI7S0FDeEM7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDZCQUE2QjtRQUMvQyxXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLGtCQUFrQixFQUFFLHluREFzQnVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRSxtaEVBK0IwSDtLQUMvSTtDQWlCRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFjdGlvblRheEZyYWdtZW50cyA9IFtcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlByaW9yIFllYXIgVGF4IFJldHVybnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgUHJvdmlkZSBQcmlvciBZZWFyIFRheCBSZXR1cm5zYCxcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgcmVxdWlyZSB5b3VyIGFzc2lzdGFuY2UgdG8gZW5zdXJlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3MuIE9uZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHlvdXIgPHN0cm9uZz5QcmlvciBZZWFyIFRheCBSZXR1cm5zPC9zdHJvbmc+LiBUaGlzIGRvY3VtZW50IGlzIGVzc2VudGlhbCBmb3Igc2V2ZXJhbCByZWFzb25zLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiB2ZXJpZnlpbmcgY2FycnktZm9yd2FyZCBhbW91bnRzLCBjb21wYXJpbmcgeWVhci1vdmVyLXllYXIgaW5jb21lIGFuZCBkZWR1Y3Rpb25zLCBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIHRheCBsYXdzLjwvcD5cclxuICAgIDxwPlRvIGZhY2lsaXRhdGUgeW91ciB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmc6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgeW91ciA8c3Ryb25nPkZlZGVyYWwgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5TdGF0ZSB0YXggcmV0dXJuPC9zdHJvbmc+IGZvciB0aGUgbGFzdCB0YXggeWVhciwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgPHN0cm9uZz5ub3RpY2VzIG9yIGFtZW5kbWVudHM8L3N0cm9uZz4gcmVsYXRlZCB0byB5b3VyIHByaW9yIHllYXIgdGF4IHJldHVybnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgZGlmZmljdWx0eSBpbiBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBwbGVhc2UgbGV0IHVzIGtub3cgYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBjYW4gZGlzY3VzcyBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBQcm92aWRpbmcgdGhlc2Ugd2lsbCBlbmFibGUgdXMgdG8gY29tcGxldGUgeW91ciB0YXggcHJlcGFyYXRpb24gd2l0aG91dCBkZWxheS48L3A+YCxcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiU3RhdHV0b3J5IEV4dGVuc2lvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBgRGV0ZXJtaW5pbmcgRWxpZ2liaWxpdHkgZm9yIFN0YXR1dG9yeSBGaWxpbmcgRXh0ZW5zaW9uc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgdGhhdCB3ZSBjYW4gYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgeW91IHF1YWxpZnkgZm9yIHN0YXR1dG9yeSBmaWxpbmcgZXh0ZW5zaW9ucyBmb3IgeW91ciB0YXggcmV0dXJucywgd2UgcmVxdWlyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIHlvdS4gUGxlYXNlIHNlZSBiZWxvdyB0aGUgY2F0ZWdvcmllcyBvZiBpbmZvcm1hdGlvbiBuZWVkZWQgYmFzZWQgb24gZGlmZmVyZW50IGVsaWdpYmlsaXR5IGNyaXRlcmlhOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GZWRlcmFsIERpc2FzdGVyIEFyZWFzPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db25maXJtYXRpb24gb2YgeW91ciBwcmltYXJ5IHJlc2lkZW5jZSBsb2NhdGlvbiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgcmVjZWl2ZWQgcmVnYXJkaW5nIGRpc2FzdGVyIGRlY2xhcmF0aW9ucyBpbiB5b3VyIGFyZWEuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxpdmluZyBBYnJvYWQ8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlByb29mIG9mIHJlc2lkZW5jZSBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGZvciBtb3JlIHRoYW4gMzMwIGZ1bGwgZGF5cyB3aXRoaW4gYSAxMi1tb250aCBwZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgeW91ciBwaHlzaWNhbCBwcmVzZW5jZSBvciBib25hIGZpZGUgcmVzaWRlbmNlIGluIGEgZm9yZWlnbiBjb3VudHJ5LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmUgTWlsaXRhcnk8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvY3VtZW50YXRpb24gaW5kaWNhdGluZyBhY3RpdmUgZHV0eSBzdGF0dXMsIGluY2x1ZGluZyBkYXRlcyBvZiBzZXJ2aWNlIHdpdGhpbiB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBvcmRlcnMgZm9yIG92ZXJzZWFzIGRlcGxveW1lbnQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvbWJhdCBab25lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5PZmZpY2lhbCBvcmRlcnMgZGVtb25zdHJhdGluZyB5b3VyIGRlcGxveW1lbnQgdG8gYSBjb21iYXQgem9uZSwgaW5jbHVkaW5nIHRoZSBzcGVjaWZpYyBkYXRlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSByZWxldmFudCBjb21tdW5pY2F0aW9uIGZyb20gdGhlIERlcGFydG1lbnQgb2YgRGVmZW5zZSBvciBvdGhlciBvZmZpY2lhbCBib2RpZXMgcmVnYXJkaW5nIHlvdXIgc2VydmljZSBpbiBhIGNvbWJhdCB6b25lLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGZhY2lsaXRhdGUgdGhlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGVwZW5kZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUmVxdWVzdCBmb3IgRGVwZW5kZW50IEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB5b3VyIGRlcGVuZGVudHMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXBwbHlpbmcgdGhlIG1vc3QgYmVuZWZpY2lhbCBkZXBlbmRlbmN5IHRlc3RzLCBpbmNsdWRpbmcgcXVhbGlmaWNhdGlvbnMgZm9yIEhlYWQgb2YgSG91c2Vob2xkIChIT0gpLCBDaGlsZCBUYXggQ3JlZGl0LCBhbmQgb3RoZXIgcmVsYXRlZCBiZW5lZml0cy4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIGZvciBlYWNoIG9mIHlvdXIgY2xhaW1lZCBkZXBlbmRlbnRzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5GdWxsIE5hbWU6PC9zdHJvbmc+IFRoZSBjb21wbGV0ZSBsZWdhbCBuYW1lIG9mIHRoZSBkZXBlbmRlbnQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Tb2NpYWwgU2VjdXJpdHkgTnVtYmVyIChTU04pIG9yIFRheHBheWVyIElkZW50aWZpY2F0aW9uIE51bWJlciAoVElOKTo8L3N0cm9uZz4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBCaXJ0aDo8L3N0cm9uZz4gSGVscHMgdG8gZGV0ZXJtaW5lIGVsaWdpYmlsaXR5IGZvciBjZXJ0YWluIGNyZWRpdHMgbGlrZSB0aGUgQ2hpbGQgVGF4IENyZWRpdC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlbGF0aW9uc2hpcCB0byBZb3U6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRlcGVuZGVudCdzIHJlbGF0aW9uc2hpcCAoc29uLCBkYXVnaHRlciwgc3RlcGNoaWxkLCBmb3N0ZXIgY2hpbGQsIGJyb3RoZXIsIHNpc3RlciwgZXRjLikgdG8geW91LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVzaWRlbmN5Ojwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgbGl2ZWQgd2l0aCB5b3UgZm9yIG1vcmUgdGhhbiBoYWxmIHRoZSB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIFN1cHBvcnQ6PC9zdHJvbmc+IENvbmZpcm0geW91IHByb3ZpZGVkIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBkZXBlbmRlbnTigJlzIGZpbmFuY2lhbCBzdXBwb3J0IGZvciB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNpdGl6ZW5zaGlwOjwvc3Ryb25nPiBDb25maXJtIHRoZSBkZXBlbmRlbnQgaXMgYSBVLlMuIGNpdGl6ZW4sIFUuUy4gbmF0aW9uYWwsIG9yIGEgcmVzaWRlbnQgYWxpZW4uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSW5kaWNhdGUgd2hldGhlciB0aGUgZGVwZW5kZW50IGlzIG1hcnJpZWQgYW5kLCBpZiBzbywgd2hldGhlciB0aGV5IGFyZSBmaWxpbmcgam9pbnRseS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkluY29tZSBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgcHJvdmlkZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgaW5jb21lIHRoZSBkZXBlbmRlbnQgbWF5IGhhdmUgZWFybmVkIG9yIHJlY2VpdmVkLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB5b3UgcHJvdmlkZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgaW5mb3JtYXRpb24gdG8gYXZvaWQgYW55IGRlbGF5cyBpbiB0aGUgcHJvY2Vzc2luZyBvZiB5b3VyIHRheCByZXR1cm4uPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJIZWFkIG9mIEhvdXNlaG9sZFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSGVhZCBvZiBIb3VzZWhvbGQgRmlsaW5nXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgYW5kIGNvbXBsaWFudCB0YXggZmlsaW5nIHVuZGVyIHRoZSBcIkhlYWQgb2YgSG91c2Vob2xkXCIgc3RhdHVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiBUaGlzIHN0YXR1cyBjYW4gcHJvdmlkZSBzaWduaWZpY2FudCB0YXggYmVuZWZpdHMsIGFuZCBpdCBpcyBjcnVjaWFsIHRoYXQgYWxsIElSUyByZXF1aXJlbWVudHMgYXJlIG1ldC4gUGxlYXNlIHByb3ZpZGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IENvbmZpcm1hdGlvbiBvZiB5b3VyIG1hcml0YWwgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IGRheSBvZiB0aGUgdGF4IHllYXIgKGUuZy4sIHNpbmdsZSwgZGl2b3JjZWQsIGxlZ2FsbHkgc2VwYXJhdGVkKS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+SG91c2Vob2xkIEV4cGVuc2VzOjwvc3Ryb25nPiBEZXRhaWxlZCByZWNvcmRzIGluZGljYXRpbmcgdGhhdCB5b3UgcGFpZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY29zdHMgb2Yga2VlcGluZyB1cCBhIGhvbWUgZm9yIHRoZSB0YXggeWVhci4gVGhpcyBpbmNsdWRlcyByZW50LCBtb3J0Z2FnZSBpbnRlcmVzdCwgcHJvcGVydHkgdGF4ZXMsIHV0aWxpdGllcywgcmVwYWlycywgbWFpbnRlbmFuY2UsIGFuZCBncm9jZXJpZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPlF1YWxpZnlpbmcgUGVyc29uOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcXVhbGlmeWluZyBwZXJzb24ocykgd2hvIGxpdmVkIHdpdGggeW91IGluIHRoZSBob21lIGZvciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgeWVhciwgZXhjZXB0IGZvciB0ZW1wb3JhcnkgYWJzZW5jZXMgc3VjaCBhcyBzY2hvb2wuIFBsZWFzZSBpbmNsdWRlOlxyXG4gICAgICA8dWw+XHJcbiAgICAgIDxsaT5GdWxsIG5hbWUgYW5kIHJlbGF0aW9uc2hpcCB0byB5b3UgKGUuZy4sIGNoaWxkLCBwYXJlbnQsIHNpYmxpbmcpLjwvbGk+XHJcbiAgICAgIDxsaT5EdXJhdGlvbiBvZiByZXNpZGVuY3kgYXQgeW91ciBob21lIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgPGxpPlN1cHBvcnRpbmcgZG9jdW1lbnRzIChiaXJ0aCBjZXJ0aWZpY2F0ZXMsIHNjaG9vbCByZWNvcmRzLCBldGMuKSBwcm92aW5nIHRoZSByZXNpZGVuY3kgYW5kIHJlbGF0aW9uc2hpcC48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgU3VwcG9ydDo8L3N0cm9uZz4gQW55IGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHlvdXIgY2xhaW0gZm9yIHRoZSBIZWFkIG9mIEhvdXNlaG9sZCBmaWxpbmcgc3RhdHVzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIG5vdGUgdGhhdCBwcm92aWRpbmcgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGluZm9ybWF0aW9uIGlzIGVzc2VudGlhbCBmb3IgeW91ciBiZW5lZml0IGFuZCB0byBjb21wbHkgd2l0aCB0YXggbGF3cy4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkZXRhaWxzLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbmZvcm1hdGlvbiBvbiBSZXNpZGVuY3kgU3RhdHVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIHNwb3VzZSBpcyBub3QgYSBVLlMuIGNpdGl6ZW4uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHlvdXIgdGF4IHN0YXR1cywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVjZXNzYXJ5IFRheCBSZXNpZGVuY3kgVGVzdHMsIHdoaWNoIGluY2x1ZGUgdGhlIDxzdHJvbmc+R3JlZW4gQ2FyZCBUZXN0PC9zdHJvbmc+IGFuZCB0aGUgPHN0cm9uZz5TdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0PC9zdHJvbmc+LiBUaGlzIHdpbGwgaGVscCB1cyBlbnN1cmUgeW91ciB0YXggcmV0dXJucyBhcmUgY29tcGxldGVkIGNvcnJlY3RseSBhbmQgY29tcGx5IHdpdGggVS5TLiByZWd1bGF0aW9ucy48L3A+XHJcblxyXG4gICAgPHA+VG8gcHJvY2VlZCwgd2Uga2luZGx5IGFzayB5b3UgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5HcmVlbiBDYXJkIFN0YXR1czo8L3N0cm9uZz4gUGxlYXNlIGNvbmZpcm0gaWYgeW91IG9yIHlvdXIgc3BvdXNlIGhhdmUgYmVlbiBpc3N1ZWQgYSBVLlMuIGdyZWVuIGNhcmQgKExhd2Z1bCBQZXJtYW5lbnQgUmVzaWRlbnQgQ2FyZCkgYXQgYW55IHBvaW50IGR1cmluZyB0aGUgdGF4IHllYXIuIElmIHllcywgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIGdyZWVuIGNhcmQgb3IgdGhlIG9mZmljaWFsIGRvY3VtZW50IGNvbmZpcm1pbmcgdGhlIHN0YXR1cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQXJyaXZhbCBpbiB0aGUgVS5TLjo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGVzIHdoZW4geW91IGFuZC9vciB5b3VyIHNwb3VzZSBmaXJzdCBhcnJpdmVkIGluIHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5UcmF2ZWwgSGlzdG9yeTo8L3N0cm9uZz4gQSBkZXRhaWxlZCBsaXN0IG9mIGFsbCB0aGUgZGF0ZXMgeW91IGFuZC9vciB5b3VyIHNwb3VzZSBlbnRlcmVkIGFuZCBsZWZ0IHRoZSBVLlMuIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdGhlIFN1YnN0YW50aWFsIFByZXNlbmNlIFRlc3QuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WaXNhIFR5cGU6PC9zdHJvbmc+IElmIHlvdSBvciB5b3VyIHNwb3VzZSBhcmUgb24gYSB2aXNhLCBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2YgdGhlIHZpc2EuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmV2aW91cyBZZWFyIFRheCBGaWxpbmdzOjwvc3Ryb25nPiBDb3BpZXMgb2YgbGFzdCB5ZWFyJ3MgdGF4IHJldHVybnMsIGlmIGFwcGxpY2FibGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIHByb3ZpZGUgY29udGV4dCBhbmQgaGVscCBkZXRlcm1pbmUgcmVzaWRlbmN5IHN0YXR1cyBtb3JlIGFjY3VyYXRlbHkuPC9saT5cclxuICAgIDwvb2w+XHJcblxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZS4gWW91IGNhbiBzZW5kIHRoZW0gdG8gdXMgdmlhIGVtYWlsIG9yIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLiBGb3IgYW55IHF1ZXN0aW9ucyBvciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBkaXJlY3RseS48L3A+XHJcblxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IHdpdGggeW91ciB0YXggcHJlcGFyYXRpb24uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSm9pbnQgVGF4IFJlbGllZlwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSm9pbnQgVGF4IFJlbGllZiBEZXRhaWxzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBhc3Npc3QgeW91IGVmZmVjdGl2ZWx5IHdpdGggeW91ciByZXF1ZXN0IGZvciBqb2ludCB0YXggcmVsaWVmLCB3ZSBuZWVkIHRvIGNvbGxlY3Qgc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCB5b3VyIHNpdHVhdGlvbiB0aG9yb3VnaGx5LiBUaGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIG1vc3Qgc3VpdGFibGUgdHlwZSBvZiByZWxpZWYgZm9yIHlvdXIgY2lyY3Vtc3RhbmNlcywgd2hpY2ggbWF5IGluY2x1ZGUgSW5ub2NlbnQgU3BvdXNlIFJlbGllZiwgSW5qdXJlZCBTcG91c2UgQWxsb2NhdGlvbiwgU2VwYXJhdGlvbiBvZiBMaWFiaWxpdHkgUmVsaWVmLCBvciBFcXVpdGFibGUgUmVsaWVmLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbXBsZXRlIFRheCBSZXR1cm5zOjwvc3Ryb25nPiBDb3BpZXMgb2YgYWxsIHRheCByZXR1cm5zIGZvciB0aGUgeWVhcnMgeW91IGFyZSByZXF1ZXN0aW5nIHJlbGllZi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCBTdGF0ZW1lbnQ6PC9zdHJvbmc+IEEgd3JpdHRlbiBzdGF0ZW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGJlbGlldmUgeW91IHF1YWxpZnkgZm9yIHJlbGllZiwgaW5jbHVkaW5nIGFueSBzcGVjaWZpYyBldmVudHMgb3IgY2lyY3Vtc3RhbmNlcyB5b3Ugd2FudCB1cyB0byBjb25zaWRlci48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gUHJvb2Ygb2YgeW91ciBjdXJyZW50IGluY29tZSBhbmQgdGhhdCBvZiB5b3VyIHNwb3VzZSBpZiBhcHBsaWNhYmxlLCBzdWNoIGFzIHJlY2VudCBwYXkgc3R1YnMsIFctMiBmb3Jtcywgb3Igb3RoZXIgaW5jb21lIHN0YXRlbWVudHMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+UHJvb2Ygb2YgRmluYW5jaWFsIFNpdHVhdGlvbjo8L3N0cm9uZz4gRG9jdW1lbnRzIHNob3dpbmcgeW91ciBjdXJyZW50IGZpbmFuY2lhbCBzaXR1YXRpb24sIGluY2x1ZGluZyBiYW5rIHN0YXRlbWVudHMsIG1vbnRobHkgYmlsbHMsIGFuZCBhbnkgb3RoZXIgbGlhYmlsaXRpZXMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvZiBNYXJpdGFsIFN0YXR1czo8L3N0cm9uZz4gSWYgYXBwbGljYWJsZSwgbGVnYWwgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gc2VwYXJhdGlvbiwgZGl2b3JjZSwgb3IgYW5udWxtZW50LjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHRoYXQgcHJvdmUgd2hlcmUgZWFjaCBvZiB5b3UgaGFzIGxpdmVkIGR1cmluZyB0aGUgdGF4IHllYXJzIGluIHF1ZXN0aW9uLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGpvaW50IHRheCBsaWFiaWxpdHksIHBsZWFzZSBpbmNsdWRlIGNvcGllcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXJseSBsZWdpYmxlLiBZb3UgbWF5IHNlbmQgdGhlbSB2aWEgZW1haWwsIG9yIHVwbG9hZC4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IHRvIHByb3ZpZGUsIGRvbid0IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9jZXNzIGNhbiBiZSBjb21wbGV4LCBidXQgd2UgYXJlIGhlcmUgdG8gZ3VpZGUgeW91IHRocm91Z2ggaXQuIE91ciBnb2FsIGlzIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgc2l0dWF0aW9uIHRvIGFkdm9jYXRlIGZvciB0aGUgbW9zdCBmYXZvcmFibGUgb3V0Y29tZSBvbiB5b3VyIGJlaGFsZi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIjEwOTkgTkVDIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIHJlcXVpcmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHlvdXIgc291cmNlcyBvZiBpbmNvbWUuIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byBhY2NvdW50IGZvciB5b3VyIDEwOTkgTkVDIEluY29tZS4gVGhlIDEwOTktTkVDIGZvcm0gaXMgY3J1Y2lhbCBmb3IgY29ycmVjdGx5IHJlcG9ydGluZyB5b3VyIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gZW5zdXJlIGEgdGhvcm91Z2ggYW5kIGFjY3VyYXRlIHRheCBwcmVwYXJhdGlvbiwgcGxlYXNlIHByb3ZpZGUgdXMgd2l0aCB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+QWxsIDEwOTktTkVDIGZvcm1zPC9iPiB5b3UgcmVjZWl2ZWQgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIGFueSA8Yj5hZGRpdGlvbmFsIG5vbi1lbXBsb3llZSBjb21wZW5zYXRpb248L2I+IG5vdCByZXBvcnRlZCBvbiBhIDEwOTktTkVDIGZvcm0uPC9saT5cclxuICAgICAgICA8bGk+SW5mb3JtYXRpb24gcmVnYXJkaW5nIDxiPmV4cGVuc2VzIHJlbGF0ZWQgdG8geW91ciAxMDk5IE5FQyBpbmNvbWU8L2I+LCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgbm90IHlldCByZWNlaXZlZCBhbGwgeW91ciAxMDk5LU5FQyBmb3JtcywgcGxlYXNlIGxldCB1cyBrbm93LCBhbmQgcHJvdmlkZSBhbiBlc3RpbWF0ZSBvZiB3aGVuIHlvdSBleHBlY3QgdG8gcmVjZWl2ZSB0aGVtLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBhY2N1cmF0ZWx5IHJlcG9ydGluZyB5b3VyIGluY29tZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMgZnJvbSB0aGUgSVJTLjwvcD5cclxuICAgIDxwPlBsZWFzZSByZWFjaCBvdXQgdG8gdXMgZGlyZWN0bHkgc2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24uIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBwcm9jZXNzZWQgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkuPC9wPlxyXG5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU2NoZWR1bGUgSy0xIEluZm9ybWF0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgaW5kaWNhdGVkIHRoZSBwcmVzZW5jZSBvZiBTY2hlZHVsZSBLIGluY29tZSBmb3IgdGhlIGN1cnJlbnQgdGF4IHllYXIuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGNvbXBsZXRlbmVzcyBvZiB5b3VyIHRheCByZXR1cm4sIGl0IGlzIGltcGVyYXRpdmUgdGhhdCB3ZSBnYXRoZXIgYWxsIG5lY2Vzc2FyeSBkb2N1bWVudHMgcmVsYXRlZCB0byB0aGlzIGluY29tZS48L3A+XHJcbiAgICA8cD5JZiB3ZSBhcmUgcHJlcGFyaW5nIHlvdXIgYnVzaW5lc3MgcmV0dXJuLCByZXN0IGFzc3VyZWQgdGhhdCB3ZSB3aWxsIGdlbmVyYXRlIHRoZSBhcHBsaWNhYmxlIFNjaGVkdWxlIEstMShzKSBmb3IgeW91ciBidXNpbmVzcyBpbnRlcmVzdHMuIEhvd2V2ZXIsIGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIGNvbGxlY3QgY29waWVzIG9mIDxzdHJvbmc+YWxsIG90aGVyIFNjaGVkdWxlIEstMXM8L3N0cm9uZz4geW91IG1heSBoYXZlIHJlY2VpdmVkIHRvIGluY29ycG9yYXRlIGludG8geW91ciBwZXJzb25hbCB0YXggcmV0dXJuLjwvcD4gIFxyXG4gICAgPGgzPlNwZWNpZmljIERvY3VtZW50IFJlcXVlc3Q6PC9oMz5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QW55IGFuZCBhbGwgU2NoZWR1bGUgSy0xKHMpIHlvdSBoYXZlIHJlY2VpdmVkIGZyb206PC9saT5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT5QYXJ0bmVyc2hpcHM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+UyBDb3Jwb3JhdGlvbnM8L2xpPlxyXG4gICAgICAgICAgICA8bGk+RXN0YXRlIG9yIFRydXN0czwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgPHN0cm9uZz5jbGVhciBhbmQgbGVnaWJsZTwvc3Ryb25nPiB0byBwcmV2ZW50IGFueSBkZWxheXMgaW4gcHJvY2Vzc2luZyB5b3VyIHJldHVybi4gWW91IG1heSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsLCBvciBjb250YWN0IHVzIHRvIG1ha2UgYWx0ZXJuYXRpdmUgYXJyYW5nZW1lbnRzIGlmIG5lY2Vzc2FyeS48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYW55IGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk90aGVyIFNlbGYtRW1wbG95bWVudCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2Ygc2VsZi1lbXBsb3ltZW50IGluY29tZSBub3QgcmVwb3J0ZWQgdGhyb3VnaCAxMDk5LU5FQyBmb3JtcyBvciBhIFNjaGVkdWxlIEstMS4gVG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBhY2N1cmF0ZSBhbmQgbWF4aW1pemVzIHlvdXIgYmVuZWZpdHMsIGl0J3MgY3J1Y2lhbCB3ZSBnYXRoZXIgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlIHNvdXJjZXMgb2YgaW5jb21lLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eTo8L3N0cm9uZz4gQnJpZWZseSBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGVhY2ggYWN0aXZpdHkgZnJvbSB3aGljaCB5b3UgZGVyaXZlIHNlbGYtZW1wbG95bWVudCBpbmNvbWUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiBvcGVyYXRpb246PC9zdHJvbmc+IEZvciBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eSwgc3BlY2lmeSB0aGUgZGF0ZXMgb3IgcmFuZ2Ugb2YgZGF0ZXMgZHVyaW5nIHdoaWNoIHlvdSBlYXJuZWQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgaW5jb21lIGdlbmVyYXRlZDo8L3N0cm9uZz4gRm9yIGVhY2ggYWN0aXZpdHksIHByb3ZpZGUgdGhlIHRvdGFsIGFtb3VudCBvZiBpbmNvbWUgZWFybmVkIGJlZm9yZSBhbnkgZXhwZW5zZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5FeHBlbnNlcyBpbmN1cnJlZDo8L3N0cm9uZz4gTGlzdCBhbGwgZXhwZW5zZXMgcmVsYXRlZCB0byBlYWNoIHNlbGYtZW1wbG95bWVudCBhY3Rpdml0eS4gUGxlYXNlIGNhdGVnb3JpemUgdGhlc2UgZXhwZW5zZXMgKGUuZy4sIG9mZmljZSBzdXBwbGllcywgdHJhdmVsLCBhZHZlcnRpc2luZykuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWNvcmRzIG9yIGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBleGlzdGluZyByZWNvcmRzIG9yIGRvY3VtZW50YXRpb24gdGhhdCBjb3Jyb2JvcmF0ZSB5b3VyIGluY29tZSBhbmQgZXhwZW5zZXMsIHN1Y2ggYXMgYmFuayBzdGF0ZW1lbnRzLCByZWNlaXB0cywgaW52b2ljZXMsIG9yIGNvbnRyYWN0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgdml0YWwgZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IGFtb3VudCBvZiB0YXggeW91IG93ZSBhbmQgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIHRoYXQgY2FuIG1pbmltaXplIHlvdXIgdGF4IGxpYWJpbGl0eS4gUGxlYXNlIHByb3ZpZGUgdGhlc2UgZGV0YWlscyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSBhIHNtb290aCBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFlvdXIgdGltZWx5IGNvb3BlcmF0aW9uIGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQsIGFuZCB3ZSBhcmUgaGVyZSB0byBoZWxwIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3ltZW50IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UaGFuayB5b3UgZm9yIGVudHJ1c3RpbmcgdXMgd2l0aCB0aGUgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gQXMgcGFydCBvZiBvdXIgY29tcHJlaGVuc2l2ZSByZXZpZXcgYW5kIGluIG91ciBxdWVzdCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZ3MsIHdlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB3YWdlcyBmcm9tIGVtcGxveW1lbnQgb3ZlciB0aGUgcGFzdCB0YXggeWVhci48L3A+XHJcbiAgICA8cD5UbyBwcm9jZWVkIGVmZmVjdGl2ZWx5LCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlctMiBGb3Jtczo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgY29waWVzIG9mIGFsbCBXLTIgZm9ybXMgcmVjZWl2ZWQgZnJvbSB5b3VyIGVtcGxveWVycy4gVGhpcyBpbmNsdWRlcyB3YWdlcyBlYXJuZWQgZnJvbSBhbGwgc291cmNlcywgbm90IGp1c3QgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlZlcmlmaWNhdGlvbiBvZiBTLUNvcnBvcmF0aW9uIFdhZ2VzOjwvc3Ryb25nPiBJZiB3ZSBhcmUgYWxzbyBoYW5kbGluZyB5b3VyIGJ1c2luZXNzIHRheGVzIGZvciBhbiBTLUNvcnBvcmF0aW9uLCB3ZSBsaWtlbHkgaGF2ZSB0aGUgd2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhhdCBlbnRpdHkuIEhvd2V2ZXIsIGZvciB0aG9yb3VnaG5lc3MgYW5kIGNvbXBsaWFuY2UsIHBsZWFzZSBjb25maXJtIGlmIHRoZSB3YWdlcyBmcm9tIHRoZSBTLUNvcnBvcmF0aW9uIGFyZSBmdWxseSByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnRzIHdlIGFscmVhZHkgaG9sZC4gVGhpcyB3aWxsIGhlbHAgdXMgdmVyaWZ5IHRoYXQgYWxsIGluY29tZSBpcyBhY2N1cmF0ZWx5IHJlcG9ydGVkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWRkaXRpb25hbCBJbmNvbWUgRG9jdW1lbnRzOjwvc3Ryb25nPiBTaG91bGQgeW91IGhhdmUgb3RoZXIgc291cmNlcyBvZiB3YWdlIGluY29tZSAoZS5nLiwgY29udHJhY3Qgd29yaywgYm9udXNlcywgZXRjLikgbm90IGNvdmVyZWQgYnkgdGhlIFctMiBmb3JtcyBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgYW55IDEwOTkgZm9ybXMgb3Igb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPllvdXIgY29vcGVyYXRpb24gaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gS2luZGx5IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBUaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcm9wZXJ0eSBvciBTZXJ2aWNlcyBMaWV1IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJQcm9wZXJ0eS9TZXJ2aWNlcyBpbiBMaWV1IG9mIFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgcHJvcGVydHkgYW5kL29yIHNlcnZpY2VzIGluIGxpZXUgb2YgdHJhZGl0aW9uYWwgd2FnZXMgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyB0eXBlIG9mIGNvbXBlbnNhdGlvbiBjb25zdGl0dXRlcyB0YXhhYmxlIGluY29tZSBhbmQgbXVzdCBiZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgZnVsbHkgY29tcGxpYW50IHdpdGggSVJTIHJlZ3VsYXRpb25zLjwvcD5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgcmVjb2duaXplIGFuZCByZXBvcnQgdGhlc2UgaXRlbXMgYXMgdGF4YWJsZSBpbmNvbWUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBQcm9wZXJ0eSBvciBTZXJ2aWNlczo8L3N0cm9uZz4gUHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGFueSBwcm9wZXJ0eSBvciBzZXJ2aWNlcyB5b3UgcmVjZWl2ZWQuIFBsZWFzZSBpbmNsdWRlIHBoeXNpY2FsIGNoYXJhY3RlcmlzdGljcyBmb3IgcHJvcGVydHkgb3IgdGhlIHNjb3BlIG9mIHNlcnZpY2VzIHJlbmRlcmVkLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5GYWlyIE1hcmtldCBWYWx1ZSBhdCBUaW1lIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IEluZGljYXRlIHRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIHByb3BlcnR5IG9yIHNlcnZpY2UgYXQgdGhlIHRpbWUgeW91IHJlY2VpdmVkIGl0LiBJZiB5b3UgaGF2ZSBhbnkgYXBwcmFpc2FscyBvciBkb2N1bWVudHMgdG8gc3VwcG9ydCB0aGUgRk1WLCBwbGVhc2UgaW5jbHVkZSB0aGVtLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9yIEFncmVlbWVudHM6PC9zdHJvbmc+IFByb3ZpZGUgYW55IGRvY3VtZW50YXRpb24gb3Igd3JpdHRlbiBhZ3JlZW1lbnRzIHRoYXQgZGV0YWlsIHRoZSBhcnJhbmdlbWVudCBmb3IgcmVjZWl2aW5nIHByb3BlcnR5IG9yIHNlcnZpY2VzIGluIGxpZXUgb2Ygd2FnZXMuIFRoaXMgY2FuIGluY2x1ZGUgY29udHJhY3RzLCBlbWFpbHMsIG9yIGFueSBmb3JtIG9mIGNvbW11bmljYXRpb24gdGhhdCBvdXRsaW5lcyB0aGUgYWdyZWVtZW50LjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFJlY2VpcHQ6PC9zdHJvbmc+IFNwZWNpZnkgdGhlIGRhdGUocykgb24gd2hpY2ggeW91IHJlY2VpdmVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RW1wbG95ZXIvUHJvdmlkZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFByb3ZpZGUgdGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgcHJvdmlkZWQgdGhlIHByb3BlcnR5IG9yIHNlcnZpY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBwcm92aWRlZCBpbmZvcm1hdGlvbiBpcyBhcyBhY2N1cmF0ZSBhbmQgY29tcGxldGUgYXMgcG9zc2libGUuIEluY29tcGxldGUgb3IgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBtYXkgbGVhZCB0byBkZWxheXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybiBvciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIElSUy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiByZWdhcmRpbmcgdGhlIGluZm9ybWF0aW9uIHJlcXVlc3RlZCwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGlzIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIGNyaXRpY2FsIGZvciB0aGUgdGltZWx5IGFuZCBhY2N1cmF0ZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFbXBsb3llZSBBY2NvdW50YWJsZSBQbGFuXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybiBhbmQgbm90aWNlZCB5b3UndmUgbWVudGlvbmVkIGJlaW5nIHJlaW1idXJzZWQgZm9yIGNlcnRhaW4gZXhwZW5zZXMgdW5kZXIgYW4gRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhbi4gVG8gYWNjdXJhdGVseSBhY2NvdW50IGZvciB0aGVzZSByZWltYnVyc2VtZW50cyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBJUlMgcnVsZXMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB0aGUgZm9ybWFsIHdyaXR0ZW4gQWNjb3VudGFibGUgUGxhbiBwcm92aWRlZCBieSB5b3VyIGVtcGxveWVyLiBUaGlzIHNob3VsZCBvdXRsaW5lIHRoZSBleHBlbnNlIGFsbG93YW5jZSBhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBwb2xpY3kuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gb3IgY29ycmVzcG9uZGVuY2UgZnJvbSB5b3VyIGVtcGxveWVyIGNvbmZpcm1pbmcgeW91ciBwYXJ0aWNpcGF0aW9uIGluIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbHMgb2YgdGhlIGV4cGVuc2VzIHJlaW1idXJzZWQgdW5kZXIgdGhlIHBsYW4sIGluY2x1ZGluZyBkYXRlcywgYW1vdW50cywgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGV4cGVuc2UgKHJlY2VpcHRzIG9yIGludm9pY2VzKSBwcm92aWRlZCB0byB5b3VyIGVtcGxveWVyIGZvciByZWltYnVyc2VtZW50IHVuZGVyIHRoZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHJlaW1idXJzZW1lbnRzIG9yIHRoZSBBY2NvdW50YWJsZSBQbGFuLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHNlbmQgdXMgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gcHJvY2VlZCBzbW9vdGhseSB3aXRoIHlvdXIgdGF4IHJldHVybiBwcmVwYXJhdGlvbi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYFxyXG4gICAgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGVuc3VyaW5nIGFsbCBmb3JtcyBvZiBjb21wZW5zYXRpb24sIGluY2x1ZGluZyB0YXhhYmxlIGZyaW5nZSBiZW5lZml0cywgYXJlIGFjY3VyYXRlbHkgcmVwb3J0ZWQgb24geW91ciB0YXggcmV0dXJucy4gQmFzZWQgb24gb3VyIHByZXZpb3VzIGNvbW11bmljYXRpb24sIGl0IGFwcGVhcnMgeW91IG1heSBoYXZlIHJlY2VpdmVkIGJlbmVmaXRzIHRoYXQgbmVlZCB0byBiZSByZXZpZXdlZCBmdXJ0aGVyLiBUbyBhc3Npc3QgeW91IHByb3Blcmx5LCB3ZSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgc3BlY2lmaWMgZGV0YWlsczo8L3A+XHJcbjxvbD5cclxuICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQgcmVjZWl2ZWQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbXBhbnkgY2FycywgbWVtYmVyc2hpcHMsIGVkdWNhdGlvbmFsIGFzc2lzdGFuY2UsIGV0Yy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPlZhbHVlIG9mIGVhY2ggYmVuZWZpdDo8L3N0cm9uZz4gVGhlIGZhaXIgbWFya2V0IHZhbHVlIChGTVYpIG9mIGVhY2ggYmVuZWZpdC4gSWYgeW91J3JlIHVuc3VyZSwgcGxlYXNlIHByb3ZpZGUgYW4gZXN0aW1hdGUgYW5kIHRoZSBiYXNpcyBmb3IgdGhpcyBlc3RpbWF0ZS48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkFueSBhbW91bnRzIGNvbnRyaWJ1dGVkIGJ5IHlvdTo8L3N0cm9uZz4gSWYgeW91IG1hZGUgY29udHJpYnV0aW9ucyB0b3dhcmQgdGhlIGNvc3Qgb2YgYW55IGJlbmVmaXQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBhbW91bnRzIGFuZCBmb3Igd2hpY2ggYmVuZWZpdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBzdXBwb3J0IHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gIDxsaT48c3Ryb25nPkRhdGVzOjwvc3Ryb25nPiBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgc3BlY2lmaWMgZGF0ZXMgaWYgcG9zc2libGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5FbXBsb3llciBJbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gb2YgdGhlIGVtcGxveWVyKHMpIHByb3ZpZGluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG48L29sPlxyXG48cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFjY3VyYXRlbHkgZGV0ZXJtaW5pbmcgdGhlIHRheGFibGUgdmFsdWUgb2YgdGhlc2UgZnJpbmdlIGJlbmVmaXRzIGFuZCBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG48cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlciBhbmQgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk5vbiBUYXhhYmxlIEZyaW5nZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGZpbmFsaXppbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIGlkZW50aWZpZWQgcG90ZW50aWFsIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB0aGF0IG1heSBhcHBseSB0byB5b3VyIHNpdHVhdGlvbi4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgb3B0aW1pemUgeW91ciB0YXggb3V0Y29tZSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYW55IG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQ6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG5vbi10YXhhYmxlIGZyaW5nZSBiZW5lZml0cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIG1heSBpbmNsdWRlIGhlYWx0aCBzYXZpbmdzIGFjY291bnRzIChIU0FzKSwgZW1wbG95ZWUgZGlzY291bnRzLCBwdWJsaWMgdHJhbnNpdCBwYXNzZXMsIGV0Yy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIEZvciBub24tdGF4YWJsZSBiZW5lZml0cywgdGhpcyBoZWxwcyBpbiByZWNvcmQta2VlcGluZyBhbmQgY29uZmlybWluZyBleGVtcHRpb24gc3RhdHVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkNvbnRyaWJ1dGlvbiBhbW91bnRzLCBpZiBhbnk6PC9zdHJvbmc+IElmIHlvdSBoYXZlIGNvbnRyaWJ1dGVkIHRvd2FyZHMgYW55IG9mIHRoZXNlIGJlbmVmaXRzLCBpbmRpY2F0ZSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkJlbmVmaXQgZG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IGRvY3VtZW50YXRpb24gdGhhdCBjYW4gY29ycm9ib3JhdGUgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCBzdWNoIGFzIHN0YXRlbWVudHMsIGFncmVlbWVudHMsIG9yIHJlY2VpcHRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRhdGVzIG9mIHJlY2VpcHQ6PC9zdHJvbmc+IFRoZSB0aW1lZnJhbWUgZHVyaW5nIHdoaWNoIHlvdSByZWNlaXZlZCB0aGVzZSBiZW5lZml0cy4gSW5jbHVkZSBhcyBwcmVjaXNlIGRhdGVzIGFzIHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkVtcGxveWVyIG9yIHByb3ZpZGVyIGluZm9ybWF0aW9uOjwvc3Ryb25nPiBUaGUgbmFtZSBhbmQgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBlbXBsb3llcihzKSBvciB0aGlyZC1wYXJ0eSBwcm92aWRlcihzKSBvZmZlcmluZyB0aGVzZSBiZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPkdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uIGhlbHBzIGVuc3VyZSB0aGF0IHlvdXIgdGF4IGZpbGluZ3MgYXJlIGFjY3VyYXRlIGFuZCB0aGF0IHlvdSByZWNlaXZlIHRoZSBmdWxsIGFkdmFudGFnZSBvZiBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMuIFBsZWFzZSBsZXQgdXMga25vdyBpZiB5b3UgbmVlZCBhbnkgaGVscCBpZGVudGlmeWluZyBvciBkb2N1bWVudGluZyB0aGVzZSBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBoaWdobHkgYXBwcmVjaWF0ZWQgYXMgd2Ugc3RyaXZlIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIGVmZmljaWVudGx5LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVmV0ZXJhbiBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVkEgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBvbmdvaW5nIGVmZm9ydCB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgVmV0ZXJhbiBCZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBvZiB0aGVzZSBiZW5lZml0cywgd2Uga2luZGx5IHJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gdGhpcyB0YXNrLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBsaXN0IG9mIHRoZSBWZXRlcmFuIEJlbmVmaXRzIHlvdSByZWNlaXZlZCwgaW5jbHVkaW5nIGFueSBkaXNhYmlsaXR5LCBlZHVjYXRpb24sIGFuZCBwZW5zaW9uIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPk9mZmljaWFsIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggdHlwZSBvZiBiZW5lZml0IHJlY2VpdmVkLCBzdWNoIGFzIGF3YXJkIGxldHRlcnMgb3Igc3RhdGVtZW50cyBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIFZldGVyYW5zIEFmZmFpcnMgKFZBKS48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgY29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgVkEgb3Igb3RoZXIgcmVsZXZhbnQgZW50aXRpZXMgcmVnYXJkaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHlvdXIgYmVuZWZpdHMuPC9saT5cclxuICAgICAgICA8bGk+VG90YWwgYW1vdW50IHJlY2VpdmVkIGZvciBlYWNoIGJlbmVmaXQgdGhyb3VnaG91dCB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+QW55IG90aGVyIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBwcm92aWRlIGNsYXJpdHkgb24gdGhlIG5hdHVyZSBhbmQgYW1vdW50IG9mIHlvdXIgVmV0ZXJhbiBCZW5lZml0cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggYmVuZWZpdHMgYXJlIHRheGFibGUgYW5kIGVuc3VyaW5nIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFBsZWFzZSBzdWJtaXQgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBUaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJMaWZlIEluc3VyYW5jZSBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhhdmUgbm90ZWQgeW91ciBtZW50aW9uIG9mIHJlY2VpdmluZyBsaWZlIGluc3VyYW5jZSBwYXltZW50cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHRoZXNlIHByb2NlZWRzIGFyZSBpbmRlZWQgbm9uLXRheGFibGUsIHdlIHJlcXVpcmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgcmVjZWl2ZWQgZnJvbSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+RG9jdW1lbnRhdGlvbiBvciBzdGF0ZW1lbnRzIHBlcnRhaW5pbmcgdG8gdGhlIGxpZmUgaW5zdXJhbmNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgaW5zdXJlZCBpbmRpdmlkdWFsIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8geW91LjwvbGk+XHJcbiAgICAgIDxsaT5BbnkgY29tbXVuaWNhdGlvbnMgb3IgbGV0dGVycyBmcm9tIHRoZSBpbnN1cmFuY2UgY29tcGFueSByZWdhcmRpbmcgdGhlIHRheCBzdGF0dXMgb2YgdGhlc2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRldGFpbHMgcmVnYXJkaW5nIGlmIHRoZSBwb2xpY3kgd2FzIHB1cmNoYXNlZCB3aXRoIGFmdGVyLXRheCBvciBwcmUtdGF4IGRvbGxhcnMuPC9saT5cclxuICAgICAgPGxpPklmIGFueSBwb3J0aW9uIG9mIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50IHdhcyBhbiBpbnZlc3RtZW50IHJldHVybiwgcGxlYXNlIHByb3ZpZGUgcmVsYXRlZCBkb2N1bWVudHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGd1YXJhbnRlZSB0aGUgYWNjdXJhY3kgYW5kIGludGVncml0eSBvZiB5b3VyIHRheCByZXR1cm4uIFBsZWFzZSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPlNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gV2UncmUgaGVyZSB0byBoZWxwITwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTWVkaWNhcmUgV2FpdmVyIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgd2UgcHJvY2VlZCB3aXRoIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zLCB3ZSBub3RlZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB1bmRlciB0aGUgZGlmZmljdWx0eS1vZi1jYXJlIHByb3Zpc2lvbnMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gZW5zdXJlIHdlIG1heGltaXplIHlvdXIgZWxpZ2libGUgaW5jb21lIGV4Y2x1c2lvbnMsIGl0J3MgY3J1Y2lhbCB3ZSB2ZXJpZnkgY2VydGFpbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBsaXZpbmcgYXJyYW5nZW1lbnQsIGFzIHBlciBJUlMgZ3VpZGVsaW5lcy48L3A+XHJcbiAgICA8cD5UbyBhc3Npc3QgdXMgaW4gY29uZmlybWluZyB0aGF0IHRoZXNlIHBheW1lbnRzIHF1YWxpZnkgZm9yIGluY29tZSBleGNsdXNpb24sIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIFJlc2lkZW5jZTo8L3N0cm9uZz4gRG9jdW1lbnRzIHByb3ZpbmcgdGhhdCB5b3UgYW5kIHRoZSBpbmRpdmlkdWFsIHVuZGVyIGNhcmUgc2hhcmVkIHRoZSBzYW1lIHByaW1hcnkgcmVzaWRlbmNlIGR1cmluZyB0aGUgcmVjZWlwdCBvZiB0aGVzZSBwYXltZW50cy4gVGhpcyBjb3VsZCBpbmNsdWRlIHV0aWxpdHkgYmlsbHMsIGEgcmVudGFsIGFncmVlbWVudCwgb3IgaG9tZW93bmVyJ3MgaW5zdXJhbmNlIGluIGJvdGggb2YgeW91ciBuYW1lcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgdGhlIENhcmUgUmVjaXBpZW50Ojwvc3Ryb25nPiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVyc29uIHJlY2VpdmluZyBjYXJlLCBpbmNsdWRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdSBhbmQgYW55IGRvY3VtZW50YXRpb24gdGhhdCBpZGVudGlmaWVzIHRoZWlyIG5lZWQgZm9yIGNhcmUgKGUuZy4sIGEgbGV0dGVyIGZyb20gYSBoZWFsdGhjYXJlIHByb3ZpZGVyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBheW1lbnQgUmVjb3Jkczo8L3N0cm9uZz4gQW55IHJlY29yZHMgb2YgdGhlIE1lZGljYXJlIFdhaXZlciBQYXltZW50cyB5b3UgcmVjZWl2ZWQsIGFzIHRoaXMgd2lsbCBoZWxwIHVzIGRldGVybWluZSB0aGUgZXhhY3QgYW1vdW50cyBhbmQgdGhlIHBlcmlvZHMgY292ZXJlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBGb3JtYWwgQWdyZWVtZW50cyBvciBDb250cmFjdHM6PC9zdHJvbmc+IElmIHRoZXJlIHdhcyBhIGZvcm1hbCBhZ3JlZW1lbnQgb3IgY29udHJhY3QgZGV0YWlsaW5nIHRoZSBjYXJlIHByb3ZpZGVkLCBwbGVhc2UgaW5jbHVkZSB0aGlzIGFzIHdlbGwuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGNhcmUgYXJyYW5nZW1lbnQgd2FzIGZhY2lsaXRhdGVkIHRocm91Z2ggYSBzdGF0ZSBvciB0aGlyZC1wYXJ0eSBhZ2VuY3kuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB3ZSBjb21wbHkgd2l0aCB0YXhpbmcgYXV0aG9yaXRpZXMgd2hpbGUgYWNjdXJhdGVseSByZWZsZWN0aW5nIHlvdXIgZmluYW5jZXMuIElmIGFueSBvZiB0aGVzZSByZXF1aXJlbWVudHMgcG9zZSBhIGRpZmZpY3VsdHkgb3IgaWYgeW91IGhhdmUgcXVlc3Rpb25zLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gT3VyIGdvYWwgaXMgdG8gc3VwcG9ydCB5b3UgdGhyb3VnaCB0aGlzIHByb2Nlc3MgYW5kIG9wdGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBXZSBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSBmdXJ0aGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgSW5zdXJhbmNlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZXNlIGJlbmVmaXRzIGFyZSBlbGlnaWJsZSB0byBiZSBleGNsdWRlZCBmcm9tIHlvdXIgaW5jb21lLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgdGhlIGluc3VyYW5jZSBwcmVtaXVtcyBwYWlkLjwvcD5cclxuICAgIDxwPktpbmRseSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSB0b3RhbCBhbW91bnQgb2YgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCBzdGF0ZW1lbnRzIG9yIGRvY3VtZW50YXRpb24gc2hvd2luZyB0aGUgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9uIHdobyBwYWlkIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgKHlvdSBvciB5b3VyIGVtcGxveWVyKS48L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHlvdSBwYWlkIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IHN1cHBvcnRpbmcgZG9jdW1lbnRzIGZvciB0aGUgcGF5bWVudHMgbWFkZSBieSB5b3UgKHJlY2VpcHRzIG9yIGJhbmsgc3RhdGVtZW50cykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5JZiB5b3VyIGVtcGxveWVyIGNvbnRyaWJ1dGVkIHRvIHRoZSBwYXltZW50IG9mIHRoZSBwcmVtaXVtczpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlRoZSBhbW91bnQgcGFpZCBieSB5b3VyIGVtcGxveWVyIHRvd2FyZHMgdGhlIHByZW1pdW1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGRvY3VtZW50cyBpbmRpY2F0aW5nIGVtcGxveWVyIGNvbnRyaWJ1dGlvbnMgKHBheSBzdHVicywgZW1wbG95ZXIgbGV0dGVycykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gZGV0ZXJtaW5lIHRoZSB0YXhhYmxlIHBvcnRpb24sIGlmIGFueSwgb2YgeW91ciBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cy4gUHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBoZWxwIHVzIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgeW91ciB0YXggZmlsaW5nIGFuZCBwb3RlbnRpYWxseSBsb3dlciB5b3VyIHRheGFibGUgaW5jb21lLjwvcD5cclxuICAgIDxwPlBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVhY2ggb3V0IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgaWYgd2UgY2FuIGJlIG9mIGZ1cnRoZXIgYXNzaXN0YW5jZS4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCByZXNwb25zZSB0byB0aGlzIHJlcXVlc3QuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXNhYmlsaXR5IFJldGlyZW1lbnQgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggZG9jdW1lbnRzIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJbiBvcmRlciB0byBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cywgd2UgbmVlZCBhZGRpdGlvbmFsIGRldGFpbHMuIFRoZSB0YXhhYmlsaXR5IG9mIHRoZXNlIGJlbmVmaXRzIGNhbiBkZXBlbmQgb24gd2hlbiB5b3UgdG9vayByZXRpcmVtZW50IGR1ZSB0byBkaXNhYmlsaXR5LjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZXRpcmVtZW50Ojwvc3Ryb25nPiBUaGUgZXhhY3QgZGF0ZSB5b3UgcmV0aXJlZCBkdWUgdG8gZGlzYWJpbGl0eS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgRGlzYWJpbGl0eSBSZXRpcmVtZW50Ojwvc3Ryb25nPiBBbnkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiB5b3UgaGF2ZSB0aGF0IGNvbmZpcm1zIHlvdXIgcmV0aXJlbWVudCB3YXMgZHVlIHRvIGRpc2FiaWxpdHkuIFRoaXMgbWF5IGluY2x1ZGUgbGV0dGVycyBmcm9tIHlvdXIgZW1wbG95ZXIsIHRoZSByZXRpcmVtZW50IHBsYW4sIG9yIG1lZGljYWwgcmVjb3Jkcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgQmVuZWZpdHMgUmVjZWl2ZWQ6PC9zdHJvbmc+IFNwZWNpZmljIGFtb3VudHMgYW5kIHRoZSBzb3VyY2Ugb2YgdGhlIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cy4gUGxlYXNlIGluY2x1ZGUgYW55IHJlbGF0ZWQgZG9jdW1lbnRzIHN1Y2ggYXMgc3RhdGVtZW50cyBvciBub3RpY2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBXLTIgb3IgMTA5OSBGb3Jtczo8L3N0cm9uZz4gSWYgeW91IHJlY2VpdmVkIGFueSB3YWdlcyBvciBkaXNhYmlsaXR5IHBheW1lbnRzIHRoYXQgd2VyZSByZXBvcnRlZCBvbiBXLTIgb3IgMTA5OSBmb3JtcyBpbiB0aGUgeWVhciBvZiB5b3VyIHJldGlyZW1lbnQsIHBsZWFzZSBwcm92aWRlIHRoZXNlIGZvcm1zLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW55IENvcnJlc3BvbmRlbmNlIGZyb20gdGhlIElSUzo8L3N0cm9uZz4gSWYgeW91IGhhdmUgcmVjZWl2ZWQgYW55IG5vdGljZXMgb3IgbGV0dGVycyBmcm9tIHRoZSBJUlMgcmVnYXJkaW5nIHlvdXIgZGlzYWJpbGl0eSByZXRpcmVtZW50IGJlbmVmaXRzLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgdGhlc2UgY29tbXVuaWNhdGlvbnMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgdml0YWwgdG8gZW5zdXJlIHlvdXIgdGF4IHJldHVybiBpcyBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuIFVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljcyBvZiB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cyB3aWxsIGFpZCB1cyBpbiBkZXRlcm1pbmluZyB0aGVpciB0YXhhYmlsaXR5IGFuZCBlbnN1cmluZyB0aGF0IHlvdXIgdGF4IG9ibGlnYXRpb25zIGFyZSBwcmVjaXNlbHkgY2FsY3VsYXRlZC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBnYXRoZXJpbmcgdGhlc2UgZG9jdW1lbnRzLCBmZWVsIGZyZWUgdG8gY29udGFjdCB1cy4gWW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiQ2xlcmd5IFdhZ2VzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgVy0yIHdhZ2VzIGFzIGEgY2xlcmd5IG1lbWJlci4gVG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBhbmQgdG8gcG90ZW50aWFsbHkgbWF4aW1pemUgeW91ciB0YXggYmVuZWZpdHMsIHdlIHJlcXVpcmUgZnVydGhlciBkZXRhaWxzIHJlZ2FyZGluZyB5b3VyIGNvbXBlbnNhdGlvbiBwYWNrYWdlLjwvcD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PGI+Vy0yIEZvcm06PC9iPiBJZiBub3QgYWxyZWFkeSBwcm92aWRlZCwgaW5jbHVkZSBhbnkgVy0yIGZvcm1zIGlzc3VlZCBieSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Ib3VzaW5nIEFsbG93YW5jZSBEb2N1bWVudGF0aW9uOjwvYj4gRGV0YWlsZWQgc3RhdGVtZW50IG9yIGxldHRlciBmcm9tIHlvdXIgcmVsaWdpb3VzIGluc3RpdHV0aW9uIHNwZWNpZnlpbmcgdGhlIGFtb3VudCBkZXNpZ25hdGVkIGFzIGhvdXNpbmcgYWxsb3dhbmNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNlbGYtRW1wbG95bWVudCBUYXg6PC9iPiBDb25maXJtYXRpb24gb24gd2hldGhlciB5b3UgaGF2ZSB0YWtlbiBhIHZvdyBvZiBwb3ZlcnR5IChpZiBhcHBsaWNhYmxlKSwgb3IgYW55IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byBvcHRpbmcgb3V0IG9mIHNlbGYtZW1wbG95bWVudCB0YXguPC9saT5cclxuICAgICAgICA8bGk+PGI+RXhwZW5zZSBSZWltYnVyc2VtZW50czo8L2I+IERvY3VtZW50YXRpb24gc2hvd2luZyBhbnkgZXhwZW5zZSByZWltYnVyc2VtZW50cyByZWNlaXZlZCB1bmRlciBhbiBhY2NvdW50YWJsZSBwbGFuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPk90aGVyIENvbXBlbnNhdGlvbjo8L2I+IEluZm9ybWF0aW9uIG9uIGFueSBvdGhlciBjb21wZW5zYXRpb24gcmVjZWl2ZWQgaW4geW91ciBjYXBhY2l0eSBhcyBjbGVyZ3ksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gbG92ZSBvZmZlcmluZ3MsIGZlZXMgZm9yIHNlcnZpY2VzICh3ZWRkaW5ncywgZnVuZXJhbHMsIGV0Yy4pLCBhbmQgcGFyc29uYWdlIGFsbG93YW5jZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGFjY3VyYXRlbHkgcmVwcmVzZW50IHlvdXIgZWFybmluZ3MgYW5kIHRvIGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGRlZHVjdGlvbnMgY29ycmVjdGx5LiBZb3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IHdpbGwgaGVscCBlbnN1cmUgdGhhdCB5b3VyIHRheCByZXR1cm5zIGFyZSBwcmVwYXJlZCBpbiBhIHRpbWVseSBhbmQgZWZmaWNpZW50IG1hbm5lci48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHdoYXQgaXMgcmVxdWlyZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gV2UgYXJlIGhlcmUgdG8gYXNzaXN0IHlvdSB0aHJvdWdoIGV2ZXJ5IHN0ZXAgb2YgdGhpcyBwcm9jZXNzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkludGVyZXN0IEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+SW4gcmV2aWV3aW5nIHlvdXIgZmluYW5jaWFsIGFjdGl2aXRpZXMgZm9yIHRoZSB0YXggeWVhciwgeW91IGluZGljYXRlZCByZWNlaXZpbmcgaW50ZXJlc3QgaW5jb21lLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgdGF4YWJpbGl0eSBvZiB0aGlzIGluY29tZSBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBkZXRhaWxzLiBLaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxiPlNvdXJjZSBvZiBJbnRlcmVzdCBJbmNvbWU6PC9iPiBQbGVhc2Ugc3BlY2lmeSB0aGUgaW5zdGl0dXRpb24ocykgb3IgZW50aXR5KGllcykgZnJvbSB3aGljaCB5b3UgcmVjZWl2ZWQgaW50ZXJlc3QgaW5jb21lIChlLmcuLCBiYW5rcywgY3JlZGl0IHVuaW9ucykuPC9saT5cclxuICAgICAgPGxpPjxiPkFtb3VudCBSZWNlaXZlZDo8L2I+IENvbmZpcm0gdGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcmVzdCBpbmNvbWUgcmVjZWl2ZWQgZnJvbSBlYWNoIHNvdXJjZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BY2NvdW50IFR5cGVzOjwvYj4gSWRlbnRpZnkgdGhlIHR5cGUgb2YgYWNjb3VudHMgdGhhdCBnZW5lcmF0ZWQgdGhlIGludGVyZXN0IChlLmcuLCBzYXZpbmdzLCBjaGVja2luZywgY2VydGlmaWNhdGVzIG9mIGRlcG9zaXQpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5UYXggRm9ybXMgUmVjZWl2ZWQ6PC9iPiBMaXN0IGFueSB0YXggZm9ybXMgeW91IGhhdmUgcmVjZWl2ZWQgcmVsYXRlZCB0byBpbnRlcmVzdCBpbmNvbWUsIHN1Y2ggYXMgRm9ybSAxMDk5LUlOVCBvciBGb3JtIDEwOTktT0lELjwvbGk+XHJcbiAgICAgIDxsaT48Yj5Gb3JlaWduIEludGVyZXN0OjwvYj4gSWYgYW55IGludGVyZXN0IGluY29tZSB3YXMgZWFybmVkIGZyb20gZm9yZWlnbiBhY2NvdW50cyBvciBzb3VyY2VzLCBwbGVhc2UgcHJvdmlkZSBkZXRhaWxzLCBpbmNsdWRpbmcgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UHJvdmlkaW5nIHRoZXNlIGRldGFpbHMgd2lsbCBlbmFibGUgdXMgdG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgeW91ciBpbnRlcmVzdCBpbmNvbWUgYW5kIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGNvcnJlY3QuIFlvdSBjYW4gYXR0YWNoIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBieSByZXBseWluZyB0byB0aGlzIGVtYWlsIG9yIHVwbG9hZGluZyB0aGVtIGRpcmVjdGx5IHRvIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQmFuayBBY2NvdW50IE9wZW5pbmcgR2lmdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmV2aWV3aW5nIHlvdXIgdGF4IHNpdHVhdGlvbiBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBhIGdpZnQgZm9yIG9wZW5pbmcgYW4gYWNjb3VudCBhdCBhIGZpbmFuY2lhbCBpbnN0aXR1dGlvbi4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgbmFtZSBvZiB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uIHdoZXJlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+VGhlIGRhdGUgdGhlIGFjY291bnQgd2FzIG9wZW5lZC48L2xpPlxyXG4gICAgICAgIDxsaT5BIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBnaWZ0IHJlY2VpdmVkIChlLmcuLCBjYXNoLCBtZXJjaGFuZGlzZSwgb3Igc2VydmljZXMpLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBmYWlyIG1hcmtldCB2YWx1ZSBvZiB0aGUgZ2lmdCBhdCB0aGUgdGltZSBpdCB3YXMgcmVjZWl2ZWQuPC9saT5cclxuICAgICAgICA8bGk+QW55IGRvY3VtZW50YXRpb24gcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiByZWdhcmRpbmcgdGhlIGdpZnQgKGUuZy4sIGEgbGV0dGVyLCBlbWFpbCBjb25maXJtYXRpb24sIG9yIHN0YXRlbWVudCBpbmRpY2F0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZ2lmdCkuPC9saT5cclxuICAgICAgICA8bGk+Q29uZmlybWF0aW9uIGlmIHlvdSBoYXZlIHJlY2VpdmVkIG1vcmUgdGhhbiBvbmUgZ2lmdCBmb3Igb3BlbmluZyBhY2NvdW50cyB3aXRoaW4gdGhlIHNhbWUgdGF4IHllYXIsIGFuZCBpZiBzbywgdGhlIGRldGFpbHMgZm9yIGVhY2guPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIHdlIGNhbiBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgY29tcGx5IHdpdGggYWxsIElSUyByZXF1aXJlbWVudHMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiQ0QgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5UbyBlbnN1cmUgYWNjdXJhdGUgcmVwb3J0aW5nIG9mIHlvdXIgaW5jb21lIGZyb20gQ2VydGlmaWNhdGVzIG9mIERlcG9zaXQgKENEcykgZm9yIHRoZSB0YXggeWVhciwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBpcyBlc3NlbnRpYWwgdG8gY29tcGx5IHdpdGggSVJTIHJlZ3VsYXRpb25zIGFuZCB0byBwb3RlbnRpYWxseSBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TmFtZSBvZiB0aGUgQmFuayBvciBGaW5hbmNpYWwgSW5zdGl0dXRpb246PC9zdHJvbmc+IFdoZXJlIHRoZSBDRCBpcyBoZWxkLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWNjb3VudCBOdW1iZXI6PC9zdHJvbmc+IFRoaXMgaGVscHMgaW4gaWRlbnRpZnlpbmcgdGhlIHNwZWNpZmljIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VG90YWwgSW50ZXJlc3QgRWFybmVkOjwvc3Ryb25nPiBUaGUgYW1vdW50IG9mIGludGVyZXN0IGVhcm5lZCBmcm9tIHRoZSBDRCBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+Q0QgVGVybTo8L3N0cm9uZz4gVGhlIGR1cmF0aW9uIG9yIHRlcm0gb2YgdGhlIENEIChlLmcuLCA2IG1vbnRocywgMSB5ZWFyKS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUHVyY2hhc2U6PC9zdHJvbmc+IFdoZW4geW91IG9yaWdpbmFsbHkgYWNxdWlyZWQgdGhlIENELjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWF0dXJpdHkgRGF0ZTo8L3N0cm9uZz4gV2hlbiB0aGUgQ0QgcmVhY2hlZCBvciB3aWxsIHJlYWNoIGl0cyBmdWxsIHRlcm0uPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz4xMDk5LUlOVCBGb3Jtczo8L3N0cm9uZz4gSWYgcmVjZWl2ZWQsIHBsZWFzZSBpbmNsdWRlIGNvcGllcyBvZiBhbnkgMTA5OS1JTlQgZm9ybXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBDRCBpbnRlcmVzdC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCBkb2N1bWVudHMuIFlvdSBtYXkgdXBsb2FkIHRoZSBkb2N1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwgb3IgcHJvdmlkZSB0aGVtIHZpYSBlbWFpbC48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJUYXggRXhlbXB0IEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGF4LWV4ZW1wdCBpbnRlcmVzdCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBwb3NzaWJseSBmcm9tIG11bmljaXBhbCBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUbyBhY2N1cmF0ZWx5IHByZXBhcmUgeW91ciB0YXggcmV0dXJucyBhbmQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0YXggcmVndWxhdGlvbnMsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlN0YXRlbWVudHMgb2YgVGF4LUV4ZW1wdCBJbnRlcmVzdDo8L3N0cm9uZz4gUGxlYXNlIHByb3ZpZGUgYWxsIDEwOTktSU5UIGZvcm1zIG9yIGVxdWl2YWxlbnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB5b3VyIHRheC1leGVtcHQgaW50ZXJlc3QgaW5jb21lIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIElzc3VpbmcgRW50aXRpZXM6PC9zdHJvbmc+IEEgbGlzdCBvciBzdGF0ZW1lbnQgaWRlbnRpZnlpbmcgdGhlIGVudGl0aWVzIHRoYXQgaXNzdWVkIHRoZSBib25kcyBvciBzaW1pbGFyIGludmVzdG1lbnRzLiBUaGlzIGluY2x1ZGVzIG11bmljaXBhbCwgc3RhdGUsIG9yIGZlZGVyYWwgZW50aXRpZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbnZlc3RtZW50IERldGFpbDo8L3N0cm9uZz4gQSBicmVha2Rvd24gb2YgdGhlIGludmVzdG1lbnRzIGNvbnRyaWJ1dGluZyB0byB0YXgtZXhlbXB0IGludGVyZXN0LiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBwdXJjaGFzZSBkYXRlLCBwdXJjaGFzZSBhbW91bnRzLCBhbmQgYW55IHJlbGF0ZWQgbWF0dXJpdHkgZGF0ZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Ccm9rZXJhZ2UgQWNjb3VudCBTdGF0ZW1lbnRzOjwvc3Ryb25nPiBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHRyYW5zYWN0aW9ucyBhbmQgaG9sZGluZ3MgaW4gdGF4LWV4ZW1wdCBpbnZlc3RtZW50cy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFNVCAoQWx0ZXJuYXRpdmUgTWluaW11bSBUYXgpIENvbnNpZGVyYXRpb246PC9zdHJvbmc+IElmIGF2YWlsYWJsZSwgZG9jdW1lbnRhdGlvbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW55IG9mIHRoZSB0YXgtZXhlbXB0IGludGVyZXN0IGlzIHN1YmplY3QgdG8gdGhlIEFsdGVybmF0aXZlIE1pbmltdW0gVGF4LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbiBhY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHRheCBwcmVwYXJhdGlvbiBwcm9jZXNzLiBQbGVhc2UgZm9yd2FyZCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgY29udGludWVkIGVmZm9ydCB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBiZXN0IHRheCBwcmVwYXJhdGlvbiBzZXJ2aWNlcywgd2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbmVjZXNzYXJ5IGRvY3VtZW50YXRpb24gcmVsYXRlZCB0byB0aGUgaW50ZXJlc3QgeW91IG1heSBoYXZlIHJlY2VpdmVkIGZyb20gcmVkZWVtaW5nIGFuIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L3A+XHJcblxyXG4gICAgPHA+VG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGVsaWdpYmlsaXR5IGZvciBleGVtcHRpb24gYW5kIHRvIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGhlIElSUywgd2Uga2luZGx5IHJlcXVlc3QgeW91IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiBGb3JtIDEwOTktSU5UIG9yIHNpbWlsYXIgc3RhdGVtZW50IHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24sIGluZGljYXRpbmcgdGhlIGFtb3VudCBvZiBpbnRlcmVzdCByZWNlaXZlZCBmcm9tIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgcmVjb3JkcyBvZiB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kcyByZWRlZW1lZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Cb25kIHNlcmlhbCBudW1iZXJzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Jc3N1ZSBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UmVkZW1wdGlvbiBkYXRlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW1vdW50czwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UmVjZWlwdHMgb3IgZG9jdW1lbnRhdGlvbiBmb3IgcXVhbGlmaWVkIGVkdWNhdGlvbmFsIGV4cGVuc2VzIHBhaWQgZHVyaW5nIHRoZSB5ZWFyLCBpbmNsdWRpbmc6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UdWl0aW9uIGFuZCBmZWVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3Vyc2UgbWF0ZXJpYWxzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5Bbnkgb3RoZXIgcmVxdWlyZWQgZXhwZW5zZXMgZm9yIGVucm9sbG1lbnQgb3IgYXR0ZW5kYW5jZSBhdCBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+UHJvb2Ygb2YgZW5yb2xsbWVudCBmcm9tIGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uIGZvciB0aGUgYmVuZWZpY2lhcnkgb2YgdGhlIGJvbmQuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSB0YXhhYmlsaXR5IG9mIHRoZSBpbnRlcmVzdCBpbmNvbWUgYW5kIHBvdGVudGlhbGx5IG1heGltaXppbmcgeW91ciB0YXggYmVuZWZpdHMuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBhbmQgcmVjb21tZW5kIGNvbXBpbGluZyB0aGVzZSBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3Qgb3VyIG9mZmljZSBkaXJlY3RseS48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHRydXN0IGluIG91ciBzZXJ2aWNlcy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGRpdmlkZW5kIGluY29tZSBvdmVyIHRoZSBwYXN0IHRheCB5ZWFyLiBUbyBlbnN1cmUgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhpcyBpbmNvbWUgYW5kIG9wdGltaXplIHlvdXIgdGF4IHNpdHVhdGlvbiwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIGFuZCBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5BbGwgMTA5OS1ESVYgZm9ybXMgcmVjZWl2ZWQgZnJvbSBjb3Jwb3JhdGlvbnMgb3IgbXV0dWFsIGZ1bmRzLiBUaGlzIGluY2x1ZGVzIGRpc3RyaWJ1dGlvbnMgb2YgY2FzaCwgc3RvY2ssIG9yIG90aGVyIHByb3BlcnR5LjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhcHBsaWNhYmxlLCBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgZm9yZWlnbiBkaXZpZGVuZHMgaW5jbHVkaW5nIHRoZSBhbW91bnQgaW4gZm9yZWlnbiBjdXJyZW5jeSwgdGhlIGNvdW50cnkgb2Ygb3JpZ2luLCBhbmQgYW55IGZvcmVpZ24gdGF4IHBhaWQuPC9saT5cclxuICAgICAgPGxpPkZvciBkaXZpZGVuZHMgcmVpbnZlc3RlZCwgcGxlYXNlIHByb3ZpZGUgc3RhdGVtZW50cyBvciBjb25maXJtYXRpb25zIHNob3dpbmcgdGhlc2UgdHJhbnNhY3Rpb25zLjwvbGk+XHJcbiAgICAgIDxsaT5Bbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgZGl2aWRlbmRzIG5vdCBjb3ZlcmVkIGJ5IGEgMTA5OS1ESVYuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFyIGFuZCBsZWdpYmxlIHRvIGF2b2lkIGFueSBwcm9jZXNzaW5nIGRlbGF5cy4gV2UgcmVjb21tZW5kIHNlY3VyZWx5IHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uIHRocm91Z2ggb3VyIGNsaWVudCBwb3J0YWwgb3IgYXJyYW5naW5nIGEgc2VjdXJlIGVtYWlsIHRyYW5zbWlzc2lvbi48L3A+XHJcbiAgICA8cD5Zb3VyIHByb21wdCByZXNwb25zZSBpcyBhcHByZWNpYXRlZCBhcyBpdCB3aWxsIGhlbHAgdXMgaW4gY29tcGxldGluZyB5b3VyIHRheCBwcmVwYXJhdGlvbnMgZWZmaWNpZW50bHkuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBjbGFyaWZpY2F0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNwb3NlZCBDYXBpdGFsIEFzc2V0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzcG9zZWQgQ2FwaXRhbCBBc3NldHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgaW5kaWNhdGVkIGRpc3Bvc2luZyBvZiBjYXBpdGFsIGFzc2V0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgdGF4IGltcGxpY2F0aW9ucyBhbmQgZW5zdXJlIHlvdXIgdGF4IGZpbGluZ3MgYXJlIGNvbXBsZXRlIGFuZCBjb21wbGlhbnQsIHdlIHJlcXVpcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkRlc2NyaXB0aW9uIG9mIGVhY2ggZGlzcG9zZWQgYXNzZXQ6PC9iPiBJbmNsdWRlIHRoZSB0eXBlIG9mIGFzc2V0IChlLmcuLCByZWFsIGVzdGF0ZSwgc3RvY2tzLCBib25kcykuPC9saT5cclxuICAgICAgICA8bGk+PGI+RGF0ZSBvZiBhY3F1aXNpdGlvbjo8L2I+IFRoZSBwdXJjaGFzZSBkYXRlIG9yIHRoZSBkYXRlIHlvdSBvcmlnaW5hbGx5IGNhbWUgaW50byBwb3NzZXNzaW9uIG9mIGVhY2ggYXNzZXQuPC9saT5cclxuICAgICAgICA8bGk+PGI+QWNxdWlzaXRpb24gY29zdDo8L2I+IFRoZSBvcmlnaW5hbCBwdXJjaGFzZSBwcmljZSBvciBjb3N0IGJhc2lzIG9mIGVhY2ggYXNzZXQsIGluY2x1ZGluZyBhbnkgaW1wcm92ZW1lbnRzIG1hZGUuPC9saT5cclxuICAgICAgICA8bGk+PGI+RGF0ZSBvZiBkaXNwb3NhbDo8L2I+IFRoZSBzcGVjaWZpYyBkYXRlIG9uIHdoaWNoIGVhY2ggYXNzZXQgd2FzIHNvbGQsIGV4Y2hhbmdlZCwgb3Igb3RoZXJ3aXNlIGRpc3Bvc2VkIG9mLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlNhbGUgb3IgZGlzcG9zYWwgcHJvY2VlZHM6PC9iPiBUaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gdGhlIGRpc3Bvc2FsIG9mIHRoZSBhc3NldC48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5Bc3NvY2lhdGVkIGV4cGVuc2VzOjwvYj4gQW55IGNvc3RzIGluY3VycmVkIGRpcmVjdGx5IGZyb20gdGhlIHNhbGUgb3IgZGlzcG9zYWwgcHJvY2Vzcywgc3VjaCBhcyBicm9rZXIncyBmZWVzLCBhZHZlcnRpc2luZywgbGVnYWwgZmVlcywgZXRjLjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPlJlYXNvbiBmb3IgZGlzcG9zYWw6PC9iPiBCcmllZmx5IGRlc2NyaWJlIHRoZSByZWFzb24gYmVoaW5kIHRoZSBkaXNwb3NhbCBvZiB0aGUgYXNzZXQsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGNhbGN1bGF0aW5nIHBvdGVudGlhbCBjYXBpdGFsIGdhaW5zIG9yIGxvc3NlcyBhbmQgZGV0ZXJtaW5pbmcgdGhlaXIgaW1wYWN0IG9uIHlvdXIgdGF4IG9ibGlnYXRpb25zLiBQbGVhc2UgYXR0YWNoIGFueSBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMgc2FsZXMgcmVjZWlwdHMsIGRlZWRzLCBjb250cmFjdHMsIG9yIGJyb2tlcmFnZSBzdGF0ZW1lbnRzLCB0byBzdWJzdGFudGlhdGUgdGhlIGRldGFpbHMgcHJvdmlkZWQuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGFyZSBoZXJlIHRvIGFzc2lzdCB3aXRoIGFueSBxdWVzdGlvbnMgeW91IG1heSBoYXZlLiBZb3UgY2FuIHJlYWNoIHVzIHZpYSBlbWFpbCBvciBwaG9uZSBmb3IgZnVydGhlciBkaXNjdXNzaW9uLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbi48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNdXR1YWwgRnVuZCBHYWluXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJNdXR1YWwgRnVuZCBHYWluXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5JbiBvcmRlciB0byBhY2N1cmF0ZWx5IHJlcG9ydCB5b3VyIG11dHVhbCBmdW5kIGVhcm5pbmdzIG9uIHlvdXIgdGF4IHJldHVybiwgYXMgcGVyIHlvdXIgaW5kaWNhdGlvbiBvZiByZWNlaXZpbmcgZ2FpbnMgZnJvbSBhIG11dHVhbCBmdW5kIG9yIHNpbWlsYXIgaW52ZXN0bWVudCwgd2UgcmVxdWlyZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1ESVYgRm9ybTo8L3N0cm9uZz4gVGhpcyBmb3JtIGlzIGNydWNpYWwgYXMgaXQgcHJvdmlkZXMgZGV0YWlscyBvbiBkaXZpZGVuZHMgYW5kIGRpc3RyaWJ1dGlvbnMgeW91IHJlY2VpdmVkIGZyb20geW91ciBtdXR1YWwgZnVuZCBpbnZlc3RtZW50cy4gUGxlYXNlIGVuc3VyZSB0byBwcm92aWRlIHRoaXMgZm9ybSBpZiB5b3VyIG11dHVhbCBmdW5kIGVhcm5pbmdzIHdlcmUgcmVwb3J0ZWQgb24gaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5TdGF0ZW1lbnQgb2YgQWNjb3VudDo8L3N0cm9uZz4gVGhpcyBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiBhbGwgdHJhbnNhY3Rpb25zIHdpdGhpbiB5b3VyIGFjY291bnQsIGluY2x1ZGluZyBwdXJjaGFzZXMsIHJlZGVtcHRpb25zLCBhbmQgcmVpbnZlc3RlZCBkaXZpZGVuZHMgd2hpY2ggaGVscCB1cyB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHlvdXIgZ2FpbnMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5ZZWFyLUVuZCBTdW1tYXJ5Ojwvc3Ryb25nPiBPZnRlbiBtdXR1YWwgZnVuZHMgcHJvdmlkZSBhIHllYXItZW5kIHN1bW1hcnkgdG8gdGhlaXIgaW52ZXN0b3JzLiBUaGlzIHN1bW1hcnkgY2FuIGJlIHZlcnkgaGVscGZ1bCBpbiBwcmVwYXJpbmcgeW91ciB0YXhlcyBhcyBpdCBjb25zb2xpZGF0ZXMgYWxsIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudHM6PC9zdHJvbmc+IFRoaXMgY291bGQgaW5jbHVkZSBhZGRpdGlvbmFsIDEwOTkgZm9ybXMgKGxpa2UgMTA5OS1CIGlmIGFueSBzYWxlcyBvY2N1cnJlZCksIG9yaWdpbmFsIGludmVzdG1lbnQgc3RhdGVtZW50cywgb3IgYW55dGhpbmcgZWxzZSB0aGF0IGNvdWxkIGltcGFjdCB5b3VyIHRheCBzaXR1YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cyBtYXkgcmVxdWlyZSBzb21lIHRpbWUsIGhvd2V2ZXIsIGhhdmluZyB0aGVzZSByZWFkaWx5IGF2YWlsYWJsZSB3aWxsIGVuc3VyZSB0aGUgYWNjdXJhY3kgYW5kIGVmZmljaWVuY3kgb2YgeW91ciB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gWW91ciBwcm9tcHQgcmVzcG9uc2Ugd2lsbCBiZSBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgZGlmZmljdWx0aWVzIG9idGFpbmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNdXR1YWwgRnVuZCBEaXNwb3NhbFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiTXV0dWFsIEZ1bmQgRGlzcG9zYWxcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UndmUgbWFkZSBhIGRpc3Bvc2FsIG9mIHNoYXJlcyBpbiBhIG11dHVhbCBmdW5kIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wYWN0IGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlZCBhY2N1cmF0ZWx5LCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgPHN0cm9uZz4xMDk5LUIgZm9ybTwvc3Ryb25nPiBhc3NvY2lhdGVkIHdpdGggdGhlIG11dHVhbCBmdW5kIGRpc3Bvc2FsLCBpZiBhdmFpbGFibGUuIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgZGV0YWlscyBvbiB0aGUgc2FsZSBvZiB5b3VyIHNoYXJlcy48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCA8c3Ryb25nPnJlY29yZCBvZiB0aGUgcHVyY2hhc2U8L3N0cm9uZz4gb2YgdGhlIG11dHVhbCBmdW5kIHNoYXJlcyBpbmNsdWRpbmcgdGhlIHB1cmNoYXNlIGRhdGUgYW5kIGNvc3QgYmFzaXMuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgY2FsY3VsYXRpbmcgYW55IGNhcGl0YWwgZ2FpbiBvciBsb3NzLjwvbGk+XHJcbiAgICAgICAgPGxpPklmIHRoZSAxMDk5LUIgZm9ybSBpcyBub3QgYXZhaWxhYmxlLCBwbGVhc2UgcHJvdmlkZSBhbnkgPHN0cm9uZz5icm9rZXJhZ2Ugc3RhdGVtZW50czwvc3Ryb25nPiBvciBvdGhlciBkb2N1bWVudGF0aW9uIHRoYXQgc2hvd3MgdGhlIGRpc3Bvc2FsIG9mIHRoZSBtdXR1YWwgZnVuZCBzaGFyZXMsIGluY2x1ZGluZyB0aGUgc2FsZSBkYXRlIGFuZCBhbW91bnQuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPHN0cm9uZz5yZWludmVzdGVkIGRpdmlkZW5kczwvc3Ryb25nPiBvciBjYXBpdGFsIGdhaW5zIGRpc3RyaWJ1dGlvbnMsIGFzIHRoZXNlIGNhbiBhZGp1c3QgeW91ciBjb3N0IGJhc2lzIGFuZCBhZmZlY3QgdGhlIGNhbGN1bGF0aW9uIG9mIHlvdXIgY2FwaXRhbCBnYWluIG9yIGxvc3MuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5IYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIGVuc3VyaW5nIHRoYXQgd2UgYWNjdXJhdGVseSByZXBvcnQgdGhlIGRpc3Bvc2FsIG9mIHlvdXIgbXV0dWFsIGZ1bmQgc2hhcmVzIGFuZCBhY2N1cmF0ZWx5IGNhbGN1bGF0ZSBhbnkgcG90ZW50aWFsIGNhcGl0YWwgZ2FpbnMgb3IgbG9zc2VzLiBUaGlzIHdpbGwgYWxzbyBoZWxwIHVzIHRvIG9wdGltaXplIHlvdXIgdGF4IGxpYWJpbGl0eSBmb3IgdGhlIHllYXIuPC9wPlxyXG4gICAgPHA+U2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgYWJvdXQgZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuIFdlJ3JlIGhlcmUgdG8gaGVscCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoZSBwcm9jZXNzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIldhc2ggU2FsZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiV2FzaCBTYWxlIFRyYW5zYWN0aW9uXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIFdhc2ggU2FsZSB0cmFuc2FjdGlvbi4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBhY3QgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxlZCB0cmFuc2FjdGlvbiByZWNvcmRzPC9zdHJvbmc+IC0gUGxlYXNlIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdGhlIHNlY3VyaXR5IHRoYXQgd2FzIHNvbGQgYW5kIHRoZW4gcmVwdXJjaGFzZWQsIGluY2x1ZGluZyBkYXRlcyBhbmQgYW1vdW50cyBmb3IgZWFjaCB0cmFuc2FjdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvc3QgYmFzaXMgZm9yIHJlcHVyY2hhc2VkIHNlY3VyaXR5PC9zdHJvbmc+IC0gRGV0YWlscyBvZiB0aGUgY29zdCBiYXNpcyBmb3IgdGhlIHNlY3VyaXRpZXMgcmVwdXJjaGFzZWQgd2l0aGluIGEgNjEtZGF5IHdpbmRvdyAoMzAgZGF5cyBiZWZvcmUgdG8gMzAgZGF5cyBhZnRlciB0aGUgc2FsZSkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BY2NvdW50IHN0YXRlbWVudHM8L3N0cm9uZz4gLSBDb3BpZXMgb2YgeW91ciBicm9rZXJhZ2UgYWNjb3VudCBzdGF0ZW1lbnRzIHNob3dpbmcgdGhlIHRyYW5zYWN0aW9ucyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkxvc3NlcyByZWFsaXplZDwvc3Ryb25nPiAtIERvY3VtZW50YXRpb24gb2YgYW55IGxvc3NlcyByZWFsaXplZCBmcm9tIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBjb3JyZXNwb25kZW5jZTwvc3Ryb25nPiAtIENvcnJlc3BvbmRlbmNlIGZyb20gYnJva2VycyBvciBmaW5hbmNpYWwgYWR2aXNvcnMgcmVnYXJkaW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCB0aGUgZG9jdW1lbnRzIGFyZSBvcmdhbml6ZWQgYW5kIGNsZWFybHkgbGFiZWxlZCBmb3IgZWFjaCB0cmFuc2FjdGlvbi4gVGhpcyB3aWxsIGZhY2lsaXRhdGUgYSBzbW9vdGhlciBhbmQgcXVpY2tlciB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5VbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBXYXNoIFNhbGUgdHJhbnNhY3Rpb24gaXMgY3J1Y2lhbCBmb3IgdXMgdG8gcHJvdmlkZSBhY2N1cmF0ZSB0YXggYWR2aWNlIGFuZCBwcmVwYXJhdGlvbi4gRnVydGhlciwgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGFzc2lzdCBpbiBkZXRlcm1pbmluZyBob3cgdGhlIFdhc2ggU2FsZSBydWxlIGFmZmVjdHMgdGhlIGRlZHVjdGliaWxpdHkgb2YgYW55IGxvc3NlcyB5b3UgbWlnaHQgaGF2ZSBpbmN1cnJlZC48L3A+XHJcbiAgICA8cD5XZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gUGxlYXNlIHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gZW5zdXJlIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IGZpbGluZ3MuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gWW91ciBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlNvbGQgSG9tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiU29sZCBIb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgc29sZCBhIHBlcnNvbmFsIGhvbWUgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJlZ3VsYXRpb25zLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgU2FsZTo8L3N0cm9uZz4gVGhlIGNsb3NpbmcgZGF0ZSB3aGVuIHRoZSBzYWxlIHdhcyBvZmZpY2lhbGx5IGNvbXBsZXRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlNhbGUgUHJpY2U6PC9zdHJvbmc+IFRoZSB0b3RhbCBhbW91bnQgeW91IHJlY2VpdmVkIGZvciB0aGUgaG9tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNvc3QgQmFzaXM6PC9zdHJvbmc+IE9yaWdpbmFsIHB1cmNoYXNlIHByaWNlLCBwbHVzIGFueSBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgaG9tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IERldGFpbHM6PC9zdHJvbmc+IEFkZHJlc3MgYW5kIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnR5IHNvbGQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5NYWluIFJlc2lkZW5jZSBvciBOb3Q6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHRoaXMgd2FzIHlvdXIgbWFpbiByZXNpZGVuY2UgZm9yIGF0IGxlYXN0IHR3byBvZiB0aGUgbGFzdCBmaXZlIHllYXJzIHByaW9yIHRvIHRoZSBzYWxlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvZiBIb21lIEltcHJvdmVtZW50czo8L3N0cm9uZz4gUmVjZWlwdHMgb3IgcmVjb3JkcyBvZiBhbnkgbWFqb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIHByb3BlcnR5LCB3aGljaCBjYW4gYWZmZWN0IHRoZSBjb3N0IGJhc2lzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgVXNlOjwvc3Ryb25nPiBJZiBub3QgYWx3YXlzIHVzZWQgYXMgYSBwZXJzb25hbCBob21lLCBkZXRhaWxzIG9uIGFueSB1c2Ugb2YgdGhlIHByb3BlcnR5IGZvciByZW50YWwsIGJ1c2luZXNzLCBvciBvdGhlciBub24tcGVyc29uYWwgdXNlLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVsYXRlZCBFeHBlbnNlczo8L3N0cm9uZz4gQW55IGNvc3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FsZSwgc3VjaCBhcyBsZWdhbCBmZWVzLCByZWFsIGVzdGF0ZSBhZ2VudCBjb21taXNzaW9ucywgYW5kIGhvbWUgc3RhZ2luZyBleHBlbnNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3JpdGljYWwgZm9yIGRldGVybWluaW5nIHBvdGVudGlhbCB0YXggYmVuZWZpdHMgb3Igb2JsaWdhdGlvbnMuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gZW5zdXJlIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkluc3RhbGxtZW50IFNhbGUgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkluc3RhbGxtZW50IFNhbGUgUGF5bWVudHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgeW91J3ZlIHNvbGQgcHJvcGVydHkgdGhpcyB5ZWFyIHVuZGVyIGFuIGluc3RhbGxtZW50IHBsYW4uIFRvIGFjY3VyYXRlbHkgcmVwb3J0IHRoaXMgdHJhbnNhY3Rpb24gYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlNhbGUgQWdyZWVtZW50Ojwvc3Ryb25nPiBBIGNvcHkgb2YgdGhlIGNvbXBsZXRlIHNhbGUgYWdyZWVtZW50IGRldGFpbGluZyB0aGUgdGVybXMgb2YgdGhlIGluc3RhbGxtZW50IHNhbGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9wZXJ0eSBEZXNjcmlwdGlvbjo8L3N0cm9uZz4gQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHkgc29sZCAoZS5nLiwgbGFuZCwgYnVpbGRpbmcsIGVxdWlwbWVudCkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFNjaGVkdWxlOjwvc3Ryb25nPiBJbmZvcm1hdGlvbiBvbiB0aGUgcGF5bWVudCBzY2hlZHVsZSBhZ3JlZWQgdXBvbiwgaW5jbHVkaW5nIHRoZSBkYXRlcyBhbmQgYW1vdW50cyBvZiBlYWNoIGluc3RhbGxtZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QW1vdW50cyBSZWNlaXZlZDo8L3N0cm9uZz4gVG90YWwgYW1vdW50cyByZWNlaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFyLCBpbmNsdWRpbmcgZG93biBwYXltZW50IGFuZCBhbnkgaW5zdGFsbG1lbnQgcGF5bWVudHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QcmluY2lwYWwgJmFtcDsgSW50ZXJlc3QgQnJlYWtkb3duOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgYW1vdW50cyByZWNlaXZlZCBiZXR3ZWVuIHByaW5jaXBhbCBhbmQgaW50ZXJlc3QgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByb3BlcnR5IEJhc2lzOjwvc3Ryb25nPiBEb2N1bWVudGF0aW9uIHJlZ2FyZGluZyB0aGUgcHJvcGVydHkncyBvcmlnaW5hbCBjb3N0LCBpbXByb3ZlbWVudHMgbWFkZSwgYW5kIGFueSBkZXByZWNpYXRpb24gdGFrZW4gaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkV4cGVuc2UgRG9jdW1lbnRhdGlvbjo8L3N0cm9uZz4gQW55IHJlbGV2YW50IGV4cGVuc2VzIGluIHJlbGF0aW9uIHRvIHRoZSBzYWxlIHRoYXQgbWlnaHQgYmUgZGVkdWN0aWJsZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJ1eWVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBMZWdhbCBuYW1lIGFuZCBjb250YWN0IGRldGFpbHMgb2YgdGhlIGJ1eWVyLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGNhbGN1bGF0aW5nIGFueSBwcm9maXQgb3IgbG9zcyBmcm9tIHRoZSBzYWxlIGFuZCBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCB0YXggaW1wbGljYXRpb25zIG9mIHRoZSBpbnN0YWxsbWVudCBwYXltZW50cyByZWNlaXZlZC48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggcmV0dXJucy4gWW91IGNhbiB1cGxvYWQgdGhlIGRvY3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCBvciBlbWFpbCB0aGVtIHRvIHRheEBsZW5kYWhhbmRhY2NvdW50aW5nLmNvbS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiV29ydGhsZXNzIFNlY3VyaXRpZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIldvcnRobGVzcyBTZWN1cml0aWVzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5BcyB5b3UgaW5kaWNhdGVkIHRoYXQgeW91IGhhdmUgaGFkIGludmVzdG1lbnRzLCBzdWNoIGFzIHN0b2NrcyBvciBib25kcywgdGhhdCBiZWNhbWUgY29tcGxldGVseSB3b3J0aGxlc3MgdGhpcyB5ZWFyLCB3ZSBuZWVkIHRvIGdhdGhlciBzcGVjaWZpYyBpbmZvcm1hdGlvbiB0byBwcm9wZXJseSByZXBvcnQgdGhlc2Ugb24geW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRlc2NyaXB0aW9uIG9mIHRoZSBTZWN1cml0eTo8L3N0cm9uZz4gRnVsbCBuYW1lIGFuZCB0eXBlIG9mIGVhY2ggc2VjdXJpdHkgdGhhdCBiZWNhbWUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHVyY2hhc2UgRGV0YWlsczo8L3N0cm9uZz4gRGF0ZSBvZiBwdXJjaGFzZSBhbmQgdGhlIHB1cmNoYXNlIHByaWNlIGZvciBlYWNoIHNlY3VyaXR5LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+V29ydGhsZXNzbmVzcyBEZXRlcm1pbmF0aW9uIERhdGU6PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlIHdoZW4geW91IGRldGVybWluZWQgdGhlIHNlY3VyaXR5IHRvIGJlIHdvcnRobGVzcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIHlvdSByZWNlaXZlZCBvciB1c2VkIHRvIGRldGVybWluZSB0aGF0IHRoZSBpbnZlc3RtZW50cyBiZWNhbWUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QXR0ZW1wdHMgdG8gU2VsbCBvciBUcmFkZTo8L3N0cm9uZz4gQSBicmllZiBkZXNjcmlwdGlvbiBvZiBhbnkgYXR0ZW1wdHMgbWFkZSB0byBzZWxsIG9yIHRyYWRlIHRoZSBzZWN1cml0aWVzIGJlZm9yZSBkZXRlcm1pbmluZyB0aGV5IHdlcmUgd29ydGhsZXNzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+SW52ZXN0bWVudCBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGludmVzdG1lbnQgYWNjb3VudCBzdGF0ZW1lbnRzIHNob3dpbmcgdGhlIHdvcnRobGVzcyBzZWN1cml0aWVzIGFuZCB0aGVpciB2YWx1ZSBvdmVyIHRpbWUsIGxlYWRpbmcgdXAgdG8gdGhlaXIgZGVjbGFyZWQgd29ydGhsZXNzbmVzcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYWNjdXJhdGUgYW5kIHRpbWVseSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHJldHVybi4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uLjwvcD5gXHJcbiAgfSwgXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTZWN0aW9uIDEyNDQgQnVzaW5lc3MgU3RvY2tcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNlY3Rpb24gMTI0NCBCdXNpbmVzcyBTdG9ja1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIHJlYWNoaW5nIG91dCB0byBnYXRoZXIgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgc2FsZSBvZiBzaGFyZXMgaW4gYSBzbWFsbCBidXNpbmVzcyB3aGVyZSB5b3Ugd2VyZSBhbiBvcmlnaW5hbCBpbnZlc3Rvci4gQXMgeW91IGluZGljYXRlZCBhIGxvc3Mgb24gdGhpcyBpbnZlc3RtZW50LCBpdCdzIGNydWNpYWwgdG8gZXZhbHVhdGUgd2hldGhlciB0aGlzIHF1YWxpZmllcyBmb3Igc3BlY2lhbCB0YXggdHJlYXRtZW50IHVuZGVyIFNlY3Rpb24gMTI0NC4gVG8gYWNjdXJhdGVseSBhbmFseXplIGFuZCByZXBvcnQgdGhlc2UgYWN0aXZpdGllcywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPlRoZSA8c3Ryb25nPmNlcnRpZmljYXRlIG9mIGluY29ycG9yYXRpb248L3N0cm9uZz4gb3Igb3RoZXIgZG9jdW1lbnRhdGlvbiBjb25maXJtaW5nIHRoZSBzdG9jayBxdWFsaWZpZXMgYXMgU2VjdGlvbiAxMjQ0IHN0b2NrLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgPHN0cm9uZz5kZXRhaWxlZCBzdGF0ZW1lbnQ8L3N0cm9uZz4gb2YgdGhlIGludmVzdG1lbnQsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudCBhbmQgZGF0ZSBvZiB0aGUgb3JpZ2luYWwgaW52ZXN0bWVudC48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPk51bWJlciBvZiBzaGFyZXMgcHVyY2hhc2VkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+UHJvb2Ygb2YgYmVpbmcgYW4gb3JpZ2luYWwgaG9sZGVyLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIHRoZSBzYWxlPC9zdHJvbmc+LCBzcGVjaWZ5aW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+RGF0ZSBvZiBzYWxlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+TnVtYmVyIG9mIHNoYXJlcyBzb2xkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+U2FsZSBwcmljZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBhc3NvY2lhdGVkIGV4cGVuc2VzIHdpdGggdGhlIHNhbGUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5BIGJyaWVmIGV4cGxhbmF0aW9uIG9mIHRoZSBjaXJjdW1zdGFuY2VzIGxlYWRpbmcgdG8gdGhlIGxvc3MuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIHdpbGwgZW5hYmxlIHVzIHRvIGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGEgYmVuZWZpY2lhbCB0YXggdHJlYXRtZW50IHVuZGVyIFNlY3Rpb24gMTI0NCwgcG90ZW50aWFsbHkgbWluaW1pemluZyB5b3VyIHRheGFibGUgaW5jb21lLiBQbGVhc2Ugc3VibWl0IHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZW5zdXJlIHRpbWVseSBmaWxpbmcuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVsYXRlZCBQYXJ0eSBUcmFuc2FjdGlvbnNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlbGF0ZWQgUGFydHkgVHJhbnNhY3Rpb25zXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSByZWNlaXZlZCB5b3VyIHJlc3BvbnNlIGluZGljYXRpbmcgdGhhdCB0aGVyZSB3ZXJlIHRyYW5zYWN0aW9ucyB3aXRoIHJlbGF0ZWQgcGFydGllcyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGVzZSB0cmFuc2FjdGlvbnMgYW5kIGluY29ycG9yYXRlIHRoZW0gaW50byB5b3VyIHRheCBmaWxpbmdzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXNjcmlwdGlvbiBvZiB0aGUgVHJhbnNhY3Rpb25zOjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VHlwZSBvZiB0cmFuc2FjdGlvbnMgKGUuZy4sIHNhbGUsIHRyYWRlLCB0cmFuc2ZlciBvZiBwcm9wZXJ0eSBvciBpbnZlc3RtZW50cykuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5EYXRlKHMpIG9mIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRlc2NyaXB0aW9uIG9mIGl0ZW1zIG9yIHByb3BlcnRpZXMgdHJhbnNmZXJyZWQuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlBhcnRpZXMgSW52b2x2ZWQ6PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5OYW1lcyBhbmQgcmVsYXRpb25zaGlwcyB0byB5b3UgKGUuZy4sIGZhbWlseSBtZW1iZXIsIGZyaWVuZCwgb3IgYnVzaW5lc3MgZW50aXR5KS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklmIGEgYnVzaW5lc3MgZW50aXR5IGlzIGludm9sdmVkLCB5b3VyIGFuZCB5b3VyIGZhbWlseSdzIG93bmVyc2hpcCBwZXJjZW50YWdlIGluIHRoZSBidXNpbmVzcy48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmluYW5jaWFsIERldGFpbHMgb2YgdGhlIFRyYW5zYWN0aW9uczo8L3N0cm9uZz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPk1hcmtldCB2YWx1ZSBvZiBwcm9wZXJ0eSBvciBpbnZlc3RtZW50cyBhdCB0aGUgdGltZSBvZiB0cmFuc2FjdGlvbi48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudCByZWNlaXZlZCBvciBwYWlkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IGV4Y2hhbmdlIG9mIGdvb2RzLCBzZXJ2aWNlcywgb3Igb3RoZXIgYXNzZXRzLCBpbmNsdWRpbmcgdGhlaXIgZmFpciBtYXJrZXQgdmFsdWUuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb246PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Db3BpZXMgb2YgY29udHJhY3RzIG9yIGFncmVlbWVudHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWNlaXB0cyBvciBwcm9vZiBvZiBwYXltZW50L2V4Y2hhbmdlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QXBwcmFpc2FscyBvciB2YWx1YXRpb25zIG9mIHByb3BlcnR5IG9yIGludmVzdG1lbnRzLCBpZiBhcHBsaWNhYmxlLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNyaXRpY2FsIGZvciBlbnN1cmluZyBjb21wbGlhbmNlIHdpdGggdGF4IGxhd3MgcmVnYXJkaW5nIHJlbGF0ZWQgcGFydHkgdHJhbnNhY3Rpb25zIGFuZCBhdm9pZGluZyBhbnkgcG90ZW50aWFsIHBlbmFsdGllcyBvciBhdWRpdHMuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBjb21wbGV0aW9uIG9mIHlvdXIgdGF4IHByZXBhcmF0aW9ucy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1ub24tcmVjb2duaXRpb24tdHJhbnNmZXJzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zvcm0tbW9kZWxzL2ktbm9uLXJlY29nbml0aW9uLXRyYW5zZmVycy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTm9ucmVjb2duaXRpb25UcmFuc2ZlcnNNb2RlbCB7XHJcbiAgICBoYWRTZWN0aW9uMTIxSG9tZVNhbGU6IGJvb2xlYW47XHJcbiAgICBoYWRTZWN0aW9uMTAzMUV4Y2hhbmdlOiBib29sZWFuO1xyXG4gICAgaGFkU2VjdGlvbjEwMzNFeGNoYW5nZTogYm9vbGVhbjtcclxufSJdfQ==
@@ -9,9 +9,10 @@ export * from "./i-insurance-payments-model";
9
9
  export * from "./i-investment-income-model";
10
10
  export * from "./i-last-day-year-marital-status-model";
11
11
  export * from "./i-multiple-business-se-tax-model";
12
+ export * from "./i-non-recognition-transfers-model";
12
13
  export * from "./i-statutory-extensions-model";
13
14
  export * from "./i-taxable-self-employment-income-model";
14
15
  export * from "./i-taxpayer-bio-model";
15
16
  export * from "./i-veteran-benefits-model";
16
17
  export * from "./last-day-year-marital-statuses";
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ktYWRkcmVzcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhbm9uaWNhbC1yZXNpZGVuY3kubW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jbGVyZ3ktdGF4YXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1kZXBlbmRlbnRzLWZvcm0tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1mcmluZ2UtYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1lbXBsb3llZS1jb21wZW5zYXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnN1cmFuY2UtcGF5bWVudHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnZlc3RtZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWxhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1tdWx0aXBsZS1idXNpbmVzcy1zZS10YXgtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1zdGF0dXRvcnktZXh0ZW5zaW9ucy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheGFibGUtc2VsZi1lbXBsb3ltZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheHBheWVyLWJpby1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXZldGVyYW4tYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1c2VzXCI7XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaS1hZGRyZXNzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktY2Fub25pY2FsLXJlc2lkZW5jeS5tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhcGl0YWwtZ2FpbnMtbG9zcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNsZXJneS10YXhhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWRlcGVuZGVudHMtZm9ybS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWZyaW5nZS1iZW5lZml0cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWVtcGxveWVlLWNvbXBlbnNhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWluc3VyYW5jZS1wYXltZW50cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWludmVzdG1lbnQtaW5jb21lLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLW11bHRpcGxlLWJ1c2luZXNzLXNlLXRheC1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLW5vbi1yZWNvZ25pdGlvbi10cmFuc2ZlcnMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1zdGF0dXRvcnktZXh0ZW5zaW9ucy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheGFibGUtc2VsZi1lbXBsb3ltZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheHBheWVyLWJpby1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXZldGVyYW4tYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1c2VzXCI7XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export interface INonrecognitionTransfersModel {
2
+ hadSection121HomeSale: boolean;
3
+ hadSection1031Exchange: boolean;
4
+ hadSection1033Exchange: boolean;
5
+ }
@@ -9,6 +9,7 @@ export * from "./i-insurance-payments-model";
9
9
  export * from "./i-investment-income-model";
10
10
  export * from "./i-last-day-year-marital-status-model";
11
11
  export * from "./i-multiple-business-se-tax-model";
12
+ export * from "./i-non-recognition-transfers-model";
12
13
  export * from "./i-statutory-extensions-model";
13
14
  export * from "./i-taxable-self-employment-income-model";
14
15
  export * from "./i-taxpayer-bio-model";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonoustech/bacon-tax",
3
- "version": "2.5.28",
3
+ "version": "2.5.29",
4
4
  "scripts": {
5
5
  "build:cjs": "tsc -p tsconfig.cjs.json",
6
6
  "build:es": "tsc -p tsconfig.es.json",
@@ -36,5 +36,5 @@
36
36
  "bugs": {
37
37
  "url": "https://github.com/AdonousTech/bacon-tax/issues"
38
38
  },
39
- "gitHead": "0e48f4aea987c91d7922691bd66781e5916411e9"
39
+ "gitHead": "cba44c9c203b07a4fc9080d0a34de293fecab1e7"
40
40
  }
@@ -438,7 +438,7 @@ export const ActionTaxFragments = [
438
438
  {
439
439
  actionTaxSubject: "Disposed Capital Assets",
440
440
  actionTitle: "Disposed Capital Assets",
441
- actionInstructions: `<p>We understand that you've indicated disposing of capital assets during the last tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>
441
+ actionInstructions: `<p>We understand that you've indicated disposing of capital assets during the tax year. To accurately assess the tax implications and ensure your tax filings are complete and compliant, we require detailed information regarding these transactions.</p>
442
442
  <p>Please provide the following details at your earliest convenience:</p>
443
443
  <ol>
444
444
  <li><b>Description of each disposed asset:</b> Include the type of asset (e.g., real estate, stocks, bonds).</li>
@@ -464,7 +464,7 @@ export const ActionTaxFragments = [
464
464
  <li><strong>Any other relevant documents:</strong> This could include additional 1099 forms (like 1099-B if any sales occurred), original investment statements, or anything else that could impact your tax situation.</li>
465
465
  </ol>
466
466
  <p>We understand that gathering these documents may require some time, however, having these readily available will ensure the accuracy and efficiency of your tax preparation process. Your prompt response will be greatly appreciated.</p>
467
- <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact me.</p>`
467
+ <p>If you have any questions or difficulties obtaining these documents, please do not hesitate to contact us.</p>`
468
468
  },
469
469
  {
470
470
  actionTaxSubject: "Mutual Fund Disposal",
@@ -0,0 +1,5 @@
1
+ export interface INonrecognitionTransfersModel {
2
+ hadSection121HomeSale: boolean;
3
+ hadSection1031Exchange: boolean;
4
+ hadSection1033Exchange: boolean;
5
+ }
@@ -9,6 +9,7 @@ export * from "./i-insurance-payments-model";
9
9
  export * from "./i-investment-income-model";
10
10
  export * from "./i-last-day-year-marital-status-model";
11
11
  export * from "./i-multiple-business-se-tax-model";
12
+ export * from "./i-non-recognition-transfers-model";
12
13
  export * from "./i-statutory-extensions-model";
13
14
  export * from "./i-taxable-self-employment-income-model";
14
15
  export * from "./i-taxpayer-bio-model";