PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHRlbXBsYXRlLnBocAoJIwoJIyBBdXRob3I6IAkJRGVuaXMgUm95CgkjIERhdGU6CQkJMjAwNS0wNi0xNgoJIwoJIyBEZXNjcmlwdGlvbjogVHlwZSB5b3VyIHBhZ2UgY29tbWVudHMgaGVyZSAtIHRoZXNlIGFyZSBub3Qgc2VudCB0byB0aGUgYnJvd3NlcgoJIwoJIwoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiRWNsaXBzZSBDb21tdW5pdHkiOwoJJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlIHJlc291cmNlcywgY291cnNlcywgYm9va3MsIGV2ZW50cywgcGx1Zy1pbnMiOwoJJHBhZ2VBdXRob3IJCT0gInN1c2FuIGl3YWkiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCgkjICROYXYtPmFkZE5hdlNlcGFyYXRvcigiTXkgUGFnZSBMaW5rcyIsIAkiZG93bmxvYWRzLnBocCIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIsIDEpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDEpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkvLyBUaGlzIGZpbGUgaXMgbGlua2VkIHRvIGZyb20gbG90cyBvZiBkaWZmZXJlbnQgcGxhY2VzLgoJLy8gVXNlIGFic29sdXRlIHBhdGhzIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBhY3R1YWxseSB0ZXN0CgkvLyB0aGF0IHRoZSBmaWxlIHJlbmRlcnMgcHJvcGVybHkgKGkuZS4gdGVzdGluZyB1c2luZykgIi9pbmRleC5waHAiLAoJLy8gYW5kICIvaG9tZS9pbmRleC5waHAiIGJvdGggd29yay4KCSRyb290ID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXTsKCQkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InRlbXBsYXRlLmNzcyIgbWVkaWE9InNjcmVlbiIgLz4KCTxkaXYgY2xhc3M9ImNvbW11bml0eVJlYWxFc3RhdGUiPgoJCTxoMj5XZWxjb21lIHRvIHRoZSBFY2xpcHNlIENvbW11bml0eSBQYWdlPC9oMj4KCQk8ZGl2IGNsYXNzPSJuZXdzIj4KCQkJPGRpdiBjbGFzcz0iYm94Ij4KCQkJPG9sPgoJCQkJPGxpPgoJCQkJCTxkaXYgY2xhc3M9ImJveEhlYWRlciI+V2hhdCdzIE5ldzwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImJveEJvZHkiPgoJCQkJCQk8dWwgY2xhc3M9Im5ld3NJdGVtcyI+CgkJCQkJCQk8bGk+PGRpdiBjbGFzcz0ibmV3c0l0ZW0iPjxzcGFuIGNsYXNzPSJuZXdzVGl0bGUiPlRoZSBFY2xpcHNlIEZvdW5kYXRpb26ScyBDb29yZGluYXRlZCBLaWNrb2ZmIDwvc3Bhbj48L2Rpdj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzRGF0ZSI+cG9zdGVkIGJ5IG5nZXJ2YWlzIDIzIG1pbnV0ZXMgYWdvLjwvZGl2PgoJCQkJCQkJCTxkaXYgY2xhc3M9Im5ld3NCb2R5Ij4KCQkJCQkJCQkJQW5ub3VuY2luZyB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uJ3MgQ29vcmRpbmF0ZWQgS2lja29mZiwgdGhlIGV4Y2l0ZW1lbnQgc3Vycm91bmRpbmcgdGhlIGJpZ2dlc3QgRWNsaXBzZSByZWxlYXNlIGhhcyBvbmx5IGdvdHRlbiBiaWdnZXIuIExldHMgaGVhciBpdCBmb3IgQ2FsbGlzdG8hLiAKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvbGk+CgkJCQkJCQk8bGk+PGRpdiBjbGFzcz0ibmV3c0l0ZW0iPjxzcGFuIGNsYXNzPSJuZXdzVGl0bGUiPkNoZWNrIG91dCB0aGlzIG5ldyBSQ1AgYXBwPC9zcGFuPjwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzRGF0ZSI+cG9zdGVkIGJ5IG5nZXJ2YWlzIDEgZGF5IGFnby48L2Rpdj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzQm9keSI+CgkJCQkJCQkJCUkndmUgYWRkZWQgYSBuZXcgUkNQIGFwcGxpY2F0aW9uIHRvIHRoZSBSQ1AgQ29tbWVyY2lhbCBQbHVnaW4gUmVwb3NpdG9yeS4gSGVyZSdzIGEgYnJpZWYgZGVzY3JpcHRpb24uPGJyIC8+CgkJCQkJCQkJCTxkaXYgY2xhc3M9Im5ld3NRdW90ZSI+RXRpYW0gdmVsIG5pc2kgYXQgbWFnbmEgcmhvbmN1cyBub251bW15LiBEdWlzIGNvbmd1ZSBmZXJtZW50dW0gdG9ydG9yLiBJbiBpZCBkdWkgZXQgbnVsbGEgYWxpcXVldCB2ZW5lbmF0aXMuIFNlZCBudWxsYSBkaWFtLCBlZ2VzdGFzIHNpdCBhbWV0LCBiaWJlbmR1bSB2ZWwsIHRyaXN0aXF1ZSBhYywgdG9ydG9yLiBDdXJhYml0dXIgbmlzbC4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIFBoYXNlbGx1cyBtZXR1cyBwZWRlLCBub251bW15IGV0LCBjb252YWxsaXMgZWdldCwgYWxpcXVhbSBldSwgdG9ydG9yLiBOdWxsYSBzY2VsZXJpc3F1ZSBwcmV0aXVtIG1ldHVzLiBDcmFzIG51bGxhIHR1cnBpcywgaW50ZXJkdW0gdml0YWUsIGV1aXNtb2QgdmVsLCB0aW5jaWR1bnQgYXQsIGFudGUuIFN1c3BlbmRpc3NlIG5lYyBvcmNpIG5lYyBudW5jIHVsdHJpY2VzIGVsZW1lbnR1bS4gTWFlY2VuYXMgZmFjaWxpc2lzIHRlbXBvciBtYWduYS4gTnVsbGEgbGVjdHVzLiBRdWlzcXVlIGVuaW0gbnVuYywgcG9ydHRpdG9yIGlkLCBmZXJtZW50dW0gaWQsIG1hdHRpcyBhYywgYXVndWUuIFF1aXNxdWUgbWF1cmlzLjwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9saT4KCQkJCQkJCTxsaT48ZGl2IGNsYXNzPSJuZXdzSXRlbSI+PHNwYW4gY2xhc3M9Im5ld3NUaXRsZSI+R2VuZXJpYyBJdGVtIEFkZGVkPC9zcGFuPjwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzRGF0ZSI+cG9zdGVkIGJ5IG5nZXJ2YWlzIFggdGltZSBhZ28uPC9kaXY+CgkJCQkJCQkJPGRpdiBjbGFzcz0ibmV3c0JvZHkiPgoJCQkJCQkJCQlMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dWVyIGFkaXBpc2NpbmcgZWxpdC4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvbGk+CgkJCQkJCQk8bGk+PGRpdiBjbGFzcz0ibmV3c0l0ZW0iPjxzcGFuIGNsYXNzPSJuZXdzVGl0bGUiPkV4Y2l0aW5nIG5ldyBwbHVnaW4gYW5ub3VjZWQhPC9zcGFuPjwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzRGF0ZSI+cG9zdGVkIGJ5IG5nZXJ2YWlzIFggdGltZSBhZ28uPC9kaXY+CgkJCQkJCQkJPGRpdiBjbGFzcz0ibmV3c0JvZHkiPgoJCQkJCQkJCQlOdWxsYSBzY2VsZXJpc3F1ZSBwcmV0aXVtIG1ldHVzLiBDcmFzIG51bGxhIHR1cnBpcywgaW50ZXJkdW0gdml0YWUsIGV1aXNtb2QgdmVsLCB0aW5jaWR1bnQgYXQsIGFudGUuIFN1c3BlbmRpc3NlIG5lYyBvcmNpIG5lYyBudW5jIHVsdHJpY2VzIGVsZW1lbnR1bS4gTWFlY2VuYXMgZmFjaWxpc2lzIHRlbXBvciBtYWduYS4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvbGk+CgkJCQkJCQk8bGk+PGRpdiBjbGFzcz0ibmV3c0l0ZW0iPjxzcGFuIGNsYXNzPSJuZXdzVGl0bGUiPkVjbGlwc2VDb24gMjAwNyBBbm5vdW5jZWQ8L3NwYW4+PC9kaXY+CgkJCQkJCQkJCTxkaXYgY2xhc3M9Im5ld3NEYXRlIj5wb3N0ZWQgYnkgbmdlcnZhaXMgWCB0aW1lIGFnby48L2Rpdj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzQm9keSI+CgkJCQkJCQkJCUR1aXMgY29uZ3VlIGZlcm1lbnR1bSB0b3J0b3IuIEluIGlkIGR1aSBldCBudWxsYSBhbGlxdWV0IHZlbmVuYXRpcy4gU2VkIG51bGxhIGRpYW0sIGVnZXN0YXMgc2l0IGFtZXQsIGJpYmVuZHVtIHZlbCwgdHJpc3RpcXVlIGFjLCB0b3J0b3IuIEN1cmFiaXR1ciBuaXNsLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dWVyIGFkaXBpc2NpbmcgZWxpdC4gUGhhc2VsbHVzIG1ldHVzIHBlZGUsIG5vbnVtbXkgZXQsIGNvbnZhbGxpcyBlZ2V0LCBhbGlxdWFtIGV1LCB0b3J0b3IuCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2xpPgoJCQkJCQk8L3VsPgoJCQkJCQk8ZGl2IGNsYXNzPSJuZXdzTW9yZSI+PGEgaHJlZj0ic3VibWl0bmV3cy5waHAiPlN1Ym1pdCBDb250ZW50PC9hPiAtIDxhIGhyZWY9IndoYXRzbmV3LnBocCI+UmVhZCBNb3JlPC9hPjwvZGl2PgkKCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgkJCTwvb2w+CgkJCTwvZGl2PgoJCTwvZGl2Pgo8IS0tPgkJPGRpdiBjbGFzcz0ic3BvdGxpZ2h0Ij4KCQkJPGRpdiBjbGFzcz0iYm94Ij4KCQkJCTxvbD4KCQkJCQk8bGk+CgkJCQkJCTxhIGhyZWY9ImV2ZW50cy8iPgoJCQkJCQk8ZGl2IGNsYXNzPSJib3hIZWFkZXIiPlNwb3RMaWdodDwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJib3hCb2R5Ij5GZWF0dXJlIE5ldyBhbmQgRXhjaXRpbmcgUGx1Z2lucyAvIFJDUCBhcHBzLCBiYXNpY2FsbHkgYW55dGhpbmcgaGVyZSB0aGF0IHdpbGwgY2hhbmdlIHdlZWtseS48L2Rpdj4KCQkJCQkJPC9hPiAKCQkJCQk8L2xpPgoJCQkJPC9vbD4KCQkJPC9kaXY+CgkJPC9kaXY+PC8hLS0+CgkJPGRpdiBjbGFzcz0iY2F0ZWdvcnlMZWZ0Ij4KCQkJPGRpdiBjbGFzcz0iYm94Ij4KCQkJPG9sPgoJCQkJPGxpPgoJCQkJCTxhIGhyZWY9ImV2ZW50cy8iPgoJCQkJCTxkaXYgY2xhc3M9ImJveEhlYWRlciI+RXZlbnRzPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iYm94Qm9keSI+Q2hlY2sgb3V0IGEgY29uZmVyZW5jZSBvciBnYXRoZXJpbmcgbmVhciB5b3UuPC9kaXY+CgkJCQkJPC9hPiAKCQkJCTwvbGk+CgkJCQk8bGk+CgkJCQkJPGEgaHJlZj0idHJhaW5pbmcvIj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hIZWFkZXIiPlRyYWluaW5nPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iYm94Qm9keSI+Qm9va3MsIE9ubGluZSBDb3Vyc2VzLCBXZWJpbmFycywgYW5kIFR1dG9yaWFscyA8L2Rpdj4KCQkJCQk8L2E+CgkJCQk8L2xpPgoJCQkJPGxpPgoJCQkJCTxhIGhyZWY9ImV2ZW50cy8iPgoJCQkJCTxkaXYgY2xhc3M9ImJveEhlYWRlciI+RXZhbmdlbGlzbTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImJveEJvZHkiPlNlZSB3aGF0IG91ciBFY2xpcHNlIEV2YW5nZWxpc3QgV2F5bmUgQmVhdG9uIGlzIHRhbGtpbmcgYWJvdXQuPC9kaXY+CgkJCQkJPC9hPiAKCQkJCTwvbGk+CgkJCQk8bGk+CgkJCQkJPGEgaHJlZj0idHJhaW5pbmcvIj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hIZWFkZXIiPkVjbGlwc2UgUHJvamVjdCBSZXNvdXJjZXM8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hCb2R5Ij5NYWlsaW5nIExpc3RzLCBOZXdzZ3JvdXBzPC9kaXY+CgkJCQkJPC9hPgoJCQkJPC9saT4KCQkJPC9vbD4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0iY2F0ZWdvcnlSaWdodCI+CgkJCTxkaXYgY2xhc3M9ImJveCI+CgkJCTxvbD4KCQkJCTxsaT4KCQkJCQk8YSBocmVmPSJldmVudHMvIj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hIZWFkZXIiPkVjbGlwc2UgUG9ydGFsczwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImJveEJvZHkiPkNoZWNrIG91dCB0aGUgbWFueSBjb21tdW5pdHkgc2l0ZXMgYW5kIGJsb2dzIGFyb3VuZCB0aGUgd2ViLjwvZGl2PgoJCQkJCTwvYT4gCgkJCQk8L2xpPgoJCQkJPGxpPgoJCQkJCTxhIGhyZWY9InRyYWluaW5nLyI+CgkJCQkJPGRpdiBjbGFzcz0iYm94SGVhZGVyIj5Db25zdWx0aW5nICYgU2VydmljZXM8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hCb2R5Ij5Db25zdWx0aW5nLCBkZXZlbG9wbWVudCwgYW5kIHRyYWluaW5nIHNlcnZpY2VzPC9kaXY+CgkJCQkJPC9hPgoJCQkJPC9saT4KCQkJCTxsaT4KCQkJCQk8YSBocmVmPSJldmVudHMvIj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hIZWFkZXIiPlBsdWdpbnM8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJib3hCb2R5Ij5DaGVjayBvdXQgdGhlIG1hbnkgRWNsaXBzZS1iYXNlZCBwbHVnaW5zLjwvZGl2PgoJCQkJCTwvYT4gCgkJCQk8L2xpPgoJCQkJPGxpPgoJCQkJCTxhIGhyZWY9InRyYWluaW5nLyI+CgkJCQkJPGRpdiBjbGFzcz0iYm94SGVhZGVyIj5SQ1AgQ2F0YWxvZzwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImJveEJvZHkiPk9wZW4gU291cmNlLCBhbmQgQ29tbWVyY2lhbCBSaWNoIENsaWVudCBQbGF0Zm9ybSBhcHBsaWNhdGlvbnM8L2Rpdj4KCQkJCQk8L2E+CgkJCQk8L2xpPgoJCQk8L29sPgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgoJCQkJCkVPSFRNTDsKCgoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK