PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPjxoZWFkPjxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPjx0aXRsZT5Xcml0aW5nIGVsZW1lbnQgY29udGVudDwvdGl0bGU+PG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS40OCI+PGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InByZXZpb3VzIiBocmVmPSJhcjAxczA0Lmh0bWwiIHRpdGxlPSJSZXRyaWV2aW5nIEVsZW1lbnQgQ29udGVudCI+PGxpbmsgcmVsPSJuZXh0IiBocmVmPSJhcjAxczA2Lmh0bWwiIHRpdGxlPSJXcml0aW5nIEF0dHJpYnV0ZSI+PC9oZWFkPjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj48ZGl2IGNsYXNzPSJuYXZoZWFkZXIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiPjx0cj48dGggY29sc3Bhbj0iMyIgYWxpZ249ImNlbnRlciI+V3JpdGluZyBlbGVtZW50IGNvbnRlbnQ8L3RoPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0ibGVmdCI+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJhcjAxczA0Lmh0bWwiPlByZXY8L2E+oDwvdGQ+PHRoIHdpZHRoPSI2MCUiIGFsaWduPSJjZW50ZXIiPqA8L3RoPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImFyMDFzMDYuaHRtbCI+TmV4dDwvYT48L3RkPjwvdHI+PC90YWJsZT48aHI+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDEiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIG5hbWU9InhtbHR1dG9yaWFsd3JpdGluZ2NvbnRlbnQiPjwvYT5Xcml0aW5nIGVsZW1lbnQgY29udGVudDwvaDI+PC9kaXY+PC9kaXY+PHA+V3JpdGluZyBlbGVtZW50IGNvbnRlbnQgdXNlcyBtYW55IG9mIHRoZSBzYW1lIHN0ZXBzIHdlIHVzZWQgYWJvdmUKICAgICYjODIxMjsgcGFyc2luZyB0aGUgZG9jdW1lbnQgYW5kIHdhbGtpbmcgdGhlIHRyZWUuIFdlIHBhcnNlIHRoZSBkb2N1bWVudCwKICAgIHRoZW4gdHJhdmVyc2UgdGhlIHRyZWUgdG8gZmluZCB0aGUgcGxhY2Ugd2Ugd2FudCB0byBpbnNlcnQgb3VyIGVsZW1lbnQuIEZvcgogICAgdGhpcyBleGFtcGxlLCB3ZSB3YW50IHRvIGFnYWluIGZpbmQgdGhlICZxdW90O3N0b3J5aW5mbyZxdW90OyBlbGVtZW50IGFuZAogICAgICB0aGlzIHRpbWUgaW5zZXJ0IGEga2V5d29yZC4gVGhlbiB3ZSdsbCB3cml0ZSB0aGUgZmlsZSB0byBkaXNrLiBGdWxsIGNvZGU6CiAgICA8YSBocmVmPSJhcGMuaHRtbCIgdGl0bGU9IkMuIENvZGUgZm9yIEFkZCBLZXl3b3JkIEV4YW1wbGUiPkFwcGVuZGl4IEM8L2E+PC9wPjxwPgogICAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIGluIHRoaXMgZXhhbXBsZSBpcyBpbgogICAgICA8dHQ+cGFyc2VTdG9yeTwvdHQ+OgoKICAgICAgPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgp2b2lkCnBhcnNlU3RvcnkgKHhtbERvY1B0ciBkb2MsIHhtbE5vZGVQdHIgY3VyLCBjaGFyICprZXl3b3JkKSB7CgoJPGEgbmFtZT0iYWRka2V5d29yZCI+PC9hPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvMS5wbmciIGFsdD0iMSIgYm9yZGVyPSIwIj4geG1sTmV3VGV4dENoaWxkIChjdXIsIE5VTEwsICZxdW90O2tleXdvcmQmcXVvdDssIGtleXdvcmQpOwogICAgcmV0dXJuOwp9CiAgICAgIDwvcHJlPgogICAgICA8ZGl2IGNsYXNzPSJjYWxsb3V0bGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgc3VtbWFyeT0iQ2FsbG91dCBsaXN0Ij48dHI+PHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48YSBocmVmPSIjYWRka2V5d29yZCI+PGltZyBzcmM9ImltYWdlcy9jYWxsb3V0cy8xLnBuZyIgYWx0PSIxIiBib3JkZXI9IjAiPjwvYT4gPC90ZD48dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48cD5UaGUgPHR0PjxhIGhyZWY9Imh0dHA6Ly94bWxzb2Z0Lm9yZy9odG1sL2xpYnhtbC10cmVlLmh0bWwjWE1MTkVXVEVYVENISUxEIiB0YXJnZXQ9Il90b3AiPnhtbE5ld1RleHRDaGlsZDwvYT48L3R0PgoJCQkJICAgICBmdW5jdGlvbiBhZGRzIGEgbmV3IGNoaWxkIGVsZW1lbnQgYXQgdGhlCgkJCQkgICAgIGN1cnJlbnQgbm9kZSBwb2ludGVyJ3MgbG9jYXRpb24gaW4gdGhlCgkgICAgdHJlZSwgc3BlY2lmaWNpZWQgYnkgPHR0PmN1cjwvdHQ+LjwvcD48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4KICAgICAgICAgPC9wPjxwPgogICAgICBPbmNlIHRoZSBub2RlIGhhcyBiZWVuIGFkZGVkLCB3ZSB3b3VsZCBsaWtlIHRvIHdyaXRlIHRoZSBkb2N1bWVudCB0bwogICAgICBmaWxlLiBJcyB5b3Ugd2FudCB0aGUgZWxlbWVudCB0byBoYXZlIGEgbmFtZXNwYWNlLCB5b3UgY2FuIGFkZCBpdCBoZXJlIGFzCiAgICAgIHdlbGwuIEluIG91ciBjYXNlLCB0aGUgbmFtZXNwYWNlIGlzIE5VTEwuCiAgICAgIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KCXhtbFNhdmVGb3JtYXRGaWxlIChkb2NuYW1lLCBkb2MsIDEpOwogICAgICA8L3ByZT4KICAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBiZSB3cml0dGVuLiBZb3UnbGwgbm90aWNlCiAgICAgIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaWxlIHdlIGp1c3QgcmVhZC4gSW4gdGhpcyBjYXNlLCB3ZSBqdXN0IHdyaXRlIG92ZXIKICAgICAgdGhlIG9sZCBmaWxlLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIHhtbERvYwogICAgICBzdHJ1Y3R1cmUuIFNldHRpbmcgdGhlIHRoaXJkIHBhcmFtZXRlciBlcXVhbCB0byBvbmUgZW5zdXJlcyBpbmRlbnRpbmcgb24gb3V0cHV0LgogICAgPC9wPjwvZGl2PjxkaXYgY2xhc3M9Im5hdmZvb3RlciI+PGhyPjx0YWJsZSB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBmb290ZXIiPjx0cj48dGQgd2lkdGg9IjQwJSIgYWxpZ249ImxlZnQiPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iYXIwMXMwNC5odG1sIj5QcmV2PC9hPqA8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImluZGV4Lmh0bWwiPlVwPC9hPjwvdGQ+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJyaWdodCI+oDxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iYXIwMXMwNi5odG1sIj5OZXh0PC9hPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+UmV0cmlldmluZyBFbGVtZW50IENvbnRlbnSgPC90ZD48dGQgd2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciI+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj5Ib21lPC9hPjwvdGQ+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPqBXcml0aW5nIEF0dHJpYnV0ZTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Cg==