tango-app-ui-auth 3.0.16-dev → 3.0.18-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-forgot-password/tango-auth-forgot-password.component.mjs +31 -5
- package/esm2022/lib/components/tango-auth-login/tango-auth-login.component.mjs +4 -4
- package/esm2022/lib/components/tango-auth-signup/step/step3/step3.component.mjs +2 -1
- package/esm2022/lib/tango-auth.module.mjs +2 -2
- package/fesm2022/tango-app-ui-auth.mjs +31 -8
- package/fesm2022/tango-app-ui-auth.mjs.map +1 -1
- package/lib/components/tango-auth-forgot-password/tango-auth-forgot-password.component.d.ts +12 -0
- package/package.json +1 -1
@@ -218,6 +218,7 @@ export class Step3Component {
|
|
218
218
|
this.subscriptions.push(this.authService.userProfileDet().subscribe({
|
219
219
|
next: (res) => {
|
220
220
|
if (res && res.code == 200) {
|
221
|
+
this.gs.userAccess.next(res.data?.permission);
|
221
222
|
this.cd.detectChanges();
|
222
223
|
this.router.navigate(['/manage/brands']);
|
223
224
|
// this.router.navigateByUrl(this.returnUrl);
|
@@ -239,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
239
240
|
type: ViewChild,
|
240
241
|
args: ['ngOtpInput']
|
241
242
|
}] } });
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAzL3N0ZXAzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQWUzQyxNQUFNLE9BQU8sY0FBYztJQXVEaEI7SUFBZ0M7SUFBaUM7SUFBdUI7SUFBOEI7SUFDckg7SUFBZ0M7SUF2RDFDLFVBQVUsR0FBVyxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7SUFDL0MsUUFBUSxHQUFZLEtBQUssQ0FBQyxDQUFDLHdCQUF3QjtJQUNuRCxTQUFTLEdBQVksS0FBSyxDQUFDLENBQUMsdUJBQXVCO0lBQ25ELFVBQVUsR0FBWSxLQUFLLENBQUMsQ0FBQywwQkFBMEI7SUFDdkQscUJBQXFCLENBQVM7SUFDOUIsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFDQyx3Q0FBd0M7SUFDeEMsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVILDJDQUEyQztJQUMzQyxjQUFjO1FBQ1osSUFBSSxNQUFN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Q0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FDRCxDQUFBO0lBRUgsQ0FBQzt1R0FqUFUsY0FBYzsyRkFBZCxjQUFjLDhKQ2pCM0IsODFvREEycUJBOzsyRkQxcEJhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVztxUEErQ0ksYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5cclxuaW50ZXJmYWNlIElucHV0U3R5bGVzIHtcclxuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7IC8vIERlZmluZSBrZXktdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc3RyaW5ncyBhbmQgdmFsdWVzIGFyZSBzdHJpbmdzXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RlcDMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwMy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0ZXAzLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcDNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgaW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7IC8vIEluaXRpYWwgaW5wdXQgdmFsdWVcclxuICBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlOyAvLyBGbGFnIGZvciBhY3RpdmUgc3RhdGVcclxuICBpc0hvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRmxhZyBmb3IgaG92ZXIgc3RhdGVcclxuICBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgZm9yIGRpc2FibGVkIHN0YXRlXHJcbiAgYXV0aGxvY2FsU3RvcmFnZVRva2VuOiBzdHJpbmc7XHJcbiAgb25Nb3VzZUVudGVyKCkge1xyXG4gICAgdGhpcy5pc0hvdmVyZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIG1vdXNlIGxlYXZlIGV2ZW50XHJcbiAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgdGhpcy5pc0hvdmVyZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgICAvLyBGdW5jdGlvbiB0byBoYW5kbGUgaW5wdXQgY2hhbmdlIGV2ZW50XHJcbiAgICBvbklucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGdldCBpbnB1dCBzdHlsZXMgZHluYW1pY2FsbHlcclxuICBnZXRJbnB1dFN0eWxlcygpOiBJbnB1dFN0eWxlcyB7XHJcbiAgICBsZXQgc3R5bGVzOiBJbnB1dFN0eWxlcyA9IHt9OyAvLyBEZWZpbmUgc3R5bGVzIG9iamVjdCB3aXRoIHR5cGUgSW5wdXRTdHlsZXNcclxuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XHJcbiAgICAgIHN0eWxlc1snYm9yZGVyLWNvbG9yJ10gPSAnYmx1ZSc7IC8vIEJvcmRlciBjb2xvciB3aGVuIGlucHV0IGlzIGFjdGl2ZVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSG92ZXJlZCkge1xyXG4gICAgICBzdHlsZXNbJ2JvcmRlci1jb2xvciddID0gJ2dyZWVuJzsgLy8gQm9yZGVyIGNvbG9yIHdoZW4gaW5wdXQgaXMgaG92ZXJlZFxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICcjY2NjJzsgLy8gQm9yZGVyIGNvbG9yIHdoZW4gaW5wdXQgaXMgZGlzYWJsZWRcclxuICAgICAgc3R5bGVzWydjb2xvciddID0gJyM5OTknOyAvLyBUZXh0IGNvbG9yIHdoZW4gaW5wdXQgaXMgZGlzYWJsZWRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlc1snYm9yZGVyLWNvbG9yJ10gPSAnI2NjYyc7IC8vIERlZmF1bHQgYm9yZGVyIGNvbG9yXHJcbiAgICAgIHN0eWxlc1snY29sb3InXSA9ICcjMzMzJzsgLy8gRGVmYXVsdCB0ZXh0IGNvbG9yXHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3R5bGVzO1xyXG4gIH1cclxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xyXG4gIHRlcm1zYW5kY29uZGl0aW9uOiBhbnk7XHJcbiAgdHlwZTogYW55O1xyXG4gIGFjY291bnREYXRhOiBhbnk7XHJcbiAgdGVybXM6IGFueTtcclxuICBpZHZhbHVlOiBhbnk7XHJcbiAgZW1haWw6IGFueTtcclxuICBzaG93dmFsdWU6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ25nT3RwSW5wdXQnKSBuZ090cElucHV0UmVmOiBhbnk7XHJcbiAgY291bnRlcjogbnVtYmVyO1xyXG4gIHRpY2s6IG51bWJlcjtcclxuICByZXNlbmQ6IGJvb2xlYW4gPXRydWU7XHJcbiAgY291bnREb3duOiBhbnk7XHJcbiAgb3RwOiBhbnk7XHJcbiAgYWJvdXRGb3JtRGF0YTogYW55O1xyXG4gIHByaWNpbmdGb3JtRGF0YTogYW55O1xyXG4gIHJldHVyblVybDogYW55O1xyXG4gIGludmFsaWRPdHA6Ym9vbGVhbiA9IGZhbHNlXHJcbiAgc3Vic2NyaXB0aW9uczpTdWJzY3JpcHRpb25bXSA9IFtdXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBhdXRoU2VydmljZTpBdXRoU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6Um91dGVyLCBwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIHRvYXN0U2VydmljZTpUb2FzdFNlcnZpY2VcclxuKXtcclxuICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICB0aGlzLmdzLmVudmlyb25tZW50LnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICBpZiAoZW52KSB7XHJcbiAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuID0gYCR7ZW52LmFwcFZlcnNpb259LSR7ZW52LlVTRVJEQVRBX0tFWX1gO1xyXG4gICAgfVxyXG4gIH0pXHJcbiAgKVxyXG5cclxuICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmF1dGhTZXJ2aWNlLmFib3V0Rm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMuYWJvdXRGb3JtRGF0YSA9IGRhdGF9fSkpXHJcbiAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hdXRoU2VydmljZS5wcmljaW5nRm9ybURhdGEuc3Vic2NyaWJlKChkYXRhKT0+e2lmKGRhdGEpe3RoaXMucHJpY2luZ0Zvcm1EYXRhID0gZGF0YX19KSlcclxufVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbik9PntcclxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxubmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gZ2V0IHJldHVybiB1cmwgZnJvbSByb3V0ZSBwYXJhbWV0ZXJzIG9yIGRlZmF1bHQgdG8gJy8nXHJcbiAgdGhpcy5yZXR1cm5VcmwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydyZXR1cm5VcmwnLnRvU3RyaW5nKCldIHx8ICcvJzsgICAgICBcclxufVxyXG4gIHVwZGF0ZXRlcm1zKGV2dDogYW55KSB7XHJcbiAgICB0aGlzLnRlcm1zID0gZXZ0LnRhcmdldC5jaGVja2VkXHJcbiAgfVxyXG5cclxuICBlbnRlcnByaXNlYWN0aXZhdGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOnRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICBlbWFpbDp0aGlzLmFib3V0Rm9ybURhdGE/LmNvcnBvcmF0ZUVtYWlsXHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnNlbmRTaWdudXBPdHAoZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RG93biA9IHRpbWVyKDAsIHRoaXMudGljaykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50RG93bi51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdvdmVybGF5LW9wZW4nKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93dmFsdWUgPXRydWUgXHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjooZXJyKT0+e1xyXG4gICAgICAgICAgaWYoZXJyKXtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgKSAgXHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZW5kT1RQKCkge1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIG5hbWU6dGhpcy5hYm91dEZvcm1EYXRhPy5maXJzdE5hbWUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYWJvdXRGb3JtRGF0YT8uY29ycG9yYXRlRW1haWxcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnNlbmRTaWdudXBPdHAoZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICB7XHJcbiAgICAgICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICAgICAgaWYocmVzKXtcclxuICAgICAgICAgICAgdGhpcy5uZ090cElucHV0UmVmLnNldFZhbHVlKCcnKTtcclxuICAgICAgICAgICAgdGhpcy5jb3VudGVyID0gNjA7XHJcbiAgICAgICAgICAgIHRoaXMudGljayA9IDEwMDA7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5yZXNlbmQgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RG93biA9IHRpbWVyKDAsIHRoaXMudGljaykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ZXIgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50RG93bi51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciAtIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOihlcnIpPT57XHJcbiAgICAgICAgICBpZihlcnIpe1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG4gICAgICApIFxyXG4gICAgKVxyXG5cclxuICB9XHJcbiAgb3Rwc3VibWl0KCl7XHJcbiAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnROYW1lOiB0aGlzLmFib3V0Rm9ybURhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICBmaXJzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICAgbGFzdE5hbWU6IHRoaXMuYWJvdXRGb3JtRGF0YT8ubGFzdE5hbWUsXHJcbiAgICAgICBjb3Jwb3JhdGVFbWFpbDogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3Jwb3JhdGVFbWFpbCxcclxuICAgICAgIG1vYmlsZU51bWJlcjogdGhpcy5hYm91dEZvcm1EYXRhPy5tb2JpbGVOdW1iZXIsXHJcbiAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5hYm91dEZvcm1EYXRhPy5jb3VudHJ5Q29kZSxcclxuICAgICAgIHBhc3N3b3JkOiB0aGlzLmFib3V0Rm9ybURhdGE/LnBhc3N3b3JkLFxyXG4gICAgICAgdG90YWxTdG9yZXM6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy50b3RhbFN0b3Jlcy52YWx1ZSxcclxuICAgICAgIHN0b3JlU2l6ZTp0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3RvcmVTaXplLnZhbHVlLFxyXG4gICAgICAgdG90YWxDYW1lcmE6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdG9yZVNpemU/LmNhbWVyYXMsXHJcbiAgICAgICBzdWJzY3JpcHRpb25QZXJpb2Q6IHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5zdWJzY3JpcHRpb25QZXJpb2QsXHJcbiAgICAgICBzdWJzY3JpcHRpb25UeXBlOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3Vic2NyaXB0aW9uVHlwZSxcclxuICAgICAgIHByb2R1Y3Q6IHRoaXMuZ2V0VHJ1ZUtleXModGhpcy5wcmljaW5nRm9ybURhdGE/LnByb2R1Y3QpLFxyXG4gICAgICAgIG90cDp0aGlzLm90cFxyXG4gICB9XHJcbiAgIFxyXG4gICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgdGhpcy5hdXRoU2VydmljZS5zaWdudXAoZGF0YSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlcyk9PntcclxuICAgICAgaWYocmVzKXtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmFib3V0Rm9ybURhdGEubmV4dChudWxsKVxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJpY2luZ0Zvcm1EYXRhLm5leHQobnVsbClcclxuICAgICAgXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmxheS1vcGVuJyk7XHJcbiAgICAgIHRoaXMuc2hvd3ZhbHVlID1mYWxzZSBcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgbGV0IGxvZ2luVG9rZW46IGFueSA9XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuKTtcclxuICAgIGlmIChsb2dpblRva2VuKSB7XHJcbiAgICAgIGxvZ2luVG9rZW4gPSBKU09OLnBhcnNlKGxvZ2luVG9rZW4pO1xyXG4gICAgfVxyXG4gICBcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgdGhpcy5hdXRobG9jYWxTdG9yYWdlVG9rZW4sXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVzPy5kYXRhPy5yZXN1bHQpXHJcbiAgICAgICk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnVzZXJQcm9maWxlKCk7XHJcbiAgICAgIH1cclxuICAgICB9LFxyXG4gICAgIGVycm9yOihyZXMpPT57XHJcbiAgICAgIGlmKHJlcyl7XHJcbiAgICAgIHRoaXMuaW52YWxpZE90cCA9IHRydWVcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgIH0sXHJcbiAgIH0pIFxyXG4gICApXHJcblxyXG4gICBcclxuXHJcbiAgfVxyXG5cclxuICBvbk90cENoYW5nZShldmVudDphbnkpe1xyXG4gICAgdGhpcy5pbnZhbGlkT3RwID0gZmFsc2VcclxuICAgIHRoaXMub3RwID0gZXZlbnRcclxuICB9XHJcblxyXG4gIGdldFRydWVLZXlzKG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5maWx0ZXIoa2V5ID0+IG9ialtrZXldID09PSB0cnVlKTtcclxuICB9XHJcblxyXG4gIHVzZXJQcm9maWxlKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgdGhpcy5hdXRoU2VydmljZS51c2VyUHJvZmlsZURldCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzJiYgcmVzLmNvZGUgPT0yMDApIHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvYnJhbmRzJ10pO1xyXG4gICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJldHVyblVybCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgKVxyXG4gICAgXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgIGNsYXNzPVwiY2FyZCBtdC0xMCBteC0xNVwiPlxyXG48ZGl2IGlkPVwia3RfY29udGVudF9jb250YWluZXJcIiBjbGFzcz1cImNvbnRhaW5lci14eGwgZm9udCBoLTEwMCAgbXgtMTAgcGUtMTUgbXktN1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImgtNTUwcHggc3RpY2t5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLTAgbXQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4gZnMtbGctMSBtYi00IHRleHQtZ3JheS04MDBcIj5TYWFTIFRFUk1TIEFORCBDT05ESVRJT05TPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiB0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIG1lLTEgc3ViXCI+VGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgKGhlcmVpbmFmdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG8gYXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKAnFNBQVMgVGVybXPigJ0pIHNoYWxsIGdvdmVybiB5b3VyICjigJxVc2Vy4oCdIG9yIOKAnFlvdeKAnSBvciDigJxZb3Vy4oCdIG9yIOKAnEN1c3RvbWVy4oCdKSB1c2Ugb2YgVGFuZ28gRXllXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFuYWx5dGljcyBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzIGludGVsbGlnZW5jZSBzb2Z0d2FyZSAoY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzIOKAnFNvZnR3YXJl4oCdKSB3aGljaCBpcyBhY2Nlc3NpYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggVGFuZ28gRXllIHdlYnNpdGUgaHR0cHM6Ly9yZXRhaWwudGFuZ29leWUuYWkvYXV0aC9sb2dpbiAoV2Vic2l0ZSkuIEJ5IGFjY2Vzc2luZyBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBXZWJzaXRlLCBZb3UgaW4geW91ciBpbmRpdmlkdWFsIGNhcGFjaXR5IGFuZCBvciBpZiB5b3UgYXJlIHJlcHJlc2VudGluZyBhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5IHRoZW4gWW91IGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eSBZb3UgYXJlIGF1dGhvcml6ZWQgdG8gcmVwcmVzZW50IHNpZ25pZnkgeW91ciBhZ3JlZW1lbnQgdG8gYmUgYm91bmQgYnkgdGhlc2UgU2FhU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVybXMgb2YgdXNlIHdoaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jdXJpbmcgdGhlIFNlcnZpY2VzIGZyb20gVGFuZ28uIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIgdGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBtZS0xIG15LTUgc3ViXCI+VGFuZ28gRXllIHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnksIGFtZW5kLCB1cGRhdGUsIHN1c3BlbmQgb3IgZGlzY29udGludWUgdGhlIHdob2xlIG9yIGFueSBwb3J0aW9uIG9mIHRoZSBTZXJ2aWNlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYnNpdGUgb3IgdGhlIFNhYVMgVGVybXMgYXQgYW55IHRpbWUuIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktbGctMlwiPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1hbGlnbi1qdXN0aWZ5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjEuIERlZmluaXRpb24gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcTWFpbnRlbmFuY2UgU2VydmljZXPigJ0gbWVhbnMgdGhlIHN1cHBvcnQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludGVuYW5jZSBzZXJ2aWNlcyBwcm92aWRlZCBieSBUYW5nbyBFeWUgdG8gQ3VzdG9tZXIgcHVyc3VhbnQgdG8gdGhlc2UgU2FhUyBUZXJtcyBhbmQgbW9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGRldGFpbGVkIG91dCB1bmRlciBBbm5leHVyZSBBLiA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxTb2Z0d2FyZeKAnSBtZWFucyB0aGUgZGF0YSBhbmFseXRpY3MgYW5kIGJ1c2luZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbGxpZ2VuY2Ugc29mdHdhcmUgYW5kIGl0cyBvYmplY3QgY29kZSB2ZXJzaW9uIHdoaWNoIGVuYWJsZXMgdGhlIEN1c3RvbWVyIHRvIGlkZW50aWZ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vbmdzdCBvdGhlcnMsIGN1c3RvbWVyIGZvb3RmYWxscywgZGVtb2dyYXBoaWNzLCBpZGVudGlmeSBtaXNzZWQgb3Bwb3J0dW5pdGllcywgaW5jbHVkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgdXBkYXRlcyBvciBuZXcgdmVyc2lvbnMuPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcU2VydmljZXPigJ0gcmVmZXIgdG8gdGhlIGluLXN0b3JlIEFJIGRyaXZlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbHl0aWNzIHByb3ZpZGVkIHRocm91Z2ggdGhlIFNvZnR3YXJlIHRvIHRoZSBDdXN0b21lciB0aGF0IGlzIGhvc3RlZCBieSBUYW5nbyBFeWUgYW5kIG1hZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSB0byBDdXN0b21lciBvdmVyIGEgbmV0d29yayB3aGV0aGVyIG9uIGEgdHJpYWwgb3IgcGFpZCBiYXNpcy4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxUZXJt4oCdIHNoYWxsIG1lYW4gdGhhdCBwZXJpb2Qgc3BlY2lmaWVkIGluIGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVkdWxlIHRvIGJlIGV4ZWN1dGVkIHNlcGFyYXRlbHkgd2l0aCB0aGUgQ3VzdG9tZXIgZHVyaW5nIHdoaWNoIEN1c3RvbWVyIHdpbGwgaGF2ZSBvbi1saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgYW5kIHVzZSBvZiB0aGUgU2VydmljZXMgdGhyb3VnaCB0aGUgV2Vic2l0ZS4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4yLiBFbGlnaWJpbGl0eSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXktN1wiPkluIG9yZGVyIHRvIHVzZSB0aGUgU2VydmljZXMsIFlvdSBtdXN0Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPiBCZSBhYm92ZSAxOCB5ZWFycyBvZiBhZ2U7IDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+Q29tcGxldGUgdGhlIGFjY291bnQgcmVnaXN0cmF0aW9uIHByb2Nlc3MgdG8gYWNjZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU2VydmljZXMgdGhyb3VnaCB0aGUgV2Vic2l0ZTs8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSB3aWxsIHByb3ZpZGUgY29ycmVjdCwgdXB0byBkYXRlIGluZm9ybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBpbmNsdWRpbmcgYmlsbGluZyBhZGRyZXNzOzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4gWW91IHdpbGwga2VlcCBhbGwgeW91ciBjcmVkZW50aWFscyBhbmQgcGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZGVudGlhbCBhbmQgYWxzbyByZXNwb25zaWJsZSB0byBtYWludGFpbmluZyB0aGUgc2FmZXR5IGFuZCBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbjsgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSB3aWxsIHByb3ZpZGUgYWxsIHJlbGV2YW50IGFuZCByZXF1aXJlZCBoYXJkd2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvZnR3YXJlIGFzIHN1Z2dlc3RlZCBieSBUYW5nbyBFeWUgYXQgeW91ciBkZXNpZ25hdGVkIGxvY2F0aW9uIGluIG9yZGVyIHRvIGVuYWJsZSBUYW5nb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXllIHRvIGluc3RhbGwgdGhlIFNvZnR3YXJlIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIFNlcnZpY2VzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+My4gU2VydmljZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj4gSW4gY29uc2lkZXJhdGlvbiBmb3IgcGF5bWVudCBvZiB0aGUgZmVlcywgVGFuZ28gRXllXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFudHMgdGhlIEN1c3RvbWVyIGEgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSwgcGVyc29uYWwsIHJldm9jYWJsZSwgbGljZW5jZSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIGFuZCB1c2UgdGhlIFNlcnZpY2VzIGluIGFjY29yZGFuY2Ugd2l0aCBUYW5nbyBFeWXigJlzIGludGVuZGVkIHB1cnBvc2UgZm9yIHRoZSBTZXJ2aWNlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpY2VuY2UpLjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIFNlcnZpY2VzIGFyZSBub3QgY29udGluZ2VudCBvbiB0aGUgZGVsaXZlcnkgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBmdXR1cmUgZnVuY3Rpb25hbGl0eSBvciBmZWF0dXJlcy48L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIG9yIHJlbW92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgb2YgdGhlIFNlcnZpY2VzIGFuZCBvciB0aGUgU29mdHdhcmUgZnJvbSB0aW1lIHRvIHRpbWUuIFdoZXJlIHRoZXJlIGlzIGFueSBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJhdGlvbiB0byB0aGUgU2VydmljZXMgYW5kIG9yIHRoZSBTb2Z0d2FyZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBjbGF1c2UsIFRhbmdvIEV5ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm92aWRlIHRoZSBDdXN0b21lciB3aXRoIDE1IGJ1c2luZXNzIGRheXPigJkgbm90aWNlIGFuZCB0aGUgQ3VzdG9tZXIgYWdyZWVzIHRoYXQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCBhbHRlcmF0aW9uIGlzIGF0IFRhbmdvIEV5ZeKAmXMgZGlzY3JldGlvbi7CoDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5BY2Nlc3MgdG8gdGhlIFNlcnZpY2VzIHNoYWxsIGJlIGxpbWl0ZWQgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcmlzZWQgcGVyc29ucyB3aXRoIHZhbGlkIGNyZWRlbnRpYWxzIHdoaWNoIGlzIHRvIGJlIGFncmVlZCBhdCB0aGUgdGltZSBvZiBwcm92aWRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgU2VydmljZXMgYW5kIHRoZSBXZWJzaXRlLiBJZiBpdCBpcyBhIHNpbmdsZSBhY2NvdW50IGFjY2Vzcywgc3VjaCBhY2NvdW50IHNoYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYmUgdXNlZCBieSBtdWx0aXBsZSB1c2VycyBhdCB0aGUgc2FtZSB0aW1lLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3UgYWdyZWUgdGhhdMKgVGFuZ28gRXllOjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj53aWxsIHN1cHBseSB0aGUgU2VydmljZXMgb24gYSBub24tZXhjbHVzaXZlIGJhc2lzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+ZG9lcyBub3QgbWFrZSBhbnkgd2FycmFudHkgb3IgcmVwcmVzZW50YXRpb24gYXMgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYmlsaXR5IG9mIHRoZSBmYWNpbGl0aWVzIG9yIHNlcnZpY2VzIG9mIGFueSB0aGlyZC1wYXJ0eSBzdXBwbGllcnM7IGFuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5pcyBub3QgbGlhYmxlIGZvciBhbnkgZmFpbHVyZSBpbiwgZmF1bHQgd2l0aCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVncmFkYXRpb24gb2YgdGhlIFNlcnZpY2VzL1NvZnR3YXJlIGlmIHRoYXQgZmFpbHVyZSwgZmF1bHQgb3IgZGVncmFkYXRpb24gaXMgYXR0cmlidXRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBvciBjYXVzZWQgYnkgYW55IGZhaWx1cmUgb2YgdGhlIEN1c3RvbWVyIGVudmlyb25tZW50IG9yIHRoZSBmYWNpbGl0aWVzIG9yIHNlcnZpY2VzIG9mIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydHkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj40LiBMaWNlbnNlIFJlc3RyaWN0aW9ucyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+WW91IG11c3Qgbm90IGFjY2VzcyBvciB1c2UgdGhlIFNlcnZpY2VzIGFuZCBvciB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgZXhjZXB0IGFzIHBlcm1pdHRlZCBieSB0aGUgTGljZW5zZSBhbmQgbWF5IG5vdCBkbyBvciBhdXRob3JpemUgdGhlIGNvbW1pc3Npb24gb2YgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdCB0aGF0IHdvdWxkIG9yIG1pZ2h0IGludmFsaWRhdGUgb3IgYmUgaW5jb25zaXN0ZW50IHdpdGggdGhlIFRhbmdvIEV5ZeKAmXMgaW50ZWxsZWN0dWFsIHByb3BlcnR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0cyBpbiB0aGUgU2VydmljZXMgb3IgU29mdHdhcmUuIFdpdGhvdXQgbGltaXRpbmcgdGhlIGZvcmVnb2luZyBwcm92aXNpb25zLCB0aGUgQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWdyZWVzIGFuZCBhY2tub3dsZWRnZXMgdGhhdCBpdCBtdXN0IG5vdCBhbmQgd2lsbCBub3QgcGVybWl0IGFueSBwZXJzb24gdG86PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiByZXNlbGwsIGFzc2lnbiwgdHJhbnNmZXIsIGRpc3RyaWJ1dGUgb3IgcHJvdmlkZSBvdGhlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhY2Nlc3MgdG8gdGhlIFNlcnZpY2VzOzwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj7igJxmcmFtZeKAnSwg4oCcbWlycm9y4oCdIG9yIHNlcnZlIGFueSBvZiB0aGUgU2VydmljZXMvU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgb24gYW55IHdlYiBzZXJ2ZXIgb3Igb3RoZXIgY29tcHV0ZXIgc2VydmVyIG92ZXIgdGhlIGludGVybmV0IG9yIGFueSBvdGhlciBuZXR3b3JrOzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmNvcHksIGFsdGVyLCBtb2RpZnksIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIGZyb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJvZHVjZSwgcmVzZWxsLCB0cmFuc2ZlciB0byBhIHRoaXJkIHBhcnR5LCByZXZlcnNlIGFzc2VtYmxlLCByZXZlcnNlIGVuZ2luZWVyLCByZXZlcnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgb3IgZW5oYW5jZSB0aGUgU2VydmljZXMgb3IgU29mdHdhcmU7IG9yOyA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5hbHRlciwgcmVtb3ZlIG9yIHRhbXBlciB3aXRoIGFueSB0cmFkZW1hcmtzLCBhbnkgcGF0ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNvcHlyaWdodCBub3RpY2VzLCBvciBhbnkgY29uZmlkZW50aWFsaXR5IGxlZ2VuZCBvciBub3RpY2UsIG9yIGFueSBudW1iZXJzLCBvciBvdGhlciBtZWFucyBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiB1c2VkIG9uIG9yIGluIHJlbGF0aW9uIHRvIHRoZSBTZXJ2aWNlcyBvciBTb2Z0d2FyZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgQ3VzdG9tZXIgbXVzdCBub3QgdXNlIHRoZSBTZXJ2aWNlcyBpbiBhbnkgd2F5IHdoaWNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIGJyZWFjaCBvZiBhbnkgc3RhdHV0ZSwgcmVndWxhdGlvbiwgbGF3IG9yIGxlZ2FsIHJpZ2h0IG9mIGFueSBwZXJzb24gd2l0aGluIHRoZSBSZXB1YmxpYyBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBJbmRpYSBvciB0aGUganVyaXNkaWN0aW9uIGluIHdoaWNoIHRoZSBDdXN0b21lciBvciBpdHMgcGVyc29ubmVsIGFyZSBsb2NhdGVkLsKgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj41LiBQcm9oaWJpdGVkIFVzZSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtdC03XCI+WW91IGFncmVlIHRvIHVzZSB0aGUgV2Vic2l0ZSBhbmQgdGhlIFNlcnZpY2VzL1NvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VkIHRocm91Z2ggaXQgZm9yIHRoZSBwdXJwb3NlIGVudW1lcmF0ZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBhbmQgYWdyZWUgbm90IHRvIHVuZGVydGFrZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gQSkgVXNlIG9mIHRoZSBXZWJzaXRlIGFuZCB0aGUgU2VydmljZXMgdG8gdmlvbGF0ZSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXdzIG9mIGFueSBqdXJpc2RpY3Rpb24gZnJvbSB3aGljaCBZb3UgYWNjZXNzIHRoZSBTZXJ2aWNlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEIpIFVzZSB0aGUgU2VydmljZXMgZm9yIGNvbXBldGl0aXZlIGJlbmNobWFya2luZyBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGV2ZWxvcGluZyBhIGNvbXBldGl0aXZlIHByb2R1Y3Qgb3Igc2VydmljZXMuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gQykgVG8gdXBsb2FkIG9yIG90aGVyd2lzZSBkaXNzZW1pbmF0ZSBhbnkgY29tcHV0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlydXNlcyBvciBvdGhlciBzb2Z0d2FyZSB0aGF0IG1heSB0aGUgU29mdHdhcmUgb2YgVGFuZ28gRXllOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEQpIFRvIHVubGF3ZnVsbHkgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IG90aGVycyBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGluIGluIGFuIHVubGF3ZnVsIG1hbm5lcjs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbWItNVwiPiBFKSBUbyBzb2xpY2l0IG90aGVycyB0byBwZXJmb3JtIG9yIHBhcnRpY2lwYXRlIGluIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmxhd2Z1bCBhY3RzLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4gcmVzZWxsLCBhc3NpZ24sIHRyYW5zZmVyLCBkaXN0cmlidXRlIG9yIHByb3ZpZGUgb3RoZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYWNjZXNzIHRvIHRoZSBTZXJ2aWNlczs8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFja25vd2xlZGdlIHRoYXQgVGFuZ28gRXllIHdpbGwgbm90IGJlIGxpYWJsZSBmb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IGluZm9ybWF0aW9uIHRoYXQgaXMgcmVsYXllZCBhbmQgc3RvcmVkIGluIGl0cyBjbG91ZCBzZXJ2ZXJzIHdoaWNoIGlzIGFjY2Vzc2VkIHRocm91Z2ggeW91clxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zLiBZb3Ugc2hhbGwgYWx3YXlzIGJlIHJlc3BvbnNpYmxlIGZvciB0aGUgc2FtZSBhdCBhbGwgdGltZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFncmVlIHRvIGNvbXBseSB3aXRoIGFsbCBhcHBsaWNhYmxlIGxhd3Mgc3RhdHV0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlZ3VsYXRpb25zIG9mIHRoZSBjb3VudHJ5IHlvdSBhcmUgYWNjZXNzaW5nIHRoZSBXZWJzaXRlL1NvZnR3YXJlIGFuZCB0aGUgU2VydmljZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uY2VybmluZyB0aGUgdXNlIG9mIHRoZSBpbmZvcm1hdGlvbi92aWRlbyBmb290YWdlIHdoaWNoIGlzIHJlbGF5ZWQgdGhyb3VnaCB5b3VyIGNjdHYgY2FtZXJhIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbG91ZCBzdG9yYWdlIG9mIFRhbmdvIEV5ZS4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFja25vd2xlZGdlIHRoYXQgdGhlIFNlcnZpY2VzIGhhcyBub3QgYmVlbiBkZXNpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBjb2xsZWN0IG9yIHByb2Nlc3MgYW55IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBhbmQgYWNjb3JkaW5nbHkgeW91IGFncmVlIG5vdCB0byB1c2UgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzIHRvIGNvbGxlY3QsIHByb2Nlc3Mgb3Igc3RvcmUgYW55IHNlbnNpdGl2ZSBwZXJzb25hbCBkYXRhIG9uY2UgeW91IGFjY2VzcyB0aGUgcmVwb3J0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgVGFuZ28gRXllIGluIHB1cnN1YW5jZSB0byB0aGUgU2VydmljZXMuIFRhbmdvIEV5ZSBzcGVjaWZpY2FsbHkgZGlzY2xhaW0gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpYWJpbGl0eSB0aGF0IG1heSByZXN1bHQgZnJvbSB5b3VyIHVzZSBvZiB0aGUgU2VydmljZXMgdG8gY29sbGVjdCwgcHJvY2VzcyBhbmQgc3RvcmUgc2Vuc2l0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gbW9uaXRvciB0aGUgdXNlIG9mIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXZWJzaXRlL1NlcnZpY2VzL1NvZnR3YXJlIGJ5IFlvdSB0byBlbnN1cmUgY29tcGxpYW5jZSBvZiB0aGVzZSBTYWFTIFRlcm1zIGFuZCBhcHBsaWNhYmxlIGxhdy5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5JbiB0aGUgZXZlbnQgb2YgdmlvbGF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgbGF3cyBhbmQgcmVndWxhdGlvbnMsIFRhbmdvIEV5ZSBzaGFsbCBoYXZlIHRoZSByaWdodCB0byBpbnZlc3RpZ2F0ZSBzdWNoIGJyZWFjaGVzIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbnMgd2hpY2ggc2hhbGwgaW5jbHVkZSBidXQgbm90IGJlIGxpbWl0ZWQgdG8gcHJvdmlkaW5nIHdhcm5pbmcgdG8gZmlyc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBvZmZlbmRlcnMsIHN1c3BlbmRpbmcgYW5kIG9yIGV2ZW4gdGVybWluYXRpbmcgdGhlIFNlcnZpY2VzIGFuZCBhY2Nlc3MgdG8gdGhlIFdlYnNpdGUuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj42LiBJbnZvaWNpbmc6IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5JbnZvaWNlcyB3aWxsIGJlIGlzc3VlZCBvbiB0aGUgYmFzaXMgb2YgdGhlIG51bWJlciBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3llZCBzdG9yZXMgaW4gZXhpc3RlbmNlIG9uIHRoZSBpbnZvaWNlIGRhdGUgYW5kIHNoYWxsIGJlIGlzc3VlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBheW1lbnQgVGVybXMgaW4gdGhlIGNvbW1lcmNpYWwgdGVybXMgYWJvdmUuIFRhbmdvIEV5ZSBzaGFsbCBiaWxsIEN1c3RvbWVyIGZvciBhcHBsaWNhYmxlIHRheGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc2VwYXJhdGUgbGluZSBpdGVtIG9uIGVhY2ggaW52b2ljZS4gQ3VzdG9tZXIgc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIHBheW1lbnQgb2YgYWxsIHNhbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGF4ZXMsIEdvb2RzIGFuZCBTZXJ2aWNlcyB0YXgsIG9yIHNpbWlsYXIgY2hhcmdlcyByZWxhdGluZyB0byBDdXN0b21lcuKAmXMgcHVyY2hhc2UgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBvZiB0aGUgU2VydmljZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj43LiBQYXltZW50OiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+UGF5bWVudCBzaGFsbCBiZSBtYWRlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgUGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBpbiB0aGUgY29tbWVyY2lhbCB0ZXJtcyB3aGljaCBzaGFsbCBiZSBhZ3JlZWQgdG8gc2VwYXJhdGVseSBiZXR3ZWVuIFRhbmdvIEV5ZSBhbmQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIGFuZCB3aGljaCBzaGFsbCBiZSByZWFkIGFuZCBiZSBjb3Rlcm1pbm91cyB3aXRoIHRoZXNlIFNhYVMgVGVybXMgKFBheW1lbnQgVGVybXMpLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIG90aGVyd2lzZSwgcGF5bWVudHMgYXJlIG5vbi1yZWZ1bmRhYmxlLiBJbiB0aGUgZXZlbnQgdGhlIEN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxzIHRvIG1ha2UgdGhlIHBheW1lbnQgYXMgcGVyIHRoZSBwYXltZW50IHRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgc2VuZCBhIHdyaXR0ZW4gbm90aWNlIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQgdG8gZW5zdXJlIHRoYXQgdGhlIHBheW1lbnQgaXMgbWFkZSB3aXRoaW4gMzAgKHRoaXJ0eSkgZGF5cyAo4oCcQWRkaXRpb25hbCBQZXJpb2TigJ0pIGZyb20gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgb2YgcmVjZWlwdCBzdWNoIHdyaXR0ZW4gbm90aWNlLiBJZiB0aGUgY3VzdG9tZXIgZmFpbHMgdG8gbWFrZSB0aGUgcGF5bWVudCB3aXRoaW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgUGVyaW9kLCB0aGUgYWNjZXNzIHRvIHRoZSB3ZWIgcG9ydGFsIHdpbGwgYmUgYmxvY2tlZCBhbmQgdGhlIFNlcnZpY2VzIHNoYWxsIGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZCA3IChzZXZlbikgZGF5cyBhZnRlciBzZW5kaW5nIGEgcmVtaW5kZXIgZW1haWwgdG8gQ3VzdG9tZXIgZnJvbSB0aGUgZXhwaXJ5IG9mIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIFBlcmlvZC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5QYXJ0aWVzIGFja25vd2xlZGdlIHRoYXQgdGltZSBpcyBvZiB0aGUgZXNzZW5jZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BlY3QgdG8gcGF5bWVudHMgcmVxdWlyZWQgdW5kZXIgdGhpcyBjbGF1c2UuIEluIHRoZSBldmVudCBvZiBhbnkgZGVsYXkgaW4gcGF5bWVudCBieSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIsIFRhbmdvIEV5ZSBtYXkgcmVxdWlyZSB0aGUgQ3VzdG9tZXIgdG8gcGF5IFRhbmdvIEV5ZSBhIGxhdGUgcGF5bWVudCBwZW5hbHR5IGVxdWFsIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWx2ZSBwZXJjZW50ICgxMiUpIHBlciBhbm51bSBvbiBhbGwgb3V0c3RhbmRpbmcgcGF5bWVudHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjguSW50ZWxsZWN0dWFsIFByb3BlcnR5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPkFsbCBUYW5nbyBFeWUgU29mdHdhcmUsIGluY2x1ZGluZyB0aGUgV2Vic2l0ZSBhbmQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgdGhlcmV0bywgYW5kIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgY3JlYXRlZCBieSBUYW5nbyBFeWUgaW4gZnVydGhlcmFuY2UgdG8gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIG9yIGFueSB3b3JrcywgcHJvZHVjdHMsIGRvY3VtZW50cywgbWF0ZXJpYWxzIGNyZWF0ZWQgdXNpbmcsIGluY29ycG9yYXRpbmcsIGNvbXByaXNpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW4sIG9yIHJlbGF0aW5nIHRvIHN1Y2ggaW50ZWxsZWN0dWFsIHByb3BlcnR5ICjigJxUYW5nbyBFeWUgSVDigJ0pIHNoYWxsIGF0IGFsbCB0aW1lcyByZW1haW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1c2l2ZSBwcm9wZXJ0eSBvZiBUYW5nbyBFeWUgYW5kL29yIGl0cyBub21pbmVlcyBvciBhZmZpbGlhdGVzLCBhcyB0aGUgY2FzZSBtYXkgYmUsIGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgc2hhbGwgbm90IGhhdmUgYW55IHJpZ2h0LCB0aXRsZSwgY2xhaW0gZXRjLiB3aGF0c29ldmVyIG92ZXIgdGhlIHNhbWUuIE5vdGhpbmcgY29udGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVpbiBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgYSB0cmFuc2ZlciwgYXNzaWdubWVudCBvciBjb252ZXlhbmNlIGJ5IFRhbmdvIEV5ZSB0byBDdXN0b21lciBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3duZXJzaGlwLCBpbnRlcmVzdCBvciB0aXRsZSB0byB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9yIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXR0YWNoZWQgdG8gdGhlIFRhbmdvIEV5ZSBJUC4gVGhlIEN1c3RvbWVyIGlzIG9ubHkgYXV0aG9yaXplZCB0byByZWNlaXZlIGEgcmlnaHQgdG8gYWNjZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIEV5ZSBJUCBmb3IgdGhlIHRlcm0gZXhwbGljaXRseSBncmFudGVkIGJ5IFRhbmdvIEV5ZSB0byBDdXN0b21lciBhbmQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aXNpb25zIG9mIHRoZXNlIFNhYVMgVGVybXMuIFRoaXMgYXV0aG9yaXphdGlvbiBpcyBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub24tc3ViLWxpY2Vuc2FibGUsIHVubGVzcyBvdGhlcndpc2UgYWdyZWVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LiBDdXN0b21lciBzaGFsbCBub3QgaGF2ZSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgdG8gbW9kaWZ5LCBhZGFwdCwgaW5jb3Jwb3JhdGUsIGNyZWF0ZSBhbnkgZGVyaXZhdGl2ZSB1c2luZyBvciBpbmNvcnBvcmF0aW5nIFRhbmdvIEV5ZSBJUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciBpbiBhbnkgbWFubmVyIHRyYW5zZmVyLCBlbmN1bWJlciwgYWxpZW5hdGUsIHNlbGwsIHNoYXJlLCBhc3NpZ24sIGxpY2Vuc2Ugb3Igc3ViLWxldCBpdCB0byBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydHkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+QXMgYmV0d2VlbiB0aGUgcGFydGllcywgQ3VzdG9tZXIgcmV0YWlucyBhbGwgcmlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlIGFuZCBpbnRlcmVzdCBpbiBhbmQgdG8g4oCTwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5hbGwgcmF3IGRhdGEgZ2VuZXJhdGVkIGZyb20gdGhlIHVzZSBvZiB0aGUgU29mdHdhcmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0ZXh0LCBzb3VuZCwgdmlkZW8sIG9yIGltYWdlIGZpbGVzLCBidXQgZXhjbHVkaW5nIGFueSBCdXNpbmVzcyBEYXRhICjigJxHZW5lcmF0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YeKAnSk7IGFuZMKgwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5yYXcgZGF0YSBvd25lZCBieSBhbmQgcmVsYXRpbmcgdG8gdGhlIEN1c3RvbWVyLCBzdWNoIGFzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnkgaW5mb3JtYXRpb24sIHN0b3JlIGxvY2F0aW9uIGFuZCBkZXRhaWxzIG9mIHRoZSB6b25lcywgZW1wbG95ZWUgaW5mb3JtYXRpb24sIGJ1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRpbmcgYW55IEdlbmVyYXRlZCBEYXRhICjigJxCdXNpbmVzcyAsIHRoYXQgaXMgcHJvdmlkZWQgdG8gVGFuZ28gRXllIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciB0aHJvdWdoIHRoZSBDdXN0b21lcuKAmXMgdXNlIG9mIHRoZSBTb2Z0d2FyZSAodG9nZXRoZXIsIOKAnEN1c3RvbWVyIERhdGHigJ0pLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBDdXN0b21lciBoZXJlYnkgZ3JhbnRzIHRvIFRhbmdvIEV5ZSBhIG5vbi1leGNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkd2lkZSwgZnVsbHkgcGFpZCB1cCBhbmQgcm95YWx0eSBmcmVlIHJpZ2h0IGFuZCBsaWNlbnNlIHRvIHVzZSB0aGUgR2VuZXJhdGVkIERhdGEgZm9yIChpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlzaW9uIG9mIFNlcnZpY2VzIGFuZCBmdWxmaWxsbWVudCBvZiBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGFuZDsgKGlpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbXByb3ZpbmcgdGhlIFNvZnR3YXJlLsKgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIGhlcmVieSBncmFudHMgdG8gVGFuZ28gRXllIGEgbm9uLWV4Y2x1c2l2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd29ybGR3aWRlLCBmdWxseSBwYWlkIHVwIGFuZCByb3lhbHR5IGZyZWUgcmlnaHQgYW5kIGxpY2Vuc2UgdG8gdXNlIHRoZSBCdXNpbmVzcyBEYXRhIGZvciAoaSkgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3Zpc2lvbiBvZiBTZXJ2aWNlcyBhbmQgZnVsZmlsbG1lbnQgb2Ygb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtczsgYW5kIChpaSkgaW1wcm92aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTb2Z0d2FyZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5DdXN0b21lciBhZ3JlZXMgdG8gcHJvdmlkZSBjb21tZW50cyBvciBmZWVkYmFjaywgaWYgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBUYW5nbyBFeWUgcmVnYXJkaW5nIHRoZSBTb2Z0d2FyZSBvciBmdXR1cmUgcmVsZWFzZXMvIGRldmVsb3BtZW50IHRvIHRoZSBTb2Z0d2FyZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIG9mIHRoZSB3b3JrIGNhcnJpZWQgb3V0IGR1cmluZyB0aGlzIGVuZ2FnZW1lbnQgd2l0aCB0aGUgQ3VzdG9tZXIgb3IgYW55IGFuZCBhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAga25vd2xlZGdlIGFuZCBpbmZvcm1hdGlvbiBvZiBnZW5lcmljIG5hdHVyZSwgYXJpc2luZyBvdXQgb2YgdXNlIG9mIHRoZSBTb2Z0d2FyZSBieSB0aGUgQ3VzdG9tZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgZGlzY2xvc2luZyBhbnkgQ3VzdG9tZXIgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIG9yIEN1c3RvbWVyIERhdGEuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIHVuZGVydGFrZXMgdG8gcHJvbXB0bHkgaW5mb3JtIFRhbmdvIEV5ZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnkgaW5mcmluZ2VtZW50IG9mIFRhbmdvIEV5ZSBJUCByaWdodHMgYnkgdGhpcmQgcGFydGllcywgYW5kIHNoYWxsIHBlcm1pdCBUYW5nbyBFeWUgdG8gYXNzdW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvbGUgYXV0aG9yaXR5IHRvIHRha2UgYXBwcm9wcmlhdGUgbGVnYWwgYWN0aW9uLiBDdXN0b21lciBzaGFsbCBub3QgbWFrZSBhbnkgc3RhdGVtZW50IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWlzc2lvbiBpbiByZWxhdGlvbiB0byBzdWNoIGNsYWltIHdoaWNoIG1heSBwcmVqdWRpY2lhbGx5IGFmZmVjdCB0aGUgY2hhbmNlcyBvZiBzZXR0bGVtZW50IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVuc2Ugb2Ygc3VjaCBjbGFpbSwgYW5kIHNoYWxsIHByb3ZpZGUgaW5mb3JtYXRpb24gYW5kIGFzc2lzdGFuY2UgcmVhc29uYWJseSByZXF1ZXN0ZWQgaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3aXRoIHN1Y2ggY2xhaW0gb3Igc3VpdC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UYW5nbyBFeWUgaGVyZWJ5IHVuZGVydGFrZXMsIGluIHRoZSBldmVudCB0aGF0IHRoaXJkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpZXMgYWN0IGFnYWluc3QgdGhlIEN1c3RvbWVyIGZvciBhbnkgcmVhc29uIHdoYXRzb2V2ZXIgaW4gcmVsYXRpb24gdG8gdGhlIFNvZnR3YXJlIG9yIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUYW5nbyBFeWUgSVAsIHRvIHByb3ZpZGUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlaXIgcG9zc2Vzc2lvbiBhbmQgb3RoZXJ3aXNlIGRvIGFuZCBleGVjdXRlIGFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RzLCB0aGluZ3MsIG1hdHRlcnMgYW5kIGRlZWRzIGFzIG1heSBiZSByZWFzb25hYmx5IHJlcXVpcmVkIGJ5IHRoZSBDdXN0b21lciwgZnJvbSB0aW1lIHRvIHRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2hvdyBvd25lcnNoaXAgb2Ygc3VjaCBUYW5nbyBFeWUgSVAuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjkuIERhdGEgUHJvdGVjdGlvbiBhbmQgUHJpdmFjeSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+RWFjaCBQYXJ0eSBzaGFsbCBhdCBhbGwgdGltZXMgY29tcGx5IHdpdGggaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRpb25zIHVuZGVyIGFwcGxpY2FibGUgcHJpdmFjeSByZWd1bGF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgR2VuZXJhdGVkIERhdGEsIEJ1c2luZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEsIGFuZCBDdXN0b21lciBEYXRhIHRoYXQgaXMgY29sbGVjdGVkLCBzdG9yZWQgYW5kL29yIHByb2Nlc3NlZCBieSBpdCBpbiB0aGUgY291cnNlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1pbmcgaXRzIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMuIEZ1cnRoZXIgZWFjaCBQYXJ0eSBzaGFsbCBwcm9jZXNzIHN1Y2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkIERhdGEsIEJ1c2luZXNzIERhdGEsIGFuZCBDdXN0b21lciBEYXRhIG9ubHkgdG8gdGhlIGV4dGVudCBuZWNlc3NhcnkgZm9yIHRoZSBwdXJwb3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiBwZXJmb3JtaW5nIHRoZWlyIHJlc3BlY3RpdmUgb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5FYWNoIHBhcnR5IHNoYWxsIHRha2UgYXBwcm9wcmlhdGUgdGVjaG5pY2FsIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25hbCBtZWFzdXJlcyBhcyByZXF1aXJlZCB1bmRlciBhcHBsaWNhYmxlIGxhdyBhZ2FpbnN0IGFueSBkYXRhIGJyZWFjaCwgdW5hdXRob3JpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIHVubGF3ZnVsIHByb2Nlc3Npbmcgb2YgdGhlIHBlcnNvbmFsIGRhdGEgb3IgaXRzIGFjY2lkZW50YWwgbG9zcywgZGVzdHJ1Y3Rpb24gb3IgZGFtYWdlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMC4gUmVwcmVzZW50YXRpb25zLCBXYXJyYW50aWVzIGFuZCBEaXNjbGFpbWVycyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+RWFjaCBQYXJ0eSByZXByZXNlbnRzLCB3YXJyYW50cyBhbmQgY292ZW5hbnRzIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aGF0OiAoaSkgaXQgaXMgZHVseSBvcmdhbml6ZWQgYW5kIHZhbGlkbHkgZXhpc3RpbmcgYW5kIGluIGdvb2Qgc3RhbmRpbmcgdW5kZXIgdGhlIGxhd3Mgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIG9mIGl0cyBpbmNvcnBvcmF0aW9uIG9yIGZvcm1hdGlvbjsgKGlpKSBpdCBoYXMgdGhlIGZ1bGwgcmlnaHQgYW5kIGF1dGhvcml0eSB0byBlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZXNlIFNhYVMgVGVybXMgYW5kIHRoYXQgdGhlc2UgU2FhUyBUZXJtcyBjb25zdGl0dXRlcyBhIGxlZ2FsLCB2YWxpZCBhbmQgYmluZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmxpZ2F0aW9uOyAoaWlpKSB0aGUgZXhlY3V0aW9uLCBkZWxpdmVyeSBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhlc2UgU2FhUyBUZXJtcyBkb2VzIG5vdCBhbmQgd2lsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3QgY29uZmxpY3Qgd2l0aCwgb3IgY29uc3RpdHV0ZSBhIGJyZWFjaCBvciBkZWZhdWx0IHVuZGVyLCBpdHMgY2hhcnRlciBvZiBvcmdhbml6YXRpb24sIG9yIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdCBvciBvdGhlciBpbnN0cnVtZW50IHRvIHdoaWNoIGl0IGlzIGEgcGFydHk7IChpdikgaXQgd2lsbCBjb21wbHkgd2l0aCwgYW5kIHdpbGwgZW5zdXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBvZiBpdHMgcGVyc29ubmVsLCB0aGlyZCBwYXJ0eSBhZ2VudHMsIGNvbnN1bHRhbnRzIGV0Yy4sIGNvbXBseSB3aXRoIGFsbCBsYXdzIGFuZCByZWd1bGF0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIHRvIChpKSB0aGUgcHJvdmlzaW9uLCBvciBhY2Nlc3MgYW5kIHVzZSBvZiB0aGUgU29mdHdhcmU7IGFuZCAoaWkpIHBlcmZvcm1hbmNlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMsIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gbGF3cyBhbmQgcmVndWxhdGlvbnMgcmVsYXRlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcml2YWN5LCBkYXRhIHByb3RlY3Rpb24sIGVsZWN0cm9uaWMgY29tbXVuaWNhdGlvbnMsIGV4cG9ydCBhbmQgY29uZmlkZW50aWFsaXR5LjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXByZXNlbnRzLCB3YXJyYW50cyBhbmQgY292ZW5hbnRzIHRoYXQgKGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIEV5ZSBwZXJzb25uZWwgc2hhbGwgcHJvdmlkZSB0aGUgU2VydmljZXMgaW4gYSBkaWxpZ2VudCBhbmQgcHJvZmVzc2lvbmFsIG1hbm5lciB3aXRoIGR1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJlIChpaSkgVGFuZ28gRXllIElQIGRvZXMgbm90IGFuZCB3aWxsIG5vdCBpbmZyaW5nZSwgbWlzYXBwcm9wcmlhdGUgb3Igb3RoZXJ3aXNlIHZpb2xhdGUgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55IHBhcnR5IHdpdGhpbiB0aGUgdGVycml0b3J5IG9mIEluZGlhIGFuZCBvciBhbnkgb3RoZXIgY291bnRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdHMgcmlnaHN0IGFyZSByZWdpc3RlcmVkOyBhbmQgKGlpaSkgYWxsIFNlcnZpY2VzIHRoYXQgYXJlIHByb3ZpZGVkIHdpbGwgYmUgZnJlZSBmcm9tIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrbm93biBtYWxpY2lvdXMgY29kZSBvciBpbnN0cnVjdGlvbnMgdGhhdCBtYXkgaW50ZW50aW9uYWxseSBkaXNydXB0LCBkYW1hZ2Ugb3IgaW50ZXJmZXJlIHdpdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IHVzZSBieSBDdXN0b21lci4gVGFuZ28gRXllIGZ1cnRoZXIgd2FycmFudHMgYW5kIHJlcHJlc2VudHMgdG8gdGhlIEN1c3RvbWVyIHRoYXQgaXQgaG9sZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aWxsIGNvbnRpbnVlIHRvIGhvbGQsIGFueSBhbmQgYWxsIGxpY2Vuc2VzLCBwZXJtaXRzIG9yIG90aGVyIGF1dGhvcml6YXRpb25zIHJlcXVpcmVkIGJ5IGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGxhdyB0byBwZXJmb3JtIHRoZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlc2UgU2FhUyBUZXJtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj7igJxBcHBsaWNhYmxlIGxhd+KAnSBtZWFucyBhbnkgYXBwbGljYWJsZSBsYXcsIHN0YXR1dGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUsIHJlZ3VsYXRpb24sIG9yZGluYW5jZSwgcmVxdWlyZW1lbnQsIGRpcmVjdGlvbnMsIGd1aWRlbGluZXMsIGFubm91bmNlbWVudCBvciBvdGhlciBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiBvciByZXF1aXJlbWVudCBvZiBhbnkgZ292ZXJubWVudCBvciBxdWFzaSBnb3Zlcm5tZW50OyBkZXBhcnRtZW50LCBhZ2VuY3kgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGFsaXR5IG9mIGFueSBnb3Zlcm5tZW50IHRoZXJlb2YsIGFueSBjb3VydCBvciBhcmJpdHJhbCB0cmlidW5hbCBhcHBsaWNhYmxlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyB1bmRlciB0aGUgcmVwdWJsaWMgb2YgSW5kaWEuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VEhFIFNPRlRXQVJFIEFORCBBTllUSElORyBQUk9WSURFRCBJTiBDT05ORUNUSU9OIFdJVEhcclxuICAgICAgICAgICAgICAgICAgICAgICAgVEhFU0UgU2FhUyBURVJNUyBBUkUgUFJPVklERUQg4oCcQVMtSVPigJ0uIEVYQ0VQVCBGT1IgVEhFIEVYUFJFU1MgUkVQUkVTRU5UQVRJT05TIEFORCBXQVJSQU5USUVTIElOXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRISVMgU0VDVElPTiA2LCBUQU5HTyBFWUUgRE9FUyBOT1QgTUFLRSBBTlkgUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMsIEVYUFJFU1MsIElNUExJRUQgT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgU1RBVFVUT1JZIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIFFVQUxJVFksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBTWVNURU0gSU5URUdSQVRJT04sIEVSUk9SLUZSRUUsIFVOLUlOVEVSUlVQVElPTiwgU1VQUE9SVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDT1JSRUNUSU9OIE9SIFJFUEFJUiAoVU5MRVNTIE9USEVSV0lTRSBBR1JFRUQpIE9SIE9USEVSV0lTRSBUSEFUIFRBTkdPIEVZRSBTT0ZUV0FSRSBIRVJFVU5ERVJcclxuICAgICAgICAgICAgICAgICAgICAgICAgV0lMTCBPUEVSQVRFIElOIEVWRVJZIENPTUJJTkFUSU9OIE9SIEVOVklST05NRU5UIERFU0lSRUQgQlkgQ1VTVE9NRVIgV0lUSCBBTlkgREFUQSwgREVWSUNFUyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ09NUFVURVIgU1lTVEVNUyBBTkQgUFJPR1JBTVMgT0YgSVRTIENIT0lDRSBPUiBUSEFUIFRIRSBSRU1FRFlJTkcgT0YgT05FIFBST0dSQU0gRVJST1IgRE9FUyBOT1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgUkVTVUxUIElOIFRIRSBPQ0NVUlJFTkNFIE9GIE9USEVSIFBST0dSQU0gRVJST1JTLiBBTEwgU1VDSCBSRVBSRVNFTlRBVElPTlMgQU5EIFdBUlJBTlRJRVMgQVJFXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhFUkVCWSBESVNDTEFJTUVELjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGUgQ3VzdG9tZXIgd2FycmFudHMgdGhhdDogPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+IEEpIEN1c3RvbWVyIERhdGEgZG9lcyBub3QgYW5kIHdpbGwgbm90IGluZnJpbmdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXNhcHByb3ByaWF0ZSBvciBvdGhlcndpc2UgdmlvbGF0ZSB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgdGhpcmQgcGFydHk7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPkIpIGl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGFueSBzZWN1cml0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2dWxuZXJhYmlsaXRpZXMgYW5kIHRoZSBjb25zZXF1ZW5jZXMgb2Ygc3VjaCB2dWxuZXJhYmlsaXRpZXMgYXJpc2luZyBzb2xlbHkgZnJvbSB0aGUgbmF0dXJlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIERhdGE7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPiBDKSBpdCBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBFbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgVXNlcnMgY29tcGx5IHdpdGggYWxsIHJlcXVpcmVtZW50cyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGluIHJlbGF0aW9uIHRvIHRoZSB1c2Ugb2YgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0byB0aGUgZXh0ZW50IGFwcGxpY2FibGUpOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gRCkgaXQgc2hhbGwgaW1tZWRpYXRlbHkgbm90aWZ5IFRhbmdvIEV5ZSBvZiAoYSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IGFjY291bnQtcmVsYXRlZCBhYnVzZTsgKGIpIHRoZSB1bmF1dGhvcml6ZWQgZGlzY2xvc3VyZSwgdXNlIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlaXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudCBjcmVkZW50aWFscyBieSBvciB0byBhbnkgdGhpcmQgcGFydHk7IGFuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gRSkgaXQgc2hhbGwgbm90LCBhbmQgc2hhbGwgbm90IHBlcm1pdCBhbnkgcGFydHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgcGVyc29uIHRvLCBhY2Nlc3Mgb3IgdXNlIHRoZSBTb2Z0d2FyZSBleGNlcHQgYXMgZXhwcmVzc2x5IHBlcm1pdHRlZCBieSB0aGVzZSBTYWFTIFRFUk1TLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXaXRob3V0IGxpbWl0aW5nIHRoZSBnZW5lcmFsaXR5IG9mIHRoZSBmb3JlZ29pbmcsIEN1c3RvbWVyIHNoYWxsIG5vdCwgYW5kIHNoYWxsIG5vdCBwZXJtaXQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnR5IG9yIHBlcnNvbiB0bzo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy01XCI+IDEuIGludGVyZmVyZSB3aXRoIG9yIGRpc3J1cHQgdGhlIGludGVncml0eSBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBvZiB0aGUgU29mdHdhcmUsIG9yIGNpcmN1bXZlbnQsIGJ5cGFzcywgZGVsZXRlIG9yIHJlbW92ZSBhbnkgZm9ybSBvZiBwcm90ZWN0aW9uLCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2FnZSwgZnVuY3Rpb25hbGl0eSBvciB0ZWNobmljYWwgcmVzdHJpY3Rpb25zIG9yIGxpbWl0YXRpb25zLCBvciB0byBlbmFibGUgZnVuY3Rpb25hbGl0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCBieSBUYW5nbyBFeWUsIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgU29mdHdhcmU7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtNVwiPiAyLiBhY2Nlc3Mgb3IgdXNlIHRoZSBTb2Z0d2FyZSBwcm92aWRlZCB1bmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBTYWFTIFRlcm1zLCBpbiBhbnkgbWFubmVyIG9yIGZvciBhbnkgcHVycG9zZSB0aGF0IHZpb2xhdGVzIGFueSBhcHBsaWNhYmxlIGxhdywgdGhlIHJpZ2h0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiBvdGhlcnMsIGluIGEgd2F5IHRoYXQgY291bGQgaGFybSB0aGUgc2VydmljZS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy01XCI+My4gcmV2ZXJzZSBlbmdpbmVlciwgZGlzYXNzZW1ibGUsIGRlLWNvbXBpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY3JlYXRlLCBjb3B5IG9yIHJlcHJvZHVjZSB0aGUgc291cmNlIGNvZGUgb3Igb2JqZWN0IGNvZGUgb2YgdGhlIFNvZnR3YXJlIG9yIHBlcmZvcm0gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb25zICh3aXRob3V0IFRhbmdvIEV5ZeKAmXMgcHJpb3Igd3JpdHRlbiBjb25zZW50KTsgYW5kPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTEuIEN1c3RvbWVy4oCZcyBBY2NvdW50IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJzIGFyZSBmdWxseSByZXNwb25zaWJsZSB0byBzYWZlZ3VhcmQgdGhlaXIgYWNjZXNzIGNyZWRlbnRpYWxzIC0gaW5jbHVkaW5nIGluIHRoZSBzZW5zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY29tYmluYXRpb24gb2YgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMi4gRHVyYXRpb24sIFJlbmV3YWwgYW5kIFRlcm1pbmF0aW9uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGluIHRoZSBwcm9wb3NhbCwgdGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBjb250aW51ZSB0byBiZSBlZmZlY3RpdmUgZHVyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIEN1c3RvbWVyIHVzZXMgYW5kIG9yIGNvbnRpbnVlcyB0byB1c2UgdGhlIFNvZnR3YXJlLCB1bmxlc3MgdGVybWluYXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybXMgc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgb3V0XHJcbiAgICAgICAgICAgICAgICAgICAgaGVyZWluLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBJdCBiZWluZyBjbGFyaWZpZWQgdGhhdCB0aGVyZSB3b3VsZCBiZSBhIHJlbmV3YWwgZmVlIGNoYXJnZWQgZXZlcnkgMTIgbW9udGhzIGF0IHRoZSByYXRlIG9mIDclIHBlclxyXG4gICAgICAgICAgICAgICAgICAgIGFubnVtLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFaXRoZXIgcGFydHkgbWF5IHRlcm1pbmF0ZSB0aGVpciBidXNpbmVzcyByZWxhdGlvbnNoaXAgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBpbW1lZGlhdGVseSB1cG9uIGFcclxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFjaCBieSB0aGUgb3RoZXIgcGFydHkgdGhhdCBoYXMgbm90IGJlZW4gY3VyZWQgd2l0aGluIHRoaXJ0eSAoMzApIGRheXMgYWZ0ZXIgcmVjZWlwdCBvZiBub3RpY2Ugb2ZcclxuICAgICAgICAgICAgICAgICAgICBzdWNoXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWNoLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFaXRoZXIgcGFydHkgbWF5IGFsc28gdGVybWluYXRlIHRoaXMgQWdyZWVtZW50IHVwb24gdGhpcnR5ICgzMCkgZGF5cyB3cml0dGVuIG5vdGljZSB3aXRob3V0XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduaW5nIGFueVxyXG4gICAgICAgICAgICAgICAgICAgIHJlYXNvbi4gQ3VzdG9tZXIgd2lsbCBwYXkgaW4gZnVsbCBmb3IgdGhlIFNvZnR3YXJlIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGxhc3QgZGF5IG9uIHdoaWNoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgd2FzIHVzZWQuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTMuIEVmZmVjdCBvZiBUZXJtaW5hdGlvbi4gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVXBvbiB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgaW1tZWRpYXRlbHkgY2Vhc2UgcHJvdmlkaW5nIGFjY2VzcyB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVXBvbiB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgZGVsZXRlIHRoZSBHZW5lcmF0ZWQgRGF0YSwgQnVzaW5lc3MgRGF0YSBhbmRcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBEYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGVkLCBzdG9yZWQgYW5kL29yIHByb2Nlc3NlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGZvciB0aGUgcHVycG9zZSBvZiBwcm92aWRpbmcgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgd2l0aGluIDE1XHJcbiAgICAgICAgICAgICAgICAgICAgKGZpZnRlZW4pIGRheXMgb2YgcmVjZWlwdCBvZiBub3RpY2Ugb2YgdGVybWluYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSWYgVGFuZ28gRXllIHRlcm1pbmF0ZXMgdGhlc2UgU2FhUyBUZXJtcyBkdWUgdG8gYSBicmVhY2ggYnkgQ3VzdG9tZXIgb2YgYW55IG9mIHRoZSBwcm92aXNpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVkIHVuZGVyIHRoZXNlXHJcbiAgICAgICAgICAgICAgICAgICAgU2FhUyBUZXJtcywgdGhlbiBDdXN0b21lciBzaGFsbCBpbW1lZGlhdGVseSBwYXkgdG8gVGFuZ28gRXllIGFsbCBhbW91bnRzIHRoZW4gZHVlIHVuZGVyIHRoZXNlIFNhYVNcclxuICAgICAgICAgICAgICAgICAgICBUZXJtcy4gSWZcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21lciB0ZXJtaW5hdGVzIHRoZXNlIFNhYVMgVGVybXMgZHVlIHRvIGEgYnJlYWNoIGJ5IFRhbmdvIEV5ZSwgdGhlbiBUYW5nbyBFeWUgc2hhbGwgaW1tZWRpYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICByZXBheSB0b1xyXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIGFsbCBwcmUtcGFpZCBhbW91bnRzIGZvciBhbnkgdW5wZXJmb3JtZWQgU2VydmljZXMgc2NoZWR1bGVkIHRvIGJlIGRlbGl2ZXJlZCBhZnRlciB0aGVcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbiBkYXRlLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBTdWJqZWN0IHRvIHRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zLCB1cG9uIGl0cyB0ZXJtaW5hdGlvbiBhbmQgdXBvbiBzdWJzZXF1ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgd3JpdHRlbiByZXF1ZXN0IGJ5XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIERpc2Nsb3NpbmcgUGFydHksIHRoZSBSZWNlaXZpbmcgUGFydHkgb2YgdGFuZ2libGUgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHNoYWxsIGltbWVkaWF0ZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2hcclxuICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvciBkZXN0cm95IHN1Y2ggaW5mb3JtYXRpb24gYW5kIHByb3ZpZGUgd3JpdHRlbiBjZXJ0aWZpY2F0aW9uIG9mIHN1Y2ggZGVzdHJ1Y3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgdGhhdCB0aGVcclxuICAgICAgICAgICAgICAgICAgICByZWNlaXZpbmcgcGFydHkgbWF5IHBlcm1pdCBpdHMgbGVnYWwgY291bnNlbCB0byByZXRhaW4gb25lIGFyY2hpdmFsIGNvcHkgb2Ygc3VjaCBpbmZvcm1hdGlvbiBpbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICBldmVudCBvZiBhXHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBkaXNwdXRlIGJldHdlZW4gdGhlIHBhcnRpZXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRoZSBwcm92aXNpb25zIHJlbGF0aW5nIHRvIGNvbmZpZGVudGlhbGl0eSwgYXMgd2VsbCBhcyBmb3IgbGlhYmlsaXR5LCBhcHBsaWNhYmxlIGxhdyBhbmQgc2V0dGxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIG9mIGRpc3B1dGVzXHJcbiAgICAgICAgICAgICAgICAgICAgc2hhbGwgc3Vydml2ZSB0aGUgZXhwaXJhdGlvbiBvciB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdGlvbiBzaGFsbCBub3QgYWZmZWN0IGFueSByaWdodHMgb3Igb2JsaWdhdGlvbnMgb2YgdGhlIHBhcnRpZXMgaW5jdXJyZWQgcHJpb3IgdG8gdGhlIGRhdGUgb2ZcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3RoZXJ3aXNlIGFncmVlZCBiZXR3ZWVuIHRoZSBwYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTQuIEFjY2VzcyB0byBBbmFseXRpY3MgdmlhIFdlYiBQb3J0YWwgJiBFeGNlbCBSZXBvcnRzwqAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIGFuYWx5dGljcyBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSkgd2ViLWJhc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24sIGIpIGV4Y2VsIHJlcG9ydHMgc2VudCB2aWEgZW1haWwgb3IgRmlsZSBUcmFuc2ZlciBQcm90b2NvbC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VHJhaW5pbmc6IEFsbCDigJxTb2Z0d2FyZeKAnSB1c2VkIGluIGNvbm5lY3Rpb24gd2l0aCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy4gRm9yIGF2b2lkYW5jZSBvZiBkb3VidCwgaXQgaXMgY2xhcmlmaWVkIHRoYXQgVGFuZ28gRXllIGFncmVlcyB0byBwcm92aWRlIHNhbXBsZSBkYXNoYm9hcmRcclxuICAgICAgICAgICAgICAgICAgICBhbmQgYXJyYW5nZSBmb3IgdHJhaW5pbmcgc2Vzc2lvbnMgdG8gdGhlIEN1c3RvbWVyIGFzIG11dHVhbGx5IGFncmVlZCBieSB0aGUgUGFydGllcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE1LiBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+QWxsIHByb3ByaWV0YXJ5IG9yIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiwgdGVjaG5pY2FsIGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgb3Iga25vdy1ob3cgYW5kIGFsbCBvdGhlciBub24tcHVibGljIGluZm9ybWF0aW9uLCBtYXRlcmlhbCBvciBkYXRhIGluIHdoYXRldmVyIGZvcm0gb3IgbW9kZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIGRpc2Nsb3NlZCBieSBhIHBhcnR5ICjigJxEaXNjbG9zaW5nIFBhcnR54oCdKSB0byB0aGUgb3RoZXIgcGFydHkgKOKAnFJlY2VpdmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIFBhcnR54oCdKSBpbiBjb25uZWN0aW9uIHdpdGggdGhlIFNvZnR3YXJlIGFjY2VzcyBhbmQgdXNhZ2Ugd2hldGhlciBtYXJrZWQgYXMg4oCcY29uZmlkZW50aWFs4oCdIG9yIG5vdCBhdFxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSB0aW1lIG9mIGRpc2Nsb3N1cmUsIHNoYWxsIGJlIHRyZWF0ZWQgYXMg4oCcQ29uZmlkZW50aWFsIEluZm9ybWF0aW9u4oCdLiBDb25maWRlbnRpYWwgSW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBzaGFsbCBpbmNsdWRlLCBidXQgbm90IGJlIGxpbWl0ZWQgdG8sIHRoZSB0ZXJtcyBhbmQgcHJpY2luZy9jb21tZXJjaWFsIHRlcm1zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIHRlY2huaWNhbCBhbmQgb3RoZXIgc3BlY2lmaWNhdGlvbnMgb2YgdGhlIFNvZnR3YXJlLCBhbnkgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIHNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBjb2RlcyBhbmQgY29udGVudCBhcyB3ZWxsIGFzIHRoZSBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGFuZCBjb21wb25lbnRzLCBhbmQgYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgb3RoZXIgbm9uLXB1YmxpYyBpbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIFJlY2VpdmluZyBQYXJ0eSB1bmRlcnRha2VzOiAoaSkgbm90IHRvIHVzZSBDb25maWRlbnRpYWxcclxuICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBvdGhlcndpc2UgdGhhbiBmb3IgdGhlIHB1cnBvc2UgZm9yIHdoaWNoIGl0IHdhcyBkaXNjbG9zZWQgb3IgdG8gcGVybWl0IHRoZSBSZWNlaXZpbmdcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0eSB0byBleGVyY2lzZSByaWdodHMgYW5kIGxpY2Vuc2VzIGdyYW50ZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyA7IChpaSkgbm90IHRvIGRpc2Nsb3NlXHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiB0aGUgRGlzY2xvc2luZyBQYXJ0eSwgb3RoZXIgdGhhbiB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHRob3NlIGVtcGxveWVlcywgYWdlbnRzLCBjb250cmFjdG9ycywgc3ViY29udHJhY3RvcnMsIGxpY2Vuc2VlcyBvZiB0aGUgUmVjZWl2aW5nIFBhcnR5LCBpdHNcclxuICAgICAgICAgICAgICAgICAgICBBZmZpbGlhdGVzIG9yIGFueSBvdGhlciBwYXJ0aWVzIHdobyBoYXZlIGEgbmVlZCB0byBrbm93IGl0IGluIG9yZGVyIHRvIGFzc2lzdCB0aGUgUmVjZWl2aW5nIFBhcnR5IGluXHJcbiAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBpdHMgb2JsaWdhdGlvbnMsIG9yIHRvIHBlcm1pdCB0aGUgUmVjZWl2aW5nIFBhcnR5IHRvIGV4ZXJjaXNlIGl0cyByaWdodHPCoCBhbmQgbGljZW5zZXNcclxuICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGlzIEFncmVlbWVudDsgKGlpaSkgdG8gdGFrZSBhbGwgc3VjaCBzdGVwcyB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3MgdG8gdGhlIERpc2Nsb3NpbmdcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0eeKAmXMgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uLCBhcyBpdCB0YWtlcyB0byBwcm90ZWN0IGl0cyBvd24gY29uZmlkZW50aWFsIG9yIHByb3ByaWV0YXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb2YgYSBzaW1pbGFyIG5hdHVyZSwgd2hpY2ggc3RlcHMgc2hhbGwgaW4gbm8gZXZlbnQgYmUgbGVzcyB0aGFuIGEgcmVhc29uYWJsZSBzdGFuZGFyZCBvZlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmU7IGFuZCBpdikgdG8gcmV0dXJuIHRvIHRoZSBDdXN0b21lciwgb3IgZGVzdHJveSwgb24gcmVxdWVzdCBhbGwgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHRoYXRcclxuICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBkaXNjbG9zZWQgdG8gdGhlbSwgaW5jbHVkaW5nIGFsbCBjb3BpZXMgdGhlcmVvZiBhbmQgdG8gZGVsZXRlIGFsbCBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYVxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtcmVhZGFibGUgZm9ybSB0byB0aGUgZXh0ZW50IHByYWN0aWNhbGx5IHBvc3NpYmxlLCBzdWJqZWN0IHRvIGFueSByaWdodHMgb3IgbGljZW5zZXMgZ3JhbnRlZFxyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgb2JsaWdhdGlvbnMgaW4gcmVsYXRpb24gdG8gQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhlc2UgU2FhUyBUZXJtc8KgIHNoYWxsIG5vdCBhcHBseSB0byBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24sIHdoaWNoIChpKSBoYXMgYmVjb21lIG9yIGJlY29tZXNcclxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNseSBhdmFpbGFibGUgYnkgbWVhbnMgb3RoZXIgdGhhbiBhIGJyZWFjaCBvZiBjb25maWRlbnRpYWxpdHkgb2JsaWdhdGlvbnM7IChpaSkgd2FzIGFscmVhZHlcclxuICAgICAgICAgICAgICAgICAgICBrbm93biB0byB0aGUgUmVjZWl2aW5nIFBhcnR5IHByaW9yIHRvIGRpc2Nsb3N1cmU7IChpaWkpIHRoZSBSZWNlaXZpbmcgUGFydHkgaXMgcmVxdWlyZWQgdG8gZGlzY2xvc2VcclxuICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhd3Mgb3IgcmVndWxhdGlvbnMgb3Igd2l0aCBhIGNvdXJ0IG9yIGFkbWluaXN0cmF0aXZlIG9yZGVyOyBvclxyXG4gICAgICAgICAgICAgICAgICAgIChpdikgaXMgaW5kZXBlbmRlbnRseSBkZXZlbG9wZWQgYnkgdGhlIFJlY2VpdmluZyBQYXJ0eSB3aXRob3V0IHJlZmVyZW5jZSB0byBvciB1c2Ugb2YgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIG9mIHRoZSBEaXNjbG9zaW5nIFBhcnR5LlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgUmVjZWl2aW5nIFBhcnR5IHNoYWxsIHByb21wdGx5LCBhbmQgaW4gYW55IGNhc2Ugd2l0aGluXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyZWUgKDMpIGRheXMgYWR2aXNlIHRoZSBEaXNjbG9zaW5nIFBhcnR5IGluIHdyaXRpbmcgb2YgYW55IHVuYXV0aG9yaXplZCBkaXNjbG9zdXJlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pc2FwcHJvcHJpYXRpb24gb3IgbWlzdXNlIG9mIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBhZnRlciBpdCBiZWNvbWVzIGF3YXJlIG9mIGl0IGFuZCB2aWNlIHZlcnNhLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5JZiBlaXRoZXIgcGFydHkgYmVjb21lcyBhd2FyZSB0aGF0IGl0IHdpbGwgYmUgcmVxdWlyZWQsIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgaXMgbGlrZWx5IHRvIGJlIHJlcXVpcmVkLCB0byBkaXNjbG9zZSBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gaW4gb3JkZXIgdG8gY29tcGx5IHdpdGggYXBwbGljYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgIGxhd3Mgb3IgcmVndWxhdGlvbnMgb3Igd2l0aCBhIGNvdXJ0IG9yIGFkbWluaXN0cmF0aXZlIG9yZGVyLCBpdCBzaGFsbCwgdG8gdGhlIGV4dGVudCBpdCBpcyBsYXdmdWxseVxyXG4gICAgICAgICAgICAgICAgICAgIGFibGUgdG8gZG8gc28sIHByaW9yIHRvIGFueSBzdWNoIGRpc2Nsb3N1cmUgbm90aWZ5IHRoZSBvdGhlciBwYXJ0eSwgYW5kIGNvbXBseSB3aXRoIHRoZSBvdGhlclxyXG4gICAgICAgICAgICAgICAgICAgIHBhcnR54oCZcyBpbnN0cnVjdGlvbnMgdG8gcHJvdGVjdCB0aGUgY29uZmlkZW50aWFsaXR5IG9mIHRoZSBpbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE2LiBJbmRlbW5pdHkgYW5kIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgcHJlanVkaWNlIHRvIGFueSBvdGhlciByaWdodCBhdmFpbGFibGUgaW4gbGF3IG9yIHVuZGVyIGVxdWl0eSwgZWFjaCBwYXJ0eSBoZXJlYnkgYWdyZWVzIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGVuc2F0ZSwgaW5kZW1uaWZ5LCBkZWZlbmQgYW5kIGhvbGQgaGFybWxlc3MgdGhlIG90aGVyLCBpdHMgYWZmaWxpYXRlcywgZGlyZWN0b3JzLCBzaGFyZWhvbGRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgb2ZmaWNlcnMgYW5kIGVtcGxveWVlcyBhbmQgYWdlbnRzLCBmcm9tIGFuZCBhZ2FpbnN0IGFueSBhbmQgYWxsIGxvc3NlcywgbGlhYmlsaXRpZXMsIGRhbWFnZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmaWNpZW5jaWVzLCBkZW1hbmRzLCBjbGFpbXMgKGluY2x1ZGluZyB0aGlyZCBwYXJ0eSBjbGFpbXMpLCBhY3Rpb25zLCBqdWRnbWVudHMgb3IgY2F1c2VzIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLCBhc3Nlc3NtZW50cywgaW50ZXJlc3QsIHBlbmFsdGllcyBhbmQgb3RoZXIgY29zdHMgb3IgZXhwZW5zZXMgKGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYXNvbmFibGUgYXR0b3JuZXlzJyBmZWVzIGFuZCBleHBlbnNlcykgYmFzZWQgdXBvbiwgYXJpc2luZyBvdXQgb2YsIG9yIGluIHJlbGF0aW9uIHRvIG9yIG90aGVyd2lzZVxyXG4gICAgICAgICAgICAgICAgICAgIGluIHJlc3BlY3Qgb2YgKGkpIGFueSBicmVhY2ggb2YgaXRzIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgOyBvciAoaWkpIGFueSB3aWxsZnVsXHJcbiAgICAgICAgICAgICAgICAgICAgbWlzY29uZHVjdCwgZnJhdWQsIG9yIHdyb25nZnVsIG9yIG5lZ2xpZ2VudCBhY3Qgb3Igb21pc3Npb24gb2YgYSBQYXJ0eS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEluIG5vIGV2ZW50IHNoYWxsIGVpdGhlciBQYXJ0eSBiZSBsaWFibGUgdG8gdGhlIG90aGVyIGZvciBhbnkgaW5kaXJlY3QsIGluY2lkZW50YWwsIHB1bml0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4ZW1wbGFyeSwgc3BlY2lhbCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIG9yIGRhbWFnZXMgZm9yIGxvc3Mgb2YgcHJvZml0cywgcmV2ZW51ZSwgd2hldGhlciBpbiBhblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiBpbiBjb250cmFjdCBvciB0b3J0LCBvciBvdGhlcndpc2UgKGNvbGxlY3RpdmVseSByZWZlcnJlZCB0byBhcyDigJxJbmRpcmVjdCBMb3NzZXPigJ0pIGV2ZW4gaWZcclxuICAgICAgICAgICAgICAgICAgICBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFYWNoIFBhcnR54oCZcyBsaWFiaWxpdHkgYXJpc2luZyBvdXQgb2Ygb3IgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBicmVhY2ggb2YgYW55IGRpcmVjdCBhbmQgYWN0dWFsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlhYmlsaXRpZXMsIGNvc3RzLCBsb3NzZXMsIGRhbWFnZXMsIHN1aXRzLCBwcm9jZWVkaW5ncywgY29zdHMsIGV4cGVuc2VzIG9yIGxpYWJpbGl0aWVzIHN1ZmZlcmVkIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jdXJyZWQgZHVlIHRvIHJlc3VsdGluZyBkdWUgdG8gY2xhaW1zIGZvciBicmVhY2ggb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGEgUGFydHkgb3IgdGhpcmRcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0eSwgYnJlYWNoIG9mIGNvbmZpZGVudGlhbGl0eSBvYmxpZ2F0aW9uLCBkYXRhIGJyZWFjaCwgYnJlYWNoIG9mIGRhdGEgcHJpdmFjeSwgZnJhdWQsIHdpbGxmdWxcclxuICAgICAgICAgICAgICAgICAgICBuZWdsaWdlbmNlLCBncm9zcyBtaXNjb25kdWN0IG9yIGJyZWFjaCBvZiBhcHBsaWNhYmxlIGxhd3Mgc2hhbGwgaW4gbm8gZXZlbnQgZXhjZWVkIHRoZSBhbm51YWwgdG90YWxcclxuICAgICAgICAgICAgICAgICAgICBwdXJjaGFzZSBwcmljZSBwYWlkIHB1cnN1YW50IHRvIGdyYW50IG9mIGFjY2VzcyBhbmQgdXNhZ2Ugb2YgdGhlIFNlcnZpY2VzL1NvZnR3YXJlIGJ5IHRoZSBDdXN0b21lci5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE3LiBGb3JjZSBNYWpldXJlIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlIFBhcnRpZXMgaXMgbm90IHJlc3BvbnNpYmxlIG5vciBsaWFibGUgZm9yIGFueSBkZWxheXMgb3IgZmFpbHVyZXMgaW4gcGVyZm9ybWFuY2UgZnJvbSBhbnlcclxuICAgICAgICAgICAgICAgICAgICBjYXVzZSBiZXlvbmQgaXRzIGNvbnRyb2wsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIGFjdHMgb2YgR29kLCBjaGFuZ2VzIHRvIGxhdyBvciByZWd1bGF0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBlbWJhcmdvZXMsIHdhciwgdGVycm9yaXN0IGFjdHMsIGFjdHMgb3Igb21pc3Npb25zIG9mIHRoaXJkIHBhcnR5IHRlY2hub2xvZ3kgcHJvdmlkZXJzLCByaW90cywgZmlyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZWFydGhxdWFrZXMsIGZsb29kcywgcG93ZXIgYmxhY2tvdXRzLCBzdHJpa2VzLCB3ZWF0aGVyIGNvbmRpdGlvbnMsIHBhbmRlbWljLCBlcGlkZW1pYywgZ292ZXJubWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2tkb3ducyBvciBhbnkgb3RoZXIgdW5mb3Jlc2VlYWJsZSBldmVudCBiZXlvbmQgaXRzIGNvbnRyb2wgKGhlcmVpbmFmdGVyIGNvbGxlY3RpdmVseSByZWZlcnJlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgIGFzIOKAnEZvcmNlIE1hamV1cmUgRXZlbnTigJ0pLiBVcG9uIG9jY3VycmVuY2Ugb2YgYW55IEZvcmNlIE1hamV1cmUgRXZlbnQsIGVpdGhlciBQYXJ0eSBzaGFsbCBnaXZlXHJcbiAgICAgICAgICAgICAgICAgICAgbm90aWNlIHRvIHRoZSBvdGhlciBwYXJ0eSBvZiBpdHMgaW5hYmlsaXR5IHRvIHBlcmZvcm0gb3Igb2YgZGVsYXkgaW4gY29tcGxldGluZyBpdHMgb2JsaWdhdGlvbnMgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgbXVzdCBhY3QgZGlsaWdlbnRseSB0byByZW1lZHkgdGhlIGNhdXNlIGFuZCByZXN0b3JlIHBlcmZvcm1hbmNlLCB0byB0aGUgZXh0ZW50IHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgV2hlcmUgRm9yY2UtTWFqZXVyZSBFdmVudCBjb250aW51ZXMgZm9yIGEgcGVyaW9kIG1vcmUgdGhhbiBTaXh0eSAoNjApIGNvbnRpbnVvdXMgZGF5cywgdGhlbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICBlZmZlY3RlZCBQYXJ0eSBzaGFsbCBoYXZlIHRoZSByaWdodCB0byBpbW1lZGlhdGVseSB0ZXJtaW5hdGUgdGhlc2UgU2FhUyBUZXJtcyBBZ3JlZW1lbnQgYnkgcHJvdmlkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgYSB3cml0dGVuIG5vdGljZS7CoDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE4LiBNYWludGVuYW5jZSBTZXJ2aWNlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWIgbXktMVwiPkR1cmluZyB0aGUgVGVybSzigK9UYW5nbyBFeWUgd2lsbCBwcm92aWRlIHRoZSBNYWludGVuYW5jZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGhcclxuICAgICAgICAgICAgICAgIHRoZSBTZXJ2aWNlIExldmVscyBkdXJpbmcgdGhlIFN1cHBvcnQgSG91cnMgcHJvdmlkZWQgdGhhdDwvZGl2PlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtdC0yIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBZb3UgcHJvdmlkZSBNYWludGVuYW5jZSBTZXJ2aWNlcyB3aXRoIG5vdGljZSBmb3IgYXBwbGljYWJsZSBNYWludGVuYW5jZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGhcclxuICAgICAgICAgICAgICAgICAgICBhbnkgYXBwbGljYWJsZSBzeXN0ZW0gYW5kIHByb2Nlc3NlcyBhcyBzZXQgb3V0IG9uIHRoZSB1bmRlci1Bbm5leHVyZSBBIHRvIHRoZXNlIFNhYVMgVGVybXM7IGFuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlcmUgcmVxdWlyZWQsIFlvdSB3aWxsIGFzc2lzdCB3aXRoIGludmVzdGlnYXRpbmcgYW5kIGFzY2VydGFpbmluZyB0aGUgY2F1c2Ugb2YgdGhlIGZhdWx0IGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIHRvIFRhbmdvIEV5ZSBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSBmYXVsdCAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHdoYXQgWW91IG9yIHlvdXIgcGVyc29ubmVsIGhhdmUgZG9uZSBpbiByZWxhdGlvbiB0byB0aGUgZmF1bHQpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE5LiBNaXNjZWxsYW5lb3VzLiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBUaGVzZSBTYWFTIFRlcm1zIGlzIGRyYXduIHVwIGluIEVuZ2xpc2gsIHdoaWNoIGxhbmd1YWdlIHNoYWxsIGdvdmVybiBhbGwgZG9jdW1lbnRzLCBub3RpY2VzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lZXRpbmdzLCBwcm9jZWVkaW5ncyBhbmQgcHJvY2Vzc2VzIHJlbGF0aXZlIHRoZXJldG8uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgaW4gdGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBiZSBkZWVtZWQgdG8gY29uc3RpdHV0ZSBhIGpvaW50IHZlbnR1cmUsIGFnZW5jeSwgcGFydG5lcnNoaXAsXHJcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3QgZ3JvdXBpbmcgb3IgYW55IG90aGVyIGtpbmQgb2YgZm9ybWFsIGJ1c2luZXNzIGdyb3VwaW5nIG9yIGVudGl0eSBiZXR3ZWVuIHRoZSBQYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBObyByaWdodHMgb3Igb2JsaWdhdGlvbnMgb2YgdGhlIFBhcnRpZXMgYXJpc2luZyBmcm9tIHRoZXNlIFNhYVMgVGVybXMgbWF5IGJlIGFzc2lnbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Yi1jb250cmFjdGVkLCBvciB0cmFuc2ZlcnJlZCwgaW4gd2hvbGUgb3IgaW4gcGFydCwgdG8gYW55IHRoaXJkIHBhcnR5IHdpdGhvdXQgdGhlIG90aGVyIHBhcnR54oCZc1xyXG4gICAgICAgICAgICAgICAgICAgIHByaW9yIHdyaXR0ZW4gYXBwcm92YWwuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEdvdmVybmluZyBMYXcsIEp1cmlzZGljdGlvbi4gVGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiBJbmRpYSwgYW5kIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFBhcnRpZXMgaGVyZWJ5IGFncmVlIHRvIGlycmV2b2NhYmx5IHN1Ym1pdCB0byB0aGUgZXhjbHVzaXZlIGp1cmlzZGljdGlvbiBvZiB0aGUgY291cnRzIG9mIE5ldyBEZWxoaVxyXG4gICAgICAgICAgICAgICAgICAgIGluIHJlc3BlY3Qgb2YgYWxsIGRpc3B1dGVzIGFyaXNpbmcgb3V0IG9mIHRoZXNlIFNhYVMgVGVybXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvdyBnLTAgbWItMCBiZy10ZXJtc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZCBmb3JtLWNoZWNrLWlubGluZSBcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHJlcXVpcmVkIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZXRlcm1zKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctYm9sZCB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0c2l6ZSBtdC0zXCI+SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMuPC9zcGFuPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhdGVybXNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IG1zLTE1IG1lLTUgdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiZW50ZXJwcmlzZWFjdGl2YXRlKClcIj5cclxuICAgICAgICAgICAgU2lnbiBVcFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKm5nSWY9XCJzaG93dmFsdWVcIj5cclxuXHQ8ZGl2IGNsYXNzPVwicG9wdXBcIj5cclxuXHRcdDxoMSBjbGFzcz1cImEtby1pXCI+VmVyaWZpY2F0aW9uIENvZGU8L2gxPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cInN1Yi1hb2lcIj5BbiBPVFAgaGFzIGJlZW4gc2VudCB0byB5b3VyIG1haWwuIFBsZWFzZSBjaGVjayAmIHN1Ym1pdC48L2g1PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdHAtY29udGFpbmVyIGQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3RwLWlucHV0IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLW90cC1pbnB1dCAjbmdPdHBJbnB1dCAob25JbnB1dENoYW5nZSk9XCJvbk90cENoYW5nZSgkZXZlbnQpXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIGNsYXNzPVwidmVyaWZpY2F0aW9uLWNvZGVcIiBwbGFjZWhvbGRlcj1cIjBcIiBcclxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInsgbGVuZ3RoOiA0ICxhbGxvd051bWJlcnNPbmx5OnRydWV9XCI+PC9uZy1vdHAtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnZhbGlkT3RwXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWRhbmdlclwiID5cclxuICAgICAgICAgICAgSW52YWxpZCBPVFAgIVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJyZXNlbmRcIiBjbGFzcz1cInNtYWxsX2xnIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2VuZE9UUCgpXCI+PGI+UmVzZW5kIE9UUDwvYj48L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIXJlc2VuZFwiIGNsYXNzPVwic21hbGxfbGJsIFwiID5SZXNlbmQgT1RQICgge3tjb3VudGVyXHJcbiAgICAgICAgICAgICB9fSApPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS01IHctMTAwIHRleHQtbm93cmFwXCIgKGNsaWNrKT1cIm90cHN1Ym1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICBTdWJtaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAzL3N0ZXAzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQWUzQyxNQUFNLE9BQU8sY0FBYztJQXVEaEI7SUFBZ0M7SUFBaUM7SUFBdUI7SUFBOEI7SUFDckg7SUFBZ0M7SUF2RDFDLFVBQVUsR0FBVyxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7SUFDL0MsUUFBUSxHQUFZLEtBQUssQ0FBQyxDQUFDLHdCQUF3QjtJQUNuRCxTQUFTLEdBQVksS0FBSyxDQUFDLENBQUMsdUJBQXVCO0lBQ25ELFVBQVUsR0FBWSxLQUFLLENBQUMsQ0FBQywwQkFBMEI7SUFDdkQscUJBQXFCLENBQVM7SUFDOUIsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFDQyx3Q0FBd0M7SUFDeEMsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVILDJDQUEyQztJQUMzQyxjQUFjO1FBQ1osSUFBSSxNQUFN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QkFDOUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQ0QsQ0FBQTtJQUVILENBQUM7dUdBbFBVLGNBQWM7MkZBQWQsY0FBYyw4SkNqQjNCLDgxb0RBMnFCQTs7MkZEMXBCYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7cVBBK0NJLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5cclxuXHJcbmludGVyZmFjZSBJbnB1dFN0eWxlcyB7XHJcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nOyAvLyBEZWZpbmUga2V5LXZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHN0cmluZ3MgYW5kIHZhbHVlcyBhcmUgc3RyaW5nc1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXN0ZXAzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcDMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zdGVwMy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0ZXAzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGlucHV0VmFsdWU6IHN0cmluZyA9ICcnOyAvLyBJbml0aWFsIGlucHV0IHZhbHVlXHJcbiAgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRmxhZyBmb3IgYWN0aXZlIHN0YXRlXHJcbiAgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgZm9yIGhvdmVyIHN0YXRlXHJcbiAgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBGbGFnIGZvciBkaXNhYmxlZCBzdGF0ZVxyXG4gIGF1dGhsb2NhbFN0b3JhZ2VUb2tlbjogc3RyaW5nO1xyXG4gIG9uTW91c2VFbnRlcigpIHtcclxuICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSBtb3VzZSBsZWF2ZSBldmVudFxyXG4gIG9uTW91c2VMZWF2ZSgpIHtcclxuICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XHJcbiAgfVxyXG4gICAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIGlucHV0IGNoYW5nZSBldmVudFxyXG4gICAgb25JbnB1dENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBnZXQgaW5wdXQgc3R5bGVzIGR5bmFtaWNhbGx5XHJcbiAgZ2V0SW5wdXRTdHlsZXMoKTogSW5wdXRTdHlsZXMge1xyXG4gICAgbGV0IHN0eWxlczogSW5wdXRTdHlsZXMgPSB7fTsgLy8gRGVmaW5lIHN0eWxlcyBvYmplY3Qgd2l0aCB0eXBlIElucHV0U3R5bGVzXHJcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xyXG4gICAgICBzdHlsZXNbJ2JvcmRlci1jb2xvciddID0gJ2JsdWUnOyAvLyBCb3JkZXIgY29sb3Igd2hlbiBpbnB1dCBpcyBhY3RpdmVcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0hvdmVyZWQpIHtcclxuICAgICAgc3R5bGVzWydib3JkZXItY29sb3InXSA9ICdncmVlbic7IC8vIEJvcmRlciBjb2xvciB3aGVuIGlucHV0IGlzIGhvdmVyZWRcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHN0eWxlc1snYm9yZGVyLWNvbG9yJ10gPSAnI2NjYyc7IC8vIEJvcmRlciBjb2xvciB3aGVuIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICAgIHN0eWxlc1snY29sb3InXSA9ICcjOTk5JzsgLy8gVGV4dCBjb2xvciB3aGVuIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdHlsZXNbJ2JvcmRlci1jb2xvciddID0gJyNjY2MnOyAvLyBEZWZhdWx0IGJvcmRlciBjb2xvclxyXG4gICAgICBzdHlsZXNbJ2NvbG9yJ10gPSAnIzMzMyc7IC8vIERlZmF1bHQgdGV4dCBjb2xvclxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0eWxlcztcclxuICB9XHJcbiAgcGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcclxuICB0ZXJtc2FuZGNvbmRpdGlvbjogYW55O1xyXG4gIHR5cGU6IGFueTtcclxuICBhY2NvdW50RGF0YTogYW55O1xyXG4gIHRlcm1zOiBhbnk7XHJcbiAgaWR2YWx1ZTogYW55O1xyXG4gIGVtYWlsOiBhbnk7XHJcbiAgc2hvd3ZhbHVlOiBib29sZWFuID1mYWxzZTtcclxuICBAVmlld0NoaWxkKCduZ090cElucHV0JykgbmdPdHBJbnB1dFJlZjogYW55O1xyXG4gIGNvdW50ZXI6IG51bWJlcjtcclxuICB0aWNrOiBudW1iZXI7XHJcbiAgcmVzZW5kOiBib29sZWFuID10cnVlO1xyXG4gIGNvdW50RG93bjogYW55O1xyXG4gIG90cDogYW55O1xyXG4gIGFib3V0Rm9ybURhdGE6IGFueTtcclxuICBwcmljaW5nRm9ybURhdGE6IGFueTtcclxuICByZXR1cm5Vcmw6IGFueTtcclxuICBpbnZhbGlkT3RwOmJvb2xlYW4gPSBmYWxzZVxyXG4gIHN1YnNjcmlwdGlvbnM6U3Vic2NyaXB0aW9uW10gPSBbXVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwsIHByaXZhdGUgYXV0aFNlcnZpY2U6QXV0aFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOlJvdXRlciwgcHJpdmF0ZSByb3V0ZTpBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBjZDpDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6VG9hc3RTZXJ2aWNlXHJcbil7XHJcbiAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgaWYgKGVudikge1xyXG4gICAgICB0aGlzLmF1dGhsb2NhbFN0b3JhZ2VUb2tlbiA9IGAke2Vudi5hcHBWZXJzaW9ufS0ke2Vudi5VU0VSREFUQV9LRVl9YDtcclxuICAgIH1cclxuICB9KVxyXG4gIClcclxuXHJcbiAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hdXRoU2VydmljZS5hYm91dEZvcm1EYXRhLnN1YnNjcmliZSgoZGF0YSk9PntpZihkYXRhKXt0aGlzLmFib3V0Rm9ybURhdGEgPSBkYXRhfX0pKVxyXG4gIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYXV0aFNlcnZpY2UucHJpY2luZ0Zvcm1EYXRhLnN1YnNjcmliZSgoZGF0YSk9PntpZihkYXRhKXt0aGlzLnByaWNpbmdGb3JtRGF0YSA9IGRhdGF9fSkpXHJcbn1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pPT57XHJcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbm5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vIGdldCByZXR1cm4gdXJsIGZyb20gcm91dGUgcGFyYW1ldGVycyBvciBkZWZhdWx0IHRvICcvJ1xyXG4gIHRoaXMucmV0dXJuVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncmV0dXJuVXJsJy50b1N0cmluZygpXSB8fCAnLyc7ICAgICAgXHJcbn1cclxuICB1cGRhdGV0ZXJtcyhldnQ6IGFueSkge1xyXG4gICAgdGhpcy50ZXJtcyA9IGV2dC50YXJnZXQuY2hlY2tlZFxyXG4gIH1cclxuXHJcbiAgZW50ZXJwcmlzZWFjdGl2YXRlKCl7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgbmFtZTp0aGlzLmFib3V0Rm9ybURhdGE/LmZpcnN0TmFtZSxcclxuICAgICAgZW1haWw6dGhpcy5hYm91dEZvcm1EYXRhPy5jb3Jwb3JhdGVFbWFpbFxyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZW5kU2lnbnVwT3RwKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIG5leHQ6KHJlcyk9PntcclxuICAgICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRlciA9IDYwO1xyXG4gICAgICAgICAgICB0aGlzLnRpY2sgPSAxMDAwO1xyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMucmVzZW5kID0gZmFsc2U7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5jb3VudERvd24gPSB0aW1lcigwLCB0aGlzLnRpY2spLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb3VudGVyID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd24udW5zdWJzY3JpYmUoKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLmNvdW50ZXIgLSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnb3ZlcmxheS1vcGVuJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd3ZhbHVlID10cnVlIFxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6KGVycik9PntcclxuICAgICAgICAgIGlmKGVycil7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyLmVycm9yLmVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9XHJcbiAgICAgICkgIFxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIHJlc2VuZE9UUCgpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOnRoaXMuYWJvdXRGb3JtRGF0YT8uZmlyc3ROYW1lLFxyXG4gICAgICBlbWFpbDp0aGlzLmFib3V0Rm9ybURhdGE/LmNvcnBvcmF0ZUVtYWlsXHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5zZW5kU2lnbnVwT3RwKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAge1xyXG4gICAgICAgIG5leHQ6KHJlcyk9PntcclxuICAgICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICAgIHRoaXMubmdPdHBJbnB1dFJlZi5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRlciA9IDYwO1xyXG4gICAgICAgICAgICB0aGlzLnRpY2sgPSAxMDAwO1xyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMucmVzZW5kID0gZmFsc2U7XHJcbiAgICBcclxuICAgICAgICAgICAgdGhpcy5jb3VudERvd24gPSB0aW1lcigwLCB0aGlzLnRpY2spLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb3VudGVyID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudERvd24udW5zdWJzY3JpYmUoKVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLmNvdW50ZXIgLSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjooZXJyKT0+e1xyXG4gICAgICAgICAgaWYoZXJyKXtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgKSBcclxuICAgIClcclxuXHJcbiAgfVxyXG4gIG90cHN1Ym1pdCgpe1xyXG4gICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50TmFtZTogdGhpcy5hYm91dEZvcm1EYXRhPy5jbGllbnROYW1lLFxyXG4gICAgICAgZmlyc3ROYW1lOiB0aGlzLmFib3V0Rm9ybURhdGE/LmZpcnN0TmFtZSxcclxuICAgICAgIGxhc3ROYW1lOiB0aGlzLmFib3V0Rm9ybURhdGE/Lmxhc3ROYW1lLFxyXG4gICAgICAgY29ycG9yYXRlRW1haWw6IHRoaXMuYWJvdXRGb3JtRGF0YT8uY29ycG9yYXRlRW1haWwsXHJcbiAgICAgICBtb2JpbGVOdW1iZXI6IHRoaXMuYWJvdXRGb3JtRGF0YT8ubW9iaWxlTnVtYmVyLFxyXG4gICAgICAgY291bnRyeUNvZGU6IHRoaXMuYWJvdXRGb3JtRGF0YT8uY291bnRyeUNvZGUsXHJcbiAgICAgICBwYXNzd29yZDogdGhpcy5hYm91dEZvcm1EYXRhPy5wYXNzd29yZCxcclxuICAgICAgIHRvdGFsU3RvcmVzOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8udG90YWxTdG9yZXMudmFsdWUsXHJcbiAgICAgICBzdG9yZVNpemU6dGhpcy5wcmljaW5nRm9ybURhdGE/LnN0b3JlU2l6ZS52YWx1ZSxcclxuICAgICAgIHRvdGFsQ2FtZXJhOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3RvcmVTaXplPy5jYW1lcmFzLFxyXG4gICAgICAgc3Vic2NyaXB0aW9uUGVyaW9kOiB0aGlzLnByaWNpbmdGb3JtRGF0YT8uc3Vic2NyaXB0aW9uUGVyaW9kLFxyXG4gICAgICAgc3Vic2NyaXB0aW9uVHlwZTogdGhpcy5wcmljaW5nRm9ybURhdGE/LnN1YnNjcmlwdGlvblR5cGUsXHJcbiAgICAgICBwcm9kdWN0OiB0aGlzLmdldFRydWVLZXlzKHRoaXMucHJpY2luZ0Zvcm1EYXRhPy5wcm9kdWN0KSxcclxuICAgICAgICBvdHA6dGhpcy5vdHBcclxuICAgfVxyXG4gICBcclxuICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnbnVwKGRhdGEpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OihyZXMpPT57XHJcbiAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5hYm91dEZvcm1EYXRhLm5leHQobnVsbClcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByaWNpbmdGb3JtRGF0YS5uZXh0KG51bGwpXHJcbiAgICAgIFxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ292ZXJsYXktb3BlbicpO1xyXG4gICAgICB0aGlzLnNob3d2YWx1ZSA9ZmFsc2UgXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIGxldCBsb2dpblRva2VuOiBhbnkgPVxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmF1dGhsb2NhbFN0b3JhZ2VUb2tlbik7XHJcbiAgICBpZiAobG9naW5Ub2tlbikge1xyXG4gICAgICBsb2dpblRva2VuID0gSlNPTi5wYXJzZShsb2dpblRva2VuKTtcclxuICAgIH1cclxuICAgXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgIHRoaXMuYXV0aGxvY2FsU3RvcmFnZVRva2VuLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcz8uZGF0YT8ucmVzdWx0KVxyXG4gICAgICApO1xyXG4gICAgICBcclxuICAgICAgdGhpcy51c2VyUHJvZmlsZSgpO1xyXG4gICAgICB9XHJcbiAgICAgfSxcclxuICAgICBlcnJvcjoocmVzKT0+e1xyXG4gICAgICBpZihyZXMpe1xyXG4gICAgICB0aGlzLmludmFsaWRPdHAgPSB0cnVlXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgICB9LFxyXG4gICB9KSBcclxuICAgKVxyXG5cclxuICAgXHJcblxyXG4gIH1cclxuXHJcbiAgb25PdHBDaGFuZ2UoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuaW52YWxpZE90cCA9IGZhbHNlXHJcbiAgICB0aGlzLm90cCA9IGV2ZW50XHJcbiAgfVxyXG5cclxuICBnZXRUcnVlS2V5cyhvYmo6IGFueSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiBvYmpba2V5XSA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB1c2VyUHJvZmlsZSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlclByb2ZpbGVEZXQoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyYmIHJlcy5jb2RlID09MjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdzLnVzZXJBY2Nlc3MubmV4dChyZXMuZGF0YT8ucGVybWlzc2lvbilcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvYnJhbmRzJ10pO1xyXG4gICAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJldHVyblVybCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgKVxyXG4gICAgXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgIGNsYXNzPVwiY2FyZCBtdC0xMCBteC0xNVwiPlxyXG48ZGl2IGlkPVwia3RfY29udGVudF9jb250YWluZXJcIiBjbGFzcz1cImNvbnRhaW5lci14eGwgZm9udCBoLTEwMCAgbXgtMTAgcGUtMTUgbXktN1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImgtNTUwcHggc3RpY2t5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLTAgbXQtNSBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4gZnMtbGctMSBtYi00IHRleHQtZ3JheS04MDBcIj5TYWFTIFRFUk1TIEFORCBDT05ESVRJT05TPC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiB0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIG1lLTEgc3ViXCI+VGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgKGhlcmVpbmFmdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG8gYXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKAnFNBQVMgVGVybXPigJ0pIHNoYWxsIGdvdmVybiB5b3VyICjigJxVc2Vy4oCdIG9yIOKAnFlvdeKAnSBvciDigJxZb3Vy4oCdIG9yIOKAnEN1c3RvbWVy4oCdKSB1c2Ugb2YgVGFuZ28gRXllXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFuYWx5dGljcyBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzIGludGVsbGlnZW5jZSBzb2Z0d2FyZSAoY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzIOKAnFNvZnR3YXJl4oCdKSB3aGljaCBpcyBhY2Nlc3NpYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggVGFuZ28gRXllIHdlYnNpdGUgaHR0cHM6Ly9yZXRhaWwudGFuZ29leWUuYWkvYXV0aC9sb2dpbiAoV2Vic2l0ZSkuIEJ5IGFjY2Vzc2luZyBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBXZWJzaXRlLCBZb3UgaW4geW91ciBpbmRpdmlkdWFsIGNhcGFjaXR5IGFuZCBvciBpZiB5b3UgYXJlIHJlcHJlc2VudGluZyBhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5IHRoZW4gWW91IGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eSBZb3UgYXJlIGF1dGhvcml6ZWQgdG8gcmVwcmVzZW50IHNpZ25pZnkgeW91ciBhZ3JlZW1lbnQgdG8gYmUgYm91bmQgYnkgdGhlc2UgU2FhU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVybXMgb2YgdXNlIHdoaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jdXJpbmcgdGhlIFNlcnZpY2VzIGZyb20gVGFuZ28uIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIgdGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBtZS0xIG15LTUgc3ViXCI+VGFuZ28gRXllIHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnksIGFtZW5kLCB1cGRhdGUsIHN1c3BlbmQgb3IgZGlzY29udGludWUgdGhlIHdob2xlIG9yIGFueSBwb3J0aW9uIG9mIHRoZSBTZXJ2aWNlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYnNpdGUgb3IgdGhlIFNhYVMgVGVybXMgYXQgYW55IHRpbWUuIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktbGctMlwiPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1hbGlnbi1qdXN0aWZ5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjEuIERlZmluaXRpb24gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcTWFpbnRlbmFuY2UgU2VydmljZXPigJ0gbWVhbnMgdGhlIHN1cHBvcnQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludGVuYW5jZSBzZXJ2aWNlcyBwcm92aWRlZCBieSBUYW5nbyBFeWUgdG8gQ3VzdG9tZXIgcHVyc3VhbnQgdG8gdGhlc2UgU2FhUyBUZXJtcyBhbmQgbW9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGRldGFpbGVkIG91dCB1bmRlciBBbm5leHVyZSBBLiA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxTb2Z0d2FyZeKAnSBtZWFucyB0aGUgZGF0YSBhbmFseXRpY3MgYW5kIGJ1c2luZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbGxpZ2VuY2Ugc29mdHdhcmUgYW5kIGl0cyBvYmplY3QgY29kZSB2ZXJzaW9uIHdoaWNoIGVuYWJsZXMgdGhlIEN1c3RvbWVyIHRvIGlkZW50aWZ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vbmdzdCBvdGhlcnMsIGN1c3RvbWVyIGZvb3RmYWxscywgZGVtb2dyYXBoaWNzLCBpZGVudGlmeSBtaXNzZWQgb3Bwb3J0dW5pdGllcywgaW5jbHVkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgdXBkYXRlcyBvciBuZXcgdmVyc2lvbnMuPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4g4oCcU2VydmljZXPigJ0gcmVmZXIgdG8gdGhlIGluLXN0b3JlIEFJIGRyaXZlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbHl0aWNzIHByb3ZpZGVkIHRocm91Z2ggdGhlIFNvZnR3YXJlIHRvIHRoZSBDdXN0b21lciB0aGF0IGlzIGhvc3RlZCBieSBUYW5nbyBFeWUgYW5kIG1hZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSB0byBDdXN0b21lciBvdmVyIGEgbmV0d29yayB3aGV0aGVyIG9uIGEgdHJpYWwgb3IgcGFpZCBiYXNpcy4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiDigJxUZXJt4oCdIHNoYWxsIG1lYW4gdGhhdCBwZXJpb2Qgc3BlY2lmaWVkIGluIGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaGVkdWxlIHRvIGJlIGV4ZWN1dGVkIHNlcGFyYXRlbHkgd2l0aCB0aGUgQ3VzdG9tZXIgZHVyaW5nIHdoaWNoIEN1c3RvbWVyIHdpbGwgaGF2ZSBvbi1saW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgYW5kIHVzZSBvZiB0aGUgU2VydmljZXMgdGhyb3VnaCB0aGUgV2Vic2l0ZS4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4yLiBFbGlnaWJpbGl0eSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWIgbXktN1wiPkluIG9yZGVyIHRvIHVzZSB0aGUgU2VydmljZXMsIFlvdSBtdXN0Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPiBCZSBhYm92ZSAxOCB5ZWFycyBvZiBhZ2U7IDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+Q29tcGxldGUgdGhlIGFjY291bnQgcmVnaXN0cmF0aW9uIHByb2Nlc3MgdG8gYWNjZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU2VydmljZXMgdGhyb3VnaCB0aGUgV2Vic2l0ZTs8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSB3aWxsIHByb3ZpZGUgY29ycmVjdCwgdXB0byBkYXRlIGluZm9ybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBpbmNsdWRpbmcgYmlsbGluZyBhZGRyZXNzOzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4gWW91IHdpbGwga2VlcCBhbGwgeW91ciBjcmVkZW50aWFscyBhbmQgcGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZGVudGlhbCBhbmQgYWxzbyByZXNwb25zaWJsZSB0byBtYWludGFpbmluZyB0aGUgc2FmZXR5IGFuZCBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbjsgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPllvdSB3aWxsIHByb3ZpZGUgYWxsIHJlbGV2YW50IGFuZCByZXF1aXJlZCBoYXJkd2FyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvZnR3YXJlIGFzIHN1Z2dlc3RlZCBieSBUYW5nbyBFeWUgYXQgeW91ciBkZXNpZ25hdGVkIGxvY2F0aW9uIGluIG9yZGVyIHRvIGVuYWJsZSBUYW5nb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXllIHRvIGluc3RhbGwgdGhlIFNvZnR3YXJlIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIFNlcnZpY2VzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+My4gU2VydmljZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj4gSW4gY29uc2lkZXJhdGlvbiBmb3IgcGF5bWVudCBvZiB0aGUgZmVlcywgVGFuZ28gRXllXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFudHMgdGhlIEN1c3RvbWVyIGEgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSwgcGVyc29uYWwsIHJldm9jYWJsZSwgbGljZW5jZSB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIGFuZCB1c2UgdGhlIFNlcnZpY2VzIGluIGFjY29yZGFuY2Ugd2l0aCBUYW5nbyBFeWXigJlzIGludGVuZGVkIHB1cnBvc2UgZm9yIHRoZSBTZXJ2aWNlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpY2VuY2UpLjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIFNlcnZpY2VzIGFyZSBub3QgY29udGluZ2VudCBvbiB0aGUgZGVsaXZlcnkgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBmdXR1cmUgZnVuY3Rpb25hbGl0eSBvciBmZWF0dXJlcy48L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIG9yIHJlbW92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgb2YgdGhlIFNlcnZpY2VzIGFuZCBvciB0aGUgU29mdHdhcmUgZnJvbSB0aW1lIHRvIHRpbWUuIFdoZXJlIHRoZXJlIGlzIGFueSBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJhdGlvbiB0byB0aGUgU2VydmljZXMgYW5kIG9yIHRoZSBTb2Z0d2FyZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBjbGF1c2UsIFRhbmdvIEV5ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm92aWRlIHRoZSBDdXN0b21lciB3aXRoIDE1IGJ1c2luZXNzIGRheXPigJkgbm90aWNlIGFuZCB0aGUgQ3VzdG9tZXIgYWdyZWVzIHRoYXQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbCBhbHRlcmF0aW9uIGlzIGF0IFRhbmdvIEV5ZeKAmXMgZGlzY3JldGlvbi7CoDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5BY2Nlc3MgdG8gdGhlIFNlcnZpY2VzIHNoYWxsIGJlIGxpbWl0ZWQgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcmlzZWQgcGVyc29ucyB3aXRoIHZhbGlkIGNyZWRlbnRpYWxzIHdoaWNoIGlzIHRvIGJlIGFncmVlZCBhdCB0aGUgdGltZSBvZiBwcm92aWRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgU2VydmljZXMgYW5kIHRoZSBXZWJzaXRlLiBJZiBpdCBpcyBhIHNpbmdsZSBhY2NvdW50IGFjY2Vzcywgc3VjaCBhY2NvdW50IHNoYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYmUgdXNlZCBieSBtdWx0aXBsZSB1c2VycyBhdCB0aGUgc2FtZSB0aW1lLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5Zb3UgYWdyZWUgdGhhdMKgVGFuZ28gRXllOjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj53aWxsIHN1cHBseSB0aGUgU2VydmljZXMgb24gYSBub24tZXhjbHVzaXZlIGJhc2lzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+ZG9lcyBub3QgbWFrZSBhbnkgd2FycmFudHkgb3IgcmVwcmVzZW50YXRpb24gYXMgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYmlsaXR5IG9mIHRoZSBmYWNpbGl0aWVzIG9yIHNlcnZpY2VzIG9mIGFueSB0aGlyZC1wYXJ0eSBzdXBwbGllcnM7IGFuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5pcyBub3QgbGlhYmxlIGZvciBhbnkgZmFpbHVyZSBpbiwgZmF1bHQgd2l0aCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVncmFkYXRpb24gb2YgdGhlIFNlcnZpY2VzL1NvZnR3YXJlIGlmIHRoYXQgZmFpbHVyZSwgZmF1bHQgb3IgZGVncmFkYXRpb24gaXMgYXR0cmlidXRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBvciBjYXVzZWQgYnkgYW55IGZhaWx1cmUgb2YgdGhlIEN1c3RvbWVyIGVudmlyb25tZW50IG9yIHRoZSBmYWNpbGl0aWVzIG9yIHNlcnZpY2VzIG9mIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydHkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj40LiBMaWNlbnNlIFJlc3RyaWN0aW9ucyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+WW91IG11c3Qgbm90IGFjY2VzcyBvciB1c2UgdGhlIFNlcnZpY2VzIGFuZCBvciB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgZXhjZXB0IGFzIHBlcm1pdHRlZCBieSB0aGUgTGljZW5zZSBhbmQgbWF5IG5vdCBkbyBvciBhdXRob3JpemUgdGhlIGNvbW1pc3Npb24gb2YgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdCB0aGF0IHdvdWxkIG9yIG1pZ2h0IGludmFsaWRhdGUgb3IgYmUgaW5jb25zaXN0ZW50IHdpdGggdGhlIFRhbmdvIEV5ZeKAmXMgaW50ZWxsZWN0dWFsIHByb3BlcnR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0cyBpbiB0aGUgU2VydmljZXMgb3IgU29mdHdhcmUuIFdpdGhvdXQgbGltaXRpbmcgdGhlIGZvcmVnb2luZyBwcm92aXNpb25zLCB0aGUgQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWdyZWVzIGFuZCBhY2tub3dsZWRnZXMgdGhhdCBpdCBtdXN0IG5vdCBhbmQgd2lsbCBub3QgcGVybWl0IGFueSBwZXJzb24gdG86PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPiByZXNlbGwsIGFzc2lnbiwgdHJhbnNmZXIsIGRpc3RyaWJ1dGUgb3IgcHJvdmlkZSBvdGhlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhY2Nlc3MgdG8gdGhlIFNlcnZpY2VzOzwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj7igJxmcmFtZeKAnSwg4oCcbWlycm9y4oCdIG9yIHNlcnZlIGFueSBvZiB0aGUgU2VydmljZXMvU29mdHdhcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgb24gYW55IHdlYiBzZXJ2ZXIgb3Igb3RoZXIgY29tcHV0ZXIgc2VydmVyIG92ZXIgdGhlIGludGVybmV0IG9yIGFueSBvdGhlciBuZXR3b3JrOzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPmNvcHksIGFsdGVyLCBtb2RpZnksIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIGZyb20sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJvZHVjZSwgcmVzZWxsLCB0cmFuc2ZlciB0byBhIHRoaXJkIHBhcnR5LCByZXZlcnNlIGFzc2VtYmxlLCByZXZlcnNlIGVuZ2luZWVyLCByZXZlcnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgb3IgZW5oYW5jZSB0aGUgU2VydmljZXMgb3IgU29mdHdhcmU7IG9yOyA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5hbHRlciwgcmVtb3ZlIG9yIHRhbXBlciB3aXRoIGFueSB0cmFkZW1hcmtzLCBhbnkgcGF0ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNvcHlyaWdodCBub3RpY2VzLCBvciBhbnkgY29uZmlkZW50aWFsaXR5IGxlZ2VuZCBvciBub3RpY2UsIG9yIGFueSBudW1iZXJzLCBvciBvdGhlciBtZWFucyBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiB1c2VkIG9uIG9yIGluIHJlbGF0aW9uIHRvIHRoZSBTZXJ2aWNlcyBvciBTb2Z0d2FyZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgQ3VzdG9tZXIgbXVzdCBub3QgdXNlIHRoZSBTZXJ2aWNlcyBpbiBhbnkgd2F5IHdoaWNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIGJyZWFjaCBvZiBhbnkgc3RhdHV0ZSwgcmVndWxhdGlvbiwgbGF3IG9yIGxlZ2FsIHJpZ2h0IG9mIGFueSBwZXJzb24gd2l0aGluIHRoZSBSZXB1YmxpYyBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBJbmRpYSBvciB0aGUganVyaXNkaWN0aW9uIGluIHdoaWNoIHRoZSBDdXN0b21lciBvciBpdHMgcGVyc29ubmVsIGFyZSBsb2NhdGVkLsKgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj41LiBQcm9oaWJpdGVkIFVzZSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtdC03XCI+WW91IGFncmVlIHRvIHVzZSB0aGUgV2Vic2l0ZSBhbmQgdGhlIFNlcnZpY2VzL1NvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VkIHRocm91Z2ggaXQgZm9yIHRoZSBwdXJwb3NlIGVudW1lcmF0ZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBhbmQgYWdyZWUgbm90IHRvIHVuZGVydGFrZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gQSkgVXNlIG9mIHRoZSBXZWJzaXRlIGFuZCB0aGUgU2VydmljZXMgdG8gdmlvbGF0ZSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYWJsZSBsYXdzIG9mIGFueSBqdXJpc2RpY3Rpb24gZnJvbSB3aGljaCBZb3UgYWNjZXNzIHRoZSBTZXJ2aWNlcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEIpIFVzZSB0aGUgU2VydmljZXMgZm9yIGNvbXBldGl0aXZlIGJlbmNobWFya2luZyBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGV2ZWxvcGluZyBhIGNvbXBldGl0aXZlIHByb2R1Y3Qgb3Igc2VydmljZXMuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTFcIj4gQykgVG8gdXBsb2FkIG9yIG90aGVyd2lzZSBkaXNzZW1pbmF0ZSBhbnkgY29tcHV0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlydXNlcyBvciBvdGhlciBzb2Z0d2FyZSB0aGF0IG1heSB0aGUgU29mdHdhcmUgb2YgVGFuZ28gRXllOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xXCI+IEQpIFRvIHVubGF3ZnVsbHkgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IG90aGVycyBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGluIGluIGFuIHVubGF3ZnVsIG1hbm5lcjs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbWItNVwiPiBFKSBUbyBzb2xpY2l0IG90aGVycyB0byBwZXJmb3JtIG9yIHBhcnRpY2lwYXRlIGluIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmxhd2Z1bCBhY3RzLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj4gcmVzZWxsLCBhc3NpZ24sIHRyYW5zZmVyLCBkaXN0cmlidXRlIG9yIHByb3ZpZGUgb3RoZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYWNjZXNzIHRvIHRoZSBTZXJ2aWNlczs8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFja25vd2xlZGdlIHRoYXQgVGFuZ28gRXllIHdpbGwgbm90IGJlIGxpYWJsZSBmb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IGluZm9ybWF0aW9uIHRoYXQgaXMgcmVsYXllZCBhbmQgc3RvcmVkIGluIGl0cyBjbG91ZCBzZXJ2ZXJzIHdoaWNoIGlzIGFjY2Vzc2VkIHRocm91Z2ggeW91clxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zLiBZb3Ugc2hhbGwgYWx3YXlzIGJlIHJlc3BvbnNpYmxlIGZvciB0aGUgc2FtZSBhdCBhbGwgdGltZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFncmVlIHRvIGNvbXBseSB3aXRoIGFsbCBhcHBsaWNhYmxlIGxhd3Mgc3RhdHV0ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlZ3VsYXRpb25zIG9mIHRoZSBjb3VudHJ5IHlvdSBhcmUgYWNjZXNzaW5nIHRoZSBXZWJzaXRlL1NvZnR3YXJlIGFuZCB0aGUgU2VydmljZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uY2VybmluZyB0aGUgdXNlIG9mIHRoZSBpbmZvcm1hdGlvbi92aWRlbyBmb290YWdlIHdoaWNoIGlzIHJlbGF5ZWQgdGhyb3VnaCB5b3VyIGNjdHYgY2FtZXJhIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbG91ZCBzdG9yYWdlIG9mIFRhbmdvIEV5ZS4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+WW91IGFja25vd2xlZGdlIHRoYXQgdGhlIFNlcnZpY2VzIGhhcyBub3QgYmVlbiBkZXNpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBjb2xsZWN0IG9yIHByb2Nlc3MgYW55IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBhbmQgYWNjb3JkaW5nbHkgeW91IGFncmVlIG5vdCB0byB1c2UgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzIHRvIGNvbGxlY3QsIHByb2Nlc3Mgb3Igc3RvcmUgYW55IHNlbnNpdGl2ZSBwZXJzb25hbCBkYXRhIG9uY2UgeW91IGFjY2VzcyB0aGUgcmVwb3J0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgVGFuZ28gRXllIGluIHB1cnN1YW5jZSB0byB0aGUgU2VydmljZXMuIFRhbmdvIEV5ZSBzcGVjaWZpY2FsbHkgZGlzY2xhaW0gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpYWJpbGl0eSB0aGF0IG1heSByZXN1bHQgZnJvbSB5b3VyIHVzZSBvZiB0aGUgU2VydmljZXMgdG8gY29sbGVjdCwgcHJvY2VzcyBhbmQgc3RvcmUgc2Vuc2l0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXNlcnZlcyB0aGUgcmlnaHQgdG8gbW9uaXRvciB0aGUgdXNlIG9mIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXZWJzaXRlL1NlcnZpY2VzL1NvZnR3YXJlIGJ5IFlvdSB0byBlbnN1cmUgY29tcGxpYW5jZSBvZiB0aGVzZSBTYWFTIFRlcm1zIGFuZCBhcHBsaWNhYmxlIGxhdy5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5JbiB0aGUgZXZlbnQgb2YgdmlvbGF0aW9uIG9mIHRoZXNlIFNhYVMgVGVybXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgbGF3cyBhbmQgcmVndWxhdGlvbnMsIFRhbmdvIEV5ZSBzaGFsbCBoYXZlIHRoZSByaWdodCB0byBpbnZlc3RpZ2F0ZSBzdWNoIGJyZWFjaGVzIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbnMgd2hpY2ggc2hhbGwgaW5jbHVkZSBidXQgbm90IGJlIGxpbWl0ZWQgdG8gcHJvdmlkaW5nIHdhcm5pbmcgdG8gZmlyc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBvZmZlbmRlcnMsIHN1c3BlbmRpbmcgYW5kIG9yIGV2ZW4gdGVybWluYXRpbmcgdGhlIFNlcnZpY2VzIGFuZCBhY2Nlc3MgdG8gdGhlIFdlYnNpdGUuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj42LiBJbnZvaWNpbmc6IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTdcIj5JbnZvaWNlcyB3aWxsIGJlIGlzc3VlZCBvbiB0aGUgYmFzaXMgb2YgdGhlIG51bWJlciBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3llZCBzdG9yZXMgaW4gZXhpc3RlbmNlIG9uIHRoZSBpbnZvaWNlIGRhdGUgYW5kIHNoYWxsIGJlIGlzc3VlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBheW1lbnQgVGVybXMgaW4gdGhlIGNvbW1lcmNpYWwgdGVybXMgYWJvdmUuIFRhbmdvIEV5ZSBzaGFsbCBiaWxsIEN1c3RvbWVyIGZvciBhcHBsaWNhYmxlIHRheGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc2VwYXJhdGUgbGluZSBpdGVtIG9uIGVhY2ggaW52b2ljZS4gQ3VzdG9tZXIgc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIHBheW1lbnQgb2YgYWxsIHNhbGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGF4ZXMsIEdvb2RzIGFuZCBTZXJ2aWNlcyB0YXgsIG9yIHNpbWlsYXIgY2hhcmdlcyByZWxhdGluZyB0byBDdXN0b21lcuKAmXMgcHVyY2hhc2UgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBvZiB0aGUgU2VydmljZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj43LiBQYXltZW50OiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+UGF5bWVudCBzaGFsbCBiZSBtYWRlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgUGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBpbiB0aGUgY29tbWVyY2lhbCB0ZXJtcyB3aGljaCBzaGFsbCBiZSBhZ3JlZWQgdG8gc2VwYXJhdGVseSBiZXR3ZWVuIFRhbmdvIEV5ZSBhbmQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIGFuZCB3aGljaCBzaGFsbCBiZSByZWFkIGFuZCBiZSBjb3Rlcm1pbm91cyB3aXRoIHRoZXNlIFNhYVMgVGVybXMgKFBheW1lbnQgVGVybXMpLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIG90aGVyd2lzZSwgcGF5bWVudHMgYXJlIG5vbi1yZWZ1bmRhYmxlLiBJbiB0aGUgZXZlbnQgdGhlIEN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxzIHRvIG1ha2UgdGhlIHBheW1lbnQgYXMgcGVyIHRoZSBwYXltZW50IHRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgc2VuZCBhIHdyaXR0ZW4gbm90aWNlIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQgdG8gZW5zdXJlIHRoYXQgdGhlIHBheW1lbnQgaXMgbWFkZSB3aXRoaW4gMzAgKHRoaXJ0eSkgZGF5cyAo4oCcQWRkaXRpb25hbCBQZXJpb2TigJ0pIGZyb20gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgb2YgcmVjZWlwdCBzdWNoIHdyaXR0ZW4gbm90aWNlLiBJZiB0aGUgY3VzdG9tZXIgZmFpbHMgdG8gbWFrZSB0aGUgcGF5bWVudCB3aXRoaW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgUGVyaW9kLCB0aGUgYWNjZXNzIHRvIHRoZSB3ZWIgcG9ydGFsIHdpbGwgYmUgYmxvY2tlZCBhbmQgdGhlIFNlcnZpY2VzIHNoYWxsIGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmRlZCA3IChzZXZlbikgZGF5cyBhZnRlciBzZW5kaW5nIGEgcmVtaW5kZXIgZW1haWwgdG8gQ3VzdG9tZXIgZnJvbSB0aGUgZXhwaXJ5IG9mIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIFBlcmlvZC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5QYXJ0aWVzIGFja25vd2xlZGdlIHRoYXQgdGltZSBpcyBvZiB0aGUgZXNzZW5jZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BlY3QgdG8gcGF5bWVudHMgcmVxdWlyZWQgdW5kZXIgdGhpcyBjbGF1c2UuIEluIHRoZSBldmVudCBvZiBhbnkgZGVsYXkgaW4gcGF5bWVudCBieSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIsIFRhbmdvIEV5ZSBtYXkgcmVxdWlyZSB0aGUgQ3VzdG9tZXIgdG8gcGF5IFRhbmdvIEV5ZSBhIGxhdGUgcGF5bWVudCBwZW5hbHR5IGVxdWFsIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR3ZWx2ZSBwZXJjZW50ICgxMiUpIHBlciBhbm51bSBvbiBhbGwgb3V0c3RhbmRpbmcgcGF5bWVudHMuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjguSW50ZWxsZWN0dWFsIFByb3BlcnR5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktN1wiPkFsbCBUYW5nbyBFeWUgU29mdHdhcmUsIGluY2x1ZGluZyB0aGUgV2Vic2l0ZSBhbmQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgdGhlcmV0bywgYW5kIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgY3JlYXRlZCBieSBUYW5nbyBFeWUgaW4gZnVydGhlcmFuY2UgdG8gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIG9yIGFueSB3b3JrcywgcHJvZHVjdHMsIGRvY3VtZW50cywgbWF0ZXJpYWxzIGNyZWF0ZWQgdXNpbmcsIGluY29ycG9yYXRpbmcsIGNvbXByaXNpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW4sIG9yIHJlbGF0aW5nIHRvIHN1Y2ggaW50ZWxsZWN0dWFsIHByb3BlcnR5ICjigJxUYW5nbyBFeWUgSVDigJ0pIHNoYWxsIGF0IGFsbCB0aW1lcyByZW1haW4gdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1c2l2ZSBwcm9wZXJ0eSBvZiBUYW5nbyBFeWUgYW5kL29yIGl0cyBub21pbmVlcyBvciBhZmZpbGlhdGVzLCBhcyB0aGUgY2FzZSBtYXkgYmUsIGFuZCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIgc2hhbGwgbm90IGhhdmUgYW55IHJpZ2h0LCB0aXRsZSwgY2xhaW0gZXRjLiB3aGF0c29ldmVyIG92ZXIgdGhlIHNhbWUuIE5vdGhpbmcgY29udGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVpbiBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgYSB0cmFuc2ZlciwgYXNzaWdubWVudCBvciBjb252ZXlhbmNlIGJ5IFRhbmdvIEV5ZSB0byBDdXN0b21lciBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3duZXJzaGlwLCBpbnRlcmVzdCBvciB0aXRsZSB0byB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9yIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXR0YWNoZWQgdG8gdGhlIFRhbmdvIEV5ZSBJUC4gVGhlIEN1c3RvbWVyIGlzIG9ubHkgYXV0aG9yaXplZCB0byByZWNlaXZlIGEgcmlnaHQgdG8gYWNjZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIEV5ZSBJUCBmb3IgdGhlIHRlcm0gZXhwbGljaXRseSBncmFudGVkIGJ5IFRhbmdvIEV5ZSB0byBDdXN0b21lciBhbmQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aXNpb25zIG9mIHRoZXNlIFNhYVMgVGVybXMuIFRoaXMgYXV0aG9yaXphdGlvbiBpcyBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub24tc3ViLWxpY2Vuc2FibGUsIHVubGVzcyBvdGhlcndpc2UgYWdyZWVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LiBDdXN0b21lciBzaGFsbCBub3QgaGF2ZSBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgdG8gbW9kaWZ5LCBhZGFwdCwgaW5jb3Jwb3JhdGUsIGNyZWF0ZSBhbnkgZGVyaXZhdGl2ZSB1c2luZyBvciBpbmNvcnBvcmF0aW5nIFRhbmdvIEV5ZSBJUFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvciBpbiBhbnkgbWFubmVyIHRyYW5zZmVyLCBlbmN1bWJlciwgYWxpZW5hdGUsIHNlbGwsIHNoYXJlLCBhc3NpZ24sIGxpY2Vuc2Ugb3Igc3ViLWxldCBpdCB0byBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydHkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+QXMgYmV0d2VlbiB0aGUgcGFydGllcywgQ3VzdG9tZXIgcmV0YWlucyBhbGwgcmlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlIGFuZCBpbnRlcmVzdCBpbiBhbmQgdG8g4oCTwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5hbGwgcmF3IGRhdGEgZ2VuZXJhdGVkIGZyb20gdGhlIHVzZSBvZiB0aGUgU29mdHdhcmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0ZXh0LCBzb3VuZCwgdmlkZW8sIG9yIGltYWdlIGZpbGVzLCBidXQgZXhjbHVkaW5nIGFueSBCdXNpbmVzcyBEYXRhICjigJxHZW5lcmF0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YeKAnSk7IGFuZMKgwqA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5yYXcgZGF0YSBvd25lZCBieSBhbmQgcmVsYXRpbmcgdG8gdGhlIEN1c3RvbWVyLCBzdWNoIGFzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnkgaW5mb3JtYXRpb24sIHN0b3JlIGxvY2F0aW9uIGFuZCBkZXRhaWxzIG9mIHRoZSB6b25lcywgZW1wbG95ZWUgaW5mb3JtYXRpb24sIGJ1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRpbmcgYW55IEdlbmVyYXRlZCBEYXRhICjigJxCdXNpbmVzcyAsIHRoYXQgaXMgcHJvdmlkZWQgdG8gVGFuZ28gRXllIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lciB0aHJvdWdoIHRoZSBDdXN0b21lcuKAmXMgdXNlIG9mIHRoZSBTb2Z0d2FyZSAodG9nZXRoZXIsIOKAnEN1c3RvbWVyIERhdGHigJ0pLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRoZSBDdXN0b21lciBoZXJlYnkgZ3JhbnRzIHRvIFRhbmdvIEV5ZSBhIG5vbi1leGNsdXNpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkd2lkZSwgZnVsbHkgcGFpZCB1cCBhbmQgcm95YWx0eSBmcmVlIHJpZ2h0IGFuZCBsaWNlbnNlIHRvIHVzZSB0aGUgR2VuZXJhdGVkIERhdGEgZm9yIChpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlzaW9uIG9mIFNlcnZpY2VzIGFuZCBmdWxmaWxsbWVudCBvZiBvYmxpZ2F0aW9ucyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGFuZDsgKGlpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbXByb3ZpbmcgdGhlIFNvZnR3YXJlLsKgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIGhlcmVieSBncmFudHMgdG8gVGFuZ28gRXllIGEgbm9uLWV4Y2x1c2l2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd29ybGR3aWRlLCBmdWxseSBwYWlkIHVwIGFuZCByb3lhbHR5IGZyZWUgcmlnaHQgYW5kIGxpY2Vuc2UgdG8gdXNlIHRoZSBCdXNpbmVzcyBEYXRhIGZvciAoaSkgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3Zpc2lvbiBvZiBTZXJ2aWNlcyBhbmQgZnVsZmlsbG1lbnQgb2Ygb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtczsgYW5kIChpaSkgaW1wcm92aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTb2Z0d2FyZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5DdXN0b21lciBhZ3JlZXMgdG8gcHJvdmlkZSBjb21tZW50cyBvciBmZWVkYmFjaywgaWYgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0byBUYW5nbyBFeWUgcmVnYXJkaW5nIHRoZSBTb2Z0d2FyZSBvciBmdXR1cmUgcmVsZWFzZXMvIGRldmVsb3BtZW50IHRvIHRoZSBTb2Z0d2FyZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIG9mIHRoZSB3b3JrIGNhcnJpZWQgb3V0IGR1cmluZyB0aGlzIGVuZ2FnZW1lbnQgd2l0aCB0aGUgQ3VzdG9tZXIgb3IgYW55IGFuZCBhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAga25vd2xlZGdlIGFuZCBpbmZvcm1hdGlvbiBvZiBnZW5lcmljIG5hdHVyZSwgYXJpc2luZyBvdXQgb2YgdXNlIG9mIHRoZSBTb2Z0d2FyZSBieSB0aGUgQ3VzdG9tZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgZGlzY2xvc2luZyBhbnkgQ3VzdG9tZXIgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIG9yIEN1c3RvbWVyIERhdGEuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIEN1c3RvbWVyIHVuZGVydGFrZXMgdG8gcHJvbXB0bHkgaW5mb3JtIFRhbmdvIEV5ZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbnkgaW5mcmluZ2VtZW50IG9mIFRhbmdvIEV5ZSBJUCByaWdodHMgYnkgdGhpcmQgcGFydGllcywgYW5kIHNoYWxsIHBlcm1pdCBUYW5nbyBFeWUgdG8gYXNzdW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvbGUgYXV0aG9yaXR5IHRvIHRha2UgYXBwcm9wcmlhdGUgbGVnYWwgYWN0aW9uLiBDdXN0b21lciBzaGFsbCBub3QgbWFrZSBhbnkgc3RhdGVtZW50IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWlzc2lvbiBpbiByZWxhdGlvbiB0byBzdWNoIGNsYWltIHdoaWNoIG1heSBwcmVqdWRpY2lhbGx5IGFmZmVjdCB0aGUgY2hhbmNlcyBvZiBzZXR0bGVtZW50IG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVuc2Ugb2Ygc3VjaCBjbGFpbSwgYW5kIHNoYWxsIHByb3ZpZGUgaW5mb3JtYXRpb24gYW5kIGFzc2lzdGFuY2UgcmVhc29uYWJseSByZXF1ZXN0ZWQgaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3aXRoIHN1Y2ggY2xhaW0gb3Igc3VpdC48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UYW5nbyBFeWUgaGVyZWJ5IHVuZGVydGFrZXMsIGluIHRoZSBldmVudCB0aGF0IHRoaXJkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpZXMgYWN0IGFnYWluc3QgdGhlIEN1c3RvbWVyIGZvciBhbnkgcmVhc29uIHdoYXRzb2V2ZXIgaW4gcmVsYXRpb24gdG8gdGhlIFNvZnR3YXJlIG9yIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUYW5nbyBFeWUgSVAsIHRvIHByb3ZpZGUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlaXIgcG9zc2Vzc2lvbiBhbmQgb3RoZXJ3aXNlIGRvIGFuZCBleGVjdXRlIGFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RzLCB0aGluZ3MsIG1hdHRlcnMgYW5kIGRlZWRzIGFzIG1heSBiZSByZWFzb25hYmx5IHJlcXVpcmVkIGJ5IHRoZSBDdXN0b21lciwgZnJvbSB0aW1lIHRvIHRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2hvdyBvd25lcnNoaXAgb2Ygc3VjaCBUYW5nbyBFeWUgSVAuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjkuIERhdGEgUHJvdGVjdGlvbiBhbmQgUHJpdmFjeSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+RWFjaCBQYXJ0eSBzaGFsbCBhdCBhbGwgdGltZXMgY29tcGx5IHdpdGggaXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRpb25zIHVuZGVyIGFwcGxpY2FibGUgcHJpdmFjeSByZWd1bGF0aW9ucyBpbiByZWxhdGlvbiB0byB0aGUgR2VuZXJhdGVkIERhdGEsIEJ1c2luZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEsIGFuZCBDdXN0b21lciBEYXRhIHRoYXQgaXMgY29sbGVjdGVkLCBzdG9yZWQgYW5kL29yIHByb2Nlc3NlZCBieSBpdCBpbiB0aGUgY291cnNlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1pbmcgaXRzIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMuIEZ1cnRoZXIgZWFjaCBQYXJ0eSBzaGFsbCBwcm9jZXNzIHN1Y2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkIERhdGEsIEJ1c2luZXNzIERhdGEsIGFuZCBDdXN0b21lciBEYXRhIG9ubHkgdG8gdGhlIGV4dGVudCBuZWNlc3NhcnkgZm9yIHRoZSBwdXJwb3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiBwZXJmb3JtaW5nIHRoZWlyIHJlc3BlY3RpdmUgb2JsaWdhdGlvbnMgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5FYWNoIHBhcnR5IHNoYWxsIHRha2UgYXBwcm9wcmlhdGUgdGVjaG5pY2FsIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25hbCBtZWFzdXJlcyBhcyByZXF1aXJlZCB1bmRlciBhcHBsaWNhYmxlIGxhdyBhZ2FpbnN0IGFueSBkYXRhIGJyZWFjaCwgdW5hdXRob3JpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yIHVubGF3ZnVsIHByb2Nlc3Npbmcgb2YgdGhlIHBlcnNvbmFsIGRhdGEgb3IgaXRzIGFjY2lkZW50YWwgbG9zcywgZGVzdHJ1Y3Rpb24gb3IgZGFtYWdlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMC4gUmVwcmVzZW50YXRpb25zLCBXYXJyYW50aWVzIGFuZCBEaXNjbGFpbWVycyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS03XCI+RWFjaCBQYXJ0eSByZXByZXNlbnRzLCB3YXJyYW50cyBhbmQgY292ZW5hbnRzIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aGF0OiAoaSkgaXQgaXMgZHVseSBvcmdhbml6ZWQgYW5kIHZhbGlkbHkgZXhpc3RpbmcgYW5kIGluIGdvb2Qgc3RhbmRpbmcgdW5kZXIgdGhlIGxhd3Mgb2ZcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIG9mIGl0cyBpbmNvcnBvcmF0aW9uIG9yIGZvcm1hdGlvbjsgKGlpKSBpdCBoYXMgdGhlIGZ1bGwgcmlnaHQgYW5kIGF1dGhvcml0eSB0byBlbnRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZXNlIFNhYVMgVGVybXMgYW5kIHRoYXQgdGhlc2UgU2FhUyBUZXJtcyBjb25zdGl0dXRlcyBhIGxlZ2FsLCB2YWxpZCBhbmQgYmluZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmxpZ2F0aW9uOyAoaWlpKSB0aGUgZXhlY3V0aW9uLCBkZWxpdmVyeSBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhlc2UgU2FhUyBUZXJtcyBkb2VzIG5vdCBhbmQgd2lsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3QgY29uZmxpY3Qgd2l0aCwgb3IgY29uc3RpdHV0ZSBhIGJyZWFjaCBvciBkZWZhdWx0IHVuZGVyLCBpdHMgY2hhcnRlciBvZiBvcmdhbml6YXRpb24sIG9yIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdCBvciBvdGhlciBpbnN0cnVtZW50IHRvIHdoaWNoIGl0IGlzIGEgcGFydHk7IChpdikgaXQgd2lsbCBjb21wbHkgd2l0aCwgYW5kIHdpbGwgZW5zdXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBvZiBpdHMgcGVyc29ubmVsLCB0aGlyZCBwYXJ0eSBhZ2VudHMsIGNvbnN1bHRhbnRzIGV0Yy4sIGNvbXBseSB3aXRoIGFsbCBsYXdzIGFuZCByZWd1bGF0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIHRvIChpKSB0aGUgcHJvdmlzaW9uLCBvciBhY2Nlc3MgYW5kIHVzZSBvZiB0aGUgU29mdHdhcmU7IGFuZCAoaWkpIHBlcmZvcm1hbmNlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMsIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gbGF3cyBhbmQgcmVndWxhdGlvbnMgcmVsYXRlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcml2YWN5LCBkYXRhIHByb3RlY3Rpb24sIGVsZWN0cm9uaWMgY29tbXVuaWNhdGlvbnMsIGV4cG9ydCBhbmQgY29uZmlkZW50aWFsaXR5LjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlRhbmdvIEV5ZSByZXByZXNlbnRzLCB3YXJyYW50cyBhbmQgY292ZW5hbnRzIHRoYXQgKGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRhbmdvIEV5ZSBwZXJzb25uZWwgc2hhbGwgcHJvdmlkZSB0aGUgU2VydmljZXMgaW4gYSBkaWxpZ2VudCBhbmQgcHJvZmVzc2lvbmFsIG1hbm5lciB3aXRoIGR1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJlIChpaSkgVGFuZ28gRXllIElQIGRvZXMgbm90IGFuZCB3aWxsIG5vdCBpbmZyaW5nZSwgbWlzYXBwcm9wcmlhdGUgb3Igb3RoZXJ3aXNlIHZpb2xhdGUgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55IHBhcnR5IHdpdGhpbiB0aGUgdGVycml0b3J5IG9mIEluZGlhIGFuZCBvciBhbnkgb3RoZXIgY291bnRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdHMgcmlnaHN0IGFyZSByZWdpc3RlcmVkOyBhbmQgKGlpaSkgYWxsIFNlcnZpY2VzIHRoYXQgYXJlIHByb3ZpZGVkIHdpbGwgYmUgZnJlZSBmcm9tIGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrbm93biBtYWxpY2lvdXMgY29kZSBvciBpbnN0cnVjdGlvbnMgdGhhdCBtYXkgaW50ZW50aW9uYWxseSBkaXNydXB0LCBkYW1hZ2Ugb3IgaW50ZXJmZXJlIHdpdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IHVzZSBieSBDdXN0b21lci4gVGFuZ28gRXllIGZ1cnRoZXIgd2FycmFudHMgYW5kIHJlcHJlc2VudHMgdG8gdGhlIEN1c3RvbWVyIHRoYXQgaXQgaG9sZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aWxsIGNvbnRpbnVlIHRvIGhvbGQsIGFueSBhbmQgYWxsIGxpY2Vuc2VzLCBwZXJtaXRzIG9yIG90aGVyIGF1dGhvcml6YXRpb25zIHJlcXVpcmVkIGJ5IGFueVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGxhdyB0byBwZXJmb3JtIHRoZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlc2UgU2FhUyBUZXJtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj7igJxBcHBsaWNhYmxlIGxhd+KAnSBtZWFucyBhbnkgYXBwbGljYWJsZSBsYXcsIHN0YXR1dGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUsIHJlZ3VsYXRpb24sIG9yZGluYW5jZSwgcmVxdWlyZW1lbnQsIGRpcmVjdGlvbnMsIGd1aWRlbGluZXMsIGFubm91bmNlbWVudCBvciBvdGhlciBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiBvciByZXF1aXJlbWVudCBvZiBhbnkgZ292ZXJubWVudCBvciBxdWFzaSBnb3Zlcm5tZW50OyBkZXBhcnRtZW50LCBhZ2VuY3kgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGFsaXR5IG9mIGFueSBnb3Zlcm5tZW50IHRoZXJlb2YsIGFueSBjb3VydCBvciBhcmJpdHJhbCB0cmlidW5hbCBhcHBsaWNhYmxlIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyB1bmRlciB0aGUgcmVwdWJsaWMgb2YgSW5kaWEuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VEhFIFNPRlRXQVJFIEFORCBBTllUSElORyBQUk9WSURFRCBJTiBDT05ORUNUSU9OIFdJVEhcclxuICAgICAgICAgICAgICAgICAgICAgICAgVEhFU0UgU2FhUyBURVJNUyBBUkUgUFJPVklERUQg4oCcQVMtSVPigJ0uIEVYQ0VQVCBGT1IgVEhFIEVYUFJFU1MgUkVQUkVTRU5UQVRJT05TIEFORCBXQVJSQU5USUVTIElOXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRISVMgU0VDVElPTiA2LCBUQU5HTyBFWUUgRE9FUyBOT1QgTUFLRSBBTlkgUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMsIEVYUFJFU1MsIElNUExJRUQgT1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgU1RBVFVUT1JZIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIFFVQUxJVFksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBTWVNURU0gSU5URUdSQVRJT04sIEVSUk9SLUZSRUUsIFVOLUlOVEVSUlVQVElPTiwgU1VQUE9SVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDT1JSRUNUSU9OIE9SIFJFUEFJUiAoVU5MRVNTIE9USEVSV0lTRSBBR1JFRUQpIE9SIE9USEVSV0lTRSBUSEFUIFRBTkdPIEVZRSBTT0ZUV0FSRSBIRVJFVU5ERVJcclxuICAgICAgICAgICAgICAgICAgICAgICAgV0lMTCBPUEVSQVRFIElOIEVWRVJZIENPTUJJTkFUSU9OIE9SIEVOVklST05NRU5UIERFU0lSRUQgQlkgQ1VTVE9NRVIgV0lUSCBBTlkgREFUQSwgREVWSUNFUyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ09NUFVURVIgU1lTVEVNUyBBTkQgUFJPR1JBTVMgT0YgSVRTIENIT0lDRSBPUiBUSEFUIFRIRSBSRU1FRFlJTkcgT0YgT05FIFBST0dSQU0gRVJST1IgRE9FUyBOT1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgUkVTVUxUIElOIFRIRSBPQ0NVUlJFTkNFIE9GIE9USEVSIFBST0dSQU0gRVJST1JTLiBBTEwgU1VDSCBSRVBSRVNFTlRBVElPTlMgQU5EIFdBUlJBTlRJRVMgQVJFXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhFUkVCWSBESVNDTEFJTUVELjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGUgQ3VzdG9tZXIgd2FycmFudHMgdGhhdDogPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy0zXCI+IEEpIEN1c3RvbWVyIERhdGEgZG9lcyBub3QgYW5kIHdpbGwgbm90IGluZnJpbmdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXNhcHByb3ByaWF0ZSBvciBvdGhlcndpc2UgdmlvbGF0ZSB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgdGhpcmQgcGFydHk7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPkIpIGl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGFueSBzZWN1cml0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2dWxuZXJhYmlsaXRpZXMgYW5kIHRoZSBjb25zZXF1ZW5jZXMgb2Ygc3VjaCB2dWxuZXJhYmlsaXRpZXMgYXJpc2luZyBzb2xlbHkgZnJvbSB0aGUgbmF0dXJlIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIERhdGE7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtM1wiPiBDKSBpdCBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBFbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgVXNlcnMgY29tcGx5IHdpdGggYWxsIHJlcXVpcmVtZW50cyB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGluIHJlbGF0aW9uIHRvIHRoZSB1c2Ugb2YgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0byB0aGUgZXh0ZW50IGFwcGxpY2FibGUpOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gRCkgaXQgc2hhbGwgaW1tZWRpYXRlbHkgbm90aWZ5IFRhbmdvIEV5ZSBvZiAoYSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW55IGFjY291bnQtcmVsYXRlZCBhYnVzZTsgKGIpIHRoZSB1bmF1dGhvcml6ZWQgZGlzY2xvc3VyZSwgdXNlIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlaXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudCBjcmVkZW50aWFscyBieSBvciB0byBhbnkgdGhpcmQgcGFydHk7IGFuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS0xIG1zLTNcIj4gRSkgaXQgc2hhbGwgbm90LCBhbmQgc2hhbGwgbm90IHBlcm1pdCBhbnkgcGFydHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3IgcGVyc29uIHRvLCBhY2Nlc3Mgb3IgdXNlIHRoZSBTb2Z0d2FyZSBleGNlcHQgYXMgZXhwcmVzc2x5IHBlcm1pdHRlZCBieSB0aGVzZSBTYWFTIFRFUk1TLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBXaXRob3V0IGxpbWl0aW5nIHRoZSBnZW5lcmFsaXR5IG9mIHRoZSBmb3JlZ29pbmcsIEN1c3RvbWVyIHNoYWxsIG5vdCwgYW5kIHNoYWxsIG5vdCBwZXJtaXQgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnR5IG9yIHBlcnNvbiB0bzo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy01XCI+IDEuIGludGVyZmVyZSB3aXRoIG9yIGRpc3J1cHQgdGhlIGludGVncml0eSBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBvZiB0aGUgU29mdHdhcmUsIG9yIGNpcmN1bXZlbnQsIGJ5cGFzcywgZGVsZXRlIG9yIHJlbW92ZSBhbnkgZm9ybSBvZiBwcm90ZWN0aW9uLCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2FnZSwgZnVuY3Rpb25hbGl0eSBvciB0ZWNobmljYWwgcmVzdHJpY3Rpb25zIG9yIGxpbWl0YXRpb25zLCBvciB0byBlbmFibGUgZnVuY3Rpb25hbGl0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCBieSBUYW5nbyBFeWUsIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgU29mdHdhcmU7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTEgbXMtNVwiPiAyLiBhY2Nlc3Mgb3IgdXNlIHRoZSBTb2Z0d2FyZSBwcm92aWRlZCB1bmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBTYWFTIFRlcm1zLCBpbiBhbnkgbWFubmVyIG9yIGZvciBhbnkgcHVycG9zZSB0aGF0IHZpb2xhdGVzIGFueSBhcHBsaWNhYmxlIGxhdywgdGhlIHJpZ2h0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiBvdGhlcnMsIGluIGEgd2F5IHRoYXQgY291bGQgaGFybSB0aGUgc2VydmljZS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktMSBtcy01XCI+My4gcmV2ZXJzZSBlbmdpbmVlciwgZGlzYXNzZW1ibGUsIGRlLWNvbXBpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY3JlYXRlLCBjb3B5IG9yIHJlcHJvZHVjZSB0aGUgc291cmNlIGNvZGUgb3Igb2JqZWN0IGNvZGUgb2YgdGhlIFNvZnR3YXJlIG9yIHBlcmZvcm0gYW55XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6YXRpb25zICh3aXRob3V0IFRhbmdvIEV5ZeKAmXMgcHJpb3Igd3JpdHRlbiBjb25zZW50KTsgYW5kPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTEuIEN1c3RvbWVy4oCZcyBBY2NvdW50IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJzIGFyZSBmdWxseSByZXNwb25zaWJsZSB0byBzYWZlZ3VhcmQgdGhlaXIgYWNjZXNzIGNyZWRlbnRpYWxzIC0gaW5jbHVkaW5nIGluIHRoZSBzZW5zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY29tYmluYXRpb24gb2YgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW4gbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXJtc2hlYWRpbmdcIj4xMi4gRHVyYXRpb24sIFJlbmV3YWwgYW5kIFRlcm1pbmF0aW9uIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGluIHRoZSBwcm9wb3NhbCwgdGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBjb250aW51ZSB0byBiZSBlZmZlY3RpdmUgZHVyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIEN1c3RvbWVyIHVzZXMgYW5kIG9yIGNvbnRpbnVlcyB0byB1c2UgdGhlIFNvZnR3YXJlLCB1bmxlc3MgdGVybWluYXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybXMgc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgb3V0XHJcbiAgICAgICAgICAgICAgICAgICAgaGVyZWluLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBJdCBiZWluZyBjbGFyaWZpZWQgdGhhdCB0aGVyZSB3b3VsZCBiZSBhIHJlbmV3YWwgZmVlIGNoYXJnZWQgZXZlcnkgMTIgbW9udGhzIGF0IHRoZSByYXRlIG9mIDclIHBlclxyXG4gICAgICAgICAgICAgICAgICAgIGFubnVtLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFaXRoZXIgcGFydHkgbWF5IHRlcm1pbmF0ZSB0aGVpciBidXNpbmVzcyByZWxhdGlvbnNoaXAgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyBpbW1lZGlhdGVseSB1cG9uIGFcclxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFjaCBieSB0aGUgb3RoZXIgcGFydHkgdGhhdCBoYXMgbm90IGJlZW4gY3VyZWQgd2l0aGluIHRoaXJ0eSAoMzApIGRheXMgYWZ0ZXIgcmVjZWlwdCBvZiBub3RpY2Ugb2ZcclxuICAgICAgICAgICAgICAgICAgICBzdWNoXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWNoLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFaXRoZXIgcGFydHkgbWF5IGFsc28gdGVybWluYXRlIHRoaXMgQWdyZWVtZW50IHVwb24gdGhpcnR5ICgzMCkgZGF5cyB3cml0dGVuIG5vdGljZSB3aXRob3V0XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduaW5nIGFueVxyXG4gICAgICAgICAgICAgICAgICAgIHJlYXNvbi4gQ3VzdG9tZXIgd2lsbCBwYXkgaW4gZnVsbCBmb3IgdGhlIFNvZnR3YXJlIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGxhc3QgZGF5IG9uIHdoaWNoIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgd2FzIHVzZWQuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTMuIEVmZmVjdCBvZiBUZXJtaW5hdGlvbi4gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVXBvbiB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgaW1tZWRpYXRlbHkgY2Vhc2UgcHJvdmlkaW5nIGFjY2VzcyB0byB0aGVcclxuICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZS5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVXBvbiB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLCBUYW5nbyBFeWUgc2hhbGwgZGVsZXRlIHRoZSBHZW5lcmF0ZWQgRGF0YSwgQnVzaW5lc3MgRGF0YSBhbmRcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21lciBEYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGVkLCBzdG9yZWQgYW5kL29yIHByb2Nlc3NlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zIGZvciB0aGUgcHVycG9zZSBvZiBwcm92aWRpbmcgdGhlIFNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgd2l0aGluIDE1XHJcbiAgICAgICAgICAgICAgICAgICAgKGZpZnRlZW4pIGRheXMgb2YgcmVjZWlwdCBvZiBub3RpY2Ugb2YgdGVybWluYXRpb24gb2YgdGhlc2UgU2FhUyBUZXJtcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSWYgVGFuZ28gRXllIHRlcm1pbmF0ZXMgdGhlc2UgU2FhUyBUZXJtcyBkdWUgdG8gYSBicmVhY2ggYnkgQ3VzdG9tZXIgb2YgYW55IG9mIHRoZSBwcm92aXNpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVkIHVuZGVyIHRoZXNlXHJcbiAgICAgICAgICAgICAgICAgICAgU2FhUyBUZXJtcywgdGhlbiBDdXN0b21lciBzaGFsbCBpbW1lZGlhdGVseSBwYXkgdG8gVGFuZ28gRXllIGFsbCBhbW91bnRzIHRoZW4gZHVlIHVuZGVyIHRoZXNlIFNhYVNcclxuICAgICAgICAgICAgICAgICAgICBUZXJtcy4gSWZcclxuICAgICAgICAgICAgICAgICAgICBDdXN0b21lciB0ZXJtaW5hdGVzIHRoZXNlIFNhYVMgVGVybXMgZHVlIHRvIGEgYnJlYWNoIGJ5IFRhbmdvIEV5ZSwgdGhlbiBUYW5nbyBFeWUgc2hhbGwgaW1tZWRpYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICByZXBheSB0b1xyXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyIGFsbCBwcmUtcGFpZCBhbW91bnRzIGZvciBhbnkgdW5wZXJmb3JtZWQgU2VydmljZXMgc2NoZWR1bGVkIHRvIGJlIGRlbGl2ZXJlZCBhZnRlciB0aGVcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbiBkYXRlLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBTdWJqZWN0IHRvIHRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGVzZSBTYWFTIFRlcm1zLCB1cG9uIGl0cyB0ZXJtaW5hdGlvbiBhbmQgdXBvbiBzdWJzZXF1ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgd3JpdHRlbiByZXF1ZXN0IGJ5XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIERpc2Nsb3NpbmcgUGFydHksIHRoZSBSZWNlaXZpbmcgUGFydHkgb2YgdGFuZ2libGUgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHNoYWxsIGltbWVkaWF0ZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2hcclxuICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvciBkZXN0cm95IHN1Y2ggaW5mb3JtYXRpb24gYW5kIHByb3ZpZGUgd3JpdHRlbiBjZXJ0aWZpY2F0aW9uIG9mIHN1Y2ggZGVzdHJ1Y3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgdGhhdCB0aGVcclxuICAgICAgICAgICAgICAgICAgICByZWNlaXZpbmcgcGFydHkgbWF5IHBlcm1pdCBpdHMgbGVnYWwgY291bnNlbCB0byByZXRhaW4gb25lIGFyY2hpdmFsIGNvcHkgb2Ygc3VjaCBpbmZvcm1hdGlvbiBpbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICBldmVudCBvZiBhXHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBkaXNwdXRlIGJldHdlZW4gdGhlIHBhcnRpZXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRoZSBwcm92aXNpb25zIHJlbGF0aW5nIHRvIGNvbmZpZGVudGlhbGl0eSwgYXMgd2VsbCBhcyBmb3IgbGlhYmlsaXR5LCBhcHBsaWNhYmxlIGxhdyBhbmQgc2V0dGxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIG9mIGRpc3B1dGVzXHJcbiAgICAgICAgICAgICAgICAgICAgc2hhbGwgc3Vydml2ZSB0aGUgZXhwaXJhdGlvbiBvciB0ZXJtaW5hdGlvbiBvZiB0aGVzZSBTYWFTIFRlcm1zLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdGlvbiBzaGFsbCBub3QgYWZmZWN0IGFueSByaWdodHMgb3Igb2JsaWdhdGlvbnMgb2YgdGhlIHBhcnRpZXMgaW5jdXJyZWQgcHJpb3IgdG8gdGhlIGRhdGUgb2ZcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbixcclxuICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3RoZXJ3aXNlIGFncmVlZCBiZXR3ZWVuIHRoZSBwYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktMlwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uIG15LTdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybXNoZWFkaW5nXCI+MTQuIEFjY2VzcyB0byBBbmFseXRpY3MgdmlhIFdlYiBQb3J0YWwgJiBFeGNlbCBSZXBvcnRzwqAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIGFuYWx5dGljcyBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSkgd2ViLWJhc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24sIGIpIGV4Y2VsIHJlcG9ydHMgc2VudCB2aWEgZW1haWwgb3IgRmlsZSBUcmFuc2ZlciBQcm90b2NvbC5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VHJhaW5pbmc6IEFsbCDigJxTb2Z0d2FyZeKAnSB1c2VkIGluIGNvbm5lY3Rpb24gd2l0aCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlcy4gRm9yIGF2b2lkYW5jZSBvZiBkb3VidCwgaXQgaXMgY2xhcmlmaWVkIHRoYXQgVGFuZ28gRXllIGFncmVlcyB0byBwcm92aWRlIHNhbXBsZSBkYXNoYm9hcmRcclxuICAgICAgICAgICAgICAgICAgICBhbmQgYXJyYW5nZSBmb3IgdHJhaW5pbmcgc2Vzc2lvbnMgdG8gdGhlIEN1c3RvbWVyIGFzIG11dHVhbGx5IGFncmVlZCBieSB0aGUgUGFydGllcy5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE1LiBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+QWxsIHByb3ByaWV0YXJ5IG9yIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiwgdGVjaG5pY2FsIGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgb3Iga25vdy1ob3cgYW5kIGFsbCBvdGhlciBub24tcHVibGljIGluZm9ybWF0aW9uLCBtYXRlcmlhbCBvciBkYXRhIGluIHdoYXRldmVyIGZvcm0gb3IgbW9kZSBvZlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIGRpc2Nsb3NlZCBieSBhIHBhcnR5ICjigJxEaXNjbG9zaW5nIFBhcnR54oCdKSB0byB0aGUgb3RoZXIgcGFydHkgKOKAnFJlY2VpdmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIFBhcnR54oCdKSBpbiBjb25uZWN0aW9uIHdpdGggdGhlIFNvZnR3YXJlIGFjY2VzcyBhbmQgdXNhZ2Ugd2hldGhlciBtYXJrZWQgYXMg4oCcY29uZmlkZW50aWFs4oCdIG9yIG5vdCBhdFxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSB0aW1lIG9mIGRpc2Nsb3N1cmUsIHNoYWxsIGJlIHRyZWF0ZWQgYXMg4oCcQ29uZmlkZW50aWFsIEluZm9ybWF0aW9u4oCdLiBDb25maWRlbnRpYWwgSW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBzaGFsbCBpbmNsdWRlLCBidXQgbm90IGJlIGxpbWl0ZWQgdG8sIHRoZSB0ZXJtcyBhbmQgcHJpY2luZy9jb21tZXJjaWFsIHRlcm1zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIHRlY2huaWNhbCBhbmQgb3RoZXIgc3BlY2lmaWNhdGlvbnMgb2YgdGhlIFNvZnR3YXJlLCBhbnkgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIHNvZnR3YXJlXHJcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBjb2RlcyBhbmQgY29udGVudCBhcyB3ZWxsIGFzIHRoZSBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGFuZCBjb21wb25lbnRzLCBhbmQgYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgb3RoZXIgbm9uLXB1YmxpYyBpbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+VGhlIFJlY2VpdmluZyBQYXJ0eSB1bmRlcnRha2VzOiAoaSkgbm90IHRvIHVzZSBDb25maWRlbnRpYWxcclxuICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBvdGhlcndpc2UgdGhhbiBmb3IgdGhlIHB1cnBvc2UgZm9yIHdoaWNoIGl0IHdhcyBkaXNjbG9zZWQgb3IgdG8gcGVybWl0IHRoZSBSZWNlaXZpbmdcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0eSB0byBleGVyY2lzZSByaWdodHMgYW5kIGxpY2Vuc2VzIGdyYW50ZWQgdW5kZXIgdGhlc2UgU2FhUyBUZXJtcyA7IChpaSkgbm90IHRvIGRpc2Nsb3NlXHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiB0aGUgRGlzY2xvc2luZyBQYXJ0eSwgb3RoZXIgdGhhbiB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHRob3NlIGVtcGxveWVlcywgYWdlbnRzLCBjb250cmFjdG9ycywgc3ViY29udHJhY3RvcnMsIGxpY2Vuc2VlcyBvZiB0aGUgUmVjZWl2aW5nIFBhcnR5LCBpdHNcclxuICAgICAgICAgICAgICAgICAgICBBZmZpbGlhdGVzIG9yIGFueSBvdGhlciBwYXJ0aWVzIHdobyBoYXZlIGEgbmVlZCB0byBrbm93IGl0IGluIG9yZGVyIHRvIGFzc2lzdCB0aGUgUmVjZWl2aW5nIFBhcnR5IGluXHJcbiAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBpdHMgb2JsaWdhdGlvbnMsIG9yIHRvIHBlcm1pdCB0aGUgUmVjZWl2aW5nIFBhcnR5IHRvIGV4ZXJjaXNlIGl0cyByaWdodHPCoCBhbmQgbGljZW5zZXNcclxuICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGlzIEFncmVlbWVudDsgKGlpaSkgdG8gdGFrZSBhbGwgc3VjaCBzdGVwcyB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3MgdG8gdGhlIERpc2Nsb3NpbmdcclxuICAgICAgICAgICAgICAgICAgICBQYXJ0eeKAmXMgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uLCBhcyBpdCB0YWtlcyB0byBwcm90ZWN0IGl0cyBvd24gY29uZmlkZW50aWFsIG9yIHByb3ByaWV0YXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb2YgYSBzaW1pbGFyIG5hdHVyZSwgd2hpY2ggc3RlcHMgc2hhbGwgaW4gbm8gZXZlbnQgYmUgbGVzcyB0aGFuIGEgcmVhc29uYWJsZSBzdGFuZGFyZCBvZlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmU7IGFuZCBpdikgdG8gcmV0dXJuIHRvIHRoZSBDdXN0b21lciwgb3IgZGVzdHJveSwgb24gcmVxdWVzdCBhbGwgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIHRoYXRcclxuICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBkaXNjbG9zZWQgdG8gdGhlbSwgaW5jbHVkaW5nIGFsbCBjb3BpZXMgdGhlcmVvZiBhbmQgdG8gZGVsZXRlIGFsbCBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYVxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtcmVhZGFibGUgZm9ybSB0byB0aGUgZXh0ZW50IHByYWN0aWNhbGx5IHBvc3NpYmxlLCBzdWJqZWN0IHRvIGFueSByaWdodHMgb3IgbGljZW5zZXMgZ3JhbnRlZFxyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgb2JsaWdhdGlvbnMgaW4gcmVsYXRpb24gdG8gQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhlc2UgU2FhUyBUZXJtc8KgIHNoYWxsIG5vdCBhcHBseSB0byBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24sIHdoaWNoIChpKSBoYXMgYmVjb21lIG9yIGJlY29tZXNcclxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNseSBhdmFpbGFibGUgYnkgbWVhbnMgb3RoZXIgdGhhbiBhIGJyZWFjaCBvZiBjb25maWRlbnRpYWxpdHkgb2JsaWdhdGlvbnM7IChpaSkgd2FzIGFscmVhZHlcclxuICAgICAgICAgICAgICAgICAgICBrbm93biB0byB0aGUgUmVjZWl2aW5nIFBhcnR5IHByaW9yIHRvIGRpc2Nsb3N1cmU7IChpaWkpIHRoZSBSZWNlaXZpbmcgUGFydHkgaXMgcmVxdWlyZWQgdG8gZGlzY2xvc2VcclxuICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhd3Mgb3IgcmVndWxhdGlvbnMgb3Igd2l0aCBhIGNvdXJ0IG9yIGFkbWluaXN0cmF0aXZlIG9yZGVyOyBvclxyXG4gICAgICAgICAgICAgICAgICAgIChpdikgaXMgaW5kZXBlbmRlbnRseSBkZXZlbG9wZWQgYnkgdGhlIFJlY2VpdmluZyBQYXJ0eSB3aXRob3V0IHJlZmVyZW5jZSB0byBvciB1c2Ugb2YgYW55XHJcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlkZW50aWFsIEluZm9ybWF0aW9uIG9mIHRoZSBEaXNjbG9zaW5nIFBhcnR5LlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5UaGUgUmVjZWl2aW5nIFBhcnR5IHNoYWxsIHByb21wdGx5LCBhbmQgaW4gYW55IGNhc2Ugd2l0aGluXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyZWUgKDMpIGRheXMgYWR2aXNlIHRoZSBEaXNjbG9zaW5nIFBhcnR5IGluIHdyaXRpbmcgb2YgYW55IHVuYXV0aG9yaXplZCBkaXNjbG9zdXJlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pc2FwcHJvcHJpYXRpb24gb3IgbWlzdXNlIG9mIENvbmZpZGVudGlhbCBJbmZvcm1hdGlvbiBhZnRlciBpdCBiZWNvbWVzIGF3YXJlIG9mIGl0IGFuZCB2aWNlIHZlcnNhLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5JZiBlaXRoZXIgcGFydHkgYmVjb21lcyBhd2FyZSB0aGF0IGl0IHdpbGwgYmUgcmVxdWlyZWQsIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgaXMgbGlrZWx5IHRvIGJlIHJlcXVpcmVkLCB0byBkaXNjbG9zZSBDb25maWRlbnRpYWwgSW5mb3JtYXRpb24gaW4gb3JkZXIgdG8gY29tcGx5IHdpdGggYXBwbGljYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgIGxhd3Mgb3IgcmVndWxhdGlvbnMgb3Igd2l0aCBhIGNvdXJ0IG9yIGFkbWluaXN0cmF0aXZlIG9yZGVyLCBpdCBzaGFsbCwgdG8gdGhlIGV4dGVudCBpdCBpcyBsYXdmdWxseVxyXG4gICAgICAgICAgICAgICAgICAgIGFibGUgdG8gZG8gc28sIHByaW9yIHRvIGFueSBzdWNoIGRpc2Nsb3N1cmUgbm90aWZ5IHRoZSBvdGhlciBwYXJ0eSwgYW5kIGNvbXBseSB3aXRoIHRoZSBvdGhlclxyXG4gICAgICAgICAgICAgICAgICAgIHBhcnR54oCZcyBpbnN0cnVjdGlvbnMgdG8gcHJvdGVjdCB0aGUgY29uZmlkZW50aWFsaXR5IG9mIHRoZSBpbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE2LiBJbmRlbW5pdHkgYW5kIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5IDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFdpdGhvdXQgcHJlanVkaWNlIHRvIGFueSBvdGhlciByaWdodCBhdmFpbGFibGUgaW4gbGF3IG9yIHVuZGVyIGVxdWl0eSwgZWFjaCBwYXJ0eSBoZXJlYnkgYWdyZWVzIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGVuc2F0ZSwgaW5kZW1uaWZ5LCBkZWZlbmQgYW5kIGhvbGQgaGFybWxlc3MgdGhlIG90aGVyLCBpdHMgYWZmaWxpYXRlcywgZGlyZWN0b3JzLCBzaGFyZWhvbGRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgb2ZmaWNlcnMgYW5kIGVtcGxveWVlcyBhbmQgYWdlbnRzLCBmcm9tIGFuZCBhZ2FpbnN0IGFueSBhbmQgYWxsIGxvc3NlcywgbGlhYmlsaXRpZXMsIGRhbWFnZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmaWNpZW5jaWVzLCBkZW1hbmRzLCBjbGFpbXMgKGluY2x1ZGluZyB0aGlyZCBwYXJ0eSBjbGFpbXMpLCBhY3Rpb25zLCBqdWRnbWVudHMgb3IgY2F1c2VzIG9mXHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLCBhc3Nlc3NtZW50cywgaW50ZXJlc3QsIHBlbmFsdGllcyBhbmQgb3RoZXIgY29zdHMgb3IgZXhwZW5zZXMgKGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYXNvbmFibGUgYXR0b3JuZXlzJyBmZWVzIGFuZCBleHBlbnNlcykgYmFzZWQgdXBvbiwgYXJpc2luZyBvdXQgb2YsIG9yIGluIHJlbGF0aW9uIHRvIG9yIG90aGVyd2lzZVxyXG4gICAgICAgICAgICAgICAgICAgIGluIHJlc3BlY3Qgb2YgKGkpIGFueSBicmVhY2ggb2YgaXRzIG9ibGlnYXRpb25zIHVuZGVyIHRoZXNlIFNhYVMgVGVybXMgOyBvciAoaWkpIGFueSB3aWxsZnVsXHJcbiAgICAgICAgICAgICAgICAgICAgbWlzY29uZHVjdCwgZnJhdWQsIG9yIHdyb25nZnVsIG9yIG5lZ2xpZ2VudCBhY3Qgb3Igb21pc3Npb24gb2YgYSBQYXJ0eS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEluIG5vIGV2ZW50IHNoYWxsIGVpdGhlciBQYXJ0eSBiZSBsaWFibGUgdG8gdGhlIG90aGVyIGZvciBhbnkgaW5kaXJlY3QsIGluY2lkZW50YWwsIHB1bml0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4ZW1wbGFyeSwgc3BlY2lhbCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIG9yIGRhbWFnZXMgZm9yIGxvc3Mgb2YgcHJvZml0cywgcmV2ZW51ZSwgd2hldGhlciBpbiBhblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiBpbiBjb250cmFjdCBvciB0b3J0LCBvciBvdGhlcndpc2UgKGNvbGxlY3RpdmVseSByZWZlcnJlZCB0byBhcyDigJxJbmRpcmVjdCBMb3NzZXPigJ0pIGV2ZW4gaWZcclxuICAgICAgICAgICAgICAgICAgICBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBFYWNoIFBhcnR54oCZcyBsaWFiaWxpdHkgYXJpc2luZyBvdXQgb2Ygb3IgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBicmVhY2ggb2YgYW55IGRpcmVjdCBhbmQgYWN0dWFsXHJcbiAgICAgICAgICAgICAgICAgICAgbGlhYmlsaXRpZXMsIGNvc3RzLCBsb3NzZXMsIGRhbWFnZXMsIHN1aXRzLCBwcm9jZWVkaW5ncywgY29zdHMsIGV4cGVuc2VzIG9yIGxpYWJpbGl0aWVzIHN1ZmZlcmVkIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jdXJyZWQgZHVlIHRvIHJlc3VsdGluZyBkdWUgdG8gY2xhaW1zIGZvciBicmVhY2ggb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGEgUGFydHkgb3IgdGhpcmRcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0eSwgYnJlYWNoIG9mIGNvbmZpZGVudGlhbGl0eSBvYmxpZ2F0aW9uLCBkYXRhIGJyZWFjaCwgYnJlYWNoIG9mIGRhdGEgcHJpdmFjeSwgZnJhdWQsIHdpbGxmdWxcclxuICAgICAgICAgICAgICAgICAgICBuZWdsaWdlbmNlLCBncm9zcyBtaXNjb25kdWN0IG9yIGJyZWFjaCBvZiBhcHBsaWNhYmxlIGxhd3Mgc2hhbGwgaW4gbm8gZXZlbnQgZXhjZWVkIHRoZSBhbm51YWwgdG90YWxcclxuICAgICAgICAgICAgICAgICAgICBwdXJjaGFzZSBwcmljZSBwYWlkIHB1cnN1YW50IHRvIGdyYW50IG9mIGFjY2VzcyBhbmQgdXNhZ2Ugb2YgdGhlIFNlcnZpY2VzL1NvZnR3YXJlIGJ5IHRoZSBDdXN0b21lci5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE3LiBGb3JjZSBNYWpldXJlIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlIFBhcnRpZXMgaXMgbm90IHJlc3BvbnNpYmxlIG5vciBsaWFibGUgZm9yIGFueSBkZWxheXMgb3IgZmFpbHVyZXMgaW4gcGVyZm9ybWFuY2UgZnJvbSBhbnlcclxuICAgICAgICAgICAgICAgICAgICBjYXVzZSBiZXlvbmQgaXRzIGNvbnRyb2wsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIGFjdHMgb2YgR29kLCBjaGFuZ2VzIHRvIGxhdyBvciByZWd1bGF0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBlbWJhcmdvZXMsIHdhciwgdGVycm9yaXN0IGFjdHMsIGFjdHMgb3Igb21pc3Npb25zIG9mIHRoaXJkIHBhcnR5IHRlY2hub2xvZ3kgcHJvdmlkZXJzLCByaW90cywgZmlyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZWFydGhxdWFrZXMsIGZsb29kcywgcG93ZXIgYmxhY2tvdXRzLCBzdHJpa2VzLCB3ZWF0aGVyIGNvbmRpdGlvbnMsIHBhbmRlbWljLCBlcGlkZW1pYywgZ292ZXJubWVudFxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2tkb3ducyBvciBhbnkgb3RoZXIgdW5mb3Jlc2VlYWJsZSBldmVudCBiZXlvbmQgaXRzIGNvbnRyb2wgKGhlcmVpbmFmdGVyIGNvbGxlY3RpdmVseSByZWZlcnJlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgIGFzIOKAnEZvcmNlIE1hamV1cmUgRXZlbnTigJ0pLiBVcG9uIG9jY3VycmVuY2Ugb2YgYW55IEZvcmNlIE1hamV1cmUgRXZlbnQsIGVpdGhlciBQYXJ0eSBzaGFsbCBnaXZlXHJcbiAgICAgICAgICAgICAgICAgICAgbm90aWNlIHRvIHRoZSBvdGhlciBwYXJ0eSBvZiBpdHMgaW5hYmlsaXR5IHRvIHBlcmZvcm0gb3Igb2YgZGVsYXkgaW4gY29tcGxldGluZyBpdHMgb2JsaWdhdGlvbnMgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgbXVzdCBhY3QgZGlsaWdlbnRseSB0byByZW1lZHkgdGhlIGNhdXNlIGFuZCByZXN0b3JlIHBlcmZvcm1hbmNlLCB0byB0aGUgZXh0ZW50IHBvc3NpYmxlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgV2hlcmUgRm9yY2UtTWFqZXVyZSBFdmVudCBjb250aW51ZXMgZm9yIGEgcGVyaW9kIG1vcmUgdGhhbiBTaXh0eSAoNjApIGNvbnRpbnVvdXMgZGF5cywgdGhlbiB0aGVcclxuICAgICAgICAgICAgICAgICAgICBlZmZlY3RlZCBQYXJ0eSBzaGFsbCBoYXZlIHRoZSByaWdodCB0byBpbW1lZGlhdGVseSB0ZXJtaW5hdGUgdGhlc2UgU2FhUyBUZXJtcyBBZ3JlZW1lbnQgYnkgcHJvdmlkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgYSB3cml0dGVuIG5vdGljZS7CoDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE4LiBNYWludGVuYW5jZSBTZXJ2aWNlcyA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWIgbXktMVwiPkR1cmluZyB0aGUgVGVybSzigK9UYW5nbyBFeWUgd2lsbCBwcm92aWRlIHRoZSBNYWludGVuYW5jZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGhcclxuICAgICAgICAgICAgICAgIHRoZSBTZXJ2aWNlIExldmVscyBkdXJpbmcgdGhlIFN1cHBvcnQgSG91cnMgcHJvdmlkZWQgdGhhdDwvZGl2PlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBtdC0yIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBZb3UgcHJvdmlkZSBNYWludGVuYW5jZSBTZXJ2aWNlcyB3aXRoIG5vdGljZSBmb3IgYXBwbGljYWJsZSBNYWludGVuYW5jZSBTZXJ2aWNlcyBpbiBhY2NvcmRhbmNlIHdpdGhcclxuICAgICAgICAgICAgICAgICAgICBhbnkgYXBwbGljYWJsZSBzeXN0ZW0gYW5kIHByb2Nlc3NlcyBhcyBzZXQgb3V0IG9uIHRoZSB1bmRlci1Bbm5leHVyZSBBIHRvIHRoZXNlIFNhYVMgVGVybXM7IGFuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIHN1YiBteS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlcmUgcmVxdWlyZWQsIFlvdSB3aWxsIGFzc2lzdCB3aXRoIGludmVzdGlnYXRpbmcgYW5kIGFzY2VydGFpbmluZyB0aGUgY2F1c2Ugb2YgdGhlIGZhdWx0IGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIHRvIFRhbmdvIEV5ZSBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSBmYXVsdCAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHdoYXQgWW91IG9yIHlvdXIgcGVyc29ubmVsIGhhdmUgZG9uZSBpbiByZWxhdGlvbiB0byB0aGUgZmF1bHQpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBteS03XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlcm1zaGVhZGluZ1wiPjE5LiBNaXNjZWxsYW5lb3VzLiA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBUaGVzZSBTYWFTIFRlcm1zIGlzIGRyYXduIHVwIGluIEVuZ2xpc2gsIHdoaWNoIGxhbmd1YWdlIHNoYWxsIGdvdmVybiBhbGwgZG9jdW1lbnRzLCBub3RpY2VzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lZXRpbmdzLCBwcm9jZWVkaW5ncyBhbmQgcHJvY2Vzc2VzIHJlbGF0aXZlIHRoZXJldG8uXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgaW4gdGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBiZSBkZWVtZWQgdG8gY29uc3RpdHV0ZSBhIGpvaW50IHZlbnR1cmUsIGFnZW5jeSwgcGFydG5lcnNoaXAsXHJcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3QgZ3JvdXBpbmcgb3IgYW55IG90aGVyIGtpbmQgb2YgZm9ybWFsIGJ1c2luZXNzIGdyb3VwaW5nIG9yIGVudGl0eSBiZXR3ZWVuIHRoZSBQYXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWQgZnctc2VtaWJvbGQgc3ViIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICBObyByaWdodHMgb3Igb2JsaWdhdGlvbnMgb2YgdGhlIFBhcnRpZXMgYXJpc2luZyBmcm9tIHRoZXNlIFNhYVMgVGVybXMgbWF5IGJlIGFzc2lnbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Yi1jb250cmFjdGVkLCBvciB0cmFuc2ZlcnJlZCwgaW4gd2hvbGUgb3IgaW4gcGFydCwgdG8gYW55IHRoaXJkIHBhcnR5IHdpdGhvdXQgdGhlIG90aGVyIHBhcnR54oCZc1xyXG4gICAgICAgICAgICAgICAgICAgIHByaW9yIHdyaXR0ZW4gYXBwcm92YWwuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBzdWIgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEdvdmVybmluZyBMYXcsIEp1cmlzZGljdGlvbi4gVGhlc2UgU2FhUyBUZXJtcyBzaGFsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiBJbmRpYSwgYW5kIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgIFBhcnRpZXMgaGVyZWJ5IGFncmVlIHRvIGlycmV2b2NhYmx5IHN1Ym1pdCB0byB0aGUgZXhjbHVzaXZlIGp1cmlzZGljdGlvbiBvZiB0aGUgY291cnRzIG9mIE5ldyBEZWxoaVxyXG4gICAgICAgICAgICAgICAgICAgIGluIHJlc3BlY3Qgb2YgYWxsIGRpc3B1dGVzIGFyaXNpbmcgb3V0IG9mIHRoZXNlIFNhYVMgVGVybXMuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvdyBnLTAgbWItMCBiZy10ZXJtc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZCBmb3JtLWNoZWNrLWlubGluZSBcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHJlcXVpcmVkIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZXRlcm1zKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctYm9sZCB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0c2l6ZSBtdC0zXCI+SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMuPC9zcGFuPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhdGVybXNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IG1zLTE1IG1lLTUgdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiZW50ZXJwcmlzZWFjdGl2YXRlKClcIj5cclxuICAgICAgICAgICAgU2lnbiBVcFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKm5nSWY9XCJzaG93dmFsdWVcIj5cclxuXHQ8ZGl2IGNsYXNzPVwicG9wdXBcIj5cclxuXHRcdDxoMSBjbGFzcz1cImEtby1pXCI+VmVyaWZpY2F0aW9uIENvZGU8L2gxPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cInN1Yi1hb2lcIj5BbiBPVFAgaGFzIGJlZW4gc2VudCB0byB5b3VyIG1haWwuIFBsZWFzZSBjaGVjayAmIHN1Ym1pdC48L2g1PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdHAtY29udGFpbmVyIGQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3RwLWlucHV0IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLW90cC1pbnB1dCAjbmdPdHBJbnB1dCAob25JbnB1dENoYW5nZSk9XCJvbk90cENoYW5nZSgkZXZlbnQpXCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIGNsYXNzPVwidmVyaWZpY2F0aW9uLWNvZGVcIiBwbGFjZWhvbGRlcj1cIjBcIiBcclxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInsgbGVuZ3RoOiA0ICxhbGxvd051bWJlcnNPbmx5OnRydWV9XCI+PC9uZy1vdHAtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnZhbGlkT3RwXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LWRhbmdlclwiID5cclxuICAgICAgICAgICAgSW52YWxpZCBPVFAgIVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJyZXNlbmRcIiBjbGFzcz1cInNtYWxsX2xnIGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2VuZE9UUCgpXCI+PGI+UmVzZW5kIE9UUDwvYj48L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIXJlc2VuZFwiIGNsYXNzPVwic21hbGxfbGJsIFwiID5SZXNlbmQgT1RQICgge3tjb3VudGVyXHJcbiAgICAgICAgICAgICB9fSApPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS01IHctMTAwIHRleHQtbm93cmFwXCIgKGNsaWNrKT1cIm90cHN1Ym1pdCgpXCI+XHJcbiAgICAgICAgICAgICAgICBTdWJtaXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
@@ -56,9 +56,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
56
56
|
TangoAuthRoutingModule,
|
57
57
|
NgOtpInputModule,
|
58
58
|
ReactiveFormsModule,
|
59
|
-
FormsModule
|
59
|
+
FormsModule,
|
60
60
|
],
|
61
61
|
schemas: [NO_ERRORS_SCHEMA]
|
62
62
|
}]
|
63
63
|
}] });
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvdGFuZ28tYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDaEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDbEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQzs7QUF3QnJILE1BQU0sT0FBTyxlQUFlO3VHQUFmLGVBQWU7d0dBQWYsZUFBZSxpQkFyQnhCLGtCQUFrQjtZQUNsQix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLGdDQUFnQztZQUNoQyxjQUFjO1lBQ2QsY0FBYztZQUNkLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLHNCQUFzQixhQUd0QixZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsV0FBVzt3R0FLRixlQUFlLFlBVHhCLFlBQVk7WUFDWixzQkFBc0I7WUFDdEIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixXQUFXOzsyRkFLRixlQUFlO2tCQXZCM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsZ0NBQWdDO3dCQUNoQyxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixXQUFXO3FCQUVaO29CQUNELE9BQU8sRUFBQyxDQUFDLGdCQUFnQixDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5PX0VSUk9SU19TQ0hFTUEsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBUYW5nb0F1dGhSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi90YW5nby1hdXRoLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgVGFuZ29BdXRoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgvdGFuZ28tYXV0aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYW5nb0F1dGhMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLWxvZ2luL3RhbmdvLWF1dGgtbG9naW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFuZ29BdXRoU2lnbnVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3RhbmdvLWF1dGgtc2lnbnVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhbmdvQXV0aEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkL3RhbmdvLWF1dGgtZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vZGFsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL21vZGFsLWNvbnRlbnQvbW9kYWwtY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdGVwMUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAxL3N0ZXAxLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXAyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3N0ZXAvc3RlcDIvc3RlcDIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RlcDNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMy9zdGVwMy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC92ZXJ0aWNhbC92ZXJ0aWNhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ090cElucHV0TW9kdWxlIH0gZnJvbSAnbmctb3RwLWlucHV0JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENhbGVuZGx5TW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9jYWxlbmRseS1tb2RhbC9jYWxlbmRseS1tb2RhbC5jb21wb25lbnQnO1xyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgVGFuZ29BdXRoQ29tcG9uZW50LFxyXG4gICAgVGFuZ29BdXRoTG9naW5Db21wb25lbnQsXHJcbiAgICBUYW5nb0F1dGhTaWdudXBDb21wb25lbnQsXHJcbiAgICBUYW5nb0F1dGhGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcclxuICAgIFN0ZXAxQ29tcG9uZW50LFxyXG4gICAgU3RlcDJDb21wb25lbnQsXHJcbiAgICBTdGVwM0NvbXBvbmVudCxcclxuICAgIFZlcnRpY2FsQ29tcG9uZW50LFxyXG4gICAgTW9kYWxDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQ2FsZW5kbHlNb2RhbENvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRhbmdvQXV0aFJvdXRpbmdNb2R1bGUsXHJcbiAgICBOZ090cElucHV0TW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgXHJcbiAgXSxcclxuICBzY2hlbWFzOltOT19FUlJPUlNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29BdXRoTW9kdWxlIHsgfVxyXG4iXX0=
|