PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJmciIgeG1sOmxhbmc9ImZyIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5UdXRvcmllbCBBcGFjaGUgaHR0cGQgOiBJbnRyb2R1Y3Rpb24gYXV4ICJJbmNsdXNpb25zIEP0dOkgU2VydmV1ciIKKFNlcnZlciBTaWRlIEluY2x1ZGVzIC0gU1NJKSAtIFNlcnZldXIgQXBhY2hlIEhUVFAgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5IGlkPSJtYW51YWwtcGFnZSI+PGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3NhaXJlPC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+UGxhbiBkdSBzaXRlPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+U2VydmV1ciBBcGFjaGUgSFRUUCBWZXJzaW9uIDIuNDwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPlNlcnZldXIgSFRUUDwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi40PC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5SZWNldHRlcyBldCB0dXRvcmllbHM8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPlR1dG9yaWVsIEFwYWNoZSBodHRwZCA6IEludHJvZHVjdGlvbiBhdXggIkluY2x1c2lvbnMgQ/R06SBTZXJ2ZXVyIgooU2VydmVyIFNpZGUgSW5jbHVkZXMgLSBTU0kpPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkxhbmd1ZXMgRGlzcG9uaWJsZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9ob3d0by9zc2kuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL2hvd3RvL3NzaS5odG1sIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL2hvd3RvL3NzaS5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL2hvd3RvL3NzaS5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PgoKPHA+TGVzIFNTSSBwZXJtZXR0ZW50IGQnYWpvdXRlciBkdSBjb250ZW51IGR5bmFtaXF1ZSDgIGRlcyBkb2N1bWVudHMKSFRNTCBwculleGlzdGFudHMuPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vY29udHJpYnV0aW5nLmh0bWwiIGNsYXNzPSJiYWRnZSI+PGltZyBzcmM9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvaW1hZ2VzL1N1cHBvcnRBcGFjaGUtc21hbGwucG5nIiBhbHQ9IlN1cHBvcnQgQXBhY2hlISIgLz48L2E+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlbGF0ZWQiPkludHJvZHVjdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiN3aGF0Ij5RdSdlc3QtY2UgcXVlIFNTSSA/PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbmZpZ3VyaW5nIj5Db25maWd1cmVyIHZvdHJlIHNlcnZldXIgcG91ciBwZXJtZXR0cmUgbGVzIFNTSTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNiYXNpYyI+RGlyZWN0aXZlcyBTU0kgZGUgYmFzZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhZGRpdGlvbmFsZXhhbXBsZXMiPkV4ZW1wbGVzIGFkZGl0aW9ubmVsczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjb25maWciPlF1ZSBwdWlzLWplIGNvbmZpZ3VyZXIgZCdhdXRyZSA/PC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2V4ZWMiPkV46WN1dGlvbiBkZSBjb21tYW5kZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWR2YW5jZWQiPlRlY2huaXF1ZXMgU1NJIGF2YW5j6WVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbmNsdXNpb24iPkNvbmNsdXNpb248L2E+PC9saT4KPC91bD48aDM+Vm9pciBhdXNzaTwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InJlbGF0ZWQiIGlkPSJyZWxhdGVkIj5JbnRyb2R1Y3Rpb248L2E+PC9oMj4KIDx0YWJsZSBjbGFzcz0icmVsYXRlZCI+PHRyPjx0aD5Nb2R1bGVzIEFwcGFyZW506XM8L3RoPjx0aD5EaXJlY3RpdmVzIEFwcGFyZW506WVzPC90aD48L3RyPjx0cj48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfY2dpLmh0bWwiPm1vZF9jZ2k8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfZXhwaXJlcy5odG1sIj5tb2RfZXhwaXJlczwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PHRkPjx1bD48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNvcHRpb25zIj5PcHRpb25zPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCN4Yml0aGFjayI+WEJpdEhhY2s8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWltZS5odG1sI2FkZHR5cGUiPkFkZFR5cGU8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjc2V0b3V0cHV0ZmlsdGVyIj5TZXRPdXRwdXRGaWx0ZXI8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc2V0ZW52aWYuaHRtbCNicm93c2VybWF0Y2hub2Nhc2UiPkJyb3dzZXJNYXRjaE5vQ2FzZTwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPgoKICAgIDxwPkNldCBhcnRpY2xlIHRyYWl0ZSBkZXMgSW5jbHVzaW9ucyBD9HTpIFNlcnZldXIgKFNlcnZlciBTaWRlCiAgICBJbmNsdWRlcyksIHBsdXMgY29tbXVu6W1lbnQgYXBwZWzpcyBTU0kuIFZvdXMgdHJvdXZlcmV6IGljaSBsYQogICAgbWFuaehyZSBkZSBjb25maWd1cmVyIHZvdHJlIHNlcnZldXIgcG91ciBwZXJtZXR0cmUgbGVzIFNTSSwgYWluc2kKICAgIHF1J3VuZSBpbnRyb2R1Y3Rpb24g4CBxdWVscXVlcyB0ZWNobmlxdWVzIFNTSSBkZSBiYXNlIHBlcm1ldHRhbnQKICAgIGQnYWpvdXRlciBkdSBjb250ZW51IGR5bmFtaXF1ZSDgIHZvcyBwYWdlcyBIVE1MIHBy6WV4aXN0YW50ZXMuPC9wPgoKICAgIDxwPkxhIGRlcm5p6HJlIHBhcnRpZSBkZSBjZXQgYXJ0aWNsZSBzZXJhIGNvbnNhY3LpZSBhdXgKICAgIGNvbmZpZ3VyYXRpb25zIFNTSSBwbHVzIGF2YW5j6WVzLCB0ZWxsZXMgcXVlIGxlcyBleHByZXNzaW9ucwogICAgY29uZGl0aW9ubmVsbGVzIGRhbnMgbGVzIGRpcmVjdGl2ZXMgU1NJLjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9IndoYXQiIGlkPSJ3aGF0Ij5RdSdlc3QtY2UgcXVlIFNTSSA/PC9hPjwvaDI+CgogICAgPHA+U1NJIChTZXJ2ZXIgU2lkZSBJbmNsdWRlcykgZXN0IGNvbnN0aXR16SBkZSBkaXJlY3RpdmVzIHBsYWPpZXMgZGFucwogICAgZGVzIHBhZ2VzIEhUTUwsIGV0IOl2YWx16WVzIHBhciBsZSBzZXJ2ZXVyIGF1IG1vbWVudCBv+SBsZXMgcGFnZXMKICAgIHNvbnQgc2Vydmllcy4gRWxsZXMgdm91cyBwZXJtZXR0ZW50IGQnYWpvdXRlciBkdSBjb250ZW51IGfpbuly6QogICAgZHluYW1pcXVlbWVudCDgIHVuZSBwYWdlIEhUTUwgcHLpZXhpc3RhbnRlLCBzYW5zIGF2b2lyIOAgc2VydmlyIGxhCiAgICBwYWdlIGVudGnocmUgdmlhIHVuIHByb2dyYW1tZSBDR0ksIG91IHRvdXRlIGF1dHJlIHRlY2hub2xvZ2llIGRlCiAgICBjb250ZW51IGR5bmFtaXF1ZS48L3A+CgogICAgPHA+UGFyIGV4ZW1wbGUsIHZvdXMgcG91dmV6IGluc+lyZXIgbGEgZGlyZWN0aXZlIHN1aXZhbnRlIGRhbnMgdW5lCiAgICBwYWdlIEhUTUwgZXhpc3RhbnRlIDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAmbHQ7IS0tI2VjaG8gdmFyPSJEQVRFX0xPQ0FMIiAtLSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+QWluc2ksIGxvcnNxdWUgbGEgcGFnZSBzZXJhIHNlcnZpZSwgbGEgZGlyZWN0aXZlIHNlcmEg6XZhbHXpZSBldAogICAgcmVtcGxhY+llIHBhciBzYSB2YWxldXIgOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgIFR1ZXNkYXksIDE1LUphbi0yMDEzIDE5OjI4OjU0IEVTVAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5MZSBjaG9peCBlbnRyZSBsJ3V0aWxpc2F0aW9uIGRlcyBTU0kgZXQgbGEgZ+lu6XJhdGlvbiBlbnRp6HJlIGRlCiAgICBsYSBwYWdlIHBhciB1biBwcm9ncmFtbWUgcXVlbGNvbnF1ZSwgZXN0IGVuIGfpbulyYWwgZGljdOkgcGFyIGxhCiAgICBwcm9wb3J0aW9uIGRlIGNvbnRlbnUgc3RhdGlxdWUgZXQgZGUgY29udGVudSBkZXZhbnQg6nRyZSBn6W7pcukKICAgIGNoYXF1ZSBmb2lzIHF1ZSBsYSBwYWdlIGVzdCBzZXJ2aWUuIFNTSSBlc3QgaWTpYWwgcG91ciBham91dGVyIGRlCiAgICBwZXRpdGVzIHF1YW50aXTpcyBkJ2luZm9ybWF0aW9uLCBjb21tZSBsJ2hldXJlIGNvdXJhbnRlIGRhbnMKICAgIGwnZXhlbXBsZSBwculj6WRlbnQuIE1haXMgc2kgbGEKICAgIHBsdXMgZ3JhbmRlIHBhcnRpZSBkZSB2b3RyZSBwYWdlIGVzdCBn6W7pcullIGF1IG1vbWVudCBv+SBlbGxlIGVzdAogICAgc2VydmllLCB2b3VzIGRldmV6IHZvdXMgdG91cm5lciB2ZXJzIHVuZSBhdXRyZSBzb2x1dGlvbi48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNvbmZpZ3VyaW5nIiBpZD0iY29uZmlndXJpbmciPkNvbmZpZ3VyZXIgdm90cmUgc2VydmV1ciBwb3VyIHBlcm1ldHRyZSBsZXMgU1NJPC9hPjwvaDI+CgoKICAgIDxwPlBvdXIgcGVybWV0dHJlIGwndXRpbGlzYXRpb24gZGVzIFNTSSBzdXIgdm90cmUgc2VydmV1ciwgdm91cwogICAgZGV2ZXogYWpvdXRlciBsYSBkaXJlY3RpdmUgc3VpdmFudGUgZGFucyB2b3RyZSBmaWNoaWVyCiAgICA8Y29kZT5odHRwZC5jb25mPC9jb2RlPiwgb3UgZGFucyB1biBmaWNoaWVyIDxjb2RlPi5odGFjY2VzczwvY29kZT4KICAgIDo8L3A+CjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5PcHRpb25zICtJbmNsdWRlczwvcHJlPgoKCiAgICA8cD5DZXR0ZSBkaXJlY3RpdmUgaW5kaXF1ZSDgIEFwYWNoZSBxdWUgdm91cyBk6XNpcmV6IHBlcm1ldHRyZSBsYQogICAgcmVjaGVyY2hlIGRlIGRpcmVjdGl2ZXMgU1NJIGxvcnMgZGUgbCdpbnRlcnBy6XRhdGlvbiBkZXMgZmljaGllcnMuCiAgICBOb3RleiBjZXBlbmRhbnQgcXVlIGxhIHBsdXBhcnQgZGVzIGNvbmZpZ3VyYXRpb25zIGNvbnRpZW5uZW50IGRlCiAgICBub21icmV1c2VzIGRpcmVjdGl2ZXMgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNvcHRpb25zIj5PcHRpb25zPC9hPjwvY29kZT4KICAgIHF1aSBwZXV2ZW50IHMn6WNyYXNlciBsZXMgdW5lcyBsZXMgYXV0cmVzLiBWb3VzIGRldnJleiBwcm9iYWJsZW1lbnQKICAgIGFwcGxpcXVlciBjZXMgZGlyZWN0aXZlcyA8Y29kZT5PcHRpb25zPC9jb2RlPiBhdSBy6XBlcnRvaXJlCiAgICBzcOljaWZpcXVlIHBvdXIgbGVxdWVsIHZvdXMgdm91bGV6IGFjdGl2ZXIgbGVzIFNTSSwgYWZpbiBkJ+p0cmUgc/tyCiAgICBxdSdlbGxlcyB5IHNlcm9udCBiaWVuIGFjdGl26WVzLjwvcD4KCiAgICA8cD5Ub3V0IGZpY2hpZXIgbmUgZmVyYSBjZXBlbmRhbnQgcGFzIGwnb2JqZXQgZGUgcmVjaGVyY2hlIGRlCiAgICBkaXJlY3RpdmVzIFNTSS4gVm91cyBkZXZleiBpbmRpcXVlciDgIEFwYWNoZSBxdWVscyBmaWNoaWVycyBzZXJvbnQKICAgIGNvbmNlcm7pcy4gVm91cyBwb3V2ZXogeSBwYXJ2ZW5pciBlbiBpbmRpcXVhbnQgdW5lIGV4dGVuc2lvbiwgY29tbWUKICAgIDxjb2RlPi5zaHRtbDwvY29kZT4sIOAgbCdhaWRlIGRlcyBkaXJlY3RpdmVzIHN1aXZhbnRlcyA6PC9wPgo8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCkFkZE91dHB1dEZpbHRlciBJTkNMVURFUyAuc2h0bWw8L3ByZT4KCgogICAgPHA+VW4gZGVzIGTpc2F2YW50YWdlcyBkZSBjZXR0ZSBhcHByb2NoZSBy6XNpZGUgZGFucyBsZSBmYWl0IHF1ZSBzaQogICAgdm91cyB2b3VsZXogYWpvdXRlciBkZXMgZGlyZWN0aXZlcyBTU0kg4CB1bmUgcGFnZSBwculleGlzdGFudGUsIHZvdXMKICAgIGRldnJleiBjaGFuZ2VyIGxlIG5vbSBkZSBjZXR0ZSBwYWdlLCBldCBkb25jIHRvdXQgbGllbiBxdWkgbGEKICAgIGNvbnRpZW50LCBkZSBmYedvbiDgIGNlIHF1J2VsbGUgcG9zc+hkZSBsJ2V4dGVuc2lvbgogICAgPGNvZGU+LnNodG1sPC9jb2RlPiwgY29uZGl0aW9uIG7pY2Vzc2FpcmUgcG91ciBxdWUgbGVzIGRpcmVjdGl2ZXMKICAgIFNTSSBxdSdlbGxlIGNvbnRpZW50IHNvaWVudCB0cmFpdOllcy48L3A+CgogICAgPHA+VW5lIGF1dHJlIG3pdGhvZGUgY29uc2lzdGUg4CB1dGlsaXNlciBsYSBkaXJlY3RpdmUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pbmNsdWRlLmh0bWwjeGJpdGhhY2siPlhCaXRIYWNrPC9hPjwvY29kZT4gOjwvcD4KPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlhCaXRIYWNrIG9uPC9wcmU+CgoKICAgIDxwPkxhIGRpcmVjdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCN4Yml0aGFjayI+WEJpdEhhY2s8L2E+PC9jb2RlPgogICAgaW5kaXF1ZSDgIEFwYWNoZSBxdSdpbCBkb2l0IHJlY2hlcmNoZXIgZGVzIGRpcmVjdGl2dmVzIFNTSSBkYW5zIGxlcwogICAgZmljaGllcnMgc2kgbGV1ciBiaXQgZCdleOljdXRpb24gZXN0IHBvc2l0aW9ubukuIElsIG4nZXN0IGFpbnNpIHBsdXMKICAgIG7pY2Vzc2FpcmUgZGUgY2hhbmdlciBsZSBub20gZHUgZmljaGllciBwb3VyIGFqb3V0ZXIgZGVzIGRpcmVjdGl2ZXMKICAgIFNTSSDgIHVuZSBwYWdlIHBy6WV4aXN0YW50ZSA7IHZvdXMgZGV2ZXogc2ltcGxlbWVudCBhdHRyaWJ1ZXIgbGVzCiAgICBkcm9pdHMgZCdleOljdXRpb24gYXUgZmljaGllciDgIGwnYWlkZSBkZSA8Y29kZT5jaG1vZDwvY29kZT4uPC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICBjaG1vZCAreCBwYWdlbmFtZS5odG1sCjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VW4gYnJlZiBjb21tZW50YWlyZSBzdXIgY2UgcXUnaWwgbmUgZmF1dCBwYXMgZmFpcmUuIENlcnRhaW5lcwogICAgcGVyc29ubmVzIHBldXZlbnQgdm91cyBjb25zZWlsbGVyIGRlIHRvdXQgc2ltcGxlbWVudCBpbmRpcXVlciDgCiAgICBBcGFjaGUgZGUgcmVjaGVyY2hlciBkZXMgZGlyZWN0aXZlcyBTU0kgZGFucyB0b3VzIGxlcyBmaWNoaWVycwogICAgPGNvZGU+Lmh0bWw8L2NvZGU+LCBjZSBxdWkgdm91cyDpdml0ZSBkJ2F2b2lyIOAgZ+lyZXIgbGVzIG5vbXMgZGUKICAgIGZpY2hpZXJzIGF2ZWMgZXh0ZW5zaW9uIDxjb2RlPi5zaHRtbDwvY29kZT4uIElscyBuJ29udCBwcm9iYWJsZW1lbnQKICAgIHBhcyBlbnRlbmR1IHBhcmxlciBkZSBsYSBkaXJlY3RpdmUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pbmNsdWRlLmh0bWwjeGJpdGhhY2siPlhCaXRIYWNrPC9hPjwvY29kZT4uIEVuIGVmZmV0LCB2b3VzIGRldmV6CiAgICBnYXJkZXIg4CBsJ2VzcHJpdCBxdSdlbiBmYWlzYW50IGNlY2ksIEFwYWNoZSB2YSBkZXZvaXIgcmVjaGVyY2hlcgogICAgZGVzIGRpcmVjdGl2ZXMgU1NJIGRhbnMgY2hhcXVlIGZpY2hpZXIgcXUnaWwgc2VydCwgbeptZSBzJ2lsIG4nZW4KICAgIGNvbnRpZW50IGF1Y3VuZS4gQ2Ugbidlc3QgZG9uYyBwYXMgdW5lIGJvbm5lIGlk6WUgY2FyIGxlcwogICAgcGVyZm9ybWFuY2VzIHBldXZlbnQgZW4g6nRyZSBzZW5zaWJsZW1lbnQgYWZmZWN06WVzLjwvcD4KCiAgICA8cD5CaWVuIGVudGVuZHUsIHNvdXMgV2luZG93cywgaWwgbid5IGEgcGFzIGRlIGJpdCBkJ2V46WN1dGlvbiDgCiAgICBwb3NpdGlvbm5lciwgY2UgcXVpIGxpbWl0ZSB1biBwZXUgdm9zIGNob2l4LjwvcD4KCiAgICA8cD5EYW5zIHNhIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dCwgQXBhY2hlIG4nZW52b2llIHBhcyBsYSBkYXRlIGRlCiAgICBkZXJuaehyZSBtb2RpZmljYXRpb24gb3UgbGVzIGVuLXTqdGVzIEhUVFAgcmVsYXRpZnMg4CBsYSB0YWlsbGUgZGVzCiAgICBjb250ZW51cyBkYW5zIGxlcyBwYWdlcyBTU0ksIGNhciBzZXMgdmFsZXVycyBzb250IGRpZmZpY2lsZXMg4AogICAgY2FsY3VsZXIgcG91ciBsZXMgY29udGVudXMgZHluYW1pcXVlcy4gQ2VjaSBwZXV0IGluZHVpcmUgdW5lCiAgICBpbXByZXNzaW9uIGRlIGRpbWludXRpb24gZGVzIHBlcmZvcm1hbmNlcyBj9HTpIGNsaWVudCwgZW4gZW1w6mNoYW50CiAgICBsYSBtaXNlIGVuIGNhY2hlIGRlIHZvdHJlIGRvY3VtZW50LiBJbCBleGlzdGUgZGV1eCBt6XRob2RlcyBwb3VyCiAgICBy6XNvdWRyZSBjZSBwcm9ibOhtZSA6PC9wPgoKICAgIDxvbD4KICAgICAgPGxpPlV0aWxpc2V6IGxhIGNvbmZpZ3VyYXRpb24gPGNvZGU+WEJpdEhhY2sgRnVsbDwvY29kZT4uIEVsbGUKICAgICAgaW5kaXF1ZSDgIEFwYWNoZSBkZSBk6XRlcm1pbmVyIGxhIGRhdGUgZGUgZGVybmnocmUgbW9kaWZpY2F0aW9uIGVuCiAgICAgIG5lIHJlZ2FyZGFudCBxdWUgbGEgZGF0ZSBkdSBmaWNoaWVyIOAgbCdvcmlnaW5lIGRlIGxhIHJlcXXqdGUsCiAgICAgIHRvdXQgZW4gaWdub3JhbnQgbGEgZGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgdG91dCBmaWNoaWVyIGluY2x1cy48L2xpPgoKICAgICAgPGxpPlV0aWxpc2V6IGxlcyBkaXJlY3RpdmVzIGZvdXJuaWVzIHBhciBsZSBtb2R1bGUKICAgICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9leHBpcmVzLmh0bWwiPm1vZF9leHBpcmVzPC9hPjwvY29kZT4gcG91ciBk6WZpbmlyIGRlIG1hbmnocmUgZXhwbGljaXRlIGxhCiAgICAgIGRhdGUgZCdleHBpcmF0aW9uIGRlIHZvcyBmaWNoaWVycywgbGFpc3NhbnQgcGFyIGxhLW3qbWUKICAgICAgYXV4IG5hdmlnYXRldXJzIGV0IGF1eCBtYW5kYXRhaXJlcyBsZSBzb2luIGRlIGTpdGVybWluZXIgcydpbCBlc3QKICAgICAgb3Bwb3J0dW4gb3Ugbm9uIGRlIGxlcyBtZXR0cmUgZW4gY2FjaGUuPC9saT4KICAgIDwvb2w+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImJhc2ljIiBpZD0iYmFzaWMiPkRpcmVjdGl2ZXMgU1NJIGRlIGJhc2U8L2E+PC9oMj4KCiAgICA8cD5MZXMgZGlyZWN0aXZlcyBTU0kgYWRvcHRlbnQgbGEgc3ludGF4ZSBzdWl2YW50ZSA6PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAmbHQ7IS0tI2ZvbmN0aW9uIGF0dHJpYnV0PXZhbGV1ciBhdHRyaWJ1dD12YWxldXIgLi4uIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkxlIGZvcm1hdCBkJ3VuZSBkaXJlY3RpdmUgU1NJIOl0YW50IHNpbWlsYWlyZSDgIGNlbHVpIGQndW4KICAgIGNvbW1lbnRhaXJlIEhUTUwsIHNpIHZvdXMgbidhdmV6IHBhcyBhY3RpdukgY29ycmVjdGVtZW50IFNTSSwgbGUKICAgIG5hdmlnYXRldXIgbCdpZ25vcmVyYSwgbWFpcyBlbGxlIHNlcmEgZW5jb3JlIHZpc2libGUgZGFucyBsZSBzb3VyY2UKICAgIEhUTUwuIFNpIFNTSSBlc3QgY29ycmVjdGVtZW50IGNvbmZpZ3Vy6SwgbGEgZGlyZWN0aXZlIHNlcmEgcmVtcGxhY+llCiAgICBwYXIgc2VzIHLpc3VsdGF0cy48L3A+CgogICAgPHA+ImZvbmN0aW9uIiBwZXV0IHByZW5kcmUgZGUgbm9tYnJldXNlcyBmb3JtZXMsIGV0IG5vdXMgZOljcmlyb25zCiAgICBwbHVzIHBy6WNpc+ltZW50IGxhIHBsdXBhcnQgZCdlbnRyZSBldXggZGFucyBsYSBwcm9jaGFpbmUgdmVyc2lvbiBkZQogICAgY2UgZG9jdW1lbnQuIFBvdXIgbGUgbW9tZW50LCB2b2ljaSBxdWVscXVlcyBleGVtcGxlcyBkZSBjZSBxdWUgdm91cwogICAgcG91dmV6IGZhaXJlIGF2ZWMgU1NJLjwvcD4KCjxoMz48YSBuYW1lPSJ0b2RheXNkYXRlIiBpZD0idG9kYXlzZGF0ZSI+TGEgZGF0ZSBjb3VyYW50ZTwvYT48L2gzPgoKPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNlY2hvIHZhcj0iREFURV9MT0NBTCIgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+TGEgZm9uY3Rpb24gPGNvZGU+ZWNobzwvY29kZT4gcGVybWV0IGQnYWZmaWNoZXIgbGEgdmFsZXVyIGQndW5lCiAgICB2YXJpYWJsZS4gSWwgZXhpc3RlIHVuIGdyYW5kIG5vbWJyZSBkZSB2YXJpYWJsZXMgc3RhbmRhcmRzLCB5CiAgICBjb21wcmlzIGwnZW5zZW1ibGUgZGVzIHZhcmlhYmxlcyBkJ2Vudmlyb25uZW1lbnQgZGlzcG9uaWJsZXMgcG91cgogICAgbGVzIHByb2dyYW1tZXMgQ0dJLiBEZSBwbHVzLCB2b3VzIHBvdXZleiBk6WZpbmlyIHZvcyBwcm9wcmVzCiAgICB2YXJpYWJsZXMg4CBsJ2FpZGUgZGUgbGEgZm9uY3Rpb24gPGNvZGU+c2V0PC9jb2RlPi48L3A+CgogICAgPHA+U2kgdm91cyBuJ2FpbWV6IHBhcyBsZSBmb3JtYXQgc291cyBsZXF1ZWwgbGEgZGF0ZSBzJ2FmZmljaGUsIHZvdXMKICAgIHBvdXZleiB1dGlsaXNlciBsYSBmb25jdGlvbiA8Y29kZT5jb25maWc8L2NvZGU+IGF2ZWMgdW4gYXR0cmlidXQKICAgIDxjb2RlPnRpbWVmbXQ8L2NvZGU+LCBwb3VyIGxlIG1vZGlmaWVyLjwvcD4KCjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jY29uZmlnIHRpbWVmbXQ9IiVBICVCICVkLCAlWSIgLS0mZ3Q7PGJyIC8+CiAgICAgICAgVG9kYXkgaXMgJmx0OyEtLSNlY2hvIHZhcj0iREFURV9MT0NBTCIgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgoKPGgzPjxhIG5hbWU9Imxhc3Rtb2RpZmllZCIgaWQ9Imxhc3Rtb2RpZmllZCI+RGF0ZSBkZSBtb2RpZmljYXRpb24gZHUgZmljaGllcjwvYT48L2gzPgoKPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgRGVybmnocmUgbW9kaWZpY2F0aW9uIGR1IGRvY3VtZW50ICZsdDshLS0jZmxhc3Rtb2QgZmlsZT0iaW5kZXguaHRtbCIgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+TGUgZm9ybWF0IHBldXQgbOAgYXVzc2kg6nRyZSBtb2RpZmnpIOAgbCdhaWRlIGRlIGwnYXR0cmlidXQKICAgIDxjb2RlPnRpbWVmbXQ8L2NvZGU+LjwvcD4KCgo8aDM+PGEgbmFtZT0iY2dpIiBpZD0iY2dpIj5JbmNsdXNpb24gZGVzIHLpc3VsdGF0cyBkJ3VuIHByb2dyYW1tZSBDR0k8L2E+PC9oMz4KCiAgICA8cD5DJ2VzdCBsZSBjYXMgbGUgcGx1cyBjb3VyYW50IGQndXRpbGlzYXRpb24gZGVzIFNTSSAtIGFmZmljaGVyIGxlcwogICAgculzdWx0YXRzIGQndW4gcHJvZ3JhbW1lIENHSSwgY29tbWUgbCd1bml2ZXJzZWxsZW1lbnQgYWRvcukKICAgICJjb21wdGV1ciBkJ2FjY+hzIi48L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAmbHQ7IS0tI2luY2x1ZGUgdmlydHVhbD0iL2NnaS1iaW4vY291bnRlci5wbCIgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iYWRkaXRpb25hbGV4YW1wbGVzIiBpZD0iYWRkaXRpb25hbGV4YW1wbGVzIj5FeGVtcGxlcyBhZGRpdGlvbm5lbHM8L2E+PC9oMj4KCgogICAgPHA+Vm91cyB0cm91dmVyZXogZGFucyBjZSBxdWkgc3VpdCBxdWVscXVlcyBleGVtcGxlcyBzcOljaWZpcXVlcyBkZQogICAgY2UgcXVlIHZvdXMgcG91dmV6IGZhaXJlIGRlIHZvcyBkb2N1bWVudHMgSFRNTCBhdmVjIFNTSS48L3A+Cgo8aDM+PGEgbmFtZT0iZG9jbW9kaWZpZWQiIGlkPSJkb2Ntb2RpZmllZCI+UXVhbmQgY2UgZG9jdW1lbnQgYS10LWlsIOl06SBtb2RpZmnpID88L2E+PC9oMz4KCiAgICA8cD5Ob3VzIGF2b25zIG1lbnRpb25u6SBwbHVzIGhhdXQgcXVlIHZvdXMgcG91dmlleiB1dGlsaXNlciBTU0kgcG91cgogICAgaW5mb3JtZXIgbCd1dGlsaXNhdGV1ciBkZSBsYSBkYXRlIGRlIGRlcm5p6HJlIG1vZGlmaWNhdGlvbiBkdQogICAgZG9jdW1lbnQuIENlcGVuZGFudCwgbGEgbel0aG9kZSBwb3VyIHkgcGFydmVuaXIgbidhIHBhcyDpdOkgdnJhaW1lbnQKICAgIGFib3Jk6WUuIFBsYWPpIGRhbnMgdm90cmUgZG9jdW1lbnQgSFRNTCwgbGUgY29kZSBzdWl2YW50IHZhIGluc+lyZXIKICAgIHVuIHJlcOhyZSBkZSB0ZW1wcyBkYW5zIHZvdHJlIHBhZ2UuIEJpZW4gZW50ZW5kdSwgU1NJIGRldnJhIGF2b2lyCiAgICDpdOkgY29ycmVjdGVtZW50IGFjdGl26SwgY29tbWUgZOljcml0IHBsdXMgaGF1dC48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jY29uZmlnIHRpbWVmbXQ9IiVBICVCICVkLCAlWSIgLS0mZ3Q7PGJyIC8+CiAgICAgICAgRGVybmnocmUgbW9kaWZpY2F0aW9uIGR1IGZpY2hpZXIgJmx0OyEtLSNmbGFzdG1vZCBmaWxlPSJzc2kuc2h0bWwiIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkJpZW4gZW50ZW5kdSwgdm91cyBkZXZleiByZW1wbGFjZXIgPGNvZGU+c3NpLnNodG1sPC9jb2RlPiBwYXIgbGUKICAgIG5vbSBkdSBmaWNoaWVyIGF1cXVlbCB2b3VzIGZhaXRlcyBy6WbpcmVuY2UuIENlY2kgbmUgY29udmllbmRyYSBwYXMKICAgIHNpIHZvdXMgcmVjaGVyY2hleiB1biBtb3JjZWF1IGRlIGNvZGUgZ+lu6XJpcXVlIHF1ZSB2b3VzIHBvdXJyZXoKICAgIGluc+lyZXIgZGFucyB0b3V0IGZpY2hpZXIgOyBkYW5zIGNlIGNhcywgaWwgZXN0IHBy6WbpcmFibGUKICAgIGQndXRpbGlzZXIgbGEgdmFyaWFibGUgPGNvZGU+TEFTVF9NT0RJRklFRDwvY29kZT4gOjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNjb25maWcgdGltZWZtdD0iJUQiIC0tJmd0OzxiciAvPgogICAgICAgIFRoaXMgZmlsZSBsYXN0IG1vZGlmaWVkICZsdDshLS0jZWNobyB2YXI9IkxBU1RfTU9ESUZJRUQiIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlBvdXIgcGx1cyBkZSBk6XRhaWxzIHN1ciBsZSBmb3JtYXQgPGNvZGU+dGltZWZtdDwvY29kZT4sIHRhcGV6CiAgICA8Y29kZT5zdHJmdGltZTwvY29kZT4gZGFucyB2b3RyZSBtb3RldXIgZGUgcmVjaGVyY2hlIHBy6WZlcukuIExhCiAgICBzeW50YXhlIGVzdCBpZGVudGlxdWUuPC9wPgoKCjxoMz48YSBuYW1lPSJzdGFuZGFyZC1mb290ZXIiIGlkPSJzdGFuZGFyZC1mb290ZXIiPkluY2x1c2lvbiBkJ3VuIHBpZWQgZGUgcGFnZSBzdGFuZGFyZDwvYT48L2gzPgoKCiAgICA8cD5TaSBsZSBzaXRlIHF1ZSB2b3VzIGfpcmV6IGNvbXBvcnRlIHBsdXMgcXVlIHF1ZWxxdWVzIHBhZ2VzLCB2b3VzCiAgICBhbGxleiB2aXRlIHZvdXMgYXBlcmNldm9pciBxdSdlZmZlY3R1ZXIgZGVzIG1vZGlmaWNhdGlvbnMgc3VyIHRvdXRlcwogICAgY2VzIHBhZ2VzIHBldXQgZGV2ZW5pciB0cuhzIGNvbnRyYWlnbmFudCwgZW4gcGFydGljdWxpZXIgc2kgdm91cwogICAgdm91bGV6IHF1J2VsbGVzIGNvbnNlcnZlbnQgdW4gYXNwZWN0IGhvbW9n6G5lLjwvcD4KCiAgICA8cD5JbmNsdXJlIHVuIGZpY2hpZXIgcG91ciB1biBlbi106nRlIGV0L291IHVuIHBpZWQgZGUgcGFnZSBwZXV0CiAgICBzaW1wbGlmaWVyIGNldHRlIGNvcnbpZSBkZSBtaXNlcyDgIGpvdXIuIElsIHZvdXMgc3VmZml0IGRlCiAgICBjb25mZWN0aW9ubmVyIHVuIGZpY2hpZXIgZGUgcGllZCBkZSBwYWdlLCBldCBkZSBsJ2luY2x1cmUgZGFucwogICAgY2hhcXVlIHBhZ2Ug4CBsJ2FpZGUgZGUgbCfpbOltZW50IFNTSSA8Y29kZT5pbmNsdWRlPC9jb2RlPi4gUG91cgogICAgZOlmaW5pciBsZSBmaWNoaWVyIOAgaW5jbHVyZSwgbGEgZm9uY3Rpb24gPGNvZGU+aW5jbHVkZTwvY29kZT4gcGV1dAogICAgdXRpbGlzZXIgc29pdCBsJ2F0dHJpYnV0IDxjb2RlPmZpbGU8L2NvZGU+LCBzb2l0IGwnYXR0cmlidXQKICAgIDxjb2RlPnZpcnR1YWw8L2NvZGU+LiBMJ2F0dHJpYnV0IDxjb2RlPmZpbGU8L2NvZGU+IGVzdCB1biBjaGVtaW4gZGUKICAgIGZpY2hpZXIgPGVtPnJlbGF0aWYgYXUgculwZXJ0b2lyZSBjb3VyYW50PC9lbT4uIEMnZXN0IOAgZGlyZSBxdSdpbAogICAgbmUgcGV1dCBuaSBhdm9pciBwb3VyIHZhbGV1ciB1biBjaGVtaW4gYWJzb2x1IChjb21tZW7nYW50IHBhciAvKSwgbmkKICAgIGNvbXBvcnRlciAiLi4vIiBkYW5zIHNvbiBjaGVtaW4uIEwnYXR0cmlidXQgPGNvZGU+dmlydHVhbDwvY29kZT4gZXN0CiAgICBwcm9iYWJsZW1lbnQgcGx1cyBjb21tb2RlLCBldCBwZXV0IHNw6WNpZmllciB1bmUgVVJMIHJlbGF0aXZlIGF1CiAgICBkb2N1bWVudCBzZXJ2aS4gRWxsZSBwZXV0IGNvbW1lbmNlciBwYXIgdW4gLywgbWFpcyBsZSBmaWNoaWVyIGluY2x1cwogICAgZXQgbGUgZmljaGllciBzZXJ2aSBkb2l2ZW50IHLpc2lkZXIgc3VyIGxlIG3qbWUgc2VydmV1ci48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jaW5jbHVkZSB2aXJ0dWFsPSIvZm9vdGVyLmh0bWwiIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkplIGNvbWJpbmVyYWkgc291dmVudCBjZXMgZGV1eCBkZXJuaWVycyBwb2ludHMsIGVuIGFqb3V0YW50IHVuZQogICAgZGlyZWN0aXZlIDxjb2RlPkxBU1RfTU9ESUZJRUQ8L2NvZGU+IGRhbnMgdW4gZmljaGllciBkZSBwaWVkIGRlIHBhZ2UKICAgIGRlc3Rpbukg4CDqdHJlIGluY2x1cy4gTGUgZmljaGllciBpbmNsdXMgcGV1dCBjb250ZW5pciBkZXMKICAgIGRpcmVjdGl2ZXMgU1NJLCBldCBsZXMgaW5jbHVzaW9ucyBwZXV2ZW50IOp0cmUgaW1icmlxdellcyAtIOAKICAgIHNhdm9pciwgbGUgZmljaGllciBpbmNsdXMgcGV1dCBpbmNsdXJlIHVuIGF1dHJlIGZpY2hpZXIsIGV0Yy4uLjwvcD4KCgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJjb25maWciIGlkPSJjb25maWciPlF1ZSBwdWlzLWplIGNvbmZpZ3VyZXIgZCdhdXRyZSA/PC9hPjwvaDI+CgoKICAgIDxwPkVuIHBsdXMgZHUgZm9ybWF0IGRlIGRhdGUsIHZvdXMgcG91dmV6IHV0aWxpc2VyIGwn6WzpbWVudAogICAgPGNvZGU+Y29uZmlnPC9jb2RlPiBwb3VyIGNvbmZpZ3VyZXIgZGV1eCBhdXRyZXMgY2hvc2VzLjwvcD4KCiAgICA8cD5FbiBn6W7pcmFsLCBsb3JzcXVlIHF1ZWxxdWUgY2hvc2Ugc2UgcGFzc2UgbWFsIGF2ZWMgdm90cmUKICAgIGRpcmVjdGl2ZSBTU0ksIHZvdXMgcmVjZXZleiBsZSBtZXNzYWdlIDo8L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgIFthbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgZGlyZWN0aXZlXQo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlBvdXIgbW9kaWZpZXIgY2UgbWVzc2FnZSwgdm91cyBwb3V2ZXogdXRpbGlzZXIgbCdhdHRyaWJ1dAogICAgPGNvZGU+ZXJybXNnPC9jb2RlPiBhdmVjIGxhIGZvbmN0aW9uIDxjb2RlPmNvbmZpZzwvY29kZT4gOjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNjb25maWcgZXJybXNnPSJbSWwgc2VtYmxlcmFpdCBxdWUgdm91cyBuZSBzYWNoaWV6IHBhcwoJdXRpbGlzZXIgbGVzIFNTSV0iIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPklsIGVzdCBjZXBlbmRhbnQgcHJvYmFibGUgcXVlIGxlcyB1dGlsaXNhdGV1cnMgZmluYXV4IG5lIHZvaWVudAogICAgamFtYWlzIGNlIG1lc3NhZ2UsIGNhciB2b3VzIGF1cmV6IHLpc29sdSB0b3VzIGxlcyBwcm9ibOhtZXMgaXNzdXMgZGUKICAgIHZvcyBkaXJlY3RpdmVzIFNTSSBhdmFudCBxdWUgdm90cmUgc2l0ZSBuZSBzb2l0IG1pcyBlbiBwcm9kdWN0aW9uLgogICAgKE4nZXN0LWNlIHBhcyA/KTwvcD4KCiAgICA8cD5Wb3VzIHBvdXZleiBhdXNzaSBtb2RpZmllciBsZSBmb3JtYXQgc291cyBsZXF1ZWwgbGVzIHRhaWxsZXMgZGUKICAgIGZpY2hpZXJzIHNvbnQgYWZmaWNo6WVzIOAgbCdhaWRlIGRlIGwnYXR0cmlidXQgPGNvZGU+c2l6ZWZtdDwvY29kZT4uCiAgICBWb3VzIHBvdXZleiBzcOljaWZpZXIgPGNvZGU+Ynl0ZXM8L2NvZGU+IHBvdXIgdW4gYWZmaWNoYWdlIGVuCiAgICBvY3RldHMsIG91IDxjb2RlPmFiYnJldjwvY29kZT4gcG91ciB1biBhZmZpY2hhZ2UgcGx1cyBjb25jaXMgZW4gS28KICAgIG91IE1vLCBzZWxvbiBsZSBjYXMuPC9wPgogICAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZXhlYyIgaWQ9ImV4ZWMiPkV46WN1dGlvbiBkZSBjb21tYW5kZXM8L2E+PC9oMj4KICAgIAoKICAgIDxwPlZvaWNpIGF1dHJlIGNob3NlIHF1ZSB2b3VzIHBvdXZleiBmYWlyZSBhdmVjIGxhIGZvbmN0aW9uCiAgICA8Y29kZT5leGVjPC9jb2RlPi4gVm91cyBwb3V2ZXogdnJhaW1lbnQgZmFpcmUgZXjpY3V0ZXIgdW5lIGNvbW1hbmRlCiAgICBwYXIgU1NJIGVuIHV0aWxpc2FudCBsZSBzaGVsbCAoPGNvZGU+L2Jpbi9zaDwvY29kZT4sIHBvdXIg6nRyZSBwbHVzCiAgICBwculjaXMgLSBvdSBsZSBzaGVsbCBET1MsIHNpIHZvdXMg6nRlcyBzb3VzIFdpbjMyKS4gUGFyIGV4ZW1wbGUsIGNlCiAgICBxdWkgc3VpdCB2b3VzIHBlcm1ldCBkJ2FmZmljaGVyIGxlIGNvbnRlbnUgZCd1biBy6XBlcnRvaXJlLjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0O3ByZSZndDs8YnIgLz4KICAgICAgICAmbHQ7IS0tI2V4ZWMgY21kPSJscyIgLS0mZ3Q7PGJyIC8+CiAgICAgICAgJmx0Oy9wcmUmZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+b3UsIHNvdXMgV2luZG93czwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0O3ByZSZndDs8YnIgLz4KICAgICAgICAmbHQ7IS0tI2V4ZWMgY21kPSJkaXIiIC0tJmd0OzxiciAvPgogICAgICAgICZsdDsvcHJlJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlZvdXMgbm90ZXJleiBwcm9iYWJsZW1lbnQgbCfpdHJhbmdlIGZvcm1hdGFnZSBwcm92b3F16SBwYXIgY2V0dGUKICAgIGRpcmVjdGl2ZSBzb3VzIFdpbmRvd3MsIGNhciBsYSBzb3J0aWUgZGUgPGNvZGU+ZGlyPC9jb2RlPiBjb250aWVudAogICAgbGEgY2hh7m5lICBkZSBjYXJhY3TocmVzICImbHQ7PGNvZGU+ZGlyPC9jb2RlPiZndDsiLCBjZSBxdWkgdHJvbXBlIGxlCiAgICBuYXZpZ2F0ZXVyLjwvcD4KCiAgICA8cD5Ob3RleiBxdWUgY2V0dGUgZm9uY3Rpb25uYWxpdOkgZXN0IHRy6HMgZGFuZ2VyZXVzZSwgY2FyIGVsbGUgdmEKICAgIHBlcm1ldHRyZSBkJ2V46WN1dGVyIHRvdXQgY29kZSBhc3NvY2npIOAgbCfpbOltZW50CiAgICA8Y29kZT5leGVjPC9jb2RlPi4gU2kgdm91cyDqdGVzIGRhbnMgbGEgc2l0dWF0aW9uIG/5IGxlcwogICAgdXRpbGlzYXRldXJzIHBldXZlbnQg6WRpdGVyIGxlIGNvbnRlbnUgZGUgdm9zIHBhZ2VzIHdlYiwgZGFucyBsZSBjYXMKICAgIGQndW4gImxpdnJlIGQnb3IiIHBhciBleGVtcGxlLCBhc3N1cmV6LXZvdXMgZGUgZOlzYWN0aXZlciBjZXR0ZQogICAgZm9uY3Rpb25uYWxpdOkuIFZvdXMgcG91dmV6LCB0b3V0IGVuIHBlcm1ldHRhbnQgbGVzIFNTSSwgZOlzYWN0aXZlcgogICAgbGEgZm9uY3Rpb25uYWxpdOkgPGNvZGU+ZXhlYzwvY29kZT4g4CBsJ2FpZGUgZGUgbCdhcmd1bWVudAogICAgPGNvZGU+SW5jbHVkZXNOT0VYRUM8L2NvZGU+IGRlIGxhIGRpcmVjdGl2ZQogICAgPGNvZGU+T3B0aW9uczwvY29kZT4uPC9wPgogICAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iYWR2YW5jZWQiIGlkPSJhZHZhbmNlZCI+VGVjaG5pcXVlcyBTU0kgYXZhbmPpZXM8L2E+PC9oMj4KCgogICAgPHA+T3V0cmUgbCdhZmZpY2hhZ2UgZGUgY29udGVudSwgbGVzIFNTSSBkJ0FwYWNoZSB2b3VzIHBlcm1ldHRlbnQgZGUKICAgIGTpZmluaXIgZGVzIHZhcmlhYmxlcywgZXQgZGUgbGVzIHV0aWxpc2VyIGRhbnMgZGVzIGNvbXBhcmFpc29ucyBldAogICAgZGVzIGNvbmRpdGlvbnMuPC9wPgoKPGgzPjxhIG5hbWU9InZhcmlhYmxlcyIgaWQ9InZhcmlhYmxlcyI+ROlmaW5pdGlvbiBkZSB2YXJpYWJsZXM8L2E+PC9oMz4KCiAgICA8cD5BdmVjIGwn6WzpbWVudCA8Y29kZT5zZXQ8L2NvZGU+LCB2b3VzIHBvdXZleiBk6WZpbmlyIGRlcwogICAgdmFyaWFibGVzIHBvdXIgdW4gdXNhZ2UgdWx06XJpZXVyLiBDb21tZSBub3VzIGVuIGF1cm9ucyBiZXNvaW4gcGx1cwogICAgbG9pbiwgbm91cyBhbGxvbnMgZW4gcGFybGVyIHRvdXQgZGUgc3VpdGUuIExhIHN5bnRheGUgc2UgcHLpc2VudGUKICAgIGNvbW1lIHN1aXQgOjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNzZXQgdmFyPSJuYW1lIiB2YWx1ZT0iUmljaCIgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+UG91ciBhZmZlY3RlciB1bmUgdmFsZXVyIOAgdm9zIHZhcmlhYmxlcywgZW4gcGx1cyBkZSBsYQogICAgZOlmaW5pdGlvbiBsaXR06XJhbGUgZGUgbCdleGVtcGxlIGNpLWRlc3N1cywgdm91cyBwb3V2ZXogdXRpbGlzZXIKICAgIHVuZSBhdXRyZSB2YXJpYWJsZSwgeSBjb21wcmlzIGxlcyA8YSBocmVmPSIuLi9lbnYuaHRtbCI+dmFyaWFibGVzIGQnZW52aXJvbm5lbWVudDwvYT4sIG91IGxlcyB2YXJpYWJsZXMKICAgIGTpY3JpdGVzIHBsdXMgaGF1dCAoY29tbWUgPGNvZGU+TEFTVF9NT0RJRklFRDwvY29kZT4gcGFyIGV4ZW1wbGUpLgogICAgUG91ciBpbmRpcXVlciBxdSdpbCBzJ2FnaXQgZCd1bmUgdmFyaWFibGUgZXQgbm9uIGQndW5lIGNoYe5uZSwgdm91cwogICAgZGV2ZXogdXRpbGlzZXIgbGUgc3ltYm9sZSBkb2xsYXIgKCQpIGRldmFudCBsZSBub20gZGUgbGEKICAgIHZhcmlhYmxlLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4gJmx0OyEtLSNzZXQgdmFyPSJtb2RpZmllZCIgdmFsdWU9IiRMQVNUX01PRElGSUVEIiAtLSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+UG91ciBpbnPpcmVyIHVuIGNhcmFjdOhyZSAkIGRhbnMgbGEgdmFsZXVyIGRlIHZvdHJlIHZhcmlhYmxlLAogICAgdm91cyBkZXZleiBsJ+ljaGFwcGVyIOAgbCdhaWRlIGQndW4gYmFja3NsYXNoLjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNzZXQgdmFyPSJjb3N0IiB2YWx1ZT0iXCQxMDAiIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkVuZmluLCBzaSB2b3VzIHZvdWxleiBpbnPpcmVyIHVuZSB2YXJpYWJsZSBkYW5zIHVuZSBjaGHubmUsIGV0CiAgICBzJ2lsIHkgYSB1bmUgY2hhbmNlIHBvdXIgcXVlIGxlIG5vbSBkZSBsYSB2YXJpYWJsZSBzZSBjb25mb25kZSBhdmVjCiAgICBsZSByZXN0ZSBkZSBsYSBjaGHubmUsIHZvdXMgcG91dmV6IGwnZW50b3VyZXIgZCdhY2NvbGFkZXMgcG91cgogICAgZXZpdGVyIHRvdXRlIGNvbmZ1c2lvbiAoSWwgZXN0IGRpZmZpY2lsZSBkZSB0cm91dmVyIHVuIGJvbiBleGVtcGxlCiAgICBwb3VyIGlsbHVzdHJlciBjZWNpLCBtYWlzIGonZXNw6HJlIHF1ZSB2b3VzIGNvbXByZW5kcmV6KS48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jc2V0IHZhcj0iZGF0ZSIgdmFsdWU9IiR7REFURV9MT0NBTH1fJHtEQVRFX0dNVH0iIC0tJmd0Owo8L2NvZGU+PC9wPjwvZGl2PgoKCjxoMz48YSBuYW1lPSJjb25kaXRpb25hbCIgaWQ9ImNvbmRpdGlvbmFsIj5FeHByZXNzaW9ucyBjb25kaXRpb25uZWxsZXM8L2E+PC9oMz4KCgogICAgPHA+TWFpbnRlbmVudCBxdWUgbm91cyBhdm9ucyBkZXMgdmFyaWFibGVzLCBldCBxdWUgbm91cyBwb3V2b25zCiAgICBk6WZpbmlyIGV0IGNvbXBhcmVyIGxldXJzIHZhbGV1cnMsIG5vdXMgc29tbWVzIOAgbeptZSBkZSBsZXMKICAgIHV0aWxpc2VyIGRhbnMgZGVzIGV4cHJlc3Npb25zIGNvbmRpdGlvbm5lbGxlcy4gQ2VjaSBjb25m6HJlIOAgU1NJIGxlCiAgICBzdGF0dXQgZGUgcGV0aXQgbGFuZ2FnZSBkZSBwcm9ncmFtbWF0aW9uLgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pbmNsdWRlLmh0bWwiPm1vZF9pbmNsdWRlPC9hPjwvY29kZT4gZm91cm5pdCB1bmUgc3RydWN0dXJlIDxjb2RlPmlmPC9jb2RlPiwKICAgIDxjb2RlPmVsaWY8L2NvZGU+LCA8Y29kZT5lbHNlPC9jb2RlPiwgPGNvZGU+ZW5kaWY8L2NvZGU+IHBvdXIgbGEKICAgIGNvbnN0cnVjdGlvbiBkJ2V4cHJlc3Npb25zIGNvbmRpdGlvbm5lbGxlcywgY2UgcXVpIHZvdXMgcGVybWV0IGRlCiAgICBn6W7pcmVyIHBsdXNpZXVycyBwYWdlcyBsb2dpcXVlcyDgIHBhcnRpciBkJ3VuZSBzZXVsZSB2cmFpZQogICAgcGFnZS48L3A+CgogICAgPHA+TGEgc3RydWN0dXJlIGRlIGwnZXhwcmVzc2lvbiBjb25kaXRpb25uZWxsZSBlc3QgOjwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAmbHQ7IS0tI2lmIGV4cHI9ImNvbmRpdGlvbiIgLS0mZ3Q7PGJyIC8+CiAgICAmbHQ7IS0tI2VsaWYgZXhwcj0iY29uZGl0aW9uIiAtLSZndDs8YnIgLz4KICAgICZsdDshLS0jZWxzZSAtLSZndDs8YnIgLz4KICAgICZsdDshLS0jZW5kaWYgLS0mZ3Q7CjwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VW5lIDxlbT5jb25kaXRpb248L2VtPiBwZXV0IHJldup0aXIgbGEgZm9ybWUgZGUgdG91dGUgY29tcGFyYWlzb24KICAgIGxvZ2lxdWUgLSBzb2l0IHVuZSBjb21wYXJhaXNvbiBkZSB2YWxldXJzIGF2ZWMgdW5lIGF1dHJlLCBzb2l0IHVuZQogICAgdulyaWZpY2F0aW9uIGRlIGxhICJ26XJpdOkiIGQndW5lIHZhbGV1ciBwYXJ0aWN1bGnocmUgKFVuZSBjaGHubmUKICAgIGRvbm7pZSBlc3QgdnJhaWUgc2kgZWxsZSBuJ2VzdCBwYXMgdmlkZSkuIFBvdXIgdW5lIGxpc3RlIGV4aGF1c3RpdmUKICAgIGRlcyBvcOlyYXRldXJzIGRlIGNvbXBhcmFpc29uIGRpc3BvbmlibGVzLCB2b2lyIGxhIGRvY3VtZW50YXRpb24gZHUKICAgIG1vZHVsZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPi48L3A+CgogICAgPHA+UGFyIGV4ZW1wbGUsIHNwb3VyIGluc+lyZXIgbCdoZXVyZSBkdSBqb3VyIGRhbnMgdm90cmUgcGFnZSB3ZWIsCiAgICB2b3VzIHBvdXZleiBham91dGVyIGNlcyBsaWduZXMgZGFucyBsYSBwYWdlIEhUTUwgOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgIEdvb2QKICAgICZsdDshLS0jaWYgZXhwcj0iJXtUSU1FX0hPVVJ9ICZsdDsxMiIgLS0mZ3Q7PGJyIC8+CiAgICBtb3JuaW5nITxiciAvPgogICAgJmx0OyEtLSNlbHNlIC0tJmd0OzxiciAvPgogICAgYWZ0ZXJub29uITxiciAvPgogICAgJmx0OyEtLSNlbmRpZiAtLSZndDs8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+ICAgIAoKICAgIDxwPlRvdXRlIGF1dHJlIHZhcmlhYmxlIChxdWUgdm91cyBhdmV6IGTpZmluaWUsIG91IHVuZSB2YXJpYWJsZQogICAgZCdlbnZpcm9ubmVtZW50IG5vcm1hbGUpIHBldXQg6nRyZSB1dGlsaXPpZSBkYW5zIGxlcyBleHByZXNzaW9ucwogICAgY29uZGl0aW9ubmVsbGVzLiBWb2lyIGxlIGRvY3VtZW50IDxhIGhyZWY9Ii4uL2V4cHIuaHRtbCI+RXhwcmVzc2lvbnMKICAgIHJhdGlvbm5lbGxlcyBkYW5zIGxlIHNlcnZldXIgSFRUUCBBcGFjaGU8L2E+IHBvdXIgcGx1cyBkZSBk6XRhaWxzIOAKICAgIHByb3BvcyBkdSBmb25jdGlvbm5lbWVudCBkdSBtb3RldXIgZCfpdmFsdWF0aW9uIGRlcyBleHByZXNzaW9ucwogICAgcmF0aW9ubmVsbGVzLjwvcD4KICAgIAogICAgPHA+QXNzb2Np6WUg4CBsYSBwb3NzaWJpbGl06SBhdmVjIEFwYWNoZSBkZSBk6WZpbmlyCiAgICBkZXMgdmFyaWFibGVzIGQnZW52aXJvbm5lbWVudCDgIGwnYWlkZSBkZSBkaXJlY3RpdmVzCiAgICA8Y29kZT5TZXRFbnZJZjwvY29kZT4sIGFpbnNpIHF1ZSBkJ2F1dHJlcyBkaXJlY3RpdmVzIGVuIHJhcHBvcnQsCiAgICBjZXR0ZSBmb25jdGlvbm5hbGl06SB2b3VzIHBlcm1ldCBkJ2Fqb3V0ZXIgdW5lIGdyYW5kZSB2YXJp6XTpCiAgICBkZSBjb250ZW51cyBkeW5hbWlxdWVzIGP0dOkgc2VydmV1ciBzYW5zIGF2b2lyIOAgY29uY2V2b2lyIHVuZQogICAgYXBwbGljYXRpb24gd2ViIGRlIEEg4CBaLjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNvbmNsdXNpb24iIGlkPSJjb25jbHVzaW9uIj5Db25jbHVzaW9uPC9hPjwvaDI+CgogICAgPHA+U1NJIG5lIHJlbXBsYWNlIGNlcnRhaW5lbWVudCBwYXMgQ0dJLCBvdSBkJ2F1dHJlcyB0ZWNobm9sb2dpZXMKICAgIHV0aWxpc+llcyBwb3VyIGxhIGfpbulyYXRpb24gZGUgcGFnZXMgd2ViIGR5bmFtaXF1ZXMuIE1haXMgYydlc3QgdW5lCiAgICBib25uZSBt6XRob2RlIHBvdXIgYWpvdXRlciBkZXMgcGV0aXRzIGNvbnRlbnVzIGR5bmFtaXF1ZXMg4CB2b3MKICAgIHBhZ2VzLCBzYW5zIGRldm9pciBmb3VybmlyIHVuIGdyb3MgZWZmb3J0IHN1cHBs6W1lbnRhaXJlLjwvcD4KPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5MYW5ndWVzIERpc3BvbmlibGVzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vaG93dG8vc3NpLmh0bWwiIGhyZWZsYW5nPSJlbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9ob3d0by9zc2kuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9ob3d0by9zc2kuaHRtbCIgaHJlZmxhbmc9ImphIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkphcGFuZXNlIj4mbmJzcDtqYSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9ob3d0by9zc2kuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9ob3d0by9zc2kuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgeyAKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5BdXRvcmlz6SBzb3VzIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FpcmU8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5QbGFuIGR1IHNpdGU8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+