PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPjx0aXRsZT5SZXRyaWV2aW5nIEF0dHJpYnV0ZXM8L3RpdGxlPjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjAuMSI+PGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iTGlieG1sIFR1dG9yaWFsIj48bGluayByZWw9InByZXZpb3VzIiBocmVmPSJhcjAxczA2Lmh0bWwiIHRpdGxlPSJXcml0aW5nIEF0dHJpYnV0ZSI+PGxpbmsgcmVsPSJuZXh0IiBocmVmPSJhcjAxczA4Lmh0bWwiIHRpdGxlPSJFbmNvZGluZyBDb252ZXJzaW9uIj48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjxkaXYgY2xhc3M9Im5hdmhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciI+PHRyPjx0aCBjb2xzcGFuPSIzIiBhbGlnbj0iY2VudGVyIj5SZXRyaWV2aW5nIEF0dHJpYnV0ZXM8L3RoPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0ibGVmdCI+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJhcjAxczA2Lmh0bWwiPlByZXY8L2E+oDwvdGQ+PHRoIHdpZHRoPSI2MCUiIGFsaWduPSJjZW50ZXIiPqA8L3RoPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImFyMDFzMDguaHRtbCI+TmV4dDwvYT48L3RkPjwvdHI+PC90YWJsZT48aHI+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIG5hbWU9InhtbHR1dG9yaWFsYXR0cmlidXRlIj48L2E+UmV0cmlldmluZyBBdHRyaWJ1dGVzPC9oMj48L2Rpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PjxwPjxhIGNsYXNzPSJpbmRleHRlcm0iIG5hbWU9ImlkMjgxMDgzMiI+PC9hPgpSZXRyaWV2aW5nIHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgaXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMKICAgIGV4YW1wbGUgaW4gd2hpY2ggd2UgcmV0cmlldmVkIGEgbm9kZSdzIHRleHQgY29udGVudHMuIEluIHRoaXMgY2FzZSB3ZSdsbAogICAgICBleHRyYWN0IHRoZSB2YWx1ZSBvZiB0aGUgPHNwYW4gY2xhc3M9ImFjcm9ueW0iPlVSSTwvc3Bhbj4gd2UgYWRkZWQgaW4gdGhlIHByZXZpb3VzCiAgICAgIHNlY3Rpb24uIEZ1bGwgY29kZTogPGEgaHJlZj0iYXBlLmh0bWwiIHRpdGxlPSJFLqBDb2RlIGZvciBSZXRyaWV2aW5nIEF0dHJpYnV0ZSBWYWx1ZSBFeGFtcGxlIj5BcHBlbmRpeKBFLCA8aT5Db2RlIGZvciBSZXRyaWV2aW5nIEF0dHJpYnV0ZSBWYWx1ZSBFeGFtcGxlPC9pPjwvYT4uPC9wPjxwPgogICAgICBUaGUgaW5pdGlhbCBzdGVwcyBmb3IgdGhpcyBleGFtcGxlIGFyZSBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvbmVzOiBwYXJzZQogICAgICB0aGUgZG9jLCBmaW5kIHRoZSBlbGVtZW50IHlvdSBhcmUgaW50ZXJlc3RlZCBpbiwgdGhlbiBlbnRlciBhIGZ1bmN0aW9uIHRvCiAgICAgIGNhcnJ5IG91dCB0aGUgc3BlY2lmaWMgdGFzayByZXF1aXJlZC4gSW4gdGhpcyBjYXNlLCB3ZSBjYWxsCiAgICAgIDx0dCBjbGFzcz0iZnVuY3Rpb24iPmdldFJlZmVyZW5jZTwvdHQ+OgogICAgICA8L3A+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgp2b2lkCmdldFJlZmVyZW5jZSAoeG1sRG9jUHRyIGRvYywgeG1sTm9kZVB0ciBjdXIpIHsKCgl4bWxDaGFyICp1cmk7CgljdXIgPSBjdXItJmd0O3htbENoaWxkcmVuTm9kZTsKCXdoaWxlIChjdXIgIT0gTlVMTCkgewoJICAgIGlmICgoIXhtbFN0cmNtcChjdXItJmd0O25hbWUsIChjb25zdCB4bWxDaGFyICopJnF1b3Q7cmVmZXJlbmNlJnF1b3Q7KSkpIHsKCQkgICA8YSBuYW1lPSJnZXRhdHRyaWJ1dGV2YWx1ZSI+PC9hPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvMS5wbmciIGFsdD0iMSIgYm9yZGVyPSIwIj4gdXJpID0geG1sR2V0UHJvcChjdXIsICZxdW90O3VyaSZxdW90Oyk7CgkJICAgIHByaW50ZigmcXVvdDt1cmk6ICVzXG4mcXVvdDssIHVyaSk7CgkJICAgIHhtbEZyZWUodXJpKTsKCSAgICB9CgkgICAgY3VyID0gY3VyLSZndDtuZXh0OwoJfQoJcmV0dXJuOwp9CiAgICAgIDwvcHJlPjxwPgogICAgCiAgICAgIDwvcD48ZGl2IGNsYXNzPSJjYWxsb3V0bGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgc3VtbWFyeT0iQ2FsbG91dCBsaXN0Ij48dHI+PHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij48YSBocmVmPSIjZ2V0YXR0cmlidXRldmFsdWUiPjxpbWcgc3JjPSJpbWFnZXMvY2FsbG91dHMvMS5wbmciIGFsdD0iMSIgYm9yZGVyPSIwIj48L2E+IDwvdGQ+PHRkIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PHA+CgkgICAgVGhlIGtleSBmdW5jdGlvbiBpcyA8dHQgY2xhc3M9ImZ1bmN0aW9uIj48YSBocmVmPSJodHRwOi8veG1sc29mdC5vcmcvaHRtbC9saWJ4bWwtdHJlZS5odG1sI1hNTEdFVFBST1AiIHRhcmdldD0iX3RvcCI+eG1sR2V0UHJvcDwvYT48L3R0Piwgd2hpY2ggcmV0dXJucyBhbgogICAgICA8dHQgY2xhc3M9InZhcm5hbWUiPnhtbENoYXI8L3R0PiBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZS4gSW4gdGhpcyBjYXNlLAoJCQkJCSAgIHdlIGp1c3QgcHJpbnQgaXQgb3V0LgogICAgICA8L3A+PGRpdiBjbGFzcz0ibm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPjx0YWJsZSBib3JkZXI9IjAiIHN1bW1hcnk9Ik5vdGUiPjx0cj48dGQgcm93c3Bhbj0iMiIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIyNSI+PGltZyBhbHQ9IltOb3RlXSIgc3JjPSJpbWFnZXMvbm90ZS5wbmciPjwvdGQ+PHRoIGFsaWduPSJsZWZ0Ij5Ob3RlPC90aD48L3RyPjx0cj48dGQgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48cD4KCSAgSWYgeW91IGFyZSB1c2luZyBhIDxzcGFuIGNsYXNzPSJhY3JvbnltIj5EVEQ8L3NwYW4+IHRoYXQgZGVjbGFyZXMgYSBmaXhlZCBvcgoJICBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXR0cmlidXRlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0cmlldmUgaXQuCgk8L3A+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PHA+CgkgIDwvcD48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj48cD4KICAgICAKICAgIDwvcD48L2Rpdj48ZGl2IGNsYXNzPSJuYXZmb290ZXIiPjxocj48dGFibGUgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gZm9vdGVyIj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImFyMDFzMDYuaHRtbCI+UHJldjwvYT6gPC90ZD48dGQgd2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciI+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJpbmRleC5odG1sIj5VcDwvYT48L3RkPjx0ZCB3aWR0aD0iNDAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImFyMDFzMDguaHRtbCI+TmV4dDwvYT48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iNDAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPldyaXRpbmcgQXR0cmlidXRloDwvdGQ+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJjZW50ZXIiPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+SG9tZTwvYT48L3RkPjx0ZCB3aWR0aD0iNDAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj6gRW5jb2RpbmcgQ29udmVyc2lvbjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Cg==