PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPjUuoENhY2hlZ3JpbmQ6IGEgY2FjaGUgYW5kIGJyYW5jaC1wcmVkaWN0aW9uIHByb2ZpbGVyPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idmdfYmFzaWMuY3NzIj4KPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iVmFsZ3JpbmQgRG9jdW1lbnRhdGlvbiI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Im1hbnVhbC5odG1sIiB0aXRsZT0iVmFsZ3JpbmQgVXNlciBNYW51YWwiPgo8bGluayByZWw9InByZXYiIGhyZWY9Im1jLW1hbnVhbC5odG1sIiB0aXRsZT0iNC6gTWVtY2hlY2s6IGEgbWVtb3J5IGVycm9yIGRldGVjdG9yIj4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJjbC1tYW51YWwuaHRtbCIgdGl0bGU9IjYuoENhbGxncmluZDogYSBjYWxsLWdyYXBoIGdlbmVyYXRpbmcgY2FjaGUgYW5kIGJyYW5jaCBwcmVkaWN0aW9uIHByb2ZpbGVyIj4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+CjxkaXY+PHRhYmxlIGNsYXNzPSJuYXYiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjMiIGJvcmRlcj0iMCIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiPjx0cj4KPHRkIHdpZHRoPSIyMnB4IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJtYy1tYW51YWwuaHRtbCI+PGltZyBzcmM9ImltYWdlcy9wcmV2LnBuZyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cjx0ZCB3aWR0aD0iMjVweCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0ibWFudWFsLmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvdXAucG5nIiB3aWR0aD0iMjEiIGhlaWdodD0iMTgiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cjx0ZCB3aWR0aD0iMzFweCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImltYWdlcy9ob21lLnBuZyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjIwIiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgo8dGggYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPlZhbGdyaW5kIFVzZXIgTWFudWFsPC90aD4KPHRkIHdpZHRoPSIyMnB4IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJjbC1tYW51YWwuaHRtbCI+PGltZyBzcmM9ImltYWdlcy9uZXh0LnBuZyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CjwvdHI+PC90YWJsZT48L2Rpdj4KPGRpdiBjbGFzcz0iY2hhcHRlciI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMSBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwiPjwvYT41LqBDYWNoZWdyaW5kOiBhIGNhY2hlIGFuZCBicmFuY2gtcHJlZGljdGlvbiBwcm9maWxlcjwvaDE+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsIGNsYXNzPSJ0b2MiPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwub3ZlcnZpZXciPjUuMS4gT3ZlcnZpZXc8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5wcm9maWxlIj41LjIuIFVzaW5nIENhY2hlZ3JpbmQsIGNnX2Fubm90YXRlIGFuZCBjZ19tZXJnZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLnJ1bm5pbmctY2FjaGVncmluZCI+NS4yLjEuIFJ1bm5pbmcgQ2FjaGVncmluZDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLm91dHB1dGZpbGUiPjUuMi4yLiBPdXRwdXQgRmlsZTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLnJ1bm5pbmctY2dfYW5ub3RhdGUiPjUuMi4zLiBSdW5uaW5nIGNnX2Fubm90YXRlPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwudGhlLW91dHB1dC1wcmVhbWJsZSI+NS4yLjQuIFRoZSBPdXRwdXQgUHJlYW1ibGU8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC50aGUtZ2xvYmFsIj41LjIuNS4gVGhlIEdsb2JhbCBhbmQgRnVuY3Rpb24tbGV2ZWwgQ291bnRzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwubGluZS1ieS1saW5lIj41LjIuNi4gTGluZS1ieS1saW5lIENvdW50czwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLmFzc2VtYmxlciI+NS4yLjcuIEFubm90YXRpbmcgQXNzZW1ibHkgQ29kZSBQcm9ncmFtczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjbXMtbWFudWFsLmZvcmtpbmdwcm9ncmFtcyI+NS4yLjguIEZvcmtpbmcgUHJvZ3JhbXM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5hbm5vcHRzLndhcm5pbmdzIj41LjIuOS4gY2dfYW5ub3RhdGUgV2FybmluZ3M8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5hbm5vcHRzLnRoaW5ncy10by13YXRjaC1vdXQtZm9yIj41LjIuMTAuIFVudXN1YWwgQW5ub3RhdGlvbiBDYXNlczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLmNnX21lcmdlIj41LjIuMTEuIE1lcmdpbmcgUHJvZmlsZXMgd2l0aCBjZ19tZXJnZTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLmNnX2RpZmYiPjUuMi4xMi4gRGlmZmVyZW5jaW5nIFByb2ZpbGVzIHdpdGggY2dfZGlmZjwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwuY2dvcHRzIj41LjMuIENhY2hlZ3JpbmQgQ29tbWFuZC1saW5lIE9wdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5hbm5vcHRzIj41LjQuIGNnX2Fubm90YXRlIENvbW1hbmQtbGluZSBPcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwubWVyZ2VvcHRzIj41LjUuIGNnX21lcmdlIENvbW1hbmQtbGluZSBPcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwuZGlmZm9wdHMiPjUuNi4gY2dfZGlmZiBDb21tYW5kLWxpbmUgT3B0aW9uczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLmFjdGluZy1vbiI+NS43LiBBY3Rpbmcgb24gQ2FjaGVncmluZCdzIEluZm9ybWF0aW9uPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwuc2ltLWRldGFpbHMiPjUuOC4gU2ltdWxhdGlvbiBEZXRhaWxzPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjYWNoZS1zaW0iPjUuOC4xLiBDYWNoZSBTaW11bGF0aW9uIFNwZWNpZmljczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjYnJhbmNoLXNpbSI+NS44LjIuIEJyYW5jaCBTaW11bGF0aW9uIFNwZWNpZmljczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2ctbWFudWFsLmh0bWwjY2ctbWFudWFsLmFubm9wdHMuYWNjdXJhY3kiPjUuOC4zLiBBY2N1cmFjeTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjZy1tYW51YWwuaHRtbCNjZy1tYW51YWwuaW1wbC1kZXRhaWxzIj41LjkuIEltcGxlbWVudGF0aW9uIERldGFpbHM8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5pbXBsLWRldGFpbHMuaG93LWNnLXdvcmtzIj41LjkuMS4gSG93IENhY2hlZ3JpbmQgV29ya3M8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNnLW1hbnVhbC5odG1sI2NnLW1hbnVhbC5pbXBsLWRldGFpbHMuZmlsZS1mb3JtYXQiPjUuOS4yLiBDYWNoZWdyaW5kIE91dHB1dCBGaWxlIEZvcm1hdDwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8L2RsPgo8L2Rpdj4KPHA+VG8gdXNlIHRoaXMgdG9vbCwgeW91IG11c3Qgc3BlY2lmeQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRvb2w9Y2FjaGVncmluZDwvY29kZT4gb24gdGhlClZhbGdyaW5kIGNvbW1hbmQgbGluZS48L3A+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2ctbWFudWFsLm92ZXJ2aWV3Ij48L2E+NS4xLqBPdmVydmlldzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkNhY2hlZ3JpbmQgc2ltdWxhdGVzIGhvdyB5b3VyIHByb2dyYW0gaW50ZXJhY3RzIHdpdGggYSBtYWNoaW5lJ3MgY2FjaGUKaGllcmFyY2h5IGFuZCAob3B0aW9uYWxseSkgYnJhbmNoIHByZWRpY3Rvci4gIEl0IHNpbXVsYXRlcyBhIG1hY2hpbmUgd2l0aAppbmRlcGVuZGVudCBmaXJzdC1sZXZlbCBpbnN0cnVjdGlvbiBhbmQgZGF0YSBjYWNoZXMgKEkxIGFuZCBEMSksIGJhY2tlZCBieSBhCnVuaWZpZWQgc2Vjb25kLWxldmVsIGNhY2hlIChMMikuICBUaGlzIGV4YWN0bHkgbWF0Y2hlcyB0aGUgY29uZmlndXJhdGlvbiBvZgptYW55IG1vZGVybiBtYWNoaW5lcy48L3A+CjxwPkhvd2V2ZXIsIHNvbWUgbW9kZXJuIG1hY2hpbmVzIGhhdmUgdGhyZWUgb3IgZm91ciBsZXZlbHMgb2YgY2FjaGUuICBGb3IgdGhlc2UKbWFjaGluZXMgKGluIHRoZSBjYXNlcyB3aGVyZSBDYWNoZWdyaW5kIGNhbiBhdXRvLWRldGVjdCB0aGUgY2FjaGUKY29uZmlndXJhdGlvbikgQ2FjaGVncmluZCBzaW11bGF0ZXMgdGhlIGZpcnN0LWxldmVsIGFuZCBsYXN0LWxldmVsIGNhY2hlcy4KVGhlIHJlYXNvbiBmb3IgdGhpcyBjaG9pY2UgaXMgdGhhdCB0aGUgbGFzdC1sZXZlbCBjYWNoZSBoYXMgdGhlIG1vc3QgaW5mbHVlbmNlIG9uCnJ1bnRpbWUsIGFzIGl0IG1hc2tzIGFjY2Vzc2VzIHRvIG1haW4gbWVtb3J5LiAgRnVydGhlcm1vcmUsIHRoZSBMMSBjYWNoZXMKb2Z0ZW4gaGF2ZSBsb3cgYXNzb2NpYXRpdml0eSwgc28gc2ltdWxhdGluZyB0aGVtIGNhbiBkZXRlY3QgY2FzZXMgd2hlcmUgdGhlCmNvZGUgaW50ZXJhY3RzIGJhZGx5IHdpdGggdGhpcyBjYWNoZSAoZWcuIHRyYXZlcnNpbmcgYSBtYXRyaXggY29sdW1uLXdpc2UKd2l0aCB0aGUgcm93IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIpLjwvcD4KPHA+VGhlcmVmb3JlLCBDYWNoZWdyaW5kIGFsd2F5cyByZWZlcnMgdG8gdGhlIEkxLCBEMSBhbmQgTEwgKGxhc3QtbGV2ZWwpCmNhY2hlcy48L3A+CjxwPgpDYWNoZWdyaW5kIGdhdGhlcnMgdGhlIGZvbGxvd2luZyBzdGF0aXN0aWNzIChhYmJyZXZpYXRpb25zIHVzZWQgZm9yIGVhY2ggc3RhdGlzdGljCmlzIGdpdmVuIGluIHBhcmVudGhlc2VzKTo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkkgY2FjaGUgcmVhZHMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+SXI8L2NvZGU+LAogICAgd2hpY2ggZXF1YWxzIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkKSwKICAgIEkxIGNhY2hlIHJlYWQgbWlzc2VzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkkxbXI8L2NvZGU+KSBhbmQKICAgIExMIGNhY2hlIGluc3RydWN0aW9uIHJlYWQgbWlzc2VzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPklMbXI8L2NvZGU+KS4KICAgIDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5EIGNhY2hlIHJlYWRzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkRyPC9jb2RlPiwgd2hpY2gKICAgIGVxdWFscyB0aGUgbnVtYmVyIG9mIG1lbW9yeSByZWFkcyksCiAgICBEMSBjYWNoZSByZWFkIG1pc3NlcyAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5EMW1yPC9jb2RlPiksIGFuZAogICAgTEwgY2FjaGUgZGF0YSByZWFkIG1pc3NlcyAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ETG1yPC9jb2RlPikuCiAgICA8L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+RCBjYWNoZSB3cml0ZXMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RHc8L2NvZGU+LCB3aGljaCBlcXVhbHMKICAgIHRoZSBudW1iZXIgb2YgbWVtb3J5IHdyaXRlcyksCiAgICBEMSBjYWNoZSB3cml0ZSBtaXNzZXMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RDFtdzwvY29kZT4pLCBhbmQKICAgIExMIGNhY2hlIGRhdGEgd3JpdGUgbWlzc2VzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkRMbXc8L2NvZGU+KS4KICAgIDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5Db25kaXRpb25hbCBicmFuY2hlcyBleGVjdXRlZCAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CYzwvY29kZT4pIGFuZAogICAgY29uZGl0aW9uYWwgYnJhbmNoZXMgbWlzcHJlZGljdGVkICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJjbTwvY29kZT4pLgogICAgPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkluZGlyZWN0IGJyYW5jaGVzIGV4ZWN1dGVkICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJpPC9jb2RlPikgYW5kCiAgICBpbmRpcmVjdCBicmFuY2hlcyBtaXNwcmVkaWN0ZWQgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QmltPC9jb2RlPikuCiAgICA8L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+Tm90ZSB0aGF0IEQxIHRvdGFsIGFjY2Vzc2VzIGlzIGdpdmVuIGJ5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RDFtcjwvY29kZT4gKwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkQxbXc8L2NvZGU+LCBhbmQgdGhhdCBMTCB0b3RhbAphY2Nlc3NlcyBpcyBnaXZlbiBieSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPklMbXI8L2NvZGU+ICsKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ETG1yPC9jb2RlPiArCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RExtdzwvY29kZT4uCjwvcD4KPHA+VGhlc2Ugc3RhdGlzdGljcyBhcmUgcHJlc2VudGVkIGZvciB0aGUgZW50aXJlIHByb2dyYW0gYW5kIGZvciBlYWNoCmZ1bmN0aW9uIGluIHRoZSBwcm9ncmFtLiAgWW91IGNhbiBhbHNvIGFubm90YXRlIGVhY2ggbGluZSBvZiBzb3VyY2UgY29kZSBpbgp0aGUgcHJvZ3JhbSB3aXRoIHRoZSBjb3VudHMgdGhhdCB3ZXJlIGNhdXNlZCBkaXJlY3RseSBieSBpdC48L3A+CjxwPk9uIGEgbW9kZXJuIG1hY2hpbmUsIGFuIEwxIG1pc3Mgd2lsbCB0eXBpY2FsbHkgY29zdAphcm91bmQgMTAgY3ljbGVzLCBhbiBMTCBtaXNzIGNhbiBjb3N0IGFzIG11Y2ggYXMgMjAwCmN5Y2xlcywgYW5kIGEgbWlzcHJlZGljdGVkIGJyYW5jaCBjb3N0cyBpbiB0aGUgcmVnaW9uIG9mIDEwCnRvIDMwIGN5Y2xlcy4gIERldGFpbGVkIGNhY2hlIGFuZCBicmFuY2ggcHJvZmlsaW5nIGNhbiBiZSB2ZXJ5IHVzZWZ1bApmb3IgdW5kZXJzdGFuZGluZyBob3cgeW91ciBwcm9ncmFtIGludGVyYWN0cyB3aXRoIHRoZSBtYWNoaW5lIGFuZCB0aHVzIGhvdwp0byBtYWtlIGl0IGZhc3Rlci48L3A+CjxwPkFsc28sIHNpbmNlIG9uZSBpbnN0cnVjdGlvbiBjYWNoZSByZWFkIGlzIHBlcmZvcm1lZCBwZXIKaW5zdHJ1Y3Rpb24gZXhlY3V0ZWQsIHlvdSBjYW4gZmluZCBvdXQgaG93IG1hbnkgaW5zdHJ1Y3Rpb25zIGFyZQpleGVjdXRlZCBwZXIgbGluZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCBmb3IgdHJhZGl0aW9uYWwgcHJvZmlsaW5nLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2ctbWFudWFsLnByb2ZpbGUiPjwvYT41LjIuoFVzaW5nIENhY2hlZ3JpbmQsIGNnX2Fubm90YXRlIGFuZCBjZ19tZXJnZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkZpcnN0IG9mZiwgYXMgZm9yIG5vcm1hbCBWYWxncmluZCB1c2UsIHlvdSBwcm9iYWJseSB3YW50IHRvCmNvbXBpbGUgd2l0aCBkZWJ1Z2dpbmcgaW5mbyAodGhlCjxjb2RlIGNsYXNzPSJvcHRpb24iPi1nPC9jb2RlPiBvcHRpb24pLiAgQnV0IGJ5IGNvbnRyYXN0IHdpdGgKbm9ybWFsIFZhbGdyaW5kIHVzZSwgeW91IHByb2JhYmx5IGRvIHdhbnQgdG8gdHVybgpvcHRpbWlzYXRpb24gb24sIHNpbmNlIHlvdSBzaG91bGQgcHJvZmlsZSB5b3VyIHByb2dyYW0gYXMgaXQgd2lsbApiZSBub3JtYWxseSBydW4uPC9wPgo8cD5UaGVuLCB5b3UgbmVlZCB0byBydW4gQ2FjaGVncmluZCBpdHNlbGYgdG8gZ2F0aGVyIHRoZSBwcm9maWxpbmcKaW5mb3JtYXRpb24sIGFuZCB0aGVuIHJ1biBjZ19hbm5vdGF0ZSB0byBnZXQgYSBkZXRhaWxlZCBwcmVzZW50YXRpb24gb2YgdGhhdAppbmZvcm1hdGlvbi4gIEFzIGFuIG9wdGlvbmFsIGludGVybWVkaWF0ZSBzdGVwLCB5b3UgY2FuIHVzZSBjZ19tZXJnZSB0byBzdW0KdG9nZXRoZXIgdGhlIG91dHB1dHMgb2YgbXVsdGlwbGUgQ2FjaGVncmluZCBydW5zIGludG8gYSBzaW5nbGUgZmlsZSB3aGljaAp5b3UgdGhlbiB1c2UgYXMgdGhlIGlucHV0IGZvciBjZ19hbm5vdGF0ZS4gIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlCmNnX2RpZmYgdG8gZGlmZmVyZW5jZSB0aGUgb3V0cHV0cyBvZiB0d28gQ2FjaGVncmluZCBydW5zIGludG8gYSBzaW5nbGUgZmlsZQp3aGljaCB5b3UgdGhlbiB1c2UgYXMgdGhlIGlucHV0IGZvciBjZ19hbm5vdGF0ZS48L3A+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNnLW1hbnVhbC5ydW5uaW5nLWNhY2hlZ3JpbmQiPjwvYT41LjIuMS6gUnVubmluZyBDYWNoZWdyaW5kPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VG8gcnVuIENhY2hlZ3JpbmQgb24gYSBwcm9ncmFtIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+cHJvZzwvY29kZT4sIHJ1bjo8L3A+CjxwcmUgY2xhc3M9InNjcmVlbiI+CnZhbGdyaW5kIC0tdG9vbD1jYWNoZWdyaW5kIHByb2cKPC9wcmU+CjxwPlRoZSBwcm9ncmFtIHdpbGwgZXhlY3V0ZSAoc2xvd2x5KS4gIFVwb24gY29tcGxldGlvbiwKc3VtbWFyeSBzdGF0aXN0aWNzIHRoYXQgbG9vayBsaWtlIHRoaXMgd2lsbCBiZSBwcmludGVkOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgo9PTMxNzUxPT0gSSAgIHJlZnM6ICAgICAgMjcsNzQyLDcxNgo9PTMxNzUxPT0gSTEgIG1pc3NlczogICAgICAgICAgIDI3Ngo9PTMxNzUxPT0gTExpIG1pc3NlczogICAgICAgICAgIDI3NQo9PTMxNzUxPT0gSTEgIG1pc3MgcmF0ZTogICAgICAgIDAuMCUKPT0zMTc1MT09IExMaSBtaXNzIHJhdGU6ICAgICAgICAwLjAlCj09MzE3NTE9PSAKPT0zMTc1MT09IEQgICByZWZzOiAgICAgIDE1LDQzMCwyOTAgICgxMCw5NTUsNTE3IHJkICsgNCw0NzQsNzczIHdyKQo9PTMxNzUxPT0gRDEgIG1pc3NlczogICAgICAgIDQxLDE4NSAgKCAgICAyMSw5MDUgcmQgKyAgICAxOSwyODAgd3IpCj09MzE3NTE9PSBMTGQgbWlzc2VzOiAgICAgICAgMjMsMDg1ICAoICAgICAzLDk4NyByZCArICAgIDE5LDA5OCB3cikKPT0zMTc1MT09IEQxICBtaXNzIHJhdGU6ICAgICAgICAwLjIlICggICAgICAgMC4xJSAgICsgICAgICAgMC40JSkKPT0zMTc1MT09IExMZCBtaXNzIHJhdGU6ICAgICAgICAwLjElICggICAgICAgMC4wJSAgICsgICAgICAgMC40JSkKPT0zMTc1MT09IAo9PTMxNzUxPT0gTEwgbWlzc2VzOiAgICAgICAgIDIzLDM2MCAgKCAgICAgNCwyNjIgcmQgKyAgICAxOSwwOTggd3IpCj09MzE3NTE9PSBMTCBtaXNzIHJhdGU6ICAgICAgICAgMC4wJSAoICAgICAgIDAuMCUgICArICAgICAgIDAuNCUpPC9wcmU+CjxwPkNhY2hlIGFjY2Vzc2VzIGZvciBpbnN0cnVjdGlvbiBmZXRjaGVzIGFyZSBzdW1tYXJpc2VkCmZpcnN0LCBnaXZpbmcgdGhlIG51bWJlciBvZiBmZXRjaGVzIG1hZGUgKHRoaXMgaXMgdGhlIG51bWJlciBvZgppbnN0cnVjdGlvbnMgZXhlY3V0ZWQsIHdoaWNoIGNhbiBiZSB1c2VmdWwgdG8ga25vdyBpbiBpdHMgb3duCnJpZ2h0KSwgdGhlIG51bWJlciBvZiBJMSBtaXNzZXMsIGFuZCB0aGUgbnVtYmVyIG9mIExMIGluc3RydWN0aW9uCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkxMaTwvY29kZT4pIG1pc3Nlcy48L3A+CjxwPkNhY2hlIGFjY2Vzc2VzIGZvciBkYXRhIGZvbGxvdy4gVGhlIGluZm9ybWF0aW9uIGlzIHNpbWlsYXIKdG8gdGhhdCBvZiB0aGUgaW5zdHJ1Y3Rpb24gZmV0Y2hlcywgZXhjZXB0IHRoYXQgdGhlIHZhbHVlcyBhcmUKYWxzbyBzaG93biBzcGxpdCBiZXR3ZWVuIHJlYWRzIGFuZCB3cml0ZXMgKG5vdGUgZWFjaCByb3cncwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnJkPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53cjwvY29kZT4gdmFsdWVzIGFkZCB1cCB0byB0aGUgcm93J3MKdG90YWwpLjwvcD4KPHA+Q29tYmluZWQgaW5zdHJ1Y3Rpb24gYW5kIGRhdGEgZmlndXJlcyBmb3IgdGhlIExMIGNhY2hlCmZvbGxvdyB0aGF0LiAgTm90ZSB0aGF0IHRoZSBMTCBtaXNzIHJhdGUgaXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gdGhlIHRvdGFsCm51bWJlciBvZiBtZW1vcnkgYWNjZXNzZXMsIG5vdCB0aGUgbnVtYmVyIG9mIEwxIG1pc3Nlcy4gIEkuZS4gIGl0IGlzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KElMbXIgKyBETG1yICsgRExtdykgLyAoSXIgKyBEciArIER3KTwvY29kZT4Kbm90Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KElMbXIgKyBETG1yICsgRExtdykgLyAoSTFtciArIEQxbXIgKyBEMW13KTwvY29kZT4KPC9wPgo8cD5CcmFuY2ggcHJlZGljdGlvbiBzdGF0aXN0aWNzIGFyZSBub3QgY29sbGVjdGVkIGJ5IGRlZmF1bHQuClRvIGRvIHNvLCBhZGQgdGhlIG9wdGlvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJyYW5jaC1zaW09eWVzPC9jb2RlPi48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwub3V0cHV0ZmlsZSI+PC9hPjUuMi4yLqBPdXRwdXQgRmlsZTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkFzIHdlbGwgYXMgcHJpbnRpbmcgc3VtbWFyeSBpbmZvcm1hdGlvbiwgQ2FjaGVncmluZCBhbHNvIHdyaXRlcwptb3JlIGRldGFpbGVkIHByb2ZpbGluZyBpbmZvcm1hdGlvbiB0byBhIGZpbGUuICBCeSBkZWZhdWx0IHRoaXMgZmlsZSBpcyBuYW1lZAo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmNhY2hlZ3JpbmQub3V0LiZsdDtwaWQmZ3Q7PC9jb2RlPiAod2hlcmUKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4mbHQ7cGlkJmd0OzwvY29kZT4gaXMgdGhlIHByb2dyYW0ncyBwcm9jZXNzIElEKSwgYnV0IGl0cyBuYW1lCmNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FjaGVncmluZC1vdXQtZmlsZTwvY29kZT4gb3B0aW9uLiAgVGhpcwpmaWxlIGlzIGh1bWFuLXJlYWRhYmxlLCBidXQgaXMgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhlCmFjY29tcGFueWluZyBwcm9ncmFtIGNnX2Fubm90YXRlLCBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi48L3A+CjxwPlRoZSBkZWZhdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LiZsdDtwaWQmZ3Q7PC9jb2RlPiBzdWZmaXgKb24gdGhlIG91dHB1dCBmaWxlIG5hbWUgc2VydmVzIHR3byBwdXJwb3Nlcy4gIEZpcnN0bHksIGl0IG1lYW5zIHlvdSAKZG9uJ3QgaGF2ZSB0byByZW5hbWUgb2xkIGxvZyBmaWxlcyB0aGF0IHlvdSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZS4gIApTZWNvbmRseSwgYW5kIG1vcmUgaW1wb3J0YW50bHksIGl0IGFsbG93cyBjb3JyZWN0IHByb2ZpbGluZyB3aXRoIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRyYWNlLWNoaWxkcmVuPXllczwvY29kZT4gb3B0aW9uIG9mCnByb2dyYW1zIHRoYXQgc3Bhd24gY2hpbGQgcHJvY2Vzc2VzLjwvcD4KPHA+VGhlIG91dHB1dCBmaWxlIGNhbiBiZSBiaWcsIG1hbnkgbWVnYWJ5dGVzIGZvciBsYXJnZSBhcHBsaWNhdGlvbnMKYnVpbHQgd2l0aCBmdWxsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwucnVubmluZy1jZ19hbm5vdGF0ZSI+PC9hPjUuMi4zLqBSdW5uaW5nIGNnX2Fubm90YXRlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+QmVmb3JlIHVzaW5nIGNnX2Fubm90YXRlLAppdCBpcyB3b3J0aCB3aWRlbmluZyB5b3VyIHdpbmRvdyB0byBiZSBhdCBsZWFzdCAxMjAtY2hhcmFjdGVycwp3aWRlIGlmIHBvc3NpYmxlLCBhcyB0aGUgb3V0cHV0IGxpbmVzIGNhbiBiZSBxdWl0ZSBsb25nLjwvcD4KPHA+VG8gZ2V0IGEgZnVuY3Rpb24tYnktZnVuY3Rpb24gc3VtbWFyeSwgcnVuOjwvcD4KPHByZSBjbGFzcz0ic2NyZWVuIj5jZ19hbm5vdGF0ZSAmbHQ7ZmlsZW5hbWUmZ3Q7PC9wcmU+CjxwPm9uIGEgQ2FjaGVncmluZCBvdXRwdXQgZmlsZS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwudGhlLW91dHB1dC1wcmVhbWJsZSI+PC9hPjUuMi40LqBUaGUgT3V0cHV0IFByZWFtYmxlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIGZpcnN0IHBhcnQgb2YgdGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkkxIGNhY2hlOiAgICAgICAgICAgICAgNjU1MzYgQiwgNjQgQiwgMi13YXkgYXNzb2NpYXRpdmUKRDEgY2FjaGU6ICAgICAgICAgICAgICA2NTUzNiBCLCA2NCBCLCAyLXdheSBhc3NvY2lhdGl2ZQpMTCBjYWNoZTogICAgICAgICAgICAgIDI2MjE0NCBCLCA2NCBCLCA4LXdheSBhc3NvY2lhdGl2ZQpDb21tYW5kOiAgICAgICAgICAgICAgIGNvbmNvcmQgdmdfdG9fdWNvZGUuYwpFdmVudHMgcmVjb3JkZWQ6ICAgICAgIElyIEkxbXIgSUxtciBEciBEMW1yIERMbXIgRHcgRDFtdyBETG13CkV2ZW50cyBzaG93bjogICAgICAgICAgSXIgSTFtciBJTG1yIERyIEQxbXIgRExtciBEdyBEMW13IERMbXcKRXZlbnQgc29ydCBvcmRlcjogICAgICBJciBJMW1yIElMbXIgRHIgRDFtciBETG1yIER3IEQxbXcgRExtdwpUaHJlc2hvbGQ6ICAgICAgICAgICAgIDk5JQpDaG9zZW4gZm9yIGFubm90YXRpb246CkF1dG8tYW5ub3RhdGlvbjogICAgICAgb2ZmCjwvcHJlPgo8cD5UaGlzIGlzIGEgc3VtbWFyeSBvZiB0aGUgYW5ub3RhdGlvbiBvcHRpb25zOjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYzsgIj4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+STEgY2FjaGUsIEQxIGNhY2hlLCBMTCBjYWNoZTogY2FjaGUgY29uZmlndXJhdGlvbi4gIFNvCiAgICB5b3Uga25vdyB0aGUgY29uZmlndXJhdGlvbiB3aXRoIHdoaWNoIHRoZXNlIHJlc3VsdHMgd2VyZQogICAgb2J0YWluZWQuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkNvbW1hbmQ6IHRoZSBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiBvZiB0aGUgcHJvZ3JhbQogICAgICB1bmRlciBleGFtaW5hdGlvbi48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+RXZlbnRzIHJlY29yZGVkOiB3aGljaCBldmVudHMgd2VyZSByZWNvcmRlZC48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+RXZlbnRzIHNob3duOiB0aGUgZXZlbnRzIHNob3duLCB3aGljaCBpcyBhIHN1YnNldCBvZiB0aGUgZXZlbnRzCiAgIGdhdGhlcmVkLiAgVGhpcyBjYW4gYmUgYWRqdXN0ZWQgd2l0aCB0aGUKICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zaG93PC9jb2RlPiBvcHRpb24uPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5FdmVudCBzb3J0IG9yZGVyOiB0aGUgc29ydCBvcmRlciBpbiB3aGljaCBmdW5jdGlvbnMgYXJlCiAgICBzaG93bi4gIEZvciBleGFtcGxlLCBpbiB0aGlzIGNhc2UgdGhlIGZ1bmN0aW9ucyBhcmUgc29ydGVkCiAgICBmcm9tIGhpZ2hlc3QgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5JcjwvY29kZT4gY291bnRzIHRvCiAgICBsb3dlc3QuICBJZiB0d28gZnVuY3Rpb25zIGhhdmUgaWRlbnRpY2FsCiAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPklyPC9jb2RlPiBjb3VudHMsIHRoZXkgd2lsbCB0aGVuIGJlCiAgICBzb3J0ZWQgYnkgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5JMW1yPC9jb2RlPiBjb3VudHMsIGFuZAogICAgc28gb24uICBUaGlzIG9yZGVyIGNhbiBiZSBhZGp1c3RlZCB3aXRoIHRoZQogICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zb3J0PC9jb2RlPiBvcHRpb24uPC9wPgo8cD5Ob3RlIHRoYXQgdGhpcyBkaWN0YXRlcyB0aGUgb3JkZXIgdGhlIGZ1bmN0aW9ucyBhcHBlYXIuCiAgICBJdCBpcyA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5ub3Q8L2VtPjwvc3Bhbj4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zCiAgICBhcHBlYXI7IHRoYXQgaXMgZGljdGF0ZWQgYnkgdGhlICJldmVudHMgc2hvd24iIGxpbmUgKGFuZCBjYW4KICAgIGJlIGNoYW5nZWQgd2l0aCB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zaG93PC9jb2RlPgogICAgb3B0aW9uKS48L3A+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPlRocmVzaG9sZDogY2dfYW5ub3RhdGUKICAgIGJ5IGRlZmF1bHQgb21pdHMgZnVuY3Rpb25zIHRoYXQgY2F1c2UgdmVyeSBsb3cgY291bnRzCiAgICB0byBhdm9pZCBkcm93bmluZyB5b3UgaW4gaW5mb3JtYXRpb24uICBJbiB0aGlzIGNhc2UsCiAgICBjZ19hbm5vdGF0ZSBzaG93cyBzdW1tYXJpZXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGFjY291bnQgZm9yCiAgICA5OSUgb2YgdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+SXI8L2NvZGU+IGNvdW50czsKICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+SXI8L2NvZGU+IGlzIGNob3NlbiBhcyB0aGUKICAgIHRocmVzaG9sZCBldmVudCBzaW5jZSBpdCBpcyB0aGUgcHJpbWFyeSBzb3J0IGV2ZW50LiAgVGhlCiAgICB0aHJlc2hvbGQgY2FuIGJlIGFkanVzdGVkIHdpdGggdGhlCiAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZDwvY29kZT4KICAgIG9wdGlvbi48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+Q2hvc2VuIGZvciBhbm5vdGF0aW9uOiBuYW1lcyBvZiBmaWxlcyBzcGVjaWZpZWQKICAgIG1hbnVhbGx5IGZvciBhbm5vdGF0aW9uOyBpbiB0aGlzIGNhc2Ugbm9uZS48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+QXV0by1hbm5vdGF0aW9uOiB3aGV0aGVyIGF1dG8tYW5ub3RhdGlvbiB3YXMgcmVxdWVzdGVkCiAgICB2aWEgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tYXV0bz15ZXM8L2NvZGU+CiAgICBvcHRpb24uIEluIHRoaXMgY2FzZSBuby48L3A+PC9saT4KPC91bD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNnLW1hbnVhbC50aGUtZ2xvYmFsIj48L2E+NS4yLjUuoFRoZSBHbG9iYWwgYW5kIEZ1bmN0aW9uLWxldmVsIENvdW50czwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZW4gZm9sbG93cyBzdW1tYXJ5IHN0YXRpc3RpY3MgZm9yIHRoZSB3aG9sZQpwcm9ncmFtOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJciAgICAgICAgIEkxbXIgSUxtciBEciAgICAgICAgIEQxbXIgICBETG1yICBEdyAgICAgICAgRDFtdyAgIERMbXcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjcsNzQyLDcxNiAgMjc2ICAyNzUgMTAsOTU1LDUxNyAyMSw5MDUgMyw5ODcgNCw0NzQsNzczIDE5LDI4MCAxOSwwOTggIFBST0dSQU0gVE9UQUxTPC9wcmU+CjxwPgpUaGVzZSBhcmUgc2ltaWxhciB0byB0aGUgc3VtbWFyeSBwcm92aWRlZCB3aGVuIENhY2hlZ3JpbmQgZmluaXNoZXMgcnVubmluZy4KPC9wPgo8cD5UaGVuIGNvbWVzIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIHN0YXRpc3RpY3M6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklyICAgICAgICBJMW1yIElMbXIgRHIgICAgICAgIEQxbXIgIERMbXIgIER3ICAgICAgICBEMW13ICAgRExtdyAgICBmaWxlOmZ1bmN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjgsODIxLDQ4MiAgICA1ICAgIDUgMiwyNDIsNzAyIDEsNjIxICAgIDczIDEsNzk0LDIzMCAgICAgIDAgICAgICAwICBnZXRjLmM6X0lPX2dldGMKNSwyMjIsMDIzICAgIDQgICAgNCAyLDI3NiwzMzQgICAgMTYgICAgMTIgICA4NzUsOTU5ICAgICAgMSAgICAgIDEgIGNvbmNvcmQuYzpnZXRfd29yZAoyLDY0OSwyNDggICAgMiAgICAyIDEsMzQ0LDgxMCA3LDMyNiAxLDM4NSAgICAgICAgIC4gICAgICAuICAgICAgLiAgdmdfbWFpbi5jOnN0cmNtcAoyLDUyMSw5MjcgICAgMiAgICAyICAgNTkxLDIxNSAgICAgMCAgICAgMCAgIDE3OSwzOTggICAgICAwICAgICAgMCAgY29uY29yZC5jOmhhc2gKMiwyNDIsNzQwICAgIDIgICAgMiAxLDA0Niw2MTIgICA1NjggICAgMjIgICA0NDgsNTQ4ICAgICAgMCAgICAgIDAgIGN0eXBlLmM6dG9sb3dlcgoxLDQ5Niw5MzcgICAgNCAgICA0ICAgNjMwLDg3NCA5LDAwMCAxLDQwMCAgIDI3OSwzODggICAgICAwICAgICAgMCAgY29uY29yZC5jOmluc2VydAogIDg5Nyw5OTEgICA1MSAgIDUxICAgODk3LDgzMSAgICA5NSAgICAzMCAgICAgICAgNjIgICAgICAxICAgICAgMSAgPz8/Oj8/PwogIDU5OCwwNjggICAgMSAgICAxICAgMjk5LDAzNCAgICAgMCAgICAgMCAgIDE0OSw1MTcgICAgICAwICAgICAgMCAgLi4vc3lzZGVwcy9nZW5lcmljL2xvY2tmaWxlLmM6X19mbG9ja2ZpbGUKICA1OTgsMDY4ICAgIDAgICAgMCAgIDI5OSwwMzQgICAgIDAgICAgIDAgICAxNDksNTE3ICAgICAgMCAgICAgIDAgIC4uL3N5c2RlcHMvZ2VuZXJpYy9sb2NrZmlsZS5jOl9fZnVubG9ja2ZpbGUKICA1OTgsMDI0ICAgIDQgICAgNCAgIDIxMyw1ODAgICAgMzUgICAgMTYgICAxNDksNTA2ICAgICAgMCAgICAgIDAgIHZnX2NsaWVudG1hbGxvYy5jOm1hbGxvYwogIDQ0Niw1ODcgICAgMSAgICAxICAgMjE1LDk3MyAyLDE2NyAgIDQzMCAgIDEyOSw5NDggMTQsMDU3IDEzLDk1NyAgY29uY29yZC5jOmFkZF9leGlzdGluZwogIDM0MSw3NjAgICAgMiAgICAyICAgMTI4LDE2MCAgICAgMCAgICAgMCAgIDEyOCwxNjAgICAgICAwICAgICAgMCAgdmdfY2xpZW50bWFsbG9jLmM6dmdfdHJhcF9oZXJlX1dSQVBQRVIKICAzMjAsNzgyICAgIDQgICAgNCAgIDE1MCw3MTEgICAyNzYgICAgIDAgICAgNTYsMDI3ICAgICA1MyAgICAgNTMgIGNvbmNvcmQuYzppbml0X2hhc2hfdGFibGUKICAyOTgsOTk4ICAgIDEgICAgMSAgIDEwNiw3ODUgICAgIDAgICAgIDAgICAgNjQsMDcxICAgICAgMSAgICAgIDEgIGNvbmNvcmQuYzpjcmVhdGUKICAxNDksNTE4ICAgIDAgICAgMCAgIDE0OSw1MTYgICAgIDAgICAgIDAgICAgICAgICAxICAgICAgMCAgICAgIDAgID8/Pzp0b2xvd2VyQEBHTElCQ18yLjAKICAxNDksNTE4ICAgIDAgICAgMCAgIDE0OSw1MTYgICAgIDAgICAgIDAgICAgICAgICAxICAgICAgMCAgICAgIDAgID8/PzpmZ2V0Y0BAR0xJQkNfMi4wCiAgIDk1LDk4MyAgICA0ICAgIDQgICAgMzgsMDMxICAgICAwICAgICAwICAgIDM0LDQwOSAgMywxNTIgIDMsMTUwICBjb25jb3JkLmM6bmV3X3dvcmRfbm9kZQogICA4NSw0NDAgICAgMCAgICAwICAgIDQyLDcyMCAgICAgMCAgICAgMCAgICAyMSwzNjAgICAgICAwICAgICAgMCAgdmdfY2xpZW50bWFsbG9jLmM6dmdfYm9ndXNfZXBpbG9ndWU8L3ByZT4KPHA+RWFjaCBmdW5jdGlvbgppcyBpZGVudGlmaWVkIGJ5IGEKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlX25hbWU6ZnVuY3Rpb25fbmFtZTwvY29kZT4gcGFpci4gSWYKYSBjb2x1bW4gY29udGFpbnMgb25seSBhIGRvdCBpdCBtZWFucyB0aGUgZnVuY3Rpb24gbmV2ZXIgcGVyZm9ybXMKdGhhdCBldmVudCAoZS5nLiB0aGUgdGhpcmQgcm93IHNob3dzIHRoYXQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdHJjbXAoKTwvY29kZT4gY29udGFpbnMgbm8KaW5zdHJ1Y3Rpb25zIHRoYXQgd3JpdGUgdG8gbWVtb3J5KS4gVGhlIG5hbWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4/Pz88L2NvZGU+IGlzIHVzZWQgaWYgdGhlIGZpbGUgbmFtZQphbmQvb3IgZnVuY3Rpb24gbmFtZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmcm9tIGRlYnVnZ2luZwppbmZvcm1hdGlvbi4gSWYgbW9zdCBvZiB0aGUgZW50cmllcyBoYXZlIHRoZSBmb3JtCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Pz8/Oj8/PzwvY29kZT4gdGhlIHByb2dyYW0gcHJvYmFibHkKd2Fzbid0IGNvbXBpbGVkIHdpdGggPGNvZGUgY2xhc3M9Im9wdGlvbiI+LWc8L2NvZGU+LjwvcD4KPHA+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgZnVuY3Rpb25zIHdpbGwgY29tZSBib3RoIGZyb20KdGhlIHByb2ZpbGVkIHByb2dyYW0gKGUuZy4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5jb25jb3JkLmM8L2NvZGU+KQphbmQgZnJvbSBsaWJyYXJpZXMgKGUuZy4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5nZXRjLmM8L2NvZGU+KTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNnLW1hbnVhbC5saW5lLWJ5LWxpbmUiPjwvYT41LjIuNi6gTGluZS1ieS1saW5lIENvdW50czwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZXJlIGFyZSB0d28gd2F5cyB0byBhbm5vdGF0ZSBzb3VyY2UgZmlsZXMgLS0gYnkgc3BlY2lmeWluZyB0aGVtCm1hbnVhbGx5IGFzIGFyZ3VtZW50cyB0byBjZ19hbm5vdGF0ZSwgb3Igd2l0aCB0aGUKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hdXRvPXllczwvY29kZT4gb3B0aW9uLiAgRm9yIGV4YW1wbGUsIHRoZSBvdXRwdXQgZnJvbSBydW5uaW5nCjxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Y2dfYW5ub3RhdGUgJmx0O2ZpbGVuYW1lJmd0OyBjb25jb3JkLmM8L2NvZGU+IGZvciBvdXIgZXhhbXBsZQpwcm9kdWNlcyB0aGUgc2FtZSBvdXRwdXQgYXMgYWJvdmUgZm9sbG93ZWQgYnkgYW4gYW5ub3RhdGVkIHZlcnNpb24gb2YKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5jb25jb3JkLmM8L2NvZGU+LCBhIHNlY3Rpb24gb2Ygd2hpY2ggbG9va3MgbGlrZTo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gVXNlci1hbm5vdGF0ZWQgc291cmNlOiBjb25jb3JkLmMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSXIgICAgICAgIEkxbXIgSUxtciBEciAgICAgIEQxbXIgIERMbXIgIER3ICAgICAgRDFtdyAgIERMbXcKCiAgICAgICAgLiAgICAuICAgIC4gICAgICAgLiAgICAgLiAgICAgLiAgICAgICAuICAgICAgLiAgICAgIC4gIHZvaWQgaW5pdF9oYXNoX3RhYmxlKGNoYXIgKmZpbGVfbmFtZSwgV29yZF9Ob2RlICp0YWJsZVtdKQogICAgICAgIDMgICAgMSAgICAxICAgICAgIC4gICAgIC4gICAgIC4gICAgICAgMSAgICAgIDAgICAgICAwICB7CiAgICAgICAgLiAgICAuICAgIC4gICAgICAgLiAgICAgLiAgICAgLiAgICAgICAuICAgICAgLiAgICAgIC4gICAgICBGSUxFICpmaWxlX3B0cjsKICAgICAgICAuICAgIC4gICAgLiAgICAgICAuICAgICAuICAgICAuICAgICAgIC4gICAgICAuICAgICAgLiAgICAgIFdvcmRfSW5mbyAqZGF0YTsKICAgICAgICAxICAgIDAgICAgMCAgICAgICAuICAgICAuICAgICAuICAgICAgIDEgICAgICAxICAgICAgMSAgICAgIGludCBsaW5lID0gMSwgaTsKICAgICAgICAuICAgIC4gICAgLiAgICAgICAuICAgICAuICAgICAuICAgICAgIC4gICAgICAuICAgICAgLgogICAgICAgIDUgICAgMCAgICAwICAgICAgIC4gICAgIC4gICAgIC4gICAgICAgMyAgICAgIDAgICAgICAwICAgICAgZGF0YSA9IChXb3JkX0luZm8gKikgY3JlYXRlKHNpemVvZihXb3JkX0luZm8pKTsKICAgICAgICAuICAgIC4gICAgLiAgICAgICAuICAgICAuICAgICAuICAgICAgIC4gICAgICAuICAgICAgLgogICAgNCw5OTEgICAgMCAgICAwICAgMSw5OTUgICAgIDAgICAgIDAgICAgIDk5OCAgICAgIDAgICAgICAwICAgICAgZm9yIChpID0gMDsgaSAmbHQ7IFRBQkxFX1NJWkU7IGkrKykKICAgIDMsOTg4ICAgIDEgICAgMSAgIDEsOTk0ICAgICAwICAgICAwICAgICA5OTcgICAgIDUzICAgICA1MiAgICAgICAgICB0YWJsZVtpXSA9IE5VTEw7CiAgICAgICAgLiAgICAuICAgIC4gICAgICAgLiAgICAgLiAgICAgLiAgICAgICAuICAgICAgLiAgICAgIC4KICAgICAgICAuICAgIC4gICAgLiAgICAgICAuICAgICAuICAgICAuICAgICAgIC4gICAgICAuICAgICAgLiAgICAgIC8qIE9wZW4gZmlsZSwgY2hlY2sgaXQuICovCiAgICAgICAgNiAgICAwICAgIDAgICAgICAgMSAgICAgMCAgICAgMCAgICAgICA0ICAgICAgMCAgICAgIDAgICAgICBmaWxlX3B0ciA9IGZvcGVuKGZpbGVfbmFtZSwgInIiKTsKICAgICAgICAyICAgIDAgICAgMCAgICAgICAxICAgICAwICAgICAwICAgICAgIC4gICAgICAuICAgICAgLiAgICAgIGlmICghKGZpbGVfcHRyKSkgewogICAgICAgIC4gICAgLiAgICAuICAgICAgIC4gICAgIC4gICAgIC4gICAgICAgLiAgICAgIC4gICAgICAuICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3Qgb3BlbiAnJXMnLlxuIiwgZmlsZV9uYW1lKTsKICAgICAgICAxICAgIDEgICAgMSAgICAgICAuICAgICAuICAgICAuICAgICAgIC4gICAgICAuICAgICAgLiAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgLiAgICAuICAgIC4gICAgICAgLiAgICAgLiAgICAgLiAgICAgICAuICAgICAgLiAgICAgIC4gICAgICB9CiAgICAgICAgLiAgICAuICAgIC4gICAgICAgLiAgICAgLiAgICAgLiAgICAgICAuICAgICAgLiAgICAgIC4KICAxNjUsMDYyICAgIDEgICAgMSAgNzMsMzYwICAgICAwICAgICAwICA5MSw3MDAgICAgICAwICAgICAgMCAgICAgIHdoaWxlICgobGluZSA9IGdldF93b3JkKGRhdGEsIGxpbmUsIGZpbGVfcHRyKSkgIT0gRU9GKQogIDE0Niw3MTIgICAgMCAgICAwICA3MywzNTYgICAgIDAgICAgIDAgIDczLDM1NiAgICAgIDAgICAgICAwICAgICAgICAgIGluc2VydChkYXRhLSZndDs7d29yZCwgZGF0YS0mZ3Q7bGluZSwgdGFibGUpOwogICAgICAgIC4gICAgLiAgICAuICAgICAgIC4gICAgIC4gICAgIC4gICAgICAgLiAgICAgIC4gICAgICAuCiAgICAgICAgNCAgICAwICAgIDAgICAgICAgMSAgICAgMCAgICAgMCAgICAgICAyICAgICAgMCAgICAgIDAgICAgICBmcmVlKGRhdGEpOwogICAgICAgIDQgICAgMCAgICAwICAgICAgIDEgICAgIDAgICAgIDAgICAgICAgMiAgICAgIDAgICAgICAwICAgICAgZmNsb3NlKGZpbGVfcHRyKTsKICAgICAgICAzICAgIDAgICAgMCAgICAgICAyICAgICAwICAgICAwICAgICAgIC4gICAgICAuICAgICAgLiAgfTwvcHJlPgo8cD4oQWx0aG91Z2ggY29sdW1uIHdpZHRocyBhcmUgYXV0b21hdGljYWxseSBtaW5pbWlzZWQsIGEgd2lkZQp0ZXJtaW5hbCBpcyBjbGVhcmx5IHVzZWZ1bC4pPC9wPgo8cD5FYWNoIHNvdXJjZSBmaWxlIGlzIGNsZWFybHkgbWFya2VkCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPlVzZXItYW5ub3RhdGVkIHNvdXJjZTwvY29kZT4pIGFzCmhhdmluZyBiZWVuIGNob3NlbiBtYW51YWxseSBmb3IgYW5ub3RhdGlvbi4gIElmIHRoZSBmaWxlIHdhcwpmb3VuZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCB3aXRoIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tSTwvY29kZT4vPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbmNsdWRlPC9jb2RlPiBvcHRpb24sIHRoZSBkaXJlY3RvcnkKYW5kIGZpbGUgYXJlIGJvdGggZ2l2ZW4uPC9wPgo8cD5FYWNoIGxpbmUgaXMgYW5ub3RhdGVkIHdpdGggaXRzIGV2ZW50IGNvdW50cy4gIEV2ZW50cyBub3QKYXBwbGljYWJsZSBmb3IgYSBsaW5lIGFyZSByZXByZXNlbnRlZCBieSBhIGRvdC4gIFRoaXMgaXMgdXNlZnVsCmZvciBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGFuIGV2ZW50IHdoaWNoIGNhbm5vdCBoYXBwZW4sIGFuZCBvbmUKd2hpY2ggY2FuIGJ1dCBkaWQgbm90LjwvcD4KPHA+U29tZXRpbWVzIG9ubHkgYSBzbWFsbCBzZWN0aW9uIG9mIGEgc291cmNlIGZpbGUgaXMKZXhlY3V0ZWQuICBUbyBtaW5pbWlzZSB1bmludGVyZXN0aW5nIG91dHB1dCwgQ2FjaGVncmluZCBvbmx5IHNob3dzCmFubm90YXRlZCBsaW5lcyBhbmQgbGluZXMgd2l0aGluIGEgc21hbGwgZGlzdGFuY2Ugb2YgYW5ub3RhdGVkCmxpbmVzLiAgR2FwcyBhcmUgbWFya2VkIHdpdGggdGhlIGxpbmUgbnVtYmVycyBzbyB5b3Uga25vdyB3aGljaApwYXJ0IG9mIGEgZmlsZSB0aGUgc2hvd24gY29kZSBjb21lcyBmcm9tLCBlZzo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KKGZpZ3VyZXMgYW5kIGNvZGUgZm9yIGxpbmUgNzA0KQotLSBsaW5lIDcwNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIGxpbmUgODc4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGZpZ3VyZXMgYW5kIGNvZGUgZm9yIGxpbmUgODc4KTwvcHJlPgo8cD5UaGUgYW1vdW50IG9mIGNvbnRleHQgdG8gc2hvdyBhcm91bmQgYW5ub3RhdGVkIGxpbmVzIGlzCmNvbnRyb2xsZWQgYnkgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY29udGV4dDwvY29kZT4Kb3B0aW9uLjwvcD4KPHA+VG8gZ2V0IGF1dG9tYXRpYyBhbm5vdGF0aW9uLCB1c2UgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tYXV0bz15ZXM8L2NvZGU+IG9wdGlvbi4KY2dfYW5ub3RhdGUgd2lsbCBhdXRvbWF0aWNhbGx5IGFubm90YXRlIGV2ZXJ5IHNvdXJjZSBmaWxlIGl0IGNhbgpmaW5kIHRoYXQgaXMgbWVudGlvbmVkIGluIHRoZSBmdW5jdGlvbi1ieS1mdW5jdGlvbiBzdW1tYXJ5LgpUaGVyZWZvcmUsIHRoZSBmaWxlcyBjaG9zZW4gZm9yIGF1dG8tYW5ub3RhdGlvbiBhcmUgYWZmZWN0ZWQgYnkKdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc29ydDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdGhyZXNob2xkPC9jb2RlPiBvcHRpb25zLiAgRWFjaApzb3VyY2UgZmlsZSBpcyBjbGVhcmx5IG1hcmtlZCAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5BdXRvLWFubm90YXRlZApzb3VyY2U8L2NvZGU+KSBhcyBiZWluZyBjaG9zZW4gYXV0b21hdGljYWxseS4gIEFueQpmaWxlcyB0aGF0IGNvdWxkIG5vdCBiZSBmb3VuZCBhcmUgbWVudGlvbmVkIGF0IHRoZSBlbmQgb2YgdGhlCm91dHB1dCwgZWc6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGUgZm9sbG93aW5nIGZpbGVzIGNob3NlbiBmb3IgYXV0by1hbm5vdGF0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZ2V0Yy5jCiAgY3R5cGUuYwogIC4uL3N5c2RlcHMvZ2VuZXJpYy9sb2NrZmlsZS5jPC9wcmU+CjxwPlRoaXMgaXMgcXVpdGUgY29tbW9uIGZvciBsaWJyYXJ5IGZpbGVzLCBzaW5jZSBsaWJyYXJpZXMgYXJlCnVzdWFsbHkgY29tcGlsZWQgd2l0aCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIGJ1dCB0aGUgc291cmNlIGZpbGVzCmFyZSBvZnRlbiBub3QgcHJlc2VudCBvbiBhIHN5c3RlbS4gIElmIGEgZmlsZSBpcyBjaG9zZW4gZm9yCmFubm90YXRpb24gYm90aCBtYW51YWxseSBhbmQgYXV0b21hdGljYWxseSwgaXQKaXMgbWFya2VkIGFzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+VXNlci1hbm5vdGF0ZWQKc291cmNlPC9jb2RlPi4gVXNlIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tSTwvY29kZT4vPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbmNsdWRlPC9jb2RlPiBvcHRpb24gdG8gdGVsbCBWYWxncmluZCB3aGVyZQp0byBsb29rIGZvciBzb3VyY2UgZmlsZXMgaWYgdGhlIGZpbGVuYW1lcyBmb3VuZCBmcm9tIHRoZSBkZWJ1Z2dpbmcKaW5mb3JtYXRpb24gYXJlbid0IHNwZWNpZmljIGVub3VnaC48L3A+CjxwPkJld2FyZSB0aGF0IGNnX2Fubm90YXRlIGNhbiB0YWtlIHNvbWUgdGltZSB0byBkaWdlc3QgbGFyZ2UKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5jYWNoZWdyaW5kLm91dC4mbHQ7cGlkJmd0OzwvY29kZT4gZmlsZXMsCmUuZy4gMzAgc2Vjb25kcyBvciBtb3JlLiAgQWxzbyBiZXdhcmUgdGhhdCBhdXRvLWFubm90YXRpb24gY2FuCnByb2R1Y2UgYSBsb3Qgb2Ygb3V0cHV0IGlmIHlvdXIgcHJvZ3JhbSBpcyBsYXJnZSE8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuYXNzZW1ibGVyIj48L2E+NS4yLjcuoEFubm90YXRpbmcgQXNzZW1ibHkgQ29kZSBQcm9ncmFtczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlZhbGdyaW5kIGNhbiBhbm5vdGF0ZSBhc3NlbWJseSBjb2RlIHByb2dyYW1zIHRvbywgb3IgYW5ub3RhdGUKdGhlIGFzc2VtYmx5IGNvZGUgZ2VuZXJhdGVkIGZvciB5b3VyIEMgcHJvZ3JhbS4gIFNvbWV0aW1lcyB0aGlzIGlzCnVzZWZ1bCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IGlzIHJlYWxseSBoYXBwZW5pbmcgd2hlbiBhbgppbnRlcmVzdGluZyBsaW5lIG9mIEMgY29kZSBpcyB0cmFuc2xhdGVkIGludG8gbXVsdGlwbGUKaW5zdHJ1Y3Rpb25zLjwvcD4KPHA+VG8gZG8gdGhpcywgeW91IGp1c3QgbmVlZCB0byBhc3NlbWJsZSB5b3VyCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LnM8L2NvZGU+IGZpbGVzIHdpdGggYXNzZW1ibHktbGV2ZWwgZGVidWcKaW5mb3JtYXRpb24uICBZb3UgY2FuIHVzZSBjb21waWxlIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1TPC9jb2RlPiB0byBjb21waWxlIEMvQysrCnByb2dyYW1zIHRvIGFzc2VtYmx5IGNvZGUsIGFuZCB0aGVuIGFzc2VtYmxlIHRoZSBhc3NlbWJseSBjb2RlIGZpbGVzIHdpdGgKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LWc8L2NvZGU+IHRvIGFjaGlldmUgdGhpcy4gIFlvdSBjYW4gdGhlbiBwcm9maWxlIGFuZCBhbm5vdGF0ZSB0aGUKYXNzZW1ibHkgY29kZSBzb3VyY2UgZmlsZXMgaW4gdGhlIHNhbWUgd2F5IGFzIEMvQysrIHNvdXJjZSBmaWxlcy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJtcy1tYW51YWwuZm9ya2luZ3Byb2dyYW1zIj48L2E+NS4yLjguoEZvcmtpbmcgUHJvZ3JhbXM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5JZiB5b3VyIHByb2dyYW0gZm9ya3MsIHRoZSBjaGlsZCB3aWxsIGluaGVyaXQgYWxsIHRoZSBwcm9maWxpbmcgZGF0YSB0aGF0CmhhcyBiZWVuIGdhdGhlcmVkIGZvciB0aGUgcGFyZW50LjwvcD4KPHA+SWYgdGhlIG91dHB1dCBmaWxlIGZvcm1hdCBzdHJpbmcgKGNvbnRyb2xsZWQgYnkKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWNoZWdyaW5kLW91dC1maWxlPC9jb2RlPikgZG9lcyBub3QgY29udGFpbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4lcDwvY29kZT4sCnRoZW4gdGhlIG91dHB1dHMgZnJvbSB0aGUgcGFyZW50IGFuZCBjaGlsZCB3aWxsIGJlIGludGVybWluZ2xlZCBpbiBhIHNpbmdsZQpvdXRwdXQgZmlsZSwgd2hpY2ggd2lsbCBhbG1vc3QgY2VydGFpbmx5IG1ha2UgaXQgdW5yZWFkYWJsZSBieQpjZ19hbm5vdGF0ZS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuYW5ub3B0cy53YXJuaW5ncyI+PC9hPjUuMi45LqBjZ19hbm5vdGF0ZSBXYXJuaW5nczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZXJlIGFyZSBhIGNvdXBsZSBvZiBzaXR1YXRpb25zIGluIHdoaWNoCmNnX2Fubm90YXRlIGlzc3VlcyB3YXJuaW5ncy48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPklmIGEgc291cmNlIGZpbGUgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUKICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Y2FjaGVncmluZC5vdXQuJmx0O3BpZCZndDs8L2NvZGU+IGZpbGUuCiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGluZm9ybWF0aW9uIGluCiAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmNhY2hlZ3JpbmQub3V0LiZsdDtwaWQmZ3Q7PC9jb2RlPiBpcyBvbmx5CiAgICByZWNvcmRlZCB3aXRoIGxpbmUgbnVtYmVycywgc28gaWYgdGhlIGxpbmUgbnVtYmVycyBjaGFuZ2UgYXQKICAgIGFsbCBpbiB0aGUgc291cmNlIChlLmcuICBsaW5lcyBhZGRlZCwgZGVsZXRlZCwgc3dhcHBlZCksIGFueQogICAgYW5ub3RhdGlvbnMgd2lsbCBiZSBpbmNvcnJlY3QuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPklmIGluZm9ybWF0aW9uIGlzIHJlY29yZGVkIGFib3V0IGxpbmUgbnVtYmVycyBwYXN0IHRoZQogICAgZW5kIG9mIGEgZmlsZS4gIFRoaXMgY2FuIGJlIGNhdXNlZCBieSB0aGUgYWJvdmUgcHJvYmxlbSwKICAgIGkuZS4gc2hvcnRlbmluZyB0aGUgc291cmNlIGZpbGUgd2hpbGUgdXNpbmcgYW4gb2xkCiAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmNhY2hlZ3JpbmQub3V0LiZsdDtwaWQmZ3Q7PC9jb2RlPiBmaWxlLiAgSWYKICAgIHRoaXMgaGFwcGVucywgdGhlIGZpZ3VyZXMgZm9yIHRoZSBib2d1cyBsaW5lcyBhcmUgcHJpbnRlZAogICAgYW55d2F5IChjbGVhcmx5IG1hcmtlZCBhcyBib2d1cykgaW4gY2FzZSB0aGV5IGFyZQogICAgaW1wb3J0YW50LjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iY2ctbWFudWFsLmFubm9wdHMudGhpbmdzLXRvLXdhdGNoLW91dC1mb3IiPjwvYT41LjIuMTAuoFVudXN1YWwgQW5ub3RhdGlvbiBDYXNlczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlNvbWUgb2RkIHRoaW5ncyB0aGF0IGNhbiBvY2N1ciBkdXJpbmcgYW5ub3RhdGlvbjo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5JZiBhbm5vdGF0aW5nIGF0IHRoZSBhc3NlbWJsZXIgbGV2ZWwsIHlvdSBtaWdodCBzZWUKICAgIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+CiAgICAgIDEgICAgMCAgICAwICAuICAgIC4gICAgLiAgLiAgICAuICAgIC4gICAgICAgICAgbGVhbCAtMTIoJWVicCksJWVheAogICAgICAxICAgIDAgICAgMCAgLiAgICAuICAgIC4gIDEgICAgMCAgICAwICAgICAgICAgIG1vdmwgJWVheCw4NCglZWJ4KQogICAgICAyICAgIDAgICAgMCAgMCAgICAwICAgIDAgIDEgICAgMCAgICAwICAgICAgICAgIG1vdmwgJDEsLTIwKCVlYnApCiAgICAgIC4gICAgLiAgICAuICAuICAgIC4gICAgLiAgLiAgICAuICAgIC4gICAgICAgICAgLmFsaWduIDQsMHg5MAogICAgICAxICAgIDAgICAgMCAgLiAgICAuICAgIC4gIC4gICAgLiAgICAuICAgICAgICAgIG1vdmwgJC5MbnJCLCVlYXgKICAgICAgMSAgICAwICAgIDAgIC4gICAgLiAgICAuICAxICAgIDAgICAgMCAgICAgICAgICBtb3ZsICVlYXgsLTE2KCVlYnApPC9wcmU+CjxwPkhvdyBjYW4gdGhlIHRoaXJkIGluc3RydWN0aW9uIGJlIGV4ZWN1dGVkIHR3aWNlIHdoZW4KICAgIHRoZSBvdGhlcnMgYXJlIGV4ZWN1dGVkIG9ubHkgb25jZT8gIEFzIGl0IHR1cm5zIG91dCwgaXQKICAgIGlzbid0LiAgSGVyZSdzIGEgZHVtcCBvZiB0aGUgZXhlY3V0YWJsZSwgdXNpbmcKICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b2JqZHVtcCAtZDwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+CiAgICAgIDgwNDhmMjU6ICAgICAgIDhkIDQ1IGY0ICAgICAgICAgICAgICAgIGxlYSAgICAweGZmZmZmZmY0KCVlYnApLCVlYXgKICAgICAgODA0OGYyODogICAgICAgODkgNDMgNTQgICAgICAgICAgICAgICAgbW92ICAgICVlYXgsMHg1NCglZWJ4KQogICAgICA4MDQ4ZjJiOiAgICAgICBjNyA0NSBlYyAwMSAwMCAwMCAwMCAgICBtb3ZsICAgJDB4MSwweGZmZmZmZmVjKCVlYnApCiAgICAgIDgwNDhmMzI6ICAgICAgIDg5IGY2ICAgICAgICAgICAgICAgICAgIG1vdiAgICAlZXNpLCVlc2kKICAgICAgODA0OGYzNDogICAgICAgYjggMDggOGIgMDcgMDggICAgICAgICAgbW92ICAgICQweDgwNzhiMDgsJWVheAogICAgICA4MDQ4ZjM5OiAgICAgICA4OSA0NSBmMCAgICAgICAgICAgICAgICBtb3YgICAgJWVheCwweGZmZmZmZmYwKCVlYnApPC9wcmU+CjxwPk5vdGljZSB0aGUgZXh0cmEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tb3YKICAgICVlc2ksJWVzaTwvY29kZT4gaW5zdHJ1Y3Rpb24uICBXaGVyZSBkaWQgdGhpcyBjb21lCiAgICBmcm9tPyAgVGhlIEdOVSBhc3NlbWJsZXIgaW5zZXJ0ZWQgaXQgdG8gc2VydmUgYXMgdGhlIHR3bwogICAgYnl0ZXMgb2YgcGFkZGluZyBuZWVkZWQgdG8gYWxpZ24gdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bW92bAogICAgJC5MbnJCLCVlYXg8L2NvZGU+IGluc3RydWN0aW9uIG9uIGEgZm91ci1ieXRlCiAgICBib3VuZGFyeSwgYnV0IHByZXRlbmRlZCBpdCBkaWRuJ3QgZXhpc3Qgd2hlbiBhZGRpbmcgZGVidWcKICAgIGluZm9ybWF0aW9uLiAgVGh1cyB3aGVuIFZhbGdyaW5kIHJlYWRzIHRoZSBkZWJ1ZyBpbmZvIGl0CiAgICB0aGlua3MgdGhhdCB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tb3ZsCiAgICAkMHgxLDB4ZmZmZmZmZWMoJWVicCk8L2NvZGU+IGluc3RydWN0aW9uIGNvdmVycyB0aGUKICAgIGFkZHJlc3MgcmFuZ2UgMHg4MDQ4ZjJiLS0weDgwNDgzMyBieSBpdHNlbGYsIGFuZCBhdHRyaWJ1dGVzCiAgICB0aGUgY291bnRzIGZvciB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tb3YKICAgICVlc2ksJWVzaTwvY29kZT4gdG8gaXQuPC9wPgo8L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5Tb21ldGltZXMsIHRoZSBzYW1lIGZpbGVuYW1lIG1pZ2h0IGJlIHJlcHJlc2VudGVkIHdpdGgKICAgIGEgcmVsYXRpdmUgbmFtZSBhbmQgd2l0aCBhbiBhYnNvbHV0ZSBuYW1lIGluIGRpZmZlcmVudCBwYXJ0cwogICAgb2YgdGhlIGRlYnVnIGluZm8sIGVnOgogICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vaG9tZS91c2VyL3Byb2ovcHJvai5oPC9jb2RlPiBhbmQKICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Li4vcHJvai5oPC9jb2RlPi4gIEluIHRoaXMgY2FzZSwgaWYgeW91IHVzZQogICAgYXV0by1hbm5vdGF0aW9uLCB0aGUgZmlsZSB3aWxsIGJlIGFubm90YXRlZCB0d2ljZSB3aXRoIHRoZQogICAgY291bnRzIHNwbGl0IGJldHdlZW4gdGhlIHR3by48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+SWYgeW91IGNvbXBpbGUgc29tZSBmaWxlcyB3aXRoCiAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tZzwvY29kZT4gYW5kIHNvbWUgd2l0aG91dCwgc29tZQogICAgZXZlbnRzIHRoYXQgdGFrZSBwbGFjZSBpbiBhIGZpbGUgd2l0aG91dCBkZWJ1ZyBpbmZvIGNvdWxkIGJlCiAgICBhdHRyaWJ1dGVkIHRvIHRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIHdpdGggZGVidWcgaW5mbwogICAgKHdoaWNoZXZlciBvbmUgZ2V0cyBwbGFjZWQgYmVmb3JlIHRoZSBub24tZGVidWctaW5mbyBmaWxlIGluCiAgICB0aGUgZXhlY3V0YWJsZSkuPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPlRoaXMgbGlzdCBsb29rcyBsb25nLCBidXQgdGhlc2UgY2FzZXMgc2hvdWxkIGJlIGZhaXJseQpyYXJlLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNnLW1hbnVhbC5jZ19tZXJnZSI+PC9hPjUuMi4xMS6gTWVyZ2luZyBQcm9maWxlcyB3aXRoIGNnX21lcmdlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+CmNnX21lcmdlIGlzIGEgc2ltcGxlIHByb2dyYW0gd2hpY2gKcmVhZHMgbXVsdGlwbGUgcHJvZmlsZSBmaWxlcywgYXMgY3JlYXRlZCBieSBDYWNoZWdyaW5kLCBtZXJnZXMgdGhlbQp0b2dldGhlciwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0cyBpbnRvIGFub3RoZXIgZmlsZSBpbiB0aGUgc2FtZSBmb3JtYXQuCllvdSBjYW4gdGhlbiBleGFtaW5lIHRoZSBtZXJnZWQgcmVzdWx0cyB1c2luZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNnX2Fubm90YXRlICZsdDtmaWxlbmFtZSZndDs8L2NvZGU+LCBhcwpkZXNjcmliZWQgYWJvdmUuICBUaGUgbWVyZ2luZyBmdW5jdGlvbmFsaXR5IG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3UKd2FudCB0byBhZ2dyZWdhdGUgY29zdHMgb3ZlciBtdWx0aXBsZSBydW5zIG9mIHRoZSBzYW1lIHByb2dyYW0sIG9yCmZyb20gYSBzaW5nbGUgcGFyYWxsZWwgcnVuIHdpdGggbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lCnByb2dyYW0uPC9wPgo8cD4KY2dfbWVyZ2UgaXMgaW52b2tlZCBhcyBmb2xsb3dzOgo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KY2dfbWVyZ2UgLW8gb3V0cHV0ZmlsZSBmaWxlMSBmaWxlMiBmaWxlMyAuLi48L3ByZT4KPHA+Ckl0IHJlYWRzIGFuZCBjaGVja3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlMTwvY29kZT4sIHRoZW4gcmVhZAphbmQgY2hlY2tzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZTI8L2NvZGU+IGFuZCBtZXJnZXMgaXQgaW50bwp0aGUgcnVubmluZyB0b3RhbHMsIHRoZW4gdGhlIHNhbWUgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGUzPC9jb2RlPiwgZXRjLiAgVGhlIGZpbmFsIHJlc3VsdHMgYXJlCndyaXR0ZW4gdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vdXRwdXRmaWxlPC9jb2RlPiwgb3IgdG8gc3RhbmRhcmQKb3V0IGlmIG5vIG91dHB1dCBmaWxlIGlzIHNwZWNpZmllZC48L3A+CjxwPgpDb3N0cyBhcmUgc3VtbWVkIG9uIGEgcGVyLWZ1bmN0aW9uLCBwZXItbGluZSBhbmQgcGVyLWluc3RydWN0aW9uCmJhc2lzLiAgQmVjYXVzZSBvZiB0aGlzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGlucHV0IGZpbGVzIGRvZXMgbm90Cm1hdHRlciwgYWx0aG91Z2ggeW91IHNob3VsZCB0YWtlIGNhcmUgdG8gb25seSBtZW50aW9uIGVhY2ggZmlsZSBvbmNlLApzaW5jZSBhbnkgZmlsZSBtZW50aW9uZWQgdHdpY2Ugd2lsbCBiZSBhZGRlZCBpbiB0d2ljZS48L3A+CjxwPgpjZ19tZXJnZSBkb2VzIG5vdCBhdHRlbXB0IHRvIGNoZWNrCnRoYXQgdGhlIGlucHV0IGZpbGVzIGNvbWUgZnJvbSBydW5zIG9mIHRoZSBzYW1lIGV4ZWN1dGFibGUuICBJdCB3aWxsCmhhcHBpbHkgbWVyZ2UgdG9nZXRoZXIgcHJvZmlsZSBmaWxlcyBmcm9tIGNvbXBsZXRlbHkgdW5yZWxhdGVkCnByb2dyYW1zLiAgSXQgZG9lcyBob3dldmVyIGNoZWNrIHRoYXQgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RXZlbnRzOjwvY29kZT4gbGluZXMgb2YgYWxsIHRoZSBpbnB1dHMgYXJlCmlkZW50aWNhbCwgc28gYXMgdG8gZW5zdXJlIHRoYXQgdGhlIGFkZGl0aW9uIG9mIGNvc3RzIG1ha2VzIHNlbnNlLgpGb3IgZXhhbXBsZSwgaXQgd291bGQgYmUgbm9uc2Vuc2ljYWwgZm9yIGl0IHRvIGFkZCBhIG51bWJlciBpbmRpY2F0aW5nCkQxIHJlYWQgcmVmZXJlbmNlcyB0byBhIG51bWJlciBmcm9tIGEgZGlmZmVyZW50IGZpbGUgaW5kaWNhdGluZyBMTAp3cml0ZSBtaXNzZXMuPC9wPgo8cD4KQSBudW1iZXIgb2Ygb3RoZXIgc3ludGF4IGFuZCBzYW5pdHkgY2hlY2tzIGFyZSBkb25lIHdoaWxzdCByZWFkaW5nIHRoZQppbnB1dHMuICBjZ19tZXJnZSB3aWxsIHN0b3AgYW5kCmF0dGVtcHQgdG8gcHJpbnQgYSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgaWYgYW55IG9mIHRoZSBpbnB1dCBmaWxlcwpmYWlsIHRoZXNlIGNoZWNrcy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuY2dfZGlmZiI+PC9hPjUuMi4xMi6gRGlmZmVyZW5jaW5nIFByb2ZpbGVzIHdpdGggY2dfZGlmZjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPgpjZ19kaWZmIGlzIGEgc2ltcGxlIHByb2dyYW0gd2hpY2gKcmVhZHMgdHdvIHByb2ZpbGUgZmlsZXMsIGFzIGNyZWF0ZWQgYnkgQ2FjaGVncmluZCwgZmluZHMgdGhlIGRpZmZlcmVuY2UKYmV0d2VlbiB0aGVtLCBhbmQgd3JpdGVzIHRoZSByZXN1bHRzIGludG8gYW5vdGhlciBmaWxlIGluIHRoZSBzYW1lIGZvcm1hdC4KWW91IGNhbiB0aGVuIGV4YW1pbmUgdGhlIG1lcmdlZCByZXN1bHRzIHVzaW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y2dfYW5ub3RhdGUgJmx0O2ZpbGVuYW1lJmd0OzwvY29kZT4sIGFzCmRlc2NyaWJlZCBhYm92ZS4gIFRoaXMgaXMgdmVyeSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gbWVhc3VyZSBob3cgYSBjaGFuZ2UgdG8KYSBwcm9ncmFtIGFmZmVjdGVkIGl0cyBwZXJmb3JtYW5jZS4KPC9wPgo8cD4KY2dfZGlmZiBpcyBpbnZva2VkIGFzIGZvbGxvd3M6CjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgpjZ19kaWZmIGZpbGUxIGZpbGUyPC9wcmU+CjxwPgpJdCByZWFkcyBhbmQgY2hlY2tzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZTE8L2NvZGU+LCB0aGVuIHJlYWQKYW5kIGNoZWNrcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGUyPC9jb2RlPiwgdGhlbiBjb21wdXRlcyB0aGUKZGlmZmVyZW5jZSAoZWZmZWN0aXZlbHkgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlMTwvY29kZT4gLQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGUyPC9jb2RlPikuICBUaGUgZmluYWwgcmVzdWx0cyBhcmUgd3JpdHRlbiB0bwpzdGFuZGFyZCBvdXRwdXQuPC9wPgo8cD4KQ29zdHMgYXJlIHN1bW1lZCBvbiBhIHBlci1mdW5jdGlvbiBiYXNpcy4gIFBlci1saW5lIGNvc3RzIGFyZSBub3Qgc3VtbWVkLApiZWNhdXNlIGRvaW5nIHNvIGlzIHRvbyBkaWZmaWN1bHQuICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgZGlmZmVyZW5jaW5nIHR3bwpwcm9maWxlcywgb25lIGZyb20gYSBzaW5nbGUtZmlsZSBwcm9ncmFtIEEsIGFuZCBvbmUgZnJvbSB0aGUgc2FtZSBwcm9ncmFtIEEKd2hlcmUgYSBzaW5nbGUgYmxhbmsgbGluZSB3YXMgaW5zZXJ0ZWQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4gIEV2ZXJ5IHNpbmdsZQpwZXItbGluZSBjb3VudCBoYXMgY2hhbmdlZC4gIEluIGNvbXBhcmlzb24sIHRoZSBwZXItZnVuY3Rpb24gY291bnRzIGhhdmUgbm90CmNoYW5nZWQuICBUaGUgcGVyLWZ1bmN0aW9uIGNvdW50IGRpZmZlcmVuY2VzIGFyZSBzdGlsbCB2ZXJ5IHVzZWZ1bCBmb3IKZGV0ZXJtaW5pbmcgZGlmZmVyZW5jZXMgYmV0d2VlbiBwcm9ncmFtcy4gIE5vdGUgdGhhdCBiZWNhdXNlIHRoZSByZXN1bHQgaXMKdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIHByb2ZpbGVzLCBtYW55IG9mIHRoZSBjb3VudHMgd2lsbCBiZSBuZWdhdGl2ZTsgIHRoaXMKaW5kaWNhdGVzIHRoYXQgdGhlIGNvdW50cyBmb3IgdGhlIHJlbGV2YW50IGZ1bmN0aW9uIGFyZSBmZXdlciBpbiB0aGUgc2Vjb25kCnZlcnNpb24gdGhhbiB0aG9zZSBpbiB0aGUgZmlyc3QgdmVyc2lvbi48L3A+CjxwPgpjZ19kaWZmIGRvZXMgbm90IGF0dGVtcHQgdG8gY2hlY2sKdGhhdCB0aGUgaW5wdXQgZmlsZXMgY29tZSBmcm9tIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0YWJsZS4gIEl0IHdpbGwKaGFwcGlseSBtZXJnZSB0b2dldGhlciBwcm9maWxlIGZpbGVzIGZyb20gY29tcGxldGVseSB1bnJlbGF0ZWQKcHJvZ3JhbXMuICBJdCBkb2VzIGhvd2V2ZXIgY2hlY2sgdGhhdCB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5FdmVudHM6PC9jb2RlPiBsaW5lcyBvZiBhbGwgdGhlIGlucHV0cyBhcmUKaWRlbnRpY2FsLCBzbyBhcyB0byBlbnN1cmUgdGhhdCB0aGUgYWRkaXRpb24gb2YgY29zdHMgbWFrZXMgc2Vuc2UuCkZvciBleGFtcGxlLCBpdCB3b3VsZCBiZSBub25zZW5zaWNhbCBmb3IgaXQgdG8gYWRkIGEgbnVtYmVyIGluZGljYXRpbmcKRDEgcmVhZCByZWZlcmVuY2VzIHRvIGEgbnVtYmVyIGZyb20gYSBkaWZmZXJlbnQgZmlsZSBpbmRpY2F0aW5nIExMCndyaXRlIG1pc3Nlcy48L3A+CjxwPgpBIG51bWJlciBvZiBvdGhlciBzeW50YXggYW5kIHNhbml0eSBjaGVja3MgYXJlIGRvbmUgd2hpbHN0IHJlYWRpbmcgdGhlCmlucHV0cy4gIGNnX2RpZmYgd2lsbCBzdG9wIGFuZAphdHRlbXB0IHRvIHByaW50IGEgaGVscGZ1bCBlcnJvciBtZXNzYWdlIGlmIGFueSBvZiB0aGUgaW5wdXQgZmlsZXMKZmFpbCB0aGVzZSBjaGVja3MuPC9wPgo8cD4KU29tZXRpbWVzIHlvdSB3aWxsIHdhbnQgdG8gY29tcGFyZSBDYWNoZWdyaW5kIHByb2ZpbGVzIG9mIHR3byB2ZXJzaW9ucyBvZiBhCnByb2dyYW0gdGhhdCB5b3UgaGF2ZSBzaXR0aW5nIHNpZGUtYnktc2lkZS4gIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgaGF2ZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcnNpb24xL3Byb2cuYzwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyc2lvbjIvcHJvZy5jPC9jb2RlPiwgd2hlcmUgdGhlIHNlY29uZCBpcwpzbGlnaHRseSBkaWZmZXJlbnQgdG8gdGhlIGZpcnN0LiAgQSBzdHJhaWdodCBjb21wYXJpc29uIG9mIHRoZSB0d28gd2lsbCBub3QKYmUgdXNlZnVsIC0tIGJlY2F1c2UgZnVuY3Rpb25zIGFyZSBxdWFsaWZpZWQgd2l0aCBmaWxlbmFtZXMsIGEgZnVuY3Rpb24KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5mPC9jb2RlPiB3aWxsIGJlIGxpc3RlZCBhcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcnNpb24xL3Byb2cuYzpmPC9jb2RlPiBmb3IgdGhlIGZpcnN0IHZlcnNpb24gYnV0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyc2lvbjIvcHJvZy5jOmY8L2NvZGU+IGZvciB0aGUgc2Vjb25kCnZlcnNpb24uPC9wPgo8cD4KV2hlbiB0aGlzIGhhcHBlbnMsIHlvdSBjYW4gdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW1vZC1maWxlbmFtZTwvY29kZT4gb3B0aW9uLgpJdHMgYXJndW1lbnQgaXMgYSBQZXJsIHNlYXJjaC1hbmQtcmVwbGFjZSBleHByZXNzaW9uIHRoYXQgd2lsbCBiZSBhcHBsaWVkCnRvIGFsbCB0aGUgZmlsZW5hbWVzIGluIGJvdGggQ2FjaGVncmluZCBvdXRwdXQgZmlsZXMuICBJdCBjYW4gYmUgdXNlZCB0bwpyZW1vdmUgbWlub3IgZGlmZmVyZW5jZXMgaW4gZmlsZW5hbWVzLiAgRm9yIGV4YW1wbGUsIHRoZSBvcHRpb24KPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1tb2QtZmlsZW5hbWU9J3MvdmVyc2lvblswLTldL3ZlcnNpb25OLyc8L2NvZGU+IHdpbGwgc3VmZmljZSBmb3IKdGhpcyBjYXNlLjwvcD4KPHA+ClNpbWlsYXJseSwgc29tZXRpbWVzIGNvbXBpbGVycyBhdXRvLWdlbmVyYXRlIGNlcnRhaW4gZnVuY3Rpb25zIGFuZCBnaXZlIHRoZW0KcmFuZG9taXplZCBuYW1lcy4gIEZvciBleGFtcGxlLCBHQ0Mgc29tZXRpbWVzIGF1dG8tZ2VuZXJhdGVzIGZ1bmN0aW9ucyB3aXRoCm5hbWVzIGxpa2UgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5ULjEyMzQ8L2NvZGU+LCBhbmQgdGhlIHN1ZmZpeGVzIHZhcnkgZnJvbSBidWlsZCB0bwpidWlsZC4gIFlvdSBjYW4gdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW1vZC1mdW5jbmFtZTwvY29kZT4gb3B0aW9uIHRvIHJlbW92ZQpzbWFsbCBkaWZmZXJlbmNlcyBsaWtlIHRoZXNlOyAgaXQgd29ya3MgaW4gdGhlIHNhbWUgd2F5IGFzCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbW9kLWZpbGVuYW1lPC9jb2RlPi48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjZy1tYW51YWwuY2dvcHRzIj48L2E+NS4zLqBDYWNoZWdyaW5kIENvbW1hbmQtbGluZSBPcHRpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+Q2FjaGVncmluZC1zcGVjaWZpYyBvcHRpb25zIGFyZTo8L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNnLm9wdHMubGlzdCI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0Pgo8YSBuYW1lPSJvcHQuSTEiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tSTE9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxldmVsIDEKICAgICAgaW5zdHJ1Y3Rpb24gY2FjaGUuICA8L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuRDEiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tRDE9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxldmVsIDEKICAgICAgZGF0YSBjYWNoZS48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuTEwiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tTEw9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxhc3QtbGV2ZWwKICAgICAgY2FjaGUuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmNhY2hlLXNpbSI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWNoZS1zaW09bm98eWVzIFt5ZXNdIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPkVuYWJsZXMgb3IgZGlzYWJsZXMgY29sbGVjdGlvbiBvZiBjYWNoZSBhY2Nlc3MgYW5kIG1pc3MKICAgICAgICAgICAgY291bnRzLjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5icmFuY2gtc2ltIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJyYW5jaC1zaW09bm98eWVzIFtub10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+RW5hYmxlcyBvciBkaXNhYmxlcyBjb2xsZWN0aW9uIG9mIGJyYW5jaCBpbnN0cnVjdGlvbiBhbmQKICAgICAgICAgICAgbWlzcHJlZGljdGlvbiBjb3VudHMuICBCeSBkZWZhdWx0IHRoaXMgaXMgZGlzYWJsZWQgYXMgaXQKICAgICAgICAgICAgc2xvd3MgQ2FjaGVncmluZCBkb3duIGJ5IGFwcHJveGltYXRlbHkgMjUlLiAgTm90ZSB0aGF0IHlvdQogICAgICAgICAgICBjYW5ub3Qgc3BlY2lmeSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNhY2hlLXNpbT1ubzwvY29kZT4KICAgICAgICAgICAgYW5kIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tYnJhbmNoLXNpbT1ubzwvY29kZT4KICAgICAgICAgICAgdG9nZXRoZXIsIGFzIHRoYXQgd291bGQgbGVhdmUgQ2FjaGVncmluZCB3aXRoIG5vCiAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIGNvbGxlY3QuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmNhY2hlZ3JpbmQtb3V0LWZpbGUiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FjaGVncmluZC1vdXQtZmlsZT0mbHQ7ZmlsZSZndDsgPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+V3JpdGUgdGhlIHByb2ZpbGUgZGF0YSB0byAKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlPC9jb2RlPiByYXRoZXIgdGhhbiB0byB0aGUgZGVmYXVsdAogICAgICAgICAgICBvdXRwdXQgZmlsZSwKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5jYWNoZWdyaW5kLm91dC4mbHQ7cGlkJmd0OzwvY29kZT4uICBUaGUKICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+JXA8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4lcTwvY29kZT4gZm9ybWF0IHNwZWNpZmllcnMKICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gZW1iZWQgdGhlIHByb2Nlc3MgSUQgYW5kL29yIHRoZSBjb250ZW50cyBvZiBhbgogICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgbmFtZSwgYXMgaXMgdGhlIGNhc2UgZm9yIHRoZSBjb3JlCiAgICAgICAgICAgIG9wdGlvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0ibWFudWFsLWNvcmUuaHRtbCNvcHQubG9nLWZpbGUiPi0tbG9nLWZpbGU8L2E+PC9jb2RlPi4KICAgICAgPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjZy1tYW51YWwuYW5ub3B0cyI+PC9hPjUuNC6gY2dfYW5ub3RhdGUgQ29tbWFuZC1saW5lIE9wdGlvbnM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8YSBuYW1lPSJjZ19hbm5vdGF0ZS5vcHRzLmxpc3QiPjwvYT48ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1oIC0taGVscCA8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPjxwPlNob3cgdGhlIGhlbHAgbWVzc2FnZS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJzaW9uIDwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyB0aGUgdmVyc2lvbiBudW1iZXIuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2hvdz1BLEIsQyBbZGVmYXVsdDogYWxsLCB1c2luZyBvcmRlciBpbgogICAgICBjYWNoZWdyaW5kLm91dC4mbHQ7cGlkJmd0O10gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5TcGVjaWZpZXMgd2hpY2ggZXZlbnRzIHRvIHNob3cgKGFuZCB0aGUgY29sdW1uCiAgICAgIG9yZGVyKS4gRGVmYXVsdCBpcyB0byB1c2UgYWxsIHByZXNlbnQgaW4gdGhlCiAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Y2FjaGVncmluZC5vdXQuJmx0O3BpZCZndDs8L2NvZGU+IGZpbGUgKGFuZAogICAgICB1c2UgdGhlIG9yZGVyIGluIHRoZSBmaWxlKS4gIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBjb25jZW50cmF0ZSBvbiwgZm9yCiAgICAgIGV4YW1wbGUsIEkgY2FjaGUgbWlzc2VzICg8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNob3c9STFtcixJTG1yPC9jb2RlPiksIG9yIGRhdGEKICAgICAgcmVhZCBtaXNzZXMgKDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2hvdz1EMW1yLERMbXI8L2NvZGU+KSwgb3IgTEwgZGF0YSBtaXNzZXMKICAgICAgKDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2hvdz1ETG1yLERMbXc8L2NvZGU+KS4gIEJlc3QgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc29ydDwvY29kZT4uPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc29ydD1BLEIsQyBbZGVmYXVsdDogb3JkZXIgaW4KICAgICAgY2FjaGVncmluZC5vdXQuJmx0O3BpZCZndDtdIDwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U3BlY2lmaWVzIHRoZSBldmVudHMgdXBvbiB3aGljaCB0aGUgc29ydGluZyBvZiB0aGUKICAgICAgZnVuY3Rpb24tYnktZnVuY3Rpb24gZW50cmllcyB3aWxsIGJlIGJhc2VkLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZD1YIFtkZWZhdWx0OiAwLjElXSA8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPgo8cD5TZXRzIHRoZSB0aHJlc2hvbGQgZm9yIHRoZSBmdW5jdGlvbi1ieS1mdW5jdGlvbgogICAgICBzdW1tYXJ5LiAgQSBmdW5jdGlvbiBpcyBzaG93biBpZiBpdCBhY2NvdW50cyBmb3IgbW9yZSB0aGFuIFglCiAgICAgIG9mIHRoZSBjb3VudHMgZm9yIHRoZSBwcmltYXJ5IHNvcnQgZXZlbnQuICBJZiBhdXRvLWFubm90YXRpbmcsIGFsc28KICAgICAgYWZmZWN0cyB3aGljaCBmaWxlcyBhcmUgYW5ub3RhdGVkLjwvcD4KPHA+Tm90ZTogdGhyZXNob2xkcyBjYW4gYmUgc2V0IGZvciBtb3JlIHRoYW4gb25lIG9mIHRoZQogICAgICBldmVudHMgYnkgYXBwZW5kaW5nIGFueSBldmVudHMgZm9yIHRoZQogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNvcnQ8L2NvZGU+IG9wdGlvbiB3aXRoIGEgY29sb24KICAgICAgYW5kIGEgbnVtYmVyIChubyBzcGFjZXMsIHRob3VnaCkuICBFLmcuIGlmIHlvdSB3YW50IHRvIHNlZQogICAgICBlYWNoIGZ1bmN0aW9uIHRoYXQgY292ZXJzIG1vcmUgdGhhbiAxJSBvZiBMTCByZWFkIG1pc3NlcyBvciAxJSBvZiBMTAogICAgICB3cml0ZSBtaXNzZXMsIHVzZSB0aGlzIG9wdGlvbjo8L3A+CjxwPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc29ydD1ETG1yOjEsRExtdzoxPC9jb2RlPjwvcD4KPC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hdXRvPSZsdDtub3x5ZXMmZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5XaGVuIGVuYWJsZWQsIGF1dG9tYXRpY2FsbHkgYW5ub3RhdGVzIGV2ZXJ5IGZpbGUgdGhhdAogICAgICBpcyBtZW50aW9uZWQgaW4gdGhlIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIHN1bW1hcnkgdGhhdCBjYW4gYmUKICAgICAgZm91bmQuICBBbHNvIGdpdmVzIGEgbGlzdCBvZiB0aG9zZSB0aGF0IGNvdWxkbid0IGJlIGZvdW5kLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNvbnRleHQ9TiBbZGVmYXVsdDogOF0gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5QcmludCBOIGxpbmVzIG9mIGNvbnRleHQgYmVmb3JlIGFuZCBhZnRlciBlYWNoCiAgICAgIGFubm90YXRlZCBsaW5lLiAgQXZvaWRzIHByaW50aW5nIGxhcmdlIHNlY3Rpb25zIG9mIHNvdXJjZQogICAgICBmaWxlcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkLiAgVXNlIGEgbGFyZ2UgbnVtYmVyCiAgICAgIChlLmcuIDEwMDAwMCkgdG8gc2hvdyBhbGwgc291cmNlIGxpbmVzLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tSSZsdDtkaXImZ3Q7IC0taW5jbHVkZT0mbHQ7ZGlyJmd0OyBbZGVmYXVsdDogbm9uZV0gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5BZGRzIGEgZGlyZWN0b3J5IHRvIHRoZSBsaXN0IGluIHdoaWNoIHRvIHNlYXJjaCBmb3IKICAgICAgZmlsZXMuICBNdWx0aXBsZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tSTwvY29kZT4vPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbmNsdWRlPC9jb2RlPgogICAgICBvcHRpb25zIGNhbiBiZSBnaXZlbiB0byBhZGQgbXVsdGlwbGUgZGlyZWN0b3JpZXMuPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjZy1tYW51YWwubWVyZ2VvcHRzIj48L2E+NS41LqBjZ19tZXJnZSBDb21tYW5kLWxpbmUgT3B0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNnX21lcmdlLm9wdHMubGlzdCI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LW8gb3V0ZmlsZTwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+V3JpdGUgdGhlIHByb2ZpbGUgZGF0YSB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm91dGZpbGU8L2NvZGU+CiAgICAgICAgICAgIHJhdGhlciB0aGFuIHRvIHN0YW5kYXJkIG91dHB1dC4KICAgICAgPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjZy1tYW51YWwuZGlmZm9wdHMiPjwvYT41LjYuoGNnX2RpZmYgQ29tbWFuZC1saW5lIE9wdGlvbnM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8YSBuYW1lPSJjZ19kaWZmLm9wdHMubGlzdCI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LWggLS1oZWxwIDwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyB0aGUgaGVscCBtZXNzYWdlLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5TaG93IHRoZSB2ZXJzaW9uIG51bWJlci48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1tb2QtZmlsZW5hbWU9Jmx0O2V4cHImZ3Q7IFtkZWZhdWx0OiBub25lXTwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U3BlY2lmaWVzIGEgUGVybCBzZWFyY2gtYW5kLXJlcGxhY2UgZXhwcmVzc2lvbiB0aGF0IGlzIGFwcGxpZWQKICAgICAgdG8gYWxsIGZpbGVuYW1lcy4gIFVzZWZ1bCBmb3IgcmVtb3ZpbmcgbWlub3IgZGlmZmVyZW5jZXMgaW4gcGF0aHMKICAgICAgYmV0d2VlbiB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgcHJvZ3JhbSB0aGF0IGFyZSBzaXR0aW5nIGluCiAgICAgIGRpZmZlcmVudCBkaXJlY3Rvcmllcy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1tb2QtZnVuY25hbWU9Jmx0O2V4cHImZ3Q7IFtkZWZhdWx0OiBub25lXTwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+TGlrZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW1vZC1maWxlbmFtZTwvY29kZT4sIGJ1dCBmb3IgZmlsZW5hbWVzLgogICAgICBVc2VmdWwgZm9yIHJlbW92aW5nIG1pbm9yIGRpZmZlcmVuY2VzIGluIHJhbmRvbWl6ZWQgbmFtZXMgb2YKICAgICAgYXV0by1nZW5lcmF0ZWQgZnVuY3Rpb25zIGdlbmVyYXRlZCBieSBzb21lIGNvbXBpbGVycy48L3A+PC9kZD4KPC9kbD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNnLW1hbnVhbC5hY3Rpbmctb24iPjwvYT41LjcuoEFjdGluZyBvbiBDYWNoZWdyaW5kJ3MgSW5mb3JtYXRpb248L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD4KQ2FjaGVncmluZCBnaXZlcyB5b3UgbG90cyBvZiBpbmZvcm1hdGlvbiwgYnV0IGFjdGluZyBvbiB0aGF0IGluZm9ybWF0aW9uCmlzbid0IGFsd2F5cyBlYXN5LiAgSGVyZSBhcmUgc29tZSBydWxlcyBvZiB0aHVtYiB0aGF0IHdlIGhhdmUgZm91bmQgdG8gYmUKdXNlZnVsLjwvcD4KPHA+CkZpcnN0IG9mIGFsbCwgdGhlIGdsb2JhbCBoaXQvbWlzcyBjb3VudHMgYW5kIG1pc3MgcmF0ZXMgYXJlIG5vdCB0aGF0IHVzZWZ1bC4KSWYgeW91IGhhdmUgbXVsdGlwbGUgcHJvZ3JhbXMgb3IgbXVsdGlwbGUgcnVucyBvZiBhIHByb2dyYW0sIGNvbXBhcmluZyB0aGUKbnVtYmVycyBtaWdodCBpZGVudGlmeSBpZiBhbnkgYXJlIG91dGxpZXJzIGFuZCB3b3J0aHkgb2YgY2xvc2VyCmludmVzdGlnYXRpb24uICBPdGhlcndpc2UsIHRoZXkncmUgbm90IGVub3VnaCB0byBhY3Qgb24uPC9wPgo8cD4KVGhlIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIGNvdW50cyBhcmUgbW9yZSB1c2VmdWwgdG8gbG9vayBhdCwgYXMgdGhleSBwaW5wb2ludAp3aGljaCBmdW5jdGlvbnMgYXJlIGNhdXNpbmcgbGFyZ2UgbnVtYmVycyBvZiBjb3VudHMuICBIb3dldmVyLCBiZXdhcmUgdGhhdAppbmxpbmluZyBjYW4gbWFrZSB0aGVzZSBjb3VudHMgbWlzbGVhZGluZy4gIElmIGEgZnVuY3Rpb24KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5mPC9jb2RlPiBpcyBhbHdheXMgaW5saW5lZCwgY291bnRzIHdpbGwgYmUgYXR0cmlidXRlZCB0byB0aGUKZnVuY3Rpb25zIGl0IGlzIGlubGluZWQgaW50bywgcmF0aGVyIHRoYW4gaXRzZWxmLiAgSG93ZXZlciwgaWYgeW91IGxvb2sgYXQKdGhlIGxpbmUtYnktbGluZSBhbm5vdGF0aW9ucyBmb3IgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5mPC9jb2RlPiB5b3UnbGwgc2VlIHRoZQpjb3VudHMgdGhhdCBiZWxvbmcgdG8gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5mPC9jb2RlPi4gIChUaGlzIGlzIGhhcmQgdG8gYXZvaWQsIGl0J3MKaG93IHRoZSBkZWJ1ZyBpbmZvIGlzIHN0cnVjdHVyZWQuKSAgU28gaXQncyB3b3J0aCBsb29raW5nIGZvciBsYXJnZSBudW1iZXJzCmluIHRoZSBsaW5lLWJ5LWxpbmUgYW5ub3RhdGlvbnMuPC9wPgo8cD4KVGhlIGxpbmUtYnktbGluZSBzb3VyY2UgY29kZSBhbm5vdGF0aW9ucyBhcmUgbXVjaCBtb3JlIHVzZWZ1bC4gIEluIG91cgpleHBlcmllbmNlLCB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBieSBsb29raW5nIGF0IHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPklyPC9jb2RlPiBudW1iZXJzLiAgVGhleSBzaW1wbHkgbWVhc3VyZSBob3cgbWFueQppbnN0cnVjdGlvbnMgd2VyZSBleGVjdXRlZCBmb3IgZWFjaCBsaW5lLCBhbmQgZG9uJ3QgaW5jbHVkZSBhbnkgY2FjaGUKaW5mb3JtYXRpb24sIGJ1dCB0aGV5IGNhbiBzdGlsbCBiZSB2ZXJ5IHVzZWZ1bCBmb3IgaWRlbnRpZnlpbmcKYm90dGxlbmVja3MuPC9wPgo8cD4KQWZ0ZXIgdGhhdCwgd2UgaGF2ZSBmb3VuZCB0aGF0IExMIG1pc3NlcyBhcmUgdHlwaWNhbGx5IGEgbXVjaCBiaWdnZXIgc291cmNlCm9mIHNsb3ctZG93bnMgdGhhbiBMMSBtaXNzZXMuICBTbyBpdCdzIHdvcnRoIGxvb2tpbmcgZm9yIGFueSBzbmlwcGV0cyBvZgpjb2RlIHdpdGggaGlnaCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkRMbXI8L2NvZGU+IG9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RExtdzwvY29kZT4gY291bnRzLiAgKFlvdSBjYW4gdXNlCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2hvdz1ETG1yCi0tc29ydD1ETG1yPC9jb2RlPiB3aXRoIGNnX2Fubm90YXRlIHRvIGZvY3VzIGp1c3Qgb24KPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkRMbXI8L2NvZGU+IGNvdW50cywgZm9yIGV4YW1wbGUuKSBJZiB5b3UgZmluZCBhbnksIGl0J3Mgc3RpbGwKbm90IGFsd2F5cyBlYXN5IHRvIHdvcmsgb3V0IGhvdyB0byBpbXByb3ZlIHRoaW5ncy4gIFlvdSBuZWVkIHRvIGhhdmUgYQpyZWFzb25hYmxlIHVuZGVyc3RhbmRpbmcgb2YgaG93IGNhY2hlcyB3b3JrLCB0aGUgcHJpbmNpcGxlcyBvZiBsb2NhbGl0eSwgYW5kCnlvdXIgcHJvZ3JhbSdzIGRhdGEgYWNjZXNzIHBhdHRlcm5zLiAgSW1wcm92aW5nIHRoaW5ncyBtYXkgcmVxdWlyZQpyZWRlc2lnbmluZyBhIGRhdGEgc3RydWN0dXJlLCBmb3IgZXhhbXBsZS48L3A+CjxwPgpMb29raW5nIGF0IHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJjbTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QmltPC9jb2RlPiBtaXNzZXMgY2FuIGFsc28gYmUgaGVscGZ1bC4KSW4gcGFydGljdWxhciwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CaW08L2NvZGU+IG1pc3NlcyBhcmUgb2Z0ZW4gY2F1c2VkCmJ5IDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5zd2l0Y2g8L2NvZGU+IHN0YXRlbWVudHMsIGFuZCBpbiBzb21lIGNhc2VzIHRoZXNlCjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5zd2l0Y2g8L2NvZGU+IHN0YXRlbWVudHMgY2FuIGJlIHJlcGxhY2VkIHdpdGggdGFibGUtZHJpdmVuIGNvZGUuCkZvciBleGFtcGxlLCB5b3UgbWlnaHQgcmVwbGFjZSBjb2RlIGxpa2UgdGhpczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KZW51bSBFIHsgQSwgQiwgQyB9OwplbnVtIEUgZTsKaW50IGk7Ci4uLgpzd2l0Y2ggKGUpCnsKICAgIGNhc2UgQTogaSArPSAxOyBicmVhazsKICAgIGNhc2UgQjogaSArPSAyOyBicmVhazsKICAgIGNhc2UgQzogaSArPSAzOyBicmVhazsKfQo8L3ByZT4KPHA+d2l0aCBjb2RlIGxpa2UgdGhpczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KZW51bSBFIHsgQSwgQiwgQyB9OwplbnVtIEUgZTsKZW51bSBFIHRhYmxlW10gPSB7IDEsIDIsIDMgfTsKaW50IGk7Ci4uLgppICs9IHRhYmxlW2VdOwo8L3ByZT4KPHA+ClRoaXMgaXMgb2J2aW91c2x5IGEgY29udHJpdmVkIGV4YW1wbGUsIGJ1dCB0aGUgYmFzaWMgcHJpbmNpcGxlIGFwcGxpZXMgaW4gYQp3aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy48L3A+CjxwPgpJbiBzaG9ydCwgQ2FjaGVncmluZCBjYW4gdGVsbCB5b3Ugd2hlcmUgc29tZSBvZiB0aGUgYm90dGxlbmVja3MgaW4geW91ciBjb2RlCmFyZSwgYnV0IGl0IGNhbid0IHRlbGwgeW91IGhvdyB0byBmaXggdGhlbS4gIFlvdSBoYXZlIHRvIHdvcmsgdGhhdCBvdXQgZm9yCnlvdXJzZWxmLiAgQnV0IGF0IGxlYXN0IHlvdSBoYXZlIHRoZSBpbmZvcm1hdGlvbiEKPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjZy1tYW51YWwuc2ltLWRldGFpbHMiPjwvYT41LjguoFNpbXVsYXRpb24gRGV0YWlsczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPgpUaGlzIHNlY3Rpb24gdGFsa3MgYWJvdXQgZGV0YWlscyB5b3UgZG9uJ3QgbmVlZCB0byBrbm93IGFib3V0IGluIG9yZGVyIHRvCnVzZSBDYWNoZWdyaW5kLCBidXQgbWF5IGJlIG9mIGludGVyZXN0IHRvIHNvbWUgcGVvcGxlLgo8L3A+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNhY2hlLXNpbSI+PC9hPjUuOC4xLqBDYWNoZSBTaW11bGF0aW9uIFNwZWNpZmljczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlNwZWNpZmljIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY2FjaGUgc2ltdWxhdGlvbiBhcmUgYXMKZm9sbG93czo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPldyaXRlLWFsbG9jYXRlOiB3aGVuIGEgd3JpdGUgbWlzcyBvY2N1cnMsIHRoZSBibG9jawogICAgd3JpdHRlbiB0byBpcyBicm91Z2h0IGludG8gdGhlIEQxIGNhY2hlLiAgTW9zdCBtb2Rlcm4gY2FjaGVzCiAgICBoYXZlIHRoaXMgcHJvcGVydHkuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5CaXQtc2VsZWN0aW9uIGhhc2ggZnVuY3Rpb246IHRoZSBzZXQgb2YgbGluZShzKSBpbiB0aGUgY2FjaGUKICAgIHRvIHdoaWNoIGEgbWVtb3J5IGJsb2NrIG1hcHMgaXMgY2hvc2VuIGJ5IHRoZSBtaWRkbGUgYml0cwogICAgTS0tKE0rTi0xKSBvZiB0aGUgYnl0ZSBhZGRyZXNzLCB3aGVyZTo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGNpcmNsZTsgIj4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+bGluZSBzaXplID0gMl5NIGJ5dGVzPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPihjYWNoZSBzaXplIC8gbGluZSBzaXplIC8gYXNzb2NpYXRpdml0eSkgPSAyXk4gYnl0ZXM8L3A+PC9saT4KPC91bD48L2Rpdj4KPC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+SW5jbHVzaXZlIExMIGNhY2hlOiB0aGUgTEwgY2FjaGUgdHlwaWNhbGx5IHJlcGxpY2F0ZXMgYWxsCiAgICB0aGUgZW50cmllcyBvZiB0aGUgTDEgY2FjaGVzLCBiZWNhdXNlIGZldGNoaW5nIGludG8gTDEgaW52b2x2ZXMKICAgIGZldGNoaW5nIGludG8gTEwgZmlyc3QgKHRoaXMgZG9lcyBub3QgZ3VhcmFudGVlIHN0cmljdCBpbmNsdXNpdmVuZXNzLAogICAgYXMgbGluZXMgZXZpY3RlZCBmcm9tIExMIHN0aWxsIGNvdWxkIHJlc2lkZSBpbiBMMSkuICBUaGlzIGlzCiAgICBzdGFuZGFyZCBvbiBQZW50aXVtIGNoaXBzLCBidXQgQU1EIE9wdGVyb25zLCBBdGhsb25zIGFuZCBEdXJvbnMKICAgIHVzZSBhbiBleGNsdXNpdmUgTEwgY2FjaGUgdGhhdCBvbmx5IGhvbGRzCiAgICBibG9ja3MgZXZpY3RlZCBmcm9tIEwxLiAgRGl0dG8gbW9zdCBtb2Rlcm4gVklBIENQVXMuPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPlRoZSBjYWNoZSBjb25maWd1cmF0aW9uIHNpbXVsYXRlZCAoY2FjaGUgc2l6ZSwKYXNzb2NpYXRpdml0eSBhbmQgbGluZSBzaXplKSBpcyBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkgdXNpbmcKdGhlIHg4NiBDUFVJRCBpbnN0cnVjdGlvbi4gIElmIHlvdSBoYXZlIGEgbWFjaGluZSB0aGF0IChhKQpkb2Vzbid0IHN1cHBvcnQgdGhlIENQVUlEIGluc3RydWN0aW9uLCBvciAoYikgc3VwcG9ydHMgaXQgaW4gYW4KZWFybHkgaW5jYXJuYXRpb24gdGhhdCBkb2Vzbid0IGdpdmUgYW55IGNhY2hlIGluZm9ybWF0aW9uLCB0aGVuCkNhY2hlZ3JpbmQgd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gKHRoYXQKb2YgYSBtb2RlbCAzLzQgQXRobG9uKS4gIENhY2hlZ3JpbmQgd2lsbCB0ZWxsIHlvdSBpZiB0aGlzCmhhcHBlbnMuICBZb3UgY2FuIG1hbnVhbGx5IHNwZWNpZnkgb25lLCB0d28gb3IgYWxsIHRocmVlIGxldmVscwooSTEvRDEvTEwpIG9mIHRoZSBjYWNoZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgdXNpbmcgdGhlCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tSTE8L2NvZGU+LAo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLUQxPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1MTDwvY29kZT4gb3B0aW9ucy4KRm9yIGNhY2hlIHBhcmFtZXRlcnMgdG8gYmUgdmFsaWQgZm9yIHNpbXVsYXRpb24sIHRoZSBudW1iZXIKb2Ygc2V0cyAod2l0aCBhc3NvY2lhdGl2aXR5IGJlaW5nIHRoZSBudW1iZXIgb2YgY2FjaGUgbGluZXMgaW4KZWFjaCBzZXQpIGhhcyB0byBiZSBhIHBvd2VyIG9mIHR3by48L3A+CjxwPk9uIFBvd2VyUEMgcGxhdGZvcm1zCkNhY2hlZ3JpbmQgY2Fubm90IGF1dG9tYXRpY2FsbHkgCmRldGVybWluZSB0aGUgY2FjaGUgY29uZmlndXJhdGlvbiwgc28geW91IHdpbGwgCm5lZWQgdG8gc3BlY2lmeSBpdCB3aXRoIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLUkxPC9jb2RlPiwKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1EMTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tTEw8L2NvZGU+IG9wdGlvbnMuPC9wPgo8cD5PdGhlciBub3Rld29ydGh5IGJlaGF2aW91cjo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5SZWZlcmVuY2VzIHRoYXQgc3RyYWRkbGUgdHdvIGNhY2hlIGxpbmVzIGFyZSB0cmVhdGVkIGFzCiAgICBmb2xsb3dzOjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlOyAiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5JZiBib3RoIGJsb2NrcyBoaXQgLS0mZ3Q7IGNvdW50ZWQgYXMgb25lIGhpdDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5JZiBvbmUgYmxvY2sgaGl0cywgdGhlIG90aGVyIG1pc3NlcyAtLSZndDsgY291bnRlZAogICAgICAgIGFzIG9uZSBtaXNzLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5JZiBib3RoIGJsb2NrcyBtaXNzIC0tJmd0OyBjb3VudGVkIGFzIG9uZSBtaXNzIChub3QKICAgICAgICB0d28pPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5JbnN0cnVjdGlvbnMgdGhhdCBtb2RpZnkgYSBtZW1vcnkgbG9jYXRpb24KICAgIChlLmcuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+aW5jPC9jb2RlPiBhbmQKICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVjPC9jb2RlPikgYXJlIGNvdW50ZWQgYXMgZG9pbmcKICAgIGp1c3QgYSByZWFkLCBpLmUuIGEgc2luZ2xlIGRhdGEgcmVmZXJlbmNlLiAgVGhpcyBtYXkgc2VlbQogICAgc3RyYW5nZSwgYnV0IHNpbmNlIHRoZSB3cml0ZSBjYW4gbmV2ZXIgY2F1c2UgYSBtaXNzICh0aGUgcmVhZAogICAgZ3VhcmFudGVlcyB0aGUgYmxvY2sgaXMgaW4gdGhlIGNhY2hlKSBpdCdzIG5vdCB2ZXJ5CiAgICBpbnRlcmVzdGluZy48L3A+CjxwPlRodXMgaXQgbWVhc3VyZXMgbm90IHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGRhdGEgY2FjaGUKICAgIGlzIGFjY2Vzc2VkLCBidXQgdGhlIG51bWJlciBvZiB0aW1lcyBhIGRhdGEgY2FjaGUgbWlzcyBjb3VsZAogICAgb2NjdXIuPC9wPgo8L2xpPgo8L3VsPjwvZGl2Pgo8cD5JZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gc2ltdWxhdGluZyBhIGNhY2hlIHdpdGggZGlmZmVyZW50CnByb3BlcnRpZXMsIGl0IGlzIG5vdCBwYXJ0aWN1bGFybHkgaGFyZCB0byB3cml0ZSB5b3VyIG93biBjYWNoZQpzaW11bGF0b3IsIG9yIHRvIG1vZGlmeSB0aGUgZXhpc3Rpbmcgb25lcyBpbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNnX3NpbS5jPC9jb2RlPi4gV2UnZCBiZQppbnRlcmVzdGVkIHRvIGhlYXIgZnJvbSBhbnlvbmUgd2hvIGRvZXMuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnJhbmNoLXNpbSI+PC9hPjUuOC4yLqBCcmFuY2ggU2ltdWxhdGlvbiBTcGVjaWZpY3M8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5DYWNoZWdyaW5kIHNpbXVsYXRlcyBicmFuY2ggcHJlZGljdG9ycyBpbnRlbmRlZCB0byBiZQp0eXBpY2FsIG9mIG1haW5zdHJlYW0gZGVza3RvcC9zZXJ2ZXIgcHJvY2Vzc29ycyBvZiBhcm91bmQgMjAwNC48L3A+CjxwPkNvbmRpdGlvbmFsIGJyYW5jaGVzIGFyZSBwcmVkaWN0ZWQgdXNpbmcgYW4gYXJyYXkgb2YgMTYzODQgMi1iaXQKc2F0dXJhdGluZyBjb3VudGVycy4gIFRoZSBhcnJheSBpbmRleCB1c2VkIGZvciBhIGJyYW5jaCBpbnN0cnVjdGlvbiBpcwpjb21wdXRlZCBwYXJ0bHkgZnJvbSB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIGJyYW5jaCBpbnN0cnVjdGlvbidzCmFkZHJlc3MgYW5kIHBhcnRseSB1c2luZyB0aGUgdGFrZW4vbm90LXRha2VuIGJlaGF2aW91ciBvZiB0aGUgbGFzdCBmZXcKY29uZGl0aW9uYWwgYnJhbmNoZXMuICBBcyBhIHJlc3VsdCB0aGUgcHJlZGljdGlvbnMgZm9yIGFueSBzcGVjaWZpYwpicmFuY2ggZGVwZW5kIGJvdGggb24gaXRzIG93biBoaXN0b3J5IGFuZCB0aGUgYmVoYXZpb3VyIG9mIHByZXZpb3VzCmJyYW5jaGVzLiAgVGhpcyBpcyBhIHN0YW5kYXJkIHRlY2huaXF1ZSBmb3IgaW1wcm92aW5nIHByZWRpY3Rpb24KYWNjdXJhY3kuPC9wPgo8cD5Gb3IgaW5kaXJlY3QgYnJhbmNoZXMgKHRoYXQgaXMsIGp1bXBzIHRvIHVua25vd24gZGVzdGluYXRpb25zKQpDYWNoZWdyaW5kIHVzZXMgYSBzaW1wbGUgYnJhbmNoIHRhcmdldCBhZGRyZXNzIHByZWRpY3Rvci4gIFRhcmdldHMgYXJlCnByZWRpY3RlZCB1c2luZyBhbiBhcnJheSBvZiA1MTIgZW50cmllcyBpbmRleGVkIGJ5IHRoZSBsb3cgb3JkZXIgOQpiaXRzIG9mIHRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24ncyBhZGRyZXNzLiAgRWFjaCBicmFuY2ggaXMgcHJlZGljdGVkIHRvCmp1bXAgdG8gdGhlIHNhbWUgYWRkcmVzcyBpdCBkaWQgbGFzdCB0aW1lLiAgQW55IG90aGVyIGJlaGF2aW91ciBjYXVzZXMKYSBtaXNwcmVkaWN0LjwvcD4KPHA+TW9yZSByZWNlbnQgcHJvY2Vzc29ycyBoYXZlIGJldHRlciBicmFuY2ggcHJlZGljdG9ycywgaW4KcGFydGljdWxhciBiZXR0ZXIgaW5kaXJlY3QgYnJhbmNoIHByZWRpY3RvcnMuICBDYWNoZWdyaW5kJ3MgcHJlZGljdG9yCmRlc2lnbiBpcyBkZWxpYmVyYXRlbHkgY29uc2VydmF0aXZlIHNvIGFzIHRvIGJlIHJlcHJlc2VudGF0aXZlIG9mIHRoZQpsYXJnZSBpbnN0YWxsZWQgYmFzZSBvZiBwcm9jZXNzb3JzIHdoaWNoIHByZS1kYXRlIHdpZGVzcHJlYWQKZGVwbG95bWVudCBvZiBtb3JlIHNvcGhpc3RpY2F0ZWQgaW5kaXJlY3QgYnJhbmNoIHByZWRpY3RvcnMuICBJbgpwYXJ0aWN1bGFyLCBsYXRlIG1vZGVsIFBlbnRpdW0gNHMgKFByZXNjb3R0KSwgUGVudGl1bSBNLCBDb3JlIGFuZCBDb3JlCjIgaGF2ZSBtb3JlIHNvcGhpc3RpY2F0ZWQgaW5kaXJlY3QgYnJhbmNoIHByZWRpY3RvcnMgdGhhbiBtb2RlbGxlZCBieQpDYWNoZWdyaW5kLiAgPC9wPgo8cD5DYWNoZWdyaW5kIGRvZXMgbm90IHNpbXVsYXRlIGEgcmV0dXJuIHN0YWNrIHByZWRpY3Rvci4gIEl0CmFzc3VtZXMgdGhhdCBwcm9jZXNzb3JzIHBlcmZlY3RseSBwcmVkaWN0IGZ1bmN0aW9uIHJldHVybiBhZGRyZXNzZXMsCmFuIGFzc3VtcHRpb24gd2hpY2ggaXMgcHJvYmFibHkgY2xvc2UgdG8gYmVpbmcgdHJ1ZS48L3A+CjxwPlNlZSBIZW5uZXNzeSBhbmQgUGF0dGVyc29uJ3MgY2xhc3NpYyB0ZXh0ICJDb21wdXRlcgpBcmNoaXRlY3R1cmU6IEEgUXVhbnRpdGF0aXZlIEFwcHJvYWNoIiwgNHRoIGVkaXRpb24gKDIwMDcpLCBTZWN0aW9uCjIuMyAocGFnZXMgODAtODkpIGZvciBiYWNrZ3JvdW5kIG9uIG1vZGVybiBicmFuY2ggcHJlZGljdG9ycy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuYW5ub3B0cy5hY2N1cmFjeSI+PC9hPjUuOC4zLqBBY2N1cmFjeTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlZhbGdyaW5kJ3MgY2FjaGUgcHJvZmlsaW5nIGhhcyBhIG51bWJlciBvZgpzaG9ydGNvbWluZ3M6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjOyAiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5JdCBkb2Vzbid0IGFjY291bnQgZm9yIGtlcm5lbCBhY3Rpdml0eSAtLSB0aGUgZWZmZWN0IG9mIHN5c3RlbQogICAgY2FsbHMgb24gdGhlIGNhY2hlIGFuZCBicmFuY2ggcHJlZGljdG9yIGNvbnRlbnRzIGlzIGlnbm9yZWQuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkl0IGRvZXNuJ3QgYWNjb3VudCBmb3Igb3RoZXIgcHJvY2VzcyBhY3Rpdml0eS4KICAgIFRoaXMgaXMgcHJvYmFibHkgZGVzaXJhYmxlIHdoZW4gY29uc2lkZXJpbmcgYSBzaW5nbGUKICAgIHByb2dyYW0uPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkl0IGRvZXNuJ3QgYWNjb3VudCBmb3IgdmlydHVhbC10by1waHlzaWNhbCBhZGRyZXNzCiAgICBtYXBwaW5ncy4gIEhlbmNlIHRoZSBzaW11bGF0aW9uIGlzIG5vdCBhIHRydWUKICAgIHJlcHJlc2VudGF0aW9uIG9mIHdoYXQncyBoYXBwZW5pbmcgaW4gdGhlCiAgICBjYWNoZS4gIE1vc3QgY2FjaGVzIGFuZCBicmFuY2ggcHJlZGljdG9ycyBhcmUgcGh5c2ljYWxseSBpbmRleGVkLCBidXQKICAgIENhY2hlZ3JpbmQgc2ltdWxhdGVzIGNhY2hlcyB1c2luZyB2aXJ0dWFsIGFkZHJlc3Nlcy48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+SXQgZG9lc24ndCBhY2NvdW50IGZvciBjYWNoZSBtaXNzZXMgbm90IHZpc2libGUgYXQgdGhlCiAgICBpbnN0cnVjdGlvbiBsZXZlbCwgZS5nLiB0aG9zZSBhcmlzaW5nIGZyb20gVExCIG1pc3Nlcywgb3IKICAgIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbi48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+VmFsZ3JpbmQgd2lsbCBzY2hlZHVsZQogICAgdGhyZWFkcyBkaWZmZXJlbnRseSBmcm9tIGhvdyB0aGV5IHdvdWxkIGJlIHdoZW4gcnVubmluZyBuYXRpdmVseS4KICAgIFRoaXMgY291bGQgd2FycCB0aGUgcmVzdWx0cyBmb3IgdGhyZWFkZWQgcHJvZ3JhbXMuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPgo8cD5UaGUgeDg2L2FtZDY0IGluc3RydWN0aW9ucyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ0czwvY29kZT4sCiAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ0cjwvY29kZT4gYW5kCiAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ0YzwvY29kZT4gd2lsbCBpbmNvcnJlY3RseSBiZQogICAgY291bnRlZCBhcyBkb2luZyBhIGRhdGEgcmVhZCBpZiBib3RoIHRoZSBhcmd1bWVudHMgYXJlCiAgICByZWdpc3RlcnMsIGVnOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgogICAgYnRzbCAlZWF4LCAlZWR4PC9wcmU+CjxwPlRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHJhcmVseS48L3A+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPng4Ni9hbWQ2NCBGUFUgaW5zdHJ1Y3Rpb25zIHdpdGggZGF0YSBzaXplcyBvZiAyOCBhbmQgMTA4IGJ5dGVzCiAgICAoZS5nLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mc2F2ZTwvY29kZT4pIGFyZSB0cmVhdGVkIGFzCiAgICB0aG91Z2ggdGhleSBvbmx5IGFjY2VzcyAxNiBieXRlcy4gIFRoZXNlIGluc3RydWN0aW9ucyBzZWVtIHRvCiAgICBiZSByYXJlIHNvIGhvcGVmdWxseSB0aGlzIHdvbid0IGFmZmVjdCBhY2N1cmFjeSBtdWNoLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5Bbm90aGVyIHRoaW5nIHdvcnRoIG5vdGluZyBpcyB0aGF0IHJlc3VsdHMgYXJlIHZlcnkgc2Vuc2l0aXZlLgpDaGFuZ2luZyB0aGUgc2l6ZSBvZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBwcm9maWxlZCwgb3IgdGhlIHNpemVzCm9mIGFueSBvZiB0aGUgc2hhcmVkIGxpYnJhcmllcyBpdCB1c2VzLCBvciBldmVuIHRoZSBsZW5ndGggb2YgdGhlaXIKZmlsZSBuYW1lcywgY2FuIHBlcnR1cmIgdGhlIHJlc3VsdHMuICBWYXJpYXRpb25zIHdpbGwgYmUgc21hbGwsIGJ1dApkb24ndCBleHBlY3QgcGVyZmVjdGx5IHJlcGVhdGFibGUgcmVzdWx0cyBpZiB5b3VyIHByb2dyYW0gY2hhbmdlcyBhdAphbGwuPC9wPgo8cD5Nb3JlIHJlY2VudCBHTlUvTGludXggZGlzdHJpYnV0aW9ucyBkbyBhZGRyZXNzIHNwYWNlCnJhbmRvbWlzYXRpb24sIGluIHdoaWNoIGlkZW50aWNhbCBydW5zIG9mIHRoZSBzYW1lIHByb2dyYW0gaGF2ZSB0aGVpcgpzaGFyZWQgbGlicmFyaWVzIGxvYWRlZCBhdCBkaWZmZXJlbnQgbG9jYXRpb25zLCBhcyBhIHNlY3VyaXR5IG1lYXN1cmUuClRoaXMgYWxzbyBwZXJ0dXJicyB0aGUgcmVzdWx0cy48L3A+CjxwPldoaWxlIHRoZXNlIGZhY3RvcnMgbWVhbiB5b3Ugc2hvdWxkbid0IHRydXN0IHRoZSByZXN1bHRzIHRvCmJlIHN1cGVyLWFjY3VyYXRlLCB0aGV5IHNob3VsZCBiZSBjbG9zZSBlbm91Z2ggdG8gYmUgdXNlZnVsLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNnLW1hbnVhbC5pbXBsLWRldGFpbHMiPjwvYT41LjkuoEltcGxlbWVudGF0aW9uIERldGFpbHM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD4KVGhpcyBzZWN0aW9uIHRhbGtzIGFib3V0IGRldGFpbHMgeW91IGRvbid0IG5lZWQgdG8ga25vdyBhYm91dCBpbiBvcmRlciB0bwp1c2UgQ2FjaGVncmluZCwgYnV0IG1heSBiZSBvZiBpbnRlcmVzdCB0byBzb21lIHBlb3BsZS4KPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuaW1wbC1kZXRhaWxzLmhvdy1jZy13b3JrcyI+PC9hPjUuOS4xLqBIb3cgQ2FjaGVncmluZCBXb3JrczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZSBiZXN0IHJlZmVyZW5jZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgQ2FjaGVncmluZCB3b3JrcyBpcyBjaGFwdGVyIDMgb2YKIkR5bmFtaWMgQmluYXJ5IEFuYWx5c2lzIGFuZCBJbnN0cnVtZW50YXRpb24iLCBieSBOaWNob2xhcyBOZXRoZXJjb3RlLiAgSXQKaXMgYXZhaWxhYmxlIG9uIHRoZSA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cudmFsZ3JpbmQub3JnL2RvY3MvcHVicy5odG1sIiB0YXJnZXQ9Il90b3AiPlZhbGdyaW5kIHB1YmxpY2F0aW9ucwpwYWdlPC9hPi48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjZy1tYW51YWwuaW1wbC1kZXRhaWxzLmZpbGUtZm9ybWF0Ij48L2E+NS45LjIuoENhY2hlZ3JpbmQgT3V0cHV0IEZpbGUgRm9ybWF0PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIGZpbGUgZm9ybWF0IGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQsIGJhc2ljYWxseSBnaXZpbmcgdGhlCmNvc3QgY2VudHJlIGZvciBldmVyeSBsaW5lLCBncm91cGVkIGJ5IGZpbGVzIGFuZApmdW5jdGlvbnMuICBJdCdzIGFsc28gdG90YWxseSBnZW5lcmljIGFuZCBzZWxmLWRlc2NyaWJpbmcsIGluIHRoZSBzZW5zZSB0aGF0Cml0IGNhbiBiZSB1c2VkIGZvciBhbnkgZXZlbnRzIHRoYXQgY2FuIGJlIGNvdW50ZWQgb24gYSBsaW5lLWJ5LWxpbmUgYmFzaXMsCm5vdCBqdXN0IGNhY2hlIGFuZCBicmFuY2ggcHJlZGljdG9yIGV2ZW50cy4gIEZvciBleGFtcGxlLCBlYXJsaWVyIHZlcnNpb25zCm9mIENhY2hlZ3JpbmQgZGlkbid0IGhhdmUgYSBicmFuY2ggcHJlZGljdG9yIHNpbXVsYXRpb24uICBXaGVuIHRoaXMgd2FzCmFkZGVkLCB0aGUgZmlsZSBmb3JtYXQgZGlkbid0IG5lZWQgdG8gY2hhbmdlIGF0IGFsbC4gIFNvIHRoZSBmb3JtYXQgKGFuZApjb25zZXF1ZW50bHksIGNnX2Fubm90YXRlKSBjb3VsZCBiZSB1c2VkIGJ5IG90aGVyIHRvb2xzLjwvcD4KPHA+VGhlIGZpbGUgZm9ybWF0OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgpmaWxlICAgICAgICAgOjo9IGRlc2NfbGluZSogY21kX2xpbmUgZXZlbnRzX2xpbmUgZGF0YV9saW5lKyBzdW1tYXJ5X2xpbmUKZGVzY19saW5lICAgIDo6PSAiZGVzYzoiIHdzPyBub25fbmxfc3RyaW5nCmNtZF9saW5lICAgICA6Oj0gImNtZDoiIHdzPyBjbWQKZXZlbnRzX2xpbmUgIDo6PSAiZXZlbnRzOiIgd3M/IChldmVudCB3cykrCmRhdGFfbGluZSAgICA6Oj0gZmlsZV9saW5lIHwgZm5fbGluZSB8IGNvdW50X2xpbmUKZmlsZV9saW5lICAgIDo6PSAiZmw9IiBmaWxlbmFtZQpmbl9saW5lICAgICAgOjo9ICJmbj0iIGZuX25hbWUKY291bnRfbGluZSAgIDo6PSBsaW5lX251bSB3cz8gKGNvdW50IHdzKSsKc3VtbWFyeV9saW5lIDo6PSAic3VtbWFyeToiIHdzPyAoY291bnQgd3MpKwpjb3VudCAgICAgICAgOjo9IG51bSB8ICIuIjwvcHJlPgo8cD5XaGVyZTo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bm9uX25sX3N0cmluZzwvY29kZT4gaXMgYW55CiAgICBzdHJpbmcgbm90IGNvbnRhaW5pbmcgYSBuZXdsaW5lLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNtZDwvY29kZT4gaXMgYSBzdHJpbmcgaG9sZGluZyB0aGUKICAgIGNvbW1hbmQgbGluZSBvZiB0aGUgcHJvZmlsZWQgcHJvZ3JhbS48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ldmVudDwvY29kZT4gaXMgYSBzdHJpbmcgY29udGFpbmluZwogICAgbm8gd2hpdGVzcGFjZS48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZTwvY29kZT4gYW5kCiAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZuX25hbWU8L2NvZGU+IGFyZSBzdHJpbmdzLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm51bTwvY29kZT4gYW5kCiAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpbmVfbnVtPC9jb2RlPiBhcmUgZGVjaW1hbAogICAgbnVtYmVycy48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53czwvY29kZT4gaXMgd2hpdGVzcGFjZS48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+VGhlIGNvbnRlbnRzIG9mIHRoZSAiZGVzYzoiIGxpbmVzIGFyZSBwcmludGVkIG91dCBhdCB0aGUgdG9wCm9mIHRoZSBzdW1tYXJ5LiAgVGhpcyBpcyBhIGdlbmVyaWMgd2F5IG9mIHByb3ZpZGluZyBzaW11bGF0aW9uCnNwZWNpZmljIGluZm9ybWF0aW9uLCBlLmcuIGZvciBnaXZpbmcgdGhlIGNhY2hlIGNvbmZpZ3VyYXRpb24gZm9yCmNhY2hlIHNpbXVsYXRpb24uPC9wPgo8cD5Nb3JlIHRoYW4gb25lIGxpbmUgb2YgaW5mbyBjYW4gYmUgcHJlc2VudGVkIGZvciBlYWNoIGZpbGUvZm4vbGluZSBudW1iZXIuCkluIHN1Y2ggY2FzZXMsIHRoZSBjb3VudHMgZm9yIHRoZSBuYW1lZCBldmVudHMgd2lsbCBiZSBhY2N1bXVsYXRlZC48L3A+CjxwPkNvdW50cyBjYW4gYmUgIi4iIHRvIHJlcHJlc2VudCB6ZXJvLiAgVGhpcyBtYWtlcyB0aGUgZmlsZXMgZWFzaWVyIGZvcgpodW1hbnMgdG8gcmVhZC48L3A+CjxwPlRoZSBudW1iZXIgb2YgY291bnRzIGluIGVhY2gKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saW5lPC9jb2RlPiBhbmQgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3VtbWFyeV9saW5lPC9jb2RlPiBzaG91bGQgbm90IGV4Y2VlZAp0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ldmVudF9saW5lPC9jb2RlPi4gIElmIHRoZSBudW1iZXIgaW4KZWFjaCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpbmU8L2NvZGU+IGlzIGxlc3MsIGNnX2Fubm90YXRlCnRyZWF0cyB0aG9zZSBtaXNzaW5nIGFzIHRob3VnaCB0aGV5IHdlcmUgYSAiLiIgZW50cnkuICBUaGlzIHNhdmVzIHNwYWNlLgo8L3A+CjxwPkEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlX2xpbmU8L2NvZGU+IGNoYW5nZXMgdGhlCmN1cnJlbnQgZmlsZSBuYW1lLiAgQSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZuX2xpbmU8L2NvZGU+CmNoYW5nZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gbmFtZS4gIEEKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jb3VudF9saW5lPC9jb2RlPiBjb250YWlucyBjb3VudHMgdGhhdApwZXJ0YWluIHRvIHRoZSBjdXJyZW50IGZpbGVuYW1lL2ZuX25hbWUuICBBICJmbj0iCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZV9saW5lPC9jb2RlPiBhbmQgYQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZuX2xpbmU8L2NvZGU+IG11c3QgYXBwZWFyIGJlZm9yZSBhbnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jb3VudF9saW5lPC9jb2RlPnMgdG8gZ2l2ZSB0aGUgY29udGV4dApvZiB0aGUgZmlyc3QgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jb3VudF9saW5lPC9jb2RlPnMuPC9wPgo8cD5FYWNoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZV9saW5lPC9jb2RlPiB3aWxsIG5vcm1hbGx5IGJlCmltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mbl9saW5lPC9jb2RlPi4gIEJ1dCBpdApkb2Vzbid0IGhhdmUgdG8gYmUuPC9wPgo8cD5UaGUgc3VtbWFyeSBsaW5lIGlzIHJlZHVuZGFudCwgYmVjYXVzZSBpdCBqdXN0IGhvbGRzIHRoZSB0b3RhbCBjb3VudHMKZm9yIGVhY2ggZXZlbnQuICBCdXQgdGhpcyBzZXJ2ZXMgYXMgYSB1c2VmdWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBkYXRhOyAgaWYKdGhlIHRvdGFscyBmb3IgZWFjaCBldmVudCBkb24ndCBtYXRjaCB0aGUgc3VtbWFyeSBsaW5lLCBzb21ldGhpbmcgaGFzIGdvbmUKd3JvbmcuPC9wPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8YnI+PHRhYmxlIGNsYXNzPSJuYXYiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjIiIGJvcmRlcj0iMCIgc3VtbWFyeT0iTmF2aWdhdGlvbiBmb290ZXIiPgo8dHI+Cjx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iNDAlIiBhbGlnbj0ibGVmdCI+CjxhIGFjY2Vzc2tleT0icCIgaHJlZj0ibWMtbWFudWFsLmh0bWwiPiZsdDsmbHQ7oDQuoE1lbWNoZWNrOiBhIG1lbW9yeSBlcnJvciBkZXRlY3RvcjwvYT6gPC90ZD4KPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJjZW50ZXIiPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0ibWFudWFsLmh0bWwiPlVwPC9hPjwvdGQ+Cjx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iNDAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImNsLW1hbnVhbC5odG1sIj42LqBDYWxsZ3JpbmQ6IGEgY2FsbC1ncmFwaCBnZW5lcmF0aW5nIGNhY2hlIGFuZCBicmFuY2ggcHJlZGljdGlvbiBwcm9maWxlcqAmZ3Q7Jmd0OzwvYT4KPC90ZD4KPC90cj4KPHRyPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPkhvbWU8L2E+PC90ZD48L3RyPgo8L3RhYmxlPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==