PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPlBhcnNpbmcgdGhlIGZpbGU8L3RpdGxlPjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjEuMiI+PGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InByZXZpb3VzIiBocmVmPSJhcjAxczAyLmh0bWwiIHRpdGxlPSJEYXRhIFR5cGVzIj48bGluayByZWw9Im5leHQiIGhyZWY9ImFyMDFzMDQuaHRtbCIgdGl0bGU9IlJldHJpZXZpbmcgRWxlbWVudCBDb250ZW50Ij48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjxkaXYgY2xhc3M9Im5hdmhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciI+PHRyPjx0aCBjb2xzcGFuPSIzIiBhbGlnbj0iY2VudGVyIj5QYXJzaW5nIHRoZSBmaWxlPC90aD48L3RyPjx0cj48dGQgd2lkdGg9IjIwJSIgYWxpZ249ImxlZnQiPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iYXIwMXMwMi5odG1sIj5QcmV2PC9hPqA8L3RkPjx0aCB3aWR0aD0iNjAlIiBhbGlnbj0iY2VudGVyIj6gPC90aD48dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0Ij6gPGEgYWNjZXNza2V5PSJuIiBocmVmPSJhcjAxczA0Lmh0bWwiPk5leHQ8L2E+PC90ZD48L3RyPjwvdGFibGU+PGhyPjwvZGl2PjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBuYW1lPSJ4bWx0dXRvcmlhbHBhcnNpbmciPjwvYT5QYXJzaW5nIHRoZSBmaWxlPC9oMj48L2Rpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjxwPjxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImZpbGVwYXJzaW5nIj48L2E+ClBhcnNpbmcgdGhlIGZpbGUgcmVxdWlyZXMgb25seSB0aGUgbmFtZSBvZiB0aGUgZmlsZSBhbmQgYSBzaW5nbGUKICAgICAgZnVuY3Rpb24gY2FsbCwgcGx1cyBlcnJvciBjaGVja2luZy4gRnVsbCBjb2RlOiA8YSBocmVmPSJhcGMuaHRtbCIgdGl0bGU9IkMuoENvZGUgZm9yIEtleXdvcmQgRXhhbXBsZSI+QXBwZW5kaXigQywgPGk+Q29kZSBmb3IgS2V5d29yZCBFeGFtcGxlPC9pPjwvYT48L3A+PHA+CiAgICA8L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgogICAgICAgIDxhIG5hbWU9ImRlY2xhcmVkb2MiPjwvYT48aW1nIHNyYz0iaW1hZ2VzL2NhbGxvdXRzLzEucG5nIiBhbHQ9IjEiIGJvcmRlcj0iMCI+IHhtbERvY1B0ciBkb2M7Cgk8YSBuYW1lPSJkZWNsYXJlbm9kZSI+PC9hPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvMi5wbmciIGFsdD0iMiIgYm9yZGVyPSIwIj4geG1sTm9kZVB0ciBjdXI7CgoJPGEgbmFtZT0icGFyc2VmaWxlIj48L2E+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy8zLnBuZyIgYWx0PSIzIiBib3JkZXI9IjAiPiBkb2MgPSB4bWxQYXJzZUZpbGUoZG9jbmFtZSk7CgkKCTxhIG5hbWU9ImNoZWNrcGFyc2VlcnJvciI+PC9hPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvNC5wbmciIGFsdD0iNCIgYm9yZGVyPSIwIj4gaWYgKGRvYyA9PSBOVUxMICkgewoJCWZwcmludGYoc3RkZXJyLCJEb2N1bWVudCBub3QgcGFyc2VkIHN1Y2Nlc3NmdWxseS4gXG4iKTsKCQlyZXR1cm47Cgl9CgoJPGEgbmFtZT0iZ2V0cm9vdGVsZW1lbnQiPjwvYT48aW1nIHNyYz0iaW1hZ2VzL2NhbGxvdXRzLzUucG5nIiBhbHQ9IjUiIGJvcmRlcj0iMCI+IGN1ciA9IHhtbERvY0dldFJvb3RFbGVtZW50KGRvYyk7CgkKCTxhIG5hbWU9ImNoZWNrZW1wdHllcnJvciI+PC9hPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvNi5wbmciIGFsdD0iNiIgYm9yZGVyPSIwIj4gaWYgKGN1ciA9PSBOVUxMKSB7CgkJZnByaW50ZihzdGRlcnIsImVtcHR5IGRvY3VtZW50XG4iKTsKCQl4bWxGcmVlRG9jKGRvYyk7CgkJcmV0dXJuOwoJfQoJCgk8YSBuYW1lPSJjaGVja3Jvb3R0eXBlIj48L2E+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy83LnBuZyIgYWx0PSI3IiBib3JkZXI9IjAiPiBpZiAoeG1sU3RyY21wKGN1ci0mZ3Q7bmFtZSwgKGNvbnN0IHhtbENoYXIgKikgInN0b3J5IikpIHsKCQlmcHJpbnRmKHN0ZGVyciwiZG9jdW1lbnQgb2YgdGhlIHdyb25nIHR5cGUsIHJvb3Qgbm9kZSAhPSBzdG9yeSIpOwoJCXhtbEZyZWVEb2MoZG9jKTsKCQlyZXR1cm47Cgl9CgogICAgPC9wcmU+PHA+CiAgICAgIDwvcD48ZGl2IGNsYXNzPSJjYWxsb3V0bGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgc3VtbWFyeT0iQ2FsbG91dCBsaXN0Ij48dHI+PHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48YSBocmVmPSIjZGVjbGFyZWRvYyI+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy8xLnBuZyIgYWx0PSIxIiBib3JkZXI9IjAiPjwvYT4gPC90ZD48dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD5EZWNsYXJlIHRoZSBwb2ludGVyIHRoYXQgd2lsbCBwb2ludCB0byB5b3VyIHBhcnNlZCBkb2N1bWVudC48L3A+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxhIGhyZWY9IiNkZWNsYXJlbm9kZSI+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy8yLnBuZyIgYWx0PSIyIiBib3JkZXI9IjAiPjwvYT4gPC90ZD48dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD5EZWNsYXJlIGEgbm9kZSBwb2ludGVyICh5b3UnbGwgbmVlZCB0aGlzIGluIG9yZGVyIHRvCgkgIGludGVyYWN0IHdpdGggaW5kaXZpZHVhbCBub2RlcykuPC9wPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48YSBocmVmPSIjY2hlY2twYXJzZWVycm9yIj48aW1nIHNyYz0iaW1hZ2VzL2NhbGxvdXRzLzQucG5nIiBhbHQ9IjQiIGJvcmRlcj0iMCI+PC9hPiA8L3RkPjx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPkNoZWNrIHRvIHNlZSB0aGF0IHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4gSWYgaXQKCSAgICB3YXMgbm90LCA8c3BhbiBjbGFzcz0iYXBwbGljYXRpb24iPmxpYnhtbDwvc3Bhbj4gd2lsbCBhdCB0aGlzIHBvaW50CgkgICAgcmVnaXN0ZXIgYW4gZXJyb3IgYW5kIHN0b3AuIAoJICAgIDwvcD48ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PHRhYmxlIGJvcmRlcj0iMCIgc3VtbWFyeT0iTm90ZSI+PHRyPjx0ZCByb3dzcGFuPSIyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjI1Ij48aW1nIGFsdD0iW05vdGVdIiBzcmM9ImltYWdlcy9ub3RlLnBuZyI+PC90ZD48dGggYWxpZ249ImxlZnQiPk5vdGU8L3RoPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxwPjxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImlkMjUyNTMzNyI+PC9hPgpPbmUgY29tbW9uIGV4YW1wbGUgb2YgYW4gZXJyb3IgYXQgdGhpcyBwb2ludCBpcyBpbXByb3BlcgoJICAgIGhhbmRsaW5nIG9mIGVuY29kaW5nLiBUaGUgPHNwYW4gY2xhc3M9ImFjcm9ueW0iPlhNTDwvc3Bhbj4gc3RhbmRhcmQgcmVxdWlyZXMKCSAgICBkb2N1bWVudHMgc3RvcmVkIHdpdGggYW4gZW5jb2Rpbmcgb3RoZXIgdGhhbiBVVEYtOCBvciBVVEYtMTYgdG8KCSAgICBjb250YWluIGFuIGV4cGxpY2l0IGRlY2xhcmF0aW9uIG9mIHRoZWlyIGVuY29kaW5nLiBJZiB0aGUKCSAgICBkZWNsYXJhdGlvbiBpcyB0aGVyZSwgPHNwYW4gY2xhc3M9ImFwcGxpY2F0aW9uIj5saWJ4bWw8L3NwYW4+IHdpbGwKCSAgICBhdXRvbWF0aWNhbGx5IHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBjb252ZXJzaW9uIHRvIFVURi04IGZvcgoJCXlvdS4gTW9yZSBpbmZvcm1hdGlvbiBvbiA8c3BhbiBjbGFzcz0iYWNyb255bSI+WE1MJ3M8L3NwYW4+IGVuY29kaW5nCgkJcmVxdWlyZW1lbnRzIGlzIGNvbnRhaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNjaGFyZW5jb2RpbmciIHRhcmdldD0iX3RvcCI+c3RhbmRhcmQ8L2E+LjwvcD48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj48cD4KCSAgPC9wPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48YSBocmVmPSIjZ2V0cm9vdGVsZW1lbnQiPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvNS5wbmciIGFsdD0iNSIgYm9yZGVyPSIwIj48L2E+IDwvdGQ+PHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+UmV0cmlldmUgdGhlIGRvY3VtZW50J3Mgcm9vdCBlbGVtZW50LjwvcD48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PGEgaHJlZj0iI2NoZWNrZW1wdHllcnJvciI+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy82LnBuZyIgYWx0PSI2IiBib3JkZXI9IjAiPjwvYT4gPC90ZD48dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD5DaGVjayB0byBtYWtlIHN1cmUgdGhlIGRvY3VtZW50IGFjdHVhbGx5IGNvbnRhaW5zIHNvbWV0aGluZy48L3A+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxhIGhyZWY9IiNjaGVja3Jvb3R0eXBlIj48aW1nIHNyYz0iaW1hZ2VzL2NhbGxvdXRzLzcucG5nIiBhbHQ9IjciIGJvcmRlcj0iMCI+PC9hPiA8L3RkPjx0ZCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxwPkluIG91ciBjYXNlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMgdGhlIHJpZ2h0CgkgIHR5cGUuICJzdG9yeSIgaXMgdGhlIHJvb3QgdHlwZSBvZiB0aGUgZG9jdW1lbnRzIHVzZWQgaW4gdGhpcwoJICB0dXRvcmlhbC48L3A+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PHA+CiAgICAgIDxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImlkMjUyNTQxNSI+PC9hPgogICAgPC9wPjwvZGl2PjxkaXYgY2xhc3M9Im5hdmZvb3RlciI+PGhyPjx0YWJsZSB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBmb290ZXIiPjx0cj48dGQgd2lkdGg9IjQwJSIgYWxpZ249ImxlZnQiPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iYXIwMXMwMi5odG1sIj5QcmV2PC9hPqA8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImluZGV4Lmh0bWwiPlVwPC9hPjwvdGQ+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJyaWdodCI+oDxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iYXIwMXMwNC5odG1sIj5OZXh0PC9hPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+RGF0YSBUeXBlc6A8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPkhvbWU8L2E+PC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+oFJldHJpZXZpbmcgRWxlbWVudCBDb250ZW50PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4K