PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPnhtbGVycm9yPC90aXRsZT48bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjU4LjEiPjxzdHlsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCIgdHlwZT0idGV4dC9jc3MiPgogICAgICAgIC5zeW5vcHNpcywgLmNsYXNzc3lub3BzaXMgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlOwogICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjYWFhYWFhOwogICAgICAgICAgICBwYWRkaW5nOiAwLjVlbTsKICAgICAgICB9CiAgICAgICAgLnByb2dyYW1saXN0aW5nIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2VlZWVmZjsKICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2FhYWFmZjsKICAgICAgICAgICAgcGFkZGluZzogMC41ZW07CiAgICAgICAgfQogICAgICAgIC52YXJpYWJsZWxpc3QgewogICAgICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzZW07CiAgICAgICAgfQogICAgICAgIC5uYXZpZ2F0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZWVlZTsKICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2ZmYWFhYTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMC41ZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogICAgICAgIH0KICAgICAgICAubmF2aWdhdGlvbiBhIHsKICAgICAgICAgICAgY29sb3I6ICM3NzAwMDA7CiAgICAgICAgfQogICAgICAgIC5uYXZpZ2F0aW9uIGE6dmlzaXRlZCB7CiAgICAgICAgICAgIGNvbG9yOiAjNTUwMDAwOwogICAgICAgIH0KICAgICAgICAubmF2aWdhdGlvbiAudGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDIwMCU7CiAgICAgICAgfQogICAgICA8L3N0eWxlPjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9Ikdub21lIFhNTCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPjxsaW5rIHJlbD0idXAiIGhyZWY9ImxpYnhtbC1saWIuaHRtbCIgdGl0bGU9IkxpYnhtbCBMaWJyYXJ5IFJlZmVyZW5jZSI+PGxpbmsgcmVsPSJwcmV2aW91cyIgaHJlZj0ibGlieG1sLXVyaS5odG1sIiB0aXRsZT0idXJpIj48bGluayByZWw9Im5leHQiIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwiIHRpdGxlPSJIVE1McGFyc2VyIj48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjx0YWJsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCIgY2xhc3M9Im5hdmlnYXRpb24iIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIyIj48dHIgdmFsaWduPSJtaWRkbGUiPjx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImxpYnhtbC11cmkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2ltZz48L2E+PC90ZD48dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJsaWJ4bWwtbGliLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2ltZz48L2E+PC90ZD48dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvaW1nPjwvYT48L3RkPjx0aCB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciI+R25vbWUgWE1MIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGg+PHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0ibGlieG1sLUhUTUxwYXJzZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9pbWc+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjxkaXYgY2xhc3M9InJlZmVudHJ5IiBsYW5nPSJlbiI+PGEgbmFtZT0ibGlieG1sLXhtbGVycm9yIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj48ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48aDI+eG1sZXJyb3I8L2gyPjxwPnhtbGVycm9yICYjODIxMjsgPC9wPjwvZGl2PjxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij48aDI+U3lub3BzaXM8L2gyPjxwcmUgY2xhc3M9InN5bm9wc2lzIj4KCgoKZW51bSAgICAgICAgPGEgaHJlZj0ibGlieG1sLXhtbGVycm9yLmh0bWwjeG1sUGFyc2VyRXJyb3JzIj54bWxQYXJzZXJFcnJvcnM8L2E+Owp2b2lkICAgICAgICAoPGEgaHJlZj0ibGlieG1sLXhtbGVycm9yLmh0bWwjeG1sR2VuZXJpY0Vycm9yRnVuYyI+KnhtbEdlbmVyaWNFcnJvckZ1bmM8L2E+KSAgICAgICAgICAodm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CnZvaWQgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbFNldEdlbmVyaWNFcnJvckZ1bmMiPnhtbFNldEdlbmVyaWNFcnJvckZ1bmM8L2E+ICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbEdlbmVyaWNFcnJvckZ1bmMiPnhtbEdlbmVyaWNFcnJvckZ1bmM8L2E+IGhhbmRsZXIpOwp2b2lkICAgICAgICA8YSBocmVmPSJsaWJ4bWwteG1sZXJyb3IuaHRtbCNpbml0R2VuZXJpY0Vycm9yRGVmYXVsdEZ1bmMiPmluaXRHZW5lcmljRXJyb3JEZWZhdWx0RnVuYzwvYT4gICAgICg8YSBocmVmPSJsaWJ4bWwteG1sZXJyb3IuaHRtbCN4bWxHZW5lcmljRXJyb3JGdW5jIj54bWxHZW5lcmljRXJyb3JGdW5jPC9hPiAqaGFuZGxlcik7CnZvaWQgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbFBhcnNlckVycm9yIj54bWxQYXJzZXJFcnJvcjwvYT4gICAgICAgICAgICAgICAgICAodm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CnZvaWQgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbFBhcnNlcldhcm5pbmciPnhtbFBhcnNlcldhcm5pbmc8L2E+ICAgICAgICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKdm9pZCAgICAgICAgPGEgaHJlZj0ibGlieG1sLXhtbGVycm9yLmh0bWwjeG1sUGFyc2VyVmFsaWRpdHlFcnJvciI+eG1sUGFyc2VyVmFsaWRpdHlFcnJvcjwvYT4gICAgICAgICAgKHZvaWQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwp2b2lkICAgICAgICA8YSBocmVmPSJsaWJ4bWwteG1sZXJyb3IuaHRtbCN4bWxQYXJzZXJWYWxpZGl0eVdhcm5pbmciPnhtbFBhcnNlclZhbGlkaXR5V2FybmluZzwvYT4gICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKdm9pZCAgICAgICAgPGEgaHJlZj0ibGlieG1sLXhtbGVycm9yLmh0bWwjeG1sUGFyc2VyUHJpbnRGaWxlSW5mbyI+eG1sUGFyc2VyUHJpbnRGaWxlSW5mbzwvYT4gICAgICAgICAgKDxhIGhyZWY9ImxpYnhtbC10cmVlLmh0bWwjeG1sUGFyc2VySW5wdXRQdHIiPnhtbFBhcnNlcklucHV0UHRyPC9hPiBpbnB1dCk7CnZvaWQgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbFBhcnNlclByaW50RmlsZUNvbnRleHQiPnhtbFBhcnNlclByaW50RmlsZUNvbnRleHQ8L2E+ICAgICAgICg8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbFBhcnNlcklucHV0UHRyIj54bWxQYXJzZXJJbnB1dFB0cjwvYT4gaW5wdXQpOwo8L3ByZT48L2Rpdj48ZGl2IGNsYXNzPSJyZWZzZWN0MSIgbGFuZz0iZW4iPjxoMj5EZXNjcmlwdGlvbjwvaDI+PHA+Cgo8L3A+PC9kaXY+PGRpdiBjbGFzcz0icmVmc2VjdDEiIGxhbmc9ImVuIj48aDI+RGV0YWlsczwvaDI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sUGFyc2VyRXJyb3JzIj48L2E+ZW51bSB4bWxQYXJzZXJFcnJvcnM8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIGVudW0gewogICAgWE1MX0VSUl9PSyA9IDAsCiAgICBYTUxfRVJSX0lOVEVSTkFMX0VSUk9SLAogICAgWE1MX0VSUl9OT19NRU1PUlksCiAgICAKICAgIFhNTF9FUlJfRE9DVU1FTlRfU1RBUlQsIC8qIDMgKi8KICAgIFhNTF9FUlJfRE9DVU1FTlRfRU1QVFksCiAgICBYTUxfRVJSX0RPQ1VNRU5UX0VORCwKCiAgICBYTUxfRVJSX0lOVkFMSURfSEVYX0NIQVJSRUYsIC8qIDYgKi8KICAgIFhNTF9FUlJfSU5WQUxJRF9ERUNfQ0hBUlJFRiwKICAgIFhNTF9FUlJfSU5WQUxJRF9DSEFSUkVGLAogICAgWE1MX0VSUl9JTlZBTElEX0NIQVIsCgogICAgWE1MX0VSUl9DSEFSUkVGX0FUX0VPRiwgLyogMTAgKi8KICAgIFhNTF9FUlJfQ0hBUlJFRl9JTl9QUk9MT0csCiAgICBYTUxfRVJSX0NIQVJSRUZfSU5fRVBJTE9HLAogICAgWE1MX0VSUl9DSEFSUkVGX0lOX0RURCwKICAgIFhNTF9FUlJfRU5USVRZUkVGX0FUX0VPRiwKICAgIFhNTF9FUlJfRU5USVRZUkVGX0lOX1BST0xPRywKICAgIFhNTF9FUlJfRU5USVRZUkVGX0lOX0VQSUxPRywKICAgIFhNTF9FUlJfRU5USVRZUkVGX0lOX0RURCwKICAgIFhNTF9FUlJfUEVSRUZfQVRfRU9GLAogICAgWE1MX0VSUl9QRVJFRl9JTl9QUk9MT0csCiAgICBYTUxfRVJSX1BFUkVGX0lOX0VQSUxPRywKICAgIFhNTF9FUlJfUEVSRUZfSU5fSU5UX1NVQlNFVCwKCiAgICBYTUxfRVJSX0VOVElUWVJFRl9OT19OQU1FLCAvKiAyMiAqLwogICAgWE1MX0VSUl9FTlRJVFlSRUZfU0VNSUNPTF9NSVNTSU5HLAoKICAgIFhNTF9FUlJfUEVSRUZfTk9fTkFNRSwgLyogMjQgKi8KICAgIFhNTF9FUlJfUEVSRUZfU0VNSUNPTF9NSVNTSU5HLAoKICAgIFhNTF9FUlJfVU5ERUNMQVJFRF9FTlRJVFksIC8qIDI2ICovCiAgICBYTUxfV0FSX1VOREVDTEFSRURfRU5USVRZLAogICAgWE1MX0VSUl9VTlBBUlNFRF9FTlRJVFksCiAgICBYTUxfRVJSX0VOVElUWV9JU19FWFRFUk5BTCwKICAgIFhNTF9FUlJfRU5USVRZX0lTX1BBUkFNRVRFUiwKCiAgICBYTUxfRVJSX1VOS05PV05fRU5DT0RJTkcsIC8qIDMxICovCiAgICBYTUxfRVJSX1VOU1VQUE9SVEVEX0VOQ09ESU5HLAoKICAgIFhNTF9FUlJfU1RSSU5HX05PVF9TVEFSVEVELCAvKiAzMyAqLwogICAgWE1MX0VSUl9TVFJJTkdfTk9UX0NMT1NFRCwKICAgIFhNTF9FUlJfTlNfREVDTF9FUlJPUiwKCiAgICBYTUxfRVJSX0VOVElUWV9OT1RfU1RBUlRFRCwgLyogMzYgKi8KICAgIFhNTF9FUlJfRU5USVRZX05PVF9GSU5JU0hFRCwKICAgIAogICAgWE1MX0VSUl9MVF9JTl9BVFRSSUJVVEUsIC8qIDM4ICovCiAgICBYTUxfRVJSX0FUVFJJQlVURV9OT1RfU1RBUlRFRCwKICAgIFhNTF9FUlJfQVRUUklCVVRFX05PVF9GSU5JU0hFRCwKICAgIFhNTF9FUlJfQVRUUklCVVRFX1dJVEhPVVRfVkFMVUUsCiAgICBYTUxfRVJSX0FUVFJJQlVURV9SRURFRklORUQsCgogICAgWE1MX0VSUl9MSVRFUkFMX05PVF9TVEFSVEVELCAvKiA0MyAqLwogICAgWE1MX0VSUl9MSVRFUkFMX05PVF9GSU5JU0hFRCwKICAgIAogICAgWE1MX0VSUl9DT01NRU5UX05PVF9GSU5JU0hFRCwgLyogNDUgKi8KCiAgICBYTUxfRVJSX1BJX05PVF9TVEFSVEVELCAvKiA0NyAqLwogICAgWE1MX0VSUl9QSV9OT1RfRklOSVNIRUQsCgogICAgWE1MX0VSUl9OT1RBVElPTl9OT1RfU1RBUlRFRCwgLyogNDkgKi8KICAgIFhNTF9FUlJfTk9UQVRJT05fTk9UX0ZJTklTSEVELAoKICAgIFhNTF9FUlJfQVRUTElTVF9OT1RfU1RBUlRFRCwgLyogNTEgKi8KICAgIFhNTF9FUlJfQVRUTElTVF9OT1RfRklOSVNIRUQsCgogICAgWE1MX0VSUl9NSVhFRF9OT1RfU1RBUlRFRCwgLyogNTMgKi8KICAgIFhNTF9FUlJfTUlYRURfTk9UX0ZJTklTSEVELAoKICAgIFhNTF9FUlJfRUxFTUNPTlRFTlRfTk9UX1NUQVJURUQsIC8qIDU1ICovCiAgICBYTUxfRVJSX0VMRU1DT05URU5UX05PVF9GSU5JU0hFRCwKCiAgICBYTUxfRVJSX1hNTERFQ0xfTk9UX1NUQVJURUQsIC8qIDU3ICovCiAgICBYTUxfRVJSX1hNTERFQ0xfTk9UX0ZJTklTSEVELAoKICAgIFhNTF9FUlJfQ09ORFNFQ19OT1RfU1RBUlRFRCwgLyogNTkgKi8KICAgIFhNTF9FUlJfQ09ORFNFQ19OT1RfRklOSVNIRUQsCgogICAgWE1MX0VSUl9FWFRfU1VCU0VUX05PVF9GSU5JU0hFRCwgLyogNjEgKi8KCiAgICBYTUxfRVJSX0RPQ1RZUEVfTk9UX0ZJTklTSEVELCAvKiA2MiAqLwoKICAgIFhNTF9FUlJfTUlTUExBQ0VEX0NEQVRBX0VORCwgLyogNjMgKi8KICAgIFhNTF9FUlJfQ0RBVEFfTk9UX0ZJTklTSEVELAoKICAgIFhNTF9FUlJfUkVTRVJWRURfWE1MX05BTUUsIC8qIDY1ICovCgogICAgWE1MX0VSUl9TUEFDRV9SRVFVSVJFRCwgLyogNjYgKi8KICAgIFhNTF9FUlJfU0VQQVJBVE9SX1JFUVVJUkVELAogICAgWE1MX0VSUl9OTVRPS0VOX1JFUVVJUkVELAogICAgWE1MX0VSUl9OQU1FX1JFUVVJUkVELAogICAgWE1MX0VSUl9QQ0RBVEFfUkVRVUlSRUQsCiAgICBYTUxfRVJSX1VSSV9SRVFVSVJFRCwKICAgIFhNTF9FUlJfUFVCSURfUkVRVUlSRUQsCiAgICBYTUxfRVJSX0xUX1JFUVVJUkVELAogICAgWE1MX0VSUl9HVF9SRVFVSVJFRCwKICAgIFhNTF9FUlJfTFRTTEFTSF9SRVFVSVJFRCwKICAgIFhNTF9FUlJfRVFVQUxfUkVRVUlSRUQsCgogICAgWE1MX0VSUl9UQUdfTkFNRV9NSVNNQVRDSCwgLyogNzcgKi8KICAgIFhNTF9FUlJfVEFHX05PVF9GSU5JU0hFRCwKCiAgICBYTUxfRVJSX1NUQU5EQUxPTkVfVkFMVUUsIC8qIDc5ICovCgogICAgWE1MX0VSUl9FTkNPRElOR19OQU1FLCAvKiA4MCAqLwoKICAgIFhNTF9FUlJfSFlQSEVOX0lOX0NPTU1FTlQsIC8qIDgxICovCgogICAgWE1MX0VSUl9JTlZBTElEX0VOQ09ESU5HLCAvKiA4MiAqLwoKICAgIFhNTF9FUlJfRVhUX0VOVElUWV9TVEFOREFMT05FLCAvKiA4MyAqLwoKICAgIFhNTF9FUlJfQ09ORFNFQ19JTlZBTElELCAvKiA4NCAqLwoKICAgIFhNTF9FUlJfVkFMVUVfUkVRVUlSRUQsIC8qIDg1ICovCgogICAgWE1MX0VSUl9OT1RfV0VMTF9CQUxBTkNFRCwgLyogODYgKi8KICAgIFhNTF9FUlJfRVhUUkFfQ09OVEVOVCwgLyogODcgKi8KICAgIFhNTF9FUlJfRU5USVRZX0NIQVJfRVJST1IsIC8qIDg4ICovCiAgICBYTUxfRVJSX0VOVElUWV9QRV9JTlRFUk5BTCwgLyogODggKi8KICAgIFhNTF9FUlJfRU5USVRZX0xPT1AsIC8qIDg5ICovCiAgICBYTUxfRVJSX0VOVElUWV9CT1VOREFSWSwgLyogOTAgKi8KICAgIFhNTF9FUlJfSU5WQUxJRF9VUkksIC8qIDkxICovCiAgICBYTUxfRVJSX1VSSV9GUkFHTUVOVCwgLyogOTIgKi8KICAgIFhNTF9XQVJfQ0FUQUxPR19QSSwgLyogOTMgKi8KICAgIFhNTF9FUlJfTk9fRFREICAvKiA5NCAqLwp9eG1sUGFyc2VyRXJyb3JzOwo8L3ByZT48cD4KCjwvcD48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sR2VuZXJpY0Vycm9yRnVuYyI+PC9hPnhtbEdlbmVyaWNFcnJvckZ1bmMgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICAoKnhtbEdlbmVyaWNFcnJvckZ1bmMpICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTs8L3ByZT48cD4KU2lnbmF0dXJlIG9mIHRoZSBmdW5jdGlvbiB0byB1c2Ugd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhbmQKbm8gcGFyc2luZyBvciB2YWxpZGl0eSBjb250ZXh0IGF2YWlsYWJsZSAuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhIHBhcnNpbmcgY29udGV4dAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0Pm1zZzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIG1lc3NhZ2UKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD4uLi48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBleHRyYSBhcmd1bWVudHMgb2YgdGhlIHZhcmFncyB0byBmb3JtYXQgdGhlIG1lc3NhZ2UKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sU2V0R2VuZXJpY0Vycm9yRnVuYyI+PC9hPnhtbFNldEdlbmVyaWNFcnJvckZ1bmMgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbEdlbmVyaWNFcnJvckZ1bmMiPnhtbEdlbmVyaWNFcnJvckZ1bmM8L2E+IGhhbmRsZXIpOzwvcHJlPjxwPgpGdW5jdGlvbiB0byByZXNldCB0aGUgaGFuZGxlciBhbmQgdGhlIGVycm9yIGNvbnRleHQgZm9yIG91dCBvZgpjb250ZXh0IGVycm9yIG1lc3NhZ2VzLgpUaGlzIHNpbXBseSBtZWFucyB0aGF0IDxpPjx0dD5oYW5kbGVyPC90dD48L2k+IHdpbGwgYmUgY2FsbGVkIGZvciBzdWJzZXF1ZW50CmVycm9yIG1lc3NhZ2VzIHdoaWxlIG5vdCBwYXJzaW5nIG5vciB2YWxpZGF0aW5nLiBBbmQgPGk+PHR0PmN0eDwvdHQ+PC9pPiB3aWxsCmJlIHBhc3NlZCBhcyBmaXJzdCBhcmd1bWVudCB0byA8aT48dHQ+aGFuZGxlcjwvdHQ+PC9pPgpPbmUgY2FuIHNpbXBseSBmb3JjZSBtZXNzYWdlcyB0byBiZSBlbWl0dGVkIHRvIGFub3RoZXIgRklMRSAqIHRoYW4Kc3RkZXJyIGJ5IHNldHRpbmcgPGk+PHR0PmN0eDwvdHQ+PC9pPiB0byB0aGlzIGZpbGUgaGFuZGxlIGFuZCA8aT48dHQ+aGFuZGxlcjwvdHQ+PC9pPiB0byBOVUxMLjwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmN0eDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBjb250ZXh0CjwvdGQ+PC90cj48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+aGFuZGxlcjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIG5ldyBoYW5kbGVyIGZ1bmN0aW9uCjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+PGhyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvdHJhbnNpdGlvbmFsIj48L2hyPjxkaXYgY2xhc3M9InJlZnNlY3QyIiBsYW5nPSJlbiI+PGgzPjxhIG5hbWU9ImluaXRHZW5lcmljRXJyb3JEZWZhdWx0RnVuYyI+PC9hPmluaXRHZW5lcmljRXJyb3JEZWZhdWx0RnVuYyAoKTwvaDM+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgICAgICAgIGluaXRHZW5lcmljRXJyb3JEZWZhdWx0RnVuYyAgICAgKDxhIGhyZWY9ImxpYnhtbC14bWxlcnJvci5odG1sI3htbEdlbmVyaWNFcnJvckZ1bmMiPnhtbEdlbmVyaWNFcnJvckZ1bmM8L2E+ICpoYW5kbGVyKTs8L3ByZT48cD4KU2V0IG9yIHJlc2V0IChpZiBOVUxMKSB0aGUgZGVmYXVsdCBoYW5kbGVyIGZvciBnZW5lcmljIGVycm9ycwp0byB0aGUgYnVpbHRpbiBlcnJvciBmdW5jdGlvbi48L3A+PHA+Cgo8L3A+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj48Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRib2R5Pjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5oYW5kbGVyPC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICB0aGUgaGFuZGxlcgo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJ4bWxQYXJzZXJFcnJvciI+PC9hPnhtbFBhcnNlckVycm9yICgpPC9oMz48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dm9pZCAgICAgICAgeG1sUGFyc2VyRXJyb3IgICAgICAgICAgICAgICAgICAodm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7PC9wcmU+PHA+CkRpc3BsYXkgYW5kIGZvcm1hdCBhbiBlcnJvciBtZXNzYWdlcywgZ2l2ZXMgZmlsZSwgbGluZSwgcG9zaXRpb24gYW5kCmV4dHJhIHBhcmFtZXRlcnMuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhbiBYTUwgcGFyc2VyIGNvbnRleHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5tc2c8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkvdHJhbnNtaXQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD4uLi48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGV4dHJhIHBhcmFtZXRlcnMgZm9yIHRoZSBtZXNzYWdlIGRpc3BsYXkKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sUGFyc2VyV2FybmluZyI+PC9hPnhtbFBhcnNlcldhcm5pbmcgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxQYXJzZXJXYXJuaW5nICAgICAgICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTs8L3ByZT48cD4KRGlzcGxheSBhbmQgZm9ybWF0IGEgd2FybmluZyBtZXNzYWdlcywgZ2l2ZXMgZmlsZSwgbGluZSwgcG9zaXRpb24gYW5kCmV4dHJhIHBhcmFtZXRlcnMuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhbiBYTUwgcGFyc2VyIGNvbnRleHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5tc2c8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkvdHJhbnNtaXQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD4uLi48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGV4dHJhIHBhcmFtZXRlcnMgZm9yIHRoZSBtZXNzYWdlIGRpc3BsYXkKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sUGFyc2VyVmFsaWRpdHlFcnJvciI+PC9hPnhtbFBhcnNlclZhbGlkaXR5RXJyb3IgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxQYXJzZXJWYWxpZGl0eUVycm9yICAgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTs8L3ByZT48cD4KRGlzcGxheSBhbmQgZm9ybWF0IGFuIHZhbGlkaXR5IGVycm9yIG1lc3NhZ2VzLCBnaXZlcyBmaWxlLApsaW5lLCBwb3NpdGlvbiBhbmQgZXh0cmEgcGFyYW1ldGVycy48L3A+PHA+Cgo8L3A+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj48Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRib2R5Pjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5jdHg8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGFuIFhNTCBwYXJzZXIgY29udGV4dAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0Pm1zZzwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgdGhlIG1lc3NhZ2UgdG8gZGlzcGxheS90cmFuc21pdAo8L3RkPjwvdHI+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0Pi4uLjwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgZXh0cmEgcGFyYW1ldGVycyBmb3IgdGhlIG1lc3NhZ2UgZGlzcGxheQo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjxociB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCI+PC9ocj48ZGl2IGNsYXNzPSJyZWZzZWN0MiIgbGFuZz0iZW4iPjxoMz48YSBuYW1lPSJ4bWxQYXJzZXJWYWxpZGl0eVdhcm5pbmciPjwvYT54bWxQYXJzZXJWYWxpZGl0eVdhcm5pbmcgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxQYXJzZXJWYWxpZGl0eVdhcm5pbmcgICAgICAgICh2b2lkICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTs8L3ByZT48cD4KRGlzcGxheSBhbmQgZm9ybWF0IGEgdmFsaWRpdHkgd2FybmluZyBtZXNzYWdlcywgZ2l2ZXMgZmlsZSwgbGluZSwKcG9zaXRpb24gYW5kIGV4dHJhIHBhcmFtZXRlcnMuPC9wPjxwPgoKPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCI+PGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjx0Ym9keT48dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXJtIj48aT48dHQ+Y3R4PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhbiBYTUwgcGFyc2VyIGNvbnRleHQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5tc2c8L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkvdHJhbnNtaXQKPC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD4uLi48L3R0PjwvaT6gOjwvc3Bhbj48L3RkPjx0ZD4gIGV4dHJhIHBhcmFtZXRlcnMgZm9yIHRoZSBtZXNzYWdlIGRpc3BsYXkKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sUGFyc2VyUHJpbnRGaWxlSW5mbyI+PC9hPnhtbFBhcnNlclByaW50RmlsZUluZm8gKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxQYXJzZXJQcmludEZpbGVJbmZvICAgICAgICAgICg8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbFBhcnNlcklucHV0UHRyIj54bWxQYXJzZXJJbnB1dFB0cjwvYT4gaW5wdXQpOzwvcHJlPjxwPgpEaXNwbGF5cyB0aGUgYXNzb2NpYXRlZCBmaWxlIGFuZCBsaW5lIGluZm9ybWF0aW9ucyBmb3IgdGhlIGN1cnJlbnQgaW5wdXQ8L3A+PHA+Cgo8L3A+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIj48Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRib2R5Pjx0cj48dGQ+PHNwYW4gY2xhc3M9InRlcm0iPjxpPjx0dD5pbnB1dDwvdHQ+PC9pPqA6PC9zcGFuPjwvdGQ+PHRkPiAgYW4geG1sUGFyc2VySW5wdXRQdHIgaW5wdXQKPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj48aHIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS90cmFuc2l0aW9uYWwiPjwvaHI+PGRpdiBjbGFzcz0icmVmc2VjdDIiIGxhbmc9ImVuIj48aDM+PGEgbmFtZT0ieG1sUGFyc2VyUHJpbnRGaWxlQ29udGV4dCI+PC9hPnhtbFBhcnNlclByaW50RmlsZUNvbnRleHQgKCk8L2gzPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkICAgICAgICB4bWxQYXJzZXJQcmludEZpbGVDb250ZXh0ICAgICAgICg8YSBocmVmPSJsaWJ4bWwtdHJlZS5odG1sI3htbFBhcnNlcklucHV0UHRyIj54bWxQYXJzZXJJbnB1dFB0cjwvYT4gaW5wdXQpOzwvcHJlPjxwPgpEaXNwbGF5cyBjdXJyZW50IGNvbnRleHQgd2l0aGluIHRoZSBpbnB1dCBjb250ZW50IGZvciBlcnJvciB0cmFja2luZzwvcD48cD4KCjwvcD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiPjxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGJvZHk+PHRyPjx0ZD48c3BhbiBjbGFzcz0idGVybSI+PGk+PHR0PmlucHV0PC90dD48L2k+oDo8L3NwYW4+PC90ZD48dGQ+ICBhbiB4bWxQYXJzZXJJbnB1dFB0ciBpbnB1dAo8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjx0YWJsZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL3RyYW5zaXRpb25hbCIgY2xhc3M9Im5hdmlnYXRpb24iIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGZvb3RlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj48dHIgdmFsaWduPSJtaWRkbGUiPjx0ZCBhbGlnbj0ibGVmdCI+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJsaWJ4bWwtdXJpLmh0bWwiPjxiPiZsdDsmbHQ7oHVyaTwvYj48L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImxpYnhtbC1IVE1McGFyc2VyLmh0bWwiPjxiPkhUTUxwYXJzZXKgJmd0OyZndDs8L2I+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvYm9keT48L2h0bWw+Cg==