tango-app-ui-auth 3.0.10-dev → 3.0.12-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/tango-auth-login/tango-auth-login.component.mjs +4 -4
- package/esm2022/lib/components/tango-auth-signup/step/step2/step2.component.mjs +4 -4
- package/esm2022/lib/components/tango-auth-signup/step/step3/step3.component.mjs +1 -1
- package/esm2022/lib/tango-auth.module.mjs +1 -1
- package/fesm2022/tango-app-ui-auth.mjs +6 -6
- package/fesm2022/tango-app-ui-auth.mjs.map +1 -1
- package/package.json +1 -1
@@ -232,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
232
232
|
type: ViewChild,
|
233
233
|
args: ['ngOtpInput']
|
234
234
|
}] } });
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAzL3N0ZXAzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFXM0MsTUFBTSxPQUFPLGNBQWM7SUFzRGhCO0lBQWdDO0lBQWlDO0lBQXVCO0lBQThCO0lBckQvSCxVQUFVLEdBQVcsRUFBRSxDQUFDLENBQUMsc0JBQXNCO0lBQy9DLFFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBQyx3QkFBd0I7SUFDbkQsU0FBUyxHQUFZLEtBQUssQ0FBQyxDQUFDLHVCQUF1QjtJQUNuRCxVQUFVLEdBQVksS0FBSyxDQUFDLENBQUMsMEJBQTBCO0lBQ3ZELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBQ0Msd0NBQXdDO0lBQ3hDLGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFSCwyQ0FBMkM7SUFDM0MsY0FBYztRQUNaLElBQUksTUFBTSxHQUFnQixFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7UUFD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Q0ksYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbnRlcmZhY2UgSW5wdXRTdHlsZXMge1xyXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZzsgLy8gRGVmaW5lIGtleS12YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzdHJpbmdzIGFuZCB2YWx1ZXMgYXJlIHN0cmluZ3NcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdGVwMycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RlcDMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGVwM0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJzsgLy8gSW5pdGlhbCBpbnB1dCB2YWx1ZVxyXG4gIGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgZm9yIGFjdGl2ZSBzdGF0ZVxyXG4gIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBGbGFnIGZvciBob3ZlciBzdGF0ZVxyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRmxhZyBmb3IgZGlzYWJsZWQgc3RhdGVcclxuICBvbk1vdXNlRW50ZXIoKSB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBoYW5kbGUgbW91c2UgbGVhdmUgZXZlbnRcclxuICBvbk1vdXNlTGVhdmUoKSB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xyXG4gIH1cclxuICAgIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSBpbnB1dCBjaGFuZ2UgZXZlbnRcclxuICAgIG9uSW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gZ2V0IGlucHV0IHN0eWxlcyBkeW5hbWljYWxseVxyXG4gIGdldElucHV0U3R5bGVzKCk6IElucHV0U3R5bGVzIHtcclxuICAgIGxldCBzdHlsZXM6IElucHV0U3R5bGVzID0ge307IC8vIERlZmluZSBzdHlsZXMgb2JqZWN0IHdpdGggdHlwZSBJbnB1dFN0eWxlc1xyXG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICdibHVlJzsgLy8gQm9yZGVyIGNvbG9yIHdoZW4gaW5wdXQgaXMgYWN0aXZlXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNIb3ZlcmVkKSB7XHJcbiAgICAgIHN0eWxlc1snYm9yZGVyLWNvbG9yJ10gPSAnZ3JlZW4nOyAvLyBCb3JkZXIgY29sb3Igd2hlbiBpbnB1dCBpcyBob3ZlcmVkXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICBzdHlsZXNbJ2JvcmRlci1jb2xvciddID0gJyNjY2MnOyAvLyBCb3JkZXIgY29sb3Igd2hlbiBpbnB1dCBpcyBkaXNhYmxlZFxyXG4gICAgICBzdHlsZXNbJ2NvbG9yJ10gPSAnIzk5OSc7IC8vIFRleHQgY29sb3Igd2hlbiBpbnB1dCBpcyBkaXNhYmxlZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICcjY2NjJzsgLy8gRGVmYXVsdCBib3JkZXIgY29sb3JcclxuICAgICAgc3R5bGVzWydjb2xvciddID0gJyMzMzMnOyAvLyBEZWZhdWx0IHRleHQgY29sb3JcclxuICAgIH1cclxuICAgIHJldHVybiBzdHlsZXM7XHJcbiAgfVxyXG4gIHBhbmVsT3BlblN0YXRlID0gZmFsc2U7XHJcbiAgdGVybXNhbmRjb25kaXRpb246IGFueTtcclxuICB0eXBlOiBhbnk7XHJcbiAgYWNjb3VudERhdGE6IGFueTtcclxuICB0ZXJtczogYW55O1xyXG4gIGlkdmFsdWU6IGFueTtcclxuICBlbWFpbDogYW55O1xyXG4gIHNob3d2YWx1ZTogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbmdPdHBJbnB1dCcpIG5nT3RwSW5wdXRSZWY6IGFueTtcclxuICBjb3VudGVyOiBudW1iZXI7XHJcbiAgdGljazogbnVtYmVyO1xyXG4gIHJlc2VuZDogYm9vbGVhbiA9dHJ1ZTtcclxuICBjb3VudERvd246IGFueTtcclxuICBvdHA6IGFueTtcclxuICBhYm91dEZvcm1EYXRhOiBhbnk7XHJcbiAgcHJpY2luZ0Zvcm1EYXRhOiBhbnk7XHJcbiAgcmV0dXJuVXJsOiBhbnk7XHJcbiAgaW52YWxpZE90cDpib29sZWFuID0gZmFsc2VcclxuICBzdWJzY3JpcHRpb25zOlN1YnNjcmlwdGlvbltdID0gW11cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGF1dGhTZXJ2aWNlOkF1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsIHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWZcclxuKXtcclxuICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmF1dGhTZXJ2aWNlLmFib3V0Rm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMuYWJvdXRGb3JtRGF0YSA9IGRhdGF9fSkpXHJcbiAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hdXRoU2VydmljZS5wcmljaW5nRm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMucHJpY2luZ0Zvcm1EYXRhID0gZGF0YX19KSlcclxufVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbik9PntcclxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gZ2V0IHJldHVybiB1cmwgZnJvbSByb3V0ZSBwYXJhbWV0ZXJzIG9yIGRlZmF1bHQgdG8gJy8nXHJcbiAgdGhpcy5yZXR1cm5VcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydyZXR1cm5VcmwnLnRvU3RyaW5nKCldIHx8ICcvJzsgICAgICBcclxufVxyXG4gIHVwZGF0ZXRlcm1zKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLnRlcm1zID0gZXZ0LnRhcmdldC5jaGVja2VkXHJcbiAgfVxyXG5cclxuICBlbnRlcnByaXNlYWN0aXZhdGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOnRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICBlbWFpbDp0aGlzLmFib3V0Rm9ybURhdGE/LmNvcnBvcmF0ZUVtYWlsXHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNlbmRTaWdudXBPdHAoZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RG93biA9IHRpbWVyKDAsIHRoaXMudGljaykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50RG93bi51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdvdmVybGF5LW9wZW4nKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93dmFsdWUgPXRydWUgXHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjoocmVzKT0+e1xyXG4gICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICB0aGlzLnRpY2sgPSAxMDAwO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICBcclxuICAgICAgICAgIHRoaXMuY291bnREb3duID0gdGltZXIoMCwgdGhpcy50aWNrKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duLnVuc3Vic2NyaWJlKClcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLmNvdW50ZXIgLSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ292ZXJsYXktb3BlbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPXRydWUgXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgcmVzZW5kT1RQKCkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIG5hbWU6dGhpcy5hYm91dEZvcm1EYXRhPy5maXJzdE5hbWUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYWJvdXRGb3JtRGF0YT8uY29ycG9yYXRlRW1haWxcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2VuZFNpZ251cE90cChkYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIHtcclxuICAgICAgICBuZXh0OihyZXMpPT57XHJcbiAgICAgICAgICBpZihyZXMpe1xyXG4gICAgICAgICAgICB0aGlzLm5nT3RwSW5wdXRSZWYuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSA2MDtcclxuICAgICAgICAgICAgdGhpcy50aWNrID0gMTAwMDtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLnJlc2VuZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMuY291bnREb3duID0gdGltZXIoMCwgdGhpcy50aWNrKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY291bnRlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duLnVuc3Vic2NyaWJlKClcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gdGhpcy5jb3VudGVyIC0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6KHJlcyk9PntcclxuICAgICAgICAgIHRoaXMubmdPdHBJbnB1dFJlZi5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50ZXIgPSA2MDtcclxuICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnJlc2VuZCA9IGZhbHNlO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5jb3VudERvd24gPSB0aW1lcigwLCB0aGlzLnRpY2spLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY291bnRlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd24udW5zdWJzY3JpYmUoKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICAgIClcclxuICB9XHJcbiAgb3Rwc3VibWl0KCl7XHJcbiAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnROYW1lOiB0aGlzLmFib3V0Rm9ybURhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICBmaXJzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICAgbGFzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8ubGFzdE5hbWUsXHJcbiAgICAgICBjb3Jwb3JhdGVFbWFpbDogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3Jwb3JhdGVFbWFpbCxcclxuICAgICAgIG1vYmlsZU51bWJlcjogdGhpcy5hYm91dEZvcm1EYXRhPy5tb2JpbGVOdW1iZXIsXHJcbiAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3VudHJ5Q29kZSxcclxuICAgICAgIHBhc3N3b3JkOiB0aGlzLmFib3V0Rm9ybURhdGE/LnBhc3N3b3JkLFxyXG4gICAgICAgdG90YWxTdG9yZXM6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy50b3RhbFN0b3Jlcy52YWx1ZSxcclxuICAgICAgIHN0b3JlU2l6ZTp0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3RvcmVTaXplLnZhbHVlLFxyXG4gICAgICAgdG90YWxDYW1lcmE6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdG9yZVNpemU/LmNhbWVyYXMsXHJcbiAgICAgICBzdWJzY3JpcHRpb25QZXJpb2Q6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdWJzY3JpcHRpb25QZXJpb2QsXHJcbiAgICAgICBzdWJzY3JpcHRpb25UeXBlOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3Vic2NyaXB0aW9uVHlwZSxcclxuICAgICAgIHByb2R1Y3Q6IHRoaXMuZ2V0VHJ1ZUtleXModGhpcy5wcmljaW5nRm9ybURhdGE/LnByb2R1Y3QpLFxyXG4gICAgICAgIG90cDp0aGlzLm90cFxyXG4gICB9XHJcblxyXG4gICB0aGlzLmF1dGhTZXJ2aWNlLnNpZ251cChkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICBpZihyZXMpe1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuYWJvdXRGb3JtRGF0YS5uZXh0KG51bGwpXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wcmljaW5nRm9ybURhdGEubmV4dChudWxsKVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNMb2dnZWRJbicsICd0cnVlJylcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJldHVyblVybClcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvdmVybGF5LW9wZW4nKTtcclxuICAgICAgdGhpcy5zaG93dmFsdWUgPWZhbHNlIFxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9XHJcbiAgICAgfSxcclxuICAgICBlcnJvcjoocmVzKT0+e1xyXG4gICAgICBpZihyZXMpe1xyXG4gICAgICB0aGlzLmludmFsaWRPdHAgPSB0cnVlXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgICB9LFxyXG4gICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9uT3RwQ2hhbmdlKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLmludmFsaWRPdHAgPSBmYWxzZVxyXG4gICAgdGhpcy5vdHAgPSBldmVudFxyXG4gIH1cclxuXHJcbiAgZ2V0VHJ1ZUtleXMob2JqOiBhbnkpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihrZXkgPT4gb2JqW2tleV0gPT09IHRydWUpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICBjbGFzcz1cImNhcmQgbXQtMTAgbXgtMTVcIj5cclxuPGRpdiBpZD1cImt0X2NvbnRlbnRfY29udGFpbmVyXCIgY2xhc3M9XCJjb250YWluZXIteHhsIGZvbnQgaC0xMDAgIG14LTEwIHBlLTE1IG15LTdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoLTU1MHB4IHN0aWNreVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtbWQtMTIgY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci0wIG10LTUgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluIGZzLWxnLTEgbWItNCB0ZXh0LWdyYXktODAwXCI+U2FhUyBURVJNUyBBTkQgQ09ORElUSU9OUzwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgdGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBtZS0xIHN1YlwiPlRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIChoZXJlaW5hZnRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDigJxTQUFTIFRlcm1z4oCdKSBzaGFsbCBnb3Zlcm4geW91ciAo4oCcVXNlcuKAnSBvciDigJxZb3XigJ0gb3Ig4oCcWW91cuKAnSBvciDigJxDdXN0b21lcuKAnSkgdXNlIG9mIFRhbmdvIEV5ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBhbmFseXRpY3MgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzcyBpbnRlbGxpZ2VuY2Ugc29mdHdhcmUgKGNvbGxlY3RpdmVseSByZWZlcnJlZCB0byBhcyDigJxTb2Z0d2FyZeKAnSkgd2hpY2ggaXMgYWNjZXNzaWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIEN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIFRhbmdvIEV5ZSB3ZWJzaXRlIGh0dHBzOi8vcmV0YWlsLnRhbmdvZXllLmFpL2F1dGgvbG9naW4gKFdlYnNpdGUpLiBCeSBhY2Nlc3Npbmcgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBTb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgV2Vic2l0ZSwgWW91IGluIHlvdXIgaW5kaXZpZHVhbCBjYXBhY2l0eSBhbmQgb3IgaWYgeW91IGFyZSByZXByZXNlbnRpbmcgYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eSB0aGVuIFlvdSBhbmQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgWW91IGFyZSBhdXRob3JpemVkIHRvIHJlcHJlc2VudCBzaWduaWZ5IHlvdXIgYWdyZWVtZW50IHRvIGJlIGJvdW5kIGJ5IHRoZXNlIFNhYVNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zIG9mIHVzZSB3aGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY3VyaW5nIHRoZSBTZXJ2aWNlcyBmcm9tIFRhbmdvLiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIHRleHQtbXV0ZWQgZnctc2VtaWJvbGQgbWUtMSBteS01IHN1YlwiPlRhbmdvIEV5ZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5LCBhbWVuZCwgdXBkYXRlLCBzdXNwZW5kIG9yIGRpc2NvbnRpbnVlIHRoZSB3aG9sZSBvciBhbnkgcG9ydGlvbiBvZiB0aGUgU2VydmljZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJzaXRlIG9yIHRoZSBTYWFTIFRlcm1zIGF0IGFueSB0aW1lLiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LWxnLTJcIj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYWxpZ24tanVzdGlmeVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xLiBEZWZpbml0aW9uIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IOKAnE1haW50ZW5hbmNlIFNlcnZpY2Vz4oCdIG1lYW5zIHRoZSBzdXBwb3J0IGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2Ugc2VydmljZXMgcHJvdmlkZWQgYnkgVGFuZ28gRXllIHRvIEN1c3RvbWVyIHB1cnN1YW50IHRvIHRoZXNlIFNhYVMgVGVybXMgYW5kIG1vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBkZXRhaWxlZCBvdXQgdW5kZXIgQW5uZXh1cmUgQS4gPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcU29mdHdhcmXigJ0gbWVhbnMgdGhlIGRhdGEgYW5hbHl0aWNzIGFuZCBidXNpbmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxsaWdlbmNlIHNvZnR3YXJlIGFuZCBpdHMgb2JqZWN0IGNvZGUgdmVyc2lvbiB3aGljaCBlbmFibGVzIHRoZSBDdXN0b21lciB0byBpZGVudGlmeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb25nc3Qgb3RoZXJzLCBjdXN0b21lciBmb290ZmFsbHMsIGRlbW9ncmFwaGljcywgaWRlbnRpZnkgbWlzc2VkIG9wcG9ydHVuaXRpZXMsIGluY2x1ZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IHVwZGF0ZXMgb3IgbmV3IHZlcnNpb25zLjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IOKAnFNlcnZpY2Vz4oCdIHJlZmVyIHRvIHRoZSBpbi1zdG9yZSBBSSBkcml2ZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuYWx5dGljcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBTb2Z0d2FyZSB0byB0aGUgQ3VzdG9tZXIgdGhhdCBpcyBob3N0ZWQgYnkgVGFuZ28gRXllIGFuZCBtYWRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgdG8gQ3VzdG9tZXIgb3ZlciBhIG5ldHdvcmsgd2hldGhlciBvbiBhIHRyaWFsIG9yIHBhaWQgYmFzaXMuIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcVGVybeKAnSBzaGFsbCBtZWFuIHRoYXQgcGVyaW9kIHNwZWNpZmllZCBpbiBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsZSB0byBiZSBleGVjdXRlZCBzZXBhcmF0ZWx5IHdpdGggdGhlIEN1c3RvbWVyIGR1cmluZyB3aGljaCBDdXN0b21lciB3aWxsIGhhdmUgb24tbGluZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIGFuZCB1c2Ugb2YgdGhlIFNlcnZpY2VzIHRocm91Z2ggdGhlIFdlYnNpdGUuIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+Mi4gRWxpZ2liaWxpdHkgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViIG15LTdcIj5JbiBvcmRlciB0byB1c2UgdGhlIFNlcnZpY2VzLCBZb3UgbXVzdDo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj4gQmUgYWJvdmUgMTggeWVhcnMgb2YgYWdlOyA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkNvbXBsZXRlIHRoZSBhY2NvdW50IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRvIGFjY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFNlcnZpY2VzIHRocm91Z2ggdGhlIFdlYnNpdGU7PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3Ugd2lsbCBwcm92aWRlIGNvcnJlY3QsIHVwdG8gZGF0ZSBpbmZvcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgaW5jbHVkaW5nIGJpbGxpbmcgYWRkcmVzczs8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IFlvdSB3aWxsIGtlZXAgYWxsIHlvdXIgY3JlZGVudGlhbHMgYW5kIHBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWRlbnRpYWwgYW5kIGFsc28gcmVzcG9uc2libGUgdG8gbWFpbnRhaW5pbmcgdGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgeW91ciBwZXJzb25hbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb247IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3Ugd2lsbCBwcm92aWRlIGFsbCByZWxldmFudCBhbmQgcmVxdWlyZWQgaGFyZHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzb2Z0d2FyZSBhcyBzdWdnZXN0ZWQgYnkgVGFuZ28gRXllIGF0IHlvdXIgZGVzaWduYXRlZCBsb2NhdGlvbiBpbiBvcmRlciB0byBlbmFibGUgVGFuZ29cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV5ZSB0byBpbnN0YWxsIHRoZSBTb2Z0d2FyZSBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBTZXJ2aWNlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjMuIFNlcnZpY2VzIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+IEluIGNvbnNpZGVyYXRpb24gZm9yIHBheW1lbnQgb2YgdGhlIGZlZXMsIFRhbmdvIEV5ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRzIHRoZSBDdXN0b21lciBhIG5vbi1leGNsdXNpdmUsIG5vbi10cmFuc2ZlcmFibGUsIHBlcnNvbmFsLCByZXZvY2FibGUsIGxpY2VuY2UgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBhbmQgdXNlIHRoZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGggVGFuZ28gRXll4oCZcyBpbnRlbmRlZCBwdXJwb3NlIGZvciB0aGUgU2VydmljZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaWNlbmNlKS48L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBTZXJ2aWNlcyBhcmUgbm90IGNvbnRpbmdlbnQgb24gdGhlIGRlbGl2ZXJ5IG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgZnV0dXJlIGZ1bmN0aW9uYWxpdHkgb3IgZmVhdHVyZXMuPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UYW5nbyBFeWUgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBvciByZW1vdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIG9mIHRoZSBTZXJ2aWNlcyBhbmQgb3IgdGhlIFNvZnR3YXJlIGZyb20gdGltZSB0byB0aW1lLiBXaGVyZSB0aGVyZSBpcyBhbnkgbWF0ZXJpYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyYXRpb24gdG8gdGhlIFNlcnZpY2VzIGFuZCBvciB0aGUgU29mdHdhcmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgY2xhdXNlLCBUYW5nbyBFeWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvdmlkZSB0aGUgQ3VzdG9tZXIgd2l0aCAxNSBidXNpbmVzcyBkYXlz4oCZIG5vdGljZSBhbmQgdGhlIEN1c3RvbWVyIGFncmVlcyB0aGF0IGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwgYWx0ZXJhdGlvbiBpcyBhdCBUYW5nbyBFeWXigJlzIGRpc2NyZXRpb24uwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+QWNjZXNzIHRvIHRoZSBTZXJ2aWNlcyBzaGFsbCBiZSBsaW1pdGVkIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3Jpc2VkIHBlcnNvbnMgd2l0aCB2YWxpZCBjcmVkZW50aWFscyB3aGljaCBpcyB0byBiZSBhZ3JlZWQgYXQgdGhlIHRpbWUgb2YgcHJvdmlkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIFNlcnZpY2VzIGFuZCB0aGUgV2Vic2l0ZS4gSWYgaXQgaXMgYSBzaW5nbGUgYWNjb3VudCBhY2Nlc3MsIHN1Y2ggYWNjb3VudCBzaGFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGJlIHVzZWQgYnkgbXVsdGlwbGUgdXNlcnMgYXQgdGhlIHNhbWUgdGltZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFncmVlIHRoYXTCoFRhbmdvIEV5ZTo8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+d2lsbCBzdXBwbHkgdGhlIFNlcnZpY2VzIG9uIGEgbm9uLWV4Y2x1c2l2ZSBiYXNpcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmRvZXMgbm90IG1ha2UgYW55IHdhcnJhbnR5IG9yIHJlcHJlc2VudGF0aW9uIGFzIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWJpbGl0eSBvZiB0aGUgZmFjaWxpdGllcyBvciBzZXJ2aWNlcyBvZiBhbnkgdGhpcmQtcGFydHkgc3VwcGxpZXJzOyBhbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+aXMgbm90IGxpYWJsZSBmb3IgYW55IGZhaWx1cmUgaW4sIGZhdWx0IHdpdGggb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZ3JhZGF0aW9uIG9mIHRoZSBTZXJ2aWNlcy9Tb2Z0d2FyZSBpZiB0aGF0IGZhaWx1cmUsIGZhdWx0IG9yIGRlZ3JhZGF0aW9uIGlzIGF0dHJpYnV0YWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gb3IgY2F1c2VkIGJ5IGFueSBmYWlsdXJlIG9mIHRoZSBDdXN0b21lciBlbnZpcm9ubWVudCBvciB0aGUgZmFjaWxpdGllcyBvciBzZXJ2aWNlcyBvZiBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXJkIHBhcnR5LjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+NC4gTGljZW5zZSBSZXN0cmljdGlvbnMgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPllvdSBtdXN0IG5vdCBhY2Nlc3Mgb3IgdXNlIHRoZSBTZXJ2aWNlcyBhbmQgb3IgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIGV4Y2VwdCBhcyBwZXJtaXR0ZWQgYnkgdGhlIExpY2Vuc2UgYW5kIG1heSBub3QgZG8gb3IgYXV0aG9yaXplIHRoZSBjb21taXNzaW9uIG9mIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3QgdGhhdCB3b3VsZCBvciBtaWdodCBpbnZhbGlkYXRlIG9yIGJlIGluY29uc2lzdGVudCB3aXRoIHRoZSBUYW5nbyBFeWXigJlzIGludGVsbGVjdHVhbCBwcm9wZXJ0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodHMgaW4gdGhlIFNlcnZpY2VzIG9yIFNvZnR3YXJlLiBXaXRob3V0IGxpbWl0aW5nIHRoZSBmb3JlZ29pbmcgcHJvdmlzaW9ucywgdGhlIEN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFncmVlcyBhbmQgYWNrbm93bGVkZ2VzIHRoYXQgaXQgbXVzdCBub3QgYW5kIHdpbGwgbm90IHBlcm1pdCBhbnkgcGVyc29uIHRvOjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4gcmVzZWxsLCBhc3NpZ24sIHRyYW5zZmVyLCBkaXN0cmlidXRlIG9yIHByb3ZpZGUgb3RoZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYWNjZXNzIHRvIHRoZSBTZXJ2aWNlczs8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+4oCcZnJhbWXigJ0sIOKAnG1pcnJvcuKAnSBvciBzZXJ2ZSBhbnkgb2YgdGhlIFNlcnZpY2VzL1NvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uIGFueSB3ZWIgc2VydmVyIG9yIG90aGVyIGNvbXB1dGVyIHNlcnZlciBvdmVyIHRoZSBpbnRlcm5ldCBvciBhbnkgb3RoZXIgbmV0d29yazs8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5jb3B5LCBhbHRlciwgbW9kaWZ5LCBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXByb2R1Y2UsIHJlc2VsbCwgdHJhbnNmZXIgdG8gYSB0aGlyZCBwYXJ0eSwgcmV2ZXJzZSBhc3NlbWJsZSwgcmV2ZXJzZSBlbmdpbmVlciwgcmV2ZXJzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIG9yIGVuaGFuY2UgdGhlIFNlcnZpY2VzIG9yIFNvZnR3YXJlOyBvcjsgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+YWx0ZXIsIHJlbW92ZSBvciB0YW1wZXIgd2l0aCBhbnkgdHJhZGVtYXJrcywgYW55IHBhdGVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciBjb3B5cmlnaHQgbm90aWNlcywgb3IgYW55IGNvbmZpZGVudGlhbGl0eSBsZWdlbmQgb3Igbm90aWNlLCBvciBhbnkgbnVtYmVycywgb3Igb3RoZXIgbWVhbnMgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmljYXRpb24gdXNlZCBvbiBvciBpbiByZWxhdGlvbiB0byB0aGUgU2VydmljZXMgb3IgU29mdHdhcmUuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIG11c3Qgbm90IHVzZSB0aGUgU2VydmljZXMgaW4gYW55IHdheSB3aGljaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpcyBpbiBicmVhY2ggb2YgYW55IHN0YXR1dGUsIHJlZ3VsYXRpb24sIGxhdyBvciBsZWdhbCByaWdodCBvZiBhbnkgcGVyc29uIHdpdGhpbiB0aGUgUmVwdWJsaWMgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWEgb3IgdGhlIGp1cmlzZGljdGlvbiBpbiB3aGljaCB0aGUgQ3VzdG9tZXIgb3IgaXRzIHBlcnNvbm5lbCBhcmUgbG9jYXRlZC7CoDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+NS4gUHJvaGliaXRlZCBVc2UgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXQtN1wiPllvdSBhZ3JlZSB0byB1c2UgdGhlIFdlYnNpdGUgYW5kIHRoZSBTZXJ2aWNlcy9Tb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NlZCB0aHJvdWdoIGl0IGZvciB0aGUgcHVycG9zZSBlbnVtZXJhdGVkIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgYW5kIGFncmVlIG5vdCB0byB1bmRlcnRha2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzo8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEEpIFVzZSBvZiB0aGUgV2Vic2l0ZSBhbmQgdGhlIFNlcnZpY2VzIHRvIHZpb2xhdGUgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgbGF3cyBvZiBhbnkganVyaXNkaWN0aW9uIGZyb20gd2hpY2ggWW91IGFjY2VzcyB0aGUgU2VydmljZXMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMVwiPiBCKSBVc2UgdGhlIFNlcnZpY2VzIGZvciBjb21wZXRpdGl2ZSBiZW5jaG1hcmtpbmcgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRldmVsb3BpbmcgYSBjb21wZXRpdGl2ZSBwcm9kdWN0IG9yIHNlcnZpY2VzLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEMpIFRvIHVwbG9hZCBvciBvdGhlcndpc2UgZGlzc2VtaW5hdGUgYW55IGNvbXB1dGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpcnVzZXMgb3Igb3RoZXIgc29mdHdhcmUgdGhhdCBtYXkgdGhlIFNvZnR3YXJlIG9mIFRhbmdvIEV5ZTs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMVwiPiBEKSBUbyB1bmxhd2Z1bGx5IGdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCBvdGhlcnMgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBpbiBpbiBhbiB1bmxhd2Z1bCBtYW5uZXI7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG1iLTVcIj4gRSkgVG8gc29saWNpdCBvdGhlcnMgdG8gcGVyZm9ybSBvciBwYXJ0aWNpcGF0ZSBpbiBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5sYXdmdWwgYWN0cy48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IHJlc2VsbCwgYXNzaWduLCB0cmFuc2ZlciwgZGlzdHJpYnV0ZSBvciBwcm92aWRlIG90aGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFjY2VzcyB0byB0aGUgU2VydmljZXM7PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSBhY2tub3dsZWRnZSB0aGF0IFRhbmdvIEV5ZSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFueSBpbmZvcm1hdGlvbiB0aGF0IGlzIHJlbGF5ZWQgYW5kIHN0b3JlZCBpbiBpdHMgY2xvdWQgc2VydmVycyB3aGljaCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtcy4gWW91IHNoYWxsIGFsd2F5cyBiZSByZXNwb25zaWJsZSBmb3IgdGhlIHNhbWUgYXQgYWxsIHRpbWVzLlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSBhZ3JlZSB0byBjb21wbHkgd2l0aCBhbGwgYXBwbGljYWJsZSBsYXdzIHN0YXR1dGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZWd1bGF0aW9ucyBvZiB0aGUgY291bnRyeSB5b3UgYXJlIGFjY2Vzc2luZyB0aGUgV2Vic2l0ZS9Tb2Z0d2FyZSBhbmQgdGhlIFNlcnZpY2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIHVzZSBvZiB0aGUgaW5mb3JtYXRpb24vdmlkZW8gZm9vdGFnZSB3aGljaCBpcyByZWxheWVkIHRocm91Z2ggeW91ciBjY3R2IGNhbWVyYSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2xvdWQgc3RvcmFnZSBvZiBUYW5nbyBFeWUuIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSBhY2tub3dsZWRnZSB0aGF0IHRoZSBTZXJ2aWNlcyBoYXMgbm90IGJlZW4gZGVzaWduZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29sbGVjdCBvciBwcm9jZXNzIGFueSBzZW5zaXRpdmUgaW5mb3JtYXRpb24gYW5kIGFjY29yZGluZ2x5IHlvdSBhZ3JlZSBub3QgdG8gdXNlIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcyB0byBjb2xsZWN0LCBwcm9jZXNzIG9yIHN0b3JlIGFueSBzZW5zaXRpdmUgcGVyc29uYWwgZGF0YSBvbmNlIHlvdSBhY2Nlc3MgdGhlIHJlcG9ydHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIGJ5IFRhbmdvIEV5ZSBpbiBwdXJzdWFuY2UgdG8gdGhlIFNlcnZpY2VzLiBUYW5nbyBFeWUgc3BlY2lmaWNhbGx5IGRpc2NsYWltIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaWFiaWxpdHkgdGhhdCBtYXkgcmVzdWx0IGZyb20geW91ciB1c2Ugb2YgdGhlIFNlcnZpY2VzIHRvIGNvbGxlY3QsIHByb2Nlc3MgYW5kIHN0b3JlIHNlbnNpdGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbi48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UYW5nbyBFeWUgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIG1vbml0b3IgdGhlIHVzZSBvZiB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgV2Vic2l0ZS9TZXJ2aWNlcy9Tb2Z0d2FyZSBieSBZb3UgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugb2YgdGhlc2UgU2FhUyBUZXJtcyBhbmQgYXBwbGljYWJsZSBsYXcuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+SW4gdGhlIGV2ZW50IG9mIHZpb2xhdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGxhd3MgYW5kIHJlZ3VsYXRpb25zLCBUYW5nbyBFeWUgc2hhbGwgaGF2ZSB0aGUgcmlnaHQgdG8gaW52ZXN0aWdhdGUgc3VjaCBicmVhY2hlcyBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb25zIHdoaWNoIHNoYWxsIGluY2x1ZGUgYnV0IG5vdCBiZSBsaW1pdGVkIHRvIHByb3ZpZGluZyB3YXJuaW5nIHRvIGZpcnN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgb2ZmZW5kZXJzLCBzdXNwZW5kaW5nIGFuZCBvciBldmVuIHRlcm1pbmF0aW5nIHRoZSBTZXJ2aWNlcyBhbmQgYWNjZXNzIHRvIHRoZSBXZWJzaXRlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+Ni4gSW52b2ljaW5nOiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+SW52b2ljZXMgd2lsbCBiZSBpc3N1ZWQgb24gdGhlIGJhc2lzIG9mIHRoZSBudW1iZXIgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwbG95ZWQgc3RvcmVzIGluIGV4aXN0ZW5jZSBvbiB0aGUgaW52b2ljZSBkYXRlIGFuZCBzaGFsbCBiZSBpc3N1ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQYXltZW50IFRlcm1zIGluIHRoZSBjb21tZXJjaWFsIHRlcm1zIGFib3ZlLiBUYW5nbyBFeWUgc2hhbGwgYmlsbCBDdXN0b21lciBmb3IgYXBwbGljYWJsZSB0YXhlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNlcGFyYXRlIGxpbmUgaXRlbSBvbiBlYWNoIGludm9pY2UuIEN1c3RvbWVyIHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBwYXltZW50IG9mIGFsbCBzYWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRheGVzLCBHb29kcyBhbmQgU2VydmljZXMgdGF4LCBvciBzaW1pbGFyIGNoYXJnZXMgcmVsYXRpbmcgdG8gQ3VzdG9tZXLigJlzIHB1cmNoYXNlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2Ugb2YgdGhlIFNlcnZpY2VzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+Ny4gUGF5bWVudDogPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPlBheW1lbnQgc2hhbGwgYmUgbWFkZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFBheW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGVybXMgaW4gdGhlIGNvbW1lcmNpYWwgdGVybXMgd2hpY2ggc2hhbGwgYmUgYWdyZWVkIHRvIHNlcGFyYXRlbHkgYmV0d2VlbiBUYW5nbyBFeWUgYW5kIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBhbmQgd2hpY2ggc2hhbGwgYmUgcmVhZCBhbmQgYmUgY290ZXJtaW5vdXMgd2l0aCB0aGVzZSBTYWFTIFRlcm1zIChQYXltZW50IFRlcm1zKS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCBvdGhlcndpc2UsIHBheW1lbnRzIGFyZSBub24tcmVmdW5kYWJsZS4gSW4gdGhlIGV2ZW50IHRoZSBDdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlscyB0byBtYWtlIHRoZSBwYXltZW50IGFzIHBlciB0aGUgcGF5bWVudCB0ZXJtcywgVGFuZ28gRXllIHNoYWxsIHNlbmQgYSB3cml0dGVuIG5vdGljZSB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50IHRvIGVuc3VyZSB0aGF0IHRoZSBwYXltZW50IGlzIG1hZGUgd2l0aGluIDMwICh0aGlydHkpIGRheXMgKOKAnEFkZGl0aW9uYWwgUGVyaW9k4oCdKSBmcm9tIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlIG9mIHJlY2VpcHQgc3VjaCB3cml0dGVuIG5vdGljZS4gSWYgdGhlIGN1c3RvbWVyIGZhaWxzIHRvIG1ha2UgdGhlIHBheW1lbnQgd2l0aGluIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIFBlcmlvZCwgdGhlIGFjY2VzcyB0byB0aGUgd2ViIHBvcnRhbCB3aWxsIGJlIGJsb2NrZWQgYW5kIHRoZSBTZXJ2aWNlcyBzaGFsbCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5kZWQgNyAoc2V2ZW4pIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHJlbWluZGVyIGVtYWlsIHRvIEN1c3RvbWVyIGZyb20gdGhlIGV4cGlyeSBvZiB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBQZXJpb2QuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+UGFydGllcyBhY2tub3dsZWRnZSB0aGF0IHRpbWUgaXMgb2YgdGhlIGVzc2VuY2Ugd2l0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwZWN0IHRvIHBheW1lbnRzIHJlcXVpcmVkIHVuZGVyIHRoaXMgY2xhdXNlLiBJbiB0aGUgZXZlbnQgb2YgYW55IGRlbGF5IGluIHBheW1lbnQgYnkgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyLCBUYW5nbyBFeWUgbWF5IHJlcXVpcmUgdGhlIEN1c3RvbWVyIHRvIHBheSBUYW5nbyBFeWUgYSBsYXRlIHBheW1lbnQgcGVuYWx0eSBlcXVhbCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0d2VsdmUgcGVyY2VudCAoMTIlKSBwZXIgYW5udW0gb24gYWxsIG91dHN0YW5kaW5nIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj44LkludGVsbGVjdHVhbCBQcm9wZXJ0eTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5BbGwgVGFuZ28gRXllIFNvZnR3YXJlLCBpbmNsdWRpbmcgdGhlIFdlYnNpdGUgYW5kIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIHRoZXJldG8sIGFuZCBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNyZWF0ZWQgYnkgVGFuZ28gRXllIGluIGZ1cnRoZXJhbmNlIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBvciBhbnkgd29ya3MsIHByb2R1Y3RzLCBkb2N1bWVudHMsIG1hdGVyaWFscyBjcmVhdGVkIHVzaW5nLCBpbmNvcnBvcmF0aW5nLCBjb21wcmlzaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluLCBvciByZWxhdGluZyB0byBzdWNoIGludGVsbGVjdHVhbCBwcm9wZXJ0eSAo4oCcVGFuZ28gRXllIElQ4oCdKSBzaGFsbCBhdCBhbGwgdGltZXMgcmVtYWluIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdXNpdmUgcHJvcGVydHkgb2YgVGFuZ28gRXllIGFuZC9vciBpdHMgbm9taW5lZXMgb3IgYWZmaWxpYXRlcywgYXMgdGhlIGNhc2UgbWF5IGJlLCBhbmQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIHNoYWxsIG5vdCBoYXZlIGFueSByaWdodCwgdGl0bGUsIGNsYWltIGV0Yy4gd2hhdHNvZXZlciBvdmVyIHRoZSBzYW1lLiBOb3RoaW5nIGNvbnRhaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZXJlaW4gc2hhbGwgYmUgY29uc3RydWVkIGFzIGEgdHJhbnNmZXIsIGFzc2lnbm1lbnQgb3IgY29udmV5YW5jZSBieSBUYW5nbyBFeWUgdG8gQ3VzdG9tZXIgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG93bmVyc2hpcCwgaW50ZXJlc3Qgb3IgdGl0bGUgdG8gdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGF0dGFjaGVkIHRvIHRoZSBUYW5nbyBFeWUgSVAuIFRoZSBDdXN0b21lciBpcyBvbmx5IGF1dGhvcml6ZWQgdG8gcmVjZWl2ZSBhIHJpZ2h0IHRvIGFjY2Vzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBUYW5nbyBFeWUgSVAgZm9yIHRoZSB0ZXJtIGV4cGxpY2l0bHkgZ3JhbnRlZCBieSBUYW5nbyBFeWUgdG8gQ3VzdG9tZXIgYW5kIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlzaW9ucyBvZiB0aGVzZSBTYWFTIFRlcm1zLiBUaGlzIGF1dGhvcml6YXRpb24gaXMgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uLXN1Yi1saWNlbnNhYmxlLCB1bmxlc3Mgb3RoZXJ3aXNlIGFncmVlZCB1bmRlciB0aGlzIEFncmVlbWVudC4gQ3VzdG9tZXIgc2hhbGwgbm90IGhhdmUgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IHRvIG1vZGlmeSwgYWRhcHQsIGluY29ycG9yYXRlLCBjcmVhdGUgYW55IGRlcml2YXRpdmUgdXNpbmcgb3IgaW5jb3Jwb3JhdGluZyBUYW5nbyBFeWUgSVBcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW4gYW55IG1hbm5lciB0cmFuc2ZlciwgZW5jdW1iZXIsIGFsaWVuYXRlLCBzZWxsLCBzaGFyZSwgYXNzaWduLCBsaWNlbnNlIG9yIHN1Yi1sZXQgaXQgdG8gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXJkIHBhcnR5LjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkFzIGJldHdlZW4gdGhlIHBhcnRpZXMsIEN1c3RvbWVyIHJldGFpbnMgYWxsIHJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSBhbmQgaW50ZXJlc3QgaW4gYW5kIHRvIOKAk8KgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+YWxsIHJhdyBkYXRhIGdlbmVyYXRlZCBmcm9tIHRoZSB1c2Ugb2YgdGhlIFNvZnR3YXJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGV4dCwgc291bmQsIHZpZGVvLCBvciBpbWFnZSBmaWxlcywgYnV0IGV4Y2x1ZGluZyBhbnkgQnVzaW5lc3MgRGF0YSAo4oCcR2VuZXJhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGHigJ0pOyBhbmTCoMKgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+cmF3IGRhdGEgb3duZWQgYnkgYW5kIHJlbGF0aW5nIHRvIHRoZSBDdXN0b21lciwgc3VjaCBhc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55IGluZm9ybWF0aW9uLCBzdG9yZSBsb2NhdGlvbiBhbmQgZGV0YWlscyBvZiB0aGUgem9uZXMsIGVtcGxveWVlIGluZm9ybWF0aW9uLCBidXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkaW5nIGFueSBHZW5lcmF0ZWQgRGF0YSAo4oCcQnVzaW5lc3MgLCB0aGF0IGlzIHByb3ZpZGVkIHRvIFRhbmdvIEV5ZSBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgdGhyb3VnaCB0aGUgQ3VzdG9tZXLigJlzIHVzZSBvZiB0aGUgU29mdHdhcmUgKHRvZ2V0aGVyLCDigJxDdXN0b21lciBEYXRh4oCdKS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgQ3VzdG9tZXIgaGVyZWJ5IGdyYW50cyB0byBUYW5nbyBFeWUgYSBub24tZXhjbHVzaXZlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQgdXAgYW5kIHJveWFsdHkgZnJlZSByaWdodCBhbmQgbGljZW5zZSB0byB1c2UgdGhlIEdlbmVyYXRlZCBEYXRhIGZvciAoaSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb3Zpc2lvbiBvZiBTZXJ2aWNlcyBhbmQgZnVsZmlsbG1lbnQgb2Ygb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBhbmQ7IChpaSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1wcm92aW5nIHRoZSBTb2Z0d2FyZS7CoDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBDdXN0b21lciBoZXJlYnkgZ3JhbnRzIHRvIFRhbmdvIEV5ZSBhIG5vbi1leGNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkd2lkZSwgZnVsbHkgcGFpZCB1cCBhbmQgcm95YWx0eSBmcmVlIHJpZ2h0IGFuZCBsaWNlbnNlIHRvIHVzZSB0aGUgQnVzaW5lc3MgRGF0YSBmb3IgKGkpIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aXNpb24gb2YgU2VydmljZXMgYW5kIGZ1bGZpbGxtZW50IG9mIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXM7IGFuZCAoaWkpIGltcHJvdmluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgU29mdHdhcmUuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+Q3VzdG9tZXIgYWdyZWVzIHRvIHByb3ZpZGUgY29tbWVudHMgb3IgZmVlZGJhY2ssIGlmIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gVGFuZ28gRXllIHJlZ2FyZGluZyB0aGUgU29mdHdhcmUgb3IgZnV0dXJlIHJlbGVhc2VzLyBkZXZlbG9wbWVudCB0byB0aGUgU29mdHdhcmUgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBvZiB0aGUgd29yayBjYXJyaWVkIG91dCBkdXJpbmcgdGhpcyBlbmdhZ2VtZW50IHdpdGggdGhlIEN1c3RvbWVyIG9yIGFueSBhbmQgYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtub3dsZWRnZSBhbmQgaW5mb3JtYXRpb24gb2YgZ2VuZXJpYyBuYXR1cmUsIGFyaXNpbmcgb3V0IG9mIHVzZSBvZiB0aGUgU29mdHdhcmUgYnkgdGhlIEN1c3RvbWVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGRpc2Nsb3NpbmcgYW55IEN1c3RvbWVyIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBvciBDdXN0b21lciBEYXRhLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBDdXN0b21lciB1bmRlcnRha2VzIHRvIHByb21wdGx5IGluZm9ybSBUYW5nbyBFeWUgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IGluZnJpbmdlbWVudCBvZiBUYW5nbyBFeWUgSVAgcmlnaHRzIGJ5IHRoaXJkIHBhcnRpZXMsIGFuZCBzaGFsbCBwZXJtaXQgVGFuZ28gRXllIHRvIGFzc3VtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb2xlIGF1dGhvcml0eSB0byB0YWtlIGFwcHJvcHJpYXRlIGxlZ2FsIGFjdGlvbi4gQ3VzdG9tZXIgc2hhbGwgbm90IG1ha2UgYW55IHN0YXRlbWVudCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZG1pc3Npb24gaW4gcmVsYXRpb24gdG8gc3VjaCBjbGFpbSB3aGljaCBtYXkgcHJlanVkaWNpYWxseSBhZmZlY3QgdGhlIGNoYW5jZXMgb2Ygc2V0dGxlbWVudCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlbnNlIG9mIHN1Y2ggY2xhaW0sIGFuZCBzaGFsbCBwcm92aWRlIGluZm9ybWF0aW9uIGFuZCBhc3Npc3RhbmNlIHJlYXNvbmFibHkgcmVxdWVzdGVkIGluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gd2l0aCBzdWNoIGNsYWltIG9yIHN1aXQuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGFuZ28gRXllIGhlcmVieSB1bmRlcnRha2VzLCBpbiB0aGUgZXZlbnQgdGhhdCB0aGlyZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWVzIGFjdCBhZ2FpbnN0IHRoZSBDdXN0b21lciBmb3IgYW55IHJlYXNvbiB3aGF0c29ldmVyIGluIHJlbGF0aW9uIHRvIHRoZSBTb2Z0d2FyZSBvciBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ28gRXllIElQLCB0byBwcm92aWRlIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZWlyIHBvc3Nlc3Npb24gYW5kIG90aGVyd2lzZSBkbyBhbmQgZXhlY3V0ZSBhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0cywgdGhpbmdzLCBtYXR0ZXJzIGFuZCBkZWVkcyBhcyBtYXkgYmUgcmVhc29uYWJseSByZXF1aXJlZCBieSB0aGUgQ3VzdG9tZXIsIGZyb20gdGltZSB0byB0aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNob3cgb3duZXJzaGlwIG9mIHN1Y2ggVGFuZ28gRXllIElQLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj45LiBEYXRhIFByb3RlY3Rpb24gYW5kIFByaXZhY3kgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPkVhY2ggUGFydHkgc2hhbGwgYXQgYWxsIHRpbWVzIGNvbXBseSB3aXRoIGl0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmxpZ2F0aW9ucyB1bmRlciBhcHBsaWNhYmxlIHByaXZhY3kgcmVndWxhdGlvbnMgaW4gcmVsYXRpb24gdG8gdGhlIEdlbmVyYXRlZCBEYXRhLCBCdXNpbmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhLCBhbmQgQ3VzdG9tZXIgRGF0YSB0aGF0IGlzIGNvbGxlY3RlZCwgc3RvcmVkIGFuZC9vciBwcm9jZXNzZWQgYnkgaXQgaW4gdGhlIGNvdXJzZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtaW5nIGl0cyBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zLiBGdXJ0aGVyIGVhY2ggUGFydHkgc2hhbGwgcHJvY2VzcyBzdWNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZCBEYXRhLCBCdXNpbmVzcyBEYXRhLCBhbmQgQ3VzdG9tZXIgRGF0YSBvbmx5IHRvIHRoZSBleHRlbnQgbmVjZXNzYXJ5IGZvciB0aGUgcHVycG9zZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2YgcGVyZm9ybWluZyB0aGVpciByZXNwZWN0aXZlIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+RWFjaCBwYXJ0eSBzaGFsbCB0YWtlIGFwcHJvcHJpYXRlIHRlY2huaWNhbCBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uYWwgbWVhc3VyZXMgYXMgcmVxdWlyZWQgdW5kZXIgYXBwbGljYWJsZSBsYXcgYWdhaW5zdCBhbnkgZGF0YSBicmVhY2gsIHVuYXV0aG9yaXplZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciB1bmxhd2Z1bCBwcm9jZXNzaW5nIG9mIHRoZSBwZXJzb25hbCBkYXRhIG9yIGl0cyBhY2NpZGVudGFsIGxvc3MsIGRlc3RydWN0aW9uIG9yIGRhbWFnZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTAuIFJlcHJlc2VudGF0aW9ucywgV2FycmFudGllcyBhbmQgRGlzY2xhaW1lcnMgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPkVhY2ggUGFydHkgcmVwcmVzZW50cywgd2FycmFudHMgYW5kIGNvdmVuYW50cyB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGhhdDogKGkpIGl0IGlzIGR1bHkgb3JnYW5pemVkIGFuZCB2YWxpZGx5IGV4aXN0aW5nIGFuZCBpbiBnb29kIHN0YW5kaW5nIHVuZGVyIHRoZSBsYXdzIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSBvZiBpdHMgaW5jb3Jwb3JhdGlvbiBvciBmb3JtYXRpb247IChpaSkgaXQgaGFzIHRoZSBmdWxsIHJpZ2h0IGFuZCBhdXRob3JpdHkgdG8gZW50ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW50byB0aGVzZSBTYWFTIFRlcm1zIGFuZCB0aGF0IHRoZXNlIFNhYVMgVGVybXMgY29uc3RpdHV0ZXMgYSBsZWdhbCwgdmFsaWQgYW5kIGJpbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JsaWdhdGlvbjsgKGlpaSkgdGhlIGV4ZWN1dGlvbiwgZGVsaXZlcnkgYW5kIHBlcmZvcm1hbmNlIG9mIHRoZXNlIFNhYVMgVGVybXMgZG9lcyBub3QgYW5kIHdpbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNvbmZsaWN0IHdpdGgsIG9yIGNvbnN0aXR1dGUgYSBicmVhY2ggb3IgZGVmYXVsdCB1bmRlciwgaXRzIGNoYXJ0ZXIgb2Ygb3JnYW5pemF0aW9uLCBvciBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3Qgb3Igb3RoZXIgaW5zdHJ1bWVudCB0byB3aGljaCBpdCBpcyBhIHBhcnR5OyAoaXYpIGl0IHdpbGwgY29tcGx5IHdpdGgsIGFuZCB3aWxsIGVuc3VyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGwgb2YgaXRzIHBlcnNvbm5lbCwgdGhpcmQgcGFydHkgYWdlbnRzLCBjb25zdWx0YW50cyBldGMuLCBjb21wbHkgd2l0aCBhbGwgbGF3cyBhbmQgcmVndWxhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSB0byAoaSkgdGhlIHByb3Zpc2lvbiwgb3IgYWNjZXNzIGFuZCB1c2Ugb2YgdGhlIFNvZnR3YXJlOyBhbmQgKGlpKSBwZXJmb3JtYW5jZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIGxhd3MgYW5kIHJlZ3VsYXRpb25zIHJlbGF0ZWQgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmFjeSwgZGF0YSBwcm90ZWN0aW9uLCBlbGVjdHJvbmljIGNvbW11bmljYXRpb25zLCBleHBvcnQgYW5kIGNvbmZpZGVudGlhbGl0eS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UYW5nbyBFeWUgcmVwcmVzZW50cywgd2FycmFudHMgYW5kIGNvdmVuYW50cyB0aGF0IChpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUYW5nbyBFeWUgcGVyc29ubmVsIHNoYWxsIHByb3ZpZGUgdGhlIFNlcnZpY2VzIGluIGEgZGlsaWdlbnQgYW5kIHByb2Zlc3Npb25hbCBtYW5uZXIgd2l0aCBkdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FyZSAoaWkpIFRhbmdvIEV5ZSBJUCBkb2VzIG5vdCBhbmQgd2lsbCBub3QgaW5mcmluZ2UsIG1pc2FwcHJvcHJpYXRlIG9yIG90aGVyd2lzZSB2aW9sYXRlIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG9mIGFueSBwYXJ0eSB3aXRoaW4gdGhlIHRlcnJpdG9yeSBvZiBJbmRpYSBhbmQgb3IgYW55IG90aGVyIGNvdW50cnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgaXRzIHJpZ2hzdCBhcmUgcmVnaXN0ZXJlZDsgYW5kIChpaWkpIGFsbCBTZXJ2aWNlcyB0aGF0IGFyZSBwcm92aWRlZCB3aWxsIGJlIGZyZWUgZnJvbSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAga25vd24gbWFsaWNpb3VzIGNvZGUgb3IgaW5zdHJ1Y3Rpb25zIHRoYXQgbWF5IGludGVudGlvbmFsbHkgZGlzcnVwdCwgZGFtYWdlIG9yIGludGVyZmVyZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFueSB1c2UgYnkgQ3VzdG9tZXIuIFRhbmdvIEV5ZSBmdXJ0aGVyIHdhcnJhbnRzIGFuZCByZXByZXNlbnRzIHRvIHRoZSBDdXN0b21lciB0aGF0IGl0IGhvbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgd2lsbCBjb250aW51ZSB0byBob2xkLCBhbnkgYW5kIGFsbCBsaWNlbnNlcywgcGVybWl0cyBvciBvdGhlciBhdXRob3JpemF0aW9ucyByZXF1aXJlZCBieSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXcgdG8gcGVyZm9ybSB0aGUgU2VydmljZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZXNlIFNhYVMgVGVybXMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+4oCcQXBwbGljYWJsZSBsYXfigJ0gbWVhbnMgYW55IGFwcGxpY2FibGUgbGF3LCBzdGF0dXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlLCByZWd1bGF0aW9uLCBvcmRpbmFuY2UsIHJlcXVpcmVtZW50LCBkaXJlY3Rpb25zLCBndWlkZWxpbmVzLCBhbm5vdW5jZW1lbnQgb3Igb3RoZXIgYmluZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gb3IgcmVxdWlyZW1lbnQgb2YgYW55IGdvdmVybm1lbnQgb3IgcXVhc2kgZ292ZXJubWVudDsgZGVwYXJ0bWVudCwgYWdlbmN5IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnRhbGl0eSBvZiBhbnkgZ292ZXJubWVudCB0aGVyZW9mLCBhbnkgY291cnQgb3IgYXJiaXRyYWwgdHJpYnVuYWwgYXBwbGljYWJsZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgdW5kZXIgdGhlIHJlcHVibGljIG9mIEluZGlhLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRIRSBTT0ZUV0FSRSBBTkQgQU5ZVEhJTkcgUFJPVklERUQgSU4gQ09OTkVDVElPTiBXSVRIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRIRVNFIFNhYVMgVEVSTVMgQVJFIFBST1ZJREVEIOKAnEFTLUlT4oCdLiBFWENFUFQgRk9SIFRIRSBFWFBSRVNTIFJFUFJFU0VOVEFUSU9OUyBBTkQgV0FSUkFOVElFUyBJTlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUSElTIFNFQ1RJT04gNiwgVEFOR08gRVlFIERPRVMgTk9UIE1BS0UgQU5ZIFJFUFJFU0VOVEFUSU9OUyBPUiBXQVJSQU5USUVTLCBFWFBSRVNTLCBJTVBMSUVEIE9SXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRVVE9SWSBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBRVUFMSVRZLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgU1lTVEVNIElOVEVHUkFUSU9OLCBFUlJPUi1GUkVFLCBVTi1JTlRFUlJVUFRJT04sIFNVUFBPUlRcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ09SUkVDVElPTiBPUiBSRVBBSVIgKFVOTEVTUyBPVEhFUldJU0UgQUdSRUVEKSBPUiBPVEhFUldJU0UgVEhBVCBUQU5HTyBFWUUgU09GVFdBUkUgSEVSRVVOREVSXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdJTEwgT1BFUkFURSBJTiBFVkVSWSBDT01CSU5BVElPTiBPUiBFTlZJUk9OTUVOVCBERVNJUkVEIEJZIENVU1RPTUVSIFdJVEggQU5ZIERBVEEsIERFVklDRVMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENPTVBVVEVSIFNZU1RFTVMgQU5EIFBST0dSQU1TIE9GIElUUyBDSE9JQ0UgT1IgVEhBVCBUSEUgUkVNRURZSU5HIE9GIE9ORSBQUk9HUkFNIEVSUk9SIERPRVMgTk9UXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJFU1VMVCBJTiBUSEUgT0NDVVJSRU5DRSBPRiBPVEhFUiBQUk9HUkFNIEVSUk9SUy4gQUxMIFNVQ0ggUkVQUkVTRU5UQVRJT05TIEFORCBXQVJSQU5USUVTIEFSRVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIRVJFQlkgRElTQ0xBSU1FRC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEN1c3RvbWVyIHdhcnJhbnRzIHRoYXQ6IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPiBBKSBDdXN0b21lciBEYXRhIGRvZXMgbm90IGFuZCB3aWxsIG5vdCBpbmZyaW5nZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWlzYXBwcm9wcmlhdGUgb3Igb3RoZXJ3aXNlIHZpb2xhdGUgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55IHRoaXJkIHBhcnR5OzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj5CKSBpdCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBhbnkgc2VjdXJpdHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdnVsbmVyYWJpbGl0aWVzIGFuZCB0aGUgY29uc2VxdWVuY2VzIG9mIHN1Y2ggdnVsbmVyYWJpbGl0aWVzIGFyaXNpbmcgc29sZWx5IGZyb20gdGhlIG5hdHVyZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBEYXRhOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gQykgaXQgc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJzIGNvbXBseSB3aXRoIGFsbCByZXF1aXJlbWVudHMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBpbiByZWxhdGlvbiB0byB0aGUgdXNlIG9mIHRoZSBTb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodG8gdGhlIGV4dGVudCBhcHBsaWNhYmxlKTs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+IEQpIGl0IHNoYWxsIGltbWVkaWF0ZWx5IG5vdGlmeSBUYW5nbyBFeWUgb2YgKGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFueSBhY2NvdW50LXJlbGF0ZWQgYWJ1c2U7IChiKSB0aGUgdW5hdXRob3JpemVkIGRpc2Nsb3N1cmUsIHVzZSBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZWlyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQgY3JlZGVudGlhbHMgYnkgb3IgdG8gYW55IHRoaXJkIHBhcnR5OyBhbmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+IEUpIGl0IHNoYWxsIG5vdCwgYW5kIHNoYWxsIG5vdCBwZXJtaXQgYW55IHBhcnR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIHBlcnNvbiB0bywgYWNjZXNzIG9yIHVzZSB0aGUgU29mdHdhcmUgZXhjZXB0IGFzIGV4cHJlc3NseSBwZXJtaXR0ZWQgYnkgdGhlc2UgU2FhUyBURVJNUy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgV2l0aG91dCBsaW1pdGluZyB0aGUgZ2VuZXJhbGl0eSBvZiB0aGUgZm9yZWdvaW5nLCBDdXN0b21lciBzaGFsbCBub3QsIGFuZCBzaGFsbCBub3QgcGVybWl0IGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0eSBvciBwZXJzb24gdG86PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtNVwiPiAxLiBpbnRlcmZlcmUgd2l0aCBvciBkaXNydXB0IHRoZSBpbnRlZ3JpdHkgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2Ugb2YgdGhlIFNvZnR3YXJlLCBvciBjaXJjdW12ZW50LCBieXBhc3MsIGRlbGV0ZSBvciByZW1vdmUgYW55IGZvcm0gb2YgcHJvdGVjdGlvbiwgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UsIGZ1bmN0aW9uYWxpdHkgb3IgdGVjaG5pY2FsIHJlc3RyaWN0aW9ucyBvciBsaW1pdGF0aW9ucywgb3IgdG8gZW5hYmxlIGZ1bmN0aW9uYWxpdHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQgYnkgVGFuZ28gRXllLCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIFNvZnR3YXJlOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTVcIj4gMi4gYWNjZXNzIG9yIHVzZSB0aGUgU29mdHdhcmUgcHJvdmlkZWQgdW5kZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2UgU2FhUyBUZXJtcywgaW4gYW55IG1hbm5lciBvciBmb3IgYW55IHB1cnBvc2UgdGhhdCB2aW9sYXRlcyBhbnkgYXBwbGljYWJsZSBsYXcsIHRoZSByaWdodHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Ygb3RoZXJzLCBpbiBhIHdheSB0aGF0IGNvdWxkIGhhcm0gdGhlIHNlcnZpY2UuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtNVwiPjMuIHJldmVyc2UgZW5naW5lZXIsIGRpc2Fzc2VtYmxlLCBkZS1jb21waWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNyZWF0ZSwgY29weSBvciByZXByb2R1Y2UgdGhlIHNvdXJjZSBjb2RlIG9yIG9iamVjdCBjb2RlIG9mIHRoZSBTb2Z0d2FyZSBvciBwZXJmb3JtIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21pemF0aW9ucyAod2l0aG91dCBUYW5nbyBFeWXigJlzIHByaW9yIHdyaXR0ZW4gY29uc2VudCk7IGFuZDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjExLiBDdXN0b21lcuKAmXMgQWNjb3VudCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVycyBhcmUgZnVsbHkgcmVzcG9uc2libGUgdG8gc2FmZWd1YXJkIHRoZWlyIGFjY2VzcyBjcmVkZW50aWFscyAtIGluY2x1ZGluZyBpbiB0aGUgc2Vuc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGNvbWJpbmF0aW9uIG9mIHVzZXJuYW1lIGFuZCBwYXNzd29yZC48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTIuIER1cmF0aW9uLCBSZW5ld2FsIGFuZCBUZXJtaW5hdGlvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB0aGUgcHJvcG9zYWwsIHRoZXNlIFNhYVMgVGVybXMgc2hhbGwgY29udGludWUgdG8gYmUgZWZmZWN0aXZlIGR1cmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIHBlcmlvZFxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSBDdXN0b21lciB1c2VzIGFuZCBvciBjb250aW51ZXMgdG8gdXNlIHRoZSBTb2Z0d2FyZSwgdW5sZXNzIHRlcm1pbmF0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm1zIHNldFxyXG4gICAgICAgICAgICAgICAgICAgIG91dFxyXG4gICAgICAgICAgICAgICAgICAgIGhlcmVpbi5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSXQgYmVpbmcgY2xhcmlmaWVkIHRoYXQgdGhlcmUgd291bGQgYmUgYSByZW5ld2FsIGZlZSBjaGFyZ2VkIGV2ZXJ5IDEyIG1vbnRocyBhdCB0aGUgcmF0ZSBvZiA3JSBwZXJcclxuICAgICAgICAgICAgICAgICAgICBhbm51bS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRWl0aGVyIHBhcnR5IG1heSB0ZXJtaW5hdGUgdGhlaXIgYnVzaW5lc3MgcmVsYXRpb25zaGlwIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgaW1tZWRpYXRlbHkgdXBvbiBhXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxcclxuICAgICAgICAgICAgICAgICAgICBicmVhY2ggYnkgdGhlIG90aGVyIHBhcnR5IHRoYXQgaGFzIG5vdCBiZWVuIGN1cmVkIHdpdGhpbiB0aGlydHkgKDMwKSBkYXlzIGFmdGVyIHJlY2VpcHQgb2Ygbm90aWNlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjaFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFjaC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRWl0aGVyIHBhcnR5IG1heSBhbHNvIHRlcm1pbmF0ZSB0aGlzIEFncmVlbWVudCB1cG9uIHRoaXJ0eSAoMzApIGRheXMgd3JpdHRlbiBub3RpY2Ugd2l0aG91dFxyXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbmluZyBhbnlcclxuICAgICAgICAgICAgICAgICAgICByZWFzb24uIEN1c3RvbWVyIHdpbGwgcGF5IGluIGZ1bGwgZm9yIHRoZSBTb2Z0d2FyZSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBsYXN0IGRheSBvbiB3aGljaCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgIHdhcyB1c2VkLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjEzLiBFZmZlY3Qgb2YgVGVybWluYXRpb24uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFVwb24gdGVybWluYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcywgVGFuZ28gRXllIHNoYWxsIGltbWVkaWF0ZWx5IGNlYXNlIHByb3ZpZGluZyBhY2Nlc3MgdG8gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFVwb24gdGVybWluYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcywgVGFuZ28gRXllIHNoYWxsIGRlbGV0ZSB0aGUgR2VuZXJhdGVkIERhdGEsIEJ1c2luZXNzIERhdGEgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZCwgc3RvcmVkIGFuZC9vciBwcm9jZXNzZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBmb3IgdGhlIHB1cnBvc2Ugb2YgcHJvdmlkaW5nIHRoZSBTb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgIHdpdGhpbiAxNVxyXG4gICAgICAgICAgICAgICAgICAgIChmaWZ0ZWVuKSBkYXlzIG9mIHJlY2VpcHQgb2Ygbm90aWNlIG9mIHRlcm1pbmF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIElmIFRhbmdvIEV5ZSB0ZXJtaW5hdGVzIHRoZXNlIFNhYVMgVGVybXMgZHVlIHRvIGEgYnJlYWNoIGJ5IEN1c3RvbWVyIG9mIGFueSBvZiB0aGUgcHJvdmlzaW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lZCB1bmRlciB0aGVzZVxyXG4gICAgICAgICAgICAgICAgICAgIFNhYVMgVGVybXMsIHRoZW4gQ3VzdG9tZXIgc2hhbGwgaW1tZWRpYXRlbHkgcGF5IHRvIFRhbmdvIEV5ZSBhbGwgYW1vdW50cyB0aGVuIGR1ZSB1bmRlciB0aGVzZSBTYWFTXHJcbiAgICAgICAgICAgICAgICAgICAgVGVybXMuIElmXHJcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgdGVybWluYXRlcyB0aGVzZSBTYWFTIFRlcm1zIGR1ZSB0byBhIGJyZWFjaCBieSBUYW5nbyBFeWUsIHRoZW4gVGFuZ28gRXllIHNoYWxsIGltbWVkaWF0ZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgcmVwYXkgdG9cclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBhbGwgcHJlLXBhaWQgYW1vdW50cyBmb3IgYW55IHVucGVyZm9ybWVkIFNlcnZpY2VzIHNjaGVkdWxlZCB0byBiZSBkZWxpdmVyZWQgYWZ0ZXIgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybWluYXRpb24gZGF0ZS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgU3ViamVjdCB0byB0aGUgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcywgdXBvbiBpdHMgdGVybWluYXRpb24gYW5kIHVwb24gc3Vic2VxdWVudFxyXG4gICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gcmVxdWVzdCBieVxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSBEaXNjbG9zaW5nIFBhcnR5LCB0aGUgUmVjZWl2aW5nIFBhcnR5IG9mIHRhbmdpYmxlIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBzaGFsbCBpbW1lZGlhdGVseVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNoXHJcbiAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb3IgZGVzdHJveSBzdWNoIGluZm9ybWF0aW9uIGFuZCBwcm92aWRlIHdyaXR0ZW4gY2VydGlmaWNhdGlvbiBvZiBzdWNoIGRlc3RydWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHRoYXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjZWl2aW5nIHBhcnR5IG1heSBwZXJtaXQgaXRzIGxlZ2FsIGNvdW5zZWwgdG8gcmV0YWluIG9uZSBhcmNoaXZhbCBjb3B5IG9mIHN1Y2ggaW5mb3JtYXRpb24gaW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQgb2YgYVxyXG4gICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgZGlzcHV0ZSBiZXR3ZWVuIHRoZSBwYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBUaGUgcHJvdmlzaW9ucyByZWxhdGluZyB0byBjb25maWRlbnRpYWxpdHksIGFzIHdlbGwgYXMgZm9yIGxpYWJpbGl0eSwgYXBwbGljYWJsZSBsYXcgYW5kIHNldHRsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICBvZiBkaXNwdXRlc1xyXG4gICAgICAgICAgICAgICAgICAgIHNoYWxsIHN1cnZpdmUgdGhlIGV4cGlyYXRpb24gb3IgdGVybWluYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVGVybWluYXRpb24gc2hhbGwgbm90IGFmZmVjdCBhbnkgcmlnaHRzIG9yIG9ibGlnYXRpb25zIG9mIHRoZSBwYXJ0aWVzIGluY3VycmVkIHByaW9yIHRvIHRoZSBkYXRlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybWluYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdW5sZXNzIG90aGVyd2lzZSBhZ3JlZWQgYmV0d2VlbiB0aGUgcGFydGllcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE0LiBBY2Nlc3MgdG8gQW5hbHl0aWNzIHZpYSBXZWIgUG9ydGFsICYgRXhjZWwgUmVwb3J0c8KgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBhbmFseXRpY3MgaXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoIGEpIHdlYi1iYXNlZFxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uLCBiKSBleGNlbCByZXBvcnRzIHNlbnQgdmlhIGVtYWlsIG9yIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRyYWluaW5nOiBBbGwg4oCcU29mdHdhcmXigJ0gdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgU2VydmljZXMuIEZvciBhdm9pZGFuY2Ugb2YgZG91YnQsIGl0IGlzIGNsYXJpZmllZCB0aGF0IFRhbmdvIEV5ZSBhZ3JlZXMgdG8gcHJvdmlkZSBzYW1wbGUgZGFzaGJvYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgYW5kIGFycmFuZ2UgZm9yIHRyYWluaW5nIHNlc3Npb25zIHRvIHRoZSBDdXN0b21lciBhcyBtdXR1YWxseSBhZ3JlZWQgYnkgdGhlIFBhcnRpZXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xNS4gQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkFsbCBwcm9wcmlldGFyeSBvciBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24sIHRlY2huaWNhbCBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yIGtub3ctaG93IGFuZCBhbGwgb3RoZXIgbm9uLXB1YmxpYyBpbmZvcm1hdGlvbiwgbWF0ZXJpYWwgb3IgZGF0YSBpbiB3aGF0ZXZlciBmb3JtIG9yIG1vZGUgb2ZcclxuICAgICAgICAgICAgICAgICAgICBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyBkaXNjbG9zZWQgYnkgYSBwYXJ0eSAo4oCcRGlzY2xvc2luZyBQYXJ0eeKAnSkgdG8gdGhlIG90aGVyIHBhcnR5ICjigJxSZWNlaXZpbmdcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0eeKAnSkgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBTb2Z0d2FyZSBhY2Nlc3MgYW5kIHVzYWdlIHdoZXRoZXIgbWFya2VkIGFzIOKAnGNvbmZpZGVudGlhbOKAnSBvciBub3QgYXRcclxuICAgICAgICAgICAgICAgICAgICB0aGUgdGltZSBvZiBkaXNjbG9zdXJlLCBzaGFsbCBiZSB0cmVhdGVkIGFzIOKAnENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbuKAnS4gQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgc2hhbGwgaW5jbHVkZSwgYnV0IG5vdCBiZSBsaW1pdGVkIHRvLCB0aGUgdGVybXMgYW5kIHByaWNpbmcvY29tbWVyY2lhbCB0ZXJtcyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSB0ZWNobmljYWwgYW5kIG90aGVyIHNwZWNpZmljYXRpb25zIG9mIHRoZSBTb2Z0d2FyZSwgYW55IGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBzb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgY29kZXMgYW5kIGNvbnRlbnQgYXMgd2VsbCBhcyB0aGUgc29mdHdhcmUgYW5kIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSBhbmQgY29tcG9uZW50cywgYW5kIGFsbFxyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyIG5vbi1wdWJsaWMgaW5mb3JtYXRpb24uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBSZWNlaXZpbmcgUGFydHkgdW5kZXJ0YWtlczogKGkpIG5vdCB0byB1c2UgQ29uZmlkZW50aWFsXHJcbiAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gb3RoZXJ3aXNlIHRoYW4gZm9yIHRoZSBwdXJwb3NlIGZvciB3aGljaCBpdCB3YXMgZGlzY2xvc2VkIG9yIHRvIHBlcm1pdCB0aGUgUmVjZWl2aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgUGFydHkgdG8gZXhlcmNpc2UgcmlnaHRzIGFuZCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgOyAoaWkpIG5vdCB0byBkaXNjbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiB3aXRob3V0IHRoZSBwcmlvciB3cml0dGVuIGNvbnNlbnQgb2YgdGhlIERpc2Nsb3NpbmcgUGFydHksIG90aGVyIHRoYW4gdG9cclxuICAgICAgICAgICAgICAgICAgICB0aG9zZSBlbXBsb3llZXMsIGFnZW50cywgY29udHJhY3RvcnMsIHN1YmNvbnRyYWN0b3JzLCBsaWNlbnNlZXMgb2YgdGhlIFJlY2VpdmluZyBQYXJ0eSwgaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgQWZmaWxpYXRlcyBvciBhbnkgb3RoZXIgcGFydGllcyB3aG8gaGF2ZSBhIG5lZWQgdG8ga25vdyBpdCBpbiBvcmRlciB0byBhc3Npc3QgdGhlIFJlY2VpdmluZyBQYXJ0eSBpblxyXG4gICAgICAgICAgICAgICAgICAgIHBlcmZvcm1pbmcgaXRzIG9ibGlnYXRpb25zLCBvciB0byBwZXJtaXQgdGhlIFJlY2VpdmluZyBQYXJ0eSB0byBleGVyY2lzZSBpdHMgcmlnaHRzwqAgYW5kIGxpY2Vuc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IChpaWkpIHRvIHRha2UgYWxsIHN1Y2ggc3RlcHMgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzIHRvIHRoZSBEaXNjbG9zaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgUGFydHnigJlzIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiwgYXMgaXQgdGFrZXMgdG8gcHJvdGVjdCBpdHMgb3duIGNvbmZpZGVudGlhbCBvciBwcm9wcmlldGFyeVxyXG4gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9mIGEgc2ltaWxhciBuYXR1cmUsIHdoaWNoIHN0ZXBzIHNoYWxsIGluIG5vIGV2ZW50IGJlIGxlc3MgdGhhbiBhIHJlYXNvbmFibGUgc3RhbmRhcmQgb2ZcclxuICAgICAgICAgICAgICAgICAgICBjYXJlOyBhbmQgaXYpIHRvIHJldHVybiB0byB0aGUgQ3VzdG9tZXIsIG9yIGRlc3Ryb3ksIG9uIHJlcXVlc3QgYWxsIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiB0aGF0XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gZGlzY2xvc2VkIHRvIHRoZW0sIGluY2x1ZGluZyBhbGwgY29waWVzIHRoZXJlb2YgYW5kIHRvIGRlbGV0ZSBhbGwgaW5mb3JtYXRpb24gc3RvcmVkIGluIGFcclxuICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXJlYWRhYmxlIGZvcm0gdG8gdGhlIGV4dGVudCBwcmFjdGljYWxseSBwb3NzaWJsZSwgc3ViamVjdCB0byBhbnkgcmlnaHRzIG9yIGxpY2Vuc2VzIGdyYW50ZWRcclxuICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIG9ibGlnYXRpb25zIGluIHJlbGF0aW9uIHRvIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZXNlIFNhYVMgVGVybXPCoCBzaGFsbCBub3QgYXBwbHkgdG8gQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uLCB3aGljaCAoaSkgaGFzIGJlY29tZSBvciBiZWNvbWVzXHJcbiAgICAgICAgICAgICAgICAgICAgcHVibGljbHkgYXZhaWxhYmxlIGJ5IG1lYW5zIG90aGVyIHRoYW4gYSBicmVhY2ggb2YgY29uZmlkZW50aWFsaXR5IG9ibGlnYXRpb25zOyAoaWkpIHdhcyBhbHJlYWR5XHJcbiAgICAgICAgICAgICAgICAgICAga25vd24gdG8gdGhlIFJlY2VpdmluZyBQYXJ0eSBwcmlvciB0byBkaXNjbG9zdXJlOyAoaWlpKSB0aGUgUmVjZWl2aW5nIFBhcnR5IGlzIHJlcXVpcmVkIHRvIGRpc2Nsb3NlXHJcbiAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gY29tcGx5IHdpdGggYXBwbGljYWJsZSBsYXdzIG9yIHJlZ3VsYXRpb25zIG9yIHdpdGggYSBjb3VydCBvciBhZG1pbmlzdHJhdGl2ZSBvcmRlcjsgb3JcclxuICAgICAgICAgICAgICAgICAgICAoaXYpIGlzIGluZGVwZW5kZW50bHkgZGV2ZWxvcGVkIGJ5IHRoZSBSZWNlaXZpbmcgUGFydHkgd2l0aG91dCByZWZlcmVuY2UgdG8gb3IgdXNlIG9mIGFueVxyXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBvZiB0aGUgRGlzY2xvc2luZyBQYXJ0eS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIFJlY2VpdmluZyBQYXJ0eSBzaGFsbCBwcm9tcHRseSwgYW5kIGluIGFueSBjYXNlIHdpdGhpblxyXG4gICAgICAgICAgICAgICAgICAgIHRocmVlICgzKSBkYXlzIGFkdmlzZSB0aGUgRGlzY2xvc2luZyBQYXJ0eSBpbiB3cml0aW5nIG9mIGFueSB1bmF1dGhvcml6ZWQgZGlzY2xvc3VyZSxcclxuICAgICAgICAgICAgICAgICAgICBtaXNhcHByb3ByaWF0aW9uIG9yIG1pc3VzZSBvZiBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gYWZ0ZXIgaXQgYmVjb21lcyBhd2FyZSBvZiBpdCBhbmQgdmljZSB2ZXJzYS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+SWYgZWl0aGVyIHBhcnR5IGJlY29tZXMgYXdhcmUgdGhhdCBpdCB3aWxsIGJlIHJlcXVpcmVkLCBvclxyXG4gICAgICAgICAgICAgICAgICAgIGlzIGxpa2VseSB0byBiZSByZXF1aXJlZCwgdG8gZGlzY2xvc2UgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIGluIG9yZGVyIHRvIGNvbXBseSB3aXRoIGFwcGxpY2FibGVcclxuICAgICAgICAgICAgICAgICAgICBsYXdzIG9yIHJlZ3VsYXRpb25zIG9yIHdpdGggYSBjb3VydCBvciBhZG1pbmlzdHJhdGl2ZSBvcmRlciwgaXQgc2hhbGwsIHRvIHRoZSBleHRlbnQgaXQgaXMgbGF3ZnVsbHlcclxuICAgICAgICAgICAgICAgICAgICBhYmxlIHRvIGRvIHNvLCBwcmlvciB0byBhbnkgc3VjaCBkaXNjbG9zdXJlIG5vdGlmeSB0aGUgb3RoZXIgcGFydHksIGFuZCBjb21wbHkgd2l0aCB0aGUgb3RoZXJcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0eeKAmXMgaW5zdHJ1Y3Rpb25zIHRvIHByb3RlY3QgdGhlIGNvbmZpZGVudGlhbGl0eSBvZiB0aGUgaW5mb3JtYXRpb24uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xNi4gSW5kZW1uaXR5IGFuZCBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBXaXRob3V0IHByZWp1ZGljZSB0byBhbnkgb3RoZXIgcmlnaHQgYXZhaWxhYmxlIGluIGxhdyBvciB1bmRlciBlcXVpdHksIGVhY2ggcGFydHkgaGVyZWJ5IGFncmVlcyB0b1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBlbnNhdGUsIGluZGVtbmlmeSwgZGVmZW5kIGFuZCBob2xkIGhhcm1sZXNzIHRoZSBvdGhlciwgaXRzIGFmZmlsaWF0ZXMsIGRpcmVjdG9ycywgc2hhcmVob2xkZXJzLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZmljZXJzIGFuZCBlbXBsb3llZXMgYW5kIGFnZW50cywgZnJvbSBhbmQgYWdhaW5zdCBhbnkgYW5kIGFsbCBsb3NzZXMsIGxpYWJpbGl0aWVzLCBkYW1hZ2VzLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmljaWVuY2llcywgZGVtYW5kcywgY2xhaW1zIChpbmNsdWRpbmcgdGhpcmQgcGFydHkgY2xhaW1zKSwgYWN0aW9ucywganVkZ21lbnRzIG9yIGNhdXNlcyBvZlxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiwgYXNzZXNzbWVudHMsIGludGVyZXN0LCBwZW5hbHRpZXMgYW5kIG90aGVyIGNvc3RzIG9yIGV4cGVuc2VzIChpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICByZWFzb25hYmxlIGF0dG9ybmV5cycgZmVlcyBhbmQgZXhwZW5zZXMpIGJhc2VkIHVwb24sIGFyaXNpbmcgb3V0IG9mLCBvciBpbiByZWxhdGlvbiB0byBvciBvdGhlcndpc2VcclxuICAgICAgICAgICAgICAgICAgICBpbiByZXNwZWN0IG9mIChpKSBhbnkgYnJlYWNoIG9mIGl0cyBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIDsgb3IgKGlpKSBhbnkgd2lsbGZ1bFxyXG4gICAgICAgICAgICAgICAgICAgIG1pc2NvbmR1Y3QsIGZyYXVkLCBvciB3cm9uZ2Z1bCBvciBuZWdsaWdlbnQgYWN0IG9yIG9taXNzaW9uIG9mIGEgUGFydHkuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBJbiBubyBldmVudCBzaGFsbCBlaXRoZXIgUGFydHkgYmUgbGlhYmxlIHRvIHRoZSBvdGhlciBmb3IgYW55IGluZGlyZWN0LCBpbmNpZGVudGFsLCBwdW5pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICBleGVtcGxhcnksIHNwZWNpYWwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBvciBkYW1hZ2VzIGZvciBsb3NzIG9mIHByb2ZpdHMsIHJldmVudWUsIHdoZXRoZXIgaW4gYW5cclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gaW4gY29udHJhY3Qgb3IgdG9ydCwgb3Igb3RoZXJ3aXNlIChjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG8gYXMg4oCcSW5kaXJlY3QgTG9zc2Vz4oCdKSBldmVuIGlmXHJcbiAgICAgICAgICAgICAgICAgICAgYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRWFjaCBQYXJ0eeKAmXMgbGlhYmlsaXR5IGFyaXNpbmcgb3V0IG9mIG9yIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgYnJlYWNoIG9mIGFueSBkaXJlY3QgYW5kIGFjdHVhbFxyXG4gICAgICAgICAgICAgICAgICAgIGxpYWJpbGl0aWVzLCBjb3N0cywgbG9zc2VzLCBkYW1hZ2VzLCBzdWl0cywgcHJvY2VlZGluZ3MsIGNvc3RzLCBleHBlbnNlcyBvciBsaWFiaWxpdGllcyBzdWZmZXJlZCBvclxyXG4gICAgICAgICAgICAgICAgICAgIGluY3VycmVkIGR1ZSB0byByZXN1bHRpbmcgZHVlIHRvIGNsYWltcyBmb3IgYnJlYWNoIG9mIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhIFBhcnR5IG9yIHRoaXJkXHJcbiAgICAgICAgICAgICAgICAgICAgcGFydHksIGJyZWFjaCBvZiBjb25maWRlbnRpYWxpdHkgb2JsaWdhdGlvbiwgZGF0YSBicmVhY2gsIGJyZWFjaCBvZiBkYXRhIHByaXZhY3ksIGZyYXVkLCB3aWxsZnVsXHJcbiAgICAgICAgICAgICAgICAgICAgbmVnbGlnZW5jZSwgZ3Jvc3MgbWlzY29uZHVjdCBvciBicmVhY2ggb2YgYXBwbGljYWJsZSBsYXdzIHNoYWxsIGluIG5vIGV2ZW50IGV4Y2VlZCB0aGUgYW5udWFsIHRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2UgcHJpY2UgcGFpZCBwdXJzdWFudCB0byBncmFudCBvZiBhY2Nlc3MgYW5kIHVzYWdlIG9mIHRoZSBTZXJ2aWNlcy9Tb2Z0d2FyZSBieSB0aGUgQ3VzdG9tZXIuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xNy4gRm9yY2UgTWFqZXVyZSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFYWNoIG9mIHRoZSBQYXJ0aWVzIGlzIG5vdCByZXNwb25zaWJsZSBub3IgbGlhYmxlIGZvciBhbnkgZGVsYXlzIG9yIGZhaWx1cmVzIGluIHBlcmZvcm1hbmNlIGZyb20gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgY2F1c2UgYmV5b25kIGl0cyBjb250cm9sLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byBhY3RzIG9mIEdvZCwgY2hhbmdlcyB0byBsYXcgb3IgcmVndWxhdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1iYXJnb2VzLCB3YXIsIHRlcnJvcmlzdCBhY3RzLCBhY3RzIG9yIG9taXNzaW9ucyBvZiB0aGlyZCBwYXJ0eSB0ZWNobm9sb2d5IHByb3ZpZGVycywgcmlvdHMsIGZpcmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGVhcnRocXVha2VzLCBmbG9vZHMsIHBvd2VyIGJsYWNrb3V0cywgc3RyaWtlcywgd2VhdGhlciBjb25kaXRpb25zLCBwYW5kZW1pYywgZXBpZGVtaWMsIGdvdmVybm1lbnRcclxuICAgICAgICAgICAgICAgICAgICBsb2NrZG93bnMgb3IgYW55IG90aGVyIHVuZm9yZXNlZWFibGUgZXZlbnQgYmV5b25kIGl0cyBjb250cm9sIChoZXJlaW5hZnRlciBjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG9cclxuICAgICAgICAgICAgICAgICAgICBhcyDigJxGb3JjZSBNYWpldXJlIEV2ZW504oCdKS4gVXBvbiBvY2N1cnJlbmNlIG9mIGFueSBGb3JjZSBNYWpldXJlIEV2ZW50LCBlaXRoZXIgUGFydHkgc2hhbGwgZ2l2ZVxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGljZSB0byB0aGUgb3RoZXIgcGFydHkgb2YgaXRzIGluYWJpbGl0eSB0byBwZXJmb3JtIG9yIG9mIGRlbGF5IGluIGNvbXBsZXRpbmcgaXRzIG9ibGlnYXRpb25zIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIG11c3QgYWN0IGRpbGlnZW50bHkgdG8gcmVtZWR5IHRoZSBjYXVzZSBhbmQgcmVzdG9yZSBwZXJmb3JtYW5jZSwgdG8gdGhlIGV4dGVudCBwb3NzaWJsZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFdoZXJlIEZvcmNlLU1hamV1cmUgRXZlbnQgY29udGludWVzIGZvciBhIHBlcmlvZCBtb3JlIHRoYW4gU2l4dHkgKDYwKSBjb250aW51b3VzIGRheXMsIHRoZW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgZWZmZWN0ZWQgUGFydHkgc2hhbGwgaGF2ZSB0aGUgcmlnaHQgdG8gaW1tZWRpYXRlbHkgdGVybWluYXRlIHRoZXNlIFNhYVMgVGVybXMgQWdyZWVtZW50IGJ5IHByb3ZpZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIGEgd3JpdHRlbiBub3RpY2UuwqA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xOC4gTWFpbnRlbmFuY2UgU2VydmljZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViIG15LTFcIj5EdXJpbmcgdGhlIFRlcm0s4oCvVGFuZ28gRXllIHdpbGwgcHJvdmlkZSB0aGUgTWFpbnRlbmFuY2UgU2VydmljZXMgaW4gYWNjb3JkYW5jZSB3aXRoXHJcbiAgICAgICAgICAgICAgICB0aGUgU2VydmljZSBMZXZlbHMgZHVyaW5nIHRoZSBTdXBwb3J0IEhvdXJzIHByb3ZpZGVkIHRoYXQ8L2Rpdj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXQtMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgWW91IHByb3ZpZGUgTWFpbnRlbmFuY2UgU2VydmljZXMgd2l0aCBub3RpY2UgZm9yIGFwcGxpY2FibGUgTWFpbnRlbmFuY2UgU2VydmljZXMgaW4gYWNjb3JkYW5jZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgYW55IGFwcGxpY2FibGUgc3lzdGVtIGFuZCBwcm9jZXNzZXMgYXMgc2V0IG91dCBvbiB0aGUgdW5kZXItQW5uZXh1cmUgQSB0byB0aGVzZSBTYWFTIFRlcm1zOyBhbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHdoZXJlIHJlcXVpcmVkLCBZb3Ugd2lsbCBhc3Npc3Qgd2l0aCBpbnZlc3RpZ2F0aW5nIGFuZCBhc2NlcnRhaW5pbmcgdGhlIGNhdXNlIG9mIHRoZSBmYXVsdCBhbmRcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyB0byBUYW5nbyBFeWUgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiByZWxldmFudCB0byB0aGUgZmF1bHQgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG9cclxuICAgICAgICAgICAgICAgICAgICB3aGF0IFlvdSBvciB5b3VyIHBlcnNvbm5lbCBoYXZlIGRvbmUgaW4gcmVsYXRpb24gdG8gdGhlIGZhdWx0KS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xOS4gTWlzY2VsbGFuZW91cy4gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVGhlc2UgU2FhUyBUZXJtcyBpcyBkcmF3biB1cCBpbiBFbmdsaXNoLCB3aGljaCBsYW5ndWFnZSBzaGFsbCBnb3Zlcm4gYWxsIGRvY3VtZW50cywgbm90aWNlcyxcclxuICAgICAgICAgICAgICAgICAgICBtZWV0aW5ncywgcHJvY2VlZGluZ3MgYW5kIHByb2Nlc3NlcyByZWxhdGl2ZSB0aGVyZXRvLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBOb3RoaW5nIGluIHRoZXNlIFNhYVMgVGVybXMgc2hhbGwgYmUgZGVlbWVkIHRvIGNvbnN0aXR1dGUgYSBqb2ludCB2ZW50dXJlLCBhZ2VuY3ksIHBhcnRuZXJzaGlwLFxyXG4gICAgICAgICAgICAgICAgICAgIGludGVyZXN0IGdyb3VwaW5nIG9yIGFueSBvdGhlciBraW5kIG9mIGZvcm1hbCBidXNpbmVzcyBncm91cGluZyBvciBlbnRpdHkgYmV0d2VlbiB0aGUgUGFydGllcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTm8gcmlnaHRzIG9yIG9ibGlnYXRpb25zIG9mIHRoZSBQYXJ0aWVzIGFyaXNpbmcgZnJvbSB0aGVzZSBTYWFTIFRlcm1zIG1heSBiZSBhc3NpZ25lZCxcclxuICAgICAgICAgICAgICAgICAgICBzdWItY29udHJhY3RlZCwgb3IgdHJhbnNmZXJyZWQsIGluIHdob2xlIG9yIGluIHBhcnQsIHRvIGFueSB0aGlyZCBwYXJ0eSB3aXRob3V0IHRoZSBvdGhlciBwYXJ0eeKAmXNcclxuICAgICAgICAgICAgICAgICAgICBwcmlvciB3cml0dGVuIGFwcHJvdmFsLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBHb3Zlcm5pbmcgTGF3LCBKdXJpc2RpY3Rpb24uIFRoZXNlIFNhYVMgVGVybXMgc2hhbGwgYmUgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgSW5kaWEsIGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0aWVzIGhlcmVieSBhZ3JlZSB0byBpcnJldm9jYWJseSBzdWJtaXQgdG8gdGhlIGV4Y2x1c2l2ZSBqdXJpc2RpY3Rpb24gb2YgdGhlIGNvdXJ0cyBvZiBOZXcgRGVsaGlcclxuICAgICAgICAgICAgICAgICAgICBpbiByZXNwZWN0IG9mIGFsbCBkaXNwdXRlcyBhcmlzaW5nIG91dCBvZiB0aGVzZSBTYWFTIFRlcm1zLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgZy0wIG1iLTAgYmctdGVybXNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2stY3VzdG9tIGZvcm0tY2hlY2stc29saWQgZm9ybS1jaGVjay1pbmxpbmUgXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByZXF1aXJlZCBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGV0ZXJtcygkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LWJvbGQgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dHNpemUgbXQtM1wiPkkgYWdyZWUgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zLjwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIXRlcm1zXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtcy0xNSBtZS01IHRleHQtbm93cmFwXCIgKGNsaWNrKT1cImVudGVycHJpc2VhY3RpdmF0ZSgpXCI+XHJcbiAgICAgICAgICAgIFNpZ24gVXBcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwib3ZlcmxheVwiICpuZ0lmPVwic2hvd3ZhbHVlXCI+XHJcblx0PGRpdiBjbGFzcz1cInBvcHVwXCI+XHJcblx0XHQ8aDEgY2xhc3M9XCJhLW8taVwiPlZlcmlmaWNhdGlvbiBDb2RlPC9oMT5cclxuICAgICAgICA8aDUgY2xhc3M9XCJzdWItYW9pXCI+QW4gT1RQIGhhcyBiZWVuIHNlbnQgdG8geW91ciBtYWlsLiBQbGVhc2UgY2hlY2sgJiBzdWJtaXQuPC9oNT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3RwLWNvbnRhaW5lciBkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm90cC1pbnB1dCBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1vdHAtaW5wdXQgI25nT3RwSW5wdXQgKG9uSW5wdXRDaGFuZ2UpPVwib25PdHBDaGFuZ2UoJGV2ZW50KVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBjbGFzcz1cInZlcmlmaWNhdGlvbi1jb2RlXCIgcGxhY2Vob2xkZXI9XCIwXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7IGxlbmd0aDogNCAsYWxsb3dOdW1iZXJzT25seTp0cnVlfVwiPjwvbmctb3RwLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaW52YWxpZE90cFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdGV4dC1kYW5nZXJcIiA+XHJcbiAgICAgICAgICAgIEludmFsaWQgT1RQICFcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwicmVzZW5kXCIgY2xhc3M9XCJzbWFsbF9sZyBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNlbmRPVFAoKVwiPjxiPlJlc2VuZCBPVFA8L2I+PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFyZXNlbmRcIiBjbGFzcz1cInNtYWxsX2xibCBcIiA+UmVzZW5kIE9UUCAoIHt7Y291bnRlclxyXG4gICAgICAgICAgICAgfX0gKTwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbWUtNSB3LTEwMCB0ZXh0LW5vd3JhcFwiIChjbGljayk9XCJvdHBzdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgU3VibWl0XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAzL3N0ZXAzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFXM0MsTUFBTSxPQUFPLGNBQWM7SUFzRGhCO0lBQWdDO0lBQWlDO0lBQXVCO0lBQThCO0lBckQvSCxVQUFVLEdBQVcsRUFBRSxDQUFDLENBQUMsc0JBQXNCO0lBQy9DLFFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBQyx3QkFBd0I7SUFDbkQsU0FBUyxHQUFZLEtBQUssQ0FBQyxDQUFDLHVCQUF1QjtJQUNuRCxVQUFVLEdBQVksS0FBSyxDQUFDLENBQUMsMEJBQTBCO0lBQ3ZELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBQ0Msd0NBQXdDO0lBQ3hDLGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFSCwyQ0FBMkM7SUFDM0MsY0FBYztRQUNaLElBQUksTUFBTSxHQUFnQixFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7UUFD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Q0ksYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbnRlcmZhY2UgSW5wdXRTdHlsZXMge1xyXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZzsgLy8gRGVmaW5lIGtleS12YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzdHJpbmdzIGFuZCB2YWx1ZXMgYXJlIHN0cmluZ3NcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdGVwMycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RlcDMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGVwM0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJzsgLy8gSW5pdGlhbCBpbnB1dCB2YWx1ZVxyXG4gIGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgZm9yIGFjdGl2ZSBzdGF0ZVxyXG4gIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBGbGFnIGZvciBob3ZlciBzdGF0ZVxyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRmxhZyBmb3IgZGlzYWJsZWQgc3RhdGVcclxuICBvbk1vdXNlRW50ZXIoKSB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBoYW5kbGUgbW91c2UgbGVhdmUgZXZlbnRcclxuICBvbk1vdXNlTGVhdmUoKSB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xyXG4gIH1cclxuICAgIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSBpbnB1dCBjaGFuZ2UgZXZlbnRcclxuICAgIG9uSW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gZ2V0IGlucHV0IHN0eWxlcyBkeW5hbWljYWxseVxyXG4gIGdldElucHV0U3R5bGVzKCk6IElucHV0U3R5bGVzIHtcclxuICAgIGxldCBzdHlsZXM6IElucHV0U3R5bGVzID0ge307IC8vIERlZmluZSBzdHlsZXMgb2JqZWN0IHdpdGggdHlwZSBJbnB1dFN0eWxlc1xyXG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICdibHVlJzsgLy8gQm9yZGVyIGNvbG9yIHdoZW4gaW5wdXQgaXMgYWN0aXZlXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNIb3ZlcmVkKSB7XHJcbiAgICAgIHN0eWxlc1snYm9yZGVyLWNvbG9yJ10gPSAnZ3JlZW4nOyAvLyBCb3JkZXIgY29sb3Igd2hlbiBpbnB1dCBpcyBob3ZlcmVkXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICBzdHlsZXNbJ2JvcmRlci1jb2xvciddID0gJyNjY2MnOyAvLyBCb3JkZXIgY29sb3Igd2hlbiBpbnB1dCBpcyBkaXNhYmxlZFxyXG4gICAgICBzdHlsZXNbJ2NvbG9yJ10gPSAnIzk5OSc7IC8vIFRleHQgY29sb3Igd2hlbiBpbnB1dCBpcyBkaXNhYmxlZFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICcjY2NjJzsgLy8gRGVmYXVsdCBib3JkZXIgY29sb3JcclxuICAgICAgc3R5bGVzWydjb2xvciddID0gJyMzMzMnOyAvLyBEZWZhdWx0IHRleHQgY29sb3JcclxuICAgIH1cclxuICAgIHJldHVybiBzdHlsZXM7XHJcbiAgfVxyXG4gIHBhbmVsT3BlblN0YXRlID0gZmFsc2U7XHJcbiAgdGVybXNhbmRjb25kaXRpb246IGFueTtcclxuICB0eXBlOiBhbnk7XHJcbiAgYWNjb3VudERhdGE6IGFueTtcclxuICB0ZXJtczogYW55O1xyXG4gIGlkdmFsdWU6IGFueTtcclxuICBlbWFpbDogYW55O1xyXG4gIHNob3d2YWx1ZTogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbmdPdHBJbnB1dCcpIG5nT3RwSW5wdXRSZWY6IGFueTtcclxuICBjb3VudGVyOiBudW1iZXI7XHJcbiAgdGljazogbnVtYmVyO1xyXG4gIHJlc2VuZDogYm9vbGVhbiA9dHJ1ZTtcclxuICBjb3VudERvd246IGFueTtcclxuICBvdHA6IGFueTtcclxuICBhYm91dEZvcm1EYXRhOiBhbnk7XHJcbiAgcHJpY2luZ0Zvcm1EYXRhOiBhbnk7XHJcbiAgcmV0dXJuVXJsOiBhbnk7XHJcbiAgaW52YWxpZE90cDpib29sZWFuID0gZmFsc2VcclxuICBzdWJzY3JpcHRpb25zOlN1YnNjcmlwdGlvbltdID0gW11cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIGF1dGhTZXJ2aWNlOkF1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsIHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWZcclxuKXtcclxuICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmF1dGhTZXJ2aWNlLmFib3V0Rm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMuYWJvdXRGb3JtRGF0YSA9IGRhdGF9fSkpXHJcbiAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hdXRoU2VydmljZS5wcmljaW5nRm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMucHJpY2luZ0Zvcm1EYXRhID0gZGF0YX19KSlcclxufVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbik9PntcclxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gZ2V0IHJldHVybiB1cmwgZnJvbSByb3V0ZSBwYXJhbWV0ZXJzIG9yIGRlZmF1bHQgdG8gJy8nXHJcbiAgdGhpcy5yZXR1cm5VcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydyZXR1cm5VcmwnLnRvU3RyaW5nKCldIHx8ICcvJzsgICAgICBcclxufVxyXG4gIHVwZGF0ZXRlcm1zKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLnRlcm1zID0gZXZ0LnRhcmdldC5jaGVja2VkXHJcbiAgfVxyXG5cclxuICBlbnRlcnByaXNlYWN0aXZhdGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOnRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICBlbWFpbDp0aGlzLmFib3V0Rm9ybURhdGE/LmNvcnBvcmF0ZUVtYWlsXHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNlbmRTaWdudXBPdHAoZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RG93biA9IHRpbWVyKDAsIHRoaXMudGljaykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50RG93bi51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdvdmVybGF5LW9wZW4nKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93dmFsdWUgPXRydWUgXHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjoocmVzKT0+e1xyXG4gICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICB0aGlzLnRpY2sgPSAxMDAwO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICBcclxuICAgICAgICAgIHRoaXMuY291bnREb3duID0gdGltZXIoMCwgdGhpcy50aWNrKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duLnVuc3Vic2NyaWJlKClcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLmNvdW50ZXIgLSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ292ZXJsYXktb3BlbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPXRydWUgXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgcmVzZW5kT1RQKCkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIG5hbWU6dGhpcy5hYm91dEZvcm1EYXRhPy5maXJzdE5hbWUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYWJvdXRGb3JtRGF0YT8uY29ycG9yYXRlRW1haWxcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2VuZFNpZ251cE90cChkYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIHtcclxuICAgICAgICBuZXh0OihyZXMpPT57XHJcbiAgICAgICAgICBpZihyZXMpe1xyXG4gICAgICAgICAgICB0aGlzLm5nT3RwSW5wdXRSZWYuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSA2MDtcclxuICAgICAgICAgICAgdGhpcy50aWNrID0gMTAwMDtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLnJlc2VuZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMuY291bnREb3duID0gdGltZXIoMCwgdGhpcy50aWNrKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY291bnRlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duLnVuc3Vic2NyaWJlKClcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gdGhpcy5jb3VudGVyIC0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6KHJlcyk9PntcclxuICAgICAgICAgIHRoaXMubmdPdHBJbnB1dFJlZi5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICB0aGlzLmNvdW50ZXIgPSA2MDtcclxuICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnJlc2VuZCA9IGZhbHNlO1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5jb3VudERvd24gPSB0aW1lcigwLCB0aGlzLnRpY2spLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY291bnRlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd24udW5zdWJzY3JpYmUoKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICAgIClcclxuICB9XHJcbiAgb3Rwc3VibWl0KCl7XHJcbiAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnROYW1lOiB0aGlzLmFib3V0Rm9ybURhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICBmaXJzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICAgbGFzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8ubGFzdE5hbWUsXHJcbiAgICAgICBjb3Jwb3JhdGVFbWFpbDogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3Jwb3JhdGVFbWFpbCxcclxuICAgICAgIG1vYmlsZU51bWJlcjogdGhpcy5hYm91dEZvcm1EYXRhPy5tb2JpbGVOdW1iZXIsXHJcbiAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3VudHJ5Q29kZSxcclxuICAgICAgIHBhc3N3b3JkOiB0aGlzLmFib3V0Rm9ybURhdGE/LnBhc3N3b3JkLFxyXG4gICAgICAgdG90YWxTdG9yZXM6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy50b3RhbFN0b3Jlcy52YWx1ZSxcclxuICAgICAgIHN0b3JlU2l6ZTp0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3RvcmVTaXplLnZhbHVlLFxyXG4gICAgICAgdG90YWxDYW1lcmE6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdG9yZVNpemU/LmNhbWVyYXMsXHJcbiAgICAgICBzdWJzY3JpcHRpb25QZXJpb2Q6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdWJzY3JpcHRpb25QZXJpb2QsXHJcbiAgICAgICBzdWJzY3JpcHRpb25UeXBlOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3Vic2NyaXB0aW9uVHlwZSxcclxuICAgICAgIHByb2R1Y3Q6IHRoaXMuZ2V0VHJ1ZUtleXModGhpcy5wcmljaW5nRm9ybURhdGE/LnByb2R1Y3QpLFxyXG4gICAgICAgIG90cDp0aGlzLm90cFxyXG4gICB9XHJcbiAgIFxyXG5cclxuICAgdGhpcy5hdXRoU2VydmljZS5zaWdudXAoZGF0YSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlcyk9PntcclxuICAgICAgaWYocmVzKXtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmFib3V0Rm9ybURhdGEubmV4dChudWxsKVxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJpY2luZ0Zvcm1EYXRhLm5leHQobnVsbClcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzTG9nZ2VkSW4nLCAndHJ1ZScpXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yZXR1cm5VcmwpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmxheS1vcGVuJyk7XHJcbiAgICAgIHRoaXMuc2hvd3ZhbHVlID1mYWxzZSBcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgIH0sXHJcbiAgICAgZXJyb3I6KHJlcyk9PntcclxuICAgICAgaWYocmVzKXtcclxuICAgICAgdGhpcy5pbnZhbGlkT3RwID0gdHJ1ZVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9XHJcbiAgICAgfSxcclxuICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBvbk90cENoYW5nZShldmVudDphbnkpe1xyXG4gICAgdGhpcy5pbnZhbGlkT3RwID0gZmFsc2VcclxuICAgIHRoaXMub3RwID0gZXZlbnRcclxuICB9XHJcblxyXG4gIGdldFRydWVLZXlzKG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5maWx0ZXIoa2V5ID0+IG9ialtrZXldID09PSB0cnVlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAgY2xhc3M9XCJjYXJkIG10LTEwIG14LTE1XCI+XHJcbjxkaXYgaWQ9XCJrdF9jb250ZW50X2NvbnRhaW5lclwiIGNsYXNzPVwiY29udGFpbmVyLXh4bCBmb250IGgtMTAwICBteC0xMCBwZS0xNSBteS03XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC01NTBweCBzdGlja3lcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLW1kLTEyIGNvbC1zbS0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItMCBtdC01IHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbiBmcy1sZy0xIG1iLTQgdGV4dC1ncmF5LTgwMFwiPlNhYVMgVEVSTVMgQU5EIENPTkRJVElPTlM8L3NwYW4+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIHRleHQtbXV0ZWQgZnctc2VtaWJvbGQgbWUtMSBzdWJcIj5UaGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyAoaGVyZWluYWZ0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RpdmVseSByZWZlcnJlZCB0byBhc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg4oCcU0FBUyBUZXJtc+KAnSkgc2hhbGwgZ292ZXJuIHlvdXIgKOKAnFVzZXLigJ0gb3Ig4oCcWW914oCdIG9yIOKAnFlvdXLigJ0gb3Ig4oCcQ3VzdG9tZXLigJ0pIHVzZSBvZiBUYW5nbyBFeWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgYW5hbHl0aWNzIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3MgaW50ZWxsaWdlbmNlIHNvZnR3YXJlIChjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG8gYXMg4oCcU29mdHdhcmXigJ0pIHdoaWNoIGlzIGFjY2Vzc2libGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBDdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCBUYW5nbyBFeWUgd2Vic2l0ZSBodHRwczovL3JldGFpbC50YW5nb2V5ZS5haS9hdXRoL2xvZ2luIChXZWJzaXRlKS4gQnkgYWNjZXNzaW5nIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIFdlYnNpdGUsIFlvdSBpbiB5b3VyIGluZGl2aWR1YWwgY2FwYWNpdHkgYW5kIG9yIGlmIHlvdSBhcmUgcmVwcmVzZW50aW5nIGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgdGhlbiBZb3UgYW5kIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5IFlvdSBhcmUgYXV0aG9yaXplZCB0byByZXByZXNlbnQgc2lnbmlmeSB5b3VyIGFncmVlbWVudCB0byBiZSBib3VuZCBieSB0aGVzZSBTYWFTXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiB1c2Ugd2hpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2N1cmluZyB0aGUgU2VydmljZXMgZnJvbSBUYW5nby4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiB0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIG1lLTEgbXktNSBzdWJcIj5UYW5nbyBFeWUgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeSwgYW1lbmQsIHVwZGF0ZSwgc3VzcGVuZCBvciBkaXNjb250aW51ZSB0aGUgd2hvbGUgb3IgYW55IHBvcnRpb24gb2YgdGhlIFNlcnZpY2VzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vic2l0ZSBvciB0aGUgU2FhUyBUZXJtcyBhdCBhbnkgdGltZS4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS1sZy0yXCI+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWFsaWduLWp1c3RpZnlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MS4gRGVmaW5pdGlvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxNYWludGVuYW5jZSBTZXJ2aWNlc+KAnSBtZWFucyB0aGUgc3VwcG9ydCBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5IFRhbmdvIEV5ZSB0byBDdXN0b21lciBwdXJzdWFudCB0byB0aGVzZSBTYWFTIFRlcm1zIGFuZCBtb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2FsbHkgZGV0YWlsZWQgb3V0IHVuZGVyIEFubmV4dXJlIEEuIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IOKAnFNvZnR3YXJl4oCdIG1lYW5zIHRoZSBkYXRhIGFuYWx5dGljcyBhbmQgYnVzaW5lc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVsbGlnZW5jZSBzb2Z0d2FyZSBhbmQgaXRzIG9iamVjdCBjb2RlIHZlcnNpb24gd2hpY2ggZW5hYmxlcyB0aGUgQ3VzdG9tZXIgdG8gaWRlbnRpZnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW9uZ3N0IG90aGVycywgY3VzdG9tZXIgZm9vdGZhbGxzLCBkZW1vZ3JhcGhpY3MsIGlkZW50aWZ5IG1pc3NlZCBvcHBvcnR1bml0aWVzLCBpbmNsdWRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB1cGRhdGVzIG9yIG5ldyB2ZXJzaW9ucy48L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxTZXJ2aWNlc+KAnSByZWZlciB0byB0aGUgaW4tc3RvcmUgQUkgZHJpdmVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmFseXRpY3MgcHJvdmlkZWQgdGhyb3VnaCB0aGUgU29mdHdhcmUgdG8gdGhlIEN1c3RvbWVyIHRoYXQgaXMgaG9zdGVkIGJ5IFRhbmdvIEV5ZSBhbmQgbWFkZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIHRvIEN1c3RvbWVyIG92ZXIgYSBuZXR3b3JrIHdoZXRoZXIgb24gYSB0cmlhbCBvciBwYWlkIGJhc2lzLiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IOKAnFRlcm3igJ0gc2hhbGwgbWVhbiB0aGF0IHBlcmlvZCBzcGVjaWZpZWQgaW4gYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGUgdG8gYmUgZXhlY3V0ZWQgc2VwYXJhdGVseSB3aXRoIHRoZSBDdXN0b21lciBkdXJpbmcgd2hpY2ggQ3VzdG9tZXIgd2lsbCBoYXZlIG9uLWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBhbmQgdXNlIG9mIHRoZSBTZXJ2aWNlcyB0aHJvdWdoIHRoZSBXZWJzaXRlLiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjIuIEVsaWdpYmlsaXR5IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YiBteS03XCI+SW4gb3JkZXIgdG8gdXNlIHRoZSBTZXJ2aWNlcywgWW91IG11c3Q6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+IEJlIGFib3ZlIDE4IHllYXJzIG9mIGFnZTsgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Db21wbGV0ZSB0aGUgYWNjb3VudCByZWdpc3RyYXRpb24gcHJvY2VzcyB0byBhY2Nlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTZXJ2aWNlcyB0aHJvdWdoIHRoZSBXZWJzaXRlOzwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IHdpbGwgcHJvdmlkZSBjb3JyZWN0LCB1cHRvIGRhdGUgaW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGluY2x1ZGluZyBiaWxsaW5nIGFkZHJlc3M7PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiBZb3Ugd2lsbCBrZWVwIGFsbCB5b3VyIGNyZWRlbnRpYWxzIGFuZCBwYXNzd29yZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlkZW50aWFsIGFuZCBhbHNvIHJlc3BvbnNpYmxlIHRvIG1haW50YWluaW5nIHRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIHlvdXIgcGVyc29uYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uOyA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IHdpbGwgcHJvdmlkZSBhbGwgcmVsZXZhbnQgYW5kIHJlcXVpcmVkIGhhcmR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc29mdHdhcmUgYXMgc3VnZ2VzdGVkIGJ5IFRhbmdvIEV5ZSBhdCB5b3VyIGRlc2lnbmF0ZWQgbG9jYXRpb24gaW4gb3JkZXIgdG8gZW5hYmxlIFRhbmdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeWUgdG8gaW5zdGFsbCB0aGUgU29mdHdhcmUgaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgU2VydmljZXMuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4zLiBTZXJ2aWNlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPiBJbiBjb25zaWRlcmF0aW9uIGZvciBwYXltZW50IG9mIHRoZSBmZWVzLCBUYW5nbyBFeWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50cyB0aGUgQ3VzdG9tZXIgYSBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlLCBwZXJzb25hbCwgcmV2b2NhYmxlLCBsaWNlbmNlIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgYW5kIHVzZSB0aGUgU2VydmljZXMgaW4gYWNjb3JkYW5jZSB3aXRoIFRhbmdvIEV5ZeKAmXMgaW50ZW5kZWQgcHVycG9zZSBmb3IgdGhlIFNlcnZpY2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGljZW5jZSkuPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgU2VydmljZXMgYXJlIG5vdCBjb250aW5nZW50IG9uIHRoZSBkZWxpdmVyeSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGZ1dHVyZSBmdW5jdGlvbmFsaXR5IG9yIGZlYXR1cmVzLjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGFuZ28gRXllIHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2Ugb3IgcmVtb3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBvZiB0aGUgU2VydmljZXMgYW5kIG9yIHRoZSBTb2Z0d2FyZSBmcm9tIHRpbWUgdG8gdGltZS4gV2hlcmUgdGhlcmUgaXMgYW55IG1hdGVyaWFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcmF0aW9uIHRvIHRoZSBTZXJ2aWNlcyBhbmQgb3IgdGhlIFNvZnR3YXJlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIGNsYXVzZSwgVGFuZ28gRXllXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb3ZpZGUgdGhlIEN1c3RvbWVyIHdpdGggMTUgYnVzaW5lc3MgZGF5c+KAmSBub3RpY2UgYW5kIHRoZSBDdXN0b21lciBhZ3JlZXMgdGhhdCBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsIGFsdGVyYXRpb24gaXMgYXQgVGFuZ28gRXll4oCZcyBkaXNjcmV0aW9uLsKgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkFjY2VzcyB0byB0aGUgU2VydmljZXMgc2hhbGwgYmUgbGltaXRlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXNlZCBwZXJzb25zIHdpdGggdmFsaWQgY3JlZGVudGlhbHMgd2hpY2ggaXMgdG8gYmUgYWdyZWVkIGF0IHRoZSB0aW1lIG9mIHByb3ZpZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSBTZXJ2aWNlcyBhbmQgdGhlIFdlYnNpdGUuIElmIGl0IGlzIGEgc2luZ2xlIGFjY291bnQgYWNjZXNzLCBzdWNoIGFjY291bnQgc2hhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSB1c2VkIGJ5IG11bHRpcGxlIHVzZXJzIGF0IHRoZSBzYW1lIHRpbWUuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSBhZ3JlZSB0aGF0wqBUYW5nbyBFeWU6PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPndpbGwgc3VwcGx5IHRoZSBTZXJ2aWNlcyBvbiBhIG5vbi1leGNsdXNpdmUgYmFzaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5kb2VzIG5vdCBtYWtlIGFueSB3YXJyYW50eSBvciByZXByZXNlbnRhdGlvbiBhcyB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFiaWxpdHkgb2YgdGhlIGZhY2lsaXRpZXMgb3Igc2VydmljZXMgb2YgYW55IHRoaXJkLXBhcnR5IHN1cHBsaWVyczsgYW5kPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmlzIG5vdCBsaWFibGUgZm9yIGFueSBmYWlsdXJlIGluLCBmYXVsdCB3aXRoIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWdyYWRhdGlvbiBvZiB0aGUgU2VydmljZXMvU29mdHdhcmUgaWYgdGhhdCBmYWlsdXJlLCBmYXVsdCBvciBkZWdyYWRhdGlvbiBpcyBhdHRyaWJ1dGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9yIGNhdXNlZCBieSBhbnkgZmFpbHVyZSBvZiB0aGUgQ3VzdG9tZXIgZW52aXJvbm1lbnQgb3IgdGhlIGZhY2lsaXRpZXMgb3Igc2VydmljZXMgb2YgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlyZCBwYXJ0eS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjQuIExpY2Vuc2UgUmVzdHJpY3Rpb25zIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5Zb3UgbXVzdCBub3QgYWNjZXNzIG9yIHVzZSB0aGUgU2VydmljZXMgYW5kIG9yIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBleGNlcHQgYXMgcGVybWl0dGVkIGJ5IHRoZSBMaWNlbnNlIGFuZCBtYXkgbm90IGRvIG9yIGF1dGhvcml6ZSB0aGUgY29tbWlzc2lvbiBvZiBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0IHRoYXQgd291bGQgb3IgbWlnaHQgaW52YWxpZGF0ZSBvciBiZSBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgVGFuZ28gRXll4oCZcyBpbnRlbGxlY3R1YWwgcHJvcGVydHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRzIGluIHRoZSBTZXJ2aWNlcyBvciBTb2Z0d2FyZS4gV2l0aG91dCBsaW1pdGluZyB0aGUgZm9yZWdvaW5nIHByb3Zpc2lvbnMsIHRoZSBDdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZ3JlZXMgYW5kIGFja25vd2xlZGdlcyB0aGF0IGl0IG11c3Qgbm90IGFuZCB3aWxsIG5vdCBwZXJtaXQgYW55IHBlcnNvbiB0bzo8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+IHJlc2VsbCwgYXNzaWduLCB0cmFuc2ZlciwgZGlzdHJpYnV0ZSBvciBwcm92aWRlIG90aGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFjY2VzcyB0byB0aGUgU2VydmljZXM7PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPuKAnGZyYW1l4oCdLCDigJxtaXJyb3LigJ0gb3Igc2VydmUgYW55IG9mIHRoZSBTZXJ2aWNlcy9Tb2Z0d2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbiBhbnkgd2ViIHNlcnZlciBvciBvdGhlciBjb21wdXRlciBzZXJ2ZXIgb3ZlciB0aGUgaW50ZXJuZXQgb3IgYW55IG90aGVyIG5ldHdvcms7PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+Y29weSwgYWx0ZXIsIG1vZGlmeSwgY3JlYXRlIGRlcml2YXRpdmUgd29ya3MgZnJvbSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwcm9kdWNlLCByZXNlbGwsIHRyYW5zZmVyIHRvIGEgdGhpcmQgcGFydHksIHJldmVyc2UgYXNzZW1ibGUsIHJldmVyc2UgZW5naW5lZXIsIHJldmVyc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSBvciBlbmhhbmNlIHRoZSBTZXJ2aWNlcyBvciBTb2Z0d2FyZTsgb3I7IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmFsdGVyLCByZW1vdmUgb3IgdGFtcGVyIHdpdGggYW55IHRyYWRlbWFya3MsIGFueSBwYXRlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgY29weXJpZ2h0IG5vdGljZXMsIG9yIGFueSBjb25maWRlbnRpYWxpdHkgbGVnZW5kIG9yIG5vdGljZSwgb3IgYW55IG51bWJlcnMsIG9yIG90aGVyIG1lYW5zIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uIHVzZWQgb24gb3IgaW4gcmVsYXRpb24gdG8gdGhlIFNlcnZpY2VzIG9yIFNvZnR3YXJlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBDdXN0b21lciBtdXN0IG5vdCB1c2UgdGhlIFNlcnZpY2VzIGluIGFueSB3YXkgd2hpY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gYnJlYWNoIG9mIGFueSBzdGF0dXRlLCByZWd1bGF0aW9uLCBsYXcgb3IgbGVnYWwgcmlnaHQgb2YgYW55IHBlcnNvbiB3aXRoaW4gdGhlIFJlcHVibGljIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEluZGlhIG9yIHRoZSBqdXJpc2RpY3Rpb24gaW4gd2hpY2ggdGhlIEN1c3RvbWVyIG9yIGl0cyBwZXJzb25uZWwgYXJlIGxvY2F0ZWQuwqA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjUuIFByb2hpYml0ZWQgVXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG10LTdcIj5Zb3UgYWdyZWUgdG8gdXNlIHRoZSBXZWJzaXRlIGFuZCB0aGUgU2VydmljZXMvU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzZWQgdGhyb3VnaCBpdCBmb3IgdGhlIHB1cnBvc2UgZW51bWVyYXRlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGFuZCBhZ3JlZSBub3QgdG8gdW5kZXJ0YWtlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMVwiPiBBKSBVc2Ugb2YgdGhlIFdlYnNpdGUgYW5kIHRoZSBTZXJ2aWNlcyB0byB2aW9sYXRlIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGxhd3Mgb2YgYW55IGp1cmlzZGljdGlvbiBmcm9tIHdoaWNoIFlvdSBhY2Nlc3MgdGhlIFNlcnZpY2VzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gQikgVXNlIHRoZSBTZXJ2aWNlcyBmb3IgY29tcGV0aXRpdmUgYmVuY2htYXJraW5nIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXZlbG9waW5nIGEgY29tcGV0aXRpdmUgcHJvZHVjdCBvciBzZXJ2aWNlcy48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMVwiPiBDKSBUbyB1cGxvYWQgb3Igb3RoZXJ3aXNlIGRpc3NlbWluYXRlIGFueSBjb21wdXRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXJ1c2VzIG9yIG90aGVyIHNvZnR3YXJlIHRoYXQgbWF5IHRoZSBTb2Z0d2FyZSBvZiBUYW5nbyBFeWU7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gRCkgVG8gdW5sYXdmdWxseSBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXJzIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2UgaW4gaW4gYW4gdW5sYXdmdWwgbWFubmVyOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtYi01XCI+IEUpIFRvIHNvbGljaXQgb3RoZXJzIHRvIHBlcmZvcm0gb3IgcGFydGljaXBhdGUgaW4gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVubGF3ZnVsIGFjdHMuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiByZXNlbGwsIGFzc2lnbiwgdHJhbnNmZXIsIGRpc3RyaWJ1dGUgb3IgcHJvdmlkZSBvdGhlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhY2Nlc3MgdG8gdGhlIFNlcnZpY2VzOzwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3UgYWNrbm93bGVkZ2UgdGhhdCBUYW5nbyBFeWUgd2lsbCBub3QgYmUgbGlhYmxlIGZvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnkgaW5mb3JtYXRpb24gdGhhdCBpcyByZWxheWVkIGFuZCBzdG9yZWQgaW4gaXRzIGNsb3VkIHNlcnZlcnMgd2hpY2ggaXMgYWNjZXNzZWQgdGhyb3VnaCB5b3VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMuIFlvdSBzaGFsbCBhbHdheXMgYmUgcmVzcG9uc2libGUgZm9yIHRoZSBzYW1lIGF0IGFsbCB0aW1lcy5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3UgYWdyZWUgdG8gY29tcGx5IHdpdGggYWxsIGFwcGxpY2FibGUgbGF3cyBzdGF0dXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVndWxhdGlvbnMgb2YgdGhlIGNvdW50cnkgeW91IGFyZSBhY2Nlc3NpbmcgdGhlIFdlYnNpdGUvU29mdHdhcmUgYW5kIHRoZSBTZXJ2aWNlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25jZXJuaW5nIHRoZSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uL3ZpZGVvIGZvb3RhZ2Ugd2hpY2ggaXMgcmVsYXllZCB0aHJvdWdoIHlvdXIgY2N0diBjYW1lcmEgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsb3VkIHN0b3JhZ2Ugb2YgVGFuZ28gRXllLiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3UgYWNrbm93bGVkZ2UgdGhhdCB0aGUgU2VydmljZXMgaGFzIG5vdCBiZWVuIGRlc2lnbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbGxlY3Qgb3IgcHJvY2VzcyBhbnkgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGFuZCBhY2NvcmRpbmdseSB5b3UgYWdyZWUgbm90IHRvIHVzZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZXMgdG8gY29sbGVjdCwgcHJvY2VzcyBvciBzdG9yZSBhbnkgc2Vuc2l0aXZlIHBlcnNvbmFsIGRhdGEgb25jZSB5b3UgYWNjZXNzIHRoZSByZXBvcnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBieSBUYW5nbyBFeWUgaW4gcHVyc3VhbmNlIHRvIHRoZSBTZXJ2aWNlcy4gVGFuZ28gRXllIHNwZWNpZmljYWxseSBkaXNjbGFpbSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGlhYmlsaXR5IHRoYXQgbWF5IHJlc3VsdCBmcm9tIHlvdXIgdXNlIG9mIHRoZSBTZXJ2aWNlcyB0byBjb2xsZWN0LCBwcm9jZXNzIGFuZCBzdG9yZSBzZW5zaXRpdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGFuZ28gRXllIHJlc2VydmVzIHRoZSByaWdodCB0byBtb25pdG9yIHRoZSB1c2Ugb2YgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdlYnNpdGUvU2VydmljZXMvU29mdHdhcmUgYnkgWW91IHRvIGVuc3VyZSBjb21wbGlhbmNlIG9mIHRoZXNlIFNhYVMgVGVybXMgYW5kIGFwcGxpY2FibGUgbGF3LlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkluIHRoZSBldmVudCBvZiB2aW9sYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXdzIGFuZCByZWd1bGF0aW9ucywgVGFuZ28gRXllIHNoYWxsIGhhdmUgdGhlIHJpZ2h0IHRvIGludmVzdGlnYXRlIHN1Y2ggYnJlYWNoZXMgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9ucyB3aGljaCBzaGFsbCBpbmNsdWRlIGJ1dCBub3QgYmUgbGltaXRlZCB0byBwcm92aWRpbmcgd2FybmluZyB0byBmaXJzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lIG9mZmVuZGVycywgc3VzcGVuZGluZyBhbmQgb3IgZXZlbiB0ZXJtaW5hdGluZyB0aGUgU2VydmljZXMgYW5kIGFjY2VzcyB0byB0aGUgV2Vic2l0ZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjYuIEludm9pY2luZzogPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPkludm9pY2VzIHdpbGwgYmUgaXNzdWVkIG9uIHRoZSBiYXNpcyBvZiB0aGUgbnVtYmVyIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveWVkIHN0b3JlcyBpbiBleGlzdGVuY2Ugb24gdGhlIGludm9pY2UgZGF0ZSBhbmQgc2hhbGwgYmUgaXNzdWVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGF5bWVudCBUZXJtcyBpbiB0aGUgY29tbWVyY2lhbCB0ZXJtcyBhYm92ZS4gVGFuZ28gRXllIHNoYWxsIGJpbGwgQ3VzdG9tZXIgZm9yIGFwcGxpY2FibGUgdGF4ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBzZXBhcmF0ZSBsaW5lIGl0ZW0gb24gZWFjaCBpbnZvaWNlLiBDdXN0b21lciBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5bWVudCBvZiBhbGwgc2FsZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0YXhlcywgR29vZHMgYW5kIFNlcnZpY2VzIHRheCwgb3Igc2ltaWxhciBjaGFyZ2VzIHJlbGF0aW5nIHRvIEN1c3RvbWVy4oCZcyBwdXJjaGFzZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlIG9mIHRoZSBTZXJ2aWNlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjcuIFBheW1lbnQ6IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5QYXltZW50IHNoYWxsIGJlIG1hZGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBQYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zIGluIHRoZSBjb21tZXJjaWFsIHRlcm1zIHdoaWNoIHNoYWxsIGJlIGFncmVlZCB0byBzZXBhcmF0ZWx5IGJldHdlZW4gVGFuZ28gRXllIGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgYW5kIHdoaWNoIHNoYWxsIGJlIHJlYWQgYW5kIGJlIGNvdGVybWlub3VzIHdpdGggdGhlc2UgU2FhUyBUZXJtcyAoUGF5bWVudCBUZXJtcykuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgb3RoZXJ3aXNlLCBwYXltZW50cyBhcmUgbm9uLXJlZnVuZGFibGUuIEluIHRoZSBldmVudCB0aGUgQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHMgdG8gbWFrZSB0aGUgcGF5bWVudCBhcyBwZXIgdGhlIHBheW1lbnQgdGVybXMsIFRhbmdvIEV5ZSBzaGFsbCBzZW5kIGEgd3JpdHRlbiBub3RpY2UgdG8gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudCB0byBlbnN1cmUgdGhhdCB0aGUgcGF5bWVudCBpcyBtYWRlIHdpdGhpbiAzMCAodGhpcnR5KSBkYXlzICjigJxBZGRpdGlvbmFsIFBlcmlvZOKAnSkgZnJvbSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSBvZiByZWNlaXB0IHN1Y2ggd3JpdHRlbiBub3RpY2UuIElmIHRoZSBjdXN0b21lciBmYWlscyB0byBtYWtlIHRoZSBwYXltZW50IHdpdGhpbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBQZXJpb2QsIHRoZSBhY2Nlc3MgdG8gdGhlIHdlYiBwb3J0YWwgd2lsbCBiZSBibG9ja2VkIGFuZCB0aGUgU2VydmljZXMgc2hhbGwgYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VzcGVuZGVkIDcgKHNldmVuKSBkYXlzIGFmdGVyIHNlbmRpbmcgYSByZW1pbmRlciBlbWFpbCB0byBDdXN0b21lciBmcm9tIHRoZSBleHBpcnkgb2YgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgUGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlBhcnRpZXMgYWNrbm93bGVkZ2UgdGhhdCB0aW1lIGlzIG9mIHRoZSBlc3NlbmNlIHdpdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcGVjdCB0byBwYXltZW50cyByZXF1aXJlZCB1bmRlciB0aGlzIGNsYXVzZS4gSW4gdGhlIGV2ZW50IG9mIGFueSBkZWxheSBpbiBwYXltZW50IGJ5IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciwgVGFuZ28gRXllIG1heSByZXF1aXJlIHRoZSBDdXN0b21lciB0byBwYXkgVGFuZ28gRXllIGEgbGF0ZSBwYXltZW50IHBlbmFsdHkgZXF1YWwgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHdlbHZlIHBlcmNlbnQgKDEyJSkgcGVyIGFubnVtIG9uIGFsbCBvdXRzdGFuZGluZyBwYXltZW50cy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+OC5JbnRlbGxlY3R1YWwgUHJvcGVydHk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+QWxsIFRhbmdvIEV5ZSBTb2Z0d2FyZSwgaW5jbHVkaW5nIHRoZSBXZWJzaXRlIGFuZCBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcyB0aGVyZXRvLCBhbmQgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBjcmVhdGVkIGJ5IFRhbmdvIEV5ZSBpbiBmdXJ0aGVyYW5jZSB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgb3IgYW55IHdvcmtzLCBwcm9kdWN0cywgZG9jdW1lbnRzLCBtYXRlcmlhbHMgY3JlYXRlZCB1c2luZywgaW5jb3Jwb3JhdGluZywgY29tcHJpc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbiwgb3IgcmVsYXRpbmcgdG8gc3VjaCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgKOKAnFRhbmdvIEV5ZSBJUOKAnSkgc2hhbGwgYXQgYWxsIHRpbWVzIHJlbWFpbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVzaXZlIHByb3BlcnR5IG9mIFRhbmdvIEV5ZSBhbmQvb3IgaXRzIG5vbWluZWVzIG9yIGFmZmlsaWF0ZXMsIGFzIHRoZSBjYXNlIG1heSBiZSwgYW5kIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBzaGFsbCBub3QgaGF2ZSBhbnkgcmlnaHQsIHRpdGxlLCBjbGFpbSBldGMuIHdoYXRzb2V2ZXIgb3ZlciB0aGUgc2FtZS4gTm90aGluZyBjb250YWluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVyZWluIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBhIHRyYW5zZmVyLCBhc3NpZ25tZW50IG9yIGNvbnZleWFuY2UgYnkgVGFuZ28gRXllIHRvIEN1c3RvbWVyIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvd25lcnNoaXAsIGludGVyZXN0IG9yIHRpdGxlIHRvIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb3IgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciBhdHRhY2hlZCB0byB0aGUgVGFuZ28gRXllIElQLiBUaGUgQ3VzdG9tZXIgaXMgb25seSBhdXRob3JpemVkIHRvIHJlY2VpdmUgYSByaWdodCB0byBhY2Nlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ28gRXllIElQIGZvciB0aGUgdGVybSBleHBsaWNpdGx5IGdyYW50ZWQgYnkgVGFuZ28gRXllIHRvIEN1c3RvbWVyIGFuZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3Zpc2lvbnMgb2YgdGhlc2UgU2FhUyBUZXJtcy4gVGhpcyBhdXRob3JpemF0aW9uIGlzIG5vbi1leGNsdXNpdmUsIG5vbi10cmFuc2ZlcmFibGUgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1zdWItbGljZW5zYWJsZSwgdW5sZXNzIG90aGVyd2lzZSBhZ3JlZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQuIEN1c3RvbWVyIHNoYWxsIG5vdCBoYXZlIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodCB0byBtb2RpZnksIGFkYXB0LCBpbmNvcnBvcmF0ZSwgY3JlYXRlIGFueSBkZXJpdmF0aXZlIHVzaW5nIG9yIGluY29ycG9yYXRpbmcgVGFuZ28gRXllIElQXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGluIGFueSBtYW5uZXIgdHJhbnNmZXIsIGVuY3VtYmVyLCBhbGllbmF0ZSwgc2VsbCwgc2hhcmUsIGFzc2lnbiwgbGljZW5zZSBvciBzdWItbGV0IGl0IHRvIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlyZCBwYXJ0eS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5BcyBiZXR3ZWVuIHRoZSBwYXJ0aWVzLCBDdXN0b21lciByZXRhaW5zIGFsbCByaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgYW5kIGludGVyZXN0IGluIGFuZCB0byDigJPCoDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmFsbCByYXcgZGF0YSBnZW5lcmF0ZWQgZnJvbSB0aGUgdXNlIG9mIHRoZSBTb2Z0d2FyZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRleHQsIHNvdW5kLCB2aWRlbywgb3IgaW1hZ2UgZmlsZXMsIGJ1dCBleGNsdWRpbmcgYW55IEJ1c2luZXNzIERhdGEgKOKAnEdlbmVyYXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRh4oCdKTsgYW5kwqDCoDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPnJhdyBkYXRhIG93bmVkIGJ5IGFuZCByZWxhdGluZyB0byB0aGUgQ3VzdG9tZXIsIHN1Y2ggYXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueSBpbmZvcm1hdGlvbiwgc3RvcmUgbG9jYXRpb24gYW5kIGRldGFpbHMgb2YgdGhlIHpvbmVzLCBlbXBsb3llZSBpbmZvcm1hdGlvbiwgYnV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGluZyBhbnkgR2VuZXJhdGVkIERhdGEgKOKAnEJ1c2luZXNzICwgdGhhdCBpcyBwcm92aWRlZCB0byBUYW5nbyBFeWUgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIHRocm91Z2ggdGhlIEN1c3RvbWVy4oCZcyB1c2Ugb2YgdGhlIFNvZnR3YXJlICh0b2dldGhlciwg4oCcQ3VzdG9tZXIgRGF0YeKAnSkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIGhlcmVieSBncmFudHMgdG8gVGFuZ28gRXllIGEgbm9uLWV4Y2x1c2l2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd29ybGR3aWRlLCBmdWxseSBwYWlkIHVwIGFuZCByb3lhbHR5IGZyZWUgcmlnaHQgYW5kIGxpY2Vuc2UgdG8gdXNlIHRoZSBHZW5lcmF0ZWQgRGF0YSBmb3IgKGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcm92aXNpb24gb2YgU2VydmljZXMgYW5kIGZ1bGZpbGxtZW50IG9mIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgYW5kOyAoaWkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvdmluZyB0aGUgU29mdHdhcmUuwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgQ3VzdG9tZXIgaGVyZWJ5IGdyYW50cyB0byBUYW5nbyBFeWUgYSBub24tZXhjbHVzaXZlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQgdXAgYW5kIHJveWFsdHkgZnJlZSByaWdodCBhbmQgbGljZW5zZSB0byB1c2UgdGhlIEJ1c2luZXNzIERhdGEgZm9yIChpKSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlzaW9uIG9mIFNlcnZpY2VzIGFuZCBmdWxmaWxsbWVudCBvZiBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zOyBhbmQgKGlpKSBpbXByb3ZpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFNvZnR3YXJlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkN1c3RvbWVyIGFncmVlcyB0byBwcm92aWRlIGNvbW1lbnRzIG9yIGZlZWRiYWNrLCBpZiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIFRhbmdvIEV5ZSByZWdhcmRpbmcgdGhlIFNvZnR3YXJlIG9yIGZ1dHVyZSByZWxlYXNlcy8gZGV2ZWxvcG1lbnQgdG8gdGhlIFNvZnR3YXJlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Ugb2YgdGhlIHdvcmsgY2FycmllZCBvdXQgZHVyaW5nIHRoaXMgZW5nYWdlbWVudCB3aXRoIHRoZSBDdXN0b21lciBvciBhbnkgYW5kIGFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrbm93bGVkZ2UgYW5kIGluZm9ybWF0aW9uIG9mIGdlbmVyaWMgbmF0dXJlLCBhcmlzaW5nIG91dCBvZiB1c2Ugb2YgdGhlIFNvZnR3YXJlIGJ5IHRoZSBDdXN0b21lcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBkaXNjbG9zaW5nIGFueSBDdXN0b21lciBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gb3IgQ3VzdG9tZXIgRGF0YS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgQ3VzdG9tZXIgdW5kZXJ0YWtlcyB0byBwcm9tcHRseSBpbmZvcm0gVGFuZ28gRXllIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFueSBpbmZyaW5nZW1lbnQgb2YgVGFuZ28gRXllIElQIHJpZ2h0cyBieSB0aGlyZCBwYXJ0aWVzLCBhbmQgc2hhbGwgcGVybWl0IFRhbmdvIEV5ZSB0byBhc3N1bWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29sZSBhdXRob3JpdHkgdG8gdGFrZSBhcHByb3ByaWF0ZSBsZWdhbCBhY3Rpb24uIEN1c3RvbWVyIHNoYWxsIG5vdCBtYWtlIGFueSBzdGF0ZW1lbnQgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRtaXNzaW9uIGluIHJlbGF0aW9uIHRvIHN1Y2ggY2xhaW0gd2hpY2ggbWF5IHByZWp1ZGljaWFsbHkgYWZmZWN0IHRoZSBjaGFuY2VzIG9mIHNldHRsZW1lbnQgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZW5zZSBvZiBzdWNoIGNsYWltLCBhbmQgc2hhbGwgcHJvdmlkZSBpbmZvcm1hdGlvbiBhbmQgYXNzaXN0YW5jZSByZWFzb25hYmx5IHJlcXVlc3RlZCBpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIHdpdGggc3VjaCBjbGFpbSBvciBzdWl0LjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSBoZXJlYnkgdW5kZXJ0YWtlcywgaW4gdGhlIGV2ZW50IHRoYXQgdGhpcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGllcyBhY3QgYWdhaW5zdCB0aGUgQ3VzdG9tZXIgZm9yIGFueSByZWFzb24gd2hhdHNvZXZlciBpbiByZWxhdGlvbiB0byB0aGUgU29mdHdhcmUgb3IgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIEV5ZSBJUCwgdG8gcHJvdmlkZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGVpciBwb3NzZXNzaW9uIGFuZCBvdGhlcndpc2UgZG8gYW5kIGV4ZWN1dGUgYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHMsIHRoaW5ncywgbWF0dGVycyBhbmQgZGVlZHMgYXMgbWF5IGJlIHJlYXNvbmFibHkgcmVxdWlyZWQgYnkgdGhlIEN1c3RvbWVyLCBmcm9tIHRpbWUgdG8gdGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBzaG93IG93bmVyc2hpcCBvZiBzdWNoIFRhbmdvIEV5ZSBJUC48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+OS4gRGF0YSBQcm90ZWN0aW9uIGFuZCBQcml2YWN5IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5FYWNoIFBhcnR5IHNoYWxsIGF0IGFsbCB0aW1lcyBjb21wbHkgd2l0aCBpdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JsaWdhdGlvbnMgdW5kZXIgYXBwbGljYWJsZSBwcml2YWN5IHJlZ3VsYXRpb25zIGluIHJlbGF0aW9uIHRvIHRoZSBHZW5lcmF0ZWQgRGF0YSwgQnVzaW5lc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSwgYW5kIEN1c3RvbWVyIERhdGEgdGhhdCBpcyBjb2xsZWN0ZWQsIHN0b3JlZCBhbmQvb3IgcHJvY2Vzc2VkIGJ5IGl0IGluIHRoZSBjb3Vyc2Ugb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBpdHMgb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcy4gRnVydGhlciBlYWNoIFBhcnR5IHNoYWxsIHByb2Nlc3Mgc3VjaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWQgRGF0YSwgQnVzaW5lc3MgRGF0YSwgYW5kIEN1c3RvbWVyIERhdGEgb25seSB0byB0aGUgZXh0ZW50IG5lY2Vzc2FyeSBmb3IgdGhlIHB1cnBvc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mIHBlcmZvcm1pbmcgdGhlaXIgcmVzcGVjdGl2ZSBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPkVhY2ggcGFydHkgc2hhbGwgdGFrZSBhcHByb3ByaWF0ZSB0ZWNobmljYWwgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbmFsIG1lYXN1cmVzIGFzIHJlcXVpcmVkIHVuZGVyIGFwcGxpY2FibGUgbGF3IGFnYWluc3QgYW55IGRhdGEgYnJlYWNoLCB1bmF1dGhvcml6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgdW5sYXdmdWwgcHJvY2Vzc2luZyBvZiB0aGUgcGVyc29uYWwgZGF0YSBvciBpdHMgYWNjaWRlbnRhbCBsb3NzLCBkZXN0cnVjdGlvbiBvciBkYW1hZ2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjEwLiBSZXByZXNlbnRhdGlvbnMsIFdhcnJhbnRpZXMgYW5kIERpc2NsYWltZXJzIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5FYWNoIFBhcnR5IHJlcHJlc2VudHMsIHdhcnJhbnRzIGFuZCBjb3ZlbmFudHMgdG8gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHRoYXQ6IChpKSBpdCBpcyBkdWx5IG9yZ2FuaXplZCBhbmQgdmFsaWRseSBleGlzdGluZyBhbmQgaW4gZ29vZCBzdGFuZGluZyB1bmRlciB0aGUgbGF3cyBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RhdGUgb2YgaXRzIGluY29ycG9yYXRpb24gb3IgZm9ybWF0aW9uOyAoaWkpIGl0IGhhcyB0aGUgZnVsbCByaWdodCBhbmQgYXV0aG9yaXR5IHRvIGVudGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlc2UgU2FhUyBUZXJtcyBhbmQgdGhhdCB0aGVzZSBTYWFTIFRlcm1zIGNvbnN0aXR1dGVzIGEgbGVnYWwsIHZhbGlkIGFuZCBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRpb247IChpaWkpIHRoZSBleGVjdXRpb24sIGRlbGl2ZXJ5IGFuZCBwZXJmb3JtYW5jZSBvZiB0aGVzZSBTYWFTIFRlcm1zIGRvZXMgbm90IGFuZCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBjb25mbGljdCB3aXRoLCBvciBjb25zdGl0dXRlIGEgYnJlYWNoIG9yIGRlZmF1bHQgdW5kZXIsIGl0cyBjaGFydGVyIG9mIG9yZ2FuaXphdGlvbiwgb3IgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0IG9yIG90aGVyIGluc3RydW1lbnQgdG8gd2hpY2ggaXQgaXMgYSBwYXJ0eTsgKGl2KSBpdCB3aWxsIGNvbXBseSB3aXRoLCBhbmQgd2lsbCBlbnN1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsIG9mIGl0cyBwZXJzb25uZWwsIHRoaXJkIHBhcnR5IGFnZW50cywgY29uc3VsdGFudHMgZXRjLiwgY29tcGx5IHdpdGggYWxsIGxhd3MgYW5kIHJlZ3VsYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgdG8gKGkpIHRoZSBwcm92aXNpb24sIG9yIGFjY2VzcyBhbmQgdXNlIG9mIHRoZSBTb2Z0d2FyZTsgYW5kIChpaSkgcGVyZm9ybWFuY2Ugb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcywgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiBsYXdzIGFuZCByZWd1bGF0aW9ucyByZWxhdGVkIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhY3ksIGRhdGEgcHJvdGVjdGlvbiwgZWxlY3Ryb25pYyBjb21tdW5pY2F0aW9ucywgZXhwb3J0IGFuZCBjb25maWRlbnRpYWxpdHkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGFuZ28gRXllIHJlcHJlc2VudHMsIHdhcnJhbnRzIGFuZCBjb3ZlbmFudHMgdGhhdCAoaSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ28gRXllIHBlcnNvbm5lbCBzaGFsbCBwcm92aWRlIHRoZSBTZXJ2aWNlcyBpbiBhIGRpbGlnZW50IGFuZCBwcm9mZXNzaW9uYWwgbWFubmVyIHdpdGggZHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcmUgKGlpKSBUYW5nbyBFeWUgSVAgZG9lcyBub3QgYW5kIHdpbGwgbm90IGluZnJpbmdlLCBtaXNhcHByb3ByaWF0ZSBvciBvdGhlcndpc2UgdmlvbGF0ZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgcGFydHkgd2l0aGluIHRoZSB0ZXJyaXRvcnkgb2YgSW5kaWEgYW5kIG9yIGFueSBvdGhlciBjb3VudHJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGl0cyByaWdoc3QgYXJlIHJlZ2lzdGVyZWQ7IGFuZCAoaWlpKSBhbGwgU2VydmljZXMgdGhhdCBhcmUgcHJvdmlkZWQgd2lsbCBiZSBmcmVlIGZyb20gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtub3duIG1hbGljaW91cyBjb2RlIG9yIGluc3RydWN0aW9ucyB0aGF0IG1heSBpbnRlbnRpb25hbGx5IGRpc3J1cHQsIGRhbWFnZSBvciBpbnRlcmZlcmUgd2l0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnkgdXNlIGJ5IEN1c3RvbWVyLiBUYW5nbyBFeWUgZnVydGhlciB3YXJyYW50cyBhbmQgcmVwcmVzZW50cyB0byB0aGUgQ3VzdG9tZXIgdGhhdCBpdCBob2xkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdpbGwgY29udGludWUgdG8gaG9sZCwgYW55IGFuZCBhbGwgbGljZW5zZXMsIHBlcm1pdHMgb3Igb3RoZXIgYXV0aG9yaXphdGlvbnMgcmVxdWlyZWQgYnkgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgbGF3IHRvIHBlcmZvcm0gdGhlIFNlcnZpY2VzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVzZSBTYWFTIFRlcm1zLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPuKAnEFwcGxpY2FibGUgbGF34oCdIG1lYW5zIGFueSBhcHBsaWNhYmxlIGxhdywgc3RhdHV0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSwgcmVndWxhdGlvbiwgb3JkaW5hbmNlLCByZXF1aXJlbWVudCwgZGlyZWN0aW9ucywgZ3VpZGVsaW5lcywgYW5ub3VuY2VtZW50IG9yIG90aGVyIGJpbmRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIG9yIHJlcXVpcmVtZW50IG9mIGFueSBnb3Zlcm5tZW50IG9yIHF1YXNpIGdvdmVybm1lbnQ7IGRlcGFydG1lbnQsIGFnZW5jeSBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YWxpdHkgb2YgYW55IGdvdmVybm1lbnQgdGhlcmVvZiwgYW55IGNvdXJ0IG9yIGFyYml0cmFsIHRyaWJ1bmFsIGFwcGxpY2FibGUgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIHVuZGVyIHRoZSByZXB1YmxpYyBvZiBJbmRpYS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5USEUgU09GVFdBUkUgQU5EIEFOWVRISU5HIFBST1ZJREVEIElOIENPTk5FQ1RJT04gV0lUSFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUSEVTRSBTYWFTIFRFUk1TIEFSRSBQUk9WSURFRCDigJxBUy1JU+KAnS4gRVhDRVBUIEZPUiBUSEUgRVhQUkVTUyBSRVBSRVNFTlRBVElPTlMgQU5EIFdBUlJBTlRJRVMgSU5cclxuICAgICAgICAgICAgICAgICAgICAgICAgVEhJUyBTRUNUSU9OIDYsIFRBTkdPIEVZRSBET0VTIE5PVCBNQUtFIEFOWSBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUywgRVhQUkVTUywgSU1QTElFRCBPUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTVEFUVVRPUlkgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgUVVBTElUWSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFNZU1RFTSBJTlRFR1JBVElPTiwgRVJST1ItRlJFRSwgVU4tSU5URVJSVVBUSU9OLCBTVVBQT1JUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENPUlJFQ1RJT04gT1IgUkVQQUlSIChVTkxFU1MgT1RIRVJXSVNFIEFHUkVFRCkgT1IgT1RIRVJXSVNFIFRIQVQgVEFOR08gRVlFIFNPRlRXQVJFIEhFUkVVTkRFUlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXSUxMIE9QRVJBVEUgSU4gRVZFUlkgQ09NQklOQVRJT04gT1IgRU5WSVJPTk1FTlQgREVTSVJFRCBCWSBDVVNUT01FUiBXSVRIIEFOWSBEQVRBLCBERVZJQ0VTLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDT01QVVRFUiBTWVNURU1TIEFORCBQUk9HUkFNUyBPRiBJVFMgQ0hPSUNFIE9SIFRIQVQgVEhFIFJFTUVEWUlORyBPRiBPTkUgUFJPR1JBTSBFUlJPUiBET0VTIE5PVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSRVNVTFQgSU4gVEhFIE9DQ1VSUkVOQ0UgT0YgT1RIRVIgUFJPR1JBTSBFUlJPUlMuIEFMTCBTVUNIIFJFUFJFU0VOVEFUSU9OUyBBTkQgV0FSUkFOVElFUyBBUkVcclxuICAgICAgICAgICAgICAgICAgICAgICAgSEVSRUJZIERJU0NMQUlNRUQuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBDdXN0b21lciB3YXJyYW50cyB0aGF0OiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gQSkgQ3VzdG9tZXIgRGF0YSBkb2VzIG5vdCBhbmQgd2lsbCBub3QgaW5mcmluZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pc2FwcHJvcHJpYXRlIG9yIG90aGVyd2lzZSB2aW9sYXRlIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG9mIGFueSB0aGlyZCBwYXJ0eTs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+QikgaXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgYW55IHNlY3VyaXR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZ1bG5lcmFiaWxpdGllcyBhbmQgdGhlIGNvbnNlcXVlbmNlcyBvZiBzdWNoIHZ1bG5lcmFiaWxpdGllcyBhcmlzaW5nIHNvbGVseSBmcm9tIHRoZSBuYXR1cmUgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgRGF0YTs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+IEMpIGl0IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IEVuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBVc2VycyBjb21wbHkgd2l0aCBhbGwgcmVxdWlyZW1lbnRzIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgaW4gcmVsYXRpb24gdG8gdGhlIHVzZSBvZiB0aGUgU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRvIHRoZSBleHRlbnQgYXBwbGljYWJsZSk7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPiBEKSBpdCBzaGFsbCBpbW1lZGlhdGVseSBub3RpZnkgVGFuZ28gRXllIG9mIChhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnkgYWNjb3VudC1yZWxhdGVkIGFidXNlOyAoYikgdGhlIHVuYXV0aG9yaXplZCBkaXNjbG9zdXJlLCB1c2UgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGVpclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50IGNyZWRlbnRpYWxzIGJ5IG9yIHRvIGFueSB0aGlyZCBwYXJ0eTsgYW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPiBFKSBpdCBzaGFsbCBub3QsIGFuZCBzaGFsbCBub3QgcGVybWl0IGFueSBwYXJ0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciBwZXJzb24gdG8sIGFjY2VzcyBvciB1c2UgdGhlIFNvZnR3YXJlIGV4Y2VwdCBhcyBleHByZXNzbHkgcGVybWl0dGVkIGJ5IHRoZXNlIFNhYVMgVEVSTVMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgbGltaXRpbmcgdGhlIGdlbmVyYWxpdHkgb2YgdGhlIGZvcmVnb2luZywgQ3VzdG9tZXIgc2hhbGwgbm90LCBhbmQgc2hhbGwgbm90IHBlcm1pdCBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydHkgb3IgcGVyc29uIHRvOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTVcIj4gMS4gaW50ZXJmZXJlIHdpdGggb3IgZGlzcnVwdCB0aGUgaW50ZWdyaXR5IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIG9mIHRoZSBTb2Z0d2FyZSwgb3IgY2lyY3VtdmVudCwgYnlwYXNzLCBkZWxldGUgb3IgcmVtb3ZlIGFueSBmb3JtIG9mIHByb3RlY3Rpb24sIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlLCBmdW5jdGlvbmFsaXR5IG9yIHRlY2huaWNhbCByZXN0cmljdGlvbnMgb3IgbGltaXRhdGlvbnMsIG9yIHRvIGVuYWJsZSBmdW5jdGlvbmFsaXR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkIGJ5IFRhbmdvIEV5ZSwgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBTb2Z0d2FyZTs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy01XCI+IDIuIGFjY2VzcyBvciB1c2UgdGhlIFNvZnR3YXJlIHByb3ZpZGVkIHVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIFNhYVMgVGVybXMsIGluIGFueSBtYW5uZXIgb3IgZm9yIGFueSBwdXJwb3NlIHRoYXQgdmlvbGF0ZXMgYW55IGFwcGxpY2FibGUgbGF3LCB0aGUgcmlnaHRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mIG90aGVycywgaW4gYSB3YXkgdGhhdCBjb3VsZCBoYXJtIHRoZSBzZXJ2aWNlLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTVcIj4zLiByZXZlcnNlIGVuZ2luZWVyLCBkaXNhc3NlbWJsZSwgZGUtY29tcGlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjcmVhdGUsIGNvcHkgb3IgcmVwcm9kdWNlIHRoZSBzb3VyY2UgY29kZSBvciBvYmplY3QgY29kZSBvZiB0aGUgU29mdHdhcmUgb3IgcGVyZm9ybSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbnMgKHdpdGhvdXQgVGFuZ28gRXll4oCZcyBwcmlvciB3cml0dGVuIGNvbnNlbnQpOyBhbmQ8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMS4gQ3VzdG9tZXLigJlzIEFjY291bnQgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcnMgYXJlIGZ1bGx5IHJlc3BvbnNpYmxlIHRvIHNhZmVndWFyZCB0aGVpciBhY2Nlc3MgY3JlZGVudGlhbHMgLSBpbmNsdWRpbmcgaW4gdGhlIHNlbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjb21iaW5hdGlvbiBvZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjEyLiBEdXJhdGlvbiwgUmVuZXdhbCBhbmQgVGVybWluYXRpb24gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gdGhlIHByb3Bvc2FsLCB0aGVzZSBTYWFTIFRlcm1zIHNoYWxsIGNvbnRpbnVlIHRvIGJlIGVmZmVjdGl2ZSBkdXJpbmdcclxuICAgICAgICAgICAgICAgICAgICB0aGVcclxuICAgICAgICAgICAgICAgICAgICBwZXJpb2RcclxuICAgICAgICAgICAgICAgICAgICB0aGUgQ3VzdG9tZXIgdXNlcyBhbmQgb3IgY29udGludWVzIHRvIHVzZSB0aGUgU29mdHdhcmUsIHVubGVzcyB0ZXJtaW5hdGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtcyBzZXRcclxuICAgICAgICAgICAgICAgICAgICBvdXRcclxuICAgICAgICAgICAgICAgICAgICBoZXJlaW4uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEl0IGJlaW5nIGNsYXJpZmllZCB0aGF0IHRoZXJlIHdvdWxkIGJlIGEgcmVuZXdhbCBmZWUgY2hhcmdlZCBldmVyeSAxMiBtb250aHMgYXQgdGhlIHJhdGUgb2YgNyUgcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgYW5udW0uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVpdGhlciBwYXJ0eSBtYXkgdGVybWluYXRlIHRoZWlyIGJ1c2luZXNzIHJlbGF0aW9uc2hpcCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGltbWVkaWF0ZWx5IHVwb24gYVxyXG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWNoIGJ5IHRoZSBvdGhlciBwYXJ0eSB0aGF0IGhhcyBub3QgYmVlbiBjdXJlZCB3aXRoaW4gdGhpcnR5ICgzMCkgZGF5cyBhZnRlciByZWNlaXB0IG9mIG5vdGljZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2hcclxuICAgICAgICAgICAgICAgICAgICBicmVhY2guXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVpdGhlciBwYXJ0eSBtYXkgYWxzbyB0ZXJtaW5hdGUgdGhpcyBBZ3JlZW1lbnQgdXBvbiB0aGlydHkgKDMwKSBkYXlzIHdyaXR0ZW4gbm90aWNlIHdpdGhvdXRcclxuICAgICAgICAgICAgICAgICAgICBhc3NpZ25pbmcgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uLiBDdXN0b21lciB3aWxsIHBheSBpbiBmdWxsIGZvciB0aGUgU29mdHdhcmUgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgbGFzdCBkYXkgb24gd2hpY2ggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICB3YXMgdXNlZC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMy4gRWZmZWN0IG9mIFRlcm1pbmF0aW9uLiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBVcG9uIHRlcm1pbmF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMsIFRhbmdvIEV5ZSBzaGFsbCBpbW1lZGlhdGVseSBjZWFzZSBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBVcG9uIHRlcm1pbmF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMsIFRhbmdvIEV5ZSBzaGFsbCBkZWxldGUgdGhlIEdlbmVyYXRlZCBEYXRhLCBCdXNpbmVzcyBEYXRhIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIERhdGFcclxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0ZWQsIHN0b3JlZCBhbmQvb3IgcHJvY2Vzc2VkIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgZm9yIHRoZSBwdXJwb3NlIG9mIHByb3ZpZGluZyB0aGUgU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICB3aXRoaW4gMTVcclxuICAgICAgICAgICAgICAgICAgICAoZmlmdGVlbikgZGF5cyBvZiByZWNlaXB0IG9mIG5vdGljZSBvZiB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBJZiBUYW5nbyBFeWUgdGVybWluYXRlcyB0aGVzZSBTYWFTIFRlcm1zIGR1ZSB0byBhIGJyZWFjaCBieSBDdXN0b21lciBvZiBhbnkgb2YgdGhlIHByb3Zpc2lvbnNcclxuICAgICAgICAgICAgICAgICAgICBjb250YWluZWQgdW5kZXIgdGhlc2VcclxuICAgICAgICAgICAgICAgICAgICBTYWFTIFRlcm1zLCB0aGVuIEN1c3RvbWVyIHNoYWxsIGltbWVkaWF0ZWx5IHBheSB0byBUYW5nbyBFeWUgYWxsIGFtb3VudHMgdGhlbiBkdWUgdW5kZXIgdGhlc2UgU2FhU1xyXG4gICAgICAgICAgICAgICAgICAgIFRlcm1zLiBJZlxyXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIHRlcm1pbmF0ZXMgdGhlc2UgU2FhUyBUZXJtcyBkdWUgdG8gYSBicmVhY2ggYnkgVGFuZ28gRXllLCB0aGVuIFRhbmdvIEV5ZSBzaGFsbCBpbW1lZGlhdGVseVxyXG4gICAgICAgICAgICAgICAgICAgIHJlcGF5IHRvXHJcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgYWxsIHByZS1wYWlkIGFtb3VudHMgZm9yIGFueSB1bnBlcmZvcm1lZCBTZXJ2aWNlcyBzY2hlZHVsZWQgdG8gYmUgZGVsaXZlcmVkIGFmdGVyIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0aW9uIGRhdGUuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFN1YmplY3QgdG8gdGhlIHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMsIHVwb24gaXRzIHRlcm1pbmF0aW9uIGFuZCB1cG9uIHN1YnNlcXVlbnRcclxuICAgICAgICAgICAgICAgICAgICB3cml0dGVuIHJlcXVlc3QgYnlcclxuICAgICAgICAgICAgICAgICAgICB0aGUgRGlzY2xvc2luZyBQYXJ0eSwgdGhlIFJlY2VpdmluZyBQYXJ0eSBvZiB0YW5naWJsZSBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gc2hhbGwgaW1tZWRpYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjaFxyXG4gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9yIGRlc3Ryb3kgc3VjaCBpbmZvcm1hdGlvbiBhbmQgcHJvdmlkZSB3cml0dGVuIGNlcnRpZmljYXRpb24gb2Ygc3VjaCBkZXN0cnVjdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCB0aGF0IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpdmluZyBwYXJ0eSBtYXkgcGVybWl0IGl0cyBsZWdhbCBjb3Vuc2VsIHRvIHJldGFpbiBvbmUgYXJjaGl2YWwgY29weSBvZiBzdWNoIGluZm9ybWF0aW9uIGluIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50IG9mIGFcclxuICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGRpc3B1dGUgYmV0d2VlbiB0aGUgcGFydGllcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVGhlIHByb3Zpc2lvbnMgcmVsYXRpbmcgdG8gY29uZmlkZW50aWFsaXR5LCBhcyB3ZWxsIGFzIGZvciBsaWFiaWxpdHksIGFwcGxpY2FibGUgbGF3IGFuZCBzZXR0bGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgb2YgZGlzcHV0ZXNcclxuICAgICAgICAgICAgICAgICAgICBzaGFsbCBzdXJ2aXZlIHRoZSBleHBpcmF0aW9uIG9yIHRlcm1pbmF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRlcm1pbmF0aW9uIHNoYWxsIG5vdCBhZmZlY3QgYW55IHJpZ2h0cyBvciBvYmxpZ2F0aW9ucyBvZiB0aGUgcGFydGllcyBpbmN1cnJlZCBwcmlvciB0byB0aGUgZGF0ZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHVubGVzcyBvdGhlcndpc2UgYWdyZWVkIGJldHdlZW4gdGhlIHBhcnRpZXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xNC4gQWNjZXNzIHRvIEFuYWx5dGljcyB2aWEgV2ViIFBvcnRhbCAmIEV4Y2VsIFJlcG9ydHPCoCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgYW5hbHl0aWNzIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBhKSB3ZWItYmFzZWRcclxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiwgYikgZXhjZWwgcmVwb3J0cyBzZW50IHZpYSBlbWFpbCBvciBGaWxlIFRyYW5zZmVyIFByb3RvY29sLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UcmFpbmluZzogQWxsIOKAnFNvZnR3YXJl4oCdIHVzZWQgaW4gY29ubmVjdGlvbiB3aXRoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzLiBGb3IgYXZvaWRhbmNlIG9mIGRvdWJ0LCBpdCBpcyBjbGFyaWZpZWQgdGhhdCBUYW5nbyBFeWUgYWdyZWVzIHRvIHByb3ZpZGUgc2FtcGxlIGRhc2hib2FyZFxyXG4gICAgICAgICAgICAgICAgICAgIGFuZCBhcnJhbmdlIGZvciB0cmFpbmluZyBzZXNzaW9ucyB0byB0aGUgQ3VzdG9tZXIgYXMgbXV0dWFsbHkgYWdyZWVkIGJ5IHRoZSBQYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTUuIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5BbGwgcHJvcHJpZXRhcnkgb3IgY29uZmlkZW50aWFsIGluZm9ybWF0aW9uLCB0ZWNobmljYWwgZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBvciBrbm93LWhvdyBhbmQgYWxsIG90aGVyIG5vbi1wdWJsaWMgaW5mb3JtYXRpb24sIG1hdGVyaWFsIG9yIGRhdGEgaW4gd2hhdGV2ZXIgZm9ybSBvciBtb2RlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGlvbiwgd2hpY2ggaXMgZGlzY2xvc2VkIGJ5IGEgcGFydHkgKOKAnERpc2Nsb3NpbmcgUGFydHnigJ0pIHRvIHRoZSBvdGhlciBwYXJ0eSAo4oCcUmVjZWl2aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgUGFydHnigJ0pIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgU29mdHdhcmUgYWNjZXNzIGFuZCB1c2FnZSB3aGV0aGVyIG1hcmtlZCBhcyDigJxjb25maWRlbnRpYWzigJ0gb3Igbm90IGF0XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIHRpbWUgb2YgZGlzY2xvc3VyZSwgc2hhbGwgYmUgdHJlYXRlZCBhcyDigJxDb25maWRlbnRpYWwgSW5mb3JtYXRpb27igJ0uIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHNoYWxsIGluY2x1ZGUsIGJ1dCBub3QgYmUgbGltaXRlZCB0bywgdGhlIHRlcm1zIGFuZCBwcmljaW5nL2NvbW1lcmNpYWwgdGVybXMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyxcclxuICAgICAgICAgICAgICAgICAgICB0aGUgdGVjaG5pY2FsIGFuZCBvdGhlciBzcGVjaWZpY2F0aW9ucyBvZiB0aGUgU29mdHdhcmUsIGFueSBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgc29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGNvZGVzIGFuZCBjb250ZW50IGFzIHdlbGwgYXMgdGhlIHNvZnR3YXJlIGFuZCBoYXJkd2FyZSBhcmNoaXRlY3R1cmUgYW5kIGNvbXBvbmVudHMsIGFuZCBhbGxcclxuICAgICAgICAgICAgICAgICAgICBvdGhlciBub24tcHVibGljIGluZm9ybWF0aW9uLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgUmVjZWl2aW5nIFBhcnR5IHVuZGVydGFrZXM6IChpKSBub3QgdG8gdXNlIENvbmZpZGVudGlhbFxyXG4gICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG90aGVyd2lzZSB0aGFuIGZvciB0aGUgcHVycG9zZSBmb3Igd2hpY2ggaXQgd2FzIGRpc2Nsb3NlZCBvciB0byBwZXJtaXQgdGhlIFJlY2VpdmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIFBhcnR5IHRvIGV4ZXJjaXNlIHJpZ2h0cyBhbmQgbGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIDsgKGlpKSBub3QgdG8gZGlzY2xvc2VcclxuICAgICAgICAgICAgICAgICAgICBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gd2l0aG91dCB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIHRoZSBEaXNjbG9zaW5nIFBhcnR5LCBvdGhlciB0aGFuIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgdGhvc2UgZW1wbG95ZWVzLCBhZ2VudHMsIGNvbnRyYWN0b3JzLCBzdWJjb250cmFjdG9ycywgbGljZW5zZWVzIG9mIHRoZSBSZWNlaXZpbmcgUGFydHksIGl0c1xyXG4gICAgICAgICAgICAgICAgICAgIEFmZmlsaWF0ZXMgb3IgYW55IG90aGVyIHBhcnRpZXMgd2hvIGhhdmUgYSBuZWVkIHRvIGtub3cgaXQgaW4gb3JkZXIgdG8gYXNzaXN0IHRoZSBSZWNlaXZpbmcgUGFydHkgaW5cclxuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtaW5nIGl0cyBvYmxpZ2F0aW9ucywgb3IgdG8gcGVybWl0IHRoZSBSZWNlaXZpbmcgUGFydHkgdG8gZXhlcmNpc2UgaXRzIHJpZ2h0c8KgIGFuZCBsaWNlbnNlc1xyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVyIHRoaXMgQWdyZWVtZW50OyAoaWlpKSB0byB0YWtlIGFsbCBzdWNoIHN0ZXBzIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIGFjY2VzcyB0byB0aGUgRGlzY2xvc2luZ1xyXG4gICAgICAgICAgICAgICAgICAgIFBhcnR54oCZcyBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24sIGFzIGl0IHRha2VzIHRvIHByb3RlY3QgaXRzIG93biBjb25maWRlbnRpYWwgb3IgcHJvcHJpZXRhcnlcclxuICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvZiBhIHNpbWlsYXIgbmF0dXJlLCB3aGljaCBzdGVwcyBzaGFsbCBpbiBubyBldmVudCBiZSBsZXNzIHRoYW4gYSByZWFzb25hYmxlIHN0YW5kYXJkIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgY2FyZTsgYW5kIGl2KSB0byByZXR1cm4gdG8gdGhlIEN1c3RvbWVyLCBvciBkZXN0cm95LCBvbiByZXF1ZXN0IGFsbCBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gdGhhdFxyXG4gICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIGRpc2Nsb3NlZCB0byB0aGVtLCBpbmNsdWRpbmcgYWxsIGNvcGllcyB0aGVyZW9mIGFuZCB0byBkZWxldGUgYWxsIGluZm9ybWF0aW9uIHN0b3JlZCBpbiBhXHJcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1yZWFkYWJsZSBmb3JtIHRvIHRoZSBleHRlbnQgcHJhY3RpY2FsbHkgcG9zc2libGUsIHN1YmplY3QgdG8gYW55IHJpZ2h0cyBvciBsaWNlbnNlcyBncmFudGVkXHJcbiAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyAuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBvYmxpZ2F0aW9ucyBpbiByZWxhdGlvbiB0byBDb25maWRlbnRpYWwgSW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGVzZSBTYWFTIFRlcm1zwqAgc2hhbGwgbm90IGFwcGx5IHRvIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiwgd2hpY2ggKGkpIGhhcyBiZWNvbWUgb3IgYmVjb21lc1xyXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY2x5IGF2YWlsYWJsZSBieSBtZWFucyBvdGhlciB0aGFuIGEgYnJlYWNoIG9mIGNvbmZpZGVudGlhbGl0eSBvYmxpZ2F0aW9uczsgKGlpKSB3YXMgYWxyZWFkeVxyXG4gICAgICAgICAgICAgICAgICAgIGtub3duIHRvIHRoZSBSZWNlaXZpbmcgUGFydHkgcHJpb3IgdG8gZGlzY2xvc3VyZTsgKGlpaSkgdGhlIFJlY2VpdmluZyBQYXJ0eSBpcyByZXF1aXJlZCB0byBkaXNjbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGNvbXBseSB3aXRoIGFwcGxpY2FibGUgbGF3cyBvciByZWd1bGF0aW9ucyBvciB3aXRoIGEgY291cnQgb3IgYWRtaW5pc3RyYXRpdmUgb3JkZXI7IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgKGl2KSBpcyBpbmRlcGVuZGVudGx5IGRldmVsb3BlZCBieSB0aGUgUmVjZWl2aW5nIFBhcnR5IHdpdGhvdXQgcmVmZXJlbmNlIHRvIG9yIHVzZSBvZiBhbnlcclxuICAgICAgICAgICAgICAgICAgICBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gb2YgdGhlIERpc2Nsb3NpbmcgUGFydHkuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBSZWNlaXZpbmcgUGFydHkgc2hhbGwgcHJvbXB0bHksIGFuZCBpbiBhbnkgY2FzZSB3aXRoaW5cclxuICAgICAgICAgICAgICAgICAgICB0aHJlZSAoMykgZGF5cyBhZHZpc2UgdGhlIERpc2Nsb3NpbmcgUGFydHkgaW4gd3JpdGluZyBvZiBhbnkgdW5hdXRob3JpemVkIGRpc2Nsb3N1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWlzYXBwcm9wcmlhdGlvbiBvciBtaXN1c2Ugb2YgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIGFmdGVyIGl0IGJlY29tZXMgYXdhcmUgb2YgaXQgYW5kIHZpY2UgdmVyc2EuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPklmIGVpdGhlciBwYXJ0eSBiZWNvbWVzIGF3YXJlIHRoYXQgaXQgd2lsbCBiZSByZXF1aXJlZCwgb3JcclxuICAgICAgICAgICAgICAgICAgICBpcyBsaWtlbHkgdG8gYmUgcmVxdWlyZWQsIHRvIGRpc2Nsb3NlIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBpbiBvcmRlciB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgbGF3cyBvciByZWd1bGF0aW9ucyBvciB3aXRoIGEgY291cnQgb3IgYWRtaW5pc3RyYXRpdmUgb3JkZXIsIGl0IHNoYWxsLCB0byB0aGUgZXh0ZW50IGl0IGlzIGxhd2Z1bGx5XHJcbiAgICAgICAgICAgICAgICAgICAgYWJsZSB0byBkbyBzbywgcHJpb3IgdG8gYW55IHN1Y2ggZGlzY2xvc3VyZSBub3RpZnkgdGhlIG90aGVyIHBhcnR5LCBhbmQgY29tcGx5IHdpdGggdGhlIG90aGVyXHJcbiAgICAgICAgICAgICAgICAgICAgcGFydHnigJlzIGluc3RydWN0aW9ucyB0byBwcm90ZWN0IHRoZSBjb25maWRlbnRpYWxpdHkgb2YgdGhlIGluZm9ybWF0aW9uLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTYuIEluZGVtbml0eSBhbmQgTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgV2l0aG91dCBwcmVqdWRpY2UgdG8gYW55IG90aGVyIHJpZ2h0IGF2YWlsYWJsZSBpbiBsYXcgb3IgdW5kZXIgZXF1aXR5LCBlYWNoIHBhcnR5IGhlcmVieSBhZ3JlZXMgdG9cclxuICAgICAgICAgICAgICAgICAgICBjb21wZW5zYXRlLCBpbmRlbW5pZnksIGRlZmVuZCBhbmQgaG9sZCBoYXJtbGVzcyB0aGUgb3RoZXIsIGl0cyBhZmZpbGlhdGVzLCBkaXJlY3RvcnMsIHNoYXJlaG9sZGVycyxcclxuICAgICAgICAgICAgICAgICAgICBvZmZpY2VycyBhbmQgZW1wbG95ZWVzIGFuZCBhZ2VudHMsIGZyb20gYW5kIGFnYWluc3QgYW55IGFuZCBhbGwgbG9zc2VzLCBsaWFiaWxpdGllcywgZGFtYWdlcyxcclxuICAgICAgICAgICAgICAgICAgICBkZWZpY2llbmNpZXMsIGRlbWFuZHMsIGNsYWltcyAoaW5jbHVkaW5nIHRoaXJkIHBhcnR5IGNsYWltcyksIGFjdGlvbnMsIGp1ZGdtZW50cyBvciBjYXVzZXMgb2ZcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb24sIGFzc2Vzc21lbnRzLCBpbnRlcmVzdCwgcGVuYWx0aWVzIGFuZCBvdGhlciBjb3N0cyBvciBleHBlbnNlcyAoaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uYWJsZSBhdHRvcm5leXMnIGZlZXMgYW5kIGV4cGVuc2VzKSBiYXNlZCB1cG9uLCBhcmlzaW5nIG91dCBvZiwgb3IgaW4gcmVsYXRpb24gdG8gb3Igb3RoZXJ3aXNlXHJcbiAgICAgICAgICAgICAgICAgICAgaW4gcmVzcGVjdCBvZiAoaSkgYW55IGJyZWFjaCBvZiBpdHMgb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyA7IG9yIChpaSkgYW55IHdpbGxmdWxcclxuICAgICAgICAgICAgICAgICAgICBtaXNjb25kdWN0LCBmcmF1ZCwgb3Igd3JvbmdmdWwgb3IgbmVnbGlnZW50IGFjdCBvciBvbWlzc2lvbiBvZiBhIFBhcnR5LjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSW4gbm8gZXZlbnQgc2hhbGwgZWl0aGVyIFBhcnR5IGJlIGxpYWJsZSB0byB0aGUgb3RoZXIgZm9yIGFueSBpbmRpcmVjdCwgaW5jaWRlbnRhbCwgcHVuaXRpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgZXhlbXBsYXJ5LCBzcGVjaWFsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgb3IgZGFtYWdlcyBmb3IgbG9zcyBvZiBwcm9maXRzLCByZXZlbnVlLCB3aGV0aGVyIGluIGFuXHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uIGluIGNvbnRyYWN0IG9yIHRvcnQsIG9yIG90aGVyd2lzZSAoY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzIOKAnEluZGlyZWN0IExvc3Nlc+KAnSkgZXZlbiBpZlxyXG4gICAgICAgICAgICAgICAgICAgIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVhY2ggUGFydHnigJlzIGxpYWJpbGl0eSBhcmlzaW5nIG91dCBvZiBvciBpbiBjb25uZWN0aW9uIHdpdGggdGhlIGJyZWFjaCBvZiBhbnkgZGlyZWN0IGFuZCBhY3R1YWxcclxuICAgICAgICAgICAgICAgICAgICBsaWFiaWxpdGllcywgY29zdHMsIGxvc3NlcywgZGFtYWdlcywgc3VpdHMsIHByb2NlZWRpbmdzLCBjb3N0cywgZXhwZW5zZXMgb3IgbGlhYmlsaXRpZXMgc3VmZmVyZWQgb3JcclxuICAgICAgICAgICAgICAgICAgICBpbmN1cnJlZCBkdWUgdG8gcmVzdWx0aW5nIGR1ZSB0byBjbGFpbXMgZm9yIGJyZWFjaCBvZiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYSBQYXJ0eSBvciB0aGlyZFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcnR5LCBicmVhY2ggb2YgY29uZmlkZW50aWFsaXR5IG9ibGlnYXRpb24sIGRhdGEgYnJlYWNoLCBicmVhY2ggb2YgZGF0YSBwcml2YWN5LCBmcmF1ZCwgd2lsbGZ1bFxyXG4gICAgICAgICAgICAgICAgICAgIG5lZ2xpZ2VuY2UsIGdyb3NzIG1pc2NvbmR1Y3Qgb3IgYnJlYWNoIG9mIGFwcGxpY2FibGUgbGF3cyBzaGFsbCBpbiBubyBldmVudCBleGNlZWQgdGhlIGFubnVhbCB0b3RhbFxyXG4gICAgICAgICAgICAgICAgICAgIHB1cmNoYXNlIHByaWNlIHBhaWQgcHVyc3VhbnQgdG8gZ3JhbnQgb2YgYWNjZXNzIGFuZCB1c2FnZSBvZiB0aGUgU2VydmljZXMvU29mdHdhcmUgYnkgdGhlIEN1c3RvbWVyLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTcuIEZvcmNlIE1hamV1cmUgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRWFjaCBvZiB0aGUgUGFydGllcyBpcyBub3QgcmVzcG9uc2libGUgbm9yIGxpYWJsZSBmb3IgYW55IGRlbGF5cyBvciBmYWlsdXJlcyBpbiBwZXJmb3JtYW5jZSBmcm9tIGFueVxyXG4gICAgICAgICAgICAgICAgICAgIGNhdXNlIGJleW9uZCBpdHMgY29udHJvbCwgaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gYWN0cyBvZiBHb2QsIGNoYW5nZXMgdG8gbGF3IG9yIHJlZ3VsYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtYmFyZ29lcywgd2FyLCB0ZXJyb3Jpc3QgYWN0cywgYWN0cyBvciBvbWlzc2lvbnMgb2YgdGhpcmQgcGFydHkgdGVjaG5vbG9neSBwcm92aWRlcnMsIHJpb3RzLCBmaXJlcyxcclxuICAgICAgICAgICAgICAgICAgICBlYXJ0aHF1YWtlcywgZmxvb2RzLCBwb3dlciBibGFja291dHMsIHN0cmlrZXMsIHdlYXRoZXIgY29uZGl0aW9ucywgcGFuZGVtaWMsIGVwaWRlbWljLCBnb3Zlcm5tZW50XHJcbiAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd25zIG9yIGFueSBvdGhlciB1bmZvcmVzZWVhYmxlIGV2ZW50IGJleW9uZCBpdHMgY29udHJvbCAoaGVyZWluYWZ0ZXIgY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgYXMg4oCcRm9yY2UgTWFqZXVyZSBFdmVudOKAnSkuIFVwb24gb2NjdXJyZW5jZSBvZiBhbnkgRm9yY2UgTWFqZXVyZSBFdmVudCwgZWl0aGVyIFBhcnR5IHNoYWxsIGdpdmVcclxuICAgICAgICAgICAgICAgICAgICBub3RpY2UgdG8gdGhlIG90aGVyIHBhcnR5IG9mIGl0cyBpbmFiaWxpdHkgdG8gcGVyZm9ybSBvciBvZiBkZWxheSBpbiBjb21wbGV0aW5nIGl0cyBvYmxpZ2F0aW9ucyBhbmRcclxuICAgICAgICAgICAgICAgICAgICBtdXN0IGFjdCBkaWxpZ2VudGx5IHRvIHJlbWVkeSB0aGUgY2F1c2UgYW5kIHJlc3RvcmUgcGVyZm9ybWFuY2UsIHRvIHRoZSBleHRlbnQgcG9zc2libGUuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBXaGVyZSBGb3JjZS1NYWpldXJlIEV2ZW50IGNvbnRpbnVlcyBmb3IgYSBwZXJpb2QgbW9yZSB0aGFuIFNpeHR5ICg2MCkgY29udGludW91cyBkYXlzLCB0aGVuIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIGVmZmVjdGVkIFBhcnR5IHNoYWxsIGhhdmUgdGhlIHJpZ2h0IHRvIGltbWVkaWF0ZWx5IHRlcm1pbmF0ZSB0aGVzZSBTYWFTIFRlcm1zIEFncmVlbWVudCBieSBwcm92aWRpbmdcclxuICAgICAgICAgICAgICAgICAgICBhIHdyaXR0ZW4gbm90aWNlLsKgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTguIE1haW50ZW5hbmNlIFNlcnZpY2VzIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YiBteS0xXCI+RHVyaW5nIHRoZSBUZXJtLOKAr1RhbmdvIEV5ZSB3aWxsIHByb3ZpZGUgdGhlIE1haW50ZW5hbmNlIFNlcnZpY2VzIGluIGFjY29yZGFuY2Ugd2l0aFxyXG4gICAgICAgICAgICAgICAgdGhlIFNlcnZpY2UgTGV2ZWxzIGR1cmluZyB0aGUgU3VwcG9ydCBIb3VycyBwcm92aWRlZCB0aGF0PC9kaXY+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG10LTIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFlvdSBwcm92aWRlIE1haW50ZW5hbmNlIFNlcnZpY2VzIHdpdGggbm90aWNlIGZvciBhcHBsaWNhYmxlIE1haW50ZW5hbmNlIFNlcnZpY2VzIGluIGFjY29yZGFuY2Ugd2l0aFxyXG4gICAgICAgICAgICAgICAgICAgIGFueSBhcHBsaWNhYmxlIHN5c3RlbSBhbmQgcHJvY2Vzc2VzIGFzIHNldCBvdXQgb24gdGhlIHVuZGVyLUFubmV4dXJlIEEgdG8gdGhlc2UgU2FhUyBUZXJtczsgYW5kPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICB3aGVyZSByZXF1aXJlZCwgWW91IHdpbGwgYXNzaXN0IHdpdGggaW52ZXN0aWdhdGluZyBhbmQgYXNjZXJ0YWluaW5nIHRoZSBjYXVzZSBvZiB0aGUgZmF1bHQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgdG8gVGFuZ28gRXllIGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIGZhdWx0IChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgd2hhdCBZb3Ugb3IgeW91ciBwZXJzb25uZWwgaGF2ZSBkb25lIGluIHJlbGF0aW9uIHRvIHRoZSBmYXVsdCkuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTkuIE1pc2NlbGxhbmVvdXMuIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRoZXNlIFNhYVMgVGVybXMgaXMgZHJhd24gdXAgaW4gRW5nbGlzaCwgd2hpY2ggbGFuZ3VhZ2Ugc2hhbGwgZ292ZXJuIGFsbCBkb2N1bWVudHMsIG5vdGljZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVldGluZ3MsIHByb2NlZWRpbmdzIGFuZCBwcm9jZXNzZXMgcmVsYXRpdmUgdGhlcmV0by5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTm90aGluZyBpbiB0aGVzZSBTYWFTIFRlcm1zIHNoYWxsIGJlIGRlZW1lZCB0byBjb25zdGl0dXRlIGEgam9pbnQgdmVudHVyZSwgYWdlbmN5LCBwYXJ0bmVyc2hpcCxcclxuICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdCBncm91cGluZyBvciBhbnkgb3RoZXIga2luZCBvZiBmb3JtYWwgYnVzaW5lc3MgZ3JvdXBpbmcgb3IgZW50aXR5IGJldHdlZW4gdGhlIFBhcnRpZXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5vIHJpZ2h0cyBvciBvYmxpZ2F0aW9ucyBvZiB0aGUgUGFydGllcyBhcmlzaW5nIGZyb20gdGhlc2UgU2FhUyBUZXJtcyBtYXkgYmUgYXNzaWduZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViLWNvbnRyYWN0ZWQsIG9yIHRyYW5zZmVycmVkLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCB0byBhbnkgdGhpcmQgcGFydHkgd2l0aG91dCB0aGUgb3RoZXIgcGFydHnigJlzXHJcbiAgICAgICAgICAgICAgICAgICAgcHJpb3Igd3JpdHRlbiBhcHByb3ZhbC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgR292ZXJuaW5nIExhdywgSnVyaXNkaWN0aW9uLiBUaGVzZSBTYWFTIFRlcm1zIHNoYWxsIGJlIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIEluZGlhLCBhbmQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgUGFydGllcyBoZXJlYnkgYWdyZWUgdG8gaXJyZXZvY2FibHkgc3VibWl0IHRvIHRoZSBleGNsdXNpdmUganVyaXNkaWN0aW9uIG9mIHRoZSBjb3VydHMgb2YgTmV3IERlbGhpXHJcbiAgICAgICAgICAgICAgICAgICAgaW4gcmVzcGVjdCBvZiBhbGwgZGlzcHV0ZXMgYXJpc2luZyBvdXQgb2YgdGhlc2UgU2FhUyBUZXJtcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IGctMCBtYi0wIGJnLXRlcm1zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWN1c3RvbSBmb3JtLWNoZWNrLXNvbGlkIGZvcm0tY2hlY2staW5saW5lIFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcmVxdWlyZWQgbmFtZT1cInRvY1wiIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRldGVybXMoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1ib2xkIHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRzaXplIG10LTNcIj5JIGFncmVlIHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy48L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiF0ZXJtc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbXMtMTUgbWUtNSB0ZXh0LW5vd3JhcFwiIChjbGljayk9XCJlbnRlcnByaXNlYWN0aXZhdGUoKVwiPlxyXG4gICAgICAgICAgICBTaWduIFVwXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cIm92ZXJsYXlcIiAqbmdJZj1cInNob3d2YWx1ZVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJwb3B1cFwiPlxyXG5cdFx0PGgxIGNsYXNzPVwiYS1vLWlcIj5WZXJpZmljYXRpb24gQ29kZTwvaDE+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwic3ViLWFvaVwiPkFuIE9UUCBoYXMgYmVlbiBzZW50IHRvIHlvdXIgbWFpbC4gUGxlYXNlIGNoZWNrICYgc3VibWl0LjwvaDU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm90cC1jb250YWluZXIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdHAtaW5wdXQgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctb3RwLWlucHV0ICNuZ090cElucHV0IChvbklucHV0Q2hhbmdlKT1cIm9uT3RwQ2hhbmdlKCRldmVudClcIiBpbnB1dG1vZGU9XCJudW1lcmljXCIgY2xhc3M9XCJ2ZXJpZmljYXRpb24tY29kZVwiIHBsYWNlaG9sZGVyPVwiMFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwieyBsZW5ndGg6IDQgLGFsbG93TnVtYmVyc09ubHk6dHJ1ZX1cIj48L25nLW90cC1pbnB1dD5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImludmFsaWRPdHBcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtZGFuZ2VyXCIgPlxyXG4gICAgICAgICAgICBJbnZhbGlkIE9UUCAhXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInJlc2VuZFwiIGNsYXNzPVwic21hbGxfbGcgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZW5kT1RQKClcIj48Yj5SZXNlbmQgT1RQPC9iPjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCIhcmVzZW5kXCIgY2xhc3M9XCJzbWFsbF9sYmwgXCIgPlJlc2VuZCBPVFAgKCB7e2NvdW50ZXJcclxuICAgICAgICAgICAgIH19ICk8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IG1lLTUgdy0xMDAgdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwib3Rwc3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgIFN1Ym1pdFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
64
64
|
schemas: [NO_ERRORS_SCHEMA]
|
65
65
|
}]
|
66
66
|
}] });
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvdGFuZ28tYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDaEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDbEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQzs7QUF5QnJILE1BQU0sT0FBTyxlQUFlO3VHQUFmLGVBQWU7d0dBQWYsZUFBZSxpQkFyQnhCLGtCQUFrQjtZQUNsQix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLGdDQUFnQztZQUNoQyxjQUFjO1lBQ2QsY0FBYztZQUNkLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjtZQUNyQixzQkFBc0IsYUFHdEIsWUFBWTtZQUNaLHNCQUFzQjtZQUN0QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLFdBQVc7d0dBSUYsZUFBZSxZQVJ4QixZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsV0FBVzs7MkZBSUYsZUFBZTtrQkF2QjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGdDQUFnQzt3QkFDaEMsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBQyxDQUFDLGdCQUFnQixDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5PX0VSUk9SU19TQ0hFTUEsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBUYW5nb0F1dGhSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi90YW5nby1hdXRoLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgVGFuZ29BdXRoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgvdGFuZ28tYXV0aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYW5nb0F1dGhMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFuZ29BdXRoU2lnbnVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3RhbmdvLWF1dGgtc2lnbnVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhbmdvQXV0aEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkL3RhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vZGFsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL21vZGFsLWNvbnRlbnQvbW9kYWwtY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdGVwMUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAxL3N0ZXAxLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXAyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3N0ZXAvc3RlcDIvc3RlcDIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RlcDNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC92ZXJ0aWNhbC92ZXJ0aWNhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXaXphcmRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3dpemFyZHMvd2l6YXJkcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ090cElucHV0TW9kdWxlIH0gZnJvbSAnbmctb3RwLWlucHV0JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENhbGVuZGx5TW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9jYWxlbmRseS1tb2RhbC9jYWxlbmRseS1tb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRhbmdvQXV0aENvbXBvbmVudCxcclxuICAgIFRhbmdvQXV0aExvZ2luQ29tcG9uZW50LFxyXG4gICAgVGFuZ29BdXRoU2lnbnVwQ29tcG9uZW50LFxyXG4gICAgVGFuZ29BdXRoRm9yZ290UGFzc3dvcmRDb21wb25lbnQsXHJcbiAgICBTdGVwMUNvbXBvbmVudCxcclxuICAgIFN0ZXAyQ29tcG9uZW50LFxyXG4gICAgU3RlcDNDb21wb25lbnQsXHJcbiAgICBWZXJ0aWNhbENvbXBvbmVudCxcclxuICAgIFdpemFyZHNDb21wb25lbnQsXHJcbiAgICBNb2RhbENvbnRlbnRDb21wb25lbnQsXHJcbiAgICBDYWxlbmRseU1vZGFsQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVGFuZ29BdXRoUm91dGluZ01vZHVsZSxcclxuICAgIE5nT3RwSW5wdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGVcclxuICBdLFxyXG4gIHNjaGVtYXM6W05PX0VSUk9SU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYW5nb0F1dGhNb2R1bGUgeyB9XHJcbiJdfQ==
|