ICAgIDxoZWFkZXI+CiAgICAgIDxoMSBjbGFzcz0icGFnZS10aXRsZSI+CiAgICAgICAgRnJvbnRlbmQgVGltaW5nOiBQYWdlIExvYWRpbmcsIEJyb3dzZXIgRXZlbnRzLCByQUYsIGFuZCBDb21wb25lbnQKICAgICAgICBMaWZlY3ljbGUKICAgICAgPC9oMT4KICAgICAgPHAgY2xhc3M9InBhZ2UtZGVzY3JpcHRpb24iPjwvcD4KICAgICAgPHRhYmxlIGNsYXNzPSJwcm9wZXJ0aWVzIj4KICAgICAgICA8dGJvZHk+CiAgICAgICAgICA8dHIgY2xhc3M9InByb3BlcnR5LXJvdyBwcm9wZXJ0eS1yb3ctY3JlYXRlZF9ieSI+CiAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiBwcm9wZXJ0eS1pY29uIgogICAgICAgICAgICAgICAgPjxkaXYKICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9Ii9pY29ucy91c2VyLWNpcmNsZV9ncmF5LnN2ZyIKICAgICAgICAgICAgICAgICAgc3R5bGU9IgogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAgICAgICAgICAgICAgICAgbWFzazogdXJsKC9pY29ucy91c2VyLWNpcmNsZV9ncmF5LnN2Zz9tb2RlPWxpZ2h0KSBuby1yZXBlYXQKICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjsKICAgICAgICAgICAgICAgICAgICAtd2Via2l0LW1hc2s6IHVybCgvaWNvbnMvdXNlci1jaXJjbGVfZ3JheS5zdmc/bW9kZT1saWdodCkKICAgICAgICAgICAgICAgICAgICAgIG5vLXJlcGVhdCBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDIsIDEzOSwgMTM0LCAxKTsKICAgICAgICAgICAgICAgICAgICBmaWxsOiByZ2JhKDE0MiwgMTM5LCAxMzQsIDEpOwogICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICA+PC9kaXY+PC9zcGFuCiAgICAgICAgICAgICAgPkNyZWF0ZWQgYnkKICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1c2VyIgogICAgICAgICAgICAgICAgPjxpbWcKICAgICAgICAgICAgICAgICAgc3JjPSJGcm9udGVuZCUyMFRpbWluZyUyMFBhZ2UlMjBMb2FkaW5nLCUyMEJyb3dzZXIlMjBFdmVudHMsJTIwckFGLCUyMDI3NTZjZDUxOTkwZDgwN2FiZjczY2ZkYmI2YmUwZTI5L1NjcmVlbnNob3RfMjAyNS0wOC0wMl9hdF8xMC4zOC4xMV9BTS5wbmciCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIHVzZXItaWNvbiIKICAgICAgICAgICAgICAgIC8+SmlhTGluIEh1YW5nPC9zcGFuCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0ciBjbGFzcz0icHJvcGVydHktcm93IHByb3BlcnR5LXJvdy1sYXN0X2VkaXRlZF90aW1lIj4KICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIHByb3BlcnR5LWljb24iCiAgICAgICAgICAgICAgICA+PGRpdgogICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD0iL2ljb25zL2Nsb2NrX2dyYXkuc3ZnIgogICAgICAgICAgICAgICAgICBzdHlsZT0iCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgICAgICAgICAgICAgICAgICBtYXNrOiB1cmwoL2ljb25zL2Nsb2NrX2dyYXkuc3ZnP21vZGU9bGlnaHQpIG5vLXJlcGVhdCBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1tYXNrOiB1cmwoL2ljb25zL2Nsb2NrX2dyYXkuc3ZnP21vZGU9bGlnaHQpCiAgICAgICAgICAgICAgICAgICAgICBuby1yZXBlYXQgY2VudGVyOwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQyLCAxMzksIDEzNCwgMSk7CiAgICAgICAgICAgICAgICAgICAgZmlsbDogcmdiYSgxNDIsIDEzOSwgMTM0LCAxKTsKICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgPjwvZGl2Pjwvc3BhbgogICAgICAgICAgICAgID5MYXN0IGVkaXRlZAogICAgICAgICAgICA8L3RoPgogICAgICAgICAgICA8dGQ+PHRpbWU+QDIwMjXlubQ55pyIMjHml6UgMTk6MDg8L3RpbWU+PC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InByb3BlcnR5LXJvdyBwcm9wZXJ0eS1yb3ctbXVsdGlfc2VsZWN0Ij4KICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIHByb3BlcnR5LWljb24iCiAgICAgICAgICAgICAgICA+PGRpdgogICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD0iL2ljb25zL2xpc3RfZ3JheS5zdmciCiAgICAgICAgICAgICAgICAgIHN0eWxlPSIKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgICAgICAgICAgICAgICAgIG1hc2s6IHVybCgvaWNvbnMvbGlzdF9ncmF5LnN2Zz9tb2RlPWxpZ2h0KSBuby1yZXBlYXQgY2VudGVyOwogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtbWFzazogdXJsKC9pY29ucy9saXN0X2dyYXkuc3ZnP21vZGU9bGlnaHQpIG5vLXJlcGVhdAogICAgICAgICAgICAgICAgICAgICAgY2VudGVyOwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQyLCAxMzksIDEzNCwgMSk7CiAgICAgICAgICAgICAgICAgICAgZmlsbDogcmdiYSgxNDIsIDEzOSwgMTM0LCAxKTsKICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgPjwvZGl2Pjwvc3BhbgogICAgICAgICAgICAgID5UYWdzCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0ZWQtdmFsdWUgc2VsZWN0LXZhbHVlLWNvbG9yLXB1cnBsZSI+UG9zdDwvc3BhbgogICAgICAgICAgICAgID48c3BhbiBjbGFzcz0ic2VsZWN0ZWQtdmFsdWUgc2VsZWN0LXZhbHVlLWNvbG9yLWJsdWUiCiAgICAgICAgICAgICAgICA+UmVhY3Rqczwvc3BhbgogICAgICAgICAgICAgID48c3BhbiBjbGFzcz0ic2VsZWN0ZWQtdmFsdWUgc2VsZWN0LXZhbHVlLWNvbG9yLXBpbmsiPlZ1ZTwvc3Bhbj4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgIDwvaGVhZGVyPgogICAgPGRpdiBjbGFzcz0icGFnZS1ib2R5Ij4KICAgICAgPGgxIGNsYXNzPSIiPlJvb3QgY2F1c2U8L2gxPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBXaGVuIHVzaW5nIGxvY2F0aW9uLmhyZWYgdG8ganVtcCB0byBhbm90aGVyIHBhZ2UgaW4gVnVlMiYjeDI3O3MKICAgICAgICBtb3VudGVkKCkgaG9vaywgRmlyZWZveC9TYWZhcmkgd291bGQgZ2V0IHN0dWNrIGluIGFuIGVuZGxlc3MgcmVsb2FkIGxvb3AKICAgICAgICBpbnN0ZWFkIG9mIGdvaW5nIHRvIHRoZSBuZXcgcGFnZS4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj5UZXN0IHJlc3VsdHM6PC9wPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj5zZXRUaW1lb3V0KDApIOKGkiBGYWlsZWQ8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUg4oaSIEZhaWxlZDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPnNldFRpbWVvdXQoNTBtcywgMTAwbXMpIOKGkiBGYWlsZWQ8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4uLi48L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj5zZXRUaW1lb3V0KDUwMG1zKSDihpIgU3VjY2VzczwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgPjxzdHJvbmcKICAgICAgICAgICAgPktleSBmaW5kaW5nOiBtb3VudGVkIHRpbWluZyDiiaAgcGFnZSByZWFkeSBmb3IgbmF2aWdhdGlvbjwvc3Ryb25nCiAgICAgICAgICA+PC9tYXJrCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgTmV4dCwgd2UmI3gyNztsbCBleHBsb3JlIHdoYXQgcmVuZGVyIGFuZCBtb3VudCByZWFsbHkgbWVhbiwgdGhlCiAgICAgICAgYnJvd3NlciYjeDI3O3MgQ3JpdGljYWwgUmVuZGVyaW5nIFBhdGgsIHdoZW4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHJ1bnMsCiAgICAgICAgYW5kIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHZhcmlvdXMgJnF1b3Q7Y29tcGxldGUmcXVvdDsgc3RhdGVzLiBPbmNlCiAgICAgICAgeW91IHVuZGVyc3RhbmQgdGhlc2UgY29uY2VwdHMsIHlvdSYjeDI3O2xsIGtub3cgZXhhY3RseSB3aGVuIHRvIHJ1biB3aGF0CiAgICAgICAgY29kZSBhbmQgYXZvaWQgY29tbW9uIHRpbWluZyB0cmFwcy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMSBjbGFzcz0iIj5XaGF0IGlzIFJlbmRlcmluZz8gV2hhdCBEb2VzIFJlbmRlciBDb21wbGV0ZSBNZWFuPzwvaDE+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgPjxzdHJvbmcKICAgICAgICAgICAgPkNvcmUgcHJvYmxlbTogRGlmZmVyZW50IHJvbGVzIHVuZGVyc3RhbmQgJnF1b3Q7cmVuZGVyCiAgICAgICAgICAgIGNvbXBsZXRlJnF1b3Q7IGRpZmZlcmVudGx5LiBQaWNrIHRoZSB3cm9uZyB0aW1pbmcgYW5kIHlvdSYjeDI3O2xsCiAgICAgICAgICAgIGhpdCBidWdzLjwvc3Ryb25nCiAgICAgICAgICA+PC9tYXJrCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5WdWUvUmVhY3QgRGV2ZWxvcGVyczogTG9naWNhbCBSZW5kZXI8L2gzPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBGb3IgZnJhbWV3b3JrcywgcmVuZGVyID0gVmlydHVhbCBET00gY2FsY3VsYXRpb24uIFB1cmUgbG9naWMsIG5vIHZpc3VhbAogICAgICAgIG91dHB1dC4KICAgICAgPC9wPgogICAgICA8c2NyaXB0CiAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgID48L3NjcmlwdD4KICAgICAgPGxpbmsKICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgIC8+CiAgICAgIDxwcmUKICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4vLyBSZWFjdCByZW5kZXIgcGhhc2UgLSBwdXJlbHkgbG9naWNhbApmdW5jdGlvbiBNeUNvbXBvbmVudCgpIHsKICByZXR1cm4gJmx0O2RpdiZndDtIZWxsbyBXb3JsZCZsdDsvZGl2Jmd0OzsgLy8gVmlydHVhbCBET00gY3JlYXRlZCwgbm90aGluZyB2aXN1YWwgeWV0Cn08L2NvZGU+PC9wcmU+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIFZ1ZTMgdXNlcyBCbG9jayBUcmVlIHRvIHRyYWNrIG9ubHkgZHluYW1pYyBub2Rlcy4gUmVhY3QgMTggdXNlcyB0aW1lCiAgICAgICAgc2xpY2luZyB0byBtYWtlIHJlbmRlcmluZyBpbnRlcnJ1cHRpYmxlOgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPmZ1bmN0aW9uIEFwcCgpIHsKICBjb25zdCBbcXVlcnksIHNldFF1ZXJ5XSA9IHVzZVN0YXRlKCYjeDI3OyYjeDI3Oyk7CiAgY29uc3QgW2xpc3QsIHNldExpc3RdID0gdXNlU3RhdGUobGFyZ2VEYXRhKTsKICBjb25zdCBbaXNQZW5kaW5nLCBzdGFydFRyYW5zaXRpb25dID0gdXNlVHJhbnNpdGlvbigpOwoKICBjb25zdCBoYW5kbGVTZWFyY2ggPSAodmFsdWUpID0mZ3Q7IHsKICAgIHNldFF1ZXJ5KHZhbHVlKTsgLy8gSGlnaCBwcmlvcml0eTogdXBkYXRlIGlucHV0IHJpZ2h0IGF3YXkKCiAgICBzdGFydFRyYW5zaXRpb24oKCkgPSZndDsgewogICAgICBzZXRMaXN0KGZpbHRlckRhdGEodmFsdWUpKTsgLy8gTG93IHByaW9yaXR5OiBjYW4gYmUgaW50ZXJydXB0ZWQKICAgIH0pOwogIH07Cn0KPC9jb2RlPjwvcHJlPgogICAgICA8aDMgY2xhc3M9IiI+QnJvd3NlcjogVmlzdWFsIFJlbmRlcjwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIEJyb3dzZXIgcmVuZGVyID0gY29tcGxldGUgU3R5bGUg4oaSIExheW91dCDihpIgUGFpbnQg4oaSIENvbXBvc2l0ZSBmbG93LgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIENTUyBjYWxjdWxhdGlvbiDihpIgZWxlbWVudCBwb3NpdGlvbmluZyDihpIgcGl4ZWwgZHJhd2luZyDihpIgbGF5ZXIKICAgICAgICBjb21wb3NpdGlvbiA9IHVzZXIgc2VlcyBjb250ZW50CiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPlVzZXI6IFJlYWwgRXhwZXJpZW5jZTwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIFVzZXImI3gyNztzIHZpZXcgb2YgcmVuZGVyID0gJnF1b3Q7SSBjYW4gc2VlIHRoZSBwYWdlIGFuZCBjbGljawogICAgICAgIHRoaW5ncy4mcXVvdDsKICAgICAgPC9wPgogICAgICA8dGFibGUgY2xhc3M9InNpbXBsZS10YWJsZSI+CiAgICAgICAgPHRoZWFkIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiPlR5cGU8L3RoPgogICAgICAgICAgICA8dGggY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICAgICAgQ29tcGxldGUgU3RhbmRhcmQKICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiPgogICAgICAgICAgICAgIFZpc3VhbCBPdXRwdXQKICAgICAgICAgICAgPC90aD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5WdWUvUmVhY3QgcmVuZGVyPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPlZpcnR1YWwgRE9NIGNhbGN1bGF0aW9uIGRvbmU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+4p2MIE5vbmU8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPkJyb3dzZXIgcmVuZGVyPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPlBhaW50ICsgQ29tcG9zaXRlIGRvbmU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+4pyFIFllczwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+VXNlciBwZXJjZXB0aW9uPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPlZpc2libGUgKyBpbnRlcmFjdGl2ZTwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj7inIUgWWVzPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVGhpcyBpcyB3aHkgcnVubmluZyBsb2NhdGlvbi5ocmVmIHJpZ2h0IGFmdGVyIG1vdW50ZWQoKSBmYWlsczogVGhlIHBhZ2UKICAgICAgICBpcyBsb2dpY2FsbHkgcmVhZHksIGJ1dCBub3QgdmlzdWFsbHkgYW5kIG5hdmlnYXRpb25hbGx5IHJlYWR5LgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMSBjbGFzcz0iIj5XaGF0IGlzIE1vdW50PC9oMT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiCiAgICAgICAgICA+PHN0cm9uZwogICAgICAgICAgICA+RnJhbWV3b3JrICZxdW90O21vdW50ZWQmcXVvdDsg4omgIHVzZXIgc2VlcyB0aGUgcGFnZS48L3N0cm9uZwogICAgICAgICAgPjwvbWFyawogICAgICAgID4KICAgICAgPC9wPgogICAgICA8aDMgY2xhc3M9IiI+RnJhbWV3b3JrIFZpZXc6IERPTSBJbnNlcnRpb248L2gzPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBtb3VudCA9IFZpcnR1YWwgRE9NIHR1cm5zIGludG8gcmVhbCBET00gYW5kIGdldHMgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPi8vIFZ1ZQpvbk1vdW50ZWQoKCkgPSZndDsgewogIGNvbnNvbGUubG9nKCYjeDI3O0NvbXBvbmVudCBpcyBtb3VudGVkIHRvIERPTSYjeDI3Oyk7Cn0pOwoKLy8gUmVhY3QKdXNlRWZmZWN0KCgpID0mZ3Q7IHsKICBjb25zb2xlLmxvZygmI3gyNztDb21wb25lbnQgaXMgbW91bnRlZCB0byBET00mI3gyNzspOwp9LCBbXSk7PC9jb2RlPjwvcHJlPgogICAgICA8aDMgY2xhc3M9IiI+QnJvd3NlciBWaWV3OiBET00gT3BlcmF0aW9uPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgbW91bnQgPSBydW5uaW5nIGFwcGVuZENoaWxkIG9yIGlubmVySFRNTCwgdHJpZ2dlcmluZyBET00gY2hhbmdlCiAgICAgICAgZGV0ZWN0aW9uLgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7IC8vIFRoaXMgaXMgJnF1b3Q7bW91bnRpbmcmcXVvdDs8L2NvZGU+PC9wcmU+CiAgICAgIDxoMyBjbGFzcz0iIj5Vc2VyIFZpZXc6IFNjcmVlbiBTaG93cyBVcDwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIG1vdW50ID0gJnF1b3Q7SSBjYW4gc2VlIGNvbnRlbnQmcXVvdDsgPSBicm93c2VyIGZpbmlzaGVkIFBhaW50ICsKICAgICAgICBDb21wb3NpdGUuCiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPlByb2JsZW1zIGZyb20gVGltaW5nIERpZmZlcmVuY2VzPC9oMz4KICAgICAgPHNjcmlwdAogICAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICA+PC9zY3JpcHQ+CiAgICAgIDxsaW5rCiAgICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAvPgogICAgICA8cHJlCiAgICAgICAgY2xhc3M9ImNvZGUgY29kZS13cmFwIgogICAgICA+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+b25Nb3VudGVkKCgpID0mZ3Q7IHsKICAvLyDinYwgVGhpcyBtaWdodCBmYWlsIGJlY2F1c2UgbGF5b3V0IGhhc24mI3gyNzt0IGhhcHBlbmVkIHlldAogIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKCiAgLy8g4pyFIEJldHRlciBhcHByb2FjaDogd2FpdCBmb3IgbmV4dCBmcmFtZQogIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9Jmd0OyB7CiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CiAgfSk7Cn0pOzwvY29kZT48L3ByZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgRnJvbSBtb3VudGVkIHRvIGFjdHVhbCBzY3JlZW4gZGlzcGxheSwgdGhlcmUgY2FuIGJlIGEgMTYtMTAwbXMgZGVsYXkuIElmCiAgICAgICAgeW91IG5lZWQgdG8gd29yayB3aXRoIHZpc3VhbCBlbGVtZW50cyByaWdodCBhd2F5IChzY3JvbGxpbmcsIGFuaW1hdGlvbnMsCiAgICAgICAgbWVhc3VyaW5nIHNpemVzKSwgeW91IG11c3Qgd2FpdCBmb3IgdGhlIGJyb3dzZXIgdG8gZmluaXNoIHJlbmRlcmluZy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDEgY2xhc3M9IiI+QnJvd3NlciBCYXNpY3M6IFByb2Nlc3MsIFRocmVhZCwgUGlwZWxpbmU8L2gxPgogICAgICA8aDMgY2xhc3M9IiI+QnJvd3NlciYjeDI3O3MgTXVsdGktUHJvY2VzczwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE1vZGVybiBicm93c2VycyBhcmVuJiN4Mjc7dCBqdXN0IG9uZSBwcm9ncmFtLiBUaGV5JiN4Mjc7cmUgYnVpbHQgZnJvbQogICAgICAgIG1hbnkgc2VwYXJhdGUgcHJvY2Vzc2VzIHdvcmtpbmcgdG9nZXRoZXIuIFRoaXMgZGVzaWduIG1ha2VzIGJyb3dzZXJzCiAgICAgICAgbW9yZSBzdGFibGUgYW5kIHNlY3VyZS4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj5NYWluIHBhcnRzOjwvcD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICBCcm93c2VyIFByb2Nlc3M6IFRoZSBjb250cm9sIGNlbnRlci4gSGFuZGxlcyB5b3VyIGJvb2ttYXJrcywgaGlzdG9yeSwKICAgICAgICAgIGFuZCB1c2VyIGludGVyZmFjZQogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgTmV0d29yayBQcm9jZXNzOiBUYWtlcyBjYXJlIG9mIGFsbCBpbnRlcm5ldCByZXF1ZXN0cyBhbmQgc2VydmVyCiAgICAgICAgICBjb21tdW5pY2F0aW9uCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICBHUFUgUHJvY2VzczogSGFuZGxlcyBncmFwaGljcyBhbmQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICBSZW5kZXJlciBQcm9jZXNzOiBFYWNoIHRhYiBnZXRzIGl0cyBvd24gcmVuZGVyaW5nIHByb2Nlc3MKICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9InRvZ2dsZSI+CiAgICAgICAgPGxpPgogICAgICAgICAgPGRldGFpbHMgb3Blbj0iIj4KICAgICAgICAgICAgPHN1bW1hcnk+CiAgICAgICAgICAgICAgPHN0cm9uZz5Qcm9jZXNzIGFuZCB0aHJlYWQgdHJlZSBzdHJ1Y3R1cmUgKGV4cGFuZCk8L3N0cm9uZz4KICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICA8c2NyaXB0CiAgICAgICAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgICAgICAgID48L3NjcmlwdD4KICAgICAgICAgICAgPGxpbmsKICAgICAgICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDxwcmUKICAgICAgICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgICAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtUGxhaW4gVGV4dCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4gIEJyb3dzZXIgQXBwbGljYXRpb24KICDilJzilIDilIAgQnJvd3NlciBQcm9jZXNzCiAg4pSc4pSA4pSAIE5ldHdvcmsgUHJvY2VzcwogIOKUnOKUgOKUgCBHUFUgUHJvY2VzcwogIOKUlOKUgOKUgCBSZW5kZXJlciBQcm9jZXNzIChvbmUgcGVyIHRhYikKICAgICAg4pSc4pSA4pSAIE1haW4gVGhyZWFkCiAgICAgIOKUnOKUgOKUgCBDb21wb3NpdG9yIFRocmVhZAogICAgICDilJTilIDilIAgV2ViIFdvcmtlciBUaHJlYWRzCjwvY29kZT48L3ByZT4KICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIFdoeSBzZXBhcmF0ZSB0YWJzIHdvcmsgd2VsbDogV2hlbiBvbmUgdGFiIGNyYXNoZXMgb3IgdXNlcyB0b28gbXVjaAogICAgICAgIG1lbW9yeSwgeW91ciBvdGhlciB0YWJzIGtlZXAgd29ya2luZyBmaW5lLiBUaGF0JiN4Mjc7cyB3aHkgeW91IGNhbiB3YXRjaAogICAgICAgIGEgdmlkZW8gaW4gb25lIHRhYiB3aGlsZSBjb2RpbmcgaW4gYW5vdGhlci4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5XaGF0IEphdmFTY3JpcHQgU2luZ2xlLVRocmVhZCBSZWFsbHkgTWVhbnM8L2gzPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBQZW9wbGUgc2F5IEphdmFTY3JpcHQgaXMgc2luZ2xlLXRocmVhZGVkLCBidXQgdGhlIGJyb3dzZXIgaXRzZWxmIGlzIG11Y2gKICAgICAgICBtb3JlIGNvbXBsZXguIEphdmFTY3JpcHQgYWN0cyBsaWtlIGEgJnF1b3Q7bWFuYWdlciZxdW90OyByYXRoZXIgdGhhbiBhCiAgICAgICAgJnF1b3Q7d29ya2VyJnF1b3Q7IGluIHRoaXMgc3lzdGVtLiBXaGVuIHlvdSB3cml0ZQogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5lbGVtZW50LnN0eWxlLmNvbG9yID0gJiN4Mjc7cmVkJiN4Mjc7PC9tYXJrCiAgICAgICAgPiwgSmF2YVNjcmlwdCBqdXN0IG1hcmtzIHRoYXQgZWxlbWVudCBmb3IgdXBkYXRlLiBUaGUgYWN0dWFsIHN0eWxlCiAgICAgICAgY2FsY3VsYXRpb25zLCByZXBhaW50aW5nLCBhbmQgY29tcG9zaXRpbmcgZ2V0IGhhbmRlZCBvZmYgdG8gc3BlY2lhbGl6ZWQKICAgICAgICB0aHJlYWRzLgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPi8vIEphdmFTY3JpcHQgb25seSBnaXZlcyBvcmRlcnMKZWxlbWVudC5zdHlsZS5jb2xvciA9ICYjeDI3O3JlZCYjeDI3OzsgICAgICAgIC8vIE1haW4gVGhyZWFkOiBtYXJrIGZvciB1cGRhdGUKLy8gT3RoZXIgdGhyZWFkcyBkbyB0aGUgYWN0dWFsIHdvcms6Ci8vIC0gU3R5bGUgVGhyZWFkOiByZWNhbGN1bGF0ZSBzdHlsZXMKLy8gLSBMYXlvdXQgVGhyZWFkOiByZWNhbGN1bGF0ZSBwb3NpdGlvbnMKLy8gLSBQYWludCBUaHJlYWQ6IHJlZHJhdyBwaXhlbHMKLy8gLSBDb21wb3NpdG9yIFRocmVhZDogY29tcG9zaXRlIHRvIHNjcmVlbjwvY29kZT48L3ByZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgV2ViIFdvcmtlcnMgYXJlIGRpZmZlcmVudDogVGhleSYjeDI3O3JlIHRoZSBvbmx5IEphdmFTY3JpcHQgZW52aXJvbm1lbnQKICAgICAgICB3aXRoIHRoZWlyIG93biBleGVjdXRpb24gdGhyZWFkLCBidXQgdGhleSBjYW4mI3gyNzt0IHRvdWNoIHRoZSBET00KICAgICAgICBkaXJlY3RseS4gVGhleSBtdXN0IHRhbGsgdG8gdGhlIG1haW4gdGhyZWFkIHRocm91Z2ggbWVzc2FnZSBwYXNzaW5nLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPGgzIGNsYXNzPSIiPlRocmVhZCBEaXZpc2lvbiBhbmQgUGVyZm9ybWFuY2UgSW1wYWN0LCBDb21tb24gYnJlYWtkb3duPC9oMz4KICAgICAgPHRhYmxlIGNsYXNzPSJzaW1wbGUtdGFibGUiPgogICAgICAgIDx0aGVhZCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0aAogICAgICAgICAgICAgIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiCiAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAxNTQuNzQ0Nzk2NzUyOTI5N3B4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgVGhyZWFkCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aAogICAgICAgICAgICAgIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiCiAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAzNjYuNzQ0Nzk2NzUyOTI5N3B4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgSm9iCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aAogICAgICAgICAgICAgIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiCiAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiA4Ni43Mzk1OTM1MDU4NTkzOHB4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgSGFyZHdhcmUKICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoCiAgICAgICAgICAgICAgY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciIKICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDE3Ni43NXB4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgQmxvY2tpbmcgRWZmZWN0CiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxNTQuNzQ0Nzk2NzUyOTI5N3B4Ij5NYWluIFRocmVhZDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDM2Ni43NDQ3OTY3NTI5Mjk3cHgiPgogICAgICAgICAgICAgIEphdmFTY3JpcHQgZXhlY3V0aW9uLCBET00gb3BlcmF0aW9ucywgU3R5bGUgY2FsY3VsYXRpb24sIExheW91dAogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiA4Ni43Mzk1OTM1MDU4NTkzOHB4Ij5DUFU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxNzYuNzVweCI+CiAgICAgICAgICAgICAgQmxvY2tpbmcgZnJlZXplcyBwYWdlIGludGVyYWN0aW9uCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxNTQuNzQ0Nzk2NzUyOTI5N3B4Ij4KICAgICAgICAgICAgICBDb21wb3NpdG9yIFRocmVhZAogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAzNjYuNzQ0Nzk2NzUyOTI5N3B4Ij4KICAgICAgICAgICAgICBMYXllciBjb21wb3NpdGluZywgc2Nyb2xsaW5nLCB0cmFuc2Zvcm0vb3BhY2l0eSBhbmltYXRpb25zCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDg2LjczOTU5MzUwNTg1OTM4cHgiPkNQVTwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDE3Ni43NXB4Ij4KICAgICAgICAgICAgICBSdW5zIGluZGVwZW5kZW50bHksIGRvZXNuJiN4Mjc7dCBibG9jayBKYXZhU2NyaXB0CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxNTQuNzQ0Nzk2NzUyOTI5N3B4Ij5SYXN0ZXIgVGhyZWFkPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMzY2Ljc0NDc5Njc1MjkyOTdweCI+CiAgICAgICAgICAgICAgQ29udmVydHMgZHJhd2luZyBjb21tYW5kcyB0byBhY3R1YWwKICAgICAgICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+cGl4ZWxzIChub3RlMSk8L21hcms+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDg2LjczOTU5MzUwNTg1OTM4cHgiPkNQVS9HUFU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxNzYuNzVweCI+CiAgICAgICAgICAgICAgTXVsdGktY29yZSBwYXJhbGxlbCwgZG9lc24mI3gyNzt0IGJsb2NrIG1haW4gZmxvdwogICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMTU0Ljc0NDc5Njc1MjkyOTdweCI+R1BVIFByb2Nlc3M8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAzNjYuNzQ0Nzk2NzUyOTI5N3B4Ij4KICAgICAgICAgICAgICBIYXJkd2FyZS1hY2NlbGVyYXRlZCByZW5kZXJpbmcsIFdlYkdMLCBncmFwaGljcyBjb21wb3NpdGluZwogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiA4Ni43Mzk1OTM1MDU4NTkzOHB4Ij4KICAgICAgICAgICAgICBJbnRlZ3JhdGVkL0RlZGljYXRlZCBHUFUKICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMTc2Ljc1cHgiPgogICAgICAgICAgICAgIFJ1bnMgaW4gYmFja2dyb3VuZCwgcGVyZm9ybWFuY2UgZGVwZW5kcyBvbiBoYXJkd2FyZQogICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMTU0Ljc0NDc5Njc1MjkyOTdweCI+TmV0d29yayBUaHJlYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAzNjYuNzQ0Nzk2NzUyOTI5N3B4Ij4KICAgICAgICAgICAgICBTZW5kaW5nIGFuZCByZWNlaXZpbmcgSFRUUCByZXF1ZXN0cwogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiA4Ni43Mzk1OTM1MDU4NTkzOHB4Ij4KICAgICAgICAgICAgICBOZXR3b3JrPGJyIC8+Y2FyZDEuCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDE3Ni43NXB4Ij4KICAgICAgICAgICAgICBSdW5zIGluIGJhY2tncm91bmQsIGRvZXNuJiN4Mjc7dCBhZmZlY3QgcGFnZSByZW5kZXJpbmcKICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgUmVhbCBpbXBhY3Q6IFRoaXMgaXMgd2h5IHRyYW5zZm9ybSBhbmltYXRpb25zIHJ1biBzbW9vdGhlciB0aGFuIHdpZHRoCiAgICAgICAgYW5pbWF0aW9ucy4gVHJhbnNmb3JtIHJ1bnMgb24gdGhlIENvbXBvc2l0b3IgVGhyZWFkIGFuZCBkb2VzbiYjeDI3O3QKICAgICAgICBibG9jayBKYXZhU2NyaXB0LiBXaWR0aCBjaGFuZ2VzIG5lZWQgTGF5b3V0IHJlY2FsY3VsYXRpb24sIHdoaWNoIHVzZXMKICAgICAgICBNYWluIFRocmVhZCByZXNvdXJjZXMgYW5kIGNhbiBjYXVzZSBwYWdlIHN0dXR0ZXJpbmcKICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj7imqDvuI/imqDvuI/imqDvuI/imqDvuI88L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE9ubHkgTWFpbiBUaHJlYWQgd29yayBkaXJlY3RseSBhZmZlY3RzIEphdmFTY3JpcHQgZXhlY3V0aW9uIGFuZCB1c2VyCiAgICAgICAgaW50ZXJhY3Rpb248YnIgLz5yZXNwb25zaXZlbmVzcy4gVW5kZXJzdGFuZGluZyB3aGljaCBvcGVyYXRpb25zIHRyaWdnZXIKICAgICAgICB3aGljaCB0aHJlYWQgaGVscHMgeW91IHdyaXRlIHNtb290aGVyIGludGVyYWN0aW9ucy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxlbT48bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+bm90ZTE8L21hcms+PC9lbQogICAgICAgID48ZW0+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1ncmF5Ij46PC9tYXJrPjwvZW0KICAgICAgICA+PGVtPjxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj4gPC9tYXJrPjwvZW0KICAgICAgICA+PGVtCiAgICAgICAgICA+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1ncmF5IgogICAgICAgICAgICA+QSBiaXRtYXAgY29udGFpbnMgaHVuZHJlZHMsIHRob3VzYW5kcywgb3IgbWlsbGlvbnMgb2YgcGl4ZWxzPC9tYXJrCiAgICAgICAgICA+PC9lbQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDEgY2xhc3M9IiI+Q1JQIChDcml0aWNhbCBSZW5kZXIgUGF0aCk8L2gxPgogICAgICA8aDMgY2xhc3M9IiI+V2hhdCBpcyBDUlA/PC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQ1JQIGlzIHRoZSBzaG9ydGVzdCBwYXRoICZxdW90O2Zyb20gaGl0dGluZyBFbnRlciB0byBzZWVpbmcgdGhlIGZpcnN0CiAgICAgICAgc2NyZWVuLiZxdW90OyBUaGlzIGRlY2lkZXMKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+eW91ciB3ZWJzaXRlJiN4Mjc7cyBmaXJzdCBpbXByZXNzaW9uPC9tYXJrPgogICAgICAgIGFuZCBkaXJlY3RseSBhZmZlY3RzIHRoZSBGUCAoRmlyc3QgUGFpbnQpIG1ldHJpYyBpbiBTRU8uCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQ1JQIG9ubHkgZm9jdXNlcyBvbiB0aGF0ICZxdW90O2Zyb20gbm90aGluZyB0byBzb21ldGhpbmcmcXVvdDsgbW9tZW50CiAgICAgICAgZHVyaW5nIGluaXRpYWwgbG9hZCwgbm90IHRoZSBvbmdvaW5nIHJlbmRlcmluZyBwcm9jZXNzLgogICAgICA8L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5DUlAmI3gyNztzIFNpeCBLZXkgU3RhZ2VzPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQnJvd3NlciByZW5kZXJpbmcgaXNuJiN4Mjc7dCBhIHNpbmdsZS10aHJlYWRlZCBsaW5lYXIgb3BlcmF0aW9uLgogICAgICAgIE11bHRpcGxlIHNwZWNpYWxpemVkIHRocmVhZHMgd29yayB0b2dldGhlcjoKICAgICAgPC9wPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIxIj4KICAgICAgICA8bGk+SFRNTCBidWlsZHMgRE9NPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMiI+CiAgICAgICAgPGxpPgogICAgICAgICAgQ1NTIGJ1aWxkcyBDU1NPTSAtCiAgICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+cGFyc2VzIHN0eWxlIHJ1bGVzIChub3RlMik8L21hcms+CiAgICAgICAgPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMyI+CiAgICAgICAgPGxpPgogICAgICAgICAgUmVuZGVyIFRyZWUgLSBjb21iaW5lcyBET00gKyBDU1NPTSwgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50cyB0byBzaG93CiAgICAgICAgPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iNCI+CiAgICAgICAgPGxpPgogICAgICAgICAgTGF5b3V0L1JlZmxvdyAtIGNhbGN1bGF0ZXMgZXhhY3QgcG9zaXRpb25zIGFuZCBzaXplcyBvZiBlbGVtZW50cwogICAgICAgIDwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxvbCB0eXBlPSIxIiBjbGFzcz0ibnVtYmVyZWQtbGlzdCIgc3RhcnQ9IjUiPgogICAgICAgIDxsaT4KICAgICAgICAgIFBhaW50IC0gY29udmVydHMgZWxlbWVudHMgdG8gYWN0dWFsIHBpeGVscyAoUmFzdGVyIFRocmVhZCBoYW5kbGVzCiAgICAgICAgICB0aGlzKQogICAgICAgIDwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxvbCB0eXBlPSIxIiBjbGFzcz0ibnVtYmVyZWQtbGlzdCIgc3RhcnQ9IjYiPgogICAgICAgIDxsaT4KICAgICAgICAgIENvbXBvc2l0ZSAtIGNvbWJpbmVzIGFsbCBsYXllcnMgaW50byBmaW5hbCBzY3JlZW4gb3V0cHV0IChDb21wb3NpdG9yCiAgICAgICAgICBUaHJlYWQgaGFuZGxlcyB0aGlzKQogICAgICAgIDwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIER1cmluZyB0aGUgUmVuZGVyIFRyZWUgc3RhZ2UsIHVzZXJzIHN0aWxsIGNhbiYjeDI3O3Qgc2VlIGFueXRoaW5nLiBUaGlzCiAgICAgICAgc3RhZ2Ugb25seSBjb25maXJtcyB0aGF0IERPTSBpcyByZWFkeSwgQ1NTIGlzIHBhcnNlZCwgYW5kIGVsZW1lbnQKICAgICAgICByZWxhdGlvbnNoaXBzIGFyZSBlc3RhYmxpc2hlZCAoaW5jbHVkaW5nIHdoaWNoIGVsZW1lbnRzIHRvIGhpZGUgbGlrZQogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5kaXNwbGF5OiBub25lPC9tYXJrPiksIGJ1dCB0aGVyZSYjeDI3O3Mgbm8KICAgICAgICBhY3R1YWwgcG9zaXRpb24gZGF0YSwgcGl4ZWwgZGF0YSwgb3IgZmluYWwgb3V0cHV0IHlldC4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8ZW0+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPm5vdGUyPC9tYXJrPjwvZW0KICAgICAgICA+PGVtCiAgICAgICAgICA+PG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1ncmF5IgogICAgICAgICAgICA+OiB1c2VyYWdlbnQgc3R5bGVzaGVldCDihpIgZXh0ZXJuYWwg4oaSIGludGVybmFsIChzdHlsZSB0YWcpIOKGkgogICAgICAgICAgICBpbmxpbmUoc3R5bGU94oCd4oCdKTwvbWFyawogICAgICAgICAgPjwvZW0KICAgICAgICA+CiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPkNSUCB2cyBHZW5lcmFsIFJlbmRlcmluZyBQaXBlbGluZSBEaWZmZXJlbmNlczwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIFdoaWxlIHRoZSBzdGVwcyBsb29rIHNpbWlsYXIsIHRoZWlyIGZvY3VzIGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50OgogICAgICA8L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgQ1JQIChvbmUtdGltZSk6CiAgICAgICAgICA8cCBjbGFzcz0iIj4KICAgICAgICAgICAgSFRNTCDihpIgRE9NIOKGkiBDU1NPTSDihpIgTGF5b3V0IOKGkiBQYWludCDihpIgQ29tcG9zaXRlIOKGkiBGaXJzdCB2aXNpYmxlCiAgICAgICAgICA8L3A+CiAgICAgICAgICA8cCBjbGFzcz0iIj4KICAgICAgICAgICAgRm9jdXNlcyBvbiBuZWNlc3Nhcnkgc3RlcHMgYmVmb3JlICZxdW90O2ZpcnN0IHZpc2libGUsJnF1b3Q7IGFmZmVjdHMKICAgICAgICAgICAgRlAgYW5kIEZDUCBtZXRyaWNzLgogICAgICAgICAgPC9wPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgUmVuZGVyaW5nIFBpcGVsaW5lIChjb250aW51b3VzIGxvb3ApOgogICAgICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgICAgIHJBRiDihpIgU3R5bGUg4oaSIExheW91dCDihpIgUGFpbnQg4oaSIENvbXBvc2l0ZSDihpIgTmV4dCBmcmFtZSAoMTZtcykKICAgICAgICAgIDwvcD4KICAgICAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgICAgICBDb21wbGV0ZSByZW5kZXJpbmcgZmxvdyBmb3IgZWFjaCBmcmFtZSwgY29udGludW91c2x5IG1haW50YWlucwogICAgICAgICAgICBzY3JlZW4gdXBkYXRlcy4KICAgICAgICAgIDwvcD4KICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8aDMgY2xhc3M9IiI+RGlmZmVyZW50IEZvY3VzIEFyZWFzIGZvciBDUlAgT3B0aW1pemF0aW9uPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQ1JQIG9wdGltaXphdGlvbiBkaXJlY3RseSBpbXByb3ZlcyB5b3VyIEZDUCBhbmQgRlAgc2NvcmVzLCB3aGlsZSBMQ1AKICAgICAgICBvcHRpbWl6YXRpb24gaGFzIGRpZmZlcmVudCBwcmlvcml0aWVzLiBVbmRlcnN0YW5kaW5nIGJvdGggZGlmZmVyZW5jZXMKICAgICAgICBoZWxwcyBjcmVhdGUgdGhlIHJpZ2h0IG9wdGltaXphdGlvbiBzdHJhdGVneS4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBGQ1AgZm9jdXNlcyBvbiAmcXVvdDtmaXJzdCBjb250ZW50JnF1b3Q7IGFwcGVhcmFuY2Ugc3BlZWQsIGVtcGhhc2l6aW5nCiAgICAgICAgc2VydmVyIHJlc3BvbnNlIGFuZCBjcml0aWNhbCByZXNvdXJjZSBsb2FkaW5nOgogICAgICA8L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPlRURkI6IHNlcnZlciBwZXJmb3JtYW5jZTwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgYXN5bmMvZGVmZXIgc2NyaXB0IHN0cmF0ZWdpZXM6IGF2b2lkIHN5bmNocm9ub3VzIHNjcmlwdHMgYmxvY2tpbmcgRE9NCiAgICAgICAgICBwYXJzaW5nIGFuZCBmaXJzdCByZW5kZXIKICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4KICAgICAgICAgIENyaXRpY2FsIENTUyBpbmxpbmU6IGVuc3VyZSBhYm92ZS10aGUtZm9sZCBzdHlsZXMgYXJlIGltbWVkaWF0ZWx5CiAgICAgICAgICBhdmFpbGFibGUgd2l0aG91dCB3YWl0aW5nIGZvciBleHRlcm5hbCBDU1MgZmlsZXMKICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4KICAgICAgICAgIFJlbW92ZSByZW5kZXItYmxvY2tpbmcgcmVzb3VyY2VzOiBkZWxheSBub24tY3JpdGljYWwgQ1NTIGFuZAogICAgICAgICAgSmF2YVNjcmlwdCBsb2FkaW5nCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBMQ1AgZm9jdXNlcyBvbiAmcXVvdDtsYXJnZXN0IGNvbnRlbnQgZWxlbWVudCZxdW90OyBsb2FkaW5nIGNvbXBsZXRpb24sCiAgICAgICAgbGVhbmluZyB0b3dhcmQgY2xpZW50LXNpZGUgcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHByaW9yaXR5OgogICAgICA8L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgQ29kZSBwZXJmb3JtYW5jZToKICAgICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5yZWR1Y2UgTWFpbiBUaHJlYWQgYmxvY2tpbmc8L21hcms+LCBnaXZpbmcKICAgICAgICAgIGJyb3dzZXIgbW9yZSB0aW1lIHRvIHByb2Nlc3MgbGFyZ2UgY29udGVudAogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgQ2FjaGluZyBtZWNoYW5pc21zOiBlbnN1cmUgaW1wb3J0YW50IHJlc291cmNlcyBsb2FkIHF1aWNrbHkKICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8dWwgY2xhc3M9ImJ1bGxldGVkLWxpc3QiPgogICAgICAgIDxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj4KICAgICAgICAgIHByZWxvYWQvcHJlZmV0Y2ggc3RyYXRlZ2llczogcHJlLWxvYWQgTENQIGNhbmRpZGF0ZSBlbGVtZW50cyAodXN1YWxseQogICAgICAgICAgbGFyZ2UgaW1hZ2VzIG9yIGltcG9ydGFudCBjb250ZW50KQogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgbGF6eSBsb2FkaW5nIGltcGxlbWVudGF0aW9uOiBkZWxheSBub24tY3JpdGljYWwgaW1hZ2UgbG9hZGluZyB0byBhdm9pZAogICAgICAgICAgYmFuZHdpZHRoIGNvbXBldGl0aW9uCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgSW1wbGVtZW50YXRpb246IEZvciBpbWFnZXMsCiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPmxvYWRpbmc9ZWFnZXI8L21hcms+IGVuc3VyZXMgY3JpdGljYWwKICAgICAgICByZXNvdXJjZXMgY29tZSBmaXJzdCwgaW1wcm92aW5nIEZDUC4gT3RoZXJzIHVzZQogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5sb2FkaW5nPWxhenk8L21hcms+IHRvIGF2b2lkIGJhbmR3aWR0aAogICAgICAgIGNvbXBldGl0aW9uLiA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+ZmV0Y2hwcmlvcml0eT1oaWdoPC9tYXJrPiBsZXRzCiAgICAgICAgaGVybyBpbWFnZXMgZ2V0IHByaW9yaXR5LCBvcHRpbWl6aW5nIExDUCBtZXRyaWNzLiBCdXQgdXN1YWxseSBpbWFnZQogICAgICAgIGxvYWRpbmcgc3RyYXRlZ2llcyBhcmUgbW9yZSByZWxhdGVkIHRvIExDUC4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBUZWNobmljYWwgZGV0YWlsczogPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPmxvYWRpbmc9bGF6eTwvbWFyaz4gdXNlcwogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5JbnRlcnNlY3Rpb25PYnNlcnZlcjwvbWFyaz4gdG8gZGV0ZXJtaW5lCiAgICAgICAgd2hlbiB0byBsb2FkLCB3aGlsZQogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5mZXRjaHByaW9yaXR5PC9tYXJrPiBhZmZlY3RzIHJlcXVlc3QgcXVldWUKICAgICAgICBwcmlvcml0eSBvcmRlcmluZy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5XZWIgUGVyZm9ybWFuY2UgTWV0cmljcyBTb3VyY2VzPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVGhlc2UgU0VPIG1ldHJpY3MgYXJlIGRpcmVjdCBwcm9kdWN0cyBvZiBicm93c2VyLWxldmVsIFBhaW50IGFuZAogICAgICAgIENvbXBvc2l0ZSBldmVudHMsIGJ1dCB0aGVpciBnZW5lcmF0aW9uIGFuZCBtb25pdG9yaW5nIG1lY2hhbmlzbXMgYXJlCiAgICAgICAgbW9yZSBjb21wbGV4IHRoYW4gZXhwZWN0ZWQuCiAgICAgIDwvcD4KICAgICAgPHRhYmxlIGNsYXNzPSJzaW1wbGUtdGFibGUiPgogICAgICAgIDx0aGVhZCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0aCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgICAgICBNZXRyaWMKICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiPgogICAgICAgICAgICAgIERlZmluaXRpb24KICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiPgogICAgICAgICAgICAgIFRyaWdnZXIgVGltaW5nCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgICAgICBBcHByb3hpbWF0ZQogICAgICAgICAgICA8L3RoPgogICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPkZpcnN0IFBhaW50IChGUCk8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+Rmlyc3QgcGl4ZWwgZHJhd248L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+UGFpbnQgc3RhZ2U8YnIgLz5iZWdpbnM8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+MjAwfjUwMG1zPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5GaXJzdCBDb250ZW50ZnVsIFBhaW50IChGQ1ApPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPkZpcnN0IGNvbnRlbnQgZWxlbWVudCBkcmF3bjwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5NZWFuaW5nZnVsPGJyIC8+Y29udGVudCBQYWludDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj4zMDB+NjAwbXM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPkxhcmdlc3QgQ29udGVudGZ1bCBQYWludCAoTENQKTwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5MYXJnZXN0IGNvbnRlbnQgZWxlbWVudCBjb21wbGV0ZXMgcmVuZGVyaW5nPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPk1haW4gY29udGVudDxiciAvPlBhaW50PC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPjEwMDB+MjUwMG1zPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5ET01Db250ZW50TG9hZGVkPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPkRPTSBzdHJ1Y3R1cmUgY29tcGxldGU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+RE9NIHBhcnNpbmc8YnIgLz5maW5pc2hlZDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj4xMDB+MzAwbXM8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPmxvYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+QWxsIHJlc291cmNlcyBsb2FkZWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+QWxsIHJlc291cmNlczxiciAvPmxvYWRlZDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj4xMjAwfjMwMDBtczwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGJvZHk+CiAgICAgIDwvdGFibGU+CiAgICAgIDxwIGNsYXNzPSIiPkNvbXBsZXRlIGZsb3cgb2YgbWV0cmljIGdlbmVyYXRpb246PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBUaGVzZSBtZXRyaWMgdHJpZ2dlcnMgYXJlIGluZGVlZCByZWxhdGVkIHRvIE1haW4gVGhyZWFkLCBidXQgdGhlIGVudGlyZQogICAgICAgIG1lY2hhbmlzbSBzcGFucyBtdWx0aXBsZSB0aHJlYWRzOgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPkZQIChGaXJzdCBQYWludCkgZ2VuZXJhdGlvbiBwcm9jZXNzOjwvcD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMSI+CiAgICAgICAgPGxpPk1haW4gVGhyZWFkIGNvbXBsZXRlcyBmaXJzdCBQYWludCBjb21tYW5kPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMiI+CiAgICAgICAgPGxpPlJhc3RlciBUaHJlYWQgZXhlY3V0ZXMgYWN0dWFsIGRyYXdpbmcsIGdlbmVyYXRlcyBwaXhlbCBkYXRhPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMyI+CiAgICAgICAgPGxpPkNvbXBvc2l0b3IgVGhyZWFkIGNvbXBvc2l0ZXMgcGl4ZWxzIHRvIHNjcmVlbjwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxvbCB0eXBlPSIxIiBjbGFzcz0ibnVtYmVyZWQtbGlzdCIgc3RhcnQ9IjQiPgogICAgICAgIDxsaT4KICAgICAgICAgIEJyb3dzZXIgaW50ZXJuYWxseSBkZXRlY3RzICZxdW90O2ZpcnN0IHBpeGVsJnF1b3Q7IGFwcGVhcmFuY2UsCiAgICAgICAgICB0cmlnZ2VycyBGUCBldmVudAogICAgICAgIDwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgRkNQIGFuZCBMQ1AgZGV0ZWN0aW9uIG1lY2hhbmlzbTogU2FtZSBmbG93IHRocm91Z2ggTWFpbiBUaHJlYWQg4oaSIFJhc3RlcgogICAgICAgIFRocmVhZCDihpIgQ29tcG9zaXRvciBUaHJlYWQsIGJ1dCBicm93c2VyIGludGVybmFsIGFsZ29yaXRobXMgZnVydGhlcgogICAgICAgIGFuYWx5emUgd2hpY2ggYXJlICZxdW90O21lYW5pbmdmdWwgY29udGVudCZxdW90OyBvciAmcXVvdDtsYXJnZXN0CiAgICAgICAgY29udGVudCBlbGVtZW50cywmcXVvdDsgdGhlbiB0cmlnZ2VyIGNvcnJlc3BvbmRpbmcgZXZlbnRzLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPGgzIGNsYXNzPSIiPkhvdyB0byBNb25pdG9yIFRoZXNlIFNFTyBNZXRyaWNzPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgV2hpbGUgbWV0cmljIGdlbmVyYXRpb24gc3BhbnMgbXVsdGlwbGUgVGhyZWFkcywgdGhleSYjeDI3O3JlIGFsbCBleHBvc2VkCiAgICAgICAgdG8gZGV2ZWxvcGVycyB0aHJvdWdoIFBlcmZvcm1hbmNlIEFQSSBpbiBNYWluIFRocmVhZDoKICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCIKICAgICAgICAgID48c3Ryb25nCiAgICAgICAgICAgID5Ccm93c2VyIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBhdCBsb3cgbGV2ZWwsIEpTIHBhc3NpdmVseQogICAgICAgICAgICByZWNlaXZlczwvc3Ryb25nCiAgICAgICAgICA+PC9tYXJrCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPmNvbnN0IG9ic2VydmVyID0gbmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoKGxpc3QpID0mZ3Q7IHsKICBmb3IgKGNvbnN0IGVudHJ5IG9mIGxpc3QuZ2V0RW50cmllcygpKSB7CiAgICBpZiAoZW50cnkubmFtZSA9PT0gJiN4Mjc7Zmlyc3QtY29udGVudGZ1bC1wYWludCYjeDI3OykgewogICAgICBjb25zb2xlLmxvZygmI3gyNztGQ1A6JiN4Mjc7LCBlbnRyeS5zdGFydFRpbWUpOwogICAgfQogICAgaWYgKGVudHJ5LmVudHJ5VHlwZSA9PT0gJiN4Mjc7bGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50JiN4Mjc7KSB7CiAgICAgIGNvbnNvbGUubG9nKCYjeDI3O0xDUDomI3gyNzssIGVudHJ5LnN0YXJ0VGltZSk7CiAgICB9CiAgfQp9KTsKCm9ic2VydmVyLm9ic2VydmUoe2VudHJ5VHlwZXM6IFsmI3gyNztwYWludCYjeDI3OywgJiN4Mjc7bGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50JiN4Mjc7XX0pOwovLyBwYWludDogZnAsIGZjcAovLyBsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnQ6IG9ubHkgZm9yIExDUDwvY29kZT48L3ByZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVGhlc2UgbWV0cmljcyBkb24mI3gyNzt0IGRpcmVjdGx5IGJpbmQgSmF2YVNjcmlwdCBjYWxsYmFja3MsIGJ1dCBhcmUKICAgICAgICBldmVudHMgZnJvbSBicm93c2VyLWxldmVsIGRyYXdpbmcgc3RhZ2VzLCBhY2Nlc3NpYmxlIHRocm91Z2ggQ2hyb21lCiAgICAgICAgUGVyZm9ybWFuY2UgVGltZWxpbmUgb3IgUGFpbnQgVGltaW5nIEFQSS4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCIKICAgICAgICAgID4mcXVvdDtEb24mI3gyNzt0IGRpcmVjdGx5IGJpbmQgSmF2YVNjcmlwdCBjYWxsYmFja3MmcXVvdDsgbWVhbnMgeW91CiAgICAgICAgICBjYW4mI3gyNzt0IHVzZSBhZGRFdmVudExpc3RlbmVyLjwvbWFyawogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL3dlYi5kZXYvYXJ0aWNsZXMvZmNwIj5odHRwczovL3dlYi5kZXYvYXJ0aWNsZXMvZmNwPC9hPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9sY3AiPmh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9sY3A8L2E+CiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPkNTUyBQcm9wZXJ0aWVzJiN4Mjc7IEltcGFjdCBvbiBSZW5kZXJpbmcgU3RhZ2VzPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBCcm93c2VyIHJlbmRlcmluZyBmb2xsb3dzIHdhdGVyZmFsbCBwcmluY2lwbGU6IHRyaWdnZXJpbmcgTGF5b3V0IHdpbGwKICAgICAgICBjYXNjYWRlIHRocm91Z2ggYWxsIHN1YnNlcXVlbnQgc3RhZ2VzLgogICAgICA8L3A+CiAgICAgIDx0YWJsZSBjbGFzcz0ic2ltcGxlLXRhYmxlIj4KICAgICAgICA8dGhlYWQgY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXIiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGgKICAgICAgICAgICAgICBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIgogICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMTIxLjY1OTcyOTAwMzkwNjI1cHgiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBUcmlnZ2VyIFN0YWdlCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aAogICAgICAgICAgICAgIGNsYXNzPSJzaW1wbGUtdGFibGUtaGVhZGVyLWNvbG9yIHNpbXBsZS10YWJsZS1oZWFkZXIiCiAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiA0NTIuNjU2MjgwNTE3NTc4MXB4IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgQ1NTIFByb3BlcnRpZXMKICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoCiAgICAgICAgICAgICAgY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciIKICAgICAgICAgICAgICBzdHlsZT0id2lkdGg6IDg3LjY1OTcyOTAwMzkwNjI1cHgiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBQZXJmb3JtYW5jZQogICAgICAgICAgICA8L3RoPgogICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMTIxLjY1OTcyOTAwMzkwNjI1cHgiPkxheW91dDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDQ1Mi42NTYyODA1MTc1NzgxcHgiPgogICAgICAgICAgICAgIHdpZHRoLCBtYXJnaW4sIHBhZGRpbmcsIHRvcCwgZm9udC1zaXplLCBib3JkZXItd2lkdGgsCiAgICAgICAgICAgICAgcG9zaXRpb246Zml4ZWQKICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogODcuNjU5NzI5MDAzOTA2MjVweCI+YmFkbHk8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogMTIxLjY1OTcyOTAwMzkwNjI1cHgiPlBhaW50PC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogNDUyLjY1NjI4MDUxNzU3ODFweCI+CiAgICAgICAgICAgICAgY29sb3IsIGJhY2tncm91bmQsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdywgb3V0bGluZQogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiA4Ny42NTk3MjkwMDM5MDYyNXB4Ij5zby1zbzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiIgc3R5bGU9IndpZHRoOiAxMjEuNjU5NzI5MDAzOTA2MjVweCI+Q29tcG9zaXRlPC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiIHN0eWxlPSJ3aWR0aDogNDUyLjY1NjI4MDUxNzU3ODFweCI+CiAgICAgICAgICAgICAgdHJhbnNmb3JtLCBvcGFjaXR5LCBmaWx0ZXIsIHdpbGwtY2hhbmdlCiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIiBzdHlsZT0id2lkdGg6IDg3LjY1OTcyOTAwMzkwNjI1cHgiPm5pY2U8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICA8L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBBbmltYXRpb25zIHNob3VsZCBwcmlvcml0aXplIENvbXBvc2l0ZSBwcm9wZXJ0aWVzIHRvIGF2b2lkIHVubmVjZXNzYXJ5CiAgICAgICAgcmVjYWxjdWxhdGlvbnM6CiAgICAgIDwvcD4KICAgICAgPHRhYmxlIGNsYXNzPSJzaW1wbGUtdGFibGUiPgogICAgICAgIDx0aGVhZCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0aCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgICAgICBEZXNpcmVkIEVmZmVjdAogICAgICAgICAgICA8L3RoPgogICAgICAgICAgICA8dGggY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICAgICAg4p2MIEF2b2lkIFVzaW5nCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgICAgICDinIUgUmVjb21tZW5kZWQKICAgICAgICAgICAgPC90aD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5Nb3ZlIGVsZW1lbnQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+bGVmdCwgdG9wLCBtYXJnaW48L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+dHJhbnNmb3JtOiB0cmFuc2xhdGVYL1koKTwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+U2NhbGUgZWxlbWVudDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj53aWR0aCwgaGVpZ2h0PC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPnRyYW5zZm9ybTogc2NhbGUoKTwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+SGlkZSBlbGVtZW50PC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPmRpc3BsYXk6IG5vbmUvYmxvY2s8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+b3BhY2l0eTogMC8xPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMSBjbGFzcz0iIj4KICAgICAgICBMYXllciBNYW5hZ2VtZW50IGFuZCBBbmltYXRpb24gT3B0aW1pemF0aW9uOiBSdW5uaW5nIENTUyBvbiB0aGUgUmlnaHQKICAgICAgICBUaHJlYWQKICAgICAgPC9oMT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgRWFybGllciB3ZSBsZWFybmVkIGFib3V0IHRoZQogICAgICAgIDxzdHJvbmc+YnJvd3NlciYjeDI3O3MgQ29tcG9zaXRvciBUaHJlYWQ8L3N0cm9uZz4gYW5kCiAgICAgICAgPHN0cm9uZz5DUlAgcmVuZGVyaW5nIGZsb3c8L3N0cm9uZz4uIE5vdyBsZXQmI3gyNztzIHNlZSBob3cgdG8gdXNlIHRoaXMKICAgICAgICBrbm93bGVkZ2UgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KICAgICAgPC9wPgogICAgICA8aDMgY2xhc3M9IiI+QnJvd3NlciBMYXllciBDcmVhdGlvbiBTdHJhdGVneTwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIEJyb3dzZXJzIGRvbiYjeDI3O3QgY3JlYXRlIGluZGVwZW5kZW50IGNvbXBvc2l0ZSBsYXllcnMgZm9yIGV2ZXJ5CiAgICAgICAgZWxlbWVudCAtIHRoYXQgd291bGQgdXNlIHRvbyBtdWNoIG1lbW9yeS4gSW5zdGVhZCwgdGhleSBkZWNpZGUgd2hldGhlcgogICAgICAgIHRvIHByb21vdGUgZWxlbWVudHMgdG8gaW5kZXBlbmRlbnQgbGF5ZXJzIGJhc2VkIG9uIHNwZWNpZmljIGNvbmRpdGlvbnMuCiAgICAgICAgV2hlbiBlbGVtZW50cyBtZWV0IHRoZXNlIGNvbmRpdGlvbnMsCiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiCiAgICAgICAgICA+dGhlIGJyb3dzZXIgbGV0cyB0aGUgQ29tcG9zaXRvciBUaHJlYWQgaGFuZGxlIHRoZW0sIGF2b2lkaW5nIE1haW4KICAgICAgICAgIFRocmVhZCByZXNvdXJjZSB1c2FnZS48L21hcmsKICAgICAgICA+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVHJhbnNmb3JtIHByb3BlcnR5IHJ1bGVzIGRlc2VydmUgc3BlY2lhbCBhdHRlbnRpb24uIDNEIHRyYW5zZm9ybXMgKGxpa2UKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+dHJhbnNsYXRlWigwKTwvbWFyaz4gb3IKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+dHJhbnNsYXRlM2QoKTwvbWFyaz4pIGltbWVkaWF0ZWx5IGNyZWF0ZQogICAgICAgIGxheWVycywgYnV0IDJEIHRyYW5zZm9ybXMgKGxpa2UKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+dHJhbnNsYXRlWCg1MHB4KTwvbWFyaz4pIHVzdWFsbHkgZG9uJiN4Mjc7dAogICAgICAgIGluIHN0YXRpYyBzdGF0ZXMuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgSG93ZXZlciwgYWRkaW5nIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj53aWxsLWNoYW5nZTwvbWFyaz46CiAgICAgICAgdHJhbnNmb3JtIGZvcmNlcyB0aGUgYnJvd3NlciB0byBjcmVhdGUgYSBsYXllci4gRHVyaW5nIGFuaW1hdGlvbgogICAgICAgIGV4ZWN1dGlvbiwgZXZlbiAyRCB0cmFuc2Zvcm1zIHRlbXBvcmFyaWx5IGNyZWF0ZSBsYXllcnMuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQW5vdGhlciBjb21tb24gbGF5ZXIgdHJpZ2dlciBpcyBwb3NpdGlvbjogZml4ZWQuIEZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzCiAgICAgICAgbmVlZCBpbmRlcGVuZGVudCBjYWxjdWxhdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0LCBzbyBicm93c2VycwogICAgICAgIHByb21vdGUgdGhlbSB0byBpbmRlcGVuZGVudCBsYXllcnMgdG8gaW1wcm92ZSBzY3JvbGxpbmcgcGVyZm9ybWFuY2UuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDMgY2xhc3M9IiI+VGhyZWUgTGV2ZWxzIG9mIEFuaW1hdGlvbiBQZXJmb3JtYW5jZTwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE5vdCBhbGwgYW5pbWF0aW9ucyBjYW4gZW5qb3kgQ29tcG9zaXRvciBUaHJlYWQgb3B0aW1pemF0aW9uLiBUaGUga2V5IGlzCiAgICAgICAgd2hpY2ggcmVuZGVyaW5nIHN0YWdlIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyB0cmlnZ2VyLgogICAgICA8L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgQ29tcG9zaXRlLWxldmVsIGFuaW1hdGlvbnMKICAgICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj4odHJhbnNmb3JtLCBvcGFjaXR5LCBmaWx0ZXIpPC9tYXJrPiBhcmUKICAgICAgICAgIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGNob2ljZS4gVGhlc2UgYW5pbWF0aW9ucyBjcmVhdGUgbGF5ZXJzIGFuZCBydW4gb24KICAgICAgICAgIHRoZSBDb21wb3NpdG9yIFRocmVhZCwgY29tcGxldGVseSBhdm9pZGluZyBibG9ja2luZyBKYXZhU2NyaXB0IG9yIHVzZXIKICAgICAgICAgIGludGVyYWN0aW9ucy4KICAgICAgICA8L2xpPgogICAgICA8L3VsPgogICAgICA8cCBjbGFzcz0iIj7imqDvuI/imqDvuI/imqDvuI88L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgUGFpbnQtbGV2ZWwgYW5pbWF0aW9ucwogICAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPihjb2xvciwgYmFja2dyb3VuZCk8L21hcms+IGRvbiYjeDI3O3QKICAgICAgICAgIGNyZWF0ZSBsYXllcnMgYnV0IG9ubHkgbmVlZCBwaXhlbCByZXBhaW50aW5nIHdpdGhvdXQgYWZmZWN0aW5nIGVsZW1lbnQKICAgICAgICAgIGxheW91dC4gTWVkaXVtIHBlcmZvcm1hbmNlLgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwIGNsYXNzPSIiPuKaoO+4j+KaoO+4j+KaoO+4jzwvcD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICBMYXlvdXQtbGV2ZWwgYW5pbWF0aW9ucwogICAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPih3aWR0aCwgaGVpZ2h0LCBtYXJnaW4pPC9tYXJrPiBhcmUgdGhlCiAgICAgICAgICBtb3N0IHBlcmZvcm1hbmNlLTxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgICA+PHN0cm9uZz5leHBlbnNpdmU8L3N0cm9uZz48L21hcmsKICAgICAgICAgID4KICAgICAgICAgIGNob2ljZS4gVGhlc2UgYW5pbWF0aW9ucyB0cmlnZ2VyIGNvbXBsZXRlIHJlZmxvdyBwcm9jZXNzZXMsIHVzaW5nIGxvdHMKICAgICAgICAgIG9mIE1haW4gVGhyZWFkIHJlc291cmNlcyBhbmQgcG90ZW50aWFsbHkgY2F1c2luZyBwYWdlIHN0dXR0ZXJpbmcuCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPGgzIGNsYXNzPSIiPkRvZXMgSG92ZXIgQ3JlYXRlIE5ldyBMYXllcnM/PC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgQSBjb21tb24gbWlzY29uY2VwdGlvbiBpcyB0aGF0IGhvdmVyIHN0YXRlcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsYXllcnMuCiAgICAgICAgQWN0dWFsbHksIGhvdmVyIGl0c2VsZiBoYXMgbm8gcmVsYXRpb25zaGlwIHdpdGggbGF5ZXJzLCB1bmxlc3MgdGhlIGhvdmVyCiAgICAgICAgZWZmZWN0IHRyaWdnZXJzIGFuaW1hdGlvbnMgdGhhdCBjcmVhdGUgbGF5ZXJzLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIEJlc3QgcHJhY3RpY2Ugc3RyYXRlZ3kgaXMgcHJpb3JpdGl6aW5nCiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiCiAgICAgICAgICA+dXNpbmcgdHJhbnNmb3JtIGFuZCBvcGFjaXR5IGZvciBhbmltYXRpb25zPC9tYXJrCiAgICAgICAgPi4gRm9yIGVsZW1lbnRzIGV4cGVjdGVkIHRvIGFuaW1hdGUgZnJlcXVlbnRseSwgdXNlCiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPndpbGwtY2hhbmdlOiB0cmFuc2Zvcm08L21hcms+IHRvIHByZS1jcmVhdGUKICAgICAgICBsYXllcnMsIGJ1dCByZW1lbWJlciB0byByZW1vdmUgdGhpcyBwcm9wZXJ0eSBhZnRlciBhbmltYXRpb24gZW5kcyB0bwogICAgICAgIGZyZWUgcmVzb3VyY2VzLiBNb3JlIGltcG9ydGFudGx5LCBhdm9pZCB1c2luZyBMYXlvdXQtbGV2ZWwgcHJvcGVydGllcwogICAgICAgIGZvciBhbmltYXRpb25zIC0gdGhpcyBwdXRzIHVubmVjZXNzYXJ5IGJ1cmRlbiBvbiB0aGUgTWFpbiBUaHJlYWQgYW5kCiAgICAgICAgYWZmZWN0cyBvdmVyYWxsIHVzZXIgZXhwZXJpZW5jZS4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPGgxIGNsYXNzPSIiPnJlcXVlc3RBbmltYXRpb25GcmFtZSYjeDI3O3MgUm9sZSBhbmQgVGltaW5nPC9oMT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgckFGIGlzbiYjeDI3O3QganVzdCBhbiBhbmltYXRpb24gQVBJIC0gaXQmI3gyNztzIGEga2V5IHBsYXllciBpbiB0aGUKICAgICAgICBicm93c2VyIHJlbmRlcmluZyBwcm9jZXNzLjxiciAvPlVuZGVyc3RhbmRpbmcgckFGJiN4Mjc7cyBleGVjdXRpb24KICAgICAgICB0aW1pbmcsIHJlbGF0aW9uc2hpcCB3aXRoIEV2ZW50IExvb3AsIGFuZCBiZWhhdmlvciBpbiBtb2Rlcm4gZnJhbWV3b3JrcwogICAgICAgIGlzIGNydWNpYWwgZm9yIHdyaXRpbmcgc21vb3RoIGFuaW1hdGlvbnMgYW5kIGF2b2lkaW5nIHBlcmZvcm1hbmNlIHRyYXBzLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPlRoaXMgc2VjdGlvbiBpbmNsdWRlczo8L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgPHN0cm9uZz5yQUYmI3gyNztzIGJhc2ljIG1lY2hhbmlzbTwvc3Ryb25nPjogV2h5IGl0JiN4Mjc7cyBub3QgYQogICAgICAgICAgdGltZXIsIGJ1dCBhIHJlc2VydmF0aW9uIHN5c3RlbQogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgUG9zaXRpb24gaW4gcmVuZGVyaW5nIGZsb3c6IHJBRiYjeDI3O3MgdW5pcXVlIHNwb3QgYmV0d2VlbiBFdmVudCBMb29wCiAgICAgICAgICBhbmQgUmVuZGVyaW5nIFBpcGVsaW5lCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICA8c3Ryb25nPkZyYW1lIGRyb3BwaW5nIGFuYWx5c2lzPC9zdHJvbmc+OiBXaGF0IGhhcHBlbnMgd2hlbiBKYXZhU2NyaXB0CiAgICAgICAgICBleGVjdXRpb24gdGltZXMgb3V0LCBob3cgdG8gZGV0ZWN0IGFuZCBhdm9pZCBpdAogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgPHN0cm9uZz5Db29wZXJhdGlvbiB3aXRoIEV2ZW50IExvb3A8L3N0cm9uZz46IEhvdyBNaWNyb3Rhc2tzIGFmZmVjdAogICAgICAgICAgYW5pbWF0aW9uIHNtb290aG5lc3MsIGFuZCBleGVjdXRpb24gb3JkZXIgb2Y8YnIgLz5kaWZmZXJlbnQgYXN5bmMKICAgICAgICAgIHRhc2tzCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHVsIGNsYXNzPSJidWxsZXRlZC1saXN0Ij4KICAgICAgICA8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CiAgICAgICAgICA8c3Ryb25nPlJlYWwgYXBwbGljYXRpb25zIGluIFJlYWN0IGZyYW1ld29yazwvc3Ryb25nPjogVGltaW5nCiAgICAgICAgICByZWxhdGlvbnNoaXAgYmV0d2VlbiBsaWZlY3ljbGUgYW5kIHJBRiwgYW5kIGhvdyBiYXRjaCB1cGRhdGVzIGFmZmVjdAogICAgICAgICAgYW5pbWF0aW9uIHRpbWluZwogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPGgzIGNsYXNzPSIiPkJyb3dzZXImI3gyNztzIDE2bXMgTWV0cm9ub21lPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgTW9kZXJuIGJyb3dzZXJzIHdvcmsgbGlrZSBwcmVjaXNlIG1ldHJvbm9tZXMsIGJ1dCB0aGUgYmVhdCBzcGVlZCBhZGp1c3RzCiAgICAgICAgdG8geW91ciBzY3JlZW4gcmVmcmVzaCByYXRlLiBUcmFkaXRpb25hbCA2MEh6IHNjcmVlbnMgdXBkYXRlIGV2ZXJ5IDE2LjY3CiAgICAgICAgbWlsbGlzZWNvbmRzLCBidXQgaWYgeW91ciBjb21wdXRlciBpcyAxMjBIeiwgdGhlbiBpdCYjeDI3O3MgZXZlcnkgOC4zMwogICAgICAgIG1pbGxpc2Vjb25kcy4gQnJvd3NlcnMgYXV0b21hdGljYWxseSBkZXRlY3Qgc2NyZWVuIHJlZnJlc2ggcmF0ZSBhbmQKICAgICAgICBhZGp1c3QgckFGIGV4ZWN1dGlvbiBmcmVxdWVuY3kuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPnJBRiBpcyBhY3R1YWxseSBhIHJlc2VydmF0aW9uIHN5c3RlbTwvbWFyaz4sCiAgICAgICAgbGV0dGluZyB5b3UgYm9vayBmdW5jdGlvbiBleGVjdXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlbmRlciBmcmFtZS4gV2hlbgogICAgICAgIHlvdSBjYWxsIGl0LCB0aGUgYnJvd3NlciBxdWV1ZXMgeW91ciBmdW5jdGlvbiBmb3IgdGhlIG5leHQgZnJhbWUmI3gyNztzCiAgICAgICAgZXhlY3V0aW9uIGxpc3QsIGJ1dCBvbmx5IGV4ZWN1dGVzIG9uY2UgdGhlbiBzdG9wcy4gRm9yIGNvbnRpbnVvdXMKICAgICAgICBhbmltYXRpb24sIHlvdSBtdXN0IHJlLWJvb2sgZWFjaCB0aW1lOgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPmZ1bmN0aW9uIGFuaW1hdGUoKSB7CiAgLy8gRG8gc29tZSBhbmltYXRpb24gdXBkYXRlcwogIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsgLy8gUmUtYm9vayBuZXh0IHRpbWUKfQpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7IC8vIFN0YXJ0IGFuaW1hdGlvbiBsb29wPC9jb2RlPjwvcHJlPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBNdWx0aXBsZSByZXNlcnZhdGlvbnMgd2l0aGluIHRoZSBzYW1lIGZyYW1lIGFyZSBwb3NzaWJsZS4gSWYgeW91CiAgICAgICAgcmVnaXN0ZXIgbXVsdGlwbGUgckFGIGNhbGxiYWNrcyBpbiB0aGUgcHJldmlvdXMgZnJhbWUsIHRoZXkmI3gyNztsbAogICAgICAgIGV4ZWN1dGUgaW4gcmVnaXN0cmF0aW9uIG9yZGVyIHdpdGhpbiB0aGUgc2FtZSB0aW1lIHdpbmRvdzoKICAgICAgPC9wPgogICAgICA8c2NyaXB0CiAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgID48L3NjcmlwdD4KICAgICAgPGxpbmsKICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgIC8+CiAgICAgIDxwcmUKICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRzMSkgPSZndDsgewogIGNvbnN0IGZyYW1lMSA9IE1hdGguZmxvb3IodHMxIC8gOC4zMyk7IC8vIDEyMEh6IGZyYW1lIGNhbGN1bGF0aW9uCiAgY29uc29sZS5sb2coYEZpcnN0IHJBRjogJHt0czEudG9GaXhlZCgxKX1tcyAoRnJhbWUgJHtmcmFtZTF9KWApOwoKICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRzMikgPSZndDsgewogICAgY29uc3QgZnJhbWUyID0gTWF0aC5mbG9vcih0czIgLyA4LjMzKTsKICAgIGNvbnNvbGUubG9nKGBDYWxsYmFjayAxOiAke3RzMi50b0ZpeGVkKDEpfW1zIChGcmFtZSAke2ZyYW1lMn0pYCk7CiAgfSk7CgogIHJlcXVlc3RBbmltYXRpb25GcmFtZSgodHMzKSA9Jmd0OyB7CiAgICBjb25zdCBmcmFtZTMgPSBNYXRoLmZsb29yKHRzMyAvIDguMzMpOwogICAgY29uc29sZS5sb2coYENhbGxiYWNrIDI6ICR7dHMzLnRvRml4ZWQoMSl9bXMgKEZyYW1lICR7ZnJhbWUzfSlgKTsKICB9KTsKfSk7PC9jb2RlPjwvcHJlPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5yQUYmI3gyNztzIFRydWUgUm9sZTogRmluYWwgQWRqdXN0bWVudHMgQmVmb3JlIFJlbmRlcmluZzwvaDM+CiAgICAgIDxibG9ja3F1b3RlIGNsYXNzPSIiPgogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgPjEgZnJhbWUgKDE2bXMpOiBldmVudCBsb29wIOKGkiByYWYg4oaSIFtTdHlsZQogICAgICAgICAgQ2FsYyxMYXlvdXQsUGFpbnQsQ29tcG9zaXRlXTwvbWFyawogICAgICAgID4KICAgICAgPC9ibG9ja3F1b3RlPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICByQUYgaXMgdGhlIGJyb3dzZXImI3gyNztzICZxdW90O2ZpbmFsIGFkanVzdG1lbnQgbWVjaGFuaXNtIGJlZm9yZQogICAgICAgIHJlbmRlcmluZy4mcXVvdDsgSW4gZWFjaCBmcmFtZSYjeDI3O3MgcmVuZGVyaW5nIGZsb3csCiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiCiAgICAgICAgICA+aXQgZ2l2ZXMgeW91IG9uZSBsYXN0IGNoYW5jZSB0byBtb2RpZnkgRE9NIGJlZm9yZSBTdHlsZSBDYWxjdWxhdGlvbiwKICAgICAgICAgIExheW91dCwgUGFpbnQsIGFuZCBDb21wb3NpdGUgYmVnaW4uPC9tYXJrCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPkNvbXBsZXRlIGZyYW1lIGV4ZWN1dGlvbiBvcmRlcjogRnJhbWUgVGltZWxpbmUgKDE2bXMpPC9wPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIxIj4KICAgICAgICA8bGk+Q2FsbCBzdGFjayBjb21wbGV0ZXMgKHN5bmNocm9ub3VzIEpTIGNvZGUpPC9saT4KICAgICAgPC9vbD4KICAgICAgPG9sIHR5cGU9IjEiIGNsYXNzPSJudW1iZXJlZC1saXN0IiBzdGFydD0iMiI+CiAgICAgICAgPGxpPkNsZWFyIGFsbCBNaWNyb3Rhc2tzIChQcm9taXNlLnRoZW4sIHF1ZXVlTWljcm90YXNrKTwvbGk+CiAgICAgIDwvb2w+CiAgICAgIDxvbCB0eXBlPSIxIiBjbGFzcz0ibnVtYmVyZWQtbGlzdCIgc3RhcnQ9IjMiPgogICAgICAgIDxsaT5FeGVjdXRlIE1hY3JvdGFzayAoc2V0VGltZW91dCwgRE9NIGV2ZW50cyk8L2xpPgogICAgICA8L29sPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSI0Ij4KICAgICAgICA8bGk+ckFGIGNhbGxiYWNrcyAoaWYgcmVuZGVyaW5nIG5lZWRlZCk8L2xpPgogICAgICA8L29sPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSI1Ij4KICAgICAgICA8bGk+UmVuZGVyaW5nIGZsb3cgKFN0eWxlIOKGkiBMYXlvdXQg4oaSIFBhaW50IOKGkiBDb21wb3NpdGUpPC9saT4KICAgICAgPC9vbD4KICAgICAgPHNjcmlwdAogICAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICA+PC9zY3JpcHQ+CiAgICAgIDxsaW5rCiAgICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAvPgogICAgICA8cHJlCiAgICAgICAgY2xhc3M9ImNvZGUgY29kZS13cmFwIgogICAgICA+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLVBsYWluIFRleHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+RnJhbWUgVGltZWxpbmUgKDE2bXMpCuKUnOKUgCAwbXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIDE2bXMg4pSA4pSkCgoxLiBDYWxsIHN0YWNrIGNvbXBsZXRlcwogICDilJTilIDilIAgU3luY2hyb25vdXMgSlMgY29kZQoKMi4gQ2xlYXIgYWxsIE1pY3JvdGFza3MKICAg4pSU4pSA4pSAIFByb21pc2UudGhlbiwgcXVldWVNaWNyb3Rhc2suLi4KCjMuIEV4ZWN1dGUgTWFjcm90YXNrICh1bnRpbCB0aW1lIGJ1ZGdldCBydW5zIG91dCkKICAg4pSU4pSA4pSAIHNldFRpbWVvdXQsIERPTSBldmVudHMuLi4KCjQuIHJBRiBjYWxsYmFja3MgKGlmIHJlbmRlcmluZyBuZWVkZWQpCiAgIOKUlOKUgOKUgCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUKCjUuIFJlbmRlcmluZyBmbG93IChpZiBET00gY2hhbmdlcyBleGlzdCkKICAg4pSU4pSA4pSAIFN0eWxlIOKGkiBMYXlvdXQg4oaSIFBhaW50IOKGkiBDb21wb3NpdGUKCuKUlOKUgCBOZXh0IGZyYW1lIGJlZ2lucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQ8L2NvZGU+PC9wcmU+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgSW1hZ2luZSB0aGlzOiBKYXZhU2NyaXB0IGNoYW5nZXMgZWxlbWVudCB0bwogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5yZWQ8L21hcms+LCBidXQgZHVyaW5nIHJBRiBjYWxsYmFjayBjaGFuZ2VzCiAgICAgICAgaXQgdG8gPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1ibHVlIj5ibHVlPC9tYXJrPi4gVGhlIGJyb3dzZXIgd2lsbCBtZXJnZQogICAgICAgIHRoZXNlIGNoYW5nZXMgZHVlIHRvIGJhdGNoIHByb2Nlc3NpbmcsIGZpbmFsbHkgZGlzcGxheWluZwogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtYmx1ZSI+Ymx1ZTwvbWFyaz4uCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPHN0cm9uZwogICAgICAgICAgPlRoaXMgaXMgckFGJiN4Mjc7cyBwdXJwb3NlOiBnaXZpbmcgeW91IG9uZSBsYXN0IGFkanVzdG1lbnQgY2hhbmNlCiAgICAgICAgICBiZWZvcmUgYWN0dWFsIHJlbmRlcmluZy48L3N0cm9uZwogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDMgY2xhc3M9IiI+CiAgICAgICAgckFGJiN4Mjc7cyBQb3NpdGlvbjogQnJpZGdlIEJldHdlZW4gRXZlbnQgTG9vcCBhbmQgUmVuZGVyaW5nCiAgICAgIDwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIHJBRiBpcyBoYXJkIHRvIGNhdGVnb3JpemUuIFNheSBpdCYjeDI3O3MgcGFydCBvZiBFdmVudCBMb29wLCBidXQgaXQKICAgICAgICBkb2VzbiYjeDI3O3QgaGF2ZSBmaXhlZCBleGVjdXRpb24gdGltaW5nIGxpa2Ugc2V0VGltZW91dCBvciBQcm9taXNlLiBTYXkKICAgICAgICBpdCYjeDI3O3MgcGFydCBvZiBSZW5kZXJpbmcsIGJ1dCBpdCBkb2VzbiYjeDI3O3QgZG8gYW55IGFjdHVhbCBkcmF3aW5nCiAgICAgICAgd29yay4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPlRoZSBhY3R1YWwgc2l0dWF0aW9uIGlzIHRoaXM6PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBBZnRlciBlYWNoIEV2ZW50IExvb3Agcm91bmQgY29tcGxldGVzLCB0aGUgYnJvd3NlciBjaGVja3MgaWYgc2NyZWVuCiAgICAgICAgdXBkYXRlcyBhcmUgbmVlZGVkLiBJZiBuZWVkZWQsIGl0IGV4ZWN1dGVzIGFsbCBxdWV1ZWQgckFGIGNhbGxiYWNrcywKICAgICAgICB0aGVuIHN0YXJ0cyB0aGUgcmVhbCByZW5kZXJpbmcgd29yayAoU3R5bGUsIExheW91dCwgUGFpbnQgc3R1ZmYpLiBTbyByQUYKICAgICAgICBpcyBsaWtlIHRoZSAmcXVvdDtmaW5hbCB1bHRpbWF0dW0mcXVvdDsgYmVmb3JlIHJlbmRlcmluZzoKICAgICAgPC9wPgogICAgICA8YmxvY2txdW90ZSBjbGFzcz0iIj4KICAgICAgICB3YW50IHRvIGNoYW5nZSBET00/IE5vdyYjeDI3O3MgeW91ciBsYXN0IGNoYW5jZSwgbWlzcyB0aGlzIHZpbGxhZ2UgYW5kCiAgICAgICAgdGhlcmUmI3gyNztzIG5vIG5leHQgc2hvcC4KICAgICAgPC9ibG9ja3F1b3RlPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBUaGUgYnJvd3NlciBpcyBhYm91dCB0byBzdGFydCBjYWxjdWxhdGluZyBzdHlsZXMsIGxheW91dCwgYW5kIGRyYXdpbmcuCiAgICAgICAgVGhpcyBpcyB3aHkgY2hhbmdpbmcgc3R5bGVzIGluIHJBRiBydW5zIHNtb290aGVyIHRoYW4gaW4gc2V0VGltZW91dC4KICAgICAgICBzZXRUaW1lb3V0IG1pZ2h0IGV4ZWN1dGUgYXQgYW55IHRpbWUgZHVyaW5nIHRoZSByZW5kZXIgY3ljbGUsIGJ1dCByQUYKICAgICAgICBndWFyYW50ZWVzIGV4ZWN1dGlvbiBiZWZvcmUgcmVuZGVyaW5nLCBhdm9pZGluZyB1bm5lY2Vzc2FyeSByZXBhaW50cy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8c3Ryb25nCiAgICAgICAgICA+U2ltcGx5IHB1dDogckFGIGlzIHRoZSBtb21lbnQgd2hlbiB0aGUgYnJvd3NlciBzYXlzICZxdW90O0kmI3gyNzttCiAgICAgICAgICBhYm91dCB0byBzdGFydCBkcmF3aW5nLCBkbyB5b3UgaGF2ZSBhbnl0aGluZyBlbHNlIHRvIGNoYW5nZT88L3N0cm9uZwogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxoMyBjbGFzcz0iIj5GcmFtZSBEcm9wcGluZzogV2hlbiBUaW1lIEJ1ZGdldCBHb2VzIE92ZXI8L2gzPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBGcmFtZSBkcm9wcGluZyBtZWFucyB0aGUgYnJvd3NlciBjYW4mI3gyNzt0IGNvbXBsZXRlIGEgZnJhbWUgdXBkYXRlCiAgICAgICAgd2l0aGluIGV4cGVjdGVkIHRpbWUsIGNhdXNpbmcgc2NyZWVuIHN0dXR0ZXJpbmcuIEZvciA2MEh6IHNjcmVlbnMsCiAgICAgICAgdXBkYXRlcyBzaG91bGQgaGFwcGVuIGV2ZXJ5IDE2bXM7IGZvciAxMjBIeiwgZXZlcnkgOC4zM21zLiBXaGVuCiAgICAgICAgSmF2YVNjcmlwdCBleGVjdXRpb24gdGltZSBleGNlZWRzIHRoaXMgYnVkZ2V0LCBpdCBjYXVzZXMgZnJhbWUgc2tpcHBpbmcuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBXaGVuIEphdmFTY3JpcHQgZXhlY3V0aW9uIHRha2VzIHRvbyBsb25nLCBsaWtlIHNvbWUgY29kZSBibG9ja2luZyBmb3IKICAgICAgICA0MG1zLCBpdCBkaXNydXB0cyB0aGlzIHJoeXRobS4gVGhlIHJBRiBjYWxsYmFjayB0aGF0IHNob3VsZCBleGVjdXRlIGF0CiAgICAgICAgMTZtcyBnZXRzIGRlbGF5ZWQgdG8gNTBtcywgY2F1c2luZyBmcmFtZSBza2lwcGluZy4gVXNlcnMgZXhwZWN0CiAgICAgICAgYW5pbWF0aW9uIHVwZGF0ZXMgZXZlcnkgMTZtcywgYnV0IG5vdyBpdCBiZWNvbWVzIHVwZGF0ZXMgZXZlcnkgMzNtcywKICAgICAgICA1MG1zLCBvciBldmVuIGxvbmdlciBpbnRlcnZhbHMsIG1ha2luZyB0aGUgc2NyZWVuIGFwcGVhcgogICAgICAgICZxdW90O3N0dXR0ZXJ5LiZxdW90OwogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PHN0cm9uZz5GcmFtZSBkcm9wcGluZyB0ZXN0Ojwvc3Ryb25nPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVGhpcyBmcmFtZSBkcm9wcGluZyBwaGVub21lbm9uIGlzIG9idmlvdXMgaW4gQ2hyb21lLCBtb3JlIG9idmlvdXMgd2hlbgogICAgICAgIGFkanVzdGluZyAmcXVvdDs0eCBzbG93ZG93biZxdW90OyBpbiBEZXZUb29scyBQZXJmb3JtYW5jZS4gRmlyZWZveAogICAgICAgIHBlcmZvcm1zIHJlbGF0aXZlbHkgbGVzcyBvYnZpb3VzbHkuCiAgICAgIDwvcD4KICAgICAgPHNjcmlwdAogICAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICA+PC9zY3JpcHQ+CiAgICAgIDxsaW5rCiAgICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IgogICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAvPgogICAgICA8cHJlCiAgICAgICAgY2xhc3M9ImNvZGUgY29kZS13cmFwIgogICAgICA+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+Y29uc3QgZ2xvYmFsU3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTsKCmZ1bmN0aW9uIGJ1c3lMb29wKG1zKSB7CiAgY29uc3QgZW5kID0gcGVyZm9ybWFuY2Uubm93KCkgKyBtczsKICB3aGlsZSAocGVyZm9ybWFuY2Uubm93KCkgJmx0OyBlbmQpIHt9Cn0KCmZ1bmN0aW9uIGFuaW1hdGUobm93KSB7CiAgY29uc3QgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGdsb2JhbFN0YXJ0OwogIGNvbnNvbGUubG9nKGByQUYgZXhlY3V0aW9uOiAke2N1cnJlbnRUaW1lLnRvRml4ZWQoMSl9bXNgKTsKCiAgZG9jdW1lbnQuYm9keS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke01hdGguc2luKG5vdyAvIDEwMCkgKiAxMDB9cHgpYDsKICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7Cn0KCnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKCi8vIFNpbXVsYXRlIEpTIGJsb2NraW5nCnNldEludGVydmFsKCgpID0mZ3Q7IHsKICBjb25zdCBiZWZvcmVCbG9jayA9IHBlcmZvcm1hbmNlLm5vdygpIC0gZ2xvYmFsU3RhcnQ7CiAgY29uc29sZS5sb2coYHNldEludGVydmFsIHN0YXJ0cyBibG9ja2luZzogJHtiZWZvcmVCbG9jay50b0ZpeGVkKDEpfW1zYCk7CgogIGJ1c3lMb29wKDEwMCk7IC8vIEJsb2NrIGZvciAxMDBtcwoKICBjb25zdCBhZnRlckJsb2NrID0gcGVyZm9ybWFuY2Uubm93KCkgLSBnbG9iYWxTdGFydDsKICBjb25zb2xlLmxvZyhgc2V0SW50ZXJ2YWwgYmxvY2tpbmcgZW5kczogJHthZnRlckJsb2NrLnRvRml4ZWQoMSl9bXNgKTsKfSwgMTAwMCk7PC9jb2RlPjwvcHJlPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDMgY2xhc3M9IiI+Q29vcGVyYXRpb24gd2l0aCBFdmVudCBMb29wPC9oMz4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgSW4gYnJvd3NlcnMsIE1pY3JvIGFuZCBNYWNybyB0YXNrcyBkb24mI3gyNzt0IGhhdmUgcHJpb3JpdHkgY29uY2VwdHMsCiAgICAgICAgb25seSBleGVjdXRpb24gdGltaW5nIHJ1bGVzLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE1pY3JvdGFza3MgbWlnaHQgZGVsYXkgckFGIGV4ZWN1dGlvbi4gSWYgUHJvbWlzZS50aGVuIGNvbnRhaW5zCiAgICAgICAgdGltZS1jb25zdW1pbmcgb3BlcmF0aW9ucywgaXQgZGlyZWN0bHkgYWZmZWN0cyBhbmltYXRpb24gc21vb3RobmVzcywKICAgICAgICBiZWNhdXNlIE1pY3JvdGFza3MgbXVzdCBhbGwgY29tcGxldGUgYmVmb3JlIHJBRi4KICAgICAgPC9wPgogICAgICA8c2NyaXB0CiAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgID48L3NjcmlwdD4KICAgICAgPGxpbmsKICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgIC8+CiAgICAgIDxwcmUKICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4vLyBTaG93IE1pY3JvdGFzayBibG9ja2luZyByQUYgcHJvYmxlbQpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0mZ3Q7IHsKICAvLyBTaW11bGF0ZSB0aW1lLWNvbnN1bWluZyBNaWNyb3Rhc2sKICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpOwogIHdoaWxlIChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ICZsdDsgNTAwMCkge30gLy8gQmxvY2sgZm9yIDUwMDBtcwogIGNvbnNvbGUubG9nKCYjeDI3O01pY3JvdGFzayBjb21wbGV0ZSwgYnV0IGJsb2NrZWQgYW5pbWF0aW9uJiN4Mjc7KTsKfSk7CgpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPSZndDsgewogIGNvbnNvbGUubG9nKCYjeDI3O3JBRiBkZWxheWVkIGV4ZWN1dGlvbiwgYW5pbWF0aW9uIG1pZ2h0IHN0dXR0ZXImI3gyNzspOwp9KTs8L2NvZGU+PC9wcmU+CiAgICAgIDxwIGNsYXNzPSIiPkNvbXBsZXggZXhlY3V0aW9uIG9yZGVyIGV4YW1wbGU6PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBUaGUgc2V0VGltZW91dCBoZXJlLCBpZiBkZWxheSBpcyBncmVhdGVyIHRoYW4gMG1zLCBoYXMgc29tZSBjaGFuY2Ugb2YKICAgICAgICBleGVjdXRpbmcgbGF0ZXIgdGhhbiByQUYgMiwgYmVjYXVzZSBzZXRUaW1lb3V0KGZuLCAwKSBhY3R1YWwgbWluaW11bQogICAgICAgIGRlbGF5IGlzIDRtcyAoSFRNTDUgc3RhbmRhcmQpLCBwbHVzIE1hY3JvdGFzayBleGVjdXRpb24gdGltaW5nLCBtaWdodAogICAgICAgIGdldCBwdXNoZWQgdG8gbmV4dCBmcmFtZS4KICAgICAgPC9wPgogICAgICA8c2NyaXB0CiAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgID48L3NjcmlwdD4KICAgICAgPGxpbmsKICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgIC8+CiAgICAgIDxwcmUKICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtSmF2YVNjcmlwdCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj4gIGNvbnNvbGUubG9nKCYjeDI3O3NjcmlwdCBzdGFydCYjeDI3Oyk7CgogIHNldFRpbWVvdXQoKCkgPSZndDsgY29uc29sZS5sb2coJiN4Mjc7c2V0VGltZW91dCYjeDI3OyksIDApOwogIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPSZndDsgY29uc29sZS5sb2coJiN4Mjc7bWljcm90YXNrJiN4Mjc7KSk7CgogIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9Jmd0OyB7CiAgICBjb25zb2xlLmxvZygmI3gyNztyQUYgMSYjeDI3Oyk7CiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPSZndDsgewogICAgICBjb25zb2xlLmxvZygmI3gyNztyQUYgMiYjeDI3Oyk7CiAgICB9KTsKICB9KTsKCiAgY29uc29sZS5sb2coJiN4Mjc7c2NyaXB0IGVuZCYjeDI3Oyk7CgogIC8qCiAgT3V0cHV0IG9yZGVyOgogIHNjcmlwdCBzdGFydAogIHNjcmlwdCBlbmQKICBtaWNyb3Rhc2sKICByQUYgMQogIHNldFRpbWVvdXQKICByQUYgMgogICovPC9jb2RlPjwvcHJlPgogICAgICA8aDMgY2xhc3M9IiI+ckFGIEFwcGxpY2F0aW9ucyBpbiBSZWFjdCBGcmFtZXdvcms8L2gzPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBUaHJvdWdoIHRlc3Rpbmcgd2UgY2FuIG9ic2VydmUgdGhhdCBSZWFjdCYjeDI3O3MgdXBkYXRlIGZsb3cgaGFzIGNsZWFyCiAgICAgICAgdGltaW5nIHJlbGF0aW9uc2hpcHMgd2l0aCByQUYgY2FsbGJhY2tzLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHVsIGNsYXNzPSJ0b2dnbGUiPgogICAgICAgIDxsaT4KICAgICAgICAgIDxkZXRhaWxzIG9wZW49IiI+CiAgICAgICAgICAgIDxzdW1tYXJ5PlJlZ2lzdGVyaW5nIHJBRiBpbiBldmVudCBoYW5kbGVyczwvc3VtbWFyeT4KICAgICAgICAgICAgPHNjcmlwdAogICAgICAgICAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIKICAgICAgICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IgogICAgICAgICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAgICAgICA+PC9zY3JpcHQ+CiAgICAgICAgICAgIDxsaW5rCiAgICAgICAgICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIKICAgICAgICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IgogICAgICAgICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAgICAgICAvPgogICAgICAgICAgICA8cHJlCiAgICAgICAgICAgICAgY2xhc3M9ImNvZGUgY29kZS13cmFwIgogICAgICAgICAgICA+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+Y29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9Jmd0OyB7CiAgY29uc3QgY2xpY2tUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgY29uc29sZS5sb2coYDEuIENsaWNrIGV2ZW50OiAke2NsaWNrVGltZS50b0ZpeGVkKDEpfW1zYCk7CgogIHJlcXVlc3RBbmltYXRpb25GcmFtZSgocmFmVGltZSkgPSZndDsgewogICAgY29uc29sZS5sb2coYDQuIHJBRiBjYWxsYmFjazogJHtyYWZUaW1lLnRvRml4ZWQoMSl9bXNgKTsKICB9KTsKCiAgc2V0Q291bnQoYyA9Jmd0OyBjICsgMSk7CiAgY29uc29sZS5sb2coYDIuIHNldFN0YXRlIGNvbXBsZXRlOiAke3BlcmZvcm1hbmNlLm5vdygpLnRvRml4ZWQoMSl9bXNgKTsKfTsKCmNvbnNvbGUubG9nKGAzLiByZW5kZXI6ICR7cGVyZm9ybWFuY2Uubm93KCkudG9GaXhlZCgxKX1tc2ApOwoKdXNlTGF5b3V0RWZmZWN0KCgpID0mZ3Q7IHsKICBjb25zb2xlLmxvZyhgNS4gdXNlTGF5b3V0RWZmZWN0OiAke3BlcmZvcm1hbmNlLm5vdygpLnRvRml4ZWQoMSl9bXNgKTsKfSwgW2NvdW50XSk7Cgp1c2VFZmZlY3QoKCkgPSZndDsgewogIGNvbnNvbGUubG9nKGA2LiB1c2VFZmZlY3Q6ICR7cGVyZm9ybWFuY2Uubm93KCkudG9GaXhlZCgxKX1tc2ApOwp9LCBbY291bnRdKTsKCi8qClR5cGljYWwgb3V0cHV0OgoxLiBDbGljayBldmVudDogMTc1OC4wbXMKMi4gc2V0U3RhdGUgY29tcGxldGU6IDE3NTkuMG1zCjMuIHJlbmRlcjogMTc1OS4wbXMKNS4gdXNlTGF5b3V0RWZmZWN0OiAxNzU5LjBtcwo2LiB1c2VFZmZlY3Q6IDE3NTkuMG1zCjQuIHJBRiBjYWxsYmFjazogMTc2OS43bXMgKGRlbGF5ZWQgYWJvdXQgMTBtcykKKi88L2NvZGU+PC9wcmU+CiAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgT2JzZXJ2YXRpb24gcmVzdWx0czogc2V0U3RhdGUvcmVuZGVyL3VzZUxheW91dEVmZmVjdC91c2VFZmZlY3QgZXhlY3V0ZQogICAgICAgIGFsbW9zdCBzaW11bHRhbmVvdXNseSwgckFGIGNhbGxiYWNrIGZvbGxvd3Mgc2hvcnRseSBhZnRlcgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8dWwgY2xhc3M9InRvZ2dsZSI+CiAgICAgICAgPGxpPgogICAgICAgICAgPGRldGFpbHMgb3Blbj0iIj4KICAgICAgICAgICAgPHN1bW1hcnk+UmVnaXN0ZXJpbmcgckFGIGluIFJlYWN0IGxpZmVjeWNsZTwvc3VtbWFyeT4KICAgICAgICAgICAgPHNjcmlwdAogICAgICAgICAgICAgIHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3ByaXNtLm1pbi5qcyIKICAgICAgICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi03WjlKM2wxK0VZZmVhUEtjR1h1M01TLzdUK3cxOVd0S1FZL24reHptdzRoWmhKOXR5WW1jVVMrNFFxQWx6aGljRTVMQWZNUVNGM2lGVEs5YlFkVHhYZz09IgogICAgICAgICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAgICAgICA+PC9zY3JpcHQ+CiAgICAgICAgICAgIDxsaW5rCiAgICAgICAgICAgICAgcmVsPSJzdHlsZXNoZWV0IgogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC90aGVtZXMvcHJpc20ubWluLmNzcyIKICAgICAgICAgICAgICBpbnRlZ3JpdHk9InNoYTUxMi10TjdFYzZ6QUZhVlNHM1RwTkFLdGs0RE9ITnBTd0tIeHhyc2l3NEdIS0VTR1BzNW5qbi8wc01DVU1sMnN2VjR3bzRCSy9yQ1A3anVZeit6eCtsNm9lUT09IgogICAgICAgICAgICAgIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiCiAgICAgICAgICAgICAgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIgogICAgICAgICAgICAvPgogICAgICAgICAgICA8cHJlCiAgICAgICAgICAgICAgY2xhc3M9ImNvZGUgY29kZS13cmFwIgogICAgICAgICAgICA+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLUphdmFTY3JpcHQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbCI+dXNlTGF5b3V0RWZmZWN0KCgpID0mZ3Q7IHsKICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICBjb25zdCBzdGFydEZyYW1lID0gTWF0aC5mbG9vcihzdGFydFRpbWUgLyA4LjMzKTsgLy8gMTIwSHogY2FsY3VsYXRpb24KCiAgY29uc29sZS5sb2coCiAgICBgJWN1c2VMYXlvdXRFZmZlY3QlYzogJHtzdGFydFRpbWUudG9GaXhlZCgxKX1tcyAoRnJhbWUgJHtzdGFydEZyYW1lfSlgLAogICAgJiN4Mjc7YmFja2dyb3VuZDogIzIxOTZGMzsgY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAycHggNHB4OyYjeDI3OywgJiN4Mjc7JiN4Mjc7CiAgKTsKCiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0mZ3Q7IHsKICAgIGNvbnN0IHJhZlRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgIGNvbnN0IHJhZkZyYW1lID0gTWF0aC5mbG9vcihyYWZUaW1lIC8gOC4zMyk7CiAgICBjb25zdCBmcmFtZURpZmYgPSByYWZGcmFtZSAtIHN0YXJ0RnJhbWU7CiAgICBjb25zdCB0aW1lRGlmZiA9IChyYWZUaW1lIC0gc3RhcnRUaW1lKS50b0ZpeGVkKDEpOwoKICAgIC8vIERlY2lkZSBiYWNrZ3JvdW5kIGNvbG9yIGJhc2VkIG9uIGRlbGF5ZWQgZnJhbWVzCiAgICBjb25zdCBiZ0NvbG9yID0gZnJhbWVEaWZmICZndDs9IDIgPyAmI3gyNzsjRjQ0MzM2JiN4Mjc7IDogJiN4Mjc7IzRDQUY1MCYjeDI3OzsKCiAgICBjb25zb2xlLmxvZygKICAgICAgYCVjckFGIENhbGxiYWNrJWM6ICR7cmFmVGltZS50b0ZpeGVkKDEpfW1zIChGcmFtZSAke3JhZkZyYW1lfSkgfCBEZWxheWVkICR7ZnJhbWVEaWZmfQpmcmFtZXMgfCAke3RpbWVEaWZmfW1zYCwKICAgICAgYGJhY2tncm91bmQ6ICR7YmdDb2xvcn07IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMnB4IDRweDsgZm9udC13ZWlnaHQ6IGJvbGQ7YCwgJiN4Mjc7JiN4Mjc7CiAgICApOwogIH0pOwp9LCBbY291bnRdKTs8L2NvZGU+PC9wcmU+CiAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgV2hlbiByZWdpc3RlcmluZyByQUYgaW4gdXNlTGF5b3V0RWZmZWN0LCB0aGUgZGVsYXkgcGhlbm9tZW5vbiBiZWNvbWVzCiAgICAgICAgbW9yZSBvYnZpb3VzOgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgUmVhY3QgY29tcGxldGVzIGFsbCB1cGRhdGVzIHdpdGhpbiBsb2dpY2FsIGZyYW1lcyAocmVuZGVyIOKGkgogICAgICAgIHVzZUxheW91dEVmZmVjdCDihpIgdXNlRWZmZWN0KSBhbG1vc3Qgc2ltdWx0YW5lb3VzbHkgKCZsdDsgMW1zCiAgICAgICAgZGlmZmVyZW5jZSkuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgS2V5IGZpbmRpbmc6IHJBRiBjYWxsYmFja3MgcmVnaXN0ZXJlZCBpbiBSZWFjdCBsaWZlY3ljbGUgbWV0aG9kcyBkZWxheQogICAgICAgIG1vcmUgdGhhbiB0aG9zZSBpbiBldmVudCBoYW5kbGVycy4gUG9zc2libGUgcmVhc29uczoKICAgICAgPC9wPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIxIj4KICAgICAgICA8bGk+CiAgICAgICAgICBFdmVudCBoYW5kbGVycyByZWdpc3RlciByQUYgZGlyZWN0bHksIGNhdGNoaW5nIHRoZSBjdXJyZW50CiAgICAgICAgICBmcmFtZSYjeDI3O3MgdGltZSB3aW5kb3cKICAgICAgICA8L2xpPgogICAgICA8L29sPgogICAgICA8b2wgdHlwZT0iMSIgY2xhc3M9Im51bWJlcmVkLWxpc3QiIHN0YXJ0PSIyIj4KICAgICAgICA8bGk+CiAgICAgICAgICBMaWZlY3ljbGUgbWV0aG9kcyBnbyB0aHJvdWdoIFJlYWN0IFNjaGVkdWxlciwgY2F1c2luZyBsYXRlcgogICAgICAgICAgcmVnaXN0cmF0aW9uIHRpbWluZyBhbmQgbWlzc2luZyB0aGUgY3VycmVudCBmcmFtZTxiciAvPjxtYXJrCiAgICAgICAgICAgIGNsYXNzPSJoaWdobGlnaHQtYmx1ZSIKICAgICAgICAgICAgPjxzdHJvbmcKICAgICAgICAgICAgICA+KEJ1dCBJJiN4Mjc7bSBqdXN0IHNwZWN1bGF0aW5nLCBnb2luZyBkZWVwZXIgaXMgYmV5b25kIG15IGN1cnJlbnQKICAgICAgICAgICAgICBhYmlsaXR5KTwvc3Ryb25nCiAgICAgICAgICAgID48L21hcmsKICAgICAgICAgID48YnIgLz4KICAgICAgICA8L2xpPgogICAgICA8L29sPgogICAgICA8c2NyaXB0CiAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvcHJpc20ubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLTdaOUozbDErRVlmZWFQS2NHWHUzTVMvN1QrdzE5V3RLUVkvbit4em13NGhaaEo5dHlZbWNVUys0UXFBbHpoaWNFNUxBZk1RU0YzaUZUSzliUWRUeFhnPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgID48L3NjcmlwdD4KICAgICAgPGxpbmsKICAgICAgICByZWw9InN0eWxlc2hlZXQiCiAgICAgICAgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcHJpc20vMS4yOS4wL3RoZW1lcy9wcmlzbS5taW4uY3NzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXRON0VjNnpBRmFWU0czVHBOQUt0azRET0hOcFN3S0h4eHJzaXc0R0hLRVNHUHM1bmpuLzBzTUNVTWwyc3ZWNHdvNEJLL3JDUDdqdVl6K3p4K2w2b2VRPT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIKICAgICAgICByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiCiAgICAgIC8+CiAgICAgIDxwcmUKICAgICAgICBjbGFzcz0iY29kZSBjb2RlLXdyYXAiCiAgICAgID48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtUGxhaW4gVGV4dCIgc3R5bGU9IndoaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsIj5UaW1lbGluZSAoMTIwSHogZXhhbXBsZSwgOC4zM21zIHBlciBmcmFtZSkKMG1zICAgICBFdmVudCB0cmlnZ2VyZWQgKG9uQ2xpY2sgZXRjLikKMW1zICAgICBSZWFjdCBzY2hlZHVsaW5nIHVwZGF0ZSBiZWdpbnMKICAgICAgICDilJzilIDilIAgcmVuZGVyKCkgZXhlY3V0ZXMsIGNhbGN1bGF0ZXMgbmV3IHZpcnR1YWwgRE9NCiAgICAgICAg4pSc4pSA4pSAIERPTSB1cGRhdGVzCiAgICAgICAg4pSc4pSA4pSAIHVzZUxheW91dEVmZmVjdCAoc3luY2hyb25vdXMgZXhlY3V0aW9uKQogICAgICAgIOKUlOKUgOKUgCB1c2VFZmZlY3QgKHN5bmNocm9ub3VzIGV4ZWN1dGlvbikKM21zICAgICBSZWFjdCB1cGRhdGUgY29tcGxldGVzCgo4LjMzbXMgIE5leHQgZnJhbWUgYmVnaW5zLCByQUYgY2FsbGJhY2sgZXhlY3V0ZXMKICAgICAgICDilJTilIDilIAgUHJlcGFyaW5nIHJlbmRlcmluZyBmbG93Cgo5bXMgICAgIEJyb3dzZXIgcmVuZGVyaW5nIGJlZ2lucwogICAgICAgIOKUnOKUgOKUgCBTdHlsZSBDYWxjdWxhdGlvbgogICAgICAgIOKUnOKUgOKUgCBMYXlvdXQKICAgICAgICDilJzilIDilIAgUGFpbnQKICAgICAgICDilJTilIDilIAgQ29tcG9zaXRlPC9jb2RlPjwvcHJlPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPGgxIGNsYXNzPSIiPkV2ZW50IFRpbWluZyBhbmQgTGlmZWN5Y2xlPC9oMT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgVGhlIGNvbXBsZXRlIGV2ZW50IHNlcXVlbmNlIGZyb20gSFRNTCBsb2FkaW5nIHRvIHBhZ2UgdXNhYmlsaXR5LAogICAgICAgIHRyYWRpdGlvbmFsbHkgdW5kZXJzdG9vZCBhczoKICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIEhUTUwgcGFyc2luZyDihpIgRE9NQ29udGVudExvYWRlZCDihpIgRnJhbWV3b3JrIGluaXRpYWxpemF0aW9uIOKGkgogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSDihpIgRmlyc3QgUGFpbnQg4oaSIHdpbmRvdy5vbmxvYWQg4oaSCiAgICAgICAgcmVxdWVzdElkbGVDYWxsYmFjawogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1KYXZhU2NyaXB0IiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPiAgMG1zICDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICAgICAgICAg4pSCIEJyb3dzZXIgc2VuZHMgcmVxdWVzdCwgc3RhcnRzIGRvd25sb2FkaW5nIEhUTUwvQ1NTL0pTL2ltYWdlcwogICAgICAgICAgICDilIIg4pSc4pSAIDE2bXMgZnJhbWUgbG9vcCBiZWdpbnMsIGJ1dCBtYXkgaGF2ZSBubyByQUYgY2FsbGJhY2tzCiAgICAgICAgICAgIOKUgiDilJTilIAgVXNlciBzY3JlZW46IG5vdGhpbmcKICAgICAgICAgICAg4pSCCiAgICAgICAgICAgIOKUgiBQYXJzaW5nIEhUTUwg4oaSIGJ1aWxkaW5nIERPTSBUcmVlCiAgICAgICAgICAgIOKUgiBQYXJzaW5nIENTUyDihpIgYnVpbGRpbmcgQ1NTT00KICAgICAgICAgICAg4pSCIFBvc3NpYmxlIHN5bmNocm9ub3VzIEpTIGJsb2NraW5nIChzY3JpcHQgc3JjIHN5bmNocm9ub3VzIGxvYWRpbmcgJmFtcDsgZXhlY3V0aW9uKQogICAgICAgICAgICDilIIg4pSc4pSAIElmIEpTIHJlZ2lzdGVycyByQUYsIG9ubHkgdGhlbiB3aWxsIGNhbGxiYWNrcyBleGVjdXRlCiAgICAgICAgICAgIOKUgiDilJTilIAgVXNlciBzY3JlZW46IG5vdGhpbmcKICAgICAgICAgICAg4pSCCiAgICAgICAgICAgIOKUgiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAKICAgICAgICAgICAg4pSCIOKUgiBET01Db250ZW50TG9hZGVkIChhYm91dCAxMDAtMzAwbXMpIOKUgiDihpAgRE9NIHN0cnVjdHVyZSBjb21wbGV0ZSwgYnV0IGltYWdlcyBub3QgbG9hZGVkCiAgICAgICAgICAgIOKUgiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKICAgICAgICAgICAg4pSCIOKUlOKUgCBVc2VyIHNjcmVlbjogbm90aGluZwogICAgICAgICAgICDilIIKICAgICAgICAgICAg4pSCIFZ1ZS9SZWFjdCBpbml0aWFsaXphdGlvbiwgc3RhcnRzIHJlbmRlciDihpIgZ2VuZXJhdGVzIHZpcnR1YWwgRE9NCiAgICAgICAgICAgIOKUgiDilJzilIAgRnJhbWV3b3JrIHN0YXJ0cyBjYWxjdWxhdGluZyBWaXJ0dWFsIERPTQogICAgICAgICAgICDilIIg4pSU4pSAIFVzZXIgc2NyZWVuOiBub3RoaW5nCiAgICAgICAgICAgIOKUggogICAgICAgICAgICDilIIgZGlmZmluZyArIHBhdGNoIERPTSAoYWJvdXQgMTUwLTI1MG1zKQogICAgICAgICAgICDilIIg4pSc4pSAIEpTIHRocmVhZDogY29tcGFyZSB2aXJ0dWFsIERPTSBkaWZmZXJlbmNlcywgb3BlcmF0ZSByZWFsIERPTSwgaW5zZXJ0IG5vZGVzCiAgICAgICAgICAgIOKUgiDilJzilIAgQnJvd3NlciByZW5kZXJpbmc6IERPTSBzdHJ1Y3R1cmUgY2hhbmdlcywgd2FpdGluZyBmb3IgcGFpbnQKICAgICAgICAgICAg4pSCIOKUnOKUgCBGcmFtZXdvcmsgbWlnaHQgc3RhcnQgcmVnaXN0ZXJpbmcgckFGIGNhbGxiYWNrcwogICAgICAgICAgICDilIIg4pSc4pSAIE9ubHkgbm93IGRvIGFjdHVhbCByQUYgY2FsbGJhY2tzIHN0YXJ0IGV4ZWN1dGluZwogICAgICAgICAgICDilIIg4pSU4pSAIFVzZXIgc2NyZWVuOiBub3RoaW5nCiAgICAgICAgICAgIOKUggogICAgICAgICAgICDilIIgVnVlIGJlZm9yZU1vdW50IOKGkiBtb3VudGVkIChhYm91dCAyMDAtNDAwbXMpCiAgICAgICAgICAgIOKUgiDilJzilIAgQ29tcG9uZW50cyBtaWdodCByZWdpc3RlciBtb3JlIHJBRiBhZnRlciBtb3VudGVkCiAgICAgICAgICAgIOKUgiDilJzilIAgSlMgdGhyZWFkOiDinIUgRE9NIGluc2VydGVkLCDinZdub3QgeWV0IHBhaW50ZWQKICAgICAgICAgICAg4pSCIOKUlOKUgCBVc2VyIHNjcmVlbjogbm90aGluZwogICAgICAgICAgICDilIIKICAgICAgICAgICAg4pSCIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayBleGVjdXRpb24gKHJBRikg4oaQIGlmIHJlZ2lzdGVyZWQKICAgICAgICAgICAg4pSCIOKUnOKUgCBKUyB0aHJlYWQ6IGZpbmFsIHVwZGF0ZSBwcmVwYXJhdGlvbgogICAgICAgICAgICDilIIg4pSU4pSAIFVzZXIgc2NyZWVuOiDimqDvuI8gc2NyZWVuIGJlaW5nIGdlbmVyYXRlZAogICAgICAgICAgICDilIIKICAgICAgICAgICAg4pSCIFBhaW50ICZhbXA7IENvbXBvc2l0ZSAoYWJvdXQgMjAwLTUwMG1zKQogICAgICAgICAgICDilIIg4oaTIEZpcnN0IFBhaW50IChGUCkgb2NjdXJzOiBzY3JlZW4gc3RhcnRzIHNob3dpbmcgY29udGVudAogICAgICAgICAgICDilIIg4pSc4pSAIEJyb3dzZXIgcmVuZGVyaW5nOiBTdHlsZSDihpIgTGF5b3V0IOKGkiBQYWludCDihpIgQ29tcG9zaXRlCiAgICAgICAgICAgIOKUgiDilJTilIAgVXNlciBzY3JlZW46IGZpcnN0IGJhdGNoIG9mIGNvbnRlbnQKICAgICAgICAgICAg4pSCCiAgICAgICAgICAgIOKUgiBGaXJzdCBDb250ZW50ZnVsIFBhaW50IChGQ1ApOiBmaXJzdCBjb250ZW50IGVsZW1lbnQgZmluaXNoZXMgcGFpbnRpbmcgKGFib3V0IDMwMC02MDBtcykKICAgICAgICAgICAg4pSCIOKUnOKUgCBJZiBhbmltYXRpb25zIG9yIGNvbnRpbnVvdXMgdXBkYXRlcyBleGlzdCwgckFGIGNhbGxiYWNrcyBjb250aW51ZSBleGVjdXRpbmcKICAgICAgICAgICAg4pSCIOKUlOKUgCBVc2VyIHNjcmVlbjogbWVhbmluZ2Z1bCBjb250ZW50IGFwcGVhcnMKICAgICAgICAgICAg4pSCCiAgICAgICAgICAgIOKUgiBXZWIgcmVzb3VyY2VzIGNvbnRpbnVlIGxvYWRpbmcgKGltYWdlcywgaWZyYW1lcykKICAgICAgICAgICAg4pSCIOKUnOKUgCBMb2FkaW5nIHByb2Nlc3MgbWlnaHQgaGF2ZSBhbmltYXRpb24gZWZmZWN0cywgZ2VuZXJhdGluZyBtb3JlIHJBRgogICAgICAgICAgICDilIIg4pSU4pSAIFVzZXIgc2NyZWVuOiBjb250ZW50IGdyYWR1YWxseSBlbnJpY2hlcwogICAgICAgICAgICDilIIKICAgICAgICAgICAg4pSCIExhcmdlc3QgQ29udGVudGZ1bCBQYWludCAoTENQKSAoYWJvdXQgMTAwMC0yNTAwbXMpCiAgICAgICAgICAgIOKUgiDilJzilIAgQnkgbm93IGlmIHJBRiB3YXMgcmVnaXN0ZXJlZCwgYWxyZWFkeSBleGVjdXRlZCA2MCsgdGltZXMKICAgICAgICAgICAg4pSCIOKUlOKUgCBVc2VyIHNjcmVlbjogbWFpbiBjb250ZW50IGNvbXBsZXRlCiAgICAgICAgICAgIOKUggogICAgICAgICAgICDilIIgd2luZG93Lm9ubG9hZCBldmVudCB0cmlnZ2VycyAoYWJvdXQgMTIwMC0zMDAwbXMpIOKGkCBhbGwgcmVzb3VyY2VzIGxvYWRlZAogICAgICAgICAgICDilIIg4pSc4pSAIEFmdGVyIG9ubG9hZCBtaWdodCByZWdpc3RlciBuZXcgckFGIGNhbGxiYWNrcwogICAgICAgICAgICDilIIg4pSc4pSAIEpTIHRocmVhZDogYWxsIHJlc291cmNlcyBwcm9jZXNzZWQKICAgICAgICAgICAg4pSCIOKUlOKUgCBVc2VyIHNjcmVlbjogY29tcGxldGUgc2NyZWVuCiAgICAgICAgICAgIOKUggogICAgICAgICAgICDilIIgcmVxdWVzdElkbGVDYWxsYmFjayAocklDKSBleGVjdXRlcyBkdXJpbmcgaWRsZSB0aW1lCiAgICAgICAgICAgIOKUggogIDMwMDBtcyDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKPC9jb2RlPjwvcHJlPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPkJ1dCBhY3R1YWwgc2l0dWF0aW9ucyB2YXJ5IGRlcGVuZGluZyBvbiB3ZWJzaXRlIG5hdHVyZS48L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE1vZGVybiB3ZWJzaXRlcywgZHVlIHRvIGhlYXZ5IHRoaXJkLXBhcnR5IHNjcmlwdCB1c2FnZSwgb2Z0ZW4gc2VlIERDTAogICAgICAgIGRlbGF5ZWQgdW50aWwgYWZ0ZXIgdmlzdWFsIGNvbnRlbnQgKEZDUC9MQ1ApLCBtYWtpbmcgdHJhZGl0aW9uYWwgRENMCiAgICAgICAgdGltaW5nIGp1ZGdtZW50IHVucmVsaWFibGUuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgRkNQIOKGkiBMQ1Ag4oaSIERDTCDihpIgTCAob2JzZXJ2YWJsZSBpbiBEZXZUb29scyAmZ3Q7IFBlcmZvcm1hbmNlKQogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIERDTCB0cmlnZ2VyaW5nIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBzeW5jaHJvbm91cyBzY3JpcHRzIGFuZCBkZWZlcgogICAgICAgIHNjcmlwdHMgdG8gY29tcGxldGUgZXhlY3V0aW9uLCB3aGlsZSBtb2Rlcm4gd2Vic2l0ZXMgb2Z0ZW4gbG9hZCBtYW55CiAgICAgICAgdGhpcmQtcGFydHkgc2VydmljZXMgdGhhdCBkZXBlbmQgb24gRE9NOgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQKICAgICAgICBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuMjkuMC9wcmlzbS5taW4uanMiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItN1o5SjNsMStFWWZlYVBLY0dYdTNNUy83VCt3MTlXdEtRWS9uK3h6bXc0aFpoSjl0eVltY1VTKzRRcUFsemhpY0U1TEFmTVFTRjNpRlRLOWJRZFR4WGc9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgPjwvc2NyaXB0PgogICAgICA8bGluawogICAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgICAgICBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wcmlzbS8xLjI5LjAvdGhlbWVzL3ByaXNtLm1pbi5jc3MiCiAgICAgICAgaW50ZWdyaXR5PSJzaGE1MTItdE43RWM2ekFGYVZTRzNUcE5BS3RrNERPSE5wU3dLSHh4cnNpdzRHSEtFU0dQczVuam4vMHNNQ1VNbDJzdlY0d280QksvckNQN2p1WXorengrbDZvZVE9PSIKICAgICAgICBjcm9zc29yaWdpbj0iYW5vbnltb3VzIgogICAgICAgIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIKICAgICAgLz4KICAgICAgPHByZQogICAgICAgIGNsYXNzPSJjb2RlIGNvZGUtd3JhcCIKICAgICAgPjxjb2RlIGNsYXNzPSJsYW5ndWFnZS1IVE1MIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGwiPiAgJmx0OyEtLSBUaGVzZSBibG9jayBEQ0wgLS0mZ3Q7CiAgJmx0O3NjcmlwdCBzcmM9JnF1b3Q7anF1ZXJ5LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwogICZsdDtzY3JpcHQgZGVmZXIgc3JjPSZxdW90O2FuYWx5dGljcy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKICAmbHQ7c2NyaXB0IGRlZmVyIHNyYz0mcXVvdDttYXJrZXRpbmctdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiAgJmx0O3NjcmlwdCBkZWZlciBzcmM9JnF1b3Q7YWItdGVzdGluZy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKCiAgJmx0OyEtLSBUaGlzIGRvZXNuJiN4Mjc7dCBibG9jayBEQ0wgLS0mZ3Q7CiAgJmx0O3NjcmlwdCBhc3luYyBzcmM9JnF1b3Q7YWRzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OzwvY29kZT48L3ByZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiCiAgICAgICAgICA+ZGVmZXIgc3RyYXRlZ3k6IG5lZWRzIHRvIG9wZXJhdGUgZXhpc3RpbmcgRE9NIGVsZW1lbnRzPC9tYXJrCiAgICAgICAgPiwgbmVlZHMgc2VxdWVudGlhbCBleGVjdXRpb24sIGRvd25sb2FkcyBpbiBwYXJhbGxlbCB3aXRoIEhUTUwgcGFyc2luZywKICAgICAgICBidXQgZXhlY3V0aW9uIGJsb2NrcyBEQ0wKICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBhc3luYyBzdHJhdGVneTogaW5kZXBlbmRlbnQgZnVuY3Rpb25hbGl0eSBzY3JpcHRzLiBDb21wbGV0ZSBtb2R1bGVzCiAgICAgICAgdGhlbXNlbHZlcywgbGlrZSBhZHMsIHRyYWNraW5nLCBjaGF0IHRvb2xzIGV0Yy4sIHRoZWlyIGZhaWx1cmUKICAgICAgICBkb2VzbiYjeDI3O3QgYWZmZWN0IHBhZ2UgY29yZSBmdW5jdGlvbmFsaXR5LCBuZWl0aGVyIGRvd25sb2FkIG5vcgogICAgICAgIGV4ZWN1dGlvbiBibG9ja3MgRENMCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBTaW1wbHkgcHV0OiBhc3luYyBzY3JpcHQgZmFpbHVyZSwgcGFnZSBjYW4gc3RpbGwgZnVuY3Rpb24gbm9ybWFsbHk7CiAgICAgICAgZGVmZXIgc2NyaXB0PGJyIC8+ZmFpbHVyZSBtaWdodCBhZmZlY3QgcGFnZSBmdW5jdGlvbmFsaXR5LgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIEFkZGl0aW9uYWxseSw8YnIgLz48Y29kZQogICAgICAgICAgPiZsdDtsaW5rCiAgICAgICAgICByZWw9eyYjeDI3O3N0eWxlc2hlZXQmI3gyNzt8JiN4Mjc7cHJlbG9hZCYjeDI3O3wmI3gyNztwcmVmZXRjaCYjeDI3O3wmI3gyNztwcmVjb25uZWN0JiN4Mjc7fCYjeDI3O2ljb24mI3gyNzt9PC9jb2RlCiAgICAgICAgPgogICAgICAgIGFyZSB1bnJlbGF0ZWQgdG8gRENMCiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPlRocmVhZCBEaXZpc2lvbjwvaDM+CiAgICAgIDx0YWJsZSBjbGFzcz0ic2ltcGxlLXRhYmxlIj4KICAgICAgICA8dGhlYWQgY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXIiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGggY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciI+RXZlbnQ8L3RoPgogICAgICAgICAgICA8dGggY2xhc3M9InNpbXBsZS10YWJsZS1oZWFkZXItY29sb3Igc2ltcGxlLXRhYmxlLWhlYWRlciI+CiAgICAgICAgICAgICAgVGhyZWFkCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgIDx0aCBjbGFzcz0ic2ltcGxlLXRhYmxlLWhlYWRlci1jb2xvciBzaW1wbGUtdGFibGUtaGVhZGVyIj4KICAgICAgICAgICAgICBLZXkgQ2hhcmFjdGVyaXN0aWNzCiAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+RE9NQ29udGVudExvYWRlZDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5NYWluIFRocmVhZDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5ET00gc3RydWN0dXJlICsgc2NyaXB0cyBjb21wbGV0ZTwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+VnVlIG1vdW50ZWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+TWFpbiBUaHJlYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+Q29tcG9uZW50IGluc2VydGVkIGludG8gRE9NPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+TWFpbiBUaHJlYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+TGFzdCBjaGFuY2UgYmVmb3JlIHJlbmRlcmluZzwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+Rmlyc3QgUGFpbnQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+UGFpbnQvQ29tcG9zaXRvcjwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iIj5BY3R1YWxseSBkcmF3biB0byBzY3JlZW48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSIiPndpbmRvdy5vbmxvYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+TWFpbiBUaHJlYWQ8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9IiI+QWxsIHJlc291cmNlcyBjb21wbGV0ZTwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGJvZHk+CiAgICAgIDwvdGFibGU+CiAgICAgIDxoMyBjbGFzcz0iIj5SZWxhdGlvbnNoaXAgYmV0d2VlbiByQUYsIG9ubG9hZCBhbmQgRmlyc3QgUGFpbnQ/PC9oMz4KICAgICAgPHAgY2xhc3M9IiI+cmVxdWVzdEFuaW1hdGlvbkZyYW1lIOKGkiBGaXJzdCBQYWludCDihpIgd2luZG93Lm9ubG9hZDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgckFGIGRvZXNuJiN4Mjc7dCBoYXBwZW4gYXV0b21hdGljYWxseSAtIGNhbGxiYWNrIGV4ZWN1dGlvbiBjb21wbGV0ZWx5CiAgICAgICAgZGVwZW5kcyBvbiB3aGV0aGVyIGNvZGUgcmVnaXN0ZXJzIHRoZW0uIFRoZSAxNi42N21zIGZyYW1lIGxvb3AKICAgICAgICBjb250aW51ZXMsIGJ1dCBvbmx5IGV4ZWN1dGVzIHdoZW4gY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkCiAgICAgIDwvcD4KICAgICAgPGgzIGNsYXNzPSIiPlJlbGF0aW9uc2hpcCBiZXR3ZWVuIENSUCBhbmQgckFGPzwvaDM+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIE11bHRpcGxlIHJBRiBjYWxsYmFja3MgbWlnaHQgZXhlY3V0ZSBkdXJpbmcgQ1JQIHByb2Nlc3MgKGVhY2ggZnJhbWUKICAgICAgICBtaWdodCBoYXZlIHRoZW0pLiBDUlAgY29tcGxldGlvbiBpbmRpY2F0b3IgaXMgRmlyc3QgUGFpbnQgb2NjdXJyZW5jZSwKICAgICAgICBub3Qgc2luZ2xlIGZyYW1lIGNvbXBsZXRpb24uCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDEgY2xhc3M9IiI+QWRkaXRpb25hbDogRGVidWcgV2F5czwvaDE+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgPjxzdHJvbmc+Q2hyb21lIERldlRvb2xzIFBlcmZvcm1hbmNlIDwvc3Ryb25nPjwvbWFyawogICAgICAgID50YWIgaXMgdGhlIG1vc3QgcHJhY3RpY2FsIHRvb2wuIFlvdSBjYW4gc2VlIHdoYXQgTWFpbiBUaHJlYWQgYW5kCiAgICAgICAgQ29tcG9zaXRvciBUaHJlYWQgYXJlIGRvaW5nIHNlcGFyYXRlbHkuIEVzcGVjaWFsbHkgZmlsZSBsb2FkaW5nIHRpbWluZywKICAgICAgICBTRU8gbWV0cmljIHRyaWdnZXIgcG9pbnRzLCBhbmQgd2hlbiBEQ0wgYW5kIExvYWQgZXZlbnRzIGFjdHVhbGx5IGhhcHBlbi4KICAgICAgICBUaGlzIHRvb2wgYmFzaWNhbGx5IGFuc3dlcnMgbW9zdCAmcXVvdDt3aHkgaXMgbXkgcGFnZSBzbyBzbG93JnF1b3Q7CiAgICAgICAgcXVlc3Rpb25zLgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIgogICAgICAgICAgPjxzdHJvbmc+Q2hyb21lIERldlRvb2xzIFJlbmRlcmluZyAmYW1wOyBMYXllcnM8L3N0cm9uZz48L21hcmsKICAgICAgICA+CiAgICAgICAgY2hlY2tzIGxheWVyIGlzc3Vlcy4gV2hlbiB5b3Ugc3VzcGVjdCBjZXJ0YWluIENTUyBjaGFuZ2VzIGFmZmVjdAogICAgICAgIHBlcmZvcm1hbmNlLCB5b3UgY2FuIGRpcmVjdGx5IHNlZSB3aGljaCBlbGVtZW50cyBnZXQgcHJvbW90ZWQgdG8KICAgICAgICBpbmRlcGVuZGVudCBsYXllcnMsIGFuZCB3aGV0aGVyIHByb3BlcnRpZXMgbGlrZQogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj50cmFuc2Zvcm08L21hcms+LAogICAgICAgIDxtYXJrIGNsYXNzPSJoaWdobGlnaHQtcmVkIj5vcGFjaXR5PC9tYXJrPiwKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+d2lsbC1jaGFuZ2U8L21hcms+IGFjdHVhbGx5IGNyZWF0ZSBuZXcKICAgICAgICBsYXllcnMuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj48c3Ryb25nPkRlZXAgQW5hbHlzaXMgVG9vbHM8L3N0cm9uZz48L3A+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgY2hyb21lOi8vdHJhY2luZy8gcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCB0aHJlYWQgaW5mb3JtYXRpb24sIGdyb3VwZWQKICAgICAgICAgIGJ5IHByb2Nlc3MuIEJ1dCB0aGlzIHRvb2wgaGFzIG1hc3NpdmUgaW5mb3JtYXRpb24gb3ZlcmxvYWQgLSB1c3VhbGx5CiAgICAgICAgICBvbmx5IHVzZWQgd2hlbiBQZXJmb3JtYW5jZSB0YWIgY2FuJiN4Mjc7dCBzaG93IHRoZSBwcm9ibGVtLgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDx1bCBjbGFzcz0iYnVsbGV0ZWQtbGlzdCI+CiAgICAgICAgPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgogICAgICAgICAgQ2hyb21lIFRhc2sgTWFuYWdlciBpcyBsaWtlIE1hYyYjeDI3O3MgQWN0aXZpdHkgTW9uaXRvcgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PHN0cm9uZz5TcGVjaWZpYyBTY2VuYXJpbyBUb29sczwvc3Ryb25nPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPkxpZ2h0aG91c2U8L21hcms+IG1haW5seSBydW5zIFNFTyBhbmQKICAgICAgICBwZXJmb3JtYW5jZSBtZXRyaWNzLiBUaG91Z2ggY29tcHJlaGVuc2l2ZSwgdGhlIGRhdGEgaXMgcXVpdGUgZ2VuZXJhbC4KICAgICAgICBHaXZlcyB5b3Ugcm91Z2ggc2NvcmVzIGFuZCB0ZWxscyB5b3Ugd2hhdCBlYWNoIG1ldHJpYyBjYW4gb3B0aW1pemUuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPG1hcmsgY2xhc3M9ImhpZ2hsaWdodC1yZWQiPmNocm9tZTovL2Rpc2NhcmRzL2dyYXBoPC9tYXJrPiBhbmQKICAgICAgICA8bWFyayBjbGFzcz0iaGlnaGxpZ2h0LXJlZCI+cHN0cmVlIChjbGkpPC9tYXJrPiBzaG93IHByb2Nlc3MgYW5kIHRocmVhZAogICAgICAgIHJlbGF0aW9uc2hpcCBkaWFncmFtcywgYnV0IHJhcmVseSB1c2VkIGluIGFjdHVhbCBkZXZlbG9wbWVudCwgdW5sZXNzCiAgICAgICAgcmVzZWFyY2hpbmcgYnJvd3NlciBpbnRlcm5hbCBhcmNoaXRlY3R1cmUuCiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICBNb3N0IHBlcmZvcm1hbmNlIGlzc3VlcyBjYW4gYmUgc29sdmVkIHdpdGggdGhlIGZpcnN0IHR3byB0b29scy4gT3RoZXJzCiAgICAgICAgYXJlIG1vcmUgZm9yIGRlZXAgcmVzZWFyY2ggc2l0dWF0aW9ucy4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8aDEgY2xhc3M9IiI+UmVmZXJlbmNlczwvaDE+CiAgICAgIDxwIGNsYXNzPSIiPnRocmFzaGluZzwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPGEKICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9hdm9pZC1sYXJnZS1jb21wbGV4LWxheW91dHMtYW5kLWxheW91dC10aHJhc2hpbmciCiAgICAgICAgICA+aHR0cHM6Ly93ZWIuZGV2L2FydGljbGVzL2F2b2lkLWxhcmdlLWNvbXBsZXgtbGF5b3V0cy1hbmQtbGF5b3V0LXRocmFzaGluZzwvYQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2dpc3QuZ2l0aHViLmNvbS9rZWxsZWdvdXMvNDY0NjAxNCIKICAgICAgICAgID5odHRwczovL2dpc3QuZ2l0aHViLmNvbS9rZWxsZWdvdXMvNDY0NjAxNDwvYQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2tlbGxlZ291cy5jb20vai8yMDEzLzAxLzI2L2xheW91dC1wZXJmb3JtYW5jZS8iCiAgICAgICAgICA+aHR0cHM6Ly9rZWxsZWdvdXMuY29tL2ovMjAxMy8wMS8yNi9sYXlvdXQtcGVyZm9ybWFuY2UvPC9hCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhCiAgICAgICAgICBocmVmPSJodHRwczovL3dlYi5kZXYvYXJ0aWNsZXMvYXZvaWQtbGFyZ2UtY29tcGxleC1sYXlvdXRzLWFuZC1sYXlvdXQtdGhyYXNoaW5nIgogICAgICAgICAgPmh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9hdm9pZC1sYXJnZS1jb21wbGV4LWxheW91dHMtYW5kLWxheW91dC10aHJhc2hpbmc8L2EKICAgICAgICA+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPGEKICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1BlcmZvcm1hbmNlL0d1aWRlcy9DU1NfSmF2YVNjcmlwdF9hbmltYXRpb25fcGVyZm9ybWFuY2UiCiAgICAgICAgICA+aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvUGVyZm9ybWFuY2UvR3VpZGVzL0NTU19KYXZhU2NyaXB0X2FuaW1hdGlvbl9wZXJmb3JtYW5jZTwvYQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9hbmltYXRpb25zLWd1aWRlIgogICAgICAgICAgPmh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9hbmltYXRpb25zLWd1aWRlPC9hCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9jcml0aWNhbC1yZW5kZXJpbmctcGF0aCIKICAgICAgICAgID5odHRwczovL3dlYi5kZXYvYXJ0aWNsZXMvY3JpdGljYWwtcmVuZGVyaW5nLXBhdGg8L2EKICAgICAgICA+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgICA8cCBjbGFzcz0iIj7iiaQgMTZtcyBiYyBicm93c2VyIG92ZXJoZWFkPC9wPgogICAgICA8ZmlndXJlPgogICAgICAgIDxkaXYgY2xhc3M9InNvdXJjZSI+CiAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdmFzYW50aGsvYnJvd3Nlci1yZW5kZXJpbmctb3B0aW1pemF0aW9uL2Jsb2IvbWFzdGVyL1JFQURNRS5tZAogICAgICAgIDwvZGl2PgogICAgICA8L2ZpZ3VyZT4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL2luc2lkZS1icm93c2VyLXBhcnQyIgogICAgICAgICAgPmh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vYmxvZy9pbnNpZGUtYnJvd3Nlci1wYXJ0MjwvYQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvaW5zaWRlLWJyb3dzZXItcGFydDEiCiAgICAgICAgICA+aHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL2luc2lkZS1icm93c2VyLXBhcnQxPC9hCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vYmxvZy9pbnNpZGUtYnJvd3Nlci1wYXJ0MyIKICAgICAgICAgID5odHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvaW5zaWRlLWJyb3dzZXItcGFydDM8L2EKICAgICAgICA+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL2luc2lkZS1icm93c2VyLXBhcnQ0IgogICAgICAgICAgPmh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vYmxvZy9pbnNpZGUtYnJvd3Nlci1wYXJ0NDwvYQogICAgICAgID4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj4KICAgICAgICA8YQogICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kb2NzL2Nocm9taXVtL3JlbmRlcmluZ25nLWFyY2hpdGVjdHVyZSIKICAgICAgICAgID5odHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RvY3MvY2hyb21pdW0vcmVuZGVyaW5nbmctYXJjaGl0ZWN0dXJlPC9hCiAgICAgICAgPgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9mY3AiPmh0dHBzOi8vd2ViLmRldi9hcnRpY2xlcy9mY3A8L2E+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9IiI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93ZWIuZGV2L2FydGljbGVzL2xjcCI+aHR0cHM6Ly93ZWIuZGV2L2FydGljbGVzL2xjcDwvYT4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0iIj48L3A+CiAgICAgIDxwIGNsYXNzPSIiPjwvcD4KICAgICAgPHAgY2xhc3M9IiI+PC9wPgogICAgPC9kaXY+CiAgPC9hcnRpY2xlPgogIDxzcGFuIGNsYXNzPSJzYW5zIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyBwYWRkaW5nLXRvcDogMmVtIj48L3NwYW4+CjwvYm9keT4=
~/
about
posts
frontbacknetworkoscloud
readings
css
bookmarks
archives
© 2024 jialin00.com Original content since 2022
And maybe its just slow involvement at first, but try to sort of creep your career in that direction, because if youre not being challenged, if youre not a little bit scared all the time, just a little bit, then youre not gonna improve. - The Myth of the Genius Programmer